Browse Source

增加双十一活动接口

周箭河 4 years ago
parent
commit
f3e050e1bb

+ 33 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -288,6 +288,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (chargeInfo == null) {
             throw new BizException("支付项不存在");
         }
+        if (chargeInfo.getOpenFlag().equals(1)) {
+            throw new BizException("项目已关闭");
+        }
         BigDecimal amount = chargeInfo.getAmount();
         if (chargeInfo.getDiscountAmount() != null && chargeInfo.getDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {
             amount = amount.subtract(chargeInfo.getDiscountAmount());
@@ -296,7 +299,31 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("订单金额异常");
         }
 
+        if (chargeInfo.getMaxNum() != null) {
+            //重试避免人数过多频繁冲突
+            boolean flag = false;
+            for (int i = 1; i <= 10; i++) {
+                chargeInfo = sporadicChargeInfoDao.get(sporadicPayDto.getSporadicId());
+                if (chargeInfo.getMaxNum() >= chargeInfo.getPaidNum()) {
+                    throw new BizException("活动人数暂时已满,请稍后再试");
+                }
+                chargeInfo.setPaidNum(chargeInfo.getPaidNum() + 1);
+                chargeInfo.setUpdateTime(new Date());
+                int update = sporadicChargeInfoDao.update(chargeInfo);
+                if (update > 0) {
+                    flag = true;
+                    break;
+                }
+            }
+            if (!flag) {
+                throw new BizException("活动火爆,请稍后再试");
+            }
+        }
+
         OrderTypeEnum type = OrderTypeEnum.SPORADIC;
+        if (chargeInfo.getChargeType().equals(SporadicChargeTypeEnum.DOUBLE_ELEVEN2020)) {
+            type = OrderTypeEnum.DOUBLE_ELEVEN2020;
+        }
 
         Integer userId = sporadicPayDto.getUserId();
         String orderNo = idGeneratorService.generatorId("payment") + "";
@@ -522,7 +549,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, courseForms,remitFee,courseRemitFee);
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, courseForms, remitFee, courseRemitFee);
         studentPaymentOrder.setVersion(0);
 
         Date date = new Date();
@@ -729,7 +756,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder, courseForms,remitFee,courseRemitFee);
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder, courseForms, remitFee, courseRemitFee);
         studentPaymentOrder.setVersion(0);
         Date date = new Date();
 
@@ -1330,7 +1357,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
-	public boolean extensionApplyExpireDate(String musicGroupId, Date expireDate) {
+    public boolean extensionApplyExpireDate(String musicGroupId, Date expireDate) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -1357,7 +1384,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return true;
     }
 
-	@Override
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean applyQuitMusicGroup(String musicGroupId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -1419,7 +1446,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                     classGroupService.delSingle(classGroupId);
                 } else {
-                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
+                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId, true);
                 }
             }
 
@@ -1521,7 +1548,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                 classGroupService.delSingle(classGroupId);
             } else {
-                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
+                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId, true);
             }
         }
 

+ 24 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -54,7 +54,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
     @Autowired
     private ContractService contractService;
 
-    private final Logger logger= LoggerFactory.getLogger(this.getClass());
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Override
     public BaseDAO<Integer, SporadicChargeInfo> getDAO() {
@@ -89,7 +89,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             } else if (info.getChargeType().getCode() == 9) { //零星收费账户充值
                 sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getActualAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "零星收费账户充值", studentPaymentOrder.getTransNo());
             } else if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)) {
-                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(), 2,studentPaymentOrder.getOrderNo());
+                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(), 2, studentPaymentOrder.getOrderNo());
                 return true;
             } else {
                 //插入交易明细
@@ -139,8 +139,25 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             return true;
         }
         if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
-            if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)){
-                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(),0,studentPaymentOrder.getOrderNo());
+            if (info.getMaxNum() != null) {
+                //重试避免人数过多频繁冲突
+                boolean flag = false;
+                for (int i = 1; i <= 10; i++) {
+                    info = sporadicChargeInfoDao.get(info.getId());
+                    info.setPaidNum(info.getPaidNum() - 1);
+                    info.setUpdateTime(new Date());
+                    int update = sporadicChargeInfoDao.update(info);
+                    if (update > 0) {
+                        flag = true;
+                        break;
+                    }
+                }
+                if (!flag) {
+                    throw new BizException("活动火爆,请稍后再试");
+                }
+            }
+            if (info.getOrganId().equals(42) && info.getChargeType().equals(SporadicChargeTypeEnum.LEVEL)) {
+                degreeRegistrationService.updateStatus(studentPaymentOrder.getUserId(), 0, studentPaymentOrder.getOrderNo());
                 return true;
             }
 
@@ -213,9 +230,9 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
     @Transactional(rollbackFor = Exception.class)
     public void del(Integer id) {
         Integer count = studentPaymentOrderDao.countSporadicOrder(id);
-        if(count == null || count == 0){
+        if (count == null || count == 0) {
             sporadicChargeInfoDao.delete(id);
-        }else {
+        } else {
             throw new BizException("当前缴费项目存在收费记录,请走关闭流程");
         }
     }
@@ -231,7 +248,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
         }
         SporadicChargeInfo chargeInfo = sporadicChargeInfoDao.get(id);
         MusicGroup musicGroup = musicGroupDao.get(chargeInfo.getMusicGroupId());
-        if(musicGroup != null){
+        if (musicGroup != null) {
             chargeInfo.setMusicGroupName(musicGroup.getName());
         }
         if (chargeInfo != null) {