Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/feature/0406-degree' into feature/0406-degree

zouxuan 2 anni fa
parent
commit
f1691ff3c0

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/DegreeMapper.java

@@ -23,5 +23,6 @@ public interface DegreeMapper extends BaseMapper<Degree> {
 	 * @return List<DegreeWrapper.Degree>
 	 */
 	List<Degree> selectPage(@Param("page") IPage<Degree> page, @Param("param") DegreeWrapper.DegreeQuery param);
-	
+
+    void degreeStatusChange();
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeNewsWrapper.java

@@ -36,6 +36,7 @@ public class DegreeNewsWrapper {
         @ApiModelProperty("关键字匹配")
 		private String keyword;
 
+        @ApiModelProperty("用户所在机构")
         private Integer organId;
 
         @ApiModelProperty("用户所在分部")
@@ -47,6 +48,12 @@ public class DegreeNewsWrapper {
         @ApiModelProperty("咨询类型")
         private String type;
 
+        @ApiModelProperty("用户机构ID")
+        private Integer tenantId;
+
+        @ApiModelProperty(value = "排序方式", hidden = true)
+        private Boolean sortedTime;
+
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
         }

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeWrapper.java

@@ -134,7 +134,7 @@ public class DegreeWrapper {
         private Date endTime;
 
         @ApiModelProperty(value = "登记时间",required = true)
-        @NotNull(message = "登记时间不能为空")
+//        @NotNull(message = "登记时间不能为空")
         private Date registrationTime;
 
         @ApiModelProperty("报名人次")
@@ -231,6 +231,9 @@ public class DegreeWrapper {
         @ApiModelProperty("报名状态 NOT_START:未开始,START:报名中,END:报名结束")
         private EDegreeStatus status;
 
+        @ApiModelProperty("考级简章ID")
+        private Long examinationBriefId;
+
         @ApiModelProperty("考级城市分部")
         private List<DegreeCity> degreeCities;
 

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/DegreeService.java

@@ -52,4 +52,9 @@ public interface DegreeService extends IService<Degree>  {
      * @return DegreeWrapper.StudentDegreeInfo
      */
     DegreeWrapper.StudentDegreeInfo studentDegreeInfoById(Long id);
+
+    /**
+     * 考级状态变更
+     */
+    void degreeStatusChange();
 }

+ 60 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeServiceImpl.java

@@ -3,12 +3,17 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
 import com.ym.mec.biz.dal.dao.OrganizationDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.DegreeNewsTypeEnum;
 import com.ym.mec.biz.dal.enums.EDegreeStatus;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.vo.DegreeNewsVo;
+import com.ym.mec.biz.dal.wrapper.DegreeNewsWrapper;
+import com.ym.mec.biz.service.DegreeNewsService;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.exception.BizException;
@@ -53,12 +58,15 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
     @Autowired
     private OrganizationDao organizationDao;
 
-	/**
+    @Autowired
+    private DegreeNewsService degreeNewsService;
+
+    /**
      * 查询详情
      * @param id 详情ID
      * @return Degree
      */
-	@Override
+    @Override
     public Degree detail(Long id) {
         
         return baseMapper.selectById(id);
@@ -110,7 +118,7 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
         return result.setRecords(degrees);
 
     }
-	
+
     /**
      * 添加
      * @param degree DegreeWrapper.Degree
@@ -121,12 +129,34 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
 
         Integer tenantId = TenantContextHolder.getTenantId();
         degree.setTenantId(tenantId);
+
+        // 判断考级时间冲突
+        checkTime(degree);
+
         updateDegreeStatus(degree);
 
         
         return this.save(JSON.parseObject(degree.jsonString(), Degree.class));
     }
 
+    private void checkTime(DegreeWrapper.Degree degree) {
+        List<Degree> list = this.lambdaQuery()
+                .eq(Degree::getTenantId, degree.getTenantId())
+                .le(Degree::getStartTime, degree.getEndTime())
+                .ge(Degree::getEndTime, degree.getStartTime())
+                .list();
+
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+
+        if (list.size()  == 1) {
+            Degree degree1 = list.get(0);
+            if (degree1.getId().equals(degree.getId())) return;
+        }
+        throw new BizException("考级时间冲突");
+    }
+
     /**
      * 根据时间设置状态
      * @param degree DegreeWrapper.Degree
@@ -149,6 +179,13 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
      */
     @Override
     public Boolean update(DegreeWrapper.Degree degree){
+
+        Integer tenantId = TenantContextHolder.getTenantId();
+        degree.setTenantId(tenantId);
+
+        // 判断考级时间冲突
+        checkTime(degree);
+
         updateDegreeStatus(degree);
 
         return this.updateById(JSON.parseObject(degree.jsonString(), Degree.class));       
@@ -251,6 +288,26 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
             }
         }
 
+        // 考级最新简章消息ID
+        DegreeNewsWrapper.DegreeNewsQuery newsQuery = DegreeNewsWrapper.DegreeNewsQuery
+                .builder()
+                .page(1)
+                .rows(1)
+                .status(true)
+                .tenantId(wrapper.getTenantId())
+                .type(DegreeNewsTypeEnum.GRADE_EXAMINATION_BRIEF.getCode())
+                .sortedTime(true)
+                .build();
+        List<DegreeNewsVo> records = degreeNewsService.selectPage(QueryInfo.getPage(newsQuery), newsQuery).getRecords();
+        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
+            wrapper.setExaminationBriefId(records.get(0).getId());
+        }
+
         return wrapper;
     }
+
+    @Override
+    public void degreeStatusChange() {
+        this.baseMapper.degreeStatusChange();
+    }
 }

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/DegreeMapper.xml

@@ -28,4 +28,14 @@
         </where>
 	</select>
 
+    <update id="degreeStatusChange">
+        UPDATE degree SET status_ =
+            case
+                when start_time_ &lt; now() and end_time_ &gt; now() then 'START'
+                when end_time_ &lt;= now() then 'END'
+                else 'NOT_START'
+            end
+
+        WHERE status_ != 'END' and start_time_ &lt; now()
+    </update>
 </mapper>

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/DegreeNewsMapper.xml

@@ -15,6 +15,9 @@
 			<if test="param.status != null">
 				AND dn.status_ = #{param.status}
 			</if>
+		    <if test="param.tenantId != null">
+				AND dn.tenant_id_ = #{param.tenantId}
+			</if>
 			<if test="param.organId != null">
 				AND (FIND_IN_SET(#{param.organId},dn.organ_ids_) OR dn.organ_ids_ IS NULL OR dn.organ_ids_ = '')
 			</if>
@@ -23,7 +26,10 @@
 			</if>
 		</where>
 		group by dn.id_
-		ORDER BY dn.id_ DESC
+		<choose>
+			<when test="param.sortedTime != null">ORDER BY dn.update_time_ DESC</when>
+			<otherwise>ORDER BY dn.id_ DESC</otherwise>
+		</choose>
 	</select>
     
 </mapper>

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -299,4 +299,8 @@ public interface TaskRemoteService {
 
     @GetMapping("task/teacherCloudCourseReport")
     void teacherCloudCourseReport();
+
+
+    @GetMapping("task/degreeStatusChange")
+    void degreeStatusChange() ;
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -349,4 +349,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void teacherCloudCourseReport() {
 
     }
+
+    @Override
+    public void degreeStatusChange() {
+        logger.error("考级状态变更失败");
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/DegreeStatusChangeTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DegreeStatusChangeTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.degreeStatusChange();
+	}
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -129,6 +129,9 @@ public class TaskController extends BaseController {
     @Autowired
     private TeacherCloudCourseReportService teacherCloudCourseReportService;
 
+    @Autowired
+    private DegreeService degreeService;
+
 	@GetMapping(value = "/initSysMusicCompareDayData")
 	public void initSysMusicCompareDayData(){
 		sysMusicCompareRecordService.initSysMusicCompareDayData();
@@ -642,4 +645,10 @@ public class TaskController extends BaseController {
 		return succeed();
 	}
 
+    @ApiOperation("考级状态变更 - 1分钟一次")
+    @GetMapping("/degreeStatusChange")
+    public Object degreeStatusChange() {
+        degreeService.degreeStatusChange();
+        return succeed();
+    }
 }