package com.xiaopeng.operation.controller; import com.xiaopeng.api.dto.operation.XpActivityDto; import com.xiaopeng.api.model.operation.XpActicityStrategy; import com.xiaopeng.api.model.operation.XpActicityUser; 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.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.operation.service.IXpActicityService; import com.xiaopeng.operation.service.IXpActicityStrategyService; import com.xiaopeng.operation.service.IXpActicityUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.time.Duration; import java.time.LocalDateTime; import java.util.List; /** *

* 活动管理 前端控制器 *

* * @author mitao * @since 2026-02-03 */ @Api(tags = "活动管理") @RestController @RequestMapping("") @RequiredArgsConstructor(onConstructor_ = @Lazy) public class XpActicityController { @Resource private IXpActicityService service; /** * 获取所有白名单手机号 * @return */ @PostMapping("/logan/inner/acticity/findListToIds") @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-获取活动信息ids"}) public R> findListToIds(@RequestParam String acticityName){ if(acticityName == null){ return R.ok(); } return R.ok(service.findListToIds(acticityName)); } @Resource RedisTemplate redisTemplate; /** * 是否第一次进入某活动 * @return 活动信息,id 和 img */ @PostMapping("/logan/inner/acticity/firstEnter") @ApiOperation(value = "获取活动信息ids", tags = {"管理后台-活动首次进入情况"}) public R firstEnter(HttpServletRequest request){ String uid = request.getHeader("XP-Uid"); ValueOperations ops = redisTemplate.opsForValue(); XpActivity activity = service.activiting(); XpActivityVo ret = new XpActivityVo(); if (activity !=null) { BeanUtils.copyBeanProp(ret, activity); 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); } @PostMapping("/v1/api/appUserCoupon/pageList") @ApiOperation(value = "活动列表",tags = {"管理后台-活动管理"},response = XpActivity.class) public R> pageList(@RequestBody XpActivityPageListQuery query) { PageInfo pageList = service.pageList(query); return R.ok(pageList); } @PostMapping("/v1/api/appUserCoupon/add") @ApiOperation(value = "添加活动",tags = {"管理后台-活动管理"},response = XpCoupon.class) public R add(@RequestBody XpActivityDto dto){ service.save(dto); return R.ok(); } @PostMapping("/v1/api/appUserCoupon/update") @ApiOperation(value = "修改活动",tags = {"管理后台-活动管理"},response = XpCoupon.class) public R updateById(@RequestBody XpActivity xpActivity){ service.updateById(xpActivity); return R.ok(); } @GetMapping("/v1/api/appUserCoupon/update") @ApiOperation(value = "活动详情",tags = {"管理后台-活动管理"},response = XpCoupon.class) public R queryById(@RequestBody XpActivity xpActivity){ return R.ok(service.getById(xpActivity)); } }