zhangkaikai 1 سال پیش
والد
کامیت
59d6bc85cf

+ 105 - 8
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/CdKeyMgrController.java

@@ -1,24 +1,35 @@
 package com.qs.mp.web.controller.api.admin;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.CdKey;
 import com.qs.mp.admin.domain.CdKeyGroup;
+import com.qs.mp.admin.domain.CdKeyGroupGoods;
+import com.qs.mp.admin.domain.excel.CdKeyOrderExcel;
+import com.qs.mp.admin.domain.param.CdKeyActivateParam;
 import com.qs.mp.admin.domain.param.CdKeyCreateParam;
 import com.qs.mp.admin.domain.param.CdKeyQueryParam;
+import com.qs.mp.admin.domain.vo.CdKeyExchangeVO;
 import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
+import com.qs.mp.admin.domain.vo.CdKeyGroupVO;
+import com.qs.mp.admin.service.ICdKeyGroupGoodsService;
 import com.qs.mp.admin.service.ICdKeyGroupService;
+import com.qs.mp.admin.service.ICdKeyService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.common.enums.CdKeyGroupStatusEnum;
+import com.qs.mp.common.enums.CdKeyStatusEnum;
 import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.BaseController;
 import io.swagger.annotations.*;
+import ma.glasnost.orika.MapperFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -33,7 +44,16 @@ public class CdKeyMgrController extends BaseController {
 
 
     @Autowired
-    ICdKeyGroupService cdKeyGroupService;
+    private ICdKeyGroupService cdKeyGroupService;
+
+    @Autowired
+    private ICdKeyGroupGoodsService cdKeyGroupGoodsService;
+
+    @Autowired
+    private ICdKeyService cdKeyService;
+
+    @Autowired
+    private MapperFacade mapperFacade;
 
 
     @ApiOperation("兑换码生成")
@@ -57,15 +77,15 @@ public class CdKeyMgrController extends BaseController {
 
         QueryWrapper<CdKeyGroup> queryWrapper = new QueryWrapper<>();
 
-        if (Objects.nonNull(param.getCreateTimeStart())&&Objects.nonNull(param.getCreateTimeEnd())) {
+        if (Objects.nonNull(param.getCreateTimeStart()) && Objects.nonNull(param.getCreateTimeEnd())) {
             queryWrapper.between("created_time", param.getCreateTimeStart(), param.getCreateTimeEnd());
         }
 
-        if (Objects.nonNull(param.getActiveTimeStart())&&Objects.nonNull(param.getActiveTimeEnd())) {
+        if (Objects.nonNull(param.getActiveTimeStart()) && Objects.nonNull(param.getActiveTimeEnd())) {
             queryWrapper.between("activation_time", param.getActiveTimeStart(), param.getActiveTimeEnd());
         }
 
-        if (Objects.nonNull(param.getMinCdKeyNum())&&Objects.nonNull(param.getMaxCdKeyNum())) {
+        if (Objects.nonNull(param.getMinCdKeyNum()) && Objects.nonNull(param.getMaxCdKeyNum())) {
             queryWrapper.between("quantity", param.getMinCdKeyNum(), param.getMaxCdKeyNum());
         }
 
@@ -84,4 +104,81 @@ public class CdKeyMgrController extends BaseController {
         List<CdKeyGroup> list = cdKeyGroupService.list(queryWrapper);
         return getDataTable(list);
     }
+
+    @ApiOperation("兑换码详情")
+    @PreAuthorize("@ss.hasPermi('business:cdKey:query')")
+    @PostMapping("/detail/{groupId}")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "查询成功", response = CdKeyGroupVO.class)
+    )
+    public AjaxResult detail(@PathVariable String groupId) {
+        CdKeyGroupVO cdKeyGroupVO = new CdKeyGroupVO();
+        CdKeyGroup cdKeyGroup = cdKeyGroupService.getById(groupId);
+        mapperFacade.map(cdKeyGroup, CdKeyGroupVO.class);
+        List<CdKeyGroupGoods> goodsList = cdKeyGroupGoodsService.list(new QueryWrapper<CdKeyGroupGoods>().eq("group_id", groupId));
+        cdKeyGroupVO.setGoodsList(goodsList);
+        return AjaxResult.success(cdKeyGroupVO);
+    }
+
+    @ApiOperation("激活兑换码")
+    @PreAuthorize("@ss.hasPermi('business:cdKey:activate')")
+    @PostMapping("/activate")
+    public AjaxResult activate(@RequestBody CdKeyActivateParam param) {
+        CdKeyGroup cdKeyGroup = cdKeyGroupService.getById(param.getGroupId());
+        if (!CdKeyGroupStatusEnum.NONACTIVATED.getValue().equals(cdKeyGroup.getStatus())) {
+            return AjaxResult.error("只有未激活的兑换码组才能激活");
+        }
+        cdKeyGroup.setStatus(param.getStatus());
+        return AjaxResult.success(cdKeyGroupService.updateById(cdKeyGroup));
+    }
+
+    @ApiOperation("查看兑换码兑换详情")
+    @PreAuthorize("@ss.hasPermi('business:cdKey:query')")
+    @PostMapping("/exchangeDetail/{groupId}")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "查询成功", response = CdKeyExchangeVO.class)
+    )
+    public TableDataInfo exchangeDetail(@PathVariable String groupId) {
+        CdKeyExchangeVO exchangeVO = new CdKeyExchangeVO();
+        startPage();
+        List<CdKey> cdKeyList = cdKeyService.list(new QueryWrapper<CdKey>().eq("group_id", groupId));
+        long unCashedCount = cdKeyList.stream().filter(cdKey -> CdKeyStatusEnum.UNCASHED.getValue().equals(cdKey.getStatus())).count();
+        long cashedCount = cdKeyList.stream().filter(cdKey -> CdKeyStatusEnum.CASHED.getValue().equals(cdKey.getStatus())).count();
+        exchangeVO.setRemainQty((int) unCashedCount);
+        exchangeVO.setCashedQty((int) cashedCount);
+        List<CdKey> list = (List<CdKey>) getDataTable(cdKeyList).getRows();
+        exchangeVO.setCdKeyExchangeList(list);
+        return null;
+    }
+
+    @ApiOperation("导出兑换码订单")
+    @PreAuthorize("@ss.hasPermi('business:cdKey:export')")
+    @PostMapping("/export")
+    public AjaxResult export(@RequestBody CdKeyQueryParam  param) {
+        Date activeTimeStart = param.getActiveTimeStart();
+        Date activeTimeEnd = param.getActiveTimeEnd();
+        if (activeTimeStart == null || activeTimeEnd == null) {
+            return AjaxResult.error("导出订单必须设置激活时间范围");
+        }
+
+        List<CdKeyGroupListVO> list = cdKeyService.listCdKeyVO(new QueryWrapper<CdKeyGroup>()
+                .between("t2.activation_time", activeTimeStart, activeTimeEnd)
+                .between(null != param.getMinCdKeyNum() && null != param.getMaxCdKeyNum(), "t2.quantity", param.getMinCdKeyNum(), param.getMaxCdKeyNum())
+                .eq(null != param.getChannelId(), "t2.channel_id", param.getChannelId())
+                .eq(null != param.getStatus(), "t2.status", param.getStatus())
+        );
+
+        List<CdKeyOrderExcel> excelList = new ArrayList<>();
+        list.forEach(cdKeyGroupVO -> {
+            CdKeyOrderExcel cdKeyOrderExcel = new CdKeyOrderExcel();
+            cdKeyOrderExcel.setSiteName(cdKeyGroupVO.getSiteName());
+            cdKeyOrderExcel.setCdKey(cdKeyGroupVO.getCdKey());
+            cdKeyOrderExcel.setGoodsName(cdKeyGroupVO.getTitle());
+            cdKeyOrderExcel.setPicUrl(cdKeyGroupVO.getPicUrl());
+            excelList.add(cdKeyOrderExcel);
+        });
+
+        ExcelUtil<CdKeyOrderExcel> excelUtil = new ExcelUtil<>(CdKeyOrderExcel.class);
+        return excelUtil.exportExcel(excelList, "兑换码订单导出", false);
+    }
 }

+ 18 - 3
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserMineController.java

@@ -4,10 +4,9 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.qs.mp.admin.domain.Coupon;
-import com.qs.mp.admin.domain.CouponChannel;
-import com.qs.mp.admin.domain.Ticket;
+import com.qs.mp.admin.domain.*;
 import com.qs.mp.admin.domain.vo.TicketListVO;
+import com.qs.mp.admin.service.ICdKeyService;
 import com.qs.mp.admin.service.ICouponChannelService;
 import com.qs.mp.admin.service.ICouponService;
 import com.qs.mp.admin.service.IGoodsService;
@@ -26,6 +25,7 @@ import com.qs.mp.user.domain.UserCoinLog;
 import com.qs.mp.user.domain.UserCoupon;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.qs.mp.user.domain.dto.CoinTransferParamDTO;
+import com.qs.mp.user.domain.param.CdKeyExchangeParam;
 import com.qs.mp.user.domain.param.CoinTransferParam;
 import com.qs.mp.user.domain.param.CouponChannelQueryParam;
 import com.qs.mp.user.domain.param.UserPrizeStorageUpdateParam;
@@ -94,6 +94,9 @@ public class UserMineController extends BaseApiController {
     @Autowired
     private ISysUserService userService;
 
+    @Autowired
+    private ICdKeyService cdKeyService;
+
     @Log(title = "昵称和头像修改", businessType = BusinessType.UPDATE)
     @PostMapping("/updateUserInfo")
     public AjaxResult updateUserInfo(@RequestBody SysUser user) {
@@ -409,4 +412,16 @@ public class UserMineController extends BaseApiController {
         return AjaxResult.success(result);
     }
 
+    @ApiModelProperty(value = "兑换码兑换")
+    @PostMapping("/cdKey/exchange")
+    public AjaxResult ticketExchange(@RequestBody CdKeyExchangeParam param) {
+
+
+//        CdKey cdKey = cdKeyService.
+
+        return AjaxResult.success();
+
+
+    }
+
 }

+ 15 - 9
mp-service/src/main/java/com/qs/mp/admin/domain/CdKeyExchange.java

@@ -6,7 +6,8 @@ import java.util.Date;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
-import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -14,6 +15,7 @@ import lombok.Data;
  * @auther quanshu
  * @create 2023-05-16 17:21:23
  */
+@ApiModel("兑换码兑换表")
 @TableName("mp_cd_key_exchange")
 @Data
 public class CdKeyExchange implements Serializable {
@@ -22,28 +24,32 @@ public class CdKeyExchange implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-        /**
+    /**
      * 兑换码组id
      */
-         @TableField("group_id")
+    @ApiModelProperty("兑换码组id")
+    @TableField("group_id")
     private String groupId;
 
-        /**
+    /**
      * 兑换码id
      */
-         @TableField("key_id")
+    @ApiModelProperty("兑换码id")
+    @TableField("key_id")
     private String keyId;
 
-        /**
+    /**
      * 用户id
      */
-         @TableField("user_id")
+    @ApiModelProperty("用户id")
+    @TableField("user_id")
     private Long userId;
 
-        /**
+    /**
      * 兑换时间
      */
-         @TableField("exchange_time")
+    @ApiModelProperty("兑换时间")
+    @TableField("exchange_time")
     private Date exchangeTime;
 
 

+ 38 - 26
mp-service/src/main/java/com/qs/mp/admin/domain/CdKeyGroup.java

@@ -11,8 +11,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
 import com.baomidou.mybatisplus.annotation.*;
 import com.qs.mp.common.enums.ValidityPeriodEnum;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.apache.pulsar.shade.io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.NotNull;
 
@@ -26,76 +26,88 @@ import javax.validation.constraints.NotNull;
 public class CdKeyGroup implements Serializable {
     private static final long serialVersionUID = 1L;
 
-        /**
+    /**
      * 主键
      */
-         @TableId(value = "group_id", type = IdType.INPUT)
+    @ApiModelProperty("兑换码组id")
+    @TableId(value = "group_id", type = IdType.INPUT)
     private String groupId;
 
-        /**
+    /**
      * 渠道id
      */
-         @TableField("channel_id")
+    @ApiModelProperty("渠道id")
+    @TableField("channel_id")
     private Long channelId;
 
-        /**
+    /**
      * 门店名称
      */
-         @TableField("site_name")
+    @ApiModelProperty("门店名称")
+    @TableField("site_name")
     private String siteName;
 
-        /**
+    /**
      * 兑换码数量
      */
-         @TableField("quantity")
+    @ApiModelProperty("兑换码数量")
+    @TableField("quantity")
     private Integer quantity;
 
-        /**
+    /**
      * 已兑数量
      */
-         @TableField("cashed_qty")
+    @ApiModelProperty("已兑数量")
+    @TableField("cashed_qty")
     private Integer cashedQty;
 
-        /**
+    /**
      * 未兑数量
      */
-         @TableField("remain_qty")
+    @ApiModelProperty("未兑数量")
+    @TableField("remain_qty")
     private Integer remainQty;
 
-        /**
+    /**
      * 状态,未激活nonactivated/已激活activated/已失效invalid
      */
-         @TableField("status")
+    @ApiModelProperty("状态,待生成waiting/未激活nonactivated/已激活activated/已失效invalid")
+    @TableField("status")
     private String status;
 
-        /**
+    /**
      * 有效期,三个月threeMonths/六个月sixMonths/forever永久
      */
-         @TableField("validity_period")
-         private String validityPeriod;
+    @ApiModelProperty("有效期,三个月threeMonths/六个月sixMonths/永久forever")
+    @TableField("validity_period")
+    private String validityPeriod;
 
-        /**
+    /**
      * 创建时间
      */
-         @TableField("created_time")
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
     private Date createdTime;
 
-        /**
+    /**
      * 更新时间
      */
-         @TableField("updated_time")
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
     private Date updatedTime;
 
-        /**
+    /**
      * 激活时间
      */
-         @TableField("activation_time")
+    @ApiModelProperty("激活时间")
+    @TableField("activation_time")
     private Date activationTime;
 
-        /**
+    /**
      * 逻辑删除标识
      */
-         @TableField("is_deleted")
+    @ApiModelProperty("逻辑删除标记")
+    @TableField("is_deleted")
     @TableLogic
     private Integer isDeleted;
 

+ 28 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/CdKeyOrderExcel.java

@@ -0,0 +1,28 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-05-17 7:37 PM
+ **/
+
+@ApiModel("兑换码导出")
+@Data
+public class CdKeyOrderExcel {
+
+    @Excel(name = "门店名称")
+    private String siteName;
+
+    @Excel(name = "兑换码")
+    private String cdKey;
+
+    @Excel(name = "商品名称")
+    private String goodsName;
+
+    @Excel(name = "商品图片链接")
+    private String picUrl;
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/CdKeyActivateParam.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-05-17 4:01 PM
+ **/
+
+@ApiModel(value = "兑换码激活参数")
+@Data
+public class CdKeyActivateParam {
+    @ApiModelProperty(value = "兑换码组id")
+    private String groupId;
+
+    @ApiModelProperty("状态,待生成waiting/未激活nonactivated/已激活activated/已失效invalid")
+    private String status;
+}

+ 8 - 5
mp-service/src/main/java/com/qs/mp/admin/domain/param/CdKeyQueryParam.java

@@ -3,6 +3,9 @@ package com.qs.mp.admin.domain.param;
 import lombok.Data;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
 /**
  * @author zhangkaikai
  * @create 2023-05-17 9:43 AM
@@ -12,13 +15,13 @@ import io.swagger.annotations.ApiModelProperty;
 public class CdKeyQueryParam {
 
     @ApiModelProperty("创建开始时间")
-    private Data createTimeStart;
+    private Date createTimeStart;
     @ApiModelProperty("创建结束时间")
-    private Data createTimeEnd;
+    private Date createTimeEnd;
     @ApiModelProperty("激活开始时间")
-    private Data activeTimeStart;
+    private Date activeTimeStart;
     @ApiModelProperty("激活结束时间")
-    private Data activeTimeEnd;
+    private Date activeTimeEnd;
     @ApiModelProperty("最小兑换码数量")
     private Integer minCdKeyNum;
     @ApiModelProperty("最大兑换码数量")
@@ -28,5 +31,5 @@ public class CdKeyQueryParam {
     @ApiModelProperty("门店名称")
     private String siteName;
     @ApiModelProperty("状态")
-    private Integer status;
+    private String status;
 }

+ 29 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/CdKeyExchangeVO.java

@@ -0,0 +1,29 @@
+package com.qs.mp.admin.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.admin.domain.CdKey;
+import com.qs.mp.admin.domain.CdKeyExchange;
+import com.qs.mp.admin.domain.CdKeyGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-05-17 4:16 PM
+ **/
+@ApiModel("兑换码兑换详情")
+@Data
+public class CdKeyExchangeVO {
+
+    @ApiModelProperty("已兑数量")
+    private Integer cashedQty;
+
+    @ApiModelProperty("未兑数量")
+    private Integer remainQty;
+
+    @ApiModelProperty("兑换码兑换详情")
+    List<CdKey> cdKeyExchangeList;
+}

+ 9 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/CdKeyGroupListVO.java

@@ -33,4 +33,13 @@ public class CdKeyGroupListVO {
     @ApiModelProperty("状态")
     private String status;
 
+    @ApiModelProperty("兑换码")
+    private String cdKey;
+
+    @ApiModelProperty("商品名称")
+    private String title;
+
+    @ApiModelProperty("图片链接")
+    private String picUrl;
+
 }

+ 21 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/CdKeyGroupVO.java

@@ -0,0 +1,21 @@
+package com.qs.mp.admin.domain.vo;
+
+import com.qs.mp.admin.domain.CdKeyGroup;
+import com.qs.mp.admin.domain.CdKeyGroupGoods;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-05-17 3:45 PM
+ **/
+@ApiModel("兑换码出参类")
+@Data
+public class CdKeyGroupVO extends CdKeyGroup {
+
+    @ApiModelProperty("关联商品列表")
+    List<CdKeyGroupGoods> goodsList;
+}

+ 11 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/CdKeyMapper.java

@@ -1,7 +1,15 @@
 package com.qs.mp.admin.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.CdKey;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.admin.domain.CdKeyGroup;
+import com.qs.mp.admin.domain.vo.CdKeyExchangeVO;
+import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +18,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CdKeyMapper extends BaseMapper<CdKey> {
 
+    List<CdKeyGroupListVO> listCdKeyVO(@Param(Constants.WRAPPER) QueryWrapper<CdKeyGroup> queryWrapper);
+
+    CdKeyExchangeVO listCdKeyExchangeVO(@Param(Constants.WRAPPER) QueryWrapper<CdKey> queryWrapper);
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ICdKeyService.java

@@ -1,7 +1,13 @@
 package com.qs.mp.admin.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.CdKey;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.admin.domain.CdKeyGroup;
+import com.qs.mp.admin.domain.vo.CdKeyExchangeVO;
+import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
+
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICdKeyService extends IService<CdKey> {
 
+    List<CdKeyGroupListVO> listCdKeyVO(QueryWrapper<CdKeyGroup> queryWrapper);
+
+    CdKeyExchangeVO listCdKeyExchangeVO(QueryWrapper<CdKey> queryWrapper);
 }

+ 15 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/CdKeyServiceImpl.java

@@ -1,11 +1,17 @@
 package com.qs.mp.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.CdKey;
+import com.qs.mp.admin.domain.CdKeyGroup;
+import com.qs.mp.admin.domain.vo.CdKeyExchangeVO;
+import com.qs.mp.admin.domain.vo.CdKeyGroupListVO;
 import com.qs.mp.admin.mapper.CdKeyMapper;
 import com.qs.mp.admin.service.ICdKeyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @auther quanshu
  * @create 2023-05-16 17:20:42
@@ -14,4 +20,13 @@ import org.springframework.stereotype.Service;
 @Service
 public class CdKeyServiceImpl extends ServiceImpl<CdKeyMapper, CdKey> implements ICdKeyService {
 
+    @Override
+    public List<CdKeyGroupListVO> listCdKeyVO(QueryWrapper<CdKeyGroup> queryWrapper) {
+        return getBaseMapper().listCdKeyVO(queryWrapper);
+    }
+
+    @Override
+    public CdKeyExchangeVO listCdKeyExchangeVO(QueryWrapper<CdKey> queryWrapper) {
+        return getBaseMapper().listCdKeyExchangeVO(queryWrapper);
+    }
 }

+ 25 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/CdKeyExchangeParam.java

@@ -0,0 +1,25 @@
+package com.qs.mp.user.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-05-17 8:02 PM
+ **/
+@ApiModel("兑换码兑换参数")
+@Data
+public class CdKeyExchangeParam {
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("兑换码")
+    private String cdKey;
+
+
+}

+ 14 - 0
mp-service/src/main/resources/mapper/admin/CdKeyMapper.xml

@@ -18,5 +18,19 @@
     <sql id="Base_Column_List">
         key_id, group_id, ref_id, type, pic_url, status, cd_key, create_time
     </sql>
+    <select id="listCdKeyVO" resultType="com.qs.mp.admin.domain.vo.CdKeyGroupListVO">
+        select t2.site_name,t3.title,t1.cd_key,t3.pic_url
+        from mp_cd_key t1
+        left join mp_cd_key_group t2 on t1.group_id = t2.group_id
+        left join mp_cd_key_group_goods t3 on t1.group_id = t3.group_id
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="listCdKeyExchangeVO" resultType="com.qs.mp.admin.domain.vo.CdKeyExchangeVO">
+        select t1.title,t1.pic_url
+        from mp_cd_key_group_goods t1
+        left join on mp_cd_key_group t2 t1.group_id = t2.group_id
+        left join on
+    </select>
 
 </mapper>