瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 年之前
父節點
當前提交
06cbc812c5
共有 38 個文件被更改,包括 638 次插入54 次删除
  1. 26 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ContractTemplateTypeEnum.java
  2. 2 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java
  3. 26 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java
  4. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  5. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ContractTemplate.java
  7. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java
  8. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  9. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/StudentTotalService.java
  10. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherTotalService.java
  11. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ContractTemplateServiceImpl.java
  12. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  13. 5 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  14. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PianoRoomBuyRecordServiceImpl.java
  15. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  16. 17 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentStarServiceImpl.java
  17. 12 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentTotalServiceImpl.java
  18. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SubjectServiceImpl.java
  19. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  20. 10 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherTotalServiceImpl.java
  21. 9 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  22. 4 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/DistributedLock.java
  23. 181 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoDetailVo.java
  24. 123 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoVo.java
  25. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java
  26. 20 10
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml
  27. 38 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  28. 11 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  29. 3 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  30. 4 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml
  31. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml
  32. 0 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/StudentApplication.java
  33. 0 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java
  34. 1 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java
  35. 4 0
      cooleshow-user/user-website/pom.xml
  36. 20 3
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/StudentController.java
  37. 38 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/SubjectController.java
  38. 0 9
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/WebSiteController.java

+ 26 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ContractTemplateTypeEnum.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.common.enums;
+
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ContractTemplateTypeEnum implements BaseEnum<String, ContractTemplateTypeEnum> {
+    PLATFORM("平台协议"), WITHDRAW("提现协议(三方)");
+
+    private String code;
+
+    private String desc;
+
+    ContractTemplateTypeEnum(String desc) {
+        this.code = this.name();
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getDesc() {
+        return this.desc;
+    }
+
+}

+ 2 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.yonge.cooleshow.biz.dal.enums.ContractTypeEnum;
+import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -59,6 +60,7 @@ public class ContractTemplateController extends BaseController {
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/add')")
 	public HttpResponseResult<Object> add(@RequestBody ContractTemplate contractTemplate) {
+		contractTemplate.setType(ContractTemplateTypeEnum.PLATFORM.getCode());
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         
         if(sysUser == null || sysUser.getId() == null){

+ 26 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.Map;
 
 /**
  * @Author: cy
@@ -121,4 +122,29 @@ public class CourseGroupController extends BaseController {
     public HttpResponseResult<CourseGroupInfoVo> selectLiveGroupInfo(@NotNull Long groupId) {
         return succeed(courseGroupService.selectLiveGroupInfo(groupId));
     }
+
+    @ApiOperation(value = "课程组管理-琴房课",notes = "{\n" +
+            "    \"subjectId\":20,\n" +
+            "    \"search\":\"师\",\n" +
+            "    \"status\":\"ING\"\n" +
+            "}")
+    @PostMapping(value = "/piano")
+    public HttpResponseResult<PageInfo<CourseGroupPianoVo>> selectLiveGroupInfo(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroup(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-琴房课-详情",notes = "{\n" +
+            "    \"courseGroupId\": 140,\n" +
+            "    \"teacherSign\": 0,\n" +
+            "    \"studentSign\": 0,\n" +
+            "    \"search\": \"游\",\n" +
+            "    \"status\": \"COMPLETE\",\n" +
+            "    \"salaryStatus\": \"NOT_START\",\n" +
+            "    \"startTime\": \"2022-05-21 08:00:00\",\n" +
+            "    \"endTime\": \"\"\n" +
+            "}")
+    @PostMapping(value = "/piano/detail")
+    public HttpResponseResult<PageInfo<CourseGroupPianoDetailVo>> selectPianoGroupDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupDetail(PageUtil.getPage(search), search)));
+    }
 }

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

@@ -182,8 +182,29 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
 
     /**
      * 批量更新组状态
+     *
      * @param list
      */
     void updateBatch(List<Long> list);
+
+    /**
+     * 查询琴房课组
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroup(@Param("page") IPage<CourseGroupPianoVo> page,
+                                               @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询琴房课详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(@Param("page") IPage<CourseGroupPianoDetailVo> page,
+                                                           @Param("param") CourseGroupDetailSearch search);
 }
 

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java

@@ -33,6 +33,12 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      */
     List<Subject> findByParentId(@Param("parentId") Long parentId);
 
+    /**
+     * 判断声部是否有人使用
+     * @param id
+     * @return
+     */
+    Boolean useSubject(@Param("id") Long id);
     /***
      * 通过id删除
      * @param: id
@@ -47,4 +53,5 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
     Subject queryByCode(@Param("code") String code);
 
     Subject queryByName(@Param("name") String name);
+
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ContractTemplate.java

@@ -15,7 +15,7 @@ public class ContractTemplate {
 	private String name;
 	
 	@ApiModelProperty(value = "协议类型",required = false)
-	private String type;
+	private String type ;
 	
 	@ApiModelProperty(value = "协议内容",required = false)
 	private String contractTemplateContent;

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrderPayment.java

@@ -28,7 +28,7 @@ public class UserOrderPayment implements Serializable {
     @ApiModelProperty("服务提供方: ORIGINAL 微信支付宝 ADAPAY 汇付")
     @TableField(value = "open_type_")
     private OpenEnum openType;
-    @ApiModelProperty("服务提供方: STUDENT 微信支付宝 TEACHER 汇付")
+    @ApiModelProperty("支付客户端: STUDENT 学生端 TEACHER 老师端")
     @TableField(value = "payment_client_")
     private String paymentClient;
     @ApiModelProperty("支付渠道: alipay 支付宝  wx_lite 微信 ")

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

@@ -245,5 +245,21 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return
      */
     CourseGroupInfoVo selectLiveGroupInfo(Long groupId);
+
+    /**
+     * 课程组管理-琴房课
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroup(IPage<CourseGroupPianoVo> page, CourseGroupSearch search);
+
+    /**
+     * 课程组管理-琴房课-详情
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search);
 }
 

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

@@ -42,5 +42,7 @@ public interface StudentTotalService extends IService<StudentTotal>  {
 	 * @updateTime 2022/5/13 17:42
 	 * @return: com.yonge.cooleshow.biz.dal.entity.StudentTotal
 	 */
-	StudentTotal getStudentTotalById(Long id);
+	StudentTotal getTotalById(Long id);
+
+	void updateTotalCache(StudentTotal studentTotal);
 }

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

@@ -53,5 +53,7 @@ public interface TeacherTotalService extends IService<TeacherTotal>  {
 	 * @updateTime 2022/5/13 18:37
 	 * @return: com.yonge.cooleshow.biz.dal.entity.TeacherTotal
 	 */
-    TeacherTotal getTeacherTotalById(Long userId);
+    TeacherTotal getTotalById(Long userId);
+
+	void updateTotalCache(TeacherTotal teacherTotal);
 }

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

@@ -93,7 +93,6 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
                 contractTemplate.setModifyBy(userId);
 
                 contractTemplateDao.update(contractTemplate);
-
                 return true;
             }
         } catch (InterruptedException e) {

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

@@ -1096,5 +1096,14 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
             log.warn("直播课成课失败推送发送失败,{}", e.getMessage());
         }
     }
+
+    public IPage<CourseGroupPianoVo> selectPianoGroup(IPage<CourseGroupPianoVo> page, CourseGroupSearch search) {
+        return baseMapper.selectPianoGroup(page, search);
+    }
+
+    @Override
+    public IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search) {
+        return baseMapper.selectPianoGroupDetail(page,search);
+    }
 }
 

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

@@ -1470,9 +1470,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 DateChangeVo dateChange = rList.get(i);
                 for (CourseSchedule schedule : scheduleList) {//遍历已排课时间
                     //校验当前时间 与 排课时间是否冲突  记录冲突时间索引
-                    if (inInterSection(dateChange.getStartTime(), dateChange.getEndTime(), schedule.getStartTime(), schedule.getEndTime())) {
-                        indexList.add(i);
-                        continue;
+                    if (schedule.getStartTime() != null && schedule.getEndTime() != null) {
+                        if (inInterSection(dateChange.getStartTime(), dateChange.getEndTime(), schedule.getStartTime(), schedule.getEndTime())) {
+                            indexList.add(i);
+                            continue;
+                        }
                     }
                 }
             }

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

@@ -80,6 +80,7 @@ public class PianoRoomBuyRecordServiceImpl extends ServiceImpl<PianoRoomBuyRecor
         PianoRoomTime pianoRoomTime = pianoRoomTimeService.getOne(Wrappers.<PianoRoomTime>lambdaQuery()
                 .eq(PianoRoomTime::getTeacherId, orderDetailVo.getUserId()));
         if (null == pianoRoomTime) {
+            pianoRoomTime = new PianoRoomTime();
             pianoRoomTime.setTeacherId(orderDetailVo.getUserId());
             pianoRoomTime.setRemainTime(detail.getTimes());
             pianoRoomTimeService.save(pianoRoomTime);

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

@@ -73,7 +73,7 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         int num = DateUtil.daysBetween(new Date(), detail.getMembershipEndTime());
         studentHomeVo.setMembershipDays(num < 0 ? 0 : num);
 
-        StudentTotal total = totalService.getStudentTotalById(user.getId());
+        StudentTotal total = totalService.getTotalById(user.getId());
         if (null == total) {
             total = new StudentTotal();
         }

+ 17 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentStarServiceImpl.java

@@ -2,6 +2,10 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.entity.StudentTotal;
+import com.yonge.cooleshow.biz.dal.entity.TeacherTotal;
+import com.yonge.cooleshow.biz.dal.service.StudentTotalService;
+import com.yonge.cooleshow.biz.dal.service.TeacherTotalService;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -17,6 +21,11 @@ import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentStar> implements StudentStarService {
     @Autowired
     private RedissonClient redissonClient;
+    @Autowired
+    private StudentTotalService studentTotalService;
+    @Autowired
+    private TeacherTotalService teacherTotalService;
+
     @Override
     public StudentStar getByStudentIdAndTeacherId(Long studentId, Long teacherId) {
         return baseMapper.getByStudentIdAndTeacherId(studentId, teacherId);
@@ -25,20 +34,25 @@ public class StudentStarServiceImpl extends ServiceImpl<StudentStarDao, StudentS
     @Override
     public HttpResponseResult<Boolean> starOrUnStar(Long studentId, Long teacherId, YesOrNoEnum starStatus) {
         StudentStar studentStar = getByStudentIdAndTeacherId(studentId, teacherId);
-
+        StudentTotal studentTotal = studentTotalService.getTotalById(studentId);
+        TeacherTotal teacherTotal = teacherTotalService.getTotalById(teacherId);
         if (YesOrNoEnum.YES.equals(starStatus) && null == studentStar) {
             studentStar = new StudentStar();
             studentStar.setStudentId(studentId);
             studentStar.setTeacherId(teacherId);
             save(studentStar);
+            studentTotal.setStarTeacherNum(studentTotal.getStarTeacherNum() + 1);
+            teacherTotal.setFansNum(teacherTotal.getFansNum() + 1);
         } else if (YesOrNoEnum.NO.equals(starStatus) && null != studentStar) {
             remove(Wrappers.<StudentStar>lambdaQuery()
                     .eq(StudentStar::getStudentId, studentId)
                     .eq(StudentStar::getTeacherId, teacherId)
             );
+            studentTotal.setStarTeacherNum(studentTotal.getStarTeacherNum() > 0 ? (studentTotal.getStarTeacherNum() - 1) : 0);
+            teacherTotal.setFansNum(teacherTotal.getFansNum() > 0 ? (teacherTotal.getFansNum() - 1) : 0);
         }
-        redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(studentId)).delete();
-        redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(teacherId)).delete();
+        studentTotalService.updateTotalCache(studentTotal);
+        teacherTotalService.updateTotalCache(teacherTotal);
         return HttpResponseResult.succeed(true);
     }
 }

+ 12 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentTotalServiceImpl.java

@@ -95,16 +95,24 @@ public class StudentTotalServiceImpl extends ServiceImpl<StudentTotalDao, Studen
     }
 
     @Override
-    public StudentTotal getStudentTotalById(Long id) {
+    public StudentTotal getTotalById(Long id) {
         StudentTotal total = (StudentTotal) redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(id))
                 .get();
         if (null == total) {
             //去数据库查询
-            return totalStudentTotalById(id);
+            total = totalStudentTotalById(id);
+            redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(id)).set(total);
         }
         return total;
     }
 
+    @Override
+    public void updateTotalCache(StudentTotal studentTotal) {
+        if(null != studentTotal && null != studentTotal.getUserId()){
+            redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(studentTotal.getUserId())).set(studentTotal);
+        }
+    }
+
 
     private StudentTotal totalStudentTotalById(Long id) {
         StudentTotal studentTotal = new StudentTotal();
@@ -128,9 +136,9 @@ public class StudentTotalServiceImpl extends ServiceImpl<StudentTotalDao, Studen
                 .set(studentTotal);
 
         StudentTotal old = getById(id);
-        if(null != old){
+        if (null != old) {
             updateById(studentTotal);
-        }else{
+        } else {
             save(studentTotal);
         }
         return studentTotal;

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

@@ -53,6 +53,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
         if (subjectList != null && subjectList.size() > 0) {
             throw new BizException("该分类下已创建下级,无法删除");
         }
+        Boolean flag = subjectDao.useSubject(id);
+        if (flag) {
+            throw new BizException("该分类有用户使用,无法删除");
+        }
         return subjectDao.deleteById(id);
     }
 

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

@@ -136,7 +136,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
         }
 
-        TeacherTotal total = totalService.getTeacherTotalById(userId);
+        TeacherTotal total = totalService.getTotalById(userId);
 
         if (null == total) {
             total = new TeacherTotal();

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

@@ -174,16 +174,24 @@ public class TeacherTotalServiceImpl extends ServiceImpl<TeacherTotalDao, Teache
     }
 
     @Override
-    public TeacherTotal getTeacherTotalById(Long id) {
+    public TeacherTotal getTotalById(Long id) {
         TeacherTotal total = (TeacherTotal) redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(id))
                 .get();
         if (null == total) {
             //去数据库查询
-            return totalTeacherTotalById(id);
+            total = totalTeacherTotalById(id);
+            redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(id)).set(total);
         }
         return total;
     }
 
+    @Override
+    public void updateTotalCache(TeacherTotal teacherTotal) {
+        if(null != teacherTotal && null != teacherTotal.getUserId()){
+            redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(teacherTotal.getUserId())).set(teacherTotal);
+        }
+    }
+
     private TeacherTotal totalTeacherTotalById(Long id) {
         TeacherTotal teacherTotal = new TeacherTotal();
         teacherTotal.setUserId(id);

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

@@ -663,13 +663,20 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             if (!Objects.isNull(userOrderVoConsumer)) {
                 userOrderVoConsumer.accept(orderDetailVo);
             }
+            //清除商家统计缓存
             Long merchId = orderDetailVo.getMerchId();
             if (merchId != null && merchId != 0) {
                 redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(merchId)).delete();
+                redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(merchId)).delete();
             }
         }
-        //清除老师声部缓存
-        redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
+        //清除买家统计缓存
+        if (ClientEnum.STUDENT.getCode().equals(detail.getPaymentClient())) {
+            redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
+            redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(detail.getUserId())).delete();
+        } else if (ClientEnum.TEACHER.getCode().equals(detail.getPaymentClient())) {
+            redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(detail.getUserId())).delete();
+        }
     }
 
     private void testOrderSuccess(UserOrderVo detail) {

+ 4 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/support/DistributedLock.java

@@ -102,7 +102,10 @@ public class DistributedLock {
         } catch (BizException e) {
             throw e;
         } catch (ExecutionException e) {
-            String message = e.getCause().getMessage();
+            Throwable cause = e.getCause();
+            cause.printStackTrace();;
+
+            String message = cause.getMessage();
             if(StringUtil.isEmpty(message)){
                 throw new RuntimeException("任务执行异常");
             }else{

+ 181 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoDetailVo.java

@@ -0,0 +1,181 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/6/15
+ */
+@ApiModel
+public class CourseGroupPianoDetailVo extends BaseEntity {
+    @ApiModelProperty("课程id")
+    private Long courseId;
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+    @ApiModelProperty("学生id")
+    private Long studentId;
+    @ApiModelProperty("学生姓名")
+    private String studentName;
+    @ApiModelProperty("学生真实姓名")
+    private String studentRealName;
+    @ApiModelProperty("课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消")
+    private String status;
+    @ApiModelProperty("开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty("结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+    @ApiModelProperty("老师签到状态 0:异常 1:正常")
+    private Integer teacherInSign;
+    @ApiModelProperty("老师签退状态 0:异常 1:正常")
+    private Integer teacherOutSign;
+    @ApiModelProperty("学生签到状态 0:异常 1:正常")
+    private Integer studentInSign;
+    @ApiModelProperty("学生签退状态 0:异常 1:正常")
+    private Integer studentOutSign;
+    @ApiModelProperty("NOT_START未上课、WAIT待结算、COMPLETE已结算、CANCEL已取消")
+    private String salaryStatus;
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRealName() {
+        return teacherRealName;
+    }
+
+    public void setTeacherRealName(String teacherRealName) {
+        this.teacherRealName = teacherRealName;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentRealName() {
+        return studentRealName;
+    }
+
+    public void setStudentRealName(String studentRealName) {
+        this.studentRealName = studentRealName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    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 Integer getStudentInSign() {
+        return studentInSign;
+    }
+
+    public void setStudentInSign(Integer studentInSign) {
+        this.studentInSign = studentInSign;
+    }
+
+    public Integer getStudentOutSign() {
+        return studentOutSign;
+    }
+
+    public void setStudentOutSign(Integer studentOutSign) {
+        this.studentOutSign = studentOutSign;
+    }
+
+    public String getSalaryStatus() {
+        return salaryStatus;
+    }
+
+    public void setSalaryStatus(String salaryStatus) {
+        this.salaryStatus = salaryStatus;
+    }
+}

+ 123 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoVo.java

@@ -0,0 +1,123 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: cy
+ * @Date: 2022/6/15
+ */
+@ApiModel
+public class CourseGroupPianoVo extends BaseEntity {
+    @ApiModelProperty("课程组id")
+    private Long courseGroupId;
+    @ApiModelProperty("课程组名称")
+    private String courseGroupName;
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+    @ApiModelProperty("课时总数")
+    private Integer courseNum;
+    @ApiModelProperty("已完成课时数")
+    private Integer completeCount;
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+    @ApiModelProperty("课程组状态 ING进行中 COMPLETE已完成")
+    private String status;
+    @ApiModelProperty("第一节课开始时间")
+    private String startTime;
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public String getCourseGroupName() {
+        return courseGroupName;
+    }
+
+    public void setCourseGroupName(String courseGroupName) {
+        this.courseGroupName = courseGroupName;
+    }
+
+    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 Integer getCompleteCount() {
+        return completeCount;
+    }
+
+    public void setCompleteCount(Integer completeCount) {
+        this.completeCount = completeCount;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRealName() {
+        return teacherRealName;
+    }
+
+    public void setTeacherRealName(String teacherRealName) {
+        this.teacherRealName = teacherRealName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.toolset.payment.base.enums.OpenEnum;
 import com.yonge.toolset.payment.base.enums.PayChannelEnum;
 import io.swagger.annotations.ApiModel;
@@ -21,6 +22,8 @@ public class UserOrderVo extends UserOrder {
 	private List<UserOrderDetailVo> orderDetailList;
 	@ApiModelProperty("服务提供方: ORIGINAL 微信支付宝 ADAPAY 汇付")
 	private OpenEnum openType;
+	@ApiModelProperty("支付客户端: STUDENT 学生端 TEACHER 老师端")
+	private String paymentClient;
 	@ApiModelProperty("支付渠道:  alipay 支付宝  wx_lite 微信 ")
 	private PayChannelEnum payChannel;
 	@ApiModelProperty("三方交易流水号 ")
@@ -97,4 +100,12 @@ public class UserOrderVo extends UserOrder {
 	public void setPaymentNo(String paymentNo) {
 		this.paymentNo = paymentNo;
 	}
+
+	public String getPaymentClient() {
+		return paymentClient;
+	}
+
+	public void setPaymentClient(String paymentClient) {
+		this.paymentClient = paymentClient;
+	}
 }

+ 20 - 10
cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml

@@ -94,20 +94,28 @@
 
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="BaseResultMap" parameterType="map">
-		SELECT * FROM contract_template ORDER BY id_
+		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_
+		<where>
+			tct.type_ = 'PLATFORM'
+			<if test="status != null">
+				and tct.status_ = #{status}
+			</if>
+			<if test="type != null">
+				and tct.type_ = #{type}
+			</if>
+			<if test="owner != null">
+				and tct.owner_ = #{owner}
+			</if>
+		</where>
+		ORDER BY id_
 		<include refid="global.limit" />
 	</select>
 
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM contract_template
-	</select>
-
 	<!-- 分页查询 -->
-	<select id="queryPageList" resultMap="ContractTemplateDto"
-		parameterType="map">
-		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_ 
+	<select id="queryPageList" resultMap="ContractTemplateDto" parameterType="map">
+		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_
 		<where>
+			tct.type_ = 'PLATFORM'
 			<if test="status != null">
 				and tct.status_ = #{status}
 			</if>
@@ -122,10 +130,12 @@
 		<include refid="global.limit" />
 	</select>
 
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(tct.id_) FROM contract_template tct
 		<where>
+			tct.type_ = 'PLATFORM'
 			<if test="status != null">
 				and tct.status_ = #{status}
 			</if>
@@ -137,7 +147,7 @@
 			</if>
 		</where>
 	</select>
-	
+
 	<select id="queryLatestContractTemplate" resultMap="BaseResultMap" parameterType="map">
 		SELECT a.* FROM (
 			select

+ 38 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -646,7 +646,6 @@
         LEFT JOIN `subject` s ON g.subject_id_=s.id_
         WHERE g.id_ =#{groupId}
     </select>
-
     <update id="opsPreStudentNum">
         update course_group
         set
@@ -661,4 +660,42 @@
             #{item}
         </foreach>
     </update>
+    <select id="selectPianoGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
+        SELECT
+        cg.id_ AS courseGroupId,
+        cg.name_ AS courseGroupName,
+        cg.subject_id_ AS subjectId,
+        sb.name_ AS subjectName,
+        cg.teacher_id_ AS teacherId,
+        su.username_ AS teacherName,
+        su.real_name_ AS teacherRealName,
+        cg.course_num_ AS courseNum,
+        cg.status_ AS `status`,
+        IFNULL(cm.count_,0) AS completeCount,
+        st.start_time_ AS startTime
+        FROM course_group cg
+        LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
+        LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
+        LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON cg.id_=cm.course_group_id_
+        LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='PIANO_ROOM_CLASS' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
+        WHERE cg.type_='PIANO_ROOM_CLASS'
+        <if test="param.search != null and param.search != ''">
+            AND (
+            cg.id_ LIKE concat('%',#{param.search},'%') OR
+            cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
+            cg.name_ LIKE concat('%',#{param.search},'%') OR
+            su.username_ LIKE concat('%',#{param.search},'%')
+            )
+        </if>
+        <if test="param.subjectId != null">
+            AND cg.subject_id_ = #{param.subjectId}
+        </if>
+        <if test="param.status != null and param.status != ''">
+            AND cg.status_ = #{param.status}
+        </if>
+    </select>
+    <select id="selectPianoGroupDetail"
+            resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
+
+    </select>
 </mapper>

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

@@ -140,4 +140,15 @@
         SELECT * FROM subject WHERE del_flag_ = 0 and name_ = #{name}
     </select>
 
+    <select id="useSubject" resultType="java.lang.Boolean">
+        select
+            case when (
+                select count(1) from teacher a where find_in_set(t.id_,a.subject_id_)
+            )> 0 then 1 when (
+                select count(1) from student a where find_in_set(t.id_,a.subject_id_)
+            )> 0 then 1 else 0 end
+        from `subject` t
+        where  t.id_ = #{id}
+    </select>
+
 </mapper>

+ 3 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml

@@ -40,7 +40,7 @@
     <select id="selectPage" resultType = "com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         SELECT
             <include refid="baseColumns"/>,
-            u.real_name_ as realName,
+            ifnull(u.real_name_,u.username_) as realName,
             u.id_card_no_ as idCardNo,
             u.phone_ as phone,
             u.gender_ as gender,
@@ -78,7 +78,7 @@
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         select
         	<include refid="baseColumns"/>,
-			u.real_name_ as realName,
+            ifnull(u.real_name_,u.username_) as realName,
 			u.id_card_no_ as idCardNo,
 			u.phone_ as phone,
 			u.gender_ as gender,
@@ -95,7 +95,7 @@
     <select id="getLastRecordByUserId" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo">
         select
             <include refid="baseColumns"/>,
-            u.real_name_ as realName,
+            ifnull(u.real_name_,u.username_) as realName,
             u.id_card_no_ as idCardNo,
             u.gender_ as gender,
             (

+ 4 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml

@@ -25,7 +25,7 @@
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
         select
             <include refid="baseColumns"/>,
-            u.real_name_ as realName,
+            ifnull(u.real_name_,u.username_) as realName,
             u.id_card_no_ as idCardNo,
             (
                 SELECT u.username_ FROM sys_user u WHERE u.id_ = t.verify_user_id_
@@ -37,9 +37,9 @@
             , te.grad_certificate_ as "gradCertificate"
             , te.degree_certificate_ as "degreeCertificate"
             , te.teacher_certificate_ as "teacherCertificate"
-        from teacher_auth_entry_record t
+        from teacher_auth_musician_record t
+        left join teacher_auth_entry_record te on t.user_id_ = te.user_id_ and te.teacher_auth_status_ in ('DOING','PASS')
         left join sys_user u on t.user_id_ = u.id_
-        left join teacher te on  t.user_id_ = te.user_id_
         where t.id_ = #{id}
     </select>
 
@@ -47,7 +47,7 @@
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
         SELECT
             <include refid="baseColumns"/>,
-            u.real_name_ as realName,
+            ifnull(u.real_name_,u.username_) as realName,
             u.id_card_no_ as idCardNo,
             u.phone_ as phone,
             v.username_ as verifyUser

+ 5 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml

@@ -46,6 +46,7 @@
         SELECT
             <include refid="baseColumns"/>,
             p.open_type_ as openType,
+            p.payment_client_ as paymentClient,
             p.pay_channel_ as payChannel,
             p.trans_no_ as transNo,
             p.payment_no_ as paymentNo,
@@ -61,6 +62,7 @@
         SELECT
             <include refid="baseColumns"/>,
             p.open_type_ as openType,
+            p.payment_client_ as paymentClient,
             p.pay_channel_ as payChannel,
             p.trans_no_ as transNo,
             p.payment_no_ as paymentNo,
@@ -80,6 +82,7 @@
         SELECT
             <include refid="baseColumns"/>,
             p.open_type_ as openType,
+            p.payment_client_ as paymentClient,
             p.pay_channel_ as payChannel,
             p.trans_no_ as transNo,
             p.payment_no_ as paymentNo
@@ -98,6 +101,7 @@
         SELECT
             <include refid="baseColumns"/>,
             p.open_type_ as openType,
+            p.payment_client_ as paymentClient,
             p.pay_channel_ as payChannel,
             p.trans_no_ as transNo,
             p.payment_no_ as paymentNo,
@@ -176,6 +180,7 @@
         SELECT
             <include refid="baseColumns"/>,
             p.open_type_ as openType,
+            p.payment_client_ as paymentClient,
             p.pay_channel_ as payChannel,
             p.trans_no_ as transNo,
             p.payment_no_ as paymentNo

+ 0 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/StudentApplication.java

@@ -4,7 +4,6 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.toolset.base.BaseApplication;
 import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;

+ 0 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TeacherController.java

@@ -96,7 +96,6 @@ public class TeacherController extends BaseController {
         return studentStarService.starOrUnStar(user.getId(), userId, starStatus);
     }
 
-
     @ApiOperation(value = "增加视频浏览量")
     @GetMapping("/addVideoBrowse")
     public HttpResponseResult<Boolean> addVideoBrowse(@ApiParam(value = "视频ID", required = true) @RequestParam("videoId") Long videoId) {

+ 1 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -162,6 +162,7 @@ public class TeacherCourseScheduleController extends BaseController {
 //        courseScheduleService.scheduleTask();
 //        return succeed(courseScheduleService.getTeacherId(amount));
 //        courseScheduleService.scheduleTask();
+        courseScheduleService.teacherSalaryTask();
         return succeed();
     }
 

+ 4 - 0
cooleshow-user/user-website/pom.xml

@@ -73,6 +73,10 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
 </project>

+ 20 - 3
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/StudentController.java

@@ -5,7 +5,9 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.Student;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
+import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MyFollow;
 import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
@@ -30,6 +32,8 @@ public class StudentController extends BaseController {
     @Autowired
     private StudentService studentService;
     @Autowired
+    private StudentStarService studentStarService;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "查询学员")
@@ -88,8 +92,21 @@ public class StudentController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
     }
 
-
-
-
+    @ApiOperation(value = "关注/取消关注")
+    @GetMapping("/starOrUnStar")
+    public HttpResponseResult<Boolean> starOrUnStar(@ApiParam(value = "老师ID", required = true) @RequestParam("userId") Long userId,
+                                                    @ApiParam(value = "状态 0 取消关注 1 关注", required = true) @RequestParam("starStatus") YesOrNoEnum starStatus) {
+        if (null == userId) {
+            return failed("缺少老师ID");
+        }
+        if (null == starStatus) {
+            return failed("缺少关注状态");
+        }
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return studentStarService.starOrUnStar(user.getId(), userId, starStatus);
+    }
 
 }

+ 38 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/SubjectController.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.website.controller;
+
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RequestMapping("subject")
+@Api(tags = "声部服务")
+@RestController
+public class SubjectController extends BaseController {
+    @Autowired
+    private SubjectService subjectService;
+
+    @ApiOperation(value = "根据声部编号查询声部")
+    @GetMapping("/get/{id}")
+    public Object get(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
+        return succeed(subjectService.get(id));
+    }
+
+    @ApiOperation(value = "获取声部")
+    @GetMapping("/subjectSelect")
+    public HttpResponseResult<List<Subject>> subjectSelect() {
+        List<Subject> subjectSelect = subjectService.subjectSelect();
+        return succeed(subjectSelect);
+    }
+
+}

+ 0 - 9
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/WebSiteController.java

@@ -46,13 +46,4 @@ public class WebSiteController extends BaseController {
         }
     }
 
-    @ApiOperation(value = "开通直播")
-    @GetMapping("/openLive")
-    public HttpResponseResult<Boolean> openLive() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return teacherService.openLive(user.getId());
-    }
 }