| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.function.Function; |
| | |
| | | BigDecimal activityPrice = mgtActivityGoodsEditDto.getActivityPrice(); |
| | | BigDecimal activitySubscription = mgtActivityGoodsEditDto.getActivitySubscription(); |
| | | Integer activityNumber = mgtActivityGoodsEditDto.getActivityNumber(); |
| | | if(goodsId.equals(goodsId1) && activitySubscription1.compareTo(activitySubscription) != 0){ |
| | | if(null != activitySubscription && null != activitySubscription1 && |
| | | goodsId.equals(goodsId1) && activitySubscription1.compareTo(activitySubscription) != 0){ |
| | | throw new ServiceException("不能修改定金"); |
| | | } |
| | | if(goodsId.equals(goodsId1) && activityPrice1.compareTo(activityPrice) != 0){ |
| | |
| | | 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); |
| | | } |
| | |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(userJoinedString); |
| | | List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); |
| | | Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); |
| | | for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) { |
| | |
| | | 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()){ |
| | |
| | | } |
| | | return judge; |
| | | } |
| | | |
| | | /** |
| | | * 立即结束活动 |
| | | * @param mgtBaseGetDto |
| | | */ |
| | | @Override |
| | | public R endImmediately(MgtBaseGetDto mgtBaseGetDto) { |
| | | Activity activity = this.getById(mgtBaseGetDto.getId()); |
| | | if(null == activity){ |
| | | return R.fail("活动不存在"); |
| | | } |
| | | //判断是否在活动中 |
| | | Date now = new Date(); |
| | | if (now.before(activity.getActivityStartTime())||now.after(activity.getActivityEndTime())){ |
| | | return R.fail("未在活动时间范围内,不能执行立即结束操作"); |
| | | } |
| | | activity.setActivityEndTime(now); |
| | | activity.setUpdateTime(now); |
| | | activity.setUpdateUserId(mgtBaseGetDto.getUserId()); |
| | | this.updateById(activity); |
| | | return R.ok(); |
| | | } |
| | | } |