Browse Source

Merge remote-tracking branch 'origin/master'

liweifan 2 years ago
parent
commit
bfa6d6dca6
22 changed files with 269 additions and 32 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. 2 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  5. 1 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  6. 7 4
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  7. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSalaryTask.java
  8. 1 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java
  9. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  10. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  11. 1 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/TeacherSalaryEnum.java
  12. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  13. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  14. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  15. 18 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  16. 0 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  17. 115 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupInfoVo.java
  18. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseSchedulePlanVo.java
  19. 16 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  20. 11 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  21. 6 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java
  22. 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";
 }

+ 2 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -71,10 +71,10 @@ public class OmsPortalOrderController {
 
     @ApiOperation("按状态分页获取用户订单列表")
     @ApiImplicitParam(name = "status", value = "订单状态:-1->全部;0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭",
-            defaultValue = "-1", allowableValues = "-1,0,1,2,3,4", paramType = "query", dataType = "int")
+            defaultValue = "-1", allowableValues = "-1,0,1,2,3,4", paramType = "query", dataType = "string")
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     @ResponseBody
-    public CommonResult<CommonPage<OmsOrderDetail>> list(@RequestParam Integer status,
+    public CommonResult<CommonPage<OmsOrderDetail>> list(@RequestParam String status,
                                                    @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                                    @RequestParam(required = false, defaultValue = "5") Integer pageSize) {
         CommonPage<OmsOrderDetail> orderPage = portalOrderService.list(status,pageNum,pageSize);

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -61,7 +61,7 @@ public interface OmsPortalOrderService {
     /**
      * 分页获取用户订单
      */
-    CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize);
+    CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize);
 
     /**
      * 根据订单ID获取订单详情

+ 7 - 4
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -24,6 +24,7 @@ import com.yonge.cooleshow.sdk.req.OrderPayReq;
 import com.yonge.cooleshow.sdk.res.OrderCloseRes;
 import com.yonge.cooleshow.sdk.res.OrderPayRes;
 import com.yonge.cooleshow.service.PaymentService;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -359,8 +360,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     }
 
     @Override
-    public CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize) {
-        if(status==-1){
+    public CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize) {
+        if(status.equals("-1")){
             status = null;
         }
         UmsMember member = memberService.getCurrentMember();
@@ -369,8 +370,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         OmsOrderExample.Criteria criteria = orderExample.createCriteria();
         criteria.andDeleteStatusEqualTo(0)
                 .andMemberIdEqualTo(member.getId());
-        if(status!=null){
-            criteria.andStatusEqualTo(status);
+        if(status != null && !StringUtil.isEmpty(status)) {
+            List<Long> list = StringUtil.toLongList(status);
+            List<Integer> collect = list.stream().map(Long::intValue).collect(Collectors.toList());
+            criteria.andStatusIn(collect);
         }
         orderExample.setOrderByClause("create_time desc");
         List<OmsOrder> orderList = orderMapper.selectByExample(orderExample);

+ 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 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/TeacherSalaryEnum.java

@@ -8,9 +8,7 @@ import com.yonge.toolset.base.enums.BaseEnum;
  */
 public enum TeacherSalaryEnum implements BaseEnum<String, TeacherSalaryEnum> {
     //未上课-还未开始上课等待上课结束后结算
-    NOT_START("未上课"),
-    //待结算-老师上完课等待结算
-    WAIT("待结算"),
+    NOT_START("未结算"),
     //已结算-已经结算完成
     COMPLETE("已结算"),
     //已取消-学生发起退款等等其他操作

+ 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 - 9
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);
@@ -1369,9 +1369,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //未来30天日期-跳过节假日
         List<String> futureDaysNoVacation = futureDays.stream().filter(item -> !holiday.contains(item)).collect(Collectors.toList());
 
-        //查询所有老师未开始、进行中的课程
-//        List<String> statusList = Lists.newArrayList(CourseScheduleEnum.NOT_START.getCode(), CourseScheduleEnum.ING.getCode());
-
         List<Long> teacherIdList = new ArrayList<>();
         getAllTimeConfig(skipHoliday, futureDaysNoVacation, teacherIdList);//跳过节假日配置
         getAllTimeConfig(noSkipHoliday, futureDays, teacherIdList);//未跳过节假日配置
@@ -1397,11 +1394,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                     .in(CourseSchedule::getStatus, statusList)
                     .gt(CourseSchedule::getClassDate, DateUtil.getNowStr()));
 
-//            if (CollectionUtils.isEmpty(scheduleList)) {//无人购课直接跳出本次循环
-//                idList.add(freeTimeConfig.getTeacherId());
-//                continue;
-//            }
-
             //获取一周配置格式化
             List<DateVo> monday = JSONObject.parseArray(freeTimeConfig.getMonday(), DateVo.class);
             List<DateVo> tuesday = JSONObject.parseArray(freeTimeConfig.getTuesday(), DateVo.class);
@@ -1492,4 +1484,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);
+    }
 }

+ 0 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -331,9 +331,6 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 userAccountRecord.setTransAmount(salary.getExpectSalary());//扣除手续费后所得金额
                 userAccountRecord.setOrderNo(payment.getOrderNo());
                 userAccountService.accountChange(userAccountRecord);
-                //修改老师课酬表
-                salary.setStatus(TeacherSalaryEnum.COMPLETE.getCode());
-                courseScheduleTeacherSalaryService.updateById(salary);
             }
         });
     }
@@ -389,9 +386,6 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 userAccountRecord.setTransAmount(salary.getActualSalary());//扣除手续费后所得金额
                 userAccountRecord.setOrderNo(payment.getOrderNo());
                 userAccountService.accountChange(userAccountRecord);
-                //修改老师课酬表
-                salary.setStatus(TeacherSalaryEnum.COMPLETE.getCode());
-                courseScheduleTeacherSalaryService.updateById(salary);
             }
         });
     }

+ 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;
+    }
+}

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseSchedulePlanVo.java

@@ -30,6 +30,26 @@ public class CourseSchedulePlanVo implements Serializable {
     private String salaryStatus;
     @ApiModelProperty(value = "录播地址")
     private String url;
+    @ApiModelProperty("老师签到状态 0:异常 1:正常")
+    private Integer teacherInSign;
+    @ApiModelProperty("老师签退状态 0:异常 1:正常")
+    private Integer teacherOutSign;
+
+    public Integer getTeacherInSign() {
+        return teacherInSign;
+    }
+
+    public void setTeacherInSign(Integer teacherInSign) {
+        this.teacherInSign = teacherInSign;
+    }
+
+    public Integer getTeacherOutSign() {
+        return teacherOutSign;
+    }
+
+    public void setTeacherOutSign(Integer teacherOutSign) {
+        this.teacherOutSign = teacherOutSign;
+    }
 
     public Long getCourseId() {
         return courseId;

+ 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");