| @@ -0,0 +1,30 @@ | |||||
| CREATE TABLE `wx_cash_back_activity` ( | |||||
| `id` bigint(20) NOT NULL COMMENT '主键ID', | |||||
| `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', | |||||
| `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', | |||||
| `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', | |||||
| `start_time` datetime DEFAULT NULL COMMENT '开始时间', | |||||
| `end_time` datetime DEFAULT NULL COMMENT '结束时间', | |||||
| `status` smallint(2) NOT NULL DEFAULT '0' COMMENT '状态(0:未上架 1:已上架)', | |||||
| `create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | |||||
| `update_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', | |||||
| `limit_money` int(11) NOT NULL COMMENT '最低订单金额', | |||||
| PRIMARY KEY (`id`) | |||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡券'; | |||||
| CREATE TABLE `wx_cash_back_activity_item` ( | |||||
| `id` bigint(20) NOT NULL COMMENT '主键ID', | |||||
| `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', | |||||
| `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', | |||||
| `activity_id` bigint(20) NOT NULL COMMENT '活动id', | |||||
| `name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '奖项名称', | |||||
| `money_rule` int(11) NOT NULL COMMENT '分担规则(0-商管 1-商户 2-分担)', | |||||
| `create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | |||||
| `update_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', | |||||
| `total_back_rate` decimal(10,3) NOT NULL COMMENT '总返现比例', | |||||
| `mall_back_rate` decimal(10,3) DEFAULT NULL COMMENT '商管返现比例', | |||||
| `merchant_back_rate` decimal(10,3) DEFAULT NULL COMMENT '商户返现比例', | |||||
| PRIMARY KEY (`id`) | |||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡券'; | |||||
| @@ -0,0 +1,42 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| @TableName(value = "wx_cash_back_activity") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxCashBackActivity extends TenantEntity { | |||||
| private Long id; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "EnumCashBackActivityStatus", name = "status") | |||||
| private Integer status; | |||||
| @TableField(exist = false) | |||||
| private List<Integer> statusList; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") | |||||
| private Date createDate; | |||||
| @TableField(exist = false) | |||||
| private Date createDateBegin; | |||||
| @TableField(exist = false) | |||||
| private Date createDateEnd; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate") | |||||
| private Date updateDate; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "名称", name = "name") | |||||
| private String name; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "开始时间", name = "startTime") | |||||
| private Date startTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "结束时间", name = "endTime") | |||||
| private Date endTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "最低订单金额", name = "limitMoney") | |||||
| private Integer limitMoney; | |||||
| } | |||||
| @@ -0,0 +1,41 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.math.BigDecimal; | |||||
| import java.util.Date; | |||||
| @TableName(value = "wx_cash_back_activity_item") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxCashBackActivityItem extends TenantEntity { | |||||
| private Long id; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") | |||||
| private Date createDate; | |||||
| @TableField(exist = false) | |||||
| private Date createDateBegin; | |||||
| @TableField(exist = false) | |||||
| private Date createDateEnd; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate") | |||||
| private Date updateDate; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "活动编号", name = "activityId") | |||||
| private Long activityId; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "名称", name = "name") | |||||
| private String name; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "EnumCashBackActivityItemRule", name = "moneyRule") | |||||
| private Integer moneyRule; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "总返现比例", name = "totalBackRate") | |||||
| private BigDecimal totalBackRate; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "商管返现比例", name = "mallBackRate") | |||||
| private BigDecimal mallBackRate; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "商户返现比例", name = "merchantBackRate") | |||||
| private BigDecimal merchantBackRate; | |||||
| } | |||||
| @@ -0,0 +1,37 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * @author gongbiao | |||||
| */ | |||||
| public enum EnumCashBackActivityItemRule { | |||||
| MALL_ONLY(0, "商管承担全部"), | |||||
| MERCHANT_ONLY(1, "商户承担全部"), | |||||
| SHARE(2, "商管商户分担"); | |||||
| public static EnumCashBackActivityItemRule getEnum(Integer code) { | |||||
| for (EnumCashBackActivityItemRule value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumCashBackActivityItemRule(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,37 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * @author gongbiao | |||||
| */ | |||||
| public enum EnumCashBackActivityItemStatus { | |||||
| AUDTING(0, "审核中"), | |||||
| AUDI_SUCCESS(1, "审批通过"), | |||||
| AUDT_FAIL(2, "审批拒绝"); | |||||
| public static EnumCashBackActivityItemStatus getEnum(Integer code) { | |||||
| for (EnumCashBackActivityItemStatus value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumCashBackActivityItemStatus(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,36 @@ | |||||
| package com.iformall.enums; | |||||
| /** | |||||
| * @author gongbiao | |||||
| */ | |||||
| public enum EnumCashBackActivityStatus { | |||||
| OFF_LINE(0, "未上线"), | |||||
| ON_LINE(1, "已上线"); | |||||
| public static EnumCashBackActivityStatus getEnum(Integer code) { | |||||
| for (EnumCashBackActivityStatus value : values()) { | |||||
| if (value.getCode().equals(code)) { | |||||
| return value; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| private Integer code; | |||||
| private String message; | |||||
| EnumCashBackActivityStatus(Integer code, String message) { | |||||
| this.code = code; | |||||
| this.message = message; | |||||
| } | |||||
| public Integer getCode() { | |||||
| return code; | |||||
| } | |||||
| public String getMessage() { | |||||
| return message; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,15 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCashBackActivityItem; | |||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| public interface WxCashBackActivityItemMapper extends CommonMapper<WxCashBackActivityItem, Long> { | |||||
| WxCashBackActivityItem selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||||
| List<WxCashBackActivityItem> findList(WxCashBackActivityItem wxCashBackActivity); | |||||
| } | |||||
| @@ -0,0 +1,17 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxCashBackActivity; | |||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| public interface WxCashBackActivityMapper extends CommonMapper<WxCashBackActivity, Long> { | |||||
| WxCashBackActivity selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||||
| List<WxCashBackActivity> findList(WxCashBackActivity wxCashBackActivity); | |||||
| void updateStatus(WxCashBackActivity wxCashBackActivity); | |||||
| } | |||||
| @@ -0,0 +1,43 @@ | |||||
| package com.iformall.service; | |||||
| import java.util.List; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxCashBackActivity; | |||||
| import com.iformall.domain.po.WxCashBackActivityItem; | |||||
| public interface WxCashBackActivityService { | |||||
| /** | |||||
| * 根据实体查询分页列表 | |||||
| * | |||||
| * @param record | |||||
| * @param pageIndex | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxCashBackActivity> listActivityAsPage(WxCashBackActivity record, Integer pageIndex, Integer pageSize); | |||||
| PageInfo<WxCashBackActivityItem> listActivityItemAsPage(WxCashBackActivityItem record, Integer pageIndex, Integer pageSize); | |||||
| /** | |||||
| * 根据Id获得实体 | |||||
| * | |||||
| * @param id | |||||
| * @return | |||||
| */ | |||||
| WxCashBackActivity getActivityById(Long id,String tenantId); | |||||
| WxCashBackActivityItem getActivityItemById(Long id,String tenantId); | |||||
| /** | |||||
| *更新状态 | |||||
| * | |||||
| * @param record | |||||
| */ | |||||
| void updateActivityStatus(WxCashBackActivity record); | |||||
| List<WxCashBackActivityItem> getActivityItems(Long activityId,String tenantId); | |||||
| } | |||||
| @@ -0,0 +1,60 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxCashBackActivity; | |||||
| import com.iformall.domain.po.WxCashBackActivityItem; | |||||
| import com.iformall.mapper.WxCashBackActivityItemMapper; | |||||
| import com.iformall.mapper.WxCashBackActivityMapper; | |||||
| import com.iformall.service.WxCashBackActivityService; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.util.*; | |||||
| @Service | |||||
| public class WxCashBackActivityServiceImpl implements WxCashBackActivityService { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| WxCashBackActivityMapper wxCashBackActivityMapper; | |||||
| @Autowired | |||||
| WxCashBackActivityItemMapper wxCashBackActivityItemMapper; | |||||
| @Override | |||||
| public PageInfo<WxCashBackActivity> listActivityAsPage(WxCashBackActivity record, Integer pageIndex, Integer pageSize) { | |||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCashBackActivityMapper.findList(record)); | |||||
| } | |||||
| @Override | |||||
| public PageInfo<WxCashBackActivityItem> listActivityItemAsPage(WxCashBackActivityItem record, Integer pageIndex, Integer pageSize) { | |||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCashBackActivityItemMapper.findList(record)); | |||||
| } | |||||
| @Override | |||||
| public WxCashBackActivity getActivityById(Long id,String tenantId) { | |||||
| return wxCashBackActivityMapper.selectById(id,tenantId); | |||||
| } | |||||
| @Override | |||||
| public WxCashBackActivityItem getActivityItemById(Long id,String tenantId) { | |||||
| return wxCashBackActivityItemMapper.selectById(id,tenantId); | |||||
| } | |||||
| @Override | |||||
| public void updateActivityStatus(WxCashBackActivity record) { | |||||
| wxCashBackActivityMapper.updateStatus(record); | |||||
| } | |||||
| @Override | |||||
| public List<WxCashBackActivityItem> getActivityItems(Long activityId,String tenantId) { | |||||
| WxCashBackActivityItem ai = new WxCashBackActivityItem(); | |||||
| ai.setTenantId(tenantId); | |||||
| ai.setActivityId(activityId); | |||||
| return wxCashBackActivityItemMapper.findList(ai); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,71 @@ | |||||
| <?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.iformall.mapper.WxCashBackActivityItemMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCashBackActivityItem"> | |||||
| <id column="id" jdbcType="BIGINT" property="id" /> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" /> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> | |||||
| <result column="name" jdbcType="VARCHAR" property="name" /> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate" /> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" /> | |||||
| <result column="activity_id" jdbcType="BIGINT" property="activityId" /> | |||||
| <result column="money_rule" jdbcType="INTEGER" property="moneyRule" /> | |||||
| <result column="total_back_rate" jdbcType="DECIMAL" property="totalBackRate" /> | |||||
| <result column="mall_back_rate" jdbcType="DECIMAL" property="mallBackRate" /> | |||||
| <result column="merchant_back_rate" jdbcType="DECIMAL" property="merchantBackRate" /> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| `id`,`tenant_id`,`parent_tenant_id`,`name`,`create_date`,`update_date`,`activity_id`,`money_rule`, | |||||
| `total_back_rate`,`mall_back_rate`,`merchant_back_rate` | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != name "> | |||||
| and `name` like concat('%', #{name},'%') | |||||
| </if> | |||||
| <if test=" null != activityId "> | |||||
| and `activity_id` = #{activityId} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||||
| </sql> | |||||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_cash_back_activity_item where id = #{id} and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxCashBackActivityItem" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_cash_back_activity_item | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -0,0 +1,89 @@ | |||||
| <?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.iformall.mapper.WxCashBackActivityMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCashBackActivity"> | |||||
| <id column="id" jdbcType="BIGINT" property="id" /> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId" /> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> | |||||
| <result column="status" jdbcType="INTEGER" property="status" /> | |||||
| <result column="name" jdbcType="VARCHAR" property="name" /> | |||||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate" /> | |||||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" /> | |||||
| <result column="start_time" jdbcType="TIMESTAMP" property="startTime" /> | |||||
| <result column="end_time" jdbcType="TIMESTAMP" property="endTime" /> | |||||
| <result column="limit_money" jdbcType="INTEGER" property="limitMoney" /> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| `id`,`tenant_id`,`parent_tenant_id`,`status`,`name`,`create_date`,`update_date`,`start_time`,`end_time`,`limit_money` | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != createDateBegin"> | |||||
| and `create_date` >= #{createDateBegin} | |||||
| </if> | |||||
| <if test=" null != createDateEnd"> | |||||
| and `create_date` <= #{createDateEnd} | |||||
| </if> | |||||
| <if test=" null != name "> | |||||
| and `name` like concat('%', #{name},'%') | |||||
| </if> | |||||
| <if test=" null != status "> | |||||
| and `status` = #{status} | |||||
| </if> | |||||
| <if test=" null != statusList "> | |||||
| and status in | |||||
| <foreach collection="statusList" index="index" item="statusItem" open="(" separator="," close=")"> | |||||
| #{statusItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||||
| </sql> | |||||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_cash_back_activity where id = #{id} and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxCashBackActivity" resultMap="BaseResultMap"> | |||||
| select <include refid="allColumns" /> from wx_cash_back_activity | |||||
| <include refid="dynamicWhereConditions" /> | |||||
| </select> | |||||
| <update id="updateStatus" parameterType="com.iformall.domain.po.WxCashBackActivity"> | |||||
| update wx_cash_back_activity | |||||
| set `status` = #{status}, | |||||
| `update_date` = #{updateDate} | |||||
| where id=#{id} | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| </update> | |||||
| </mapper> | |||||