Browse Source

Merge branch 'saas_2022_05_17_activity' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 years ago
parent
commit
38d307f142

+ 35 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1808,11 +1808,13 @@ public class ExportServiceImpl implements ExportService {
             //专业
             if (row.getGroupType().equals(GroupType.VIP)) {
                 row.setVipCourseFee(row.getActualAmount());
-                VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
-                if (vipGroupInfo != null) {
-                    row.setSchoolName(vipGroupInfo.getSchoolName());
-                    row.setSubjectName(vipGroupInfo.getSubjectName());
-                    row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
+                if(StringUtils.isNotEmpty(row.getMusicGroupId()) && row.getClassGroupId() != null){
+                    VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
+                    if (vipGroupInfo != null) {
+                        row.setSchoolName(vipGroupInfo.getSchoolName());
+                        row.setSubjectName(vipGroupInfo.getSubjectName());
+                        row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
+                    }
                 }
                 if(row.getTypeDesc() == null){
                     //学员没有历史VIP课程则导出为【VIP课新增】
@@ -2166,25 +2168,28 @@ public class ExportServiceImpl implements ExportService {
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
                 //考级报名
                 if (row.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
-                    String[] feeTypes = row.getMemo().split(";");
-                    List<String> feeTypeList = Arrays.asList(feeTypes);
-                    for (String feeTypeStr : feeTypeList) {
-                        int index = feeTypeStr.lastIndexOf(":");
-                        if (index < 0) {
-                            continue;
-                        }
-                        BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1));
-                        if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
-                            typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
-                        }
-                        if (feeTypeStr.contains("VIP")) {
-                            row.setVipCourseFee(typeFee);
-                        } else if (feeTypeStr.contains("网管课")) {
-                            row.setPracticeCourseFee(typeFee);
-                        } else if (feeTypeStr.contains("乐理课")) {
-                            row.setTheoryCourseFee(typeFee);
+                	
+                	if(StringUtils.isNotBlank(row.getMemo())){
+                        String[] feeTypes = row.getMemo().split(";");
+                        List<String> feeTypeList = Arrays.asList(feeTypes);
+                        for (String feeTypeStr : feeTypeList) {
+                            int index = feeTypeStr.lastIndexOf(":");
+                            if (index < 0) {
+                                continue;
+                            }
+                            BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1));
+                            if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
+                                typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                            }
+                            if (feeTypeStr.contains("VIP")) {
+                                row.setVipCourseFee(typeFee);
+                            } else if (feeTypeStr.contains("网管课")) {
+                                row.setPracticeCourseFee(typeFee);
+                            } else if (feeTypeStr.contains("乐理课")) {
+                                row.setTheoryCourseFee(typeFee);
+                            }
                         }
-                    }
+                	}
                     row.setDegreeFee(row.getActualAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
                 } else {
                     if (row.getChargeType() != null && SporadicChargeTypeEnum.LEVEL.getCode().equals(row.getChargeType())) {
@@ -2518,11 +2523,13 @@ public class ExportServiceImpl implements ExportService {
             //专业
             if (row.getGroupType().equals(GroupType.VIP)) {
                 row.setVipCourseFee(row.getActualAmount());
-                VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
-                if (vipGroupInfo != null) {
-                    row.setSchoolName(vipGroupInfo.getSchoolName());
-                    row.setSubjectName(vipGroupInfo.getSubjectName());
-                    row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
+                if(StringUtils.isNotEmpty(row.getMusicGroupId()) && row.getClassGroupId() != null) {
+                    VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
+                    if (vipGroupInfo != null) {
+                        row.setSchoolName(vipGroupInfo.getSchoolName());
+                        row.setSubjectName(vipGroupInfo.getSubjectName());
+                        row.setEduTeacher(vipGroupInfo.getEducationalTeacherName());
+                    }
                 }
                 if(row.getTypeDesc() == null){
                     //学员没有历史VIP课程则导出为【VIP课新增】

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsServiceImpl.java

@@ -91,7 +91,7 @@ public class LiveGoodsServiceImpl extends BaseServiceImpl<Integer, LiveGoods>  i
 	@Transactional(rollbackFor = Exception.class)
 	public void reduceGoodsStock(Integer liveGoodsId, String liveId) {
 		int i = liveGoodsDao.reduceStock(liveGoodsId);
-		if (i == 0) throw new BizException("商品库存不足");
+		if (i == 0) throw new BizException("商品已售罄");
 //		RBucket<Integer> bucket = redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_STOCK_CACHE_KEY + liveId + liveGoodsId);
 //		boolean exists = bucket.isExists();
 //		if (exists) {

+ 18 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -89,6 +89,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     private LiveGoodsService liveGoodsService;
     @Autowired
     private TempBuyFreeLiveTheoryCourseDao tempBuyFreeLiveTheoryCourseDao;
+    @Autowired
+    private TempLittleArtistTrainingCampUserRelationDao tempLittleArtistTrainingCampUserRelationDao;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -240,7 +242,10 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             if (result.getCode() != 200) {
                 return result;
             }
+            //还原库存
+            liveGoodsService.addGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
         }
+        BigDecimal amount = BigDecimal.ZERO;
         //判断当前商品是否可以购买(库存、上架状态、是否购买过)
         //如果是云教练商品,那么只能购买一次、如果是免费直播课,那么每次上架只能买一次,总共只能买2次
         if(memberPayParamDto.getLiveGoodsId() == 1){
@@ -260,11 +265,15 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                     throw new BizException("您已达到购买次数上限");
                 }
             }
+            amount = vipGroupActivity.getMarketPrice();
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
         } else if (memberPayParamDto.getLiveGoodsId() == 2){
             RBucket<List<Integer>> bucket = redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY + memberPayParamDto.getLiveId());
             List<Integer> list = bucket.get();
+            if(CollectionUtils.isEmpty(list)){
+                list = new ArrayList<>();
+            }
             //当前用户是否购买过免费直播课
             if(list.contains(sysUser.getId())){
                 throw new BizException("您已购买过本轮免费直播课");
@@ -274,12 +283,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             if(count >= 2){
                 throw new BizException("免费直播课已达到购买次数上限");
             }
+            //保存购买记录
+            tempBuyFreeLiveTheoryCourseDao.insert(new TempBuyFreeLiveTheoryCourse(sysUser.getId()));
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
             list.add(sysUser.getId());
             bucket.set(list);
-            //保存购买记录
-            tempBuyFreeLiveTheoryCourseDao.insert(new TempBuyFreeLiveTheoryCourse(sysUser.getId()));
             return BaseController.succeed();
         }else {
             throw new BizException("当前商品不可购买");
@@ -287,7 +296,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         //优惠券使用范围
         String[] checkCoupon = CouponDetailTypeEnum.getAllowType(MEMBER);
         //校验优惠券
-        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(),BigDecimal.ZERO, true, checkCoupon);
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(),amount, true, checkCoupon);
         studentPaymentOrder.setUserId(sysUser.getId());
         studentPaymentOrder.setOrganId(sysUser.getOrganId());
         studentPaymentOrder.setMemo("小小训练营云教练购买");
@@ -558,6 +567,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
                 cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                //赠送陪练课
                 ActivityUserMapper activityUserMapper = new ActivityUserMapper();
                 activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
                 activityUserMapper.setUserId(studentPaymentOrder.getUserId());
@@ -566,6 +576,11 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 activityUserMapper.setGivePracticeFlag(1);
                 activityUserMapper.setReturnFee(false);
                 activityUserMapperDao.insert(activityUserMapper);
+                //赠送训练营
+                TempLittleArtistTrainingCampUserRelation tempLittleArtistTrainingCamp = new TempLittleArtistTrainingCampUserRelation();
+                tempLittleArtistTrainingCamp.setUserId(studentPaymentOrder.getUserId());
+                tempLittleArtistTrainingCamp.setState("NOT_APPLY");
+                tempLittleArtistTrainingCampUserRelationDao.insert(tempLittleArtistTrainingCamp);
                 //赠送优惠券
 //                Integer giveCouponId = activity.getGiveCouponId();
 //                Integer giveCouponNum = activity.getGiveCouponNum();

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -106,7 +106,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	}
 
 	public void sendMessage(List<Integer> studentIds,CourseSchedule.CourseScheduleType type,String courseDate,MessageTypeEnum messageTypeEnum){
-		Map<Integer, String> receivers = studentIds.stream().collect(Collectors.toMap(e -> e, e -> e.toString()));
+		Map<Integer, String> receivers = studentIds.stream().collect(Collectors.toMap(e -> e, e -> e.toString(), (k1, k2) -> k1));
 		sendMessageSource.batchSendMessage(MessageSender.JIGUANG,messageTypeEnum,
 				receivers,null,"STUDENT",courseDate,type.getMsg());
 	}

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/LiveGoodsMapper.xml

@@ -113,6 +113,6 @@
 		<include refid="queryPageSql" />
 	</select>
 	<select id="getLock" resultMap="LiveGoods">
-		SELECT * FROM live_goods WHERE id_ = #{id} FOR UPDATE LIMIT 1
+		SELECT * FROM live_goods WHERE id_ = #{id} LIMIT 1 FOR UPDATE
 	</select>
 </mapper>