| | |
| | | |
| | | |
| | | import com.xiaopeng.api.dto.operation.XpActivityDto; |
| | | import com.xiaopeng.api.model.operation.*; |
| | | 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.operation.XpActivityVo; |
| | | 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.utils.bean.BeanUtils; |
| | | import com.xiaopeng.common.core.web.page.PageInfo; |
| | | import com.xiaopeng.common.log.annotation.AdminOperationLog; |
| | | import com.xiaopeng.common.log.enums.AdminBusinessType; |
| | | import com.xiaopeng.common.log.enums.AdminOperationType; |
| | | import com.xiaopeng.operation.service.*; |
| | | 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; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | 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> |
| | |
| | | @Resource |
| | | private IXpActicityService service; |
| | | |
| | | @Resource |
| | | private IXpActicityCouponService xpActicityCouponService; |
| | | |
| | | @Resource |
| | | private IXpActicityStrategyService xpActicityStrategyService; |
| | | |
| | | @Resource |
| | | private IXpCouponService xpCouponService; |
| | | |
| | | @Resource |
| | | private XpAppUserCouponClient appUserCouponClient; |
| | | |
| | | |
| | | /** |
| | | * 获取所有白名单手机号 |
| | | * |
| | | * @return |
| | | */ |
| | | @PostMapping("/logan/inner/acticity/findListToIds") |
| | | @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-获取活动信息ids"}) |
| | | public R<List<String>> findListToIds(@RequestParam String acticityName){ |
| | | if(acticityName == null){ |
| | | public R<List<String>> findListToIds(@RequestParam String acticityName) { |
| | | if (acticityName == null) { |
| | | return R.ok(); |
| | | } |
| | | return R.ok(service.findListToIds(acticityName)); |
| | |
| | | |
| | | /** |
| | | * 是否第一次进入某活动 |
| | | * |
| | | * @return 活动信息,id 和 img |
| | | */ |
| | | @PostMapping("/logan/inner/acticity/firstEnter") |
| | | @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-活动首次进入情况"}) |
| | | public R<XpActivity> firstEnter(HttpServletRequest request){ |
| | | |
| | | @GetMapping("/api/v1/mini-program/acticity/firstEnter") |
| | | @ApiOperation(value = "获取是否第一次推送活动", tags = {"小程序-首页活动"}) |
| | | @XpClientCheck(checkToken = false, checkOtpToken = true) |
| | | public R<XpActivity> firstEnter(HttpServletRequest request) { |
| | | String uid = request.getHeader("XP-Uid"); |
| | | ValueOperations<String, String> ops = redisTemplate.opsForValue(); |
| | | XpActivity activity = service.activiting(); |
| | | XpActivityVo ret = new XpActivityVo(); |
| | | if (activity !=null) { |
| | | BeanUtils.copyBeanProp(ret, activity); |
| | | 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); |
| | | ret.setIsFirst(isFirst); |
| | | } |
| | | return R.ok(activity); |
| | | Boolean isFirst = ops.setIfAbsent(CacheConstants.firstEnterActivity(String.valueOf(activity.getId()), uid), "1", duration); |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否第一次进入某活动 |
| | | * |
| | | * @return 活动信息,id 和 img |
| | | */ |
| | | @GetMapping("/api/v1/mini-program/acticity/getFloatActicity") |
| | | @ApiOperation(value = "获取首页活动悬浮图标数据", tags = {"小程序-首页活动"}) |
| | | @XpClientCheck(checkToken = false, checkOtpToken = true) |
| | | public R<XpActivity> getFloatActicity(HttpServletRequest request) { |
| | | String uid = request.getHeader("XP-Uid"); |
| | | XpActivity activity = service.getFloatActicity(Long.valueOf(uid)); |
| | | return R.ok(activity); |
| | | } |
| | | |
| | | |
| | | @Resource |
| | | IXpActicityStrategyService strategyService; |
| | | @Resource |
| | | IXpActicityUserService userService; |
| | | @Resource |
| | | IXpActivityNoticeService noticeService; |
| | | |
| | | @PostMapping("/v1/api/appUserCoupon/pageList") |
| | | @ApiOperation(value = "活动列表",tags = {"管理后台-活动管理"},response = XpActivity.class) |
| | | public R<PageInfo<XpActivity>> pageList(@RequestBody XpActivityPageListQuery query) { |
| | | PageInfo<XpActivity> pageList = service.pageList(query); |
| | | @ApiOperation(value = "活动列表", tags = {"管理后台-活动管理"}, response = XpActivity.class) |
| | | public R<PageInfo<XpActivityDto>> pageList(@RequestBody XpActivityPageListQuery query) { |
| | | PageInfo<XpActivityDto> pageList = service.pageList(query); |
| | | for (XpActivityDto dto : pageList.getRecords()) { |
| | | List<XpActicityStrategy> strategies = strategyService.lambdaQuery().eq(XpActicityStrategy::getActitcityId, dto.getId()).list(); |
| | | dto.setStrategy(strategies); |
| | | dto.setActivityUser(userService.lambdaQuery().eq(XpActicityUser::getActitcityId, dto.getId()).list()); |
| | | } |
| | | return R.ok(pageList); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/v1/api/appUserCoupon/add") |
| | | @ApiOperation(value = "添加活动",tags = {"管理后台-活动管理"},response = XpCoupon.class) |
| | | public R<?> add(@RequestBody XpActivityDto dto){ |
| | | @ApiOperation(value = "添加活动", tags = {"管理后台-活动管理"}, response = XpCoupon.class) |
| | | @AdminOperationLog( |
| | | businessType = AdminBusinessType.ACTIVITY_MANAGEMENT, |
| | | operationType = AdminOperationType.ADD, |
| | | content = "添加活动", |
| | | appendRequestData = true |
| | | ) |
| | | public R<?> add(@RequestBody XpActivityDto dto) { |
| | | service.save(dto); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/v1/api/appUserCoupon/{op}") |
| | | @ApiOperation(value = "修改活动状态,release,pause,resume,stop,del",tags = {"管理后台-活动管理"},response = XpCoupon.class) |
| | | public R<XpActivity> updateById(@PathVariable String op,@RequestParam Long id){ |
| | | @ApiOperation(value = "修改活动状态,release,pause,resume,stop,del", tags = {"管理后台-活动管理"}, response = XpCoupon.class) |
| | | @AdminOperationLog( |
| | | businessType = AdminBusinessType.ACTIVITY_MANAGEMENT, |
| | | operationTypeExpression = "#p0 == 'release' ? T(com.xiaopeng.common.log.enums.AdminOperationType).RELEASE : (#p0 == 'del' ? T(com.xiaopeng.common.log.enums.AdminOperationType).DELETE : T(com.xiaopeng.common.log.enums.AdminOperationType).EDIT)", |
| | | contentExpression = "'修改活动状态:' + #p0 + ',id=' + #p1", |
| | | appendRequestData = true |
| | | ) |
| | | public R<XpActivity> updateById(@PathVariable String op, @RequestParam Long id) { |
| | | |
| | | XpActivity activity = service.getById(id); |
| | | switch (op){ |
| | | switch (op) { |
| | | case "release": |
| | | activity.setStatus(2); |
| | | break; |
| | |
| | | throw new UnsupportedOperationException("Unsupported" + op); |
| | | } |
| | | service.updateById(activity); |
| | | log.info("修改活动状态:{}",activity); |
| | | log.info("修改活动状态:{}", activity); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @GetMapping("/v1/api/appUserCoupon/detail") |
| | | @ApiOperation(value = "活动详情",tags = {"管理后台-活动管理"},response = XpCoupon.class) |
| | | public R<XpActivityDto> queryById(@RequestParam Long id){ |
| | | |
| | | @ApiOperation(value = "活动详情", tags = {"管理后台-活动管理"}, response = XpCoupon.class) |
| | | public R<XpActivityDto> queryById(@RequestParam Long id) { |
| | | return R.ok(service.detail(id)); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据活动id和优惠券id获取活动策略 |
| | | * |
| | | * @param activityId |
| | | * @param couponId |
| | | * @return |
| | | */ |
| | | @PostMapping("/logan/inner/acticity/getXpActicityStrategy") |
| | | public R<XpActicityStrategy> getXpActicityStrategy(@RequestParam("activityId") Long activityId, @RequestParam("couponId") Long couponId) { |
| | | XpActicityCoupon one = xpActicityCouponService.lambdaQuery().eq(XpActicityCoupon::getActivityId, activityId).eq(XpActicityCoupon::getCouponId, couponId).one(); |
| | | if (one == null) { |
| | | return R.ok(); |
| | | } |
| | | return R.ok(xpActicityStrategyService.getById(one.getActicityStrategyId())); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取当前所有有效活动 |
| | | * @return |
| | | */ |
| | | @GetMapping("/logan/inner/acticity/getAllEffectiveActivity") |
| | | R<List<XpActivity>> getAllEffectiveActivity(){ |
| | | List<XpActivity> list = service.lambdaQuery().eq(XpActivity::getStatus, 2).list(); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | } |