package com.xiaopeng.operation.controller; import com.xiaopeng.api.model.operation.XpActivity; 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 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.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; 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 = "活动管理") @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/findListToIds") @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); } }