关联教材指派范围

This commit is contained in:
王昊 2025-11-24 00:30:43 +08:00
parent f77fdb98e3
commit 992d947759
4 changed files with 152 additions and 1 deletions

View File

@ -1,15 +1,25 @@
package xyz.playedu.api.controller.backend.jc; package xyz.playedu.api.controller.backend.jc;
import cn.hutool.core.util.ObjectUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import xyz.playedu.common.annotation.Log; import xyz.playedu.common.annotation.Log;
import xyz.playedu.common.constant.BusinessTypeConstant; import xyz.playedu.common.constant.BusinessTypeConstant;
import xyz.playedu.common.types.JsonResponse; import xyz.playedu.common.types.JsonResponse;
import xyz.playedu.common.types.paginate.PaginationResult; import xyz.playedu.common.types.paginate.PaginationResult;
import xyz.playedu.common.util.StringUtil;
import xyz.playedu.course.constants.CourseConstant;
import xyz.playedu.course.domain.CourseDepartmentUser;
import xyz.playedu.jc.domain.BookDepartmentUser;
import xyz.playedu.jc.domain.Textbook; import xyz.playedu.jc.domain.Textbook;
import xyz.playedu.jc.domain.dto.TextbookRequestDTO;
import xyz.playedu.jc.service.IBookDepartmentUserService;
import xyz.playedu.jc.service.ITextbookService; import xyz.playedu.jc.service.ITextbookService;
import xyz.playedu.knowledge.domain.KnowledgeMessages; import xyz.playedu.knowledge.domain.KnowledgeMessages;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -23,6 +33,9 @@ public class TextbookController {
@Autowired @Autowired
private ITextbookService textbookService; private ITextbookService textbookService;
@Autowired
private IBookDepartmentUserService bookDepartmentUserService;
@GetMapping("/index") @GetMapping("/index")
public JsonResponse index(@RequestParam HashMap<String, Object> params) { public JsonResponse index(@RequestParam HashMap<String, Object> params) {
@ -47,9 +60,49 @@ public class TextbookController {
return JsonResponse.data(one); return JsonResponse.data(one);
} }
@PostMapping @PostMapping
public JsonResponse create(@RequestBody Textbook textbook) { public JsonResponse create(@RequestBody TextbookRequestDTO textbookReq) {
// textbookService.save(textbook);
Textbook textbook = new Textbook();
BeanUtils.copyProperties(textbook, textbookReq);
textbookService.save(textbook); textbookService.save(textbook);
Integer textbookId = textbook.getId();
Integer[] depIds = textbookReq.getDepIds();
Integer[] userIds = textbookReq.getUserIds();
Integer[] groupIds = textbookReq.getGroupIds();
List<BookDepartmentUser> departmentUserList = new ArrayList<>();
if (StringUtil.isNotEmpty(depIds)) {
for (Integer depId : depIds) {
BookDepartmentUser bookDepartmentUser = new BookDepartmentUser();
bookDepartmentUser.setBookId(textbookId);
bookDepartmentUser.setRangeId(depId);
bookDepartmentUser.setType(CourseConstant.COURSE_TYPE_DEP);
departmentUserList.add(bookDepartmentUser);
}
}
if (StringUtil.isNotEmpty(userIds)) {
for (Integer userId : userIds) {
BookDepartmentUser bookDepartmentUser = new BookDepartmentUser();
bookDepartmentUser.setBookId(textbookId);
bookDepartmentUser.setRangeId(userId);
bookDepartmentUser.setType(CourseConstant.COURSE_TYPE_USER);
departmentUserList.add(bookDepartmentUser);
}
}
if (StringUtil.isNotEmpty(groupIds)) {
for (Integer groupId : groupIds) {
BookDepartmentUser bookDepartmentUser = new BookDepartmentUser();
bookDepartmentUser.setBookId(textbookId);
bookDepartmentUser.setRangeId(groupId);
bookDepartmentUser.setType(CourseConstant.COURSE_TYPE_GROUP);
departmentUserList.add(bookDepartmentUser);
}
}
bookDepartmentUserService.removeByBookId(textbookId);
bookDepartmentUserService.saveBatch(departmentUserList);
return JsonResponse.success(); return JsonResponse.success();
} }

View File

@ -0,0 +1,92 @@
package xyz.playedu.jc.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.Date;
/**
* 教材主表
* 对应表jc_textbook
*/
@Data
public class TextbookRequestDTO {
@TableId(type = IdType.AUTO)
private Integer id;
/** 教材名称 */
@TableField("title")
private String title;
/** 封面地址 */
@TableField("thumb")
private String thumb;
/** 简介 */
@TableField("short_desc")
private String shortDesc;
/** 学科专业信息 */
@TableField("major")
private String major;
/** 作者 */
@TableField("author")
private String author;
/** ISBN 或教材编号 */
@TableField("isbn")
private String isbn;
/** 章节总数(最小层级总节点数) */
@TableField("chapter_num")
private String chapterNum;
/** 出版社 */
@TableField("publish_unit")
private String publishUnit;
/** 发布时间 */
@TableField("publish_time")
private Date publishTime;
/** 创建人 */
@TableField("creator")
private String creator;
/** 更新人 */
@TableField("updater")
private String updater;
@TableField("create_time")
private Date createTime;
@TableField("update_time")
private Date updateTime;
@TableField("tenant_id")
private String tenantId;
@JsonProperty("dep_ids")
private Integer[] depIds;
@JsonProperty("user_ids")
private Integer[] userIds;
@JsonProperty("group_ids")
private Integer[] groupIds;
@NotNull(message = "category_ids参数为空")
@JsonProperty("category_ids")
private Integer[] categoryIds;
@JsonProperty("teacher_ids")
private Integer[] teacherIds;
}

View File

@ -4,4 +4,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
import xyz.playedu.jc.domain.BookDepartmentUser; import xyz.playedu.jc.domain.BookDepartmentUser;
public interface IBookDepartmentUserService extends IService<BookDepartmentUser> { public interface IBookDepartmentUserService extends IService<BookDepartmentUser> {
void removeByBookId(Integer bookId);
} }

View File

@ -10,4 +10,9 @@ import xyz.playedu.jc.service.IBookDepartmentUserService;
public class BookDepartmentUserServiceImpl public class BookDepartmentUserServiceImpl
extends ServiceImpl<BookDepartmentUserMapper, BookDepartmentUser> extends ServiceImpl<BookDepartmentUserMapper, BookDepartmentUser>
implements IBookDepartmentUserService { implements IBookDepartmentUserService {
@Override
public void removeByBookId(Integer bookId) {
remove(query().getWrapper().eq("book_id", bookId));
}
} }