浏览代码

Merge remote-tracking branch 'origin/feature/0721-tenant' into feature/0721-tenant

Eric 1 年之前
父节点
当前提交
5864ec28db

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

@@ -6,7 +6,6 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
 import com.yonge.cooleshow.biz.dal.entity.TenantActivationCode;
 import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -76,4 +75,6 @@ public interface TenantActivationCodeService extends IService<TenantActivationCo
                           Long tenantId, Long userId, Long tenantAlbumPurchaseId);
 
     void activeById(String id, Long userId);
+
+    void resend(String code, Long userId, Long tenantId, Long tenantAlbumPurchaseId);
 }

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

@@ -1333,7 +1333,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
                 couponInfoService.updateUserOrderCouponInfo(CouponOrderWrapper.builder().orderNo(order.getOrderNo()).reset(true).build());
             } catch (Exception e) {
                 log.warn("直播课成课失败退款 退款失败,退款订单号 {}", order);
-                log.error("直播课成课失败退款 退款失败", e.getCause());
+                log.error("直播课成课失败退款 退款失败", e);
             }
         }
     }

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

@@ -1,33 +1,23 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import java.math.BigDecimal;
-import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
-import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo;
 import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
-import com.yonge.cooleshow.biz.dal.dao.AlbumMusicRelateDao;
-import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
-import com.yonge.cooleshow.biz.dal.dao.MusicSheetPurchaseRecordDao;
-import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.album.PurchaseRecordTypeEnum;
 import com.yonge.cooleshow.biz.dal.vo.StudentMusicAlbumOrderVo;
-import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.ActivityShareEnum;
@@ -551,8 +541,10 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         return album;
     }
 
+
     @Override
     public TenantAlbumWrapper.TenantAlbum tenantDetailAlbum(String albumId) {
+        Integer size = 0;
         Long tenantAlbumId;
         if (StringUtils.isEmpty(albumId)){
             //如果没传专辑id  则查询对应机构的专辑详情
@@ -596,8 +588,12 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
         //机构专辑曲目数
         List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId)
                 .eq(TenantAlbumMusic::getDelFlag,false).list();
-        List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
-        int size = MusicSheetIds.size();
+        List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
+        //计算符合条件的个数
+        if (CollectionUtils.isNotEmpty(MusicSheetIds)){
+            size = musicSheetService.lambdaQuery().in(MusicSheet::getId, MusicSheetIds).eq(MusicSheet::getState, true)
+                    .eq(MusicSheet::getDelFlag, false).count();
+        }
 
         //Integer musicNum = tenantAlbum.getMusicNum();
         //机构专辑简介

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

@@ -141,6 +141,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
     @Autowired
     private RedisCacheService redisCacheService;
 
+    @Autowired
+    private StudentService studentService;
+
+
     /**
      * 查询详情
      *
@@ -339,12 +343,15 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
             serviceFeeAmount = actualPrice;
         }
 
-        // 消息通知
-//        CompletableFuture.runAsync(() -> {
-//                    musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
-//                            userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
-//                }
-//        );
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            // 消息通知
+            CompletableFuture.runAsync(() -> {
+                        musicSheetService.sendBuyMessage(userPaymentOrder.getMerchId(), userPaymentOrder.getUserId(),
+                                userPaymentOrder.getBizId(), userPaymentOrder.getOrderClient(), userPaymentOrder.getOrderType());
+                    }
+            );
+        }
 
 
         // 计算分润
@@ -352,6 +359,19 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }
 
+    private boolean checkSendMessage(Long userId, ClientEnum orderClient) {
+        if (orderClient == null) {
+            return false;
+        }
+        if (orderClient.equals(ClientEnum.STUDENT)) {
+            Student student = studentService.getById(userId);
+            if (student == null) {
+                return false;
+            } else return student.getTenantId() == -1;
+        }
+        return true;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void practiceCourse(UserOrderDetailVo userPaymentOrder) {
@@ -462,7 +482,11 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
 
         //消息推送
         try {
-//            courseScheduleService.practiceSend(paymentList.get(0).getTeacherId(), userPaymentOrder.getUserId(), paymentList.size() + "", orderNo);
+
+            // 平台学生 发送推送
+            if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+                courseScheduleService.practiceSend(paymentList.get(0).getTeacherId(), userPaymentOrder.getUserId(), paymentList.size() + "", orderNo);
+            }
         } catch (Exception e) {
             log.error("陪练课消息推送失败");
         }
@@ -587,7 +611,12 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         }
         log.info("buyLiveCourseSuccess ok");
         //课程购买成功后进行消息推送
-//        courseGroupService.buyLiveSendMessage(studentPayment, courseGroup);
+
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            courseGroupService.buyLiveSendMessage(studentPayment, courseGroup);
+        }
+
     }
 
     @Override
@@ -665,7 +694,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
 
 
-//        videoLessonPurchaseRecordService.videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
+        // 平台学生 发送推送
+        if(checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient())) {
+            videoLessonPurchaseRecordService.videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup);
+        }
 
         // 赠品曲目、专辑插入用户曲目购买记录表
         List<CourseRelationMusicAlbum> musicAlbums = courseRelationMusicAlbumService.lambdaQuery()
@@ -742,7 +774,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         // 计算分润
         teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
 
-        memberPriceSettingsService.orderSuccess(userPaymentOrder,false);
+        memberPriceSettingsService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }
@@ -768,7 +800,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount);
 
 
-        activityPlanService.orderSuccess(userPaymentOrder,false);
+        activityPlanService.orderSuccess(userPaymentOrder,checkSendMessage(userPaymentOrder.getUserId(),userPaymentOrder.getOrderClient()));
 
         saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap);
     }

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

@@ -276,6 +276,31 @@ public class TenantActivationCodeServiceImpl extends ServiceImpl<TenantActivatio
 
     }
 
+    @Override
+    public void resend(String code, Long userId, Long tenantId, Long tenantAlbumPurchaseId) {
+        // 查询激活码信息
+        TenantActivationCode one = this.lambdaQuery()
+                .eq(TenantActivationCode::getActivationCode, code)
+                .eq(TenantActivationCode::getTenantId, tenantId)
+                .eq(TenantActivationCode::getTenantAlbumPurchaseId, tenantAlbumPurchaseId)
+                .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)
+                .last("limit 1")
+                .one();
+        if(one == null) {
+            throw new BizException("当前激活码不可以重发");
+        }
+        if (Boolean.TRUE.equals(one.getActivationStatus())) {
+            throw new BizException("激活码已经被使用");
+        }
+
+        SysUser sysUser = sysUserMapper.selectById(userId);
+        if (sysUser == null) {
+            throw new BizException("用户不存在");
+        }
+        one.setActivationPhone(sysUser.getPhone());
+        this.updateById(one);
+    }
+
 
     /**
      * 添加用户机构专辑激活记录

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

@@ -109,7 +109,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
     private PaymentDivMemberRecordService paymentDivMemberRecordService;
 
     @Autowired
-    private StudentService studentService;
+    private TenantAlbumMusicService tenantAlbumMusicService;
 
 
     @Autowired
@@ -963,6 +963,23 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         if (payTypeReq.getClientType().equals(ClientEnum.TENANT)) {
             resp.setPaymentVersion(EPaymentVersion.V2);
         }
+        //检查曲目数量
+        if(payTypeReq.getGoodType() == GoodTypeEnum.MUSIC){
+            //机构专辑曲目数
+            List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, payTypeReq.getBizId())
+                    .eq(TenantAlbumMusic::getDelFlag,false).list();
+            List<Long> musicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(musicSheetIds)){
+                Integer count = musicSheetService.lambdaQuery().in(MusicSheet::getId, musicSheetIds)
+                        .eq(MusicSheet::getState, true)
+                        .eq(MusicSheet::getDelFlag, false).count();
+                if(count < 1){
+                    throw new BizException("当前教程不可购买");
+                }
+            }else {
+                throw new BizException("当前教程不可购买");
+            }
+        }
         // 检测商品是属于老师,老师是否设置的结算给机构
 
         switch (payTypeReq.getGoodType()) {

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

@@ -248,6 +248,7 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
     @Override
     public TenantAlbumWrapper.TenantAlbum detailAlbum(String albumId) {
 
+        Integer size = 0;
         TenantAlbumWrapper.TenantAlbum album = new TenantAlbumWrapper.TenantAlbum();
 
         //如果没传专辑id  则查询对应机构的专辑详情
@@ -335,7 +336,11 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
         //机构专辑曲目数
         List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, tenantAlbumId).eq(TenantAlbumMusic::getDelFlag,false).list();
         List<Long> MusicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
-        int size = MusicSheetIds.size();
+       //计算符合条件的个数
+        if (CollectionUtils.isNotEmpty(MusicSheetIds)){
+             size = musicSheetService.lambdaQuery().in(MusicSheet::getId, MusicSheetIds).eq(MusicSheet::getState, true)
+                    .eq(MusicSheet::getDelFlag, false).count();
+        }
         //Integer musicNum = tenantAlbum.getMusicNum();
 
         //获取合奏曲目数量

+ 9 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -139,6 +139,15 @@ public class TenantActivationCodeController extends BaseController {
         return succeed();
     }
 
+
+    @ApiOperation(value = "激活码重发", notes = "机构激活码- 传入 TenantActivationCodeVo.TenantActivationCodeSend")
+    @PostMapping("/resend")
+    public HttpResponseResult<Boolean> resend(@Validated @RequestBody TenantActivationCodeVo.TenantActivationCodeResend send) {
+        TenantInfo tenantInfo = getTenantInfo();
+        tenantActivationCodeService.resend(send.getCode(),send.getUserId(),tenantInfo.getId(),send.getTenantAlbumPurchaseId());
+        return succeed();
+    }
+
     @ApiOperation(value = "激活码发放取消", notes = "传入 激活码的ID")
     @PostMapping("/sendCancel")
     public HttpResponseResult<Boolean> sendCancel(@RequestParam("id") Long id) {

+ 21 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/vo/TenantActivationCodeVo.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.util.ArrayList;
@@ -34,6 +35,26 @@ public class TenantActivationCodeVo {
         private List<Long> studentIdList = new ArrayList<>();
     }
 
+
+    @Data
+    @ApiModel(" TenantActivationCodeSend-机构激活码重发")
+    public static class TenantActivationCodeResend {
+
+
+        @ApiModelProperty("专辑购买记录的ID")
+        @NotNull(message = "专辑购买记录的ID不能为空")
+        private Long tenantAlbumPurchaseId;
+
+        @ApiModelProperty("激活码")
+        @NotBlank(message = "激活码不能为空")
+        private String code;
+
+        @ApiModelProperty("用户ID")
+        @NotNull(message = "用户ID不能为空")
+        private Long userId;
+    }
+
+
     @Data
     @ApiModel(" TenantActivationCode-机构激活码")
     public static class TenantActivationCode {