瀏覽代碼

统计接口修改

weifanli 3 年之前
父節點
當前提交
26c8e36964

+ 61 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TotalReq.java

@@ -3,13 +3,17 @@ package com.yonge.cooleshow.biz.dal.dto.req;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.PeriodEnum;
 import com.yonge.cooleshow.biz.dal.enums.TimeTypeEnum;
+import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.Date;
 
 /**
@@ -18,19 +22,26 @@ import java.util.Date;
  */
 @ApiModel(value = "TotalReq对象", description = "统计查询对象")
 public class TotalReq {
-    @ApiModelProperty("用户id ")
-    private Long userId;
     @NotNull(message = "时间类型不能为空")
     @ApiModelProperty("时间类型 MONTH、月度  YEAR、年度")
     private PeriodEnum timeType;
-    @NotBlank(message = "时间不能为空")
     @ApiModelProperty("时间 yyyy | yyyy-MM")
     private String dateTime;
 
-    @ApiModelProperty(value = "开始时间")
+    /***
+     * 用户id
+     * @author liweifan
+     * @updateTime 2022/5/5 17:12
+     */
+    private Long userId;
+    /***
+     * 开始时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
-    @ApiModelProperty(value = "结束时间")
+    /***
+     * 结束时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
@@ -59,6 +70,28 @@ public class TotalReq {
     }
 
     public LocalDateTime getStartTime() {
+        if (null == startTime) {
+            LocalDateTime firstDay;
+            if (PeriodEnum.YEAR.equals(timeType)) {
+                LocalDate paramDate;
+                if (StringUtil.isEmpty(dateTime)) {
+                    paramDate = LocalDate.now();
+                } else {
+                    paramDate = LocalDate.of(Integer.parseInt(dateTime), 1, 1);
+                }
+                firstDay = LocalDateTime.of(paramDate.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
+            } else {
+                LocalDate paramDate;
+                if (StringUtil.isEmpty(dateTime)) {
+                    paramDate = LocalDate.now();
+                } else {
+                    String[] classDateSp = dateTime.split("-");
+                    paramDate = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
+                }
+                firstDay = LocalDateTime.of(paramDate.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
+            }
+            return firstDay;
+        }
         return startTime;
     }
 
@@ -67,10 +100,33 @@ public class TotalReq {
     }
 
     public LocalDateTime getEndTime() {
+        if (null == endTime) {
+            LocalDateTime lastDay;
+            if (PeriodEnum.YEAR.equals(timeType)) {
+                LocalDate paramDate;
+                if (StringUtil.isEmpty(dateTime)) {
+                    paramDate = LocalDate.now();
+                } else {
+                    paramDate = LocalDate.of(Integer.parseInt(dateTime), 1, 1);
+                }
+                lastDay = LocalDateTime.of(paramDate.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MAX);
+            } else {
+                LocalDate paramDate;
+                if (StringUtil.isEmpty(dateTime)) {
+                    paramDate = LocalDate.now();
+                } else {
+                    String[] classDateSp = dateTime.split("-");
+                    paramDate = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
+                }
+                lastDay = LocalDateTime.of(paramDate.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MAX);
+            }
+            return lastDay;
+        }
         return endTime;
     }
 
     public void setEndTime(LocalDateTime endTime) {
         this.endTime = endTime;
     }
+
 }

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

@@ -49,7 +49,7 @@ public interface TeacherAuthMusicianRecordService extends IService<TeacherAuthMu
      * @updateTime 2022/3/22 20:06
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
      */
-    HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser);
+    HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) throws Exception;
     /***
      * 提交音乐人审批申请
      * @author liweifan

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

@@ -9,6 +9,7 @@ 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.cooleshow.common.exception.BizException;
+import io.swagger.annotations.ApiModelProperty;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -38,27 +39,6 @@ public class HomeServiceImpl implements HomeService {
 
     @Override
     public HttpResponseResult<HomeTotalTeacher> totalTeacher(TotalReq query) {
-        //参数处理
-        try {
-            LocalDateTime firstDay;
-            LocalDateTime lastDay;
-            if (PeriodEnum.YEAR.equals(query.getTimeType())) {
-                LocalDate date = LocalDate.of(Integer.parseInt(query.getDateTime()), 1, 1);
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
-            } else {
-                String[] classDateSp = query.getDateTime().split("-");
-                LocalDate date = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
-
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
-            }
-            query.setStartTime(firstDay);
-            query.setEndTime(lastDay);
-        } catch (Exception e) {
-            throw new BizException("查询时间格式不正确 [" + query.getDateTime() + "]");
-        }
-
         //统计查询
         List<HomeTotalTeacher> totalList = baserMapper.totalTeacher(query.getTimeType().getCode(), query);
         Integer registerNum = 0;
@@ -87,49 +67,41 @@ public class HomeServiceImpl implements HomeService {
 
     @Override
     public HttpResponseResult<HomeTotalStudent> totalStudent(TotalReq query) {
-        //参数处理
-        try {
-            LocalDateTime firstDay;
-            LocalDateTime lastDay;
-            if (PeriodEnum.YEAR.equals(query.getTimeType())) {
-                LocalDate date = LocalDate.of(Integer.parseInt(query.getDateTime()), 1, 1);
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
-            } else {
-                String[] classDateSp = query.getDateTime().split("-");
-                LocalDate date = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
-
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
-            }
-            query.setStartTime(firstDay);
-            query.setEndTime(lastDay);
-        } catch (Exception e) {
-            throw new BizException("查询时间格式不正确 [" + query.getDateTime() + "]");
-        }
-
         List<HomeTotalStudent> totalList = baserMapper.totalStudent(query.getTimeType().getCode(), query);
         Integer registerNum = 0;
         Integer vipNum = 0;
-        Integer courseNum = 0;
+        Integer practiceNum = 0;
+        Integer videoNum = 0;
+        Integer liveNum = 0;
+        Integer musicNum = 0;
         Integer shoppingNum = 0;
 
         for (HomeTotalStudent totalStudent : totalList) {
             totalStudent.setRegisterNum(null == totalStudent.getRegisterNum() ? 0 : totalStudent.getRegisterNum());
             totalStudent.setVipNum(null == totalStudent.getVipNum() ? 0 : totalStudent.getVipNum());
-            totalStudent.setCourseNum(null == totalStudent.getCourseNum() ? 0 : totalStudent.getCourseNum());
+            totalStudent.setPracticeNum(null == totalStudent.getPracticeNum() ? 0 : totalStudent.getPracticeNum());
+            totalStudent.setVideoNum(null == totalStudent.getVideoNum() ? 0 : totalStudent.getVideoNum());
+            totalStudent.setLiveNum(null == totalStudent.getLiveNum() ? 0 : totalStudent.getLiveNum());
+            totalStudent.setMusicNum(null == totalStudent.getMusicNum() ? 0 : totalStudent.getMusicNum());
             totalStudent.setShoppingNum(null == totalStudent.getShoppingNum() ? 0 : totalStudent.getShoppingNum());
 
             registerNum += totalStudent.getRegisterNum();
             vipNum += totalStudent.getVipNum();
-            courseNum += totalStudent.getCourseNum();
+            practiceNum += totalStudent.getPracticeNum();
+            videoNum += totalStudent.getVideoNum();
+            liveNum += totalStudent.getLiveNum();
+            musicNum += totalStudent.getMusicNum();
             shoppingNum += totalStudent.getShoppingNum();
         }
         HomeTotalStudent total = new HomeTotalStudent();
         total.setRegisterNum(registerNum);
         total.setVipNum(vipNum);
-        total.setCourseNum(courseNum);
+        total.setPracticeNum(practiceNum);
+        total.setVideoNum(videoNum);
+        total.setLiveNum(liveNum);
+        total.setMusicNum(musicNum);
         total.setShoppingNum(shoppingNum);
+
         total.setInfoList(totalList);
         return HttpResponseResult.succeed(total);
     }

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

@@ -10,9 +10,14 @@ import com.yonge.cooleshow.biz.dal.dto.req.TeacherApplyDetailReq;
 import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.string.StringUtil;
 import com.yonge.toolset.utils.string.ValueUtil;
 import org.apache.commons.beanutils.BeanUtils;
@@ -24,11 +29,16 @@ import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 @Service
 public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEntryRecordDao, TeacherAuthEntryRecord> implements TeacherAuthEntryRecordService {
 
     @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
     private TeacherDao teacherDao;
 
     @Override
@@ -45,16 +55,23 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) throws Exception {
         TeacherAuthEntryRecord build = baseMapper.selectById(authOperaReq.getId());
+        if(!AuthStatusEnum.DOING.equals(build.getTeacherAuthStatus()) ){
+            return HttpResponseResult.failed("审核单已审核");
+        }
+
         build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
         build.setVerifyUserId(sysUser.getId());
         build.setUpdateTime(new Date());
 
         //修改teacher表
-        Teacher teacher = teacherDao.selectById(build.getUserId());
+        TeacherVo teacher = teacherDao.detail(build.getUserId());
         if (null == teacher) {
             return HttpResponseResult.failed("未找到用户信息");
         }
+        if(YesOrNoEnum.YES.equals(teacher.getEntryFlag()) ){
+            return HttpResponseResult.failed("用户已经通过审核");
+        }
         if (authOperaReq.getPass()) {
             teacher.setSubjectId(StringUtil.isEmpty(teacher.getSubjectId()) ? build.getSubjectId() : teacher.getSubjectId());
             teacher.setIntroduction(StringUtil.isEmpty(teacher.getIntroduction()) ? build.getIntroduction() : teacher.getIntroduction());
@@ -67,7 +84,22 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         teacher.setEntryFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
         teacher.setEntryAuthDate(new Date());
         teacher.setUpdateTime(new Date());
-        teacherDao.updateById(teacher);
+
+        Teacher newTeacher = new Teacher();
+        BeanUtils.copyProperties(newTeacher,teacher);
+        teacherDao.updateById(newTeacher);
+
+        // 发送审核通知
+        Map<Long,String> receivers = new HashMap<>();
+        receivers.put(teacher.getUserId(), teacher.getPhone());
+
+        if (authOperaReq.getPass()) {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_AUTH_PASS,
+                    receivers,null,0,null, ClientEnum.TEACHER.getCode());
+        } else{
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.TEACHER_AUTH_FAIL,
+                    receivers,null,0,null,ClientEnum.TEACHER.getCode());
+        }
         return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
     }
 

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

@@ -9,9 +9,15 @@ import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
@@ -20,10 +26,16 @@ import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 
 @Service
 public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAuthMusicianRecordDao, TeacherAuthMusicianRecord> implements TeacherAuthMusicianRecordService {
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
     @Autowired
     private TeacherDao teacherDao;
 
@@ -69,21 +81,45 @@ public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAut
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
+    public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) throws Exception {
         TeacherAuthMusicianRecord build = baseMapper.selectById(authOperaReq.getId());
+        if(!AuthStatusEnum.DOING.equals(build.getTeacherAuthStatus()) ){
+            return HttpResponseResult.failed("审核单已审核");
+        }
+
         build.setTeacherAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
         build.setVerifyUserId(sysUser.getId());
         build.setUpdateTime(new Date());
 
         //修改teacher表
-        Teacher teacher = new Teacher();
-        teacher.setUserId(build.getUserId());
+        TeacherVo teacher = teacherDao.detail(build.getUserId());
+        if (null == teacher) {
+            return HttpResponseResult.failed("未找到用户信息");
+        }
+        if(YesOrNoEnum.YES.equals(teacher.getMusicianFlag()) ){
+            return HttpResponseResult.failed("用户已经通过审核");
+        }
+
         teacher.setMusicianFlag(authOperaReq.getPass() ? YesOrNoEnum.YES : YesOrNoEnum.NO);
         teacher.setMusicianDate(new Date());
         teacher.setUpdateTime(new Date());
-        teacherDao.updateById(teacher);
 
+        Teacher newTeacher = new Teacher();
+        BeanUtils.copyProperties(newTeacher,teacher);
+        teacherDao.updateById(newTeacher);
+
+        // 发送审核通知
+        Map<Long,String> receivers = new HashMap<>();
+        receivers.put(teacher.getUserId(), teacher.getPhone());
+
+        if (authOperaReq.getPass()) {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.MUSICIAN_AUTH_PASS,
+                    receivers,null,0,null, ClientEnum.TEACHER.getCode());
+        } else{
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.MUSICIAN_AUTH_FAIL,
+                    receivers,null,0,null,ClientEnum.TEACHER.getCode());
+        }
         return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
     }
 

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

@@ -13,11 +13,17 @@ import java.util.List;
 public class HomeTotalStudent {
     @ApiModelProperty("学生注册量 ")
     private Integer registerNum;
-    @ApiModelProperty("会员学员 ")
+    @ApiModelProperty("新增会员学员 ")
     private Integer vipNum;
-    @ApiModelProperty("课程付费学员 ")
-    private Integer courseNum;
-    @ApiModelProperty("商城用户 ")
+    @ApiModelProperty("新增陪练课学员 ")
+    private Integer practiceNum;
+    @ApiModelProperty("新增视频课学员 ")
+    private Integer videoNum;
+    @ApiModelProperty("新增直播课学员 ")
+    private Integer liveNum;
+    @ApiModelProperty("新增乐曲学员 ")
+    private Integer musicNum;
+    @ApiModelProperty("新增商城用户 ")
     private Integer shoppingNum;
     @ApiModelProperty("时间(详情数据中使用) ")
     private String timeStr;
@@ -40,12 +46,36 @@ public class HomeTotalStudent {
         this.vipNum = vipNum;
     }
 
-    public Integer getCourseNum() {
-        return courseNum;
+    public Integer getPracticeNum() {
+        return practiceNum;
     }
 
-    public void setCourseNum(Integer courseNum) {
-        this.courseNum = courseNum;
+    public void setPracticeNum(Integer practiceNum) {
+        this.practiceNum = practiceNum;
+    }
+
+    public Integer getVideoNum() {
+        return videoNum;
+    }
+
+    public void setVideoNum(Integer videoNum) {
+        this.videoNum = videoNum;
+    }
+
+    public Integer getLiveNum() {
+        return liveNum;
+    }
+
+    public void setLiveNum(Integer liveNum) {
+        this.liveNum = liveNum;
+    }
+
+    public Integer getMusicNum() {
+        return musicNum;
+    }
+
+    public void setMusicNum(Integer musicNum) {
+        this.musicNum = musicNum;
     }
 
     public Integer getShoppingNum() {

+ 85 - 33
cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml

@@ -19,9 +19,9 @@
 				t.sys_day_ym_ as timeStr,
 			</if>
 			sum(a.registerNum) as registerNum,
-			sum(a.entryNum) as entryNum,
-			sum(a.liveNum) as liveNum,
-			sum(a.musicianNum) as musicianNum
+			sum(b.entryNum) as entryNum,
+			sum(c.liveNum) as liveNum,
+			sum(d.musicianNum) as musicianNum
 		from sys_day t
 		left join (
 			select
@@ -91,13 +91,13 @@
 				<![CDATA[AND t.sys_day_ < #{param.endTime} ]]>
 			</if>
 		</where>
-		order by t.sys_day_ desc
 		<if test="timeType != null and timeType == 'MONTH'">
 			group by t.sys_day_ymd_
 		</if>
 		<if test="timeType != null and timeType == 'YEAR'">
 			group by t.sys_day_ym_
 		</if>
+		order by t.sys_day_ desc
 	</select>
 
 	<select id="totalStudent" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeTotalStudent">
@@ -110,7 +110,11 @@
 			</if>
 			sum(a.registerNum) as registerNum,
 			sum(b.vipNum) as vipNum,
-			sum(c.courseNum) as courseNum
+			sum(c.practiceNum) as practiceNum,
+			sum(d.videoNum) as videoNum,
+			sum(e.liveNum) as liveNum,
+			sum(f.musicNum) as musicNum,
+			sum(g.shoppingNum) as shoppingNum
 		from sys_day t
 		left join (
 			select
@@ -129,46 +133,94 @@
 		) a on t.sys_day_ymd_ = a.timeStr
 		left join (
 			select
-				a.timeStr,
+				DATE_FORMAT(t.first_vip_time_,'%Y-%m-%d') as timeStr,
 				count(1) as vipNum
-			from (
-				select
-					DATE_FORMAT(t.create_time_,'%Y-%m-%d') as timeStr,
-					t.user_id_
-				from user_order t
-				left join user_order_detail d on t.order_no_ = d.order_no_
-				where t.status_ = 'PAID' and d.good_type_ = 'VIP'
+			from student_time t
+			<where>
 				<if test="param.startTime !=null">
-					<![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
+					<![CDATA[AND t.first_vip_time_ >= #{param.startTime} ]]>
 				</if>
 				<if test="param.endTime !=null">
-					<![CDATA[AND t.create_time_ < #{param.endTime} ]]>
+					<![CDATA[AND t.first_vip_time_ < #{param.endTime} ]]>
 				</if>
-				group by DATE_FORMAT(t.create_time_,'%Y-%m-%d'),t.user_id_
-			) a
-			group by a.timeStr
+			</where>
+			group by DATE_FORMAT(t.first_vip_time_,'%Y-%m-%d')
 		) b on t.sys_day_ymd_ = b.timeStr
 		left join (
 			select
-				a.timeStr,
-				count(1) as courseNum
-			from (
-				select
-					DATE_FORMAT(t.create_time_,'%Y-%m-%d') as timeStr,
-					t.user_id_
-				from user_order t
-				left join user_order_detail d on t.order_no_ = d.order_no_
-				where t.status_ = 'PAID' and d.good_type_ in ('PRACTICE','LIVE','VIDEO')
+				DATE_FORMAT(t.first_practice_time_,'%Y-%m-%d') as timeStr,
+				count(1) as practiceNum
+			from student_time t
+			<where>
 				<if test="param.startTime !=null">
-					<![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
+					<![CDATA[AND t.first_practice_time_ >= #{param.startTime} ]]>
 				</if>
 				<if test="param.endTime !=null">
-					<![CDATA[AND t.create_time_ < #{param.endTime} ]]>
+					<![CDATA[AND t.first_practice_time_ < #{param.endTime} ]]>
 				</if>
-				group by DATE_FORMAT(t.create_time_,'%Y-%m-%d'),t.user_id_
-			) a
-			group by a.timeStr
+			</where>
+			group by DATE_FORMAT(t.first_practice_time_,'%Y-%m-%d')
 		) c on t.sys_day_ymd_ = c.timeStr
+		left join (
+			select
+				DATE_FORMAT(t.first_video_time_,'%Y-%m-%d') as timeStr,
+				count(1) as videoNum
+			from student_time t
+			<where>
+				<if test="param.startTime !=null">
+					<![CDATA[AND t.first_video_time_ >= #{param.startTime} ]]>
+				</if>
+				<if test="param.endTime !=null">
+					<![CDATA[AND t.first_video_time_ < #{param.endTime} ]]>
+				</if>
+			</where>
+			group by DATE_FORMAT(t.first_video_time_,'%Y-%m-%d')
+		) d on t.sys_day_ymd_ = d.timeStr
+		left join (
+			select
+				DATE_FORMAT(t.first_live_time_,'%Y-%m-%d') as timeStr,
+				count(1) as liveNum
+			from student_time t
+			<where>
+				<if test="param.startTime !=null">
+					<![CDATA[AND t.first_live_time_ >= #{param.startTime} ]]>
+				</if>
+				<if test="param.endTime !=null">
+					<![CDATA[AND t.first_live_time_ < #{param.endTime} ]]>
+				</if>
+			</where>
+			group by DATE_FORMAT(t.first_live_time_,'%Y-%m-%d')
+		) e on t.sys_day_ymd_ = e.timeStr
+		left join (
+			select
+				DATE_FORMAT(t.first_music_time_,'%Y-%m-%d') as timeStr,
+				count(1) as musicNum
+			from student_time t
+			<where>
+				<if test="param.startTime !=null">
+					<![CDATA[AND t.first_music_time_ >= #{param.startTime} ]]>
+				</if>
+				<if test="param.endTime !=null">
+					<![CDATA[AND t.first_music_time_ < #{param.endTime} ]]>
+				</if>
+			</where>
+			group by DATE_FORMAT(t.first_music_time_,'%Y-%m-%d')
+		) f on t.sys_day_ymd_ = f.timeStr
+		left join (
+			select
+				DATE_FORMAT(t.first_mall_time_,'%Y-%m-%d') as timeStr,
+				count(1) as shoppingNum
+			from student_time t
+			<where>
+				<if test="param.startTime !=null">
+					<![CDATA[AND t.first_mall_time_ >= #{param.startTime} ]]>
+				</if>
+				<if test="param.endTime !=null">
+					<![CDATA[AND t.first_mall_time_ < #{param.endTime} ]]>
+				</if>
+			</where>
+			group by DATE_FORMAT(t.first_mall_time_,'%Y-%m-%d')
+		) g on t.sys_day_ymd_ = g.timeStr
 		<where>
 			<if test="param.startTime !=null">
 				<![CDATA[AND t.sys_day_ >= #{param.startTime} ]]>
@@ -177,12 +229,12 @@
 				<![CDATA[AND t.sys_day_ < #{param.endTime} ]]>
 			</if>
 		</where>
-		order by t.sys_day_ desc
 		<if test="timeType != null and timeType == 'MONTH'">
 			group by t.sys_day_ymd_
 		</if>
 		<if test="timeType != null and timeType == 'YEAR'">
 			group by t.sys_day_ym_
 		</if>
+		order by t.sys_day_ desc
 	</select>
 </mapper>

+ 0 - 22
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/UserAccountController.java

@@ -97,28 +97,6 @@ public class UserAccountController extends BaseController {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         query.setUserId(user.getId());
-
-        //参数处理
-        try {
-            LocalDateTime firstDay;
-            LocalDateTime lastDay;
-            if (PeriodEnum.YEAR.equals(query.getTimeType())) {
-                LocalDate date = LocalDate.of(Integer.parseInt(query.getDateTime()), 1, 1);
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
-            } else {
-                String[] classDateSp = query.getDateTime().split("-");
-                LocalDate date = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
-
-                firstDay = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
-                lastDay = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
-            }
-            query.setStartTime(firstDay);
-            query.setEndTime(lastDay);
-        } catch (Exception e) {
-            throw new BizException("查询时间格式不正确 [" + query.getDateTime() + "]");
-        }
-
         return userAccountService.accountTotal(query);
     }
 }