Browse Source

定时修改课酬状态

cy 2 years ago
parent
commit
03861dd9f5
16 changed files with 238 additions and 8 deletions
  1. 9 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java
  2. 5 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/TeacherFeignServiceFallback.java
  3. 6 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  4. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSalaryTask.java
  5. 1 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java
  6. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  7. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  8. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  9. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  10. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  11. 18 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  12. 115 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupInfoVo.java
  13. 16 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  14. 11 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  15. 6 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java
  16. 12 0
      toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

+ 9 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java

@@ -34,10 +34,18 @@ public interface TeacherFeignService {
     HttpResponseResult<Object> courseRemind();
 
     /**
-     * @Description: 更课程状态
+     * @Description: 更课程状态
      * @Author: cy
      * @Date: 2022/5/17
      */
     @GetMapping("/task/courseStatus")
     HttpResponseResult<Object> courseStatus();
+
+    /**
+     * @Description: 更新课酬状态
+     * @Author: cy
+     * @Date: 2022/5/24
+     */
+    @GetMapping("/task/teacherSalary")
+    HttpResponseResult<Object> teacherSalary();
 }

+ 5 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/TeacherFeignServiceFallback.java

@@ -26,4 +26,9 @@ public class TeacherFeignServiceFallback implements TeacherFeignService {
     public HttpResponseResult<Object> courseStatus() {
         return null;
     }
+
+    @Override
+    public HttpResponseResult<Object> teacherSalary() {
+        return null;
+    }
 }

+ 6 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -139,5 +139,10 @@ public interface SysConfigConstant {
      * @updateTime 2022/4/20 11:43
      */
     String GOOD_LOGO_MUSIC = "good_logo_music";
-
+    /***
+     * 陪练课&直播课老师课程结算日期(天)
+     * @author cy
+     * @updateTime 2022/5/24 10:03
+     */
+    String COURSE_SALARY_SETTLEMENT_DAY = "course_salary_settlement_day";
 }

+ 22 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSalaryTask.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.TeacherFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/24
+ */
+@Service
+public class TeacherSalaryTask extends BaseTask {
+    @Autowired
+    private TeacherFeignService teacherFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        teacherFeignService.teacherSalary();
+    }
+}

+ 1 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -12,7 +12,6 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -119,7 +118,7 @@ public class CourseGroupController extends BaseController {
 
     @ApiOperation(value = "课程组管理-直播课-课程信息")
     @GetMapping(value = "/live/info")
-    public HttpResponseResult<CourseGroup> selectLiveGroupInfo(@NotNull Long groupId) {
+    public HttpResponseResult<CourseGroupInfoVo> selectLiveGroupInfo(@NotNull Long groupId) {
         return succeed(courseGroupService.selectLiveGroupInfo(groupId));
     }
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java

@@ -171,5 +171,13 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      */
     IPage<VideoLessonGroupDetail> selectVideoGroupPlan(@Param("page") IPage<VideoLessonGroupDetail> page,
                                                        @Param("param") CourseGroupSearch search);
+
+    /**
+     * 根据组id查详情
+     *
+     * @param groupId
+     * @return
+     */
+    CourseGroupInfoVo selectGroupInfoVo(Long groupId);
 }
 

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -216,4 +216,8 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     void updateStartTime();
 
     void updateEndTime();
+
+    List<Long> selectIdList(String day);
+
+    void updateTeacherSalary(List<Long> list);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -242,6 +242,6 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @param groupId
      * @return
      */
-    CourseGroup selectLiveGroupInfo(Long groupId);
+    CourseGroupInfoVo selectLiveGroupInfo(Long groupId);
 }
 

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -236,5 +236,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     List<Long> getTeacherId(Integer amount);
 
     void scheduleTask();
+
+    void teacherSalaryTask();
 }
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -946,8 +946,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     }
 
     @Override
-    public CourseGroup selectLiveGroupInfo(Long groupId) {
-        return baseMapper.selectById(groupId);
+    public CourseGroupInfoVo selectLiveGroupInfo(Long groupId) {
+        return baseMapper.selectGroupInfoVo(groupId);
     }
 
     /**

+ 18 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -783,7 +783,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     public IPage<PracticeTeacherVo> teacherList(IPage<PracticeTeacherVo> page, PracticeTeacherSearch search) {
         if (search.getScreen() != null && search.getScreen()) {
             List<Long> teacherIdList = getTeacherId(30);
-            if (CollectionUtils.isEmpty(teacherIdList)){
+            if (CollectionUtils.isEmpty(teacherIdList)) {
                 return null;
             }
             search.setTeacherIdList(teacherIdList);
@@ -1492,4 +1492,21 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         baseMapper.updateStartTime();
         baseMapper.updateEndTime();
     }
+
+    /**
+     * @Description: 定时修改课酬状态
+     * @Author: cy
+     * @Date: 2022/5/24
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void teacherSalaryTask() {
+        //课程结算日期(天)
+        Integer settlementDay = Integer.valueOf(sysConfigService.findConfigValue(SysConfigConstant.COURSE_SALARY_SETTLEMENT_DAY));
+        //获取n天前日期
+        String day = DateUtil.getDayAgoOrAftString(-settlementDay);
+        //获取小于n天前所有课程id
+        List<Long> idList = baseMapper.selectIdList(day);
+        //更新老师课酬表
+        baseMapper.updateTeacherSalary(idList);
+    }
 }

+ 115 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupInfoVo.java

@@ -0,0 +1,115 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/24
+ */
+@ApiModel
+public class CourseGroupInfoVo implements Serializable {
+    @ApiModelProperty(value = "课程组id")
+    private Long id;
+
+    @ApiModelProperty(value = "课程组名称")
+    private String name;
+
+    @ApiModelProperty(value = "声部id")
+    private Long subjectId;
+
+    @ApiModelProperty(value = "声部名称")
+    private String subjectName;
+
+    @ApiModelProperty(value = "课程数")
+    private Integer courseNum;
+
+    @ApiModelProperty(value = "课程组售价")
+    private BigDecimal coursePrice;
+
+    @ApiModelProperty(value = "课程组状态 ING进行中 COMPLETE已完成 DISSOLVE-未成课(解散课程) CANCEL已取消-未开始报名前可取消 APPLY报名中 NOT_SALE未开售")
+    private String status;
+
+    @ApiModelProperty(value = "课程介绍")
+    private String courseIntroduce;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createdTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Integer courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public BigDecimal getCoursePrice() {
+        return coursePrice;
+    }
+
+    public void setCoursePrice(BigDecimal coursePrice) {
+        this.coursePrice = coursePrice;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getCourseIntroduce() {
+        return courseIntroduce;
+    }
+
+    public void setCourseIntroduce(String courseIntroduce) {
+        this.courseIntroduce = courseIntroduce;
+    }
+
+    public Date getCreatedTime() {
+        return createdTime;
+    }
+
+    public void setCreatedTime(Date createdTime) {
+        this.createdTime = createdTime;
+    }
+}

+ 16 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -620,6 +620,22 @@
         FROM video_lesson_group_detail
         WHERE video_lesson_group_id_=#{param.groupId}
     </select>
+    <select id="selectGroupInfoVo" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupInfoVo"
+            parameterType="java.lang.Long">
+        SELECT
+            g.id_ AS id,
+            g.name_ AS name,
+            g.subject_id_ AS subjectId,
+            s.name_ AS subjectName,
+            g.course_num_ AS courseNum,
+            g.course_price_ AS coursePrice,
+            g.status_ AS `status`,
+            g.course_introduce_ AS courseIntroduce,
+            g.created_time_ AS createdTime
+        FROM course_group g
+        LEFT JOIN `subject` s ON g.subject_id_=s.id_
+        WHERE g.id_ =#{groupId}
+    </select>
 
     <update id="opsPreStudentNum">
         update course_group

+ 11 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -776,10 +776,21 @@
     <select id="teacherIdList" resultType="java.lang.Long">
         SELECT teacher_id_ FROM teacher_free_time GROUP BY teacher_id_
     </select>
+    <select id="selectIdList" resultType="java.lang.Long">
+        SELECT id_ FROM course_schedule WHERE lock_=0 AND class_date_ &lt;= #{day}
+    </select>
     <update id="updateStartTime">
         UPDATE course_schedule SET status_='ING' WHERE status_ != 'CANCEL' <![CDATA[ AND start_time_ <= NOW() ]]> <![CDATA[ AND NOW() <= end_time_ ]]>
     </update>
     <update id="updateEndTime">
         UPDATE course_schedule SET status_='COMPLETE' WHERE status_ != 'CANCEL' <![CDATA[ AND end_time_ <= NOW() ]]>
     </update>
+    <update id="updateTeacherSalary" parameterType="java.util.List">
+        UPDATE course_schedule_teacher_salary
+        SET status_='COMPLETE'
+        WHERE course_schedule_id_ IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 </mapper>

+ 6 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java

@@ -64,4 +64,10 @@ public class TaskController extends BaseController {
         scheduleService.scheduleTask();
         return HttpResponseResult.succeed();
     }
+
+    @GetMapping("/teacherSalary")
+    public HttpResponseResult<Object> teacherSalary() {
+        scheduleService.teacherSalaryTask();
+        return HttpResponseResult.succeed();
+    }
 }

+ 12 - 0
toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

@@ -1429,6 +1429,18 @@ public class DateUtil {
 		return dateStr;
 	}
 
+	/**
+	 * 获取前/后n天的日期
+	 * @param num
+	 * @return
+	 */
+	public static String getDayAgoOrAftString(int num){
+		Calendar calendar1 = Calendar.getInstance();
+		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+		calendar1.add(Calendar.DATE, num);
+		return sdf1.format(calendar1.getTime());
+	}
+
 	public static void main(String[] args) throws ParseException {
 		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");