xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -25,6 +25,7 @@ import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery; import com.xiaopeng.api.vo.account.AppUserCouponSaveBatchVo; import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo; import com.xiaopeng.api.vo.account.NavigationCouponPickerVo; import com.xiaopeng.api.vo.account.UserCouponVo; @@ -407,12 +408,12 @@ /** * 批量保存数据 * @param xpAppUserCoupons * @param vo * @return */ @PostMapping("/logan/inner/appUserCoupon/saveBatch") public R<?> saveBatch(@RequestParam List<XpAppUserCoupon> xpAppUserCoupons){ xpAppUserCouponService.saveBatch(xpAppUserCoupons); public R<?> saveBatch(@RequestBody AppUserCouponSaveBatchVo vo){ xpAppUserCouponService.saveBatch(vo.getXpAppUserCoupons()); return R.ok(); } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpAppUserCouponClientFallbackFactory.java
@@ -7,6 +7,7 @@ import com.xiaopeng.api.feignClient.account.XpAppUserClient; import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.vo.account.AppUserCouponSaveBatchVo; import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.common.core.domain.R; @@ -74,7 +75,7 @@ } @Override public R<?> saveBatch(List<XpAppUserCoupon> xpAppUserCoupons) { public R<?> saveBatch(AppUserCouponSaveBatchVo vo) { return R.fail("批量保存数据失败"); } }; xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
@@ -4,6 +4,7 @@ import com.xiaopeng.api.dto.account.UseUserCouponDto; import com.xiaopeng.api.factory.account.XpAppUserCouponClientFallbackFactory; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.vo.account.AppUserCouponSaveBatchVo; import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.common.core.domain.R; @@ -82,9 +83,9 @@ /** * 批量保存数据 * @param xpAppUserCoupons * @param vo * @return */ @PostMapping("/logan/inner/appUserCoupon/saveBatch") R<?> saveBatch(@RequestParam List<XpAppUserCoupon> xpAppUserCoupons); R<?> saveBatch(@RequestBody AppUserCouponSaveBatchVo vo); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicityStrategy.java
@@ -59,7 +59,7 @@ @ApiModelProperty(value = "领取后指定日期生效") private LocalDate effectiveDays; @ApiModelProperty(value = "生效规则(1=次日0点失效,2=指定有效天数,3=指定日期失效)") @ApiModelProperty(value = "失效规则(1=次日0点失效,2=指定有效天数,3=指定日期失效)") private Integer expireRules; @ApiModelProperty(value = "有效天数") xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/AppUserCouponSaveBatchVo.java
New file @@ -0,0 +1,12 @@ package com.xiaopeng.api.vo.account; import com.xiaopeng.api.model.account.XpAppUserCoupon; import lombok.Data; import java.util.List; @Data public class AppUserCouponSaveBatchVo { List<XpAppUserCoupon> xpAppUserCoupons; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpShiftController.java
@@ -33,6 +33,7 @@ private IXpShiftService xpShiftService; @Autowired private TokenService tokenService; @ApiOperation(value = "班次管理分页列表", tags = "管理后台-运维执行") @PostMapping("/api/v1/shift/pageList") public R<PageInfo<XpShift>> pageList(@RequestBody XpShiftQuery query) { @@ -58,8 +59,6 @@ xpShiftService.removeById(id); return R.ok(); } @ApiOperation(value = "排班考勤-排班计划管理-获取所有班次数据", tags = "管理后台-运维执行") xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1408,7 +1408,8 @@ XpTask.Reject reject = task.reject(msg); rejects.add(reject); task.setExcluded(rejects); task.setReassignmentStatus(2); task.setReassignmentStatus(1); task.setStatus(4); Set<String> excludedUserIds = rejects.stream().map(XpTask.Reject::getRejectUserId).collect(Collectors.toSet()); Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData(); @@ -1428,6 +1429,7 @@ task.setHandleUserId(handlerUser); if(handlerUser == null) { task.setStatus(4); task.setReassignmentStatus(1); noticeAdministrator(task);//TODO 需要通知管理员手动处理,考虑再AliPushUtil 中给管理员发送消息 } updateById(task); @@ -1476,6 +1478,7 @@ task.setHandleUserId(handlerUser); if(handlerUser == null) { task.setStatus(4); task.setReassignmentStatus(1); noticeAdministrator(task); } task.setAssigneeTime(LocalDateTime.now()); @@ -1631,6 +1634,7 @@ task.setEndTime(LocalDateTime.now().plusDays(3)); } task.setReassignmentStatus(2); task.setStatus(1); task.setAssigneeTime(LocalDateTime.now()); task.setHandleUserId(handlerUserId.toString()); task.setVehicleId(null); xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpShiftMapper.xml
@@ -4,7 +4,8 @@ <select id="pageList" resultType="com.xiaopeng.api.model.maintenance.XpShift"> select id, shift_name, shift_color, start_time, end_time, is_rest, rest_start_time, rest_end_time, create_by, create_time, update_by, update_time, is_deleted rest_start_time, rest_end_time, create_by, create_time, update_by, update_time, is_deleted, max_start_time, min_start_time, max_end_time, min_end_time, cross_day from xp_shift where is_deleted = 0 order by create_time desc xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -99,35 +99,39 @@ public R<XpActivity> firstEnter(HttpServletRequest request) { String uid = request.getHeader("XP-Uid"); ValueOperations<String, String> ops = redisTemplate.opsForValue(); XpActivity activity = service.activiting(Long.valueOf(uid)); if (activity != null) { List<XpAppUserCoupon> couponList = appUserCouponClient.getXpAppUserCoupon(activity.getId()).getData(); Set<Long> longSet = couponList.stream().map(XpAppUserCoupon::getCouponId).collect(Collectors.toSet()); if (longSet.isEmpty()) { return R.ok(); } List<XpCoupon> xpCoupons1 = xpCouponService.listByIds(longSet); List<CouponVo> couponVos = new ArrayList<>(); for (XpCoupon xpCoupon : xpCoupons1) { XpAppUserCoupon xpAppUserCoupon = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).findFirst().get(); CouponVo vo = new CouponVo(); vo.setId(xpCoupon.getId()); vo.setConditionalAmount(xpCoupon.getConditionalAmount()); vo.setAmount(xpCoupon.getAmount()); vo.setCouponType(xpCoupon.getCouponType()); vo.setCouponName(xpCoupon.getCouponName()); vo.setCouponDesc(xpCoupon.getCouponDescription()); vo.setEndTime(xpAppUserCoupon.getExpirationTime().toString()); long count = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).count(); vo.setQuantity(count); couponVos.add(vo); } List<XpActivity> activityList = service.activiting(Long.valueOf(uid)); for (XpActivity activity : activityList) { Duration duration = Duration.between(LocalDateTime.now(), activity.getEndTime()); Boolean isFirst = ops.setIfAbsent(CacheConstants.firstEnterActivity(String.valueOf(activity.getId()), uid), "1", duration); activity.setIsFirst(isFirst); activity.setCoupons(couponVos); if(isFirst){ List<XpAppUserCoupon> couponList = appUserCouponClient.getXpAppUserCoupon(activity.getId()).getData(); Set<Long> longSet = couponList.stream().map(XpAppUserCoupon::getCouponId).collect(Collectors.toSet()); if (longSet.isEmpty()) { return R.ok(); } List<XpCoupon> xpCoupons1 = xpCouponService.listByIds(longSet); List<CouponVo> couponVos = new ArrayList<>(); for (XpCoupon xpCoupon : xpCoupons1) { XpAppUserCoupon xpAppUserCoupon = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).findFirst().get(); CouponVo vo = new CouponVo(); vo.setId(xpCoupon.getId()); vo.setConditionalAmount(xpCoupon.getConditionalAmount()); vo.setAmount(xpCoupon.getAmount()); vo.setCouponType(xpCoupon.getCouponType()); vo.setCouponName(xpCoupon.getCouponName()); vo.setCouponDesc(xpCoupon.getCouponDescription()); vo.setEndTime(xpAppUserCoupon.getExpirationTime().toString()); long count = couponList.stream().filter(s -> s.getCouponId().equals(xpCoupon.getId())).count(); vo.setQuantity(count); couponVos.add(vo); } activity.setIsFirst(isFirst); activity.setCoupons(couponVos); return R.ok(activity); } } return R.ok(activity); return R.ok(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpActicityService.java
@@ -22,7 +22,7 @@ List<String> findListToIds(String acticityName); XpActivity activiting(Long uid); List<XpActivity> activiting(Long uid); void save(XpActivityDto dto); @@ -35,4 +35,10 @@ * @return */ XpActivity getFloatActicity(Long uid); /** * 修改活动状态 */ void updateStatus(); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -1,12 +1,18 @@ package com.xiaopeng.operation.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.dto.account.UcUserInfo; import com.xiaopeng.api.dto.operation.XpActivityDto; import com.xiaopeng.api.feignClient.account.UserResourcesClient; import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.model.operation.*; import com.xiaopeng.api.query.operation.XpActivityPageListQuery; import com.xiaopeng.api.vo.account.AppUserCouponSaveBatchVo; import com.xiaopeng.common.core.utils.bean.BeanUtils; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.operation.mapper.XpActicityMapper; @@ -15,7 +21,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -39,13 +48,31 @@ private IXpActicityUserService userService; @Resource private IXpActivityNoticeService activityNotice; @Resource private XpOrderClient xpOrderClient; @Resource private IXpActicityStrategyService xpActicityStrategyService; @Resource private IXpActicityService xpActicityService; @Resource private IXpActicityUserService xpActicityUserService; @Resource private IXpWhitelistService xpWhitelistService; @Resource private IXpActicityCouponService xpActicityCouponService; @Resource private IXpCouponService xpCouponService; @Resource private XpAppUserCouponClient xpAppUserCouponClient; @Resource private UserResourcesClient userResourcesClient; @@ -67,7 +94,7 @@ } @Override public XpActivity activiting(Long uid) { public List<XpActivity> activiting(Long uid) { //获取当前用户可参与的活动 List<Integer> actitctiyIds = new ArrayList<>(); //全部用户 @@ -82,9 +109,9 @@ .last(" and JSON_CONTAINS(user_list, '" + uid + "', '$')")); actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList())); XpActivity one = this.getOne(new QueryWrapper<XpActivity>().eq("status", 2).eq("is_deleted", 0) List<XpActivity> one = this.list(new QueryWrapper<XpActivity>().eq("status", 2).eq("is_deleted", 0) .eq("mini_program_notification", 1).in(!actitctiyIds.isEmpty(), "id", actitctiyIds) .last(" and now() between start_time and end_time order by float_window_priority desc limit 1")); .last(" and now() between start_time and end_time")); return one; } @@ -126,6 +153,9 @@ xpActicityUser.setActitcityStrategeId(strategyMap.get(xpActicityUser.getStrategyName()).getId()); userService.save(xpActicityUser); } //执行修改活动状态 updateStatus(); } @Override @@ -170,4 +200,260 @@ .last(" and now() between start_time and end_time order by float_window_priority desc limit 1")); return one; } @Override public void updateStatus() { List<XpActivity> list = xpActicityService.list(new QueryWrapper<XpActivity>().in("status", Arrays.asList(1, 2)).eq("is_deleted", 0)); for (XpActivity xpActivity : list) { Integer status = xpActivity.getStatus(); if(1 == status && LocalDateTime.now().isAfter(xpActivity.getStartTime()) && LocalDateTime.now().isBefore(xpActivity.getEndTime())){ xpActivity.setStatus(2); //发放优惠券-发放一次的优惠券 List<XpActicityStrategy> list1 = xpActicityStrategyService.list(new QueryWrapper<XpActicityStrategy>().eq("actitcity_id", xpActivity.getId()) .eq("distribution_rules", 2)); for (XpActicityStrategy xpActicityStrategy : list1) { List<XpActicityCoupon> acticityCoupons = xpActicityCouponService.list(new QueryWrapper<XpActicityCoupon>().eq("acticity_strategy_id", xpActicityStrategy.getId())); List<XpCoupon> xpCoupons = xpCouponService.listByIds(acticityCoupons.stream().map(XpActicityCoupon::getCouponId).collect(Collectors.toList())); //总发放数量 Integer distributionsTotal = xpActicityStrategy.getDistributionsTotal(); //没人限量数量 Integer limitNumber = xpActicityStrategy.getLimitNumber(); List<XpActicityUser> list2 = xpActicityUserService.list(new QueryWrapper<XpActicityUser>().eq("actitcity_stratege_id", xpActicityStrategy.getId())); for (XpActicityUser xpActicityUser : list2) { Integer userType = xpActicityUser.getUserType(); //全部白名单用户 if(1 == userType){ List<XpWhitelist> list3 = xpWhitelistService.list(new QueryWrapper<XpWhitelist>().eq("is_deleted", 0).eq("status", 1)); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (XpWhitelist xpWhitelist : list3) { for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ for (Integer i = 0; i < limitNumber; i++) { XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(xpWhitelist.getAppUserId()); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(xpWhitelist.getAccount()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); if(null == distributionsTotal){ continue; } distributionsTotal--; if(distributionsTotal <= 0){ break; } } } } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } if(!xpAppUserCoupons.isEmpty()){ AppUserCouponSaveBatchVo vo = new AppUserCouponSaveBatchVo(); vo.setXpAppUserCoupons(xpAppUserCoupons); xpAppUserCouponClient.saveBatch(vo); } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } //老用户 if(2 == userType || 3 == userType || 4 == userType){ List<Long> longList = xpOrderClient.getUserTypeIdList(userType).getData(); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (Long userId : longList) { UcUserInfo baseUserByUid = userResourcesClient.getBaseUserByUid(userId.toString()); for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ for (Integer i = 0; i < limitNumber; i++) { XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(userId); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(baseUserByUid.getMobile()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); if(null == distributionsTotal){ continue; } distributionsTotal--; if(distributionsTotal <= 0){ break; } } } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } } if(!xpAppUserCoupons.isEmpty()){ AppUserCouponSaveBatchVo vo = new AppUserCouponSaveBatchVo(); vo.setXpAppUserCoupons(xpAppUserCoupons); xpAppUserCouponClient.saveBatch(vo); } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } //指定用户 if(5 == userType){ List<Long> userList = xpActicityUser.getUserList(); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (Long userId : userList) { UcUserInfo baseUserByUid = userResourcesClient.getBaseUserByUid(userId.toString()); for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ for (Integer i = 0; i < limitNumber; i++) { XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(userId); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(baseUserByUid.getMobile()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); if(null == distributionsTotal){ continue; } distributionsTotal--; if(distributionsTotal <= 0){ break; } } } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } if(null == distributionsTotal){ continue; } if(distributionsTotal <= 0){ break; } } if(!xpAppUserCoupons.isEmpty()){ AppUserCouponSaveBatchVo vo = new AppUserCouponSaveBatchVo(); vo.setXpAppUserCoupons(xpAppUserCoupons); xpAppUserCouponClient.saveBatch(vo); } } } } }else if(2 == status & LocalDateTime.now().isAfter(xpActivity.getEndTime())){ xpActivity.setStatus(3); } xpActicityService.updateById(xpActivity); } } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/task/ActivityTask.java
@@ -56,182 +56,7 @@ @Scheduled(cron = "0 0/1 * * * *") public void taskOrder1() { List<XpActivity> list = xpActicityService.list(new QueryWrapper<XpActivity>().in("status", Arrays.asList(1, 2)).eq("is_deleted", 0)); for (XpActivity xpActivity : list) { Integer status = xpActivity.getStatus(); if(1 == status && LocalDateTime.now().isAfter(xpActivity.getStartTime()) && LocalDateTime.now().isBefore(xpActivity.getEndTime())){ xpActivity.setStatus(2); //发放优惠券-发放一次的优惠券 List<XpActicityStrategy> list1 = xpActicityStrategyService.list(new QueryWrapper<XpActicityStrategy>().eq("actitcity_id", xpActivity.getId()) .eq("distribution_rules", 2)); for (XpActicityStrategy xpActicityStrategy : list1) { List<XpActicityCoupon> acticityCoupons = xpActicityCouponService.list(new QueryWrapper<XpActicityCoupon>().eq("actitcity_strategy_id", xpActicityStrategy.getId())); List<XpCoupon> xpCoupons = xpCouponService.listByIds(acticityCoupons.stream().map(XpActicityCoupon::getCouponId).collect(Collectors.toList())); List<XpActicityUser> list2 = xpActicityUserService.list(new QueryWrapper<XpActicityUser>().eq("actitcity_stratege_id", xpActicityStrategy.getId())); for (XpActicityUser xpActicityUser : list2) { Integer userType = xpActicityUser.getUserType(); //全部白名单用户 if(1 == userType){ List<XpWhitelist> list3 = xpWhitelistService.list(new QueryWrapper<XpWhitelist>().eq("is_deleted", 0).eq("status", 1)); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (XpWhitelist xpWhitelist : list3) { for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(xpWhitelist.getAppUserId()); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(xpWhitelist.getAccount()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); } } } if(!xpAppUserCoupons.isEmpty()){ xpAppUserCouponClient.saveBatch(xpAppUserCoupons); } } //老用户 if(2 == userType || 3 == userType || 4 == userType){ List<Long> longList = xpOrderClient.getUserTypeIdList(userType).getData(); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (Long userId : longList) { UcUserInfo baseUserByUid = userResourcesClient.getBaseUserByUid(userId.toString()); for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(userId); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(baseUserByUid.getMobile()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); } } } if(!xpAppUserCoupons.isEmpty()){ xpAppUserCouponClient.saveBatch(xpAppUserCoupons); } } //指定用户 if(5 == userType){ List<Long> userList = xpActicityUser.getUserList(); List<XpAppUserCoupon> xpAppUserCoupons = new ArrayList<>(); for (Long userId : userList) { UcUserInfo baseUserByUid = userResourcesClient.getBaseUserByUid(userId.toString()); for (XpActicityCoupon acticityCoupon : acticityCoupons) { XpCoupon xpCoupon = xpCoupons.stream().filter(s -> s.getId().equals(acticityCoupon.getCouponId())).findFirst().orElse(null); if(null != xpCoupon){ XpAppUserCoupon xpAppUserCoupon = new XpAppUserCoupon(); xpAppUserCoupon.setFullMoney(xpCoupon.getConditionalAmount()); xpAppUserCoupon.setMoney(xpCoupon.getAmount()); Integer expireRules = xpActicityStrategy.getExpireRules(); //次日0点失效 if(1 == expireRules){ LocalDateTime now = LocalDateTime.now(); LocalDateTime localDateTime = now.plusDays(1); LocalDateTime localDateTime1 = localDateTime.withHour(0).withMinute(0).withSecond(0); xpAppUserCoupon.setExpirationTime(localDateTime1); } //指定有效天数 if(2 == expireRules){ LocalDateTime now = LocalDateTime.now(); xpAppUserCoupon.setExpirationTime(now.plusDays(xpActicityStrategy.getExpireDays())); } //指定日期失效 if(3 == expireRules){ String format = xpActicityStrategy.getExpireDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDateTime localDateTime = LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); xpAppUserCoupon.setExpirationTime(localDateTime); } xpAppUserCoupon.setCouponId(acticityCoupon.getCouponId()); xpAppUserCoupon.setAppUserId(userId); xpAppUserCoupon.setStatus(1); xpAppUserCoupon.setActivityId(xpActivity.getId()); xpAppUserCoupon.setCouponName(xpCoupon.getCouponName()); xpAppUserCoupon.setDeleted(false); xpAppUserCoupon.setCreateTime(LocalDateTime.now()); xpAppUserCoupon.setUpdateTime(LocalDateTime.now()); xpAppUserCoupon.setPhone(baseUserByUid.getMobile()); xpAppUserCoupon.setTimeJson(JSON.toJSONString(xpActicityStrategy.getUsagePeriod())); xpAppUserCoupons.add(xpAppUserCoupon); } } } if(!xpAppUserCoupons.isEmpty()){ xpAppUserCouponClient.saveBatch(xpAppUserCoupons); } } } } }else if(2 == status & LocalDateTime.now().isAfter(xpActivity.getEndTime())){ xpActivity.setStatus(3); } xpActicityService.updateById(xpActivity); } xpActicityService.updateStatus(); }