| | |
| | | this.saveOrUpdate(activity); |
| | | // 获取活动商品信息 |
| | | List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList(); |
| | | |
| | | //存储需要更新缓存的库存数量 |
| | | List<Map<String, Object>> goods = new ArrayList<>(); |
| | | // 如果活动商品信息不为空,则保存活动商品信息 |
| | | if (!mgtActivityGoodsEditDtoList.isEmpty()) { |
| | | List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map( |
| | |
| | | .eq(ActivityGoods::getGoodsId, dto.getGoodsId()) |
| | | .eq(ActivityGoods::getDelFlag, 0) |
| | | ); |
| | | int number = 0; |
| | | if(null != activityGoods){ |
| | | //剩余数量 |
| | | Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activity.getActivityId() + "-" + dto.getGoodsId()); |
| | | surpNum = null == surpNum ? 0 : surpNum; |
| | | number = surpNum + (dto.getActivityNumber() - activityGoods.getActivityNumber()); |
| | | activityGoods.setActivityId(activity.getActivityId()); |
| | | activityGoods.setActivityPrice(dto.getActivityPrice()); |
| | | activityGoods.setActivitySubscription(dto.getActivitySubscription()); |
| | |
| | | activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag()); |
| | | activityGoods.setLimitNumber(activity.getLimitNumber()); |
| | | }else{ |
| | | number = dto.getActivityNumber(); |
| | | activityGoods = new ActivityGoods(); |
| | | activityGoods.setDelFlag(0); |
| | | activityGoods.setGoodsId(dto.getGoodsId()); |
| | |
| | | activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag()); |
| | | activityGoods.setLimitNumber(activity.getLimitNumber()); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("goodsId", dto.getGoodsId()); |
| | | map.put("number", number); |
| | | goods.add(map); |
| | | return activityGoods; |
| | | } |
| | | ).collect(Collectors.toList()); |
| | |
| | | activityGoodsService.saveOrUpdateBatch(activityGoodsList); |
| | | } |
| | | } |
| | | |
| | | //进行中的活动更新缓存中库存数量 |
| | | if(activity.getActivityStatus() == 1){ |
| | | for (Map<String, Object> good : goods) { |
| | | String goodsId = good.get("goodsId").toString(); |
| | | Integer number = Integer.valueOf(good.get("number").toString()); |
| | | redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activity.getActivityId()+"-"+goodsId,number); |
| | | } |
| | | } |
| | | |
| | | //如果活动在1小时内生成自动开始任务的延时任务 |
| | | Date checkTime = DateUtils.addMinutes(new Date(),61); |
| | | if(checkTime.compareTo(activityStartTime)>0){ |
| | |
| | | if(endDelayTask.getEndTime().compareTo(activityEndTime)!=0){ |
| | | remoteConfigService.deleteDelayTask(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId); |
| | | redisService.deleteObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId); |
| | | redisService.setCacheObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId, activityEndTime, startTimeDifference, TimeUnit.MILLISECONDS); |
| | | redisService.setCacheObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId, activityEndTime, endTimeDifference, TimeUnit.MILLISECONDS); |
| | | endDelayTask = new DelayTask(); |
| | | endDelayTask.setDelFlag(0); |
| | | endDelayTask.setCreateTime(new Date()); |
| | | endDelayTask.setEndTime(activityStartTime); |
| | | endDelayTask.setEndTime(activityEndTime); |
| | | endDelayTask.setRedisKey(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId); |
| | | remoteConfigService.addDelayTask(endDelayTask); |
| | | } |
| | |
| | | public void startActivity(String activityId){ |
| | | log.debug(activityId+"活动开始"); |
| | | Activity activity = this.getById(activityId); |
| | | if(activity!=null&&activity.getActivityStatus()==0){ |
| | | if(activity!=null && activity.getActivityStatus() == 0){ |
| | | activity.setActivityStatus(1); |
| | | List<ActivityGoods> activityGoodsList = activityGoodsService.listByActivityId(activityId); |
| | | if(activityGoodsList!=null&&!activityGoodsList.isEmpty()){ |