Quellcode durchsuchen

修改齐齐哈尔购买会员的逻辑

hgw vor 3 Jahren
Ursprung
Commit
0cf95df80a

+ 45 - 39
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -213,26 +213,13 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         String[] checkCoupon = CouponDetailTypeEnum.getAllowType(MEMBER);
         //使用优惠券
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(dto.getCouponIdList(), amount, true, checkCoupon);
+        //写入redis证明是活动购买
+        String orderNo = idGeneratorService.generatorId("payment") + "";
+        studentPaymentOrder.setOrderNo(orderNo);
+        RBucket<Object> cache = redissonClient.getBucket(BUY_2_QQHE_LOCK + orderNo);
+        cache.set(totalMonth, 35, TimeUnit.MINUTES);
         //创建订单
         Map<String, Object> result = getMap(dto.getAmount(), dto.getUseBalancePayment(), sysUser.getId(), sysUser.getOrganId(), studentPaymentOrder);
-        //写cloud order
-        LocalDate now = LocalDate.now();
-        CloudTeacherOrder cto = new CloudTeacherOrder();
-        cto.setStatus(0);//0 未生效
-        cto.setOrganId(sysUser.getOrganId());
-        cto.setStudentId(sysUser.getId());
-        cto.setType(PeriodEnum.MONTH);
-        cto.setLevel(1);
-        cto.setTime(totalMonth.intValue());
-        cto.setAmount(studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount()));
-        cto.setStartTime(now.toDate());
-        cto.setEndTime(now.plusMonths(totalMonth.intValue()).toDate());
-        cto.setOrderId(studentPaymentOrder.getId());
-        cto.setCreateTime(new Date());
-        cloudTeacherOrderService.insert(cto);
-        //写入redis证明是活动购买
-        RBucket<Object> cache = redissonClient.getBucket(BUY_2_QQHE_LOCK + studentPaymentOrder.getOrderNo());
-        cache.set(1, 35, TimeUnit.MINUTES);
         return BaseController.succeed(result);
     }
 
@@ -323,8 +310,10 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         if (UseBalance) {
             useBalanceAmount(studentPaymentOrder, "购买会员");
         }
-        String orderNo = idGeneratorService.generatorId("payment") + "";
-        studentPaymentOrder.setOrderNo(orderNo);
+        if (StringUtils.isBlank(studentPaymentOrder.getOrderNo())) {
+            String orderNo = idGeneratorService.generatorId("payment") + "";
+            studentPaymentOrder.setOrderNo(orderNo);
+        }
         studentPaymentOrder.setCreateTime(date);
         studentPaymentOrder.setUpdateTime(date);
         studentPaymentOrder.setVersion(0);
@@ -403,25 +392,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             logger.info("orderCallback >>> member param organId {}   orderTime {} activityDate {}  cache {}", sysUser.getOrganId(), studentPaymentOrder.getCreateTime(), activityDate, cache.isExists());
             //分部编号59 并且下单时间大于等于activityDateStr  todo 并且redis能查询到的就算齐齐哈尔活动购买的
             if (sysUser.getOrganId() == 59 && studentPaymentOrder.getCreateTime().after(activityDate) && cache.isExists()) {
-                //修改 cloudTeacherOrderService
-                CloudTeacherOrder cloudTeacherOrder = cloudTeacherOrderService.queryByOrderId(studentPaymentOrder.getId());
-                cloudTeacherOrder.setStatus(2);
-                cloudTeacherOrder.setUpdateTime(nowDate);
-                cloudTeacherOrderService.update(cloudTeacherOrder);
-                //修改student 查询学生现在的会员过期没,如果过期了就按现在时间来,如果没过期就在结束时间上叠加
-                logger.info("orderCallback >>> member MembershipStartTime {} now {}", student.getMembershipStartTime(), nowDate);
-                if (Objects.nonNull(student.getMembershipStartTime()) && student.getMembershipStartTime().getTime() >= nowDate.getTime()) {
-                    student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
-                } else {
-                    student.setMembershipStartTime(cloudTeacherOrder.getStartTime());
-                    student.setMembershipEndTime(cloudTeacherOrder.getEndTime());
-                }
-                student.setMemberRankSettingId(1);
-                studentService.update(student);
-                //发送激活信息
-                Map<Integer, String> userPhones = new HashMap<>();
-                userPhones.put(sysUser.getId(), sysUser.getPhone());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.CLOUD_TEACHER_ORDER_SUCCESS, userPhones, null, 0, null, null);
+                //齐齐哈尔会员活动
+                qqheMemberActivity(studentPaymentOrder, student, sysUser, cache);
                 //删除标记
                 cache.delete();
             } else {
@@ -459,6 +431,40 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         return true;
     }
 
+    //齐齐哈尔会员活动
+    private void qqheMemberActivity(StudentPaymentOrder studentPaymentOrder, Student student, SysUser sysUser, RBucket<Object> cache) {
+        BigDecimal totalMonth = (BigDecimal) cache.get();
+        //写cloud order
+        LocalDate now = LocalDate.now();
+        CloudTeacherOrder cto = new CloudTeacherOrder();
+        cto.setStatus(2);
+        cto.setOrganId(sysUser.getOrganId());
+        cto.setStudentId(sysUser.getId());
+        cto.setType(PeriodEnum.MONTH);
+        cto.setLevel(1);
+        cto.setTime(totalMonth.intValue());
+        cto.setAmount(studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount()));
+        cto.setStartTime(now.toDate());
+        cto.setEndTime(now.plusMonths(totalMonth.intValue()).toDate());
+        cto.setOrderId(studentPaymentOrder.getId());
+        cto.setCreateTime(new Date());
+        cloudTeacherOrderService.insert(cto);
+        //修改student 查询学生现在的会员过期没,如果过期了就按现在时间来,如果没过期就在结束时间上叠加
+        logger.info("orderCallback >>> member MembershipStartTime {} now {}", student.getMembershipStartTime(), now);
+        if (Objects.nonNull(student.getMembershipStartTime()) && student.getMembershipStartTime().getTime() >= now.toDate().getTime()) {
+            student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cto.getTime()));
+        } else {
+            student.setMembershipStartTime(cto.getStartTime());
+            student.setMembershipEndTime(cto.getEndTime());
+        }
+        student.setMemberRankSettingId(1);
+        studentService.update(student);
+        //发送激活信息
+        Map<Integer, String> userPhones = new HashMap<>();
+        userPhones.put(sysUser.getId(), sysUser.getPhone());
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.CLOUD_TEACHER_ORDER_SUCCESS, userPhones, null, 0, null, null);
+    }
+
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public HttpResponseResult ActiveBuy(Integer userId, Integer memberRankId, PeriodEnum month, BigDecimal amount, boolean isUseBalance, Integer buyNum, int giveNum, int activeRemark, String remark, boolean repay) throws Exception {