Explorar o código

小小训练营

zouxuan %!s(int64=3) %!d(string=hai) anos
pai
achega
ac2357482b

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java

@@ -37,4 +37,6 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
     boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
 
     HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception;
+
+    HttpResponseResult checkActiveBuy(MemberPayParamDto memberPayParamDto);
 }

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -308,6 +308,49 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         return BaseController.succeed(result);
     }
 
+    @Override
+    public HttpResponseResult checkActiveBuy(MemberPayParamDto memberPayParamDto) {
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(()-> new BizException("请登录"));
+        //判断当前商品是否可以购买(库存、上架状态、是否购买过)
+        //如果是云教练商品,那么只能购买一次、如果是免费直播课,那么每次上架只能买一次,总共只能买2次
+        if(memberPayParamDto.getLiveGoodsId() == 1){
+            String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
+            List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
+            List<Cloud2022ActivityDto> activityDtos = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(activityDtos)){
+                return BaseController.failed("当前分部暂未开通活动");
+            }
+            //是否还有购买资格
+            Integer activityId = Integer.parseInt(activityDtos.get(0).getActivityId());
+            VipGroupActivity vipGroupActivity = Optional.of(vipGroupActivityDao.get(activityId)).orElseThrow(()-> new BizException("活动不存在"));
+            if(vipGroupActivity.getStudentMaxUsedTimes() != -1){
+                //获取活动购买次数
+                int activityBuyNum = activityUserMapperDao.countActivityBuyNum(vipGroupActivity.getId(),sysUser.getId());
+                if(activityBuyNum >= vipGroupActivity.getStudentMaxUsedTimes()){
+                    return BaseController.failed("您已达到购买次数上限");
+                }
+            }
+        } 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())){
+                return BaseController.failed("您已购买过本轮免费直播课");
+            }
+            //购买次数是否超过2次
+            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
+            if(count >= 2){
+                return BaseController.failed("免费直播课已达到购买次数上限");
+            }
+        }else {
+            return BaseController.failed("当前商品不可购买");
+        }
+        return BaseController.succeed();
+    }
+
     public static final String BUY_2_QQHE_LOCK = "BUY_2_QQHE_LOCK:";
 
     @Override

+ 6 - 4
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -114,13 +114,15 @@ public class MemberRankController extends BaseController {
     @ApiOperation(value = "2022小小训练营活动购买会员")
     @PostMapping("/activeBuy")
     public HttpResponseResult ActiveBuy(@RequestBody MemberPayParamDto memberPayParamDto) throws Exception {
-//		String startTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_start_time");
-//		String endTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_end_time");
-//        SysConfigService.checkActivityDate(startTimeStr,endTimeStr);
-
 		return memberRankSettingService.activeBuy(memberPayParamDto);
     }
 
+    @ApiOperation(value = "2022小小训练营活动购买会员")
+    @PostMapping("/checkActiveBuy")
+    public HttpResponseResult checkActiveBuy(@RequestBody MemberPayParamDto memberPayParamDto) throws Exception {
+		return memberRankSettingService.checkActiveBuy(memberPayParamDto);
+    }
+
     @ApiOperation(value = "查询订单列表")
     @GetMapping("/queryOrderPage")
     public Object queryOrderPage(CloudTeacherOrderQueryInfo queryInfo) {