Selaa lähdekoodia

Merge remote-tracking branch 'origin/dev_1_3_2_20220815' into dev_1_3_2_20220815

liweifan 3 vuotta sitten
vanhempi
commit
a4841b95b6
33 muutettua tiedostoa jossa 989 lisäystä ja 60 poistoa
  1. 14 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java
  2. 24 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/HomeDao.java
  3. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java
  4. 39 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/SubjectHomeSearch.java
  5. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  6. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherMusicSheetSearch.java
  7. 28 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  8. 30 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/StudentTime.java
  9. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java
  10. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccompanimentTypeEnum.java
  11. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/HomeService.java
  12. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PianoRoomChangeRecordService.java
  13. 19 18
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  14. 74 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/HomeServiceImpl.java
  15. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicTagServiceImpl.java
  16. 38 28
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PianoRoomChangeRecordServiceImpl.java
  17. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentTimeServiceImpl.java
  18. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  19. 6 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java
  20. 47 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicTagVo.java
  21. 12 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentMusicSheetOrderVo.java
  22. 150 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/SubjectHomeVo.java
  23. 40 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TagTotalTeacher.java
  24. 23 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetVo.java
  25. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeTotalStudent.java
  26. 55 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeTotalTeacher.java
  27. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  28. 207 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml
  29. 14 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  30. 5 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml
  31. 4 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentTimeMapper.xml
  32. 6 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  33. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderMapper.xml

+ 14 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java

@@ -1,21 +1,27 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.service.HomeService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.HomeMusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Map;
 
 @RestController
@@ -68,4 +74,12 @@ public class HomeController extends BaseController {
         return succeed(homeService.queryCourseHomeData(param));
     }
 
+
+
+    @ApiOperation(value = "获取首页- 内容数据-声部数据")
+    @PostMapping("/subjectHome")
+    // @PreAuthorize("@pcs.hasPermissions('home/courseHome')")
+    public HttpResponseResult<PageInfo<SubjectHomeVo>> subjectHome(@RequestBody SubjectHomeSearch query) {
+        return succeed(homeService.subjectHome(PageUtil.getPage(query),query));
+    }
 }

+ 24 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/HomeDao.java

@@ -1,6 +1,10 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
+import com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo;
+import com.yonge.cooleshow.biz.dal.vo.TagTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
@@ -31,6 +35,7 @@ public interface HomeDao {
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher>
      */
     List<HomeTotalTeacher> totalTeacher(@Param("timeType") String timeType, @Param("param") TotalReq param);
+
     /***
      * 统计查询学生信息
      * @author liweifan
@@ -40,4 +45,23 @@ public interface HomeDao {
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent>
      */
     List<HomeTotalStudent> totalStudent(@Param("timeType") String timeType, @Param("param") TotalReq param);
+
+    /**
+     * 点亮图标统计
+     *
+     * @param timeType
+     * @param query
+     * @return
+     */
+    List<TagTotalTeacher> tagTeacher(@Param("timeType") String timeType, @Param("param") TotalReq query);
+
+
+    /**
+     * 内容数据 声部列表
+     *
+     * @param page
+     * @param query
+     * @return
+     */
+    IPage<SubjectHomeVo> selectSubjectHome(@Param("page") IPage<SubjectHomeVo> page, @Param("query") SubjectHomeSearch query);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java

@@ -44,7 +44,7 @@ public class MusicSheetExport {
     private String musicSubjects;  //曲谱声部(适用的乐器,可能是多个,用逗号分隔)
 
     @ExcelProperty(value = "音乐人")
-    private String composer;  //作曲人
+    private String composer;  //音乐家
 
     @ExcelProperty(value = "指法是否展示",converter = YesOrNoConverter.class)
     @ApiModelProperty(value = "是否展示指法(0:否;1:是)")

+ 39 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/SubjectHomeSearch.java

@@ -0,0 +1,39 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-08-16
+ */
+@ApiModel("内容数据-声部查询")
+public class SubjectHomeSearch extends QueryInfo {
+
+    @ApiModelProperty("排序类型 MUSIC:乐谱 PLATFORM_MUSIC:平台乐谱 TEACHER_MUSIC:老师乐谱 PRACTICE :陪练课 PIANO:琴房课  LIVE:直播课  VIDEO:视频课 ")
+    private String sortType;
+
+    @ApiModelProperty("desc:倒序 asc:正序")
+    private String order;
+
+    public String getSortType() {
+        return sortType;
+    }
+
+    public void setSortType(String sortType) {
+        this.sortType = sortType;
+    }
+
+    @Override
+    public String getOrder() {
+        return order;
+    }
+
+    @Override
+    public void setOrder(String order) {
+        this.order = order;
+    }
+}

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.AccompanimentTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
@@ -67,6 +68,17 @@ public class MusicSheetSearch  extends QueryInfo{
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
 
+    @ApiModelProperty(value = "伴奏类型 HOMEMODE:自制伴奏  COMMON:普通伴奏")
+    private AccompanimentTypeEnum accompanimentType;
+
+    public AccompanimentTypeEnum getAccompanimentType() {
+        return accompanimentType;
+    }
+
+    public void setAccompanimentType(AccompanimentTypeEnum accompanimentType) {
+        this.accompanimentType = accompanimentType;
+    }
+
     public YesOrNoEnum getAuditVersion() {
         return auditVersion;
     }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherMusicSheetSearch.java

@@ -22,7 +22,7 @@ public class TeacherMusicSheetSearch extends QueryInfo{
     @NotNull(message = "老师ID不为空")
     private Long teacherId;
 
-    @ApiModelProperty("乐谱编号/名称/作曲人")
+    @ApiModelProperty("乐谱编号/名称/音乐家")
     private String idAndName;
 
     @ApiModelProperty(value = "上传开始时间")

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

@@ -34,6 +34,12 @@ public class MusicSheet implements Serializable {
     @ApiModelProperty(value = "曲谱名称")
     private String musicSheetName;  //曲谱名称
 
+
+	@NotBlank(message = "曲谱封面图不能为空!")
+	@TableField("title_img_")
+	@ApiModelProperty(value = "封面图")
+	private String titleImg;  //曲谱名称
+
     @TableField("user_id_")
     @ApiModelProperty(value = "曲谱来源(平台用户ID或者是老师ID)")
     private Long userId;  //曲谱来源(平台用户ID或者是老师ID)
@@ -50,7 +56,7 @@ public class MusicSheet implements Serializable {
     @Size(max = 32, message = "音乐人长度不能超过32位!")
     @TableField("composer_")
     @ApiModelProperty(value = "音乐人")
-    private String composer;  //作曲人
+    private String composer;  //音乐家
 
     @TableField("music_subject_")
     @ApiModelProperty(value = "曲谱声部(适用的乐器,可能是多个,用逗号分隔)")
@@ -70,6 +76,11 @@ public class MusicSheet implements Serializable {
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
     private String musicTag;  //曲谱标签(多个标签用逗号分隔)
 
+	@NotNull(message = "伴奏类型不能为空!")
+	@TableField("accompaniment_type_")
+	@ApiModelProperty(value = "伴奏类型 HOMEMODE:自制伴奏  COMMON:普通伴奏")
+	private AccompanimentTypeEnum accompanimentType;
+
     @TableField("play_speed_")
 	// @NotNull(message = "默认播放速度不能为空!")
     @ApiModelProperty(value = "默认播放速度")
@@ -183,6 +194,22 @@ public class MusicSheet implements Serializable {
 	@ApiModelProperty(value = "假删除标识 0:未删除 1:已删除")
 	private Boolean delFlag;
 
+	public AccompanimentTypeEnum getAccompanimentType() {
+		return accompanimentType;
+	}
+
+	public void setAccompanimentType(AccompanimentTypeEnum accompanimentType) {
+		this.accompanimentType = accompanimentType;
+	}
+
+	public String getTitleImg() {
+		return titleImg;
+	}
+
+	public void setTitleImg(String titleImg) {
+		this.titleImg = titleImg;
+	}
+
 	public String getReason() {
 		return reason;
 	}

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

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -52,6 +51,36 @@ public class StudentTime implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date firstMallTime;
 
+    @ApiModelProperty("第一次购买时间 ")
+    @TableField(value = "first_pay_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date firstPayTime;
+
+
+
+    @ApiModelProperty("第一次活动购买时间 ")
+    @TableField(value = "first_activity_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date firstActivityTime;
+
+    public Date getFirstActivityTime() {
+        return firstActivityTime;
+    }
+
+    public void setFirstActivityTime(Date firstActivityTime) {
+        this.firstActivityTime = firstActivityTime;
+    }
+
+    public Date getFirstPayTime() {
+        return firstPayTime;
+    }
+
+    public void setFirstPayTime(Date firstPayTime) {
+        this.firstPayTime = firstPayTime;
+    }
+
     public Long getUserId() {
         return userId;
     }

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/Teacher.java

@@ -131,6 +131,24 @@ public class Teacher implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date liveDate;
 
+    @ApiModelProperty("曲目点亮时间 ")
+    @TableField(value = "music_date_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date musicDate;
+
+    @ApiModelProperty("视频课图标点亮时间 ")
+    @TableField(value = "video_date_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date videoDate;
+
+    @ApiModelProperty("个人风采图标点亮时间 ")
+    @TableField(value = "style_date_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date styleDate;
+
     /**
      * 会员等级
      */
@@ -169,6 +187,31 @@ public class Teacher implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date updateTime;
 
+
+    public Date getMusicDate() {
+        return musicDate;
+    }
+
+    public void setMusicDate(Date musicDate) {
+        this.musicDate = musicDate;
+    }
+
+    public Date getVideoDate() {
+        return videoDate;
+    }
+
+    public void setVideoDate(Date videoDate) {
+        this.videoDate = videoDate;
+    }
+
+    public Date getStyleDate() {
+        return styleDate;
+    }
+
+    public void setStyleDate(Date styleDate) {
+        this.styleDate = styleDate;
+    }
+
     public String getTag() {
         return tag;
     }

+ 35 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccompanimentTypeEnum.java

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+/**
+ * Description 曲目音频类型 1:mp3,2:midi,3:mp3_metronome
+ *
+ * @author liujunchi
+ * @date 2022-04-01
+ */
+public enum AccompanimentTypeEnum implements BaseEnum<String, AccompanimentTypeEnum> {
+
+
+    HOMEMODE("HOMEMODE"), // 自制
+    COMMON("COMMON"), //普通
+     ;
+    @EnumValue
+    private String code;
+    private String msg;
+
+    AccompanimentTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/HomeService.java

@@ -1,11 +1,15 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeVo;
+import com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
 
 import java.util.Map;
 
@@ -49,4 +53,11 @@ public interface HomeService {
      *              <p> - timeType 时间类型 MONTH、月度 YEAR
      */
     CourseHomeVo queryCourseHomeData(Map<String, Object> param);
+
+    /**
+     * 内容数据 声部列表
+     *
+     * @return
+     */
+    PageInfo<SubjectHomeVo> subjectHome(IPage<SubjectHomeVo> page, SubjectHomeSearch query);
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PianoRoomChangeRecordService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.vo.PianoRoomChangeRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.PianoRoomChangeRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PianoRoomChangeRecord;
@@ -28,4 +29,13 @@ public interface PianoRoomChangeRecordService extends IService<PianoRoomChangeRe
     IPage<PianoRoomChangeRecordVo> selectPage(IPage<PianoRoomChangeRecordVo> page, PianoRoomChangeRecordSearch query);
 
 	boolean add(PianoRoomChangeRecord pianoRoomChangeRecord);
+
+	/**
+	 * 增/减老师琴房课时长
+	 *
+	 * @param userId 老师id
+	 * @param times 时长
+	 * @param inOrOut 增/减
+	 */
+	void setPianoRoomTime(Long userId, Integer times, InOrOutEnum inOrOut);
 }

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

@@ -897,25 +897,26 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                     teacherInfo.getUsername(), courseGroup.getName(), smsLiveBuyUrl);
             log.info("buyLiveCourseSuccess buyLiveSendMessage SMS_BUY_LIVE ok");
 
-            //极光-消息推送-老师端-通知老师有学生购买课程-跳转到APP
-            MessageTypeEnum studentBuyLive = MessageTypeEnum.STUDENT_BUY_LIVE;
-            //查询推送跳转的url
-            String studentBuyLiveUrl = sysMessageService.selectConfigUrl(studentBuyLive.getCode(), courseGroup.getId());
-            Map<Long, String> teacherReceivers = new HashMap<>();
-            teacherReceivers.put(teacherInfo.getId(), teacherInfo.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, studentBuyLive,
-                    teacherReceivers, null, 0, studentBuyLiveUrl, ClientEnum.TEACHER.getCode(),
-                    studentInfo.getUsername(), courseGroup.getName());
-            log.info("buyLiveCourseSuccess buyLiveSendMessage STUDENT_BUY_LIVE ok");
-
-            //短信-消息推送-老师端-通知老师有学生购买课程-无需跳转到APP
-            Map<Long, String> smsTeacherReceivers = new HashMap<>();
-            smsTeacherReceivers.put(teacherInfo.getId(), teacherInfo.getPhone());
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_BUY_LIVE,
-                    smsTeacherReceivers, null, 0, null, null,
-                    studentInfo.getUsername(), courseGroup.getName());
-            log.info("buyLiveCourseSuccess buyLiveSendMessage SMS_BUY_LIVE ok");
+            if (studentPayment.getActualPrice().compareTo(BigDecimal.ZERO) >0) {
+                //极光-消息推送-老师端-通知老师有学生购买课程-跳转到APP
+                MessageTypeEnum studentBuyLive = MessageTypeEnum.STUDENT_BUY_LIVE;
+                //查询推送跳转的url
+                String studentBuyLiveUrl = sysMessageService.selectConfigUrl(studentBuyLive.getCode(), courseGroup.getId());
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(teacherInfo.getId(), teacherInfo.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, studentBuyLive,
+                                                   teacherReceivers, null, 0, studentBuyLiveUrl, ClientEnum.TEACHER.getCode(),
+                                                   studentInfo.getUsername(), courseGroup.getName());
+                log.info("buyLiveCourseSuccess buyLiveSendMessage STUDENT_BUY_LIVE ok");
+
+                //短信-消息推送-老师端-通知老师有学生购买课程-无需跳转到APP
+                Map<Long, String> smsTeacherReceivers = new HashMap<>();
+                smsTeacherReceivers.put(teacherInfo.getId(), teacherInfo.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_BUY_LIVE,
+                                                   smsTeacherReceivers, null, 0, null, null, studentInfo.getUsername(), courseGroup.getName());
+                log.info("buyLiveCourseSuccess buyLiveSendMessage SMS_BUY_LIVE ok");
 
+            }
             //判断是否到达最低成课人数
             if (Objects.equals(courseGroup.getPreStudentNum(), courseGroup.getMixStudentNum())) {
                 //极光-消息推送-老师端-通知老师课程最小开课人数已达标

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

@@ -1,17 +1,24 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.HomeDao;
+import com.yonge.cooleshow.biz.dal.dto.SubjectHomeSearch;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.service.HomeService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeVo;
+import com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo;
+import com.yonge.cooleshow.biz.dal.vo.TagTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
 import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,26 +55,84 @@ public class HomeServiceImpl implements HomeService {
     public HttpResponseResult<HomeTotalTeacher> totalTeacher(TotalReq query) {
         //统计查询
         List<HomeTotalTeacher> totalList = baserMapper.totalTeacher(query.getTimeType().getCode(), query);
+
+        // 点亮图标
+        List<TagTotalTeacher> tagList = baserMapper.tagTeacher(query.getTimeType().getCode(), query);
+
+        Map<String, Map<String, List<TagTotalTeacher>>> tagTimeTypeGroup = tagList.stream()
+                                                                         .collect(Collectors.groupingBy(
+                                                                                 TagTotalTeacher::getTimeStr,
+                                                                                 Collectors.groupingBy(
+                                                                                         TagTotalTeacher::getTagType)));
+        Map<String, Map<Long, List<TagTotalTeacher>>> tagTimeUserGroup = tagList.stream()
+                                                                       .collect(Collectors.groupingBy(
+                                                                               TagTotalTeacher::getTimeStr,
+                                                                               Collectors.groupingBy(
+                                                                                       TagTotalTeacher::getUserId)));
+
         Integer registerNum = 0;
         Integer entryNum = 0;
         Integer liveNum = 0;
         Integer musicianNum = 0;
+        Integer tagNum  = 0 ;
+        Integer styleTagNum = 0;
+        Integer videoTagNum = 0;
+        Integer liveTagNum = 0;
+        Integer musicTagNum = 0;
         for (HomeTotalTeacher totalTeacher : totalList) {
             totalTeacher.setRegisterNum(null == totalTeacher.getRegisterNum() ? 0 : totalTeacher.getRegisterNum());
             totalTeacher.setEntryNum(null == totalTeacher.getEntryNum() ? 0 : totalTeacher.getEntryNum());
             totalTeacher.setLiveNum(null == totalTeacher.getLiveNum() ? 0 : totalTeacher.getLiveNum());
             totalTeacher.setMusicianNum(null == totalTeacher.getMusicianNum() ? 0 : totalTeacher.getMusicianNum());
 
+            Map<String, List<TagTotalTeacher>> typeGroup = tagTimeTypeGroup.get(totalTeacher.getTimeStr());
+            if (typeGroup != null) {
+                List<TagTotalTeacher> liveTagList = typeGroup.get(TeacherTagEnum.LIVE.getCode());
+                List<TagTotalTeacher> musicTagList = typeGroup.get(TeacherTagEnum.MUSIC.getCode());
+                List<TagTotalTeacher> styleTagList = typeGroup.get(TeacherTagEnum.STYLE.getCode());
+                List<TagTotalTeacher> videoTagList = typeGroup.get(TeacherTagEnum.VIDEO.getCode());
+                totalTeacher.setLiveTagNum(CollectionUtils.isEmpty(liveTagList) ? 0:liveTagList.size());
+                totalTeacher.setMusicTagNum(CollectionUtils.isEmpty(musicTagList) ? 0:musicTagList.size());
+                totalTeacher.setStyleTagNum(CollectionUtils.isEmpty(styleTagList) ? 0:styleTagList.size());
+                totalTeacher.setVideoTagNum(CollectionUtils.isEmpty(videoTagList) ? 0:videoTagList.size());
+            } else {
+                totalTeacher.setLiveTagNum(0);
+                totalTeacher.setMusicTagNum(0);
+                totalTeacher.setStyleTagNum(0);
+                totalTeacher.setVideoTagNum(0);
+            }
+
+
+            Map<Long, List<TagTotalTeacher>> userGroup = tagTimeUserGroup.get(totalTeacher.getTimeStr());
+
+            if (userGroup != null) {
+
+                totalTeacher.setTagNum(userGroup.size());
+            } else {
+                totalTeacher.setTagNum(0);
+            }
+
+
             registerNum += totalTeacher.getRegisterNum();
             entryNum += totalTeacher.getEntryNum();
             liveNum += totalTeacher.getLiveNum();
             musicianNum += totalTeacher.getMusicianNum();
+            tagNum += totalTeacher.getTagNum();
+            styleTagNum += totalTeacher.getStyleTagNum();
+            videoTagNum += totalTeacher.getVideoTagNum();
+            liveTagNum += totalTeacher.getLiveTagNum();
+            musicTagNum += totalTeacher.getMusicTagNum();
         }
         HomeTotalTeacher total = new HomeTotalTeacher();
         total.setRegisterNum(registerNum);
         total.setEntryNum(entryNum);
         total.setLiveNum(liveNum);
         total.setMusicianNum(musicianNum);
+        total.setTagNum(tagNum);
+        total.setStyleTagNum(styleTagNum);
+        total.setVideoTagNum(videoTagNum);
+        total.setLiveTagNum(liveTagNum);
+        total.setMusicTagNum(musicTagNum);
         total.setInfoList(totalList);
         return HttpResponseResult.succeed(total);
     }
@@ -82,6 +147,7 @@ public class HomeServiceImpl implements HomeService {
         Integer liveNum = 0;
         Integer musicNum = 0;
         Integer shoppingNum = 0;
+        Integer payStudentNum = 0;
 
         for (HomeTotalStudent totalStudent : totalList) {
             totalStudent.setRegisterNum(null == totalStudent.getRegisterNum() ? 0 : totalStudent.getRegisterNum());
@@ -91,6 +157,7 @@ public class HomeServiceImpl implements HomeService {
             totalStudent.setLiveNum(null == totalStudent.getLiveNum() ? 0 : totalStudent.getLiveNum());
             totalStudent.setMusicNum(null == totalStudent.getMusicNum() ? 0 : totalStudent.getMusicNum());
             totalStudent.setShoppingNum(null == totalStudent.getShoppingNum() ? 0 : totalStudent.getShoppingNum());
+            totalStudent.setPayStudentNum(null == totalStudent.getPayStudentNum() ? 0 : totalStudent.getPayStudentNum());
 
             registerNum += totalStudent.getRegisterNum();
             vipNum += totalStudent.getVipNum();
@@ -99,6 +166,7 @@ public class HomeServiceImpl implements HomeService {
             liveNum += totalStudent.getLiveNum();
             musicNum += totalStudent.getMusicNum();
             shoppingNum += totalStudent.getShoppingNum();
+            payStudentNum += totalStudent.getPayStudentNum();
         }
         HomeTotalStudent total = new HomeTotalStudent();
         total.setRegisterNum(registerNum);
@@ -108,6 +176,7 @@ public class HomeServiceImpl implements HomeService {
         total.setLiveNum(liveNum);
         total.setMusicNum(musicNum);
         total.setShoppingNum(shoppingNum);
+        total.setPayStudentNum(payStudentNum);
 
         total.setInfoList(totalList);
         return HttpResponseResult.succeed(total);
@@ -198,4 +267,9 @@ public class HomeServiceImpl implements HomeService {
         return result;
     }
 
+    @Override
+    public PageInfo<SubjectHomeVo> subjectHome(IPage<SubjectHomeVo> page, SubjectHomeSearch query) {
+        return PageUtil.pageInfo(baserMapper.selectSubjectHome(page,query));
+    }
+
 }

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

@@ -60,6 +60,12 @@ public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> impl
          musicTagVoIPage.getRecords()
                  .forEach(musicTagVo -> {
                      List<MusicTagVo> childrenList = musicTagMap.get(musicTagVo.getId().toString());
+                     childrenList.forEach(children -> {
+                         musicTagVo.setEnablePlatformMusicSheetNum(musicTagVo.getEnableTeacherMusicSheetNum() + children.getEnablePlatformMusicSheetNum());
+                         musicTagVo.setEnableTeacherMusicSheetNum(musicTagVo.getEnableTeacherMusicSheetNum() + children.getEnableTeacherMusicSheetNum());
+                         musicTagVo.setMusicPlatformSheetNum(musicTagVo.getMusicPlatformSheetNum() + children.getMusicPlatformSheetNum());
+                         musicTagVo.setMusicTeacherSheetNum(musicTagVo.getMusicTeacherSheetNum() + children.getMusicTeacherSheetNum());
+                     });
                      // 如果没有按名称/编号查询 或 父级标签包含了名称/编号 , 展示所有子集 标签列表子集收起
                      if (StringUtil.isBlank(query.getIdAndName())
                              || musicTagVo.getName().contains(query.getIdAndName())

+ 38 - 28
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PianoRoomChangeRecordServiceImpl.java

@@ -11,8 +11,6 @@ import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.PianoRoomTimeService;
 import com.yonge.cooleshow.biz.dal.service.SysMessageService;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonShelvesVo;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.payment.util.DistributedLock;
@@ -63,36 +61,48 @@ public class PianoRoomChangeRecordServiceImpl extends ServiceImpl<PianoRoomChang
         //保存记录
         save(pianoRoomChangeRecord);
         //入琴房账户
+        setPianoRoomTime(pianoRoomChangeRecord.getUserId(), pianoRoomChangeRecord.getTimes(), pianoRoomChangeRecord.getInOrOut());
+        //琴房推送
+        sendMessage(pianoRoomChangeRecord);
+        return true;
+    }
+
+    /**
+     * 增/减老师琴房课时长
+     *
+     * @param userId 老师id
+     * @param times 时长
+     * @param inOrOut 增/减
+     */
+    @Override
+    public void setPianoRoomTime(Long userId, Integer times, InOrOutEnum inOrOut) {
         DistributedLock.of(redissonClient)
-                .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_PIANO_ROOM_ACCOUNT.getRedisKey(pianoRoomChangeRecord.getUserId())
-                        , (o) -> {
-                            PianoRoomTime pianoRoomTime = pianoRoomTimeService.getOne(Wrappers.<PianoRoomTime>lambdaQuery()
-                                    .eq(PianoRoomTime::getTeacherId, pianoRoomChangeRecord.getUserId()));
+                       .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_PIANO_ROOM_ACCOUNT.getRedisKey(userId)
+                               , (o) -> {
+                                        PianoRoomTime pianoRoomTime = pianoRoomTimeService.getOne(Wrappers.<PianoRoomTime>lambdaQuery()
+                                                .eq(PianoRoomTime::getTeacherId, userId));
 
-                            if (null == pianoRoomTime) {
-                                pianoRoomTime = new PianoRoomTime();
-                                pianoRoomTime.setRemainTime(0);
-                                pianoRoomTime.setFrozenTime(0);
-                                pianoRoomTime.setTeacherId(pianoRoomChangeRecord.getUserId());
-                                pianoRoomTimeService.save(pianoRoomTime);
-                            }
+                                        if (null == pianoRoomTime) {
+                                            pianoRoomTime = new PianoRoomTime();
+                                            pianoRoomTime.setRemainTime(0);
+                                            pianoRoomTime.setFrozenTime(0);
+                                            pianoRoomTime.setTeacherId(userId);
+                                            pianoRoomTimeService.save(pianoRoomTime);
+                                        }
 
-                            if (InOrOutEnum.IN.equals(pianoRoomChangeRecord.getInOrOut())) {
-                                pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() + pianoRoomChangeRecord.getTimes());
-                            } else {
-                                pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() - pianoRoomChangeRecord.getTimes());
-                            }
+                                        if (InOrOutEnum.IN.equals(inOrOut)) {
+                                            pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() + times);
+                                        } else {
+                                            pianoRoomTime.setRemainTime(pianoRoomTime.getRemainTime() - times);
+                                        }
 
-                            if (pianoRoomTime.getRemainTime() < 0) {
-                                throw new BizException("扣除时长超过老师可用时长");
-                            }
-                            pianoRoomTime.setUpdateTime(new Date());
-                            pianoRoomTimeService.updateById(pianoRoomTime);
-                            return null;
-                        }, null, 10l);
-        //琴房推送
-        sendMessage(pianoRoomChangeRecord);
-        return true;
+                                        if (pianoRoomTime.getRemainTime() < 0) {
+                                            throw new BizException("扣除时长超过老师可用时长");
+                                        }
+                                        pianoRoomTime.setUpdateTime(new Date());
+                                        pianoRoomTimeService.updateById(pianoRoomTime);
+                                        return null;
+                               }, null, 10l);
     }
 
 

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

@@ -19,6 +19,7 @@ import com.yonge.cooleshow.biz.dal.dao.StudentTimeDao;
 import com.yonge.cooleshow.biz.dal.service.StudentTimeService;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -70,6 +71,9 @@ public class StudentTimeServiceImpl extends ServiceImpl<StudentTimeDao, StudentT
             List<UserOrderDetailVo> orderDetilListByOrderNo = orderDetailService.getOrderDetilListByOrderNo(userOrder.getOrderNo());
 
             for (UserOrderDetailVo detailVo : orderDetilListByOrderNo) {
+                if (detailVo.getActualPrice() != null && detailVo.getActualPrice().compareTo(BigDecimal.ZERO) > 0 && studentTime.getFirstPayTime() == null) {
+                    studentTime.setFirstPayTime(now);
+                }
                 if (null == studentTime.getFirstVipTime() && GoodTypeEnum.VIP.equals(detailVo.getGoodType())) {
                     studentTime.setFirstVipTime(now);
                 }
@@ -85,6 +89,9 @@ public class StudentTimeServiceImpl extends ServiceImpl<StudentTimeDao, StudentT
                 if (null == studentTime.getFirstMusicTime() && GoodTypeEnum.MUSIC.equals(detailVo.getGoodType())) {
                     studentTime.setFirstMusicTime(now);
                 }
+                if (null == studentTime.getFirstActivityTime() && GoodTypeEnum.ACTI_REGIST.equals(detailVo.getGoodType())) {
+                    studentTime.setFirstActivityTime(now);
+                }
             }
 
             StudentTime old = baseMapper.selectById(userOrder.getUserId());

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

@@ -475,13 +475,28 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         }
         if (StringUtil.isEmpty(teacherVo.getTag())) {
             teacherVo.setTag(teacherTagEnum.getCode());
+            setTagTime(teacherTagEnum, teacherVo);
         } else if (teacherVo.getTag().contains(teacherTagEnum.getCode())) {
             return;
         } else {
             teacherVo.setTag(teacherVo.getTag() + "," + teacherTagEnum.getCode());
+            setTagTime(teacherTagEnum, teacherVo);
         }
 
+
         this.updateById(teacherVo);
     }
 
+    private void setTagTime(TeacherTagEnum teacherTagEnum, TeacherVo teacherVo) {
+        if (teacherTagEnum.equals(TeacherTagEnum.LIVE)) {
+            teacherVo.setLiveDate(new Date());
+        } else if (teacherTagEnum.equals(TeacherTagEnum.MUSIC)) {
+            teacherVo.setLiveDate(new Date());
+        }else if (teacherTagEnum.equals(TeacherTagEnum.STYLE)) {
+            teacherVo.setLiveDate(new Date());
+        }else if (teacherTagEnum.equals(TeacherTagEnum.VIDEO)) {
+            teacherVo.setLiveDate(new Date());
+        }
+    }
+
 }

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

@@ -224,10 +224,12 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
 
         //老师端-学生购买视频课
         try {
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_BUY_VIDEO,
-                    teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),
-                    student.getUsername(), lesson.getLessonName());
-            log.info("send success {}", MessageTypeEnum.STUDENT_BUY_VIDEO);
+            if (lesson.getLessonPrice().compareTo(BigDecimal.ZERO) >0) {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_BUY_VIDEO,
+                                                   teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),
+                                                   student.getUsername(), lesson.getLessonName());
+                log.info("send success {}", MessageTypeEnum.STUDENT_BUY_VIDEO);
+            }
         } catch (Exception e) {
             log.error("send fail {}", MessageTypeEnum.STUDENT_BUY_VIDEO);
             e.printStackTrace();

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicTagVo.java

@@ -25,6 +25,53 @@ public class MusicTagVo extends MusicTag{
 	@ApiModelProperty("二级标签")
 	private List<MusicTagVo> children = new ArrayList<>();
 
+
+
+	@ApiModelProperty("平台乐谱启用数")
+	private Integer enablePlatformMusicSheetNum = 0;
+
+	@ApiModelProperty("平台乐谱数")
+	private Integer musicPlatformSheetNum= 0;
+
+
+	@ApiModelProperty("老师乐谱启用数")
+	private Integer enableTeacherMusicSheetNum= 0;
+
+	@ApiModelProperty("老师乐谱数")
+	private Integer musicTeacherSheetNum= 0;
+
+	public Integer getEnablePlatformMusicSheetNum() {
+		return enablePlatformMusicSheetNum;
+	}
+
+	public void setEnablePlatformMusicSheetNum(Integer enablePlatformMusicSheetNum) {
+		this.enablePlatformMusicSheetNum = enablePlatformMusicSheetNum;
+	}
+
+	public Integer getMusicPlatformSheetNum() {
+		return musicPlatformSheetNum;
+	}
+
+	public void setMusicPlatformSheetNum(Integer musicPlatformSheetNum) {
+		this.musicPlatformSheetNum = musicPlatformSheetNum;
+	}
+
+	public Integer getEnableTeacherMusicSheetNum() {
+		return enableTeacherMusicSheetNum;
+	}
+
+	public void setEnableTeacherMusicSheetNum(Integer enableTeacherMusicSheetNum) {
+		this.enableTeacherMusicSheetNum = enableTeacherMusicSheetNum;
+	}
+
+	public Integer getMusicTeacherSheetNum() {
+		return musicTeacherSheetNum;
+	}
+
+	public void setMusicTeacherSheetNum(Integer musicTeacherSheetNum) {
+		this.musicTeacherSheetNum = musicTeacherSheetNum;
+	}
+
 	public YesOrNoEnum getOpen() {
 		return open;
 	}

+ 12 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentMusicSheetOrderVo.java

@@ -19,8 +19,10 @@ public class StudentMusicSheetOrderVo {
     @ApiModelProperty(value = "曲谱名称")
     private String musicSheetName;  //曲谱名称
 
-    @ApiModelProperty(value = "作曲人")
-    private String composer;  //作曲人
+    @ApiModelProperty(value = "音乐家")
+    private String composer;  //音乐家
+    @ApiModelProperty(value = "封面图")
+    private String titleImg;  //曲谱名称
 
 
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
@@ -38,6 +40,14 @@ public class StudentMusicSheetOrderVo {
     @ApiModelProperty(value = "购买时间")
     private Date purchaseTime;
 
+    public String getTitleImg() {
+        return titleImg;
+    }
+
+    public void setTitleImg(String titleImg) {
+        this.titleImg = titleImg;
+    }
+
     public Long getMusicSheetId() {
         return musicSheetId;
     }

+ 150 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/SubjectHomeVo.java

@@ -0,0 +1,150 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-08-16
+ */
+@ApiModel("内容数据-声部")
+public class SubjectHomeVo {
+
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+
+    @ApiModelProperty("声部名")
+    private String subjectName;
+
+    @ApiModelProperty("乐谱启用数")
+    private Integer enableMusicSheetNum;
+
+    @ApiModelProperty("乐谱数")
+    private Integer musicSheetNum;
+
+
+    @ApiModelProperty("平台乐谱启用数")
+    private Integer enablePlatformMusicSheetNum;
+
+    @ApiModelProperty("平台乐谱数")
+    private Integer musicPlatformSheetNum;
+
+
+    @ApiModelProperty("老师乐谱启用数")
+    private Integer enableTeacherMusicSheetNum;
+
+    @ApiModelProperty("老师乐谱数")
+    private Integer musicTeacherSheetNum;
+
+
+    @ApiModelProperty("陪练课程组")
+    private Integer practiceNum;
+
+    @ApiModelProperty("琴房课课程组")
+    private Integer pianoClassNum;
+
+    @ApiModelProperty("直播课程组")
+    private Integer liveNum;
+
+    @ApiModelProperty("视频课课程组")
+    private Integer videoNum;
+
+
+    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 getEnableMusicSheetNum() {
+        return enableMusicSheetNum;
+    }
+
+    public void setEnableMusicSheetNum(Integer enableMusicSheetNum) {
+        this.enableMusicSheetNum = enableMusicSheetNum;
+    }
+
+    public Integer getMusicSheetNum() {
+        return musicSheetNum;
+    }
+
+    public void setMusicSheetNum(Integer musicSheetNum) {
+        this.musicSheetNum = musicSheetNum;
+    }
+
+    public Integer getEnablePlatformMusicSheetNum() {
+        return enablePlatformMusicSheetNum;
+    }
+
+    public void setEnablePlatformMusicSheetNum(Integer enablePlatformMusicSheetNum) {
+        this.enablePlatformMusicSheetNum = enablePlatformMusicSheetNum;
+    }
+
+    public Integer getMusicPlatformSheetNum() {
+        return musicPlatformSheetNum;
+    }
+
+    public void setMusicPlatformSheetNum(Integer musicPlatformSheetNum) {
+        this.musicPlatformSheetNum = musicPlatformSheetNum;
+    }
+
+    public Integer getEnableTeacherMusicSheetNum() {
+        return enableTeacherMusicSheetNum;
+    }
+
+    public void setEnableTeacherMusicSheetNum(Integer enableTeacherMusicSheetNum) {
+        this.enableTeacherMusicSheetNum = enableTeacherMusicSheetNum;
+    }
+
+    public Integer getMusicTeacherSheetNum() {
+        return musicTeacherSheetNum;
+    }
+
+    public void setMusicTeacherSheetNum(Integer musicTeacherSheetNum) {
+        this.musicTeacherSheetNum = musicTeacherSheetNum;
+    }
+
+    public Integer getPracticeNum() {
+        return practiceNum;
+    }
+
+    public void setPracticeNum(Integer practiceNum) {
+        this.practiceNum = practiceNum;
+    }
+
+    public Integer getPianoClassNum() {
+        return pianoClassNum;
+    }
+
+    public void setPianoClassNum(Integer pianoClassNum) {
+        this.pianoClassNum = pianoClassNum;
+    }
+
+    public Integer getLiveNum() {
+        return liveNum;
+    }
+
+    public void setLiveNum(Integer liveNum) {
+        this.liveNum = liveNum;
+    }
+
+    public Integer getVideoNum() {
+        return videoNum;
+    }
+
+    public void setVideoNum(Integer videoNum) {
+        this.videoNum = videoNum;
+    }
+}

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TagTotalTeacher.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-08-16
+ */
+public class TagTotalTeacher {
+
+    private String timeStr;
+
+    private Long userId;
+
+    private String tagType;
+
+    public String getTimeStr() {
+        return timeStr;
+    }
+
+    public void setTimeStr(String timeStr) {
+        this.timeStr = timeStr;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getTagType() {
+        return tagType;
+    }
+
+    public void setTagType(String tagType) {
+        this.tagType = tagType;
+    }
+}

+ 23 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetVo.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.yonge.cooleshow.biz.dal.enums.AccompanimentTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,9 +33,14 @@ public class TeacherMusicSheetVo {
     @ApiModelProperty("曲谱名称")
     private String musicSheetName;
 
-    @ApiModelProperty(value = "作曲人")
-    private String composer;  //作曲人
+    @ApiModelProperty(value = "封面图")
+    private String titleImg;  //曲谱名称
 
+    @ApiModelProperty(value = "音乐家")
+    private String composer;  //音乐家
+
+    @ApiModelProperty(value = "伴奏类型 HOMEMODE:自制伴奏  COMMON:普通伴奏")
+    private AccompanimentTypeEnum accompanimentType;
 
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
     private String musicTag;  //曲谱标签(多个标签用逗号分隔)
@@ -57,6 +63,21 @@ public class TeacherMusicSheetVo {
     @ApiModelProperty("审批人姓名")
     private String auditName;
 
+    public AccompanimentTypeEnum getAccompanimentType() {
+        return accompanimentType;
+    }
+
+    public void setAccompanimentType(AccompanimentTypeEnum accompanimentType) {
+        this.accompanimentType = accompanimentType;
+    }
+
+    public String getTitleImg() {
+        return titleImg;
+    }
+
+    public void setTitleImg(String titleImg) {
+        this.titleImg = titleImg;
+    }
 
     public Long getTeacherId() {
         return teacherId;

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

@@ -30,6 +30,17 @@ public class HomeTotalStudent {
     @ApiModelProperty("详情数据 ")
     private List<HomeTotalStudent> infoList;
 
+    @ApiModelProperty("付费学员数")
+    private Integer payStudentNum;
+
+    public Integer getPayStudentNum() {
+        return payStudentNum;
+    }
+
+    public void setPayStudentNum(Integer payStudentNum) {
+        this.payStudentNum = payStudentNum;
+    }
+
     public Integer getRegisterNum() {
         return registerNum;
     }

+ 55 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeTotalTeacher.java

@@ -24,6 +24,61 @@ public class HomeTotalTeacher {
     @ApiModelProperty("详情数据 ")
     private List<HomeTotalTeacher> infoList;
 
+    @ApiModelProperty("点亮徽章")
+    private Integer tagNum;
+
+    @ApiModelProperty("个人风采人数")
+    private Integer styleTagNum;
+
+    @ApiModelProperty("视频课人数")
+    private Integer videoTagNum;
+
+    @ApiModelProperty("直播课人数")
+    private Integer liveTagNum;
+
+    @ApiModelProperty("曲目人数")
+    private Integer musicTagNum;
+
+    public Integer getStyleTagNum() {
+        return styleTagNum;
+    }
+
+    public void setStyleTagNum(Integer styleTagNum) {
+        this.styleTagNum = styleTagNum;
+    }
+
+    public Integer getVideoTagNum() {
+        return videoTagNum;
+    }
+
+    public void setVideoTagNum(Integer videoTagNum) {
+        this.videoTagNum = videoTagNum;
+    }
+
+    public Integer getLiveTagNum() {
+        return liveTagNum;
+    }
+
+    public void setLiveTagNum(Integer liveTagNum) {
+        this.liveTagNum = liveTagNum;
+    }
+
+    public Integer getMusicTagNum() {
+        return musicTagNum;
+    }
+
+    public void setMusicTagNum(Integer musicTagNum) {
+        this.musicTagNum = musicTagNum;
+    }
+
+    public Integer getTagNum() {
+        return tagNum;
+    }
+
+    public void setTagNum(Integer tagNum) {
+        this.tagNum = tagNum;
+    }
+
     public Integer getRegisterNum() {
         return registerNum;
     }

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

@@ -155,6 +155,7 @@
         from course_schedule as a
         left join course_group as b on a.course_group_id_ = b.id_
         left join subject as s on b.subject_id_ = s.id_
+        left join sys_user su on a.teacher_id_ = su.id_
         where b.teacher_id_ = #{param.teacherId}
         AND a.lock_ = 0
         AND a.type_ = #{param.type}

+ 207 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml

@@ -127,6 +127,7 @@
 			sum(e.liveNum) as liveNum,
 			sum(f.musicNum) as musicNum,
 			sum(g.shoppingNum) as shoppingNum
+		,sum(h.payNum) as payStudentNum
 		from sys_day t
 		left join (
 			select
@@ -159,6 +160,21 @@
 			group by DATE_FORMAT(t.first_vip_time_,'%Y-%m-%d')
 		) b on t.sys_day_ymd_ = b.timeStr
 		left join (
+		select
+			DATE_FORMAT(t.first_pay_time_,'%Y-%m-%d') as timeStr,
+			count(1) as payNum
+		from student_time t
+			<where>
+				<if test="param.startTime !=null">
+					<![CDATA[AND t.first_pay_time_ >= #{param.startTime} ]]>
+				</if>
+				<if test="param.endTime !=null">
+					<![CDATA[AND t.first_pay_time_ < #{param.endTime} ]]>
+				</if>
+			</where>
+			group by DATE_FORMAT(t.first_pay_time_,'%Y-%m-%d')
+		) h on t.sys_day_ymd_ = h.timeStr
+		left join (
 			select
 				DATE_FORMAT(t.first_practice_time_,'%Y-%m-%d') as timeStr,
 				count(1) as practiceNum
@@ -249,4 +265,195 @@
 		</if>
 		order by t.sys_day_
 	</select>
+
+	<select id="tagTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.TagTotalTeacher">
+		SELECT
+
+		<if test="timeType != null and timeType == 'MONTH'">
+			DATE_FORMAT(live_date_,'%Y-%m-%d') as timeStr,
+		</if>
+		<if test="timeType != null and timeType == 'YEAR'">
+			DATE_FORMAT(live_date_,'%Y-%m') as timeStr,
+		</if>
+			user_id_ ,
+			'LIVE' as tagType
+		FROM
+			teacher
+		<where>
+			<if test="param.startTime !=null">
+				<![CDATA[AND live_date_ >= #{param.startTime} ]]>
+			</if>
+			<if test="param.endTime !=null">
+				<![CDATA[AND live_date_ < #{param.endTime} ]]>
+			</if>
+		</where>
+		UNION all
+
+		SELECT
+		<if test="timeType != null and timeType == 'MONTH'">
+			DATE_FORMAT(style_date_,'%Y-%m-%d') as timeStr,
+		</if>
+		<if test="timeType != null and timeType == 'YEAR'">
+			DATE_FORMAT(style_date_,'%Y-%m') as timeStr,
+		</if>
+			user_id_ ,
+			'STYLE' as tagType
+		FROM
+			teacher
+		<where>
+			<if test="param.startTime !=null">
+				<![CDATA[AND style_date_ >= #{param.startTime} ]]>
+			</if>
+			<if test="param.endTime !=null">
+				<![CDATA[AND style_date_ < #{param.endTime} ]]>
+			</if>
+		</where>
+
+		UNION all
+
+		SELECT
+		<if test="timeType != null and timeType == 'MONTH'">
+			DATE_FORMAT(music_date_,'%Y-%m-%d') as timeStr,
+		</if>
+		<if test="timeType != null and timeType == 'YEAR'">
+			DATE_FORMAT(music_date_,'%Y-%m') as timeStr,
+		</if>
+			user_id_ ,
+			'MUSIC' as tagType
+		FROM
+			teacher
+		<where>
+			<if test="param.startTime !=null">
+				<![CDATA[AND music_date_ >= #{param.startTime} ]]>
+			</if>
+			<if test="param.endTime !=null">
+				<![CDATA[AND music_date_ < #{param.endTime} ]]>
+			</if>
+		</where>
+		UNION all
+
+		SELECT
+		<if test="timeType != null and timeType == 'MONTH'">
+			DATE_FORMAT(video_date_,'%Y-%m-%d') as timeStr,
+		</if>
+		<if test="timeType != null and timeType == 'YEAR'">
+			DATE_FORMAT(video_date_,'%Y-%m') as timeStr,
+		</if>
+			user_id_ ,
+			'VIDEO' as tagType
+		FROM
+			teacher
+		<where>
+			<if test="param.startTime !=null">
+				<![CDATA[AND video_date_ >= #{param.startTime} ]]>
+			</if>
+			<if test="param.endTime !=null">
+				<![CDATA[AND video_date_ < #{param.endTime} ]]>
+			</if>
+		</where>
+	</select>
+
+	<select id="selectSubjectHome" resultType="com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo">
+		select
+			s.id_ as subjectId
+			,s.name_ as subjectName
+			,a.musicSheetNum as musicSheetNum
+			,a.enableMusicSheetNum as enableMusicSheetNum
+			,a.enablePlatformMusicSheetNum as enablePlatformMusicSheetNum
+			,a.musicPlatformSheetNum as musicPlatformSheetNum
+			,a.enableTeacherMusicSheetNum as enableTeacherMusicSheetNum
+			,a.musicTeacherSheetNum as musicTeacherSheetNum
+			,b.practiceNum as practiceNum
+			,c.pianoClassNum as pianoClassNum
+			,d.liveNum as liveNum
+			,e.videoNum as videoNum
+		from subject s
+		 left join (
+			select
+				ms.music_subject_ ,
+				sum(if(ms.audit_status_ = 'PASS' ,1,0)) as musicSheetNum,
+				sum(if( ms.state_ = 1,1,0)) as enableMusicSheetNum,
+				sum(if( ms.state_ = 1 and ms.source_type_ = 'PLATFORM',1,0)) as enablePlatformMusicSheetNum,
+				sum(if(ms.source_type_ = 'PLATFORM',1,0)) as musicPlatformSheetNum,
+				sum(if(ms.source_type_ = 'TEACHER' and ms.state_ = 1 and ms.audit_status_ = 'PASS',1,0)) as enableTeacherMusicSheetNum,
+				sum(if(ms.source_type_ = 'TEACHER' and ms.audit_status_ = 'PASS',1,0)) as musicTeacherSheetNum
+
+
+			from music_sheet ms
+				where ms.del_flag_ = 0
+			group by ms.music_subject_
+			) a on a.music_subject_ = s.id_
+		left join (
+			select
+				cg.subject_id_,
+				count(1) as practiceNum
+			from course_group cg
+			where cg.type_ = 'PRACTICE' and cg.status_ in ( 'ING','COMPLETE')
+			group by cg.subject_id_
+			) b on b.subject_id_ = s.id_
+		left join (
+			select
+				cg.subject_id_,
+				count(1) as pianoClassNum
+			from course_group cg
+			where cg.type_ = 'PIANO_ROOM_CLASS' and cg.status_ in ( 'ING','COMPLETE')
+			group by cg.subject_id_
+		) c on c.subject_id_ = s.id_
+		left join (
+			select
+				cg.subject_id_,
+				count(1) as liveNum
+			from course_group cg
+			where cg.type_ = 'LIVE' and cg.status_ in ( 'NOT_SALE','APPLY','ING','COMPLETE')
+			group by cg.subject_id_
+		) d on d.subject_id_ = s.id_
+		left join (
+			select
+				vlg.lesson_subject_,
+				count(1) as videoNum
+			from video_lesson_group vlg
+			where vlg.shelves_flag_ = 1
+			group by vlg.lesson_subject_
+		) e on e.lesson_subject_ = s.id_
+		order by
+		<choose>
+			<when test="query.sortType == 'MUSIC'">
+				a.enableMusicSheetNum
+			</when>
+			<when test="query.sortType == 'PLATFORM_MUSIC'">
+				a.enablePlatformMusicSheetNum
+			</when>
+			<when test="query.sortType == 'TEACHER_MUSIC'">
+				a.enableTeacherMusicSheetNum
+			</when>
+			<when test="query.sortType == 'PRACTICE'">
+				b.practiceNum
+			</when>
+			<when test="query.sortType == 'PIANO'">
+				c.pianoClassNum
+			</when>
+			<when test="query.sortType == 'LIVE'">
+				d.liveNum
+			</when>
+			<when test="query.sortType == 'VIDEO'">
+				e.videoNum
+			</when>
+			<otherwise>
+				a.enableMusicSheetNum
+			</otherwise>
+		</choose>
+		<choose>
+			<when test="query.order == 'desc'">
+				desc
+			</when>
+			<when test="query.order == 'asc'">
+				asc
+			</when>
+			<otherwise>
+				desc
+			</otherwise>
+		</choose>
+
+	</select>
+
 </mapper>

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -28,6 +28,8 @@
         <result column="update_by_" jdbcType="BIGINT" property="updateBy"/>
         <result column="remark_" jdbcType="VARCHAR" property="remark"/>
         <result column="notation_" jdbcType="VARCHAR" property="notation"/>
+        <result column="accompaniment_type_" jdbcType="VARCHAR" property="accompanimentType"/>
+        <result column="title_img_" jdbcType="VARCHAR" property="titleImg"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -61,7 +63,9 @@
         t.audit_version_ as auditVersion,
         t.source_type_ as sourceType,
         t.submit_audit_time_ as submitAuditTime,
+        t.accompaniment_type_ as accompanimentType,
         t.remark_ as remark,
+        t.title_img_ as titleImg,
         t.reason_ as reason,
         t.notation_ as notation
     </sql>
@@ -130,6 +134,9 @@
         <if test="param.topFlag != null">
             and t.top_flag_ = #{param.topFlag}
         </if>
+        <if test="param.accompanimentType != null">
+            and t.accompaniment_type_ = #{param.accompanimentType}
+        </if>
 
     </sql>
 
@@ -219,6 +226,7 @@
         <result column="musicSheetName" jdbcType="VARCHAR" property="musicSheetName"/>
         <result column="userId" jdbcType="BIGINT" property="userId"/>
         <result column="composer" jdbcType="VARCHAR" property="composer"/>
+        <result column="titleImg" jdbcType="VARCHAR" property="titleImg"/>
         <result column="musicSubject" jdbcType="VARCHAR" property="musicSubject"/>
         <result column="audioType" jdbcType="VARCHAR" property="audioType"/>
         <result column="musicTag" jdbcType="VARCHAR" property="musicTag"/>
@@ -251,6 +259,7 @@
         <result column="auditVersion" jdbcType="VARCHAR" property="auditVersion"/>
         <result column="code" jdbcType="VARCHAR" property="code"/>
         <result column="reason" jdbcType="VARCHAR" property="reason"/>
+        <result column="accompanimentType" jdbcType="VARCHAR" property="accompanimentType"/>
         <result column="notation" jdbcType="VARCHAR" property="notation"/>
         <result column="aiDefaultFrequency" jdbcType="VARCHAR" property="aiDefaultFrequency"/>
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">
@@ -390,6 +399,7 @@
         select mspr.music_sheet_id_ as musicSheetId
         ,ms.music_sheet_name_ as musicSheetName
         ,ms.composer_ as composer
+        ,ms.title_img_ as titleImg
         ,ms.music_tag_ as musicTag
         ,(select group_concat(mt.name_) from music_tag mt
         where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
@@ -433,6 +443,8 @@
         select ms.id_ as musicSheetId
         ,ms.music_sheet_name_ as musicSheetName
         ,ms.composer_ as composer
+        ,ms.title_img_ as titleImg
+        ,ms.accompaniment_type_ as accompanimentType
         ,ms.music_tag_ as musicTag
         ,(select group_concat(mt.name_) from music_tag mt
         where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames
@@ -469,6 +481,8 @@
     <select id="selectAuditPage" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo">
         select
         ms.create_by_ as teacherId
+        ,ms.title_img_ as titleImg
+        ,ms.accompaniment_type_ as accompanimentType
         ,su.username_ as username
         ,su.real_name_ as realName
         ,su.phone_ as phone

+ 5 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml

@@ -80,7 +80,11 @@
 	<select id="getChildrenByParentIdList" resultType="com.yonge.cooleshow.biz.dal.vo.MusicTagVo">
         SELECT
         <include refid="baseColumns" />,
-        su.username_ as updateName
+        su.username_ as updateName,
+        (select count(1) from music_sheet ms where find_in_set(t.id_,ms.music_tag_) and ms.del_flag_ = 0 and  ms.state_ = 1 and ms.source_type_ = 'PLATFORM') as enablePlatformMusicSheetNum,
+        (select count(1) from music_sheet ms where find_in_set(t.id_,ms.music_tag_) and ms.del_flag_ = 0  and ms.source_type_ = 'PLATFORM') as musicPlatformSheetNum,
+        (select count(1) from music_sheet ms where find_in_set(t.id_,ms.music_tag_) and ms.del_flag_ = 0 and ms.source_type_ = 'TEACHER' and ms.audit_status_ = 'PASS') as musicTeacherSheetNum,
+        (select count(1) from music_sheet ms where find_in_set(t.id_,ms.music_tag_) and ms.del_flag_ = 0  and ms.source_type_ = 'TEACHER' and ms.state_ = 1 and ms.audit_status_ = 'PASS') as enableTeacherMusicSheetNum
         FROM music_tag t
         left join sys_user su on t.update_by_ = su.id_
         <where>

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

@@ -9,6 +9,8 @@
         <result column="first_live_time_" property="firstLiveTime" />
         <result column="first_music_time_" property="firstMusicTime" />
         <result column="first_mall_time_" property="firstMallTime" />
+        <result column="first_activity_time_" property="firstActivityTime" />
+        <result column="first_pay_time_" property="firstPayTime" />
     </resultMap>
 
     <!-- 表字段 -->
@@ -20,5 +22,7 @@
         , t.first_live_time_ as firstLiveTime
         , t.first_music_time_ as firstMusicTime
         , t.first_mall_time_ as firstMallTime
+        , t.first_activity_time_ as firstActivityTime
+        , t.first_pay_time_ as firstPayTime
         </sql>
 </mapper>

+ 6 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -22,6 +22,9 @@
         <result column="membership_end_time_" property="membershipEndTime"/>
         <result column="live_flag_" property="liveFlag" />
         <result column="live_date_" property="liveDate" />
+        <result column="music_date_" property="musicDate" />
+        <result column="video_date_" property="videoDate" />
+        <result column="style_date_" property="styleDate" />
         <result column="browse_" property="browse" />
         <result column="memo_" property="memo" />
         <result column="create_time_" property="createTime" />
@@ -46,7 +49,9 @@
         , t.musician_flag_ as "musicianFlag"
         , t.musician_date_ as "musicianDate"
         , t.live_flag_ as "liveFlag"
-        , t.live_date_ as "liveDate"
+        , t.music_date_ as "musicDate"
+        , t.video_date_ as "videoDate"
+        , t.style_date_ as "styleDate"
         , t.member_rank_setting_id_ as "memberRankSettingId"
         , t.membership_start_time_ as "membershipStartTime"
         , t.membership_end_time_ as "membershipEndTime"

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

@@ -236,6 +236,7 @@
                 (st.first_practice_time_ is null and od.good_type_ = 'PRACTICE') or
                 (st.first_video_time_ is null and od.good_type_ = 'VIDEO') or
                 (st.first_live_time_ is null and od.good_type_ = 'LIVE') or
+                (st.first_activity_time_ is null and od.good_type_ = 'ACTI_REGIST') or
                 (st.first_music_time_ is null and od.good_type_ = 'MUSIC')
             )
         )