xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -3,6 +3,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xiaopeng.account.model.dto.ReceiveCouponDto; import com.xiaopeng.account.model.dto.SendCouponDto; import com.xiaopeng.account.model.query.XpUserCouponListQuery; @@ -360,4 +361,15 @@ UserCouponListVo userCouponList = xpAppUserCouponService.getUserCouponList(orderMoney, uid); return R.ok(userCouponList); } /** * 获取用户活动领取的优惠券 * @return */ @PostMapping("/logan/inner/appUserCoupon/getXpAppUserCoupon") public R<List<XpAppUserCoupon>> getXpAppUserCoupon(@RequestParam Long activityId){ List<XpAppUserCoupon> list = xpAppUserCouponService.list(new QueryWrapper<XpAppUserCoupon>() .eq("activity_id", activityId).eq("is_deleted", 0)); return R.ok(list); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -16,7 +16,7 @@ import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.account.service.IXpAppUserCouponService; import com.xiaopeng.account.util.holiday.HolidayUtil; import com.xiaopeng.account.vo.CouponVo; import com.xiaopeng.api.vo.account.CouponVo; import com.xiaopeng.account.vo.UserCouponListVo; import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest; import com.xiaopeng.api.dto.account.UcUserInfo; xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/vo/UserCouponListVo.java
@@ -1,5 +1,6 @@ package com.xiaopeng.account.vo; import com.xiaopeng.api.vo.account.CouponVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpAppUserCouponClientFallbackFactory.java
@@ -6,6 +6,7 @@ import com.xiaopeng.api.dto.statistics.UserStatisticsDTO; 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.UserCouponVo; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; @@ -14,6 +15,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** * 小程序用户Feign客户端降级工厂 @@ -58,6 +60,11 @@ return null; } @Override public R<List<XpAppUserCoupon>> getXpAppUserCoupon(Long activityId) { log.error("获取用户活动领取的优惠券失败,原因: {}", cause.getMessage()); return R.fail("获取用户活动领取的优惠券失败,原因: "+cause.getMessage()); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
@@ -3,6 +3,7 @@ import com.xiaopeng.api.dto.account.GetUserCouponDto; 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.UserCouponVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; @@ -11,8 +12,10 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.util.List; /** * 小程序用户Feign客户端 @@ -53,4 +56,12 @@ @ApiOperation(value = "活动发放优惠券", tags = {"管理后台-活动发放优惠券"}) R<String> saveInfo_activity(@RequestBody UseUserCouponDto dto) ; /** * 获取用户活动领取的优惠券 * @return */ @PostMapping("/logan/inner/appUserCoupon/getXpAppUserCoupon") R<List<XpAppUserCoupon>> getXpAppUserCoupon(@RequestParam Long activityId); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActivity.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.api.vo.account.CouponVo; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -131,5 +132,5 @@ @ApiModelProperty(value = "优惠券") @TableField(exist = false) private List<XpActicityCoupon> coupons; private List<CouponVo> coupons; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/CouponVo.java
File was renamed from xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/vo/CouponVo.java @@ -1,4 +1,4 @@ package com.xiaopeng.account.vo; package com.xiaopeng.api.vo.account; import io.swagger.annotations.ApiModel; @@ -30,4 +30,6 @@ private String stackable; @ApiModelProperty("生效规则") private String effectAndInvalid; @ApiModelProperty("数量") private Long quantity; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpActicityController.java
@@ -2,17 +2,21 @@ import com.xiaopeng.api.dto.operation.XpActivityDto; import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.model.operation.XpActicityCoupon; import com.xiaopeng.api.model.operation.XpActicityStrategy; import com.xiaopeng.api.model.operation.XpActivity; import com.xiaopeng.api.model.operation.XpCoupon; import com.xiaopeng.api.query.operation.XpActivityPageListQuery; import com.xiaopeng.api.vo.account.CouponVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.operation.service.IXpActicityCouponService; import com.xiaopeng.operation.service.IXpActicityService; import com.xiaopeng.operation.service.IXpActicityStrategyService; import com.xiaopeng.operation.service.IXpCouponService; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -27,7 +31,10 @@ import javax.servlet.http.HttpServletRequest; import java.time.Duration; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * <p> @@ -54,7 +61,12 @@ private IXpActicityStrategyService xpActicityStrategyService; @Resource private IXpActicityCouponService couponService; private IXpCouponService xpCouponService; @Resource private XpAppUserCouponClient appUserCouponClient; /** * 获取所有白名单手机号 @@ -86,11 +98,28 @@ ValueOperations<String, String> ops = redisTemplate.opsForValue(); XpActivity activity = service.activiting(Long.valueOf(uid)); if (activity !=null) { List<XpActicityCoupon> cps = couponService.lambdaQuery().eq(XpActicityCoupon::getActivityId, activity.getId()).list(); List<XpAppUserCoupon> couponList = appUserCouponClient.getXpAppUserCoupon(activity.getId()).getData(); Set<Long> longSet = couponList.stream().map(XpAppUserCoupon::getCouponId).collect(Collectors.toSet()); 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); } 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(cps); activity.setCoupons(couponVos); } return R.ok(activity); }