فهرست منبع

Merge branch 'mall_pay'

liujunchi 3 سال پیش
والد
کامیت
7f7f9a2e28
20فایلهای تغییر یافته به همراه433 افزوده شده و 27 حذف شده
  1. 1 0
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  2. 61 11
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java
  3. 6 0
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java
  4. 32 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  5. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  6. 18 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountRecordDao.java
  7. 32 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  8. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  9. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountRecordService.java
  10. 6 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AlbumMusicRelateServiceImpl.java
  11. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  12. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  13. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  14. 3 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java
  15. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountRecordServiceImpl.java
  16. 83 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeStatisticalVo.java
  17. 32 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  19. 7 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml
  20. 81 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherHomeController.java

+ 1 - 0
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -149,6 +149,7 @@ public class NewsController extends BaseController {
 		if (!check.getStatus()) {
 			return check;
 		}
+		newsInfo.setStatus(NewsStatusEnum.HIDDEN);
 		newsInfo.setUpdateTime(new Date());
 		newsInfo.setUpdateBy(sysUser.getId());
 

+ 61 - 11
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java

@@ -18,6 +18,7 @@ import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -90,21 +91,29 @@ public class PaymentSdk {
      * @return 关闭的支付对象
      * @throws Exception 异常
      */
-    public Map<String, Object> closePayment(String paymentId) throws Exception {
-        Map<String, Object> payment = new HashMap<>();
+    public HttpResponseResult<Map<String, Object>> closePayment(String paymentId, String reason, String expend) {
         Map<String, Object> paymentParams = new HashMap<>(10);
         paymentParams.put("payment_id", paymentId);
-        paymentParams.put("reason", "reason");
-        paymentParams.put("expend", "expend");
-        paymentParams.put("notify_url", "notify_url");
-        payment = com.huifu.adapay.model.Payment.close(paymentParams);
+        paymentParams.put("reason", reason);
+        paymentParams.put("expend", expend);
+        paymentParams.put("notify_url", HuifuConfiguration.getHuifuProperties().getNotifyUrl());
 
-        String error_code = (String) payment.get("error_code");
-        if (null != error_code) {
-            String errorMsg = (String) payment.get("error_msg");
-            throw new ThirdpartyException(errorMsg);
+        Map<String, Object> res;
+        try {
+            res = Payment.close(paymentParams);
+        } catch (BaseAdaPayException e) {
+            return HttpResponseResult.failed(e.getMessage());
         }
-        return payment;
+        if (CollectionUtils.isEmpty(res)) {
+            return HttpResponseResult.failed("请求失败");
+        }
+        log.info("汇付[关闭支付对象] Resp:{}", res);
+        String errorCode = (String) res.get("error_code");
+        if (null != errorCode) {
+            String errorMsg = (String) res.get("error_msg");
+            return HttpResponseResult.failed(errorMsg);
+        }
+        return HttpResponseResult.succeed(res);
     }
 
     /**
@@ -171,6 +180,7 @@ public class PaymentSdk {
     }
 
 
+
     /**
      * 退款
      *
@@ -207,4 +217,44 @@ public class PaymentSdk {
         }
         return HttpResponseResult.succeed(res);
     }
+
+    /**
+     *  查看退款订单
+     *
+     * {
+     *     "status": "succeeded",
+     *     "prod_mode": "true",
+     *     "refunds": [
+     *         {
+     *             "payment_id": "002112019110811022810038712892084113408",
+     *             "refund_id": "0021120191108110337980038713178955902976",
+     *             "refund_order_no": "refundOrderNo00211201911081103379",
+     *             "trans_status": "P",
+     *             "refund_amt": "0.01",
+     *             "fee_amt": ""
+     *         }
+     *     ]
+     * }
+     */
+    public HttpResponseResult<Map<String, Object>> selectRefundPayment(String refundId) {
+
+        Map<String, Object> refundParams = new HashMap<>(2);
+        refundParams.put("refund_id", refundId);
+        Map<String, Object> res;
+        try {
+            res = Refund.query(refundParams);
+        } catch (BaseAdaPayException e) {
+            return HttpResponseResult.failed(e.getMessage());
+        }
+        if (null == res) {
+            return HttpResponseResult.failed("请求失败");
+        }
+        log.info("汇付[查看退款对象] Resp:{}", res);
+        String errorCode = (String) res.get("error_code");
+        if (null != errorCode) {
+            String errorMsg = (String) res.get("error_msg");
+            return HttpResponseResult.failed(errorMsg);
+        }
+        return HttpResponseResult.succeed(res);
+    }
 }

+ 6 - 0
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java

@@ -26,5 +26,11 @@ public interface PaymentService {
 
     OrderPayRes orderPayPaying(OrderPayReq payReq);
 
+    /**
+     * 退款
+     *
+     * @param refundReq
+     * @return
+     */
     OrderRefundRes orderRefund(OrderRefundReq refundReq);
 }

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

@@ -129,5 +129,37 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //学生端-首页-最近一堂课
     StudentHomePage.RecentCourses selectRecentCourses(Long studentId);
+
+    /**
+     * 本周剩余的课时
+     *
+     * @param userId 老师id
+     * @return
+     */
+    Integer selectWeekNotStartCourseSchedule(@Param("userId") Long userId);
+
+    /**
+     * 本周未布置课后作业数
+     *
+     * @param userId 老师id
+     * @return
+     */
+    Integer selectHomeworkNotDecorate(@Param("userId") Long userId);
+
+    /**
+     * 老师未课后评价课程数
+     *
+     * @param userId 老师id
+     * @return
+     */
+    Integer selectNotRepliedCourseSchedule(@Param("userId") Long userId);
+
+    /**
+     * 老师本周收到的评价
+     *
+     * @param userId 老师id
+     * @return
+     */
+    Integer selectWeekStudentRepliedCourseSchedule(@Param("userId") Long userId);
 }
 

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

@@ -110,4 +110,11 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
     List<TeacherMusicSheetVo> selectAuditPage(@Param("page") IPage<TeacherMusicSheetVo> page, @Param(
             "param") TeacherMusicSheetAuditSearch query);
 
+    /**
+     * 获取老师过审的曲目数量
+     *
+     * @param userId 老师id
+     * @return
+     */
+    Integer selectTeacherMusicSheetCount(@Param("userId") Long userId);
 }

+ 18 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/UserAccountRecordDao.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -10,21 +11,30 @@ import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountRecordSearch;
 
 
-public interface UserAccountRecordDao extends BaseMapper<UserAccountRecord>{
+public interface UserAccountRecordDao extends BaseMapper<UserAccountRecord> {
 	/**
 	 * 查询详情
-     * @author liweifan
-     * @date 2022-03-30 13:53:51
-     * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo
+	 *
+	 * @author liweifan
+	 * @date 2022-03-30 13:53:51
+	 * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo
 	 */
 	UserAccountRecordVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
-     * @author liweifan
-     * @date 2022-03-30 13:53:51
-     * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo
+	 *
+	 * @author liweifan
+	 * @date 2022-03-30 13:53:51
+	 * @return: com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo
 	 */
 	List<UserAccountRecordVo> selectPage(@Param("page") IPage page, @Param("param") UserAccountRecordSearch userAccountRecord);
-	
+
+	/**
+	 * 老师本月收入
+	 *
+	 * @param userId 老师id
+	 * @return
+	 */
+    BigDecimal selectMonthDecimal(@Param("userId") Long userId);
 }

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

@@ -188,5 +188,37 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     StudentHomePage queryLiveAndVideo(Long studentId);
 
     List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId);
+
+    /**
+     * 本周剩余的课时
+     *
+     * @param userId 老师id
+     * @return 剩余课时数
+     */
+    Integer getWeekNotStart(Long userId);
+
+    /**
+     * 本周未布置课后作业数
+     *
+     * @param userId 老师id
+     * @return 本周未布置课后作业数
+     */
+    Integer getHomeworkNotDecorate(Long userId);
+
+    /**
+     * 老师未课后评价课程数
+     *
+     * @param userId 老师id
+     * @return 老师未课后评价课程数
+     */
+    Integer getNotRepliedCourseSchedule(Long userId);
+
+    /**
+     * 老师本周收到的评价
+     *
+     * @param userId 老师id
+     * @return 老师本周收到的评价
+     */
+    Integer getWeekStudentRepliedCourseSchedule(Long userId);
 }
 

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -207,4 +207,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @param userOrderDetailVo
      */
     void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo);
+
+    /**
+     * 获取老师过审的曲目数量
+     *
+     * @param userId 老师id
+     * @return 老师过审的曲目数量
+     */
+    Integer getTeacherMusicSheetCount(Long userId);
 }

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

@@ -6,6 +6,8 @@ import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
 
+import java.math.BigDecimal;
+
 /**
  * 用户账户流水表 服务类
  * @author liweifan
@@ -26,4 +28,12 @@ public interface UserAccountRecordService extends IService<UserAccountRecord>  {
  	 * @date 2022-03-30
      */
     IPage<UserAccountRecordVo> selectPage(IPage<UserAccountRecordVo> page, UserAccountRecordSearch query);
+
+	/**
+	 * 老师本月收入
+	 *
+	 * @param userId 老师id
+	 * @return 老师本月收入
+	 */
+    BigDecimal getMonthDecimal(Long userId);
 }

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

@@ -1,14 +1,14 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
-import com.yonge.cooleshow.biz.dal.entity.AlbumMusicRelate;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.AlbumMusicRelateDao;
+import com.yonge.cooleshow.biz.dal.entity.AlbumMusicRelate;
 import com.yonge.cooleshow.biz.dal.service.AlbumMusicRelateService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.Date;
@@ -34,6 +34,7 @@ public class AlbumMusicRelateServiceImpl extends ServiceImpl<AlbumMusicRelateDao
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean delMusicSheet(Long albumId, List<Long> musicSheetIdList) {
         List<AlbumMusicRelate> list = this.lambdaQuery()
                                           .eq(AlbumMusicRelate::getAlbumId, albumId)
@@ -47,6 +48,7 @@ public class AlbumMusicRelateServiceImpl extends ServiceImpl<AlbumMusicRelateDao
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean addMusicSheet(Long albumId, List<Long> musicSheetIdList, Long userId) {
         List<AlbumMusicRelate> list = this.lambdaQuery()
                                           .eq(AlbumMusicRelate::getAlbumId, albumId)

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

@@ -995,4 +995,24 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     public List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId) {
         return teacherFreeTimeDao.selectPriceByTeacherId(teacherId);
     }
+
+    @Override
+    public Integer getWeekNotStart(Long userId) {
+        return baseMapper.selectWeekNotStartCourseSchedule(userId);
+    }
+
+    @Override
+    public Integer getHomeworkNotDecorate(Long userId) {
+        return baseMapper.selectHomeworkNotDecorate(userId);
+    }
+
+    @Override
+    public Integer getNotRepliedCourseSchedule(Long userId) {
+        return baseMapper.selectNotRepliedCourseSchedule(userId);
+    }
+
+    @Override
+    public Integer getWeekStudentRepliedCourseSchedule(Long userId) {
+        return baseMapper.selectWeekStudentRepliedCourseSchedule(userId);
+    }
 }

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

@@ -180,6 +180,7 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean del(Long id) {
         MusicAlbum musicAlbum = new MusicAlbum();
         musicAlbum.setDelFlag(true);

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

@@ -411,6 +411,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
      * @param musicSheetId 曲目id
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean sendBuyMessage(Long teacherId, Long studentId, Long musicSheetId) {
         SysUser teacher = sysUserFeignService.queryUserById(teacherId);
         SysUser student = sysUserFeignService.queryUserById(studentId);
@@ -488,6 +489,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void orderAfterSheet(UserOrderDetailVo userOrderDetailVo) {
         // 保存购买记录
         MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
@@ -505,6 +507,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void buyMusicSheetCancel(UserOrderDetailVo userOrderDetailVo) {
         MusicSheetPurchaseRecord musicSheetPurchaseRecord = musicSheetPurchaseRecordService
                 .checkPurchase(userOrderDetailVo.getUserId(),userOrderDetailVo.getBizId());
@@ -512,6 +515,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         musicSheetPurchaseRecordService.removeById(musicSheetPurchaseRecord.getId());
     }
 
+    @Override
+    public Integer getTeacherMusicSheetCount(Long userId) {
+        return baseMapper.selectTeacherMusicSheetCount(userId);
+
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                        .map(sysUserFeignService::queryUserById)

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

@@ -155,7 +155,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public int updateMessage(SysMessage message) {
 		return sysMessageDao.update(message);
 	}
@@ -394,13 +394,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	 * @return 修改的条数
 	 */
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public int updateStatus(Long userId, int status,String jpushType) {
 		return sysMessageDao.updateStatus(userId, status,jpushType);
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public int updateOneStatus(Long id, int status) {
 		return sysMessageDao.updateOneStatus(id, status);
 	}

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

@@ -9,6 +9,8 @@ import com.yonge.cooleshow.biz.dal.dto.search.UserAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.dao.UserAccountRecordDao;
 import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
 
+import java.math.BigDecimal;
+
 
 @Service
 public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordDao, UserAccountRecord> implements UserAccountRecordService {
@@ -23,5 +25,12 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
     public IPage<UserAccountRecordVo> selectPage(IPage<UserAccountRecordVo> page, UserAccountRecordSearch query){
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
+    @Override
+    public BigDecimal getMonthDecimal(Long userId) {
+
+        return baseMapper.selectMonthDecimal(userId);
+
+    }
+
 }

+ 83 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeStatisticalVo.java

@@ -0,0 +1,83 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-05
+ */
+@ApiModel("老师APP首页数据统计")
+public class TeacherHomeStatisticalVo {
+
+
+    @ApiModelProperty("我的课程")
+    private  Integer courseSchedule;
+
+    @ApiModelProperty("课后作业")
+    private  Integer courseHomework;
+
+    @ApiModelProperty("课后评价")
+    private  Integer courseScheduleReplied;
+
+    @ApiModelProperty("我的乐谱")
+    private  Integer musicSheet;
+
+    @ApiModelProperty("我收到的评价")
+    private  Integer studentReplied;
+
+    @ApiModelProperty("我的收入")
+    private BigDecimal decimal;
+
+    public Integer getCourseSchedule() {
+        return courseSchedule;
+    }
+
+    public void setCourseSchedule(Integer courseSchedule) {
+        this.courseSchedule = courseSchedule;
+    }
+
+    public Integer getCourseHomework() {
+        return courseHomework;
+    }
+
+    public void setCourseHomework(Integer courseHomework) {
+        this.courseHomework = courseHomework;
+    }
+
+    public Integer getCourseScheduleReplied() {
+        return courseScheduleReplied;
+    }
+
+    public void setCourseScheduleReplied(Integer courseScheduleReplied) {
+        this.courseScheduleReplied = courseScheduleReplied;
+    }
+
+    public Integer getMusicSheet() {
+        return musicSheet;
+    }
+
+    public void setMusicSheet(Integer musicSheet) {
+        this.musicSheet = musicSheet;
+    }
+
+    public Integer getStudentReplied() {
+        return studentReplied;
+    }
+
+    public void setStudentReplied(Integer studentReplied) {
+        this.studentReplied = studentReplied;
+    }
+
+    public BigDecimal getDecimal() {
+        return decimal;
+    }
+
+    public void setDecimal(BigDecimal decimal) {
+        this.decimal = decimal;
+    }
+}

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

@@ -531,4 +531,36 @@
         ORDER BY ABS(NOW() - s.start_time_) ASC
         limit 1
     </select>
+
+    <select id="selectWeekNotStartCourseSchedule" resultType="java.lang.Integer">
+        select count(1)
+        from course_schedule cs
+        where cs.teacher_id_ = #{userId} and cs.status_ = 'NOT_START'
+        and YEARWEEK(date_format(cs.class_date_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
+    </select>
+
+    <select id="selectHomeworkNotDecorate" resultType="java.lang.Integer">
+        select count(1)
+        from course_schedule cs
+        left join course_homework ch on cs.id_ = ch.course_schedule_id_
+        where cs.teacher_id_ = #{userId} and cs.status_ = 'COMPLETE' and cs.type_ = 'PRACTICE'
+        and YEARWEEK(date_format(cs.class_date_,'%Y-%m-%d'),7) = YEARWEEK(now(),7)
+        and ch.id_ is null
+    </select>
+
+    <select id="selectNotRepliedCourseSchedule" resultType="java.lang.Integer">
+        select count(1)
+        from course_schedule cs
+        left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
+        where cs.teacher_id_ = #{userId} and cs.status_ = 'COMPLETE' and cs.type_ = 'PRACTICE'
+        and csr.teacher_replied_ is null
+    </select>
+
+    <select id="selectWeekStudentRepliedCourseSchedule" resultType="java.lang.Integer">
+        select count(1)
+        from course_schedule cs
+        left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
+        where cs.teacher_id_ = #{userId} and cs.status_ = 'COMPLETE' and cs.type_ = 'PRACTICE'
+        and csr.student_replied_ is not null
+    </select>
 </mapper>

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

@@ -448,4 +448,10 @@
         order by  ms.submit_audit_time_ desc
     </select>
 
+    <select id="selectTeacherMusicSheetCount" resultType="java.lang.Integer">
+        select count(1)
+        from music_sheet
+        where user_id_ = #{userId}
+        and state_ = 1 and audit_status_ = 'PASS' and del_flag_ = 0
+    </select>
 </mapper>

+ 7 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserAccountRecordMapper.xml

@@ -62,4 +62,11 @@
         </where>
         order by t.create_time_ desc
     </select>
+
+    <select id="selectMonthDecimal" resultType="java.math.BigDecimal">
+        select  sum(trans_amount_)
+        from user_cash_account_record
+        where in_or_out_ = 'IN' and account_id_ = #{userId}
+        and date_format(create_time_,'%Y-%m') = date_format(now(),'%Y-%m')
+    </select>
 </mapper>

+ 81 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherHomeController.java

@@ -0,0 +1,81 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
+import com.yonge.cooleshow.biz.dal.vo.CountVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherHomeStatisticalVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+
+/**
+ * Description 老师课后作业相关接口
+ *
+ * @author liujunchi
+ * @date 2022-04-13
+ */
+@Api(tags = "老师APP首页接口")
+@RestController
+@RequestMapping("/home")
+public class TeacherHomeController extends BaseController {
+
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+
+    @Autowired
+    private MusicSheetService musicSheetService;
+
+    @Autowired
+    private UserAccountRecordService userAccountRecordService;
+
+    @ApiOperation(value = "首页统计数据")
+    @GetMapping(value="/count")
+    public HttpResponseResult<TeacherHomeStatisticalVo> countTeacherHome() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null  || sysUser.getId() == null) {
+            return failed("用户信息获取失败");
+        }
+
+        // 我的课程
+        Integer courseSechedule  = courseScheduleService.getWeekNotStart(sysUser.getId());
+
+        // 课后作业
+        Integer courseHomework = courseScheduleService.getHomeworkNotDecorate(sysUser.getId());
+
+        // 课后评价
+        Integer courseScheduleReplied = courseScheduleService.getNotRepliedCourseSchedule(sysUser.getId());
+
+        // 我的乐谱
+        Integer musicSheet = musicSheetService.getTeacherMusicSheetCount(sysUser.getId());
+
+        // 我收到的评价
+        Integer studentReplied = courseScheduleService.getWeekStudentRepliedCourseSchedule(sysUser.getId());
+
+        // 我的收入
+        BigDecimal decimal = userAccountRecordService.getMonthDecimal(sysUser.getId());
+
+        TeacherHomeStatisticalVo teacherHomeStatisticalVo = new TeacherHomeStatisticalVo();
+        teacherHomeStatisticalVo.setCourseHomework(courseHomework);
+        teacherHomeStatisticalVo.setCourseScheduleReplied(courseScheduleReplied);
+        teacherHomeStatisticalVo.setCourseSchedule(courseSechedule);
+        teacherHomeStatisticalVo.setDecimal(decimal);
+        teacherHomeStatisticalVo.setMusicSheet(musicSheet);
+        teacherHomeStatisticalVo.setStudentReplied(studentReplied);
+        return succeed(teacherHomeStatisticalVo);
+    }
+
+
+
+}