package com.xiaopeng.operation.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient;
import com.xiaopeng.api.model.operation.XpCoupon;
import com.xiaopeng.common.core.domain.R;
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.query.XpCouponListQuery;
import com.xiaopeng.operation.service.IXpCouponService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
import java.util.List;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import javax.annotation.Resource;
/**
*
* 优惠券管理 前端控制器
*
*
* @author mitao
* @since 2026-02-03
*/
@RestController
@RequestMapping("")
public class XpCouponController {
private final IXpCouponService xpCouponService;
public XpCouponController(IXpCouponService xpCouponService) {
this.xpCouponService = xpCouponService;
}
@PostMapping("/logan/inner/xp-coupon/getCouponById")
public R getCouponById(@RequestParam Long couponId){
XpCoupon xpCoupon = xpCouponService.getById(couponId);
return R.ok(xpCoupon);
}
/**
* 优惠券列表
*/
@PostMapping("/v1/api/xp-coupon/list")
@ApiOperation(value = "优惠券列表",tags = {"管理后台-优惠券"},response = XpCoupon.class)
public R> list(@RequestBody XpCouponListQuery query ){
return R.ok(xpCouponService.getList(query));
}
/**
* // 添加优惠券
* @param xpCoupon
* @return
*/
@PostMapping("/v1/api/xp-coupon/add")
@ApiOperation(value = "添加优惠券",tags = {"管理后台-优惠券"},response = XpCoupon.class)
@AdminOperationLog(
businessType = AdminBusinessType.COUPON_MANAGEMENT,
operationType = AdminOperationType.ADD,
content = "添加优惠券",
appendRequestData = true
)
public R> add(@RequestBody XpCoupon xpCoupon){
xpCouponService.save(xpCoupon);
return R.ok();
}
/**
* 优惠券详情
*/
@GetMapping("/v1/api/xp-coupon/queryById")
@ApiOperation(value = "优惠券详情",tags = {"管理后台-优惠券"},response = XpCoupon.class)
public R queryById(@RequestParam Long id){
XpCoupon xpCoupon = xpCouponService.getById(id);
return R.ok(xpCoupon);
}
@Resource XpAppUserCouponClient xpAppUserCouponClient;
/**
* 删除优惠券
*/
@DeleteMapping("/v1/api/xp-coupon/deleteById")
@ApiOperation(value = "删除优惠券",tags = {"管理后台-优惠券"},response = XpCoupon.class)
@AdminOperationLog(
businessType = AdminBusinessType.COUPON_MANAGEMENT,
operationType = AdminOperationType.DELETE,
contentExpression = "'删除优惠券,id=' + #p0",
appendRequestData = false
)
public R> deleteById(@RequestParam Long id){
if (!xpAppUserCouponClient.isHolding(id)){
xpCouponService.removeById(id);
return R.ok();
}
else{
return R.fail("该优惠券已有用户使用,无法作废 / 删除");
}
}
}