夏文涛 vor 2 Jahren
Ursprung
Commit
2db943a136

+ 1 - 1
src/main/java/com/template/AutoCode.java

@@ -56,7 +56,7 @@ public class AutoCode {
         mpg.setPackageInfo(pc);
         //4、策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setInclude("smart_face_discern_test"); // 设置要映射的表名"smart_class","smart_grade","smart_attendance"
+        strategy.setInclude("smart_teaching"); // 设置要映射的表名"smart_class","smart_grade","smart_attendance"
         strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
         strategy.setEntityLombokModel(true); // 自动lombok;

+ 23 - 0
src/main/java/com/template/api/SmartTeachingControllerAPI.java

@@ -0,0 +1,23 @@
+package com.template.api;
+
+import com.template.model.pojo.SmartSubject;
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/3/30 星期四 17:28
+ * @Description: com.video.api
+ * @Version: 1.0
+ */
+@RequestMapping("/api/smartTeaching")
+@Api(tags = {"SmartTeachingControllerAPI"}, value = "任课管理")
+public interface SmartTeachingControllerAPI {
+    @GetMapping("/queryTeachings")
+    @ApiOperation(value = "获取任课数据列表", httpMethod = "GET")
+    CommonResult queryTeachings();
+}

+ 113 - 97
src/main/java/com/template/controller/ScheduleController.java

@@ -9,11 +9,13 @@ import com.template.config.ScheduleConfig;
 import com.template.config.SeewoConfig;
 import com.template.model.pojo.SmartAttendance;
 import com.template.model.pojo.SmartClass;
+import com.template.model.pojo.SmartGrade;
 import com.template.model.pojo.SmartUser;
 import com.template.model.result.CommonResult;
 import com.template.model.seewo.*;
 import com.template.services.SmartAttendanceService;
 import com.template.services.SmartClassService;
+import com.template.services.SmartGradeService;
 import com.template.services.SmartUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,6 +24,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -46,6 +49,9 @@ public class ScheduleController {
     private SmartClassService smartClassService;
 
     @Autowired
+    private SmartGradeService smartGradeService;
+
+    @Autowired
     private SmartUserService smartUserService;
 
     @Autowired
@@ -74,137 +80,147 @@ public class ScheduleController {
     //每小时执行一次:0 0 */1 * * ?
     //每分钟执行一次:0 */1 * * * ?
     //周一到周五早上七点执行:0 0 7 ? * MON-FRI
+    //0 0 22 * * ?
     @Async
-    @Scheduled(cron = "0 0 22 * * ? ")
+    @Scheduled(cron = "0 */1 * * * ? ")
     @Transactional(rollbackFor = {Exception.class})
     public void autoDispatch() throws Exception {
 
-        if (scheduleConfig.getIsOpen().equals("1")) {
+        try {
+            if (scheduleConfig.getIsOpen().equals("1")) {
 
-            List<SmartAttendance> attendances = new ArrayList<>();
-            List<SmartUser> students = smartUserService.queryStudentDatas();
+                List<SmartAttendance> attendances = new ArrayList<>();
+                List<SmartUser> students = smartUserService.queryStudentDatas();
 
 //            SmartUser studentData = smartUserService.getSmartById(1088);
 //            students.add(studentData);
 
-            //循环班级的classUid
-            List<SmartClass> classes = smartClassService.getSmartClasss();
+                //循环班级的classUid
+                List<SmartClass> classes = smartClassService.getSmartClasss();
+                List<SmartGrade> grades = smartGradeService.list(null);
 
 //            SmartClass classData = smartClassService.getSmartClassById(204);
 //            classes.add(classData);
 
-            //当天已存在的考勤数据 判断是否重复使用
-            List<SmartAttendance> attendanceList = smartAttendanceService.queryAttendances(TimeExchange.getStartOfDayStr(new Date()), TimeExchange.getEndOfDayStr(new Date()));
-
-            for (SmartClass data : classes) {
-                //region 获取考勤事件ID
-                //初始化客户端
-                SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
-                AttendanceRuleListEventByClazzParam param = new AttendanceRuleListEventByClazzParam();
-                //响应体,MimeType为 application/json
-                AttendanceRuleListEventByClazzParam.RequestBody requestBody = AttendanceRuleListEventByClazzParam.RequestBody.builder()
-                        .build();
-                param.setRequestBody(requestBody);
-                //query
-                AttendanceRuleListEventByClazzParam.Query query = AttendanceRuleListEventByClazzParam.Query.builder()
-                        .appId(seewoConfig.getAppId())
-                        .schoolUid(seewoConfig.getSchoolId())
-                        .date(TimeExchange.getDate())
-                        .classUid(data.getClassUid())
-                        .page(1)
-                        .pageSize(20)
-                        .build();
-                requestBody.setQuery(query);
-                AttendanceRuleListEventByClazzRequest request = new AttendanceRuleListEventByClazzRequest(param);
-                // 该接口需要数据权限,请将授权资源id替换至下方,请妥善保管好授权资源id,避免泄露
-                // permissionId位置: 控制台 -> 应用详情 -> 我申请的 -> 已通过的接口 -> 调用范围 -> 审批信息 中查看授权资源的「学校id」或「区域id」
-                request.setPermissionId("");
-                logger.info("入参:" +request);
-                //执行请求,如果想获取到com.seewo.open.sdk.HttpResponse对象,请调用 seewoClient.execute 方法
-                AttendanceRuleListEventByClazzResult result = seewoClient.invoke(request);
-                logger.info("出参:" +result);
-                //endregion
-
-                //考勤事件ID
-                List<String> eventIds = new ArrayList<>();
-
-                if (result != null && result.getResponseBody().getCode().equals("000000")) {
-                    if (result.getResponseBody().getData() != null) {
-                        List<AttendanceRuleListEventByClazzResult.DataItem> eventItems = result.getResponseBody().getData();
-                        for (AttendanceRuleListEventByClazzResult.DataItem eventItem : eventItems) {
-                            eventIds.add(eventItem.getRuleId());
-                        }
-                    }
-                }
-                //endregion
+                //当天已存在的考勤数据 判断是否重复使用
+                List<SmartAttendance> attendanceList = smartAttendanceService.queryAttendances(TimeExchange.getStartOfDayStr(new Date()), TimeExchange.getEndOfDayStr(new Date()));
+
+                for (SmartClass data : classes) {
 
-                for (String eventId : eventIds) {
-                    /**
-                     * 定时获取考勤
-                     */
+                    if (data.getName().equals("七年级21班")) {
+                        String sd = "";
+                    }
+                    Optional<SmartGrade> oGrade = grades.stream().filter(e -> e.getId().equals(data.getGradeId())).findFirst();
+                    //region 获取考勤事件ID
                     //初始化客户端
-                    //SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
-                    AttendanceServiceListAttendClassRecordsParam kParam = new AttendanceServiceListAttendClassRecordsParam();
+                    SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
+                    AttendanceRuleListEventByClazzParam param = new AttendanceRuleListEventByClazzParam();
                     //响应体,MimeType为 application/json
-                    AttendanceServiceListAttendClassRecordsParam.RequestBody kRequestBody = AttendanceServiceListAttendClassRecordsParam.RequestBody.builder()
+                    AttendanceRuleListEventByClazzParam.RequestBody requestBody = AttendanceRuleListEventByClazzParam.RequestBody.builder()
                             .build();
-                    kParam.setRequestBody(kRequestBody);
+                    param.setRequestBody(requestBody);
                     //query
-                    AttendanceServiceListAttendClassRecordsParam.Query kQuery = AttendanceServiceListAttendClassRecordsParam.Query.builder()
-                            .eventId(eventId)//考勤事件ID 固定写死
-                            .attendDate(TimeExchange.getDate())//考勤日期
-                            .appId(seewoConfig.getAppId())//appid
-                            .grade(1)//年级序号
-                            .classUid(data.getClassUid())//班级uid 班级uid与年级序号、班级序号二选一确定具体的班级,如果都填以classUid为准
-                            .schoolUid(seewoConfig.getSchoolId())//学校uid
-                            .attendType(1)//考勤类型 时间考勤(默认):1  课程考勤:2
+                    AttendanceRuleListEventByClazzParam.Query query = AttendanceRuleListEventByClazzParam.Query.builder()
+                            .appId(seewoConfig.getAppId())
+                            .schoolUid(seewoConfig.getSchoolId())
+                            .date(TimeExchange.getDate())
+                            .classUid(data.getClassUid())
+                            .page(1)
+                            .pageSize(20)
                             .build();
-                    kRequestBody.setQuery(kQuery);
-                    kParam.setRequestBody(kRequestBody);
-                    AttendanceServiceListAttendClassRecordsRequest kRequest = new AttendanceServiceListAttendClassRecordsRequest(kParam);
+                    requestBody.setQuery(query);
+                    AttendanceRuleListEventByClazzRequest request = new AttendanceRuleListEventByClazzRequest(param);
+                    // 该接口需要数据权限,请将授权资源id替换至下方,请妥善保管好授权资源id,避免泄露
+                    // permissionId位置: 控制台 -> 应用详情 -> 我申请的 -> 已通过的接口 -> 调用范围 -> 审批信息 中查看授权资源的「学校id」或「区域id」
+                    request.setPermissionId("");
                     logger.info("入参:" + request);
-                    //如果想要调用沙箱环境,请通过设置 request 对象的 serverUrl 属性,如:
-                    //request.setServerUrl("https://openapi.test.seewo.com")
                     //执行请求,如果想获取到com.seewo.open.sdk.HttpResponse对象,请调用 seewoClient.execute 方法
-                    AttendanceServiceListAttendClassRecordsResult kResult = seewoClient.invoke(kRequest);
+                    AttendanceRuleListEventByClazzResult result = seewoClient.invoke(request);
                     logger.info("出参:" + result);
+                    //endregion
+
+                    //考勤事件ID
+                    List<String> eventIds = new ArrayList<>();
 
                     if (result != null && result.getResponseBody().getCode().equals("000000")) {
-                        String userUid = "";
-                        List<AttendanceServiceListAttendClassRecordsResult.RecordsItem> items = kResult.getResponseBody().getData().getRecords();
-                        if (students != null && students.size() > 0) {
-                            for (AttendanceServiceListAttendClassRecordsResult.RecordsItem item : items) {
-                                Optional<SmartUser> student = students.stream().filter(e -> e.getXwStudentUid().equals(item.getUserUid())).findFirst();
-                                if (student != null && student.isPresent()) {
-
-                                    Optional<SmartAttendance> existData = attendanceList.stream().filter(e -> e.getUserId().equals(student.get().getId())
-                                            && e.getClassId().equals(student.get().getSchoolClass()) && e.getAttendTime().equals(TimeExchange.StringToDate((TimeExchange.getDate() + " " + item.getAttendTime()), "yyyy-MM-dd HH:mm:ss"))).findFirst();
-                                    if (!(existData != null && existData.isPresent())) {
-                                        SmartAttendance attendance = new SmartAttendance();
-                                        attendance.setUserId(student.get().getId());
-                                        attendance.setUserUid(item.getUserUid());
-                                        attendance.setClassId(student.get().getSchoolClass());
-                                        attendance.setClassUid(kResult.getResponseBody().getData().getClassUid());
-                                        attendance.setXwUserName(item.getUserName());
-                                        attendance.setXwStudentCode(item.getStudentCode());
-                                        attendance.setAttendTime(TimeExchange.StringToDate((TimeExchange.getDate() + " " + item.getAttendTime()), "yyyy-MM-dd HH:mm:ss"));
-                                        attendance.setStatus(item.getStatus());
-                                        attendances.add(attendance);
+                        if (result.getResponseBody().getData() != null) {
+                            List<AttendanceRuleListEventByClazzResult.DataItem> eventItems = result.getResponseBody().getData();
+                            for (AttendanceRuleListEventByClazzResult.DataItem eventItem : eventItems) {
+                                eventIds.add(eventItem.getRuleId());
+                            }
+                        }
+                    }
+                    //endregion
+
+                    for (String eventId : eventIds) {
+                        /**
+                         * 定时获取考勤
+                         */
+                        //初始化客户端
+                        //SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
+                        AttendanceServiceListAttendClassRecordsParam kParam = new AttendanceServiceListAttendClassRecordsParam();
+                        //响应体,MimeType为 application/json
+                        AttendanceServiceListAttendClassRecordsParam.RequestBody kRequestBody = AttendanceServiceListAttendClassRecordsParam.RequestBody.builder()
+                                .build();
+                        kParam.setRequestBody(kRequestBody);
+                        //query
+                        AttendanceServiceListAttendClassRecordsParam.Query kQuery = AttendanceServiceListAttendClassRecordsParam.Query.builder()
+                                .eventId(eventId)//考勤事件ID 固定写死
+                                .attendDate(TimeExchange.getDate())//考勤日期
+                                .appId(seewoConfig.getAppId())//appid
+                                .grade(oGrade != null && oGrade.isPresent() ? oGrade.get().getGradeNo() : 1)//年级序号
+                                .classUid(data.getClassUid())//班级uid 班级uid与年级序号、班级序号二选一确定具体的班级,如果都填以classUid为准
+                                .schoolUid(seewoConfig.getSchoolId())//学校uid
+                                .attendType(1)//考勤类型 时间考勤(默认):1  课程考勤:2
+                                .build();
+                        kRequestBody.setQuery(kQuery);
+                        kParam.setRequestBody(kRequestBody);
+                        AttendanceServiceListAttendClassRecordsRequest kRequest = new AttendanceServiceListAttendClassRecordsRequest(kParam);
+                        logger.info("入参:" + kRequest);
+                        //如果想要调用沙箱环境,请通过设置 request 对象的 serverUrl 属性,如:
+                        //request.setServerUrl("https://openapi.test.seewo.com")
+                        //执行请求,如果想获取到com.seewo.open.sdk.HttpResponse对象,请调用 seewoClient.execute 方法
+                        AttendanceServiceListAttendClassRecordsResult kResult = seewoClient.invoke(kRequest);
+                        logger.info("出参:" + kResult);
+
+                        if (kResult != null && kResult.getResponseBody().getCode().equals("000000")) {
+                            List<AttendanceServiceListAttendClassRecordsResult.RecordsItem> items = kResult.getResponseBody().getData().getRecords();
+                            if (students != null && students.size() > 0 && items != null && items.size() > 0) {
+                                for (AttendanceServiceListAttendClassRecordsResult.RecordsItem item : items) {
+                                    Optional<SmartUser> student = students.stream().filter(e -> e.getXwStudentUid().equals(item.getUserUid())).findFirst();
+                                    if (student != null && student.isPresent()) {
+
+                                        Optional<SmartAttendance> existData = attendanceList.stream().filter(e -> e.getUserId().equals(student.get().getId())
+                                                && e.getClassId().equals(student.get().getSchoolClass()) &&  StringUtils.hasText(item.getAttendTime()) && e.getAttendTime().equals(TimeExchange.StringToDate((TimeExchange.getDate() + " " + item.getAttendTime()), "yyyy-MM-dd HH:mm:ss"))).findFirst();
+                                        if (!(existData != null && existData.isPresent())) {
+                                            SmartAttendance attendance = new SmartAttendance();
+                                            attendance.setUserId(student.get().getId());
+                                            attendance.setUserUid(item.getUserUid());
+                                            attendance.setClassId(student.get().getSchoolClass());
+                                            attendance.setClassUid(kResult.getResponseBody().getData().getClassUid());
+                                            attendance.setXwUserName(item.getUserName());
+                                            attendance.setXwStudentCode(item.getStudentCode());
+                                            attendance.setAttendTime(StringUtils.hasText(item.getAttendTime()) ? TimeExchange.StringToDate((TimeExchange.getDate() + " " + item.getAttendTime()), "yyyy-MM-dd HH:mm:ss") : new Date());
+                                            attendance.setStatus(item.getStatus());
+                                            attendances.add(attendance);
+                                        }
                                     }
                                 }
                             }
                         }
                     }
                 }
-            }
 
-            if (attendances.size() > 0) {
-                smartAttendanceService.saveBatch(attendances);
+                if (attendances.size() > 0) {
+                    smartAttendanceService.saveBatch(attendances);
+                }
             }
+        } catch (Exception e) {
+            logger.info("考勤定时任务失败:" + e.getMessage());
+            throw new Exception("考勤定时任务失败" + e.getMessage());
         }
-    }
-
 
+    }
 
 
 }

+ 89 - 0
src/main/java/com/template/controller/SmartTeachingController.java

@@ -0,0 +1,89 @@
+package com.template.controller;
+
+
+import com.template.api.SmartTeachingControllerAPI;
+import com.template.model.pojo.SmartClass;
+import com.template.model.pojo.SmartGrade;
+import com.template.model.pojo.SmartSubject;
+import com.template.model.result.CommonResult;
+import com.template.model.vo.SubjectClassVo;
+import com.template.model.vo.SubjectGradeVo;
+import com.template.model.vo.SubjectVo;
+import com.template.services.SmartClassService;
+import com.template.services.SmartGradeService;
+import com.template.services.SmartSubjectService;
+import com.template.services.SmartTeachingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 应用管理 前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@RestController
+public class SmartTeachingController implements SmartTeachingControllerAPI {
+
+    @Autowired
+    private SmartTeachingService smartTeachingService;
+
+    @Autowired
+    private SmartGradeService smartGradeService;
+
+    @Autowired
+    private SmartClassService smartClassService;
+
+    @Autowired
+    private SmartSubjectService smartSubjectService;
+
+
+    @Override
+    public CommonResult queryTeachings() {
+        List<SubjectVo> result = new ArrayList<>();
+        List<SmartGrade> grades = smartGradeService.list(null);
+        List<SmartSubject> subjects = smartSubjectService.list(null);
+        List<SmartClass> classes = smartClassService.list(null);
+        for (SmartSubject subject : subjects) {
+            SubjectVo subjectData = new SubjectVo();
+            subjectData.setId(subject.getId());
+            subjectData.setName(subject.getName());
+            List<SubjectGradeVo> subjectVos = new ArrayList<>();
+            List<SmartGrade> ownerGrades = grades.stream().filter(e -> ("," + e.getSubjectId() + ",").contains("," + subject.getId() + ",")).collect(Collectors.toList());
+            if (ownerGrades != null && ownerGrades.size() > 0) {
+                for (SmartGrade ownerGrade : ownerGrades) {
+                    SubjectGradeVo gradeDetail = new SubjectGradeVo();
+                    gradeDetail.setId(ownerGrade.getId());
+                    gradeDetail.setName(ownerGrade.getName());
+                    List<SubjectClassVo> classVos = new ArrayList<>();
+                    List<SmartClass> ownerClasses = classes.stream().filter(e -> e.getGradeId().equals(ownerGrade.getId())).collect(Collectors.toList());
+                    if(ownerClasses != null && ownerClasses.size() > 0){
+                        for (SmartClass ownerClass :ownerClasses){
+                            SubjectClassVo classVo = new SubjectClassVo();
+                            classVo.setId(ownerClass.getId());
+                            classVo.setName(ownerClass.getName());
+                            classVos.add(classVo);
+                        }
+                    }
+
+                    gradeDetail.setClasses(classVos);
+                    subjectVos.add(gradeDetail);
+                }
+
+            }
+            subjectData.setGrades(subjectVos);
+            result.add(subjectData);
+        }
+
+        return CommonResult.ok(result);
+    }
+}
+

Datei-Diff unterdrückt, da er zu groß ist
+ 102 - 22
src/main/java/com/template/controller/SmartUserController.java


+ 2 - 0
src/main/java/com/template/mapper/AttColumnsMapper.java

@@ -3,6 +3,7 @@ package com.template.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.template.model.pojo.AttColumns;
 import com.template.model.pojo.SystemUser;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -12,6 +13,7 @@ import com.template.model.pojo.SystemUser;
  * @author ceshi
  * @since 2023-03-30
  */
+@Repository
 public interface AttColumnsMapper extends BaseMapper<AttColumns> {
 
 }

+ 18 - 0
src/main/java/com/template/mapper/SmartTeachingMapper.java

@@ -0,0 +1,18 @@
+package com.template.mapper;
+
+import com.template.model.pojo.SmartTeaching;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 应用管理 Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Repository
+public interface SmartTeachingMapper extends BaseMapper<SmartTeaching> {
+
+}

+ 71 - 0
src/main/java/com/template/model/pojo/SmartTeaching.java

@@ -0,0 +1,71 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 应用管理
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SmartTeaching对象", description="应用管理")
+public class SmartTeaching implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "用户ID")
+    private Integer userId;
+
+    @ApiModelProperty(value = "学科ID")
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "年级ID")
+    private Integer gradeId;
+
+    @ApiModelProperty(value = "班级ID")
+    private Integer classId;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 6 - 0
src/main/java/com/template/model/request/insertSmartUserRequest.java

@@ -1,5 +1,6 @@
 package com.template.model.request;
 
+import com.template.model.vo.SubjectVo;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -137,4 +138,9 @@ public class insertSmartUserRequest {
      */
     private Integer duties;
 
+    /**
+     * 任课数据
+     */
+    private List<SubjectVo> isr;
+
 }

+ 29 - 0
src/main/java/com/template/model/request/insertSubjectRequest.java

@@ -0,0 +1,29 @@
+package com.template.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-04
+ */
+@Data
+public class insertSubjectRequest {
+
+    /**
+     * 科目ID
+     */
+    private Integer subjectId;
+
+    /**
+     * 班级ID集合
+     */
+    private List<Integer> classIds;
+}

+ 5 - 0
src/main/java/com/template/model/request/updateSmartUserRequest.java

@@ -1,5 +1,6 @@
 package com.template.model.request;
 
+import com.template.model.vo.SubjectVo;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -161,4 +162,8 @@ public class updateSmartUserRequest {
     //@NotBlank(message = "职务不能为空")
     private Integer duties;
 
+    /**
+     * 任课数据
+     */
+    private List<SubjectVo> usr;
 }

+ 18 - 0
src/main/java/com/template/model/vo/SubjectClassVo.java

@@ -0,0 +1,18 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+@Data
+public class SubjectClassVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 班级名称
+     */
+    private String name;
+
+
+}

+ 23 - 0
src/main/java/com/template/model/vo/SubjectGradeVo.java

@@ -0,0 +1,23 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SubjectGradeVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 年级名称
+     */
+    private String name;
+
+    /**
+     * 班级集合
+     */
+    private List<SubjectClassVo> classes;
+}

+ 23 - 0
src/main/java/com/template/model/vo/SubjectVo.java

@@ -0,0 +1,23 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SubjectVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 年级集合
+     */
+    private List<SubjectGradeVo> grades;
+}

+ 20 - 0
src/main/java/com/template/services/SmartTeachingService.java

@@ -0,0 +1,20 @@
+package com.template.services;
+
+import com.template.model.pojo.SmartTeaching;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 应用管理 服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+public interface SmartTeachingService extends IService<SmartTeaching> {
+    int deleteByUserId(Integer userId);
+
+    int deleteByUserIds(List<Integer> userIds);
+}

+ 44 - 0
src/main/java/com/template/services/impl/SmartTeachingServiceImpl.java

@@ -0,0 +1,44 @@
+package com.template.services.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.template.mapper.SmartSubjectTemplateMapper;
+import com.template.model.evaluate.student.SmartSubjectTemplate;
+import com.template.model.pojo.SmartTeaching;
+import com.template.mapper.SmartTeachingMapper;
+import com.template.services.SmartTeachingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 应用管理 服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Service
+public class SmartTeachingServiceImpl extends ServiceImpl<SmartTeachingMapper, SmartTeaching> implements SmartTeachingService {
+    @Autowired
+    private SmartTeachingMapper smartTeachingMapper;
+
+
+    @Override
+    public int deleteByUserId(Integer userId) {
+        QueryWrapper<SmartTeaching> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        int result = smartTeachingMapper.delete(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public int deleteByUserIds(List<Integer> userIds) {
+        QueryWrapper<SmartTeaching> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("user_id", userIds);
+        int result = smartTeachingMapper.delete(queryWrapper);
+        return result;
+    }
+}

+ 1 - 1
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -37,7 +37,7 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     @Override
     public int insertSmartUser(SmartUser sa) {
         int result = smartUserMapper.insert(sa);
-        return result;
+        return sa.getId();
     }
 
     @Override