Explorar o código

Merge branch 'dev' into 'mp-server-test'

Dev

See merge request quanshu/mp-server!513
zhong chunping %!s(int64=2) %!d(string=hai) anos
pai
achega
4fb18f0d50
Modificáronse 31 ficheiros con 1286 adicións e 0 borrados
  1. 49 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/MarketingMgrController.java
  2. 123 0
      mp-service/src/main/java/com/qs/mp/admin/domain/Marketing.java
  3. 103 0
      mp-service/src/main/java/com/qs/mp/admin/domain/MarketingAwards.java
  4. 127 0
      mp-service/src/main/java/com/qs/mp/admin/domain/MarketingAwardsPrize.java
  5. 39 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingAwardsParam.java
  6. 32 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingAwardsPrizeParam.java
  7. 49 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingCreateParam.java
  8. 52 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingUpdateParam.java
  9. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingAwardsMapper.java
  10. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingAwardsPrizeMapper.java
  11. 13 0
      mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingMapper.java
  12. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/IMarketingAwardsPrizeService.java
  13. 16 0
      mp-service/src/main/java/com/qs/mp/admin/service/IMarketingAwardsService.java
  14. 29 0
      mp-service/src/main/java/com/qs/mp/admin/service/IMarketingService.java
  15. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingAwardsPrizeServiceImpl.java
  16. 20 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingAwardsServiceImpl.java
  17. 141 0
      mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java
  18. 11 0
      mp-service/src/main/java/com/qs/mp/system/domain/SysUser.java
  19. 95 0
      mp-service/src/main/java/com/qs/mp/user/domain/MarketingHitPrize.java
  20. 102 0
      mp-service/src/main/java/com/qs/mp/user/domain/MarketingUserCode.java
  21. 13 0
      mp-service/src/main/java/com/qs/mp/user/mapper/MarketingHitPrizeMapper.java
  22. 13 0
      mp-service/src/main/java/com/qs/mp/user/mapper/MarketingUserCodeMapper.java
  23. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IMarketingHitPrizeService.java
  24. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IMarketingUserCodeService.java
  25. 20 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/MarketingHitPrizeServiceImpl.java
  26. 20 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/MarketingUserCodeServiceImpl.java
  27. 24 0
      mp-service/src/main/resources/mapper/admin/MarketingAwardsMapper.xml
  28. 27 0
      mp-service/src/main/resources/mapper/admin/MarketingAwardsPrizeMapper.xml
  29. 27 0
      mp-service/src/main/resources/mapper/admin/MarketingMapper.xml
  30. 23 0
      mp-service/src/main/resources/mapper/user/MarketingHitPrizeMapper.xml
  31. 24 0
      mp-service/src/main/resources/mapper/user/MarketingUserCodeMapper.xml

+ 49 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/MarketingMgrController.java

@@ -0,0 +1,49 @@
+package com.qs.mp.web.controller.api.admin;
+
+import com.qs.mp.admin.domain.param.MarketingCreateParam;
+import com.qs.mp.admin.domain.param.MarketingUpdateParam;
+import com.qs.mp.admin.service.IMarketingService;
+import com.qs.mp.common.annotation.Log;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+/**
+ * 营销活动管理相关接口
+ * @author Cup
+ * @date 2022/5/16
+ */
+@RestController
+@RequestMapping("/api/v1/mp/admin/marketing")
+@Api(tags = "营销活动管理相关接口")
+public class MarketingMgrController {
+
+    @Autowired
+    private IMarketingService marketingService;
+
+    @Log(title = "营销活动新增", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "营销活动新增")
+    @PostMapping("/create")
+    @PreAuthorize("@ss.hasPermi('business:marketing:add')")
+    public AjaxResult create(@Validated @RequestBody MarketingCreateParam marketingCreateParam) {
+        marketingService.createMarketing(marketingCreateParam);
+        return AjaxResult.success();
+    }
+
+    @PostMapping("/update")
+    @PreAuthorize("@ss.hasPermi('business:marketing:edit')")
+    @ApiOperation("修改营销活动")
+    public AjaxResult update(@Validated @RequestBody MarketingUpdateParam marketingUpdateParam) {
+        marketingService.updateMarketing(marketingUpdateParam);
+        return AjaxResult.success();
+    }
+
+}

+ 123 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/Marketing.java

@@ -0,0 +1,123 @@
+package com.qs.mp.admin.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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;
+
+/**
+ * @describe 营销活动表实体类
+ * @auther quanshu
+ * @create 2022-05-16 14:25:44
+ */
+@TableName("mp_marketing")
+@Data
+@ApiModel("营销活动表实体类")
+public class Marketing implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 活动id,主键
+     */
+    @ApiModelProperty(value = "活动id,主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 活动标题
+     */
+    @ApiModelProperty("活动标题")
+    @TableField("title")
+    private String title;
+
+    /**
+     * 活动主图
+     */
+    @ApiModelProperty("活动主图")
+    @TableField("pic_url")
+    private String picUrl;
+
+    /**
+     * 真实人数
+     */
+    @ApiModelProperty("真实人数")
+    @TableField("real_num")
+    private Integer realNum;
+
+    /**
+     * 虚假人数
+     */
+    @ApiModelProperty("虚假人数")
+    @TableField("fake_num")
+    private Integer fakeNum;
+
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    @TableField("start_time")
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    @TableField("end_time")
+    private Date endTime;
+
+    /**
+     * 活动描述
+     */
+    @ApiModelProperty("活动描述")
+    @TableField("description")
+    private String description;
+
+    /**
+     * 是否开启: -1关闭,0待开启, 1开启  默认0
+     */
+    @ApiModelProperty("是否开启: -1关闭,0待开启, 1开启  默认0")
+    @TableField("is_on")
+    private Integer isOn;
+
+    /**
+     * 开奖状态: 0未开奖,1已开奖, 默认0
+     */
+    @ApiModelProperty("开奖状态: 0未开奖,1已开奖, 默认0")
+    @TableField("trigger_status")
+    private Integer triggerStatus;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 103 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/MarketingAwards.java

@@ -0,0 +1,103 @@
+package com.qs.mp.admin.domain;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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;
+
+/**
+ * @describe 营销活动奖项设置实体类
+ * @auther quanshu
+ * @create 2022-05-16 14:29:18
+ */
+@TableName("mp_marketing_awards")
+@Data
+@ApiModel("营销活动奖项设置实体类")
+public class MarketingAwards implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 奖项id
+     */
+    @ApiModelProperty("奖项id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销活动id
+     */
+    @ApiModelProperty("营销活动id")
+    @TableField("marketing_id")
+    private Long marketingId;
+
+    /**
+     * 奖项名
+     */
+    @ApiModelProperty("奖项名")
+    @TableField("name")
+    private String name;
+
+    /**
+     * 奖项顺序
+     */
+    @ApiModelProperty("奖项顺序")
+    @TableField("sort")
+    private Integer sort;
+
+    /**
+     * 奖项数量
+     */
+    @ApiModelProperty("奖项数量")
+    @TableField("quantity")
+    private Integer quantity;
+
+
+    @ApiModelProperty("内定数量")
+    @TableField("inside_num")
+    private Integer insideNum;
+
+    /**
+     * 奖项描述
+     */
+    @ApiModelProperty("奖项描述")
+    @TableField("memo")
+    private String memo;
+
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 127 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/MarketingAwardsPrize.java

@@ -0,0 +1,127 @@
+package com.qs.mp.admin.domain;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @describe 营销活动奖项对应奖品设置实体类
+ * @auther quanshu
+ * @create 2022-05-16 14:29:31
+ */
+@TableName("mp_marketing_awards_prize")
+@Data
+@ApiModel("营销活动奖项对应奖品设置实体类")
+public class MarketingAwardsPrize implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 奖品ID
+     */
+    @ApiModelProperty("奖品ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销活动id
+     */
+    @ApiModelProperty("营销活动id")
+    @TableField("marketing_id")
+    private Long marketingId;
+
+    /**
+     * 奖项ID
+     */
+    @ApiModelProperty("奖项ID")
+    @TableField("awards_id")
+    private Long awardsId;
+
+    /**
+     * 奖品ID(GOODS_ID或TEMPL_ID)
+     */
+    @ApiModelProperty("奖品ID(GOODS_ID或TEMPL_ID)")
+    @TableField("ref_id")
+    private String refId;
+
+    /**
+     * 奖品图片
+     */
+    @ApiModelProperty("奖品图片")
+    @TableField("pic_url")
+    private String picUrl;
+
+    /**
+     * 奖品名称
+     */
+    @ApiModelProperty("奖品名称")
+    @TableField("title")
+    private String title;
+
+    /**
+     * 奖品类型 goods 实物商品 coupon优惠券 coin平台代币 coupon_pkg券包
+     */
+    @ApiModelProperty("奖品类型 goods 实物商品 coupon优惠券 coin平台代币 coupon_pkg券包")
+    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+    @TableField("prize_type")
+    private TicketPrizeTypeEnum prizeType;
+
+    /**
+     * 奖品数
+     */
+    @ApiModelProperty("奖品数")
+    @TableField("quantity")
+    private Integer quantity;
+
+    /**
+     * 奖品价值
+     */
+    @ApiModelProperty("奖品价值")
+    @TableField("value")
+    private Integer value;
+
+    /**
+     * 排序权重,值越大越靠前
+     */
+    @ApiModelProperty("权重排序,值越大越靠前")
+    @TableField("sort_weight")
+    private Integer sortWeight;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+
+}

+ 39 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingAwardsParam.java

@@ -0,0 +1,39 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author Cup
+ * @date 2022/5/16
+ */
+@ApiModel(value= "营销活动奖级入参类")
+@Data
+public class MarketingAwardsParam {
+
+
+    @NotEmpty(message = "奖品列表不能为空")
+    @ApiModelProperty(value = "奖品列表",required=true)
+    List<MarketingAwardsPrizeParam> prizeList;
+
+    @NotNull(message = "奖级名称不能为空")
+    @ApiModelProperty(value = "奖级名称",required=true)
+    private String name;
+
+    @NotNull(message = "奖级数量不能为空")
+    @ApiModelProperty(value = "奖级数量",required=true)
+    private Integer quantity;
+
+    @NotNull(message = "内定数量不能为空")
+    @ApiModelProperty(value = "内定数量",required = true)
+    private Integer insideNum;
+
+    @NotNull(message = "奖级顺序不能为空")
+    @ApiModelProperty(value = "奖级顺序",required=true)
+    private Integer sort;
+}

+ 32 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingAwardsPrizeParam.java

@@ -0,0 +1,32 @@
+package com.qs.mp.admin.domain.param;
+
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author Cup
+ * @date 2022/5/16
+ */
+@ApiModel("营销活动奖级对应奖品入参类")
+@Data
+public class MarketingAwardsPrizeParam {
+
+    @NotNull(message = "奖品关联ID不能为空")
+    @ApiModelProperty(value = "奖品关联ID",required=true)
+    private String refId;
+
+    @NotNull(message = "奖品类型不能为空")
+    @ApiModelProperty(value = "奖品类型",required=true)
+    private TicketPrizeTypeEnum prizeType;
+
+    @NotNull(message = "奖品数量不能为空")
+    @ApiModelProperty(value = "奖品数量",required=true)
+    private Integer quantity;
+
+    @ApiModelProperty(value = "奖品价值",required=true)
+    private Integer value;
+}

+ 49 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingCreateParam.java

@@ -0,0 +1,49 @@
+package com.qs.mp.admin.domain.param;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销活动创建入参类
+ *
+ * @author Cup
+ * @date 2022/5/16
+ */
+@ApiModel("营销活动创建入参类")
+@Data
+public class MarketingCreateParam {
+
+    @ApiModelProperty(value = "活动标题", required = true)
+    @NotBlank(message = "活动标题不能为空")
+    private String title;
+
+    @ApiModelProperty(value = "活动主图", required = true)
+    @NotBlank(message = "活动主图不能为空")
+    private String picUrl;
+
+    @ApiModelProperty(value = "初始人数", required = true)
+    private Integer fakeNum;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    @NotNull(message = "开始时间不能为空")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间", required = true)
+    @NotNull(message = "结束时间不能为空")
+    private Date endTime;
+
+    @ApiModelProperty(value = "活动描述",required = false)
+    private String description;
+
+    @NotEmpty(message = "奖级列表不能为空")
+    @ApiModelProperty(value = "奖级列表", required = true)
+    List<MarketingAwardsParam> awardsList;
+}

+ 52 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/MarketingUpdateParam.java

@@ -0,0 +1,52 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销活动更新入参类
+ *
+ * @author Cup
+ * @date 2022/5/16
+ */
+@ApiModel("营销活动更新入参类")
+@Data
+public class MarketingUpdateParam {
+
+    @ApiModelProperty("营销活动id")
+    @NotNull(message = "营销活动id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "活动标题", required = true)
+    @NotBlank(message = "活动标题不能为空")
+    private String title;
+
+    @ApiModelProperty(value = "活动主图", required = true)
+    @NotBlank(message = "活动主图不能为空")
+    private String picUrl;
+
+    @ApiModelProperty(value = "初始人数", required = true)
+    private Integer fakeNum;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    @NotNull(message = "开始时间不能为空")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间", required = true)
+    @NotNull(message = "结束时间不能为空")
+    private Date endTime;
+
+    @ApiModelProperty(value = "活动描述",required = false)
+    private String description;
+
+    @NotEmpty(message = "奖级列表不能为空")
+    @ApiModelProperty(value = "奖级列表", required = true)
+    List<MarketingAwardsParam> awardsList;
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingAwardsMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.MarketingAwards;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-16 14:29:18
+ * @describe 营销活动奖项设置mapper类
+ */
+public interface MarketingAwardsMapper extends BaseMapper<MarketingAwards> {
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingAwardsPrizeMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.MarketingAwardsPrize;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-16 14:29:31
+ * @describe 营销活动奖项对应奖品设置mapper类
+ */
+public interface MarketingAwardsPrizeMapper extends BaseMapper<MarketingAwardsPrize> {
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/MarketingMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.admin.mapper;
+
+import com.qs.mp.admin.domain.Marketing;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-16 14:25:44
+ * @describe 营销活动表mapper类
+ */
+public interface MarketingMapper extends BaseMapper<Marketing> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/IMarketingAwardsPrizeService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.MarketingAwardsPrize;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 营销活动奖项对应奖品设置 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+public interface IMarketingAwardsPrizeService extends IService<MarketingAwardsPrize> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/admin/service/IMarketingAwardsService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.MarketingAwards;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 营销活动奖项设置 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+public interface IMarketingAwardsService extends IService<MarketingAwards> {
+
+}

+ 29 - 0
mp-service/src/main/java/com/qs/mp/admin/service/IMarketingService.java

@@ -0,0 +1,29 @@
+package com.qs.mp.admin.service;
+
+import com.qs.mp.admin.domain.Marketing;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.admin.domain.param.MarketingCreateParam;
+import com.qs.mp.admin.domain.param.MarketingUpdateParam;
+
+/**
+ * <p>
+ * 营销活动表 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+public interface IMarketingService extends IService<Marketing> {
+
+    /**
+     * 创建营销活动
+     * @param marketingCreateParam
+     */
+    void createMarketing(MarketingCreateParam marketingCreateParam);
+
+    /**
+     * 更新营销活动
+     * @param marketingUpdateParam
+     */
+    void updateMarketing(MarketingUpdateParam marketingUpdateParam);
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingAwardsPrizeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.MarketingAwardsPrize;
+import com.qs.mp.admin.mapper.MarketingAwardsPrizeMapper;
+import com.qs.mp.admin.service.IMarketingAwardsPrizeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 营销活动奖项对应奖品设置 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+@Service
+public class MarketingAwardsPrizeServiceImpl extends ServiceImpl<MarketingAwardsPrizeMapper, MarketingAwardsPrize> implements IMarketingAwardsPrizeService {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingAwardsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.admin.service.impl;
+
+import com.qs.mp.admin.domain.MarketingAwards;
+import com.qs.mp.admin.mapper.MarketingAwardsMapper;
+import com.qs.mp.admin.service.IMarketingAwardsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 营销活动奖项设置 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+@Service
+public class MarketingAwardsServiceImpl extends ServiceImpl<MarketingAwardsMapper, MarketingAwards> implements IMarketingAwardsService {
+
+}

+ 141 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -0,0 +1,141 @@
+package com.qs.mp.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.qs.mp.admin.domain.*;
+import com.qs.mp.admin.domain.param.*;
+import com.qs.mp.admin.mapper.MarketingMapper;
+import com.qs.mp.admin.service.*;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.utils.bean.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 营销活动表 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+@Service
+public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing> implements IMarketingService {
+
+    @Autowired
+    private IGoodsService goodsService;
+
+    @Autowired
+    private ICouponService couponService;
+
+    @Autowired
+    private ICouponPkgService couponPkgService;
+
+    @Autowired
+    private IMarketingAwardsService marketingAwardsService;
+
+    @Autowired
+    private IMarketingAwardsPrizeService marketingAwardsPrizeService;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createMarketing(MarketingCreateParam marketingCreateParam) {
+        // 保存营销活动
+        Marketing marketing = new Marketing();
+        BeanUtils.copyProperties(marketingCreateParam, marketing);
+        this.save(marketing);
+
+        // 创建奖级和奖品信息
+        createAwardsAndPrize(marketingCreateParam.getAwardsList(), marketing);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMarketing(MarketingUpdateParam marketingUpdateParam) {
+        Marketing marketing = this.getById(marketingUpdateParam.getId());
+        if (Objects.isNull(marketing)) {
+            throw new ServiceException("营销活动不存在");
+        }
+
+        // 更新营销活动
+        BeanUtils.copyProperties(marketingUpdateParam, marketing);
+        this.updateById(marketing);
+
+        // 删除奖级和奖品信息
+        marketingAwardsService.remove(new LambdaUpdateWrapper<MarketingAwards>().eq(MarketingAwards::getMarketingId, marketing.getId()));
+        marketingAwardsPrizeService.remove(new LambdaUpdateWrapper<MarketingAwardsPrize>().eq(MarketingAwardsPrize::getMarketingId, marketing.getId()));
+
+        // 创建奖级和奖品信息
+        createAwardsAndPrize(marketingUpdateParam.getAwardsList(), marketing);
+    }
+
+    /**
+     * 创建奖级和奖品信息
+     * @param awardsList
+     * @param marketing
+     */
+    private void createAwardsAndPrize(List<MarketingAwardsParam> awardsList, Marketing marketing) {
+        // 创建奖级
+        List<MarketingAwardsPrize> marketingAwardsPrizeList = new ArrayList<>();
+        for (MarketingAwardsParam awardsParam : awardsList) {
+            if (awardsParam.getInsideNum() > awardsParam.getQuantity()) {
+                throw new ServiceException("内定数量不能大于奖品数量");
+            }
+
+            MarketingAwards marketingAwards = new MarketingAwards();
+            BeanUtils.copyProperties(awardsParam, marketingAwards);
+            marketingAwards.setId(null);
+            // 设置活动id
+            marketingAwards.setMarketingId(marketing.getId());
+            marketingAwardsService.save(marketingAwards);
+
+            if (awardsParam.getPrizeList().size() > 1) {
+                throw new ServiceException("奖品目前暂时不能超过1个");
+            }
+
+            for (MarketingAwardsPrizeParam prizeParam : awardsParam.getPrizeList()) {
+                MarketingAwardsPrize awardsPrize = new MarketingAwardsPrize();
+                BeanUtils.copyProperties(prizeParam, awardsPrize);
+                awardsPrize.setId(null);
+                awardsPrize.setMarketingId(marketing.getId());
+                awardsPrize.setAwardsId(marketingAwards.getId());
+                if (null == awardsPrize.getQuantity() || 0 == awardsPrize.getQuantity()) {
+                    // 页面没设置奖品的具体数量,则默认为整个奖项的数量
+                    awardsPrize.setQuantity(marketingAwards.getQuantity());
+                }
+                if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.GOODS) {
+                    Goods goods = goodsService.getById(awardsPrize.getRefId());
+                    awardsPrize.setTitle(goods.getTitle());
+                    awardsPrize.setPicUrl(goods.getPicUrl());
+                    awardsPrize.setValue(goods.getValue());
+                } else if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.COUPON) {
+                    Coupon coupon = couponService.getById(awardsPrize.getRefId());
+                    awardsPrize.setTitle(coupon.getTitle());
+                    awardsPrize.setPicUrl(coupon.getPicUrl());
+                    awardsPrize.setValue(coupon.getDiscount());
+                } else if (prizeParam.getPrizeType() == TicketPrizeTypeEnum.COUPON_PKG) {
+                    CouponPkg couponPkg = couponPkgService.getById(awardsPrize.getRefId());
+                    awardsPrize.setTitle(couponPkg.getTitle());
+                    awardsPrize.setValue(couponPkg.getFacePrice());
+                    awardsPrize.setPicUrl(couponPkg.getPicUrl());
+                } else {
+                    awardsPrize.setTitle("盲豆");
+                    awardsPrize.setPicUrl("md.jpeg");
+                }
+                marketingAwardsPrizeList.add(awardsPrize);
+            }
+        }
+        marketingAwardsPrizeService.saveBatch(marketingAwardsPrizeList);
+    }
+
+
+}

+ 11 - 0
mp-service/src/main/java/com/qs/mp/system/domain/SysUser.java

@@ -52,6 +52,9 @@ public class SysUser extends BaseEntity
     @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
     private String sex;
 
+    /** 用户类型(00系统用户)(11内部用户) */
+    private String userType;
+
     /** 用户头像 */
     private String avatar;
 
@@ -101,6 +104,14 @@ public class SysUser extends BaseEntity
     private String unionId;  //用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回
     private String sessionKey; //会话密钥
 
+    public String getUserType() {
+        return userType;
+    }
+
+    public void setUserType(String userType) {
+        this.userType = userType;
+    }
+
     public void setOpenId(String openId) {
         this.openId = openId;
     }

+ 95 - 0
mp-service/src/main/java/com/qs/mp/user/domain/MarketingHitPrize.java

@@ -0,0 +1,95 @@
+package com.qs.mp.user.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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;
+
+/**
+ * @describe 营销活动中奖信息表实体类
+ * @auther quanshu
+ * @create 2022-05-16 14:29:06
+ */
+@TableName("mp_marketing_hit_prize")
+@Data
+@ApiModel("营销活动中奖信息表实体类")
+public class MarketingHitPrize implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty("中奖记录id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销活动id
+     */
+    @ApiModelProperty("营销活动id")
+    @TableField("marketing_id")
+    private Long marketingId;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 用户类型(00系统用户)(11内部用户)
+     */
+    @ApiModelProperty("用户类型(00系统用户)(11内部用户)")
+    @TableField("user_type")
+    private String userType;
+
+    /**
+     * 奖项id
+     */
+    @ApiModelProperty("奖项id")
+    @TableField("awards_id")
+    private Long awardsId;
+
+    /**
+     * 奖品id
+     */
+    @ApiModelProperty("奖品id")
+    @TableField("prize_id")
+    private Long prizeId;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 102 - 0
mp-service/src/main/java/com/qs/mp/user/domain/MarketingUserCode.java

@@ -0,0 +1,102 @@
+package com.qs.mp.user.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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;
+
+/**
+ * @describe 营销活动用户参与码关系表实体类
+ * @auther quanshu
+ * @create 2022-05-16 14:28:52
+ */
+@TableName("mp_marketing_user_code")
+@Data
+@ApiModel("营销活动用户参与码关系表实体类")
+public class MarketingUserCode implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty("主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 营销活动id
+     */
+    @ApiModelProperty("营销活动id")
+    @TableField("marketing_id")
+    private Long marketingId;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 用户类型(00系统用户)(11内部用户)
+     */
+    @ApiModelProperty("用户类型(00系统用户)(11内部用户)")
+    @TableField("user_type")
+    private String userType;
+
+    /**
+     * 助力用户id
+     */
+    @ApiModelProperty("助力用户id")
+    @TableField("help_user_id")
+    private Long helpUserId;
+
+    /**
+     * 参与码
+     */
+    @ApiModelProperty("参与码")
+    @TableField("code")
+    private String code;
+
+    /**
+     * 是否中奖 0未中奖,1中奖
+     */
+    @ApiModelProperty("是否中奖 0未中奖,1中奖")
+    @TableField("is_hit")
+    private Integer isHit;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/MarketingHitPrizeMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.user.mapper;
+
+import com.qs.mp.user.domain.MarketingHitPrize;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-16 14:29:06
+ * @describe 营销活动中奖信息表mapper类
+ */
+public interface MarketingHitPrizeMapper extends BaseMapper<MarketingHitPrize> {
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/MarketingUserCodeMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.user.mapper;
+
+import com.qs.mp.user.domain.MarketingUserCode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-05-16 14:28:52
+ * @describe 营销活动用户参与码关系表mapper类
+ */
+public interface MarketingUserCodeMapper extends BaseMapper<MarketingUserCode> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/user/service/IMarketingHitPrizeService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.user.service;
+
+import com.qs.mp.user.domain.MarketingHitPrize;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 营销活动中奖信息表 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+public interface IMarketingHitPrizeService extends IService<MarketingHitPrize> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/user/service/IMarketingUserCodeService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.user.service;
+
+import com.qs.mp.user.domain.MarketingUserCode;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 营销活动用户参与码关系表 服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+public interface IMarketingUserCodeService extends IService<MarketingUserCode> {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/MarketingHitPrizeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.user.service.impl;
+
+import com.qs.mp.user.domain.MarketingHitPrize;
+import com.qs.mp.user.mapper.MarketingHitPrizeMapper;
+import com.qs.mp.user.service.IMarketingHitPrizeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 营销活动中奖信息表 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+@Service
+public class MarketingHitPrizeServiceImpl extends ServiceImpl<MarketingHitPrizeMapper, MarketingHitPrize> implements IMarketingHitPrizeService {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/MarketingUserCodeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.user.service.impl;
+
+import com.qs.mp.user.domain.MarketingUserCode;
+import com.qs.mp.user.mapper.MarketingUserCodeMapper;
+import com.qs.mp.user.service.IMarketingUserCodeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 营销活动用户参与码关系表 服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-05-16
+ */
+@Service
+public class MarketingUserCodeServiceImpl extends ServiceImpl<MarketingUserCodeMapper, MarketingUserCode> implements IMarketingUserCodeService {
+
+}

+ 24 - 0
mp-service/src/main/resources/mapper/admin/MarketingAwardsMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.MarketingAwardsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.MarketingAwards">
+        <id column="id" property="id" />
+        <result column="marketing_id" property="marketingId" />
+        <result column="name" property="name" />
+        <result column="sort" property="sort" />
+        <result column="quantity" property="quantity" />
+        <result column="memo" property="memo" />
+        <result column="hit_rate" property="hitRate" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, marketing_id, name, sort, quantity, memo, hit_rate, created_time, updated_time, is_deleted
+    </sql>
+
+</mapper>

+ 27 - 0
mp-service/src/main/resources/mapper/admin/MarketingAwardsPrizeMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.MarketingAwardsPrizeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.MarketingAwardsPrize">
+        <id column="id" property="id" />
+        <result column="marketing_id" property="marketingId" />
+        <result column="awards_id" property="awardsId" />
+        <result column="ref_id" property="refId" />
+        <result column="pic_url" property="picUrl" />
+        <result column="title" property="title" />
+        <result column="prize_type" property="prizeType" />
+        <result column="quantity" property="quantity" />
+        <result column="value" property="value" />
+        <result column="sort_weight" property="sortWeight" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, marketing_id, awards_id, ref_id, pic_url, title, prize_type, quantity, value, sort_weight, is_deleted, created_time, updated_time
+    </sql>
+
+</mapper>

+ 27 - 0
mp-service/src/main/resources/mapper/admin/MarketingMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.admin.mapper.MarketingMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.admin.domain.Marketing">
+        <id column="id" property="id" />
+        <result column="title" property="title" />
+        <result column="pic_url" property="picUrl" />
+        <result column="real_num" property="realNum" />
+        <result column="fake_num" property="fakeNum" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="description" property="description" />
+        <result column="is_on" property="isOn" />
+        <result column="trigger_status" property="triggerStatus" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, title, pic_url, real_num, fake_num, start_time, end_time, description, is_on, trigger_status, created_time, updated_time, is_deleted
+    </sql>
+
+</mapper>

+ 23 - 0
mp-service/src/main/resources/mapper/user/MarketingHitPrizeMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.user.mapper.MarketingHitPrizeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.user.domain.MarketingHitPrize">
+        <id column="id" property="id" />
+        <result column="marketing_id" property="marketingId" />
+        <result column="user_id" property="userId" />
+        <result column="user_type" property="userType" />
+        <result column="awards_id" property="awardsId" />
+        <result column="prize_id" property="prizeId" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, marketing_id, user_id, user_type, awards_id, prize_id, created_time, updated_time, is_deleted
+    </sql>
+
+</mapper>

+ 24 - 0
mp-service/src/main/resources/mapper/user/MarketingUserCodeMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.user.mapper.MarketingUserCodeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.user.domain.MarketingUserCode">
+        <id column="id" property="id" />
+        <result column="marketing_id" property="marketingId" />
+        <result column="user_id" property="userId" />
+        <result column="user_type" property="userType" />
+        <result column="help_user_id" property="helpUserId" />
+        <result column="code" property="code" />
+        <result column="is_hit" property="isHit" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, marketing_id, user_id, user_type, help_user_id, code, is_hit, created_time, updated_time, is_deleted
+    </sql>
+
+</mapper>