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));
}
}