瀏覽代碼

琴房时间购买

刘俊驰 5 月之前
父節點
當前提交
465621bf2d

+ 12 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherHomeController.java

@@ -111,4 +111,16 @@ public class TeacherHomeController extends BaseController {
         return succeed(homeService.teacherTotalCourse(query));
     }
 
+
+    @ApiOperation(value = "我的乐谱")
+    @GetMapping("/musicSheetTotal")
+    public HttpResponseResult<TeacherHomeWrapper.MusicSheetTotal> musicSheetTotal() {
+        SysUser sysUser = sysUserService.getUser();
+        if (sysUser == null  || sysUser.getId() == null) {
+
+            return failed("用户信息获取失败");
+        }
+
+        return succeed(homeService.musicSheetTotal(sysUser.getId()));
+    }
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -356,6 +356,11 @@ public class MusicSheet implements Serializable {
 	@TableField(exist = false)
 	private String accJianPdfUrl;
 
+
+	@ApiModelProperty("曝光数")
+	@TableField("exposure_num_")
+	private Integer exposureNum;
+
 	public ChargeTypeEnum getChargeType() {
 		if (Objects.isNull(this.chargeType) && StringUtils.isNotEmpty(getPaymentType())) {
 

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

@@ -70,4 +70,12 @@ public interface HomeService {
      * @return TeacherHomeWrapper.TeacherTotalCourse
      */
     List<TeacherHomeWrapper.TeacherTotalCourse> teacherTotalCourse(TeacherHomeWrapper.TeacherTotalCourseQuery query);
+
+    /**
+     * 老师端首页统计乐谱
+     *
+     * @param teacherId 老师ID
+     * @return TeacherHomeWrapper.MusicSheetTotal 乐谱统计
+     */
+    TeacherHomeWrapper.MusicSheetTotal musicSheetTotal(Long teacherId);
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PaymentDivMemberRecordService.java

@@ -109,4 +109,9 @@ public interface PaymentDivMemberRecordService extends IService<PaymentDivMember
      */
     List<PaymentDivMemberRecord> getByOrderNo(String orderNo);
 
+    /**
+     * 琴房课
+     *
+     */
+    void pianoRoom(UserOrderDetailVo userOrderDetailVo);
 }

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

@@ -5,11 +5,14 @@ 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.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 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.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.SubjectHomeVo;
@@ -42,6 +45,9 @@ public class HomeServiceImpl implements HomeService {
     @Autowired
     private CourseScheduleService courseScheduleService;
 
+    @Autowired
+    private MusicSheetService musicSheetService;
+
     @Override
     public HomeUserToDoNum getUserToDoNum() {
         HomeUserToDoNum userToDoNum = baserMapper.getUserToDoNum();
@@ -323,4 +329,38 @@ public class HomeServiceImpl implements HomeService {
         return result;
     }
 
+
+    /**
+     * 老师端首页统计乐谱
+     *
+     * @param teacherId 老师ID
+     * @return TeacherHomeWrapper.MusicSheetTotal 乐谱统计
+     */
+    @Override
+    public TeacherHomeWrapper.MusicSheetTotal musicSheetTotal(Long teacherId) {
+
+        /*
+        曲目数量:审核通过、未下架的曲目数量
+
+        审核中:已提交审核还未通过审核的曲目
+
+        曝光:用户查看到曲目即曝光+1,同一个页面反复滑动查看曝光数不变;刷新页面或跳转到新页面则曝光+1
+
+        例:用户进入到首页,查看到当前曲目,曝光+1;用户在当前页面反复滑动,无刷新时,则曝光还是为1,用户刷新或跳转到新页面查看到该曲目时,曝光累计增加
+
+        付费人数:该老师所有的曲目付费人数,去重统计
+
+        收益:售卖曲目累计收益金额
+         */
+        TeacherHomeWrapper.MusicSheetTotal musicSheetTotal = new TeacherHomeWrapper.MusicSheetTotal();
+//        musicSheetService.lambdaQuery()
+//                .eq(MusicSheet::getUserId, teacherId)
+//                .eq(MusicSheet::getDelFlag,0)
+//                .eq(MusicSheet::getAuditStatus, AuthStatusEnum.PASS)
+//                .eq(MusicSheet::getState,1)
+
+        return musicSheetTotal;
+
+    }
+
 }

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

@@ -27,6 +27,8 @@ import com.yonge.cooleshow.biz.dal.mapper.PaymentDivMemberRecordMapper;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo;
+import com.yonge.cooleshow.biz.dal.vo.PianoRoomSettingsVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.PaymentDivMemberRecordWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
@@ -34,13 +36,16 @@ import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.payment.util.DistributedLock;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.joda.time.DateTime;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -150,6 +155,21 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     @Autowired
     private DiscountCardRecordService discountCardRecordService;
 
+    @Autowired
+    private PianoRoomSettingsService pianoRoomSettingsService;
+
+    @Autowired
+    private PianoRoomBuyRecordService pianoRoomBuyRecordService;
+
+    @Autowired
+    private PianoRoomChangeRecordService pianoRoomChangeRecordService;
+
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Autowired
+    private PianoRoomTimeService pianoRoomTimeService;
+
     /**
      * 查询详情
      *
@@ -423,7 +443,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         Date now = new Date();
         List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
         for (CourseScheduleStudentPaymentVo payment : paymentList) {
-            BigDecimal expectPrice = payment.getExpectPrice();//预计价格
+            BigDecimal expectPrice = payment.getActualPrice();//预计价格
 
             CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
             teacherSalary.setTeacherId(payment.getTeacherId());
@@ -471,7 +491,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
                 serviceFeeAmount = tenantdivMap.get(-1L);
             } else {
                 // 分润给老师
-                bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add);
+               teacherSalaryList.forEach(teacherSalary -> {
+                   bizMap.put(teacherSalary.getCourseScheduleId(), teacherSalary.getActualSalary());
+               });
             }
 
             saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
@@ -546,7 +568,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         List<CourseSchedule> courseList = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery()
                 .eq(CourseSchedule::getCourseGroupId, studentPayment.getCourseGroupId()));
         //课程总金额
-        BigDecimal totalExpectPrice = WrapperUtil.sumList(studentPaymentList, CourseScheduleStudentPayment::getExpectPrice);
+        BigDecimal totalExpectPrice = WrapperUtil.sumList(studentPaymentList, CourseScheduleStudentPayment::getActualPrice);
         //查询直播课服务费
         String liveServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.LIVE_SERVICE_RATE);
         BigDecimal liveServiceRate = new BigDecimal(liveServiceRateStr).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
@@ -605,7 +627,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
                 serviceFeeAmount = tenantdivMap.get(-1L);
             } else {
                 // 分润给老师
-                bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add);
+                teacherSalaryList.forEach(teacherSalary -> {
+                    bizMap.put(teacherSalary.getCourseScheduleId(), teacherSalary.getActualSalary());
+                });
             }
 
 
@@ -830,6 +854,29 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     }
 
 
+    /**
+     * 琴房课
+     *
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void pianoRoom(UserOrderDetailVo orderDetailVo) {
+        pianoRoomBuyRecordService.orderSuccess(orderDetailVo);
+// 分账
+        Map<Long, BigDecimal> tenantdivMap = new HashMap<>();
+        tenantdivMap.merge(-1L, orderDetailVo.getActualPrice(), BigDecimal::add);
+        // 分润
+        Map<Long, BigDecimal> teacherMap = new HashMap<>();
+        // 老师收入
+        Map<Long, BigDecimal> bizMap = new HashMap<>();
+
+        //服务费  原价的平台服务费 ,减去优惠券金额
+        BigDecimal serviceFeeAmount = orderDetailVo.getActualPrice();
+
+        saveData(orderDetailVo, tenantdivMap, teacherMap, bizMap, serviceFeeAmount);
+    }
+
+
     // 写入数据库
     private void saveData(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, Map<Long, BigDecimal> bizMap, BigDecimal serviceFeeAmount) {
 

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

@@ -228,6 +228,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         paymentSuccess.put(GoodTypeEnum.SVIP, paymentDivMemberRecordService::vip);
         paymentSuccess.put(GoodTypeEnum.DISCOUNT, paymentDivMemberRecordService::discount);
         paymentSuccess.put(GoodTypeEnum.ACTI_REGIST, paymentDivMemberRecordService::activity);
+        paymentSuccess.put(GoodTypeEnum.PIANO_ROOM, paymentDivMemberRecordService::pianoRoom);
 
         /**********订单取消后******************/
         // 沿用以前的流程

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/teacher/TeacherHomeWrapper.java

@@ -8,6 +8,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 public class TeacherHomeWrapper {
@@ -43,4 +44,28 @@ public class TeacherHomeWrapper {
         @ApiModelProperty("类型 PRACTICE:趣纠课,VIP_COURSE:VIP课,LIVE:直播课,VIDEO:视频课")
         private GoodTypeEnum goodType;
     }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class MusicSheetTotal{
+
+        @ApiModelProperty("曲目数量")
+        private Integer musicSheetNum = 0;
+
+        @ApiModelProperty("曲目审核中")
+        private Integer musicSheetAuditNum = 0;
+
+        @ApiModelProperty("曲目曝光数")
+        private Integer musicSheetExposureNum = 0;
+
+        @ApiModelProperty("曲目付费人数")
+        private Integer musicSheetPayNum = 0;
+
+        @ApiModelProperty("曲目收入")
+        private BigDecimal musicSheetIncome = BigDecimal.ZERO;
+    }
+
+
 }