Просмотр исходного кода

积分分享,
积分策略,积分明细添加字段

koushanshan 1 год назад
Родитель
Сommit
99a8346177
18 измененных файлов с 301 добавлено и 14 удалено
  1. 17 1
      src/main/java/com/dk/oauth/controller/integral/IntegralShareController.java
  2. 25 0
      src/main/java/com/dk/oauth/infrastructure/convert/integral/IntegralShareConvert.java
  3. 9 2
      src/main/java/com/dk/oauth/mapper/integral/IntegralItemMapper.xml
  4. 30 7
      src/main/java/com/dk/oauth/mapper/integral/IntegralShareMapper.xml
  5. 9 2
      src/main/java/com/dk/oauth/mapper/integral/IntegralTacticMapper.xml
  6. 8 0
      src/main/java/com/dk/oauth/model/VO/integral/IntegralItemVO.java
  7. 16 1
      src/main/java/com/dk/oauth/model/VO/integral/IntegralShareVO.java
  8. 8 0
      src/main/java/com/dk/oauth/model/VO/integral/IntegralTacticVO.java
  9. 8 0
      src/main/java/com/dk/oauth/model/pojo/integral/IntegralItem.java
  10. 14 1
      src/main/java/com/dk/oauth/model/pojo/integral/IntegralShare.java
  11. 8 0
      src/main/java/com/dk/oauth/model/pojo/integral/IntegralTactic.java
  12. 7 0
      src/main/java/com/dk/oauth/model/query/integral/IntegralItemQuery.java
  13. 16 0
      src/main/java/com/dk/oauth/model/query/integral/IntegralShareQuery.java
  14. 8 0
      src/main/java/com/dk/oauth/model/query/integral/IntegralTacticQuery.java
  15. 7 0
      src/main/java/com/dk/oauth/model/response/integral/IntegralItemResponse.java
  16. 18 0
      src/main/java/com/dk/oauth/model/response/integral/IntegralShareResponse.java
  17. 8 0
      src/main/java/com/dk/oauth/model/response/integral/IntegralTacticResponse.java
  18. 85 0
      src/main/java/com/dk/oauth/service/integral/IntegralShareService.java

+ 17 - 1
src/main/java/com/dk/oauth/controller/integral/IntegralShareController.java

@@ -3,6 +3,8 @@ package com.dk.oauth.controller.integral;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.service.BaseService;
+import com.dk.oauth.model.VO.integral.CouponSendVO;
+import com.dk.oauth.model.VO.integral.IntegralShareVO;
 import com.dk.oauth.model.pojo.integral.IntegralShare;
 import com.dk.oauth.model.query.integral.IntegralShareQuery;
 import com.dk.oauth.model.response.integral.IntegralShareResponse;
@@ -12,6 +14,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+
 @Api(tags = "积分分享API接口")
 @RestController
 @RequestMapping("/oauth/integralShare")
@@ -47,6 +51,18 @@ public class IntegralShareController{
         return integralShareService.selectById(id);
     }
 
-
+    /**
+     * @desc   : 新建
+     * @date   : 2024/7/30 13:12
+     * @author : 寇珊珊
+     */
+    @ApiOperation(
+            value = "新建",
+            notes = "新建"
+    )
+    @PostMapping({"insert"})
+    public ResponseResultVO<?> otherOutboundInsert(@Valid @RequestBody IntegralShareVO integralShareVO) {
+        return integralShareService.insert(integralShareVO);
+    }
 
 }

+ 25 - 0
src/main/java/com/dk/oauth/infrastructure/convert/integral/IntegralShareConvert.java

@@ -0,0 +1,25 @@
+package com.dk.oauth.infrastructure.convert.integral;
+
+import com.dk.oauth.model.VO.integral.CouponReceiveVO;
+import com.dk.oauth.model.VO.integral.IntegralShareVO;
+import com.dk.oauth.model.pojo.integral.CouponReceive;
+import com.dk.oauth.model.pojo.integral.IntegralShare;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : 积分分享实体类型转换
+ * @date   : 2024/7/26 9:36
+ * @author : 寇珊珊
+ */
+@Mapper(componentModel = "spring")
+public interface IntegralShareConvert {
+
+    /**
+     * @desc   : VO转pojo
+     * @date   : 2024/7/30 13:39
+     * @author : 寇珊珊
+     */
+    IntegralShare convertToPo(IntegralShareVO integralShareVO);
+
+
+}

+ 9 - 2
src/main/java/com/dk/oauth/mapper/integral/IntegralItemMapper.xml

@@ -5,11 +5,11 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        item_id, integral_type, integral, cp_id, cp_id_from, acc_date, flg_valid, user_id, remarks
+        item_id, integral_type, integral, cp_id, cp_id_from, acc_date, flg_valid, user_id, remarks, staff_name
     </sql>
     <!-- 通用查询列Response -->
     <sql id="Base_Column_List_Response">
-        tmii.item_id, tmii.integral_type, tmii.integral, tmii.cp_id, tmii.cp_id_from, tmii.acc_date, tmii.flg_valid, tmii.user_id, tmii.remarks
+        tmii.item_id, tmii.integral_type, tmii.integral, tmii.cp_id, tmii.cp_id_from, tmii.acc_date, tmii.flg_valid, tmii.user_id, tmii.remarks, tmii.staff_name
     </sql>
 
 
@@ -23,6 +23,7 @@
             <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
                 <result column="flg_valid" property="flgValid"/>
                 <result column="user_id" property="userId" typeHandler="UuidTypeHandler"/>
+                <result column="staff_name" property="staffName"/>
                 <result column="remarks" property="remarks"/>
     </resultMap>
     <!-- 通用查询映射结果 -->
@@ -38,6 +39,7 @@
         <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
         <result column="flg_valid" property="flgValid"/>
         <result column="user_id" property="userId" typeHandler="UuidTypeHandler"/>
+        <result column="staff_name" property="staffName"/>
         <result column="remarks" property="remarks"/>
     </resultMap>
 
@@ -85,6 +87,9 @@
             <if test="cpNameFrom != null and cpNameFrom != ''">
                 AND tacf.cp_name LIKE concat('%',my_ex.likequery(#{cpNameFrom}),'%')
             </if>
+            <if test="staffName != null and staffName != ''">
+                AND tacf.staff_name LIKE concat('%',my_ex.likequery(#{staffName}),'%')
+            </if>
         </where>
     </sql>
 
@@ -166,6 +171,7 @@
             acc_date,
             user_id,
             remarks,
+            staff_name,
         </trim>
         )
         values
@@ -179,6 +185,7 @@
                 #{item.accDate},
                 #{item.userId}::uuid,
                 #{item.remarks},
+                #{item.staffName},
             </trim>
             )
         </foreach>

+ 30 - 7
src/main/java/com/dk/oauth/mapper/integral/IntegralShareMapper.xml

@@ -5,36 +5,44 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        cp_id, user_id, tactic_id, share_date, end_date, flg_valid
+        share_id, cp_id, user_id, tactic_id, share_date, end_date, flg_valid,integral_type
     </sql>
     <!-- 通用查询列Response -->
     <sql id="Base_Column_List_Response">
-        tmis.cp_id, tmis.user_id, tmis.tactic_id, tmis.share_date, tmis.end_date, tmis.flg_valid
+        tmis.share_id, tmis.cp_id, tmis.user_id, tmis.tactic_id, tmis.share_date, tmis.end_date, tmis.flg_valid,tmis.integral_type
     </sql>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.dk.oauth.model.pojo.integral.IntegralShare">
-        <id column="cp_id" property="cpId"/>
+        <id column="share_id" property="shareId" typeHandler="UuidTypeHandler"/>
+        <result column="cp_id" property="cpId"/>
         <result column="user_id" property="userId" typeHandler="UuidTypeHandler"/>
         <result column="tactic_id" property="tacticId" typeHandler="UuidTypeHandler"/>
         <result column="share_date" property="shareDate" typeHandler="TimestampTypeHandler"/>
         <result column="end_date" property="endDate" typeHandler="TimestampTypeHandler"/>
         <result column="flg_valid" property="flgValid"/>
+        <result column="integral_type" property="integralType"/>
     </resultMap>
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMapResponse" type="com.dk.oauth.model.response.integral.IntegralShareResponse">
-        <id column="cp_id" property="cpId" />
+        <id column="share_id" property="shareId" typeHandler="UuidTypeHandler"/>
+        <result column="cp_id" property="cpId"/>
         <result column="user_id" property="userId" typeHandler="UuidTypeHandler"/>
         <result column="tactic_id" property="tacticId" typeHandler="UuidTypeHandler"/>
         <result column="share_date" property="shareDate" typeHandler="TimestampTypeHandler"/>
         <result column="end_date" property="endDate" typeHandler="TimestampTypeHandler"/>
         <result column="flg_valid" property="flgValid"/>
         <result column="cp_name" property="cpName"/>
+        <result column="integral_type" property="integralType"/>
+        <result column="integral_type_name" property="integralTypeName"/>
     </resultMap>
 
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
+            <if test="cpId != null and cpId != ''">
+                AND tmis.cp_id = #{cpId}
+            </if>
             <if test="tacticId != null and tacticId != ''">
                 AND tmis.tactic_id = #{tacticId}::uuid
             </if>
@@ -50,12 +58,18 @@
             <if test="flgValid != null">
                 AND tmis.flg_valid = #{flgValid}
             </if>
+            <if test="shareDateFlag != null and shareDateFlag ">
+                 AND tmis.share_date >= NOW() - INTERVAL '1 DAY'
+            </if>
+            <if test="integralType != null and integralType != ''">
+                AND tmis.integral_type = #{integralType}
+            </if>
         </where>
     </sql>
 
     <sql id="idsForeach">
         <!-- 根据主键cpId批量操作 -->
-        WHERE cp_id in
+        WHERE share_id in
         <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
             #{item}
         </foreach>
@@ -66,8 +80,10 @@
         SELECT
         <include refid="Base_Column_List_Response"/>
         ,tac.cp_name
+        ,sys.f_get_name_i18n(tdk.kind_name_i18n,#{i18n}) as integral_type_name
         FROM dkic_a.t_mst_integral_share tmis
         left join dkic_a.t_a_company tac on tac.cp_id = tmis.cp_id
+        LEFT JOIN sys.t_data_kind tdk ON tmis.integral_type = tdk.kind_code
         <include refid="Condition"/>
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
@@ -80,6 +96,7 @@
         count(1)
         FROM dkic_a.t_mst_integral_share tmis
         left join dkic_a.t_a_company tac on tac.cp_id = tmis.cp_id
+        LEFT JOIN sys.t_data_kind tdk ON tmis.integral_type = tdk.kind_code
         <include refid="Condition"/>
     </select>
 
@@ -88,9 +105,11 @@
         SELECT
         <include refid="Base_Column_List_Response"/>
         ,tac.cp_name
+        ,sys.f_get_name_i18n(tdk.kind_name_i18n,#{i18n}) as integral_type_name
         FROM dkic_a.t_mst_integral_share tmis
         left join dkic_a.t_a_company tac on tac.cp_id = tmis.cp_id
-        WHERE cp_id = #{cpId}
+        LEFT JOIN sys.t_data_kind tdk ON tmis.integral_type = tdk.kind_code
+        WHERE share_id = #{id}::uuid
     </select>
 
     <!-- 根据主键锁定表dkic_a.t_mst_integral_share的一行数据 -->
@@ -98,7 +117,7 @@
         SELECT
         <include refid="Base_Column_List"/>
         FROM dkic_a.t_mst_integral_share
-        WHERE cp_id = #{id}
+        WHERE share_id = #{shareId}::uuid
         for update
     </select>
 
@@ -119,6 +138,8 @@
             share_date,
             end_date,
             user_id,
+            cp_id,
+            integral_type,
         </trim>
         )
         values
@@ -129,6 +150,8 @@
                 #{item.shareDate},
                 #{item.endDate},
                 #{item.userId}::uuid,
+                #{item.cpId},
+                #{item.integralType},
             </trim>
             )
         </foreach>

+ 9 - 2
src/main/java/com/dk/oauth/mapper/integral/IntegralTacticMapper.xml

@@ -5,11 +5,11 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        tactic_id, share_day_num, reg_integral, sign_integral, fifteen_integral, share_integral, share_reg_integral, sign_day_num
+        tactic_id, share_day_num, reg_integral, sign_integral, fifteen_integral, share_integral, share_reg_integral, sign_day_num, share_valid_times
     </sql>
     <!-- 通用查询列Response -->
     <sql id="Base_Column_List_Response">
-        tmit.tactic_id, tmit.share_day_num, tmit.reg_integral, tmit.sign_integral, tmit.fifteen_integral, tmit.share_integral, tmit.share_reg_integral, tmit.sign_day_num
+        tmit.tactic_id, tmit.share_day_num, tmit.reg_integral, tmit.sign_integral, tmit.fifteen_integral, tmit.share_integral, tmit.share_reg_integral, tmit.sign_day_num, tmit.share_valid_times
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -22,6 +22,7 @@
                 <result column="share_integral" property="shareIntegral"/>
                 <result column="share_reg_integral" property="shareRegIntegral"/>
                 <result column="sign_day_num" property="signDayNum"/>
+                <result column="share_valid_times" property="shareValidTimes"/>
     </resultMap>
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMapResponse" type="com.dk.oauth.model.response.integral.IntegralTacticResponse">
@@ -33,6 +34,7 @@
         <result column="share_integral" property="shareIntegral"/>
         <result column="share_reg_integral" property="shareRegIntegral"/>
         <result column="sign_day_num" property="signDayNum"/>
+        <result column="share_valid_times" property="shareValidTimes"/>
     </resultMap>
 
 
@@ -60,6 +62,9 @@
             <if test="shareDayNum != null">
                 AND tmit.share_day_num = #{shareDayNum}
             </if>
+            <if test="shareValidTimes != null">
+                AND tmit.share_valid_times = #{shareValidTimes}
+            </if>
         </where>
     </sql>
 
@@ -127,6 +132,7 @@
             share_reg_integral,
             sign_day_num,
             share_day_num,
+            share_valid_times,
         </trim>
         )
         values
@@ -140,6 +146,7 @@
                 #{item.shareRegIntegral},
                 #{item.signDayNum},
                 #{item.shareDayNum},
+                #{item.shareValidTimes},
             </trim>
             )
         </foreach>

+ 8 - 0
src/main/java/com/dk/oauth/model/VO/integral/IntegralItemVO.java

@@ -107,6 +107,14 @@ public class IntegralItemVO{
     private String remarks;
 
 
+    /**
+     * 操作员工
+     */
+    @Excel(name = "操作员工")
+    @ApiModelProperty(value = "操作员工")
+    private String staffName;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 16 - 1
src/main/java/com/dk/oauth/model/VO/integral/IntegralShareVO.java

@@ -30,10 +30,20 @@ public class IntegralShareVO {
      * 数据库字段
      */
 
+
+    /**
+     * 分享ID
+     */
+    //    @TableId(value = "share_id", type = IdType.AUTO)
+    @Excel(name = "分享ID")
+    @ApiModelProperty(value = "分享ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String shareId;
+
+
     /**
      * 公司ID
      */
-//    @TableId(value = "cp_id", type = IdType.AUTO)
     @ApiModelProperty(value = "公司ID")
     private Integer cpId;
 
@@ -84,6 +94,11 @@ public class IntegralShareVO {
     private Boolean flgValid;
 
 
+    @Excel(name = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    @ApiModelProperty(value = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    private String integralType;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 8 - 0
src/main/java/com/dk/oauth/model/VO/integral/IntegralTacticVO.java

@@ -91,6 +91,14 @@ public class IntegralTacticVO {
     private Integer shareDayNum;
 
 
+    /**
+     * 邀请有效期
+     */
+    @Excel(name = "邀请有效期")
+    @ApiModelProperty(value = "邀请有效期")
+    private Integer shareValidTimes;
+
+
 
     /*
      * 相关属性

+ 8 - 0
src/main/java/com/dk/oauth/model/pojo/integral/IntegralItem.java

@@ -113,6 +113,14 @@ public class IntegralItem extends PageInfo<IntegralItem> implements Serializable
     private String remarks;
 
 
+    /**
+     * 操作员工
+     */
+    @Excel(name = "操作员工")
+    @ApiModelProperty(value = "操作员工")
+    private String staffName;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 14 - 1
src/main/java/com/dk/oauth/model/pojo/integral/IntegralShare.java

@@ -37,10 +37,19 @@ public class IntegralShare extends PageInfo<IntegralShare> implements Serializab
      * 数据库字段
      */
 
+
+    /**
+     * 分享ID
+     */
+    @Excel(name = "分享ID")
+    @ApiModelProperty(value = "分享ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String shareId;
+
+
     /**
      * 公司ID
      */
-//    @TableId(value = "cp_id", type = IdType.AUTO)
     @ApiModelProperty(value = "公司ID")
     private Integer cpId;
 
@@ -101,6 +110,10 @@ public class IntegralShare extends PageInfo<IntegralShare> implements Serializab
      * @TableField(exist = false)
      */
 
+    @Excel(name = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    @ApiModelProperty(value = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    private String integralType;
+
 
     private static final long serialVersionUID = 1L;
 

+ 8 - 0
src/main/java/com/dk/oauth/model/pojo/integral/IntegralTactic.java

@@ -101,6 +101,14 @@ public class IntegralTactic extends PageInfo<IntegralTactic> implements Serializ
     private Integer shareDayNum;
 
 
+    /**
+     * 邀请有效期
+     */
+    @Excel(name = "邀请有效期")
+    @ApiModelProperty(value = "邀请有效期")
+    private Integer shareValidTimes;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 7 - 0
src/main/java/com/dk/oauth/model/query/integral/IntegralItemQuery.java

@@ -124,6 +124,13 @@ public class IntegralItemQuery extends PageInfo<IntegralItemQuery>  {
     private String remarks;
 
 
+    /**
+     * 操作员工
+     */
+    @Excel(name = "操作员工")
+    @ApiModelProperty(value = "操作员工")
+    private String staffName;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 16 - 0
src/main/java/com/dk/oauth/model/query/integral/IntegralShareQuery.java

@@ -31,6 +31,15 @@ public class IntegralShareQuery extends PageInfo<IntegralShareQuery>  {
      */
 
     /**
+     * 分享ID
+     */
+    @Excel(name = "分享ID")
+    @ApiModelProperty(value = "分享ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String shareId;
+
+
+    /**
      * 公司ID
      */
     @ApiModelProperty(value = "公司ID")
@@ -83,6 +92,11 @@ public class IntegralShareQuery extends PageInfo<IntegralShareQuery>  {
     private Boolean flgValid;
 
 
+    @Excel(name = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    @ApiModelProperty(value = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    private String integralType;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)
@@ -92,6 +106,8 @@ public class IntegralShareQuery extends PageInfo<IntegralShareQuery>  {
      * 关联属性 + 查询条件
      * @TableField(exist = false)
      */
+    @ApiModelProperty(value = "是否查询从分享时间开始1天内数据标识")
+    private Boolean shareDateFlag;
 
 
     private static final long serialVersionUID = 1L;

+ 8 - 0
src/main/java/com/dk/oauth/model/query/integral/IntegralTacticQuery.java

@@ -83,6 +83,14 @@ public class IntegralTacticQuery extends PageInfo<IntegralTacticQuery>  {
     private Integer shareDayNum;
 
 
+    /**
+     * 邀请有效期
+     */
+    @Excel(name = "邀请有效期")
+    @ApiModelProperty(value = "邀请有效期")
+    private Integer shareValidTimes;
+
+
 
     /*
      * 相关属性

+ 7 - 0
src/main/java/com/dk/oauth/model/response/integral/IntegralItemResponse.java

@@ -108,6 +108,13 @@ public class IntegralItemResponse{
     private String remarks;
 
 
+    /**
+     * 操作员工
+     */
+    @Excel(name = "操作员工")
+    @ApiModelProperty(value = "操作员工")
+    private String staffName;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 18 - 0
src/main/java/com/dk/oauth/model/response/integral/IntegralShareResponse.java

@@ -33,6 +33,15 @@ public class IntegralShareResponse {
      */
 
     /**
+     * 分享ID
+     */
+    @Excel(name = "分享ID")
+    @ApiModelProperty(value = "分享ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String shareId;
+
+
+    /**
      * 公司ID
      */
     @ApiModelProperty(value = "公司ID")
@@ -85,6 +94,11 @@ public class IntegralShareResponse {
     private Boolean flgValid;
 
 
+    @Excel(name = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    @ApiModelProperty(value = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    private String integralType;
+
+
     /*
      * 相关属性
      * @TableField(exist = false)
@@ -99,6 +113,10 @@ public class IntegralShareResponse {
     @ApiModelProperty(value = "商户名称")
     private String cpName;
 
+    @Excel(name = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    @ApiModelProperty(value = "积分类型 (【系统字典】注册;签到;分享;使用)")
+    private String integralTypeName;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 8 - 0
src/main/java/com/dk/oauth/model/response/integral/IntegralTacticResponse.java

@@ -92,6 +92,14 @@ public class IntegralTacticResponse {
     @ApiModelProperty(value = "每日分享次数")
     private Integer shareDayNum;
 
+
+    /**
+     * 邀请有效期
+     */
+    @Excel(name = "邀请有效期")
+    @ApiModelProperty(value = "邀请有效期")
+    private Integer shareValidTimes;
+
     /*
      * 相关属性
      * @TableField(exist = false)

+ 85 - 0
src/main/java/com/dk/oauth/service/integral/IntegralShareService.java

@@ -1,21 +1,33 @@
 package com.dk.oauth.service.integral;
 
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
+import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
+import com.dk.oauth.infrastructure.convert.integral.IntegralShareConvert;
+import com.dk.oauth.mapper.integral.IntegralTacticMapper;
+import com.dk.oauth.model.VO.integral.CouponSendVO;
+import com.dk.oauth.model.VO.integral.IntegralShareVO;
 import com.dk.oauth.model.pojo.integral.IntegralShare;
 import com.dk.oauth.mapper.integral.IntegralShareMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.oauth.model.query.integral.IntegralQuery;
 import com.dk.oauth.model.query.integral.IntegralShareQuery;
+import com.dk.oauth.model.query.integral.IntegralTacticQuery;
 import com.dk.oauth.model.response.integral.IntegralResponse;
 import com.dk.oauth.model.response.integral.IntegralShareResponse;
+import com.dk.oauth.model.response.integral.IntegralTacticResponse;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.util.List;
+
 @Service
 @Transactional
 public class IntegralShareService extends BaseService<IntegralShare> {
@@ -28,6 +40,14 @@ public class IntegralShareService extends BaseService<IntegralShare> {
 	@Autowired
 	private IntegralShareMapper integralShareMapper;
 
+	@Autowired
+	//实体转换
+	private IntegralShareConvert integralShareConvert;
+
+	@Autowired
+	//积分策略
+	private IntegralTacticMapper integralTacticMapper;
+
 
 	/**
 	 * @desc   : 条件查询
@@ -50,4 +70,69 @@ public class IntegralShareService extends BaseService<IntegralShare> {
 		return ResponseResultUtil.success(integralShareResponse);
 	}
 
+	/**
+	 * @desc   : 新建
+	 * @date   : 2024/7/30 13:13
+	 * @author : 寇珊珊
+	 */
+	@Transactional(rollbackFor = {Exception.class})
+	public ResponseResultVO<?> insert(IntegralShareVO integralShareVO) {
+		//region  查询积分策略每日可分享次数
+		List<IntegralTacticResponse> integralTacticResponses = integralTacticMapper.selectByCond(new IntegralTacticQuery());
+		if(integralTacticResponses==null){
+			//积分策略不存在
+			throw new BaseBusinessException(ErrorCodeEnum.INTEGRAL_TACTIC_EXIST.getCode(), ErrorCodeEnum.INTEGRAL_TACTIC_EXIST.getMessage());
+		}
+		//每日分享次数
+		Integer shareDayNum = integralTacticResponses.get(0).getShareDayNum();
+		//endregion
+
+		//region 判断当前是积分分享还是积分邀请
+		if(Constant.IntegralType.INTEGRAL_TYPE_INVITE.getName().equals(integralShareVO.getIntegralType())){
+			//region 查询积分分享 当日已经分享的次数
+			Long shareSize = integralShareMapper.countByCond(new IntegralShareQuery()
+					.setCpId(integralShareVO.getCpId())
+					.setShareDateFlag(true)
+					.setIntegralType(Constant.IntegralType.INTEGRAL_TYPE_INVITE.getName())
+			);
+			//积分策略可每日分享次数  是否等于 当日已经分享的次数
+			if(shareSize >0 ){
+				//当日已进行过邀请
+				return  ResponseResultUtil.success();
+			}
+			//endregion
+		}
+		//endregion
+
+		//region 分享
+		else{
+			//region 查询积分分享 当日已经分享的次数
+			Long shareSize = integralShareMapper.countByCond(new IntegralShareQuery()
+					.setCpId(integralShareVO.getCpId())
+					.setShareDateFlag(true)
+					.setIntegralType(Constant.IntegralType.INTEGRAL_TYPE_SHARE.getName())
+			);
+			//积分策略可每日分享次数  是否等于 当日已经分享的次数
+			if(Long.valueOf(shareDayNum) == shareSize){
+				//当日已无可分享次数
+				throw new BaseBusinessException(ErrorCodeEnum.HERE_ARE_NO_MORE_SHAREABLE_TIMES_ON_THAT_DAY.getCode(), ErrorCodeEnum.HERE_ARE_NO_MORE_SHAREABLE_TIMES_ON_THAT_DAY.getMessage());
+			}
+			//endregion
+		}
+		//endregion
+
+		//region 新建
+		//分享时间
+		integralShareVO.setShareDate(LocalDateTime.now());
+		//截止时间
+		integralShareVO.setEndDate(LocalDateTime.now().plusDays(integralTacticResponses.get(0).getShareValidTimes()));
+		//实体转换
+		IntegralShare integralShare = integralShareConvert.convertToPo(integralShareVO);
+		//新建
+		integralShareMapper.insert(integralShare);
+		//endregion
+
+		return  ResponseResultUtil.success();
+	}
+
 }