| @@ -0,0 +1,54 @@ | |||
| package com.iformall.controller; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.WxPromotTitle; | |||
| import com.iformall.domain.po.WxPromotType; | |||
| import com.iformall.service.SysConfigService; | |||
| import com.iformall.service.WxPromotService; | |||
| import com.iformall.service.wx.WxPayService; | |||
| import io.swagger.annotations.ApiImplicitParam; | |||
| import io.swagger.annotations.ApiImplicitParams; | |||
| import java.util.List; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| @RestController | |||
| @RequestMapping("/api/promote") | |||
| public class WxPromoteController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| SysConfigService sysConfigService; | |||
| @Autowired | |||
| WxPromotService wxPromotService; | |||
| @Autowired | |||
| WxPayService wxPayService; | |||
| @GetMapping("/list") | |||
| public ResultData list() { | |||
| WxCUser user = getCUser(); | |||
| WxPromotType pt = new WxPromotType(); | |||
| pt.updateTenantInfo(user); | |||
| List<WxPromotType> plist = wxPromotService.promotTypeList(pt); | |||
| return new ResultData(plist); | |||
| } | |||
| @GetMapping("/titleList") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "typeId", value = "页数", dataType = "Long", paramType = "query", required = true) | |||
| }) | |||
| public ResultData titleList(Long typeId) { | |||
| WxCUser user = getCUser(); | |||
| WxPromotTitle pt = new WxPromotTitle(); | |||
| pt.setPromotTypeId(typeId); | |||
| pt.updateTenantInfo(user); | |||
| List<WxPromotTitle> plist = wxPromotService.getPromotTitleList(pt); | |||
| return new ResultData(plist); | |||
| } | |||
| } | |||
| @@ -0,0 +1,31 @@ | |||
| package com.iformall.domain.po; | |||
| 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.*; | |||
| @TableName(value = "wx_promot_title") | |||
| @Data | |||
| @EqualsAndHashCode(callSuper = true) | |||
| @ToString | |||
| public class WxPromotTitle extends TenantEntity { | |||
| private static final long serialVersionUID = -5094915301794376964L; | |||
| protected Long id; | |||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") | |||
| private Date createTime; | |||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") | |||
| private Date updateTime; | |||
| @io.swagger.annotations.ApiModelProperty(value="名称",name="title") | |||
| private String title; | |||
| @io.swagger.annotations.ApiModelProperty(value="对话加的前缀",name="prePromot") | |||
| private String prePromot; | |||
| @io.swagger.annotations.ApiModelProperty(value="typeId",name="promotTypeId") | |||
| private Long promotTypeId; | |||
| @io.swagger.annotations.ApiModelProperty(value="状态EnumDeleteStatus",name="status") | |||
| private Integer status; | |||
| } | |||
| @@ -0,0 +1,29 @@ | |||
| package com.iformall.domain.po; | |||
| 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.*; | |||
| @TableName(value = "wx_promot_type") | |||
| @Data | |||
| @EqualsAndHashCode(callSuper = true) | |||
| @ToString | |||
| public class WxPromotType extends TenantEntity { | |||
| private static final long serialVersionUID = -5094915301794376964L; | |||
| protected Long id; | |||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") | |||
| private Date createTime; | |||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") | |||
| private Date updateTime; | |||
| @io.swagger.annotations.ApiModelProperty(value="产品名称",name="name") | |||
| private String name; | |||
| @io.swagger.annotations.ApiModelProperty(value="产品图片",name="img") | |||
| private String img; | |||
| @io.swagger.annotations.ApiModelProperty(value="状态EnumDeleteStatus",name="status") | |||
| private Integer status; | |||
| } | |||
| @@ -0,0 +1,33 @@ | |||
| package com.iformall.enums; | |||
| public enum EnumDeleteStatus { | |||
| NORMAL(0, "正常"), | |||
| DELETED(1, "已删除"), | |||
| ; | |||
| public static EnumDeleteStatus getEnum(Integer code) { | |||
| for (EnumDeleteStatus value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumDeleteStatus(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 java.util.*; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxPromotTitle; | |||
| public interface WxPromotTitleMapper extends CommonMapper<WxPromotTitle, Long> { | |||
| WxPromotTitle selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||
| List<WxPromotTitle> findList(WxPromotTitle wxProduct); | |||
| } | |||
| @@ -0,0 +1,15 @@ | |||
| package com.iformall.mapper; | |||
| import java.util.*; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxPromotType; | |||
| public interface WxPromotTypeMapper extends CommonMapper<WxPromotType, Long> { | |||
| WxPromotType selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||
| List<WxPromotType> findList(WxPromotType wxProduct); | |||
| } | |||
| @@ -0,0 +1,21 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxPromotTitle; | |||
| import com.iformall.domain.po.WxPromotType; | |||
| import java.util.List; | |||
| public interface WxPromotService { | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| WxPromotType getPromotTypeById(Long id,String tenantId); | |||
| List<WxPromotType> promotTypeList(WxPromotType product); | |||
| List<WxPromotTitle> getPromotTitleList(WxPromotTitle product); | |||
| } | |||
| @@ -30,8 +30,6 @@ public class WxProductCache { | |||
| RedisCacheUtils.removeCache(redisTemplate, key); | |||
| } | |||
| private static String getFirstKey(String tenantId) { | |||
| String key = Constant.productFirstPre + tenantId; | |||
| return key; | |||
| @@ -0,0 +1,75 @@ | |||
| package com.iformall.service.cache; | |||
| import java.util.List; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import com.iformall.domain.po.WxProduct; | |||
| import com.iformall.domain.po.WxPromotTitle; | |||
| import com.iformall.domain.po.WxPromotType; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| public class WxPromotCache { | |||
| private static String getKey(Long productId) { | |||
| String key = Constant.promotPre + productId; | |||
| return key; | |||
| } | |||
| public static WxPromotType getCache(RedisTemplate<String, Object> redisTemplate,Long promotTypeId) { | |||
| String key = getKey(promotTypeId); | |||
| return RedisCacheUtils.getCacheObject(redisTemplate, key, WxPromotType.class); | |||
| } | |||
| public static void cache(RedisTemplate<String, Object> redisTemplate,WxPromotType wxPromotType) { | |||
| String key = getKey(wxPromotType.getId()); | |||
| RedisCacheUtils.cache(redisTemplate, key, wxPromotType, 3600*24*7); | |||
| } | |||
| public static void removeCache(RedisTemplate<String, Object> redisTemplate,Long promotTypeId) { | |||
| String key = getKey(promotTypeId); | |||
| RedisCacheUtils.removeCache(redisTemplate, key); | |||
| } | |||
| private static String getListKey(String tenantId) { | |||
| String key = Constant.promotListPre + tenantId; | |||
| return key; | |||
| } | |||
| public static List<WxPromotType> getCacheList(RedisTemplate<String, Object> redisTemplate,String tenantId) { | |||
| String key = getListKey(tenantId); | |||
| return RedisCacheUtils.getCacheListObject(redisTemplate, key, WxPromotType.class); | |||
| } | |||
| public static void cacheList(RedisTemplate<String, Object> redisTemplate,List<WxPromotType> wxPromotTypeList,String tenantId) { | |||
| String key = getListKey(tenantId); | |||
| RedisCacheUtils.cache(redisTemplate, key, wxPromotTypeList, 3600*24*7); | |||
| } | |||
| public static void removeCacheList(RedisTemplate<String, Object> redisTemplate,String tenantId) { | |||
| String key = getListKey(tenantId); | |||
| RedisCacheUtils.removeCache(redisTemplate, key); | |||
| } | |||
| private static String getTitleListKey(Long promoteTypeId) { | |||
| String key = Constant.promotTitleListPre + promoteTypeId; | |||
| return key; | |||
| } | |||
| public static List<WxPromotTitle> getCacheTitleList(RedisTemplate<String, Object> redisTemplate,Long promoteTypeId) { | |||
| String key = getTitleListKey(promoteTypeId); | |||
| return RedisCacheUtils.getCacheListObject(redisTemplate, key, WxPromotTitle.class); | |||
| } | |||
| public static void cacheTitleList(RedisTemplate<String, Object> redisTemplate,List<WxPromotTitle> wxPromotTitleList,Long promoteTypeId) { | |||
| String key = getTitleListKey(promoteTypeId); | |||
| RedisCacheUtils.cache(redisTemplate, key, wxPromotTitleList, 3600*24*7); | |||
| } | |||
| public static void removeCacheTitleList(RedisTemplate<String, Object> redisTemplate,Long promoteTypeId) { | |||
| String key = getTitleListKey(promoteTypeId); | |||
| RedisCacheUtils.removeCache(redisTemplate, key); | |||
| } | |||
| } | |||
| @@ -0,0 +1,75 @@ | |||
| package com.iformall.service.impl; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumDeleteStatus; | |||
| import com.iformall.enums.EnumYesOrNo; | |||
| import com.iformall.mapper.WxProductMapper; | |||
| import com.iformall.mapper.WxPromotTitleMapper; | |||
| import com.iformall.mapper.WxPromotTypeMapper; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.cache.WxProductCache; | |||
| import com.iformall.service.cache.WxPromotCache; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.List; | |||
| @Service | |||
| public class WxPromotServiceImpl implements WxPromotService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxPromotTypeMapper wxPromotTypeMapper; | |||
| @Autowired | |||
| WxPromotTitleMapper wxPromotTitleMapper; | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> objectCommonRedisTemplate; | |||
| @Override | |||
| public WxPromotType getPromotTypeById(Long id, String tenantId) { | |||
| return wxPromotTypeMapper.selectById(id, tenantId); | |||
| } | |||
| @Override | |||
| public List<WxPromotType> promotTypeList(WxPromotType product) { | |||
| List<WxPromotType> productList = WxPromotCache.getCacheList(objectCommonRedisTemplate,product.getTenantId()); | |||
| if (null == productList || productList.size() <= 0 ) { | |||
| WxPromotType p = new WxPromotType(); | |||
| p.updateTenantInfo(product); | |||
| p.setStatus(EnumDeleteStatus.NORMAL.getCode()); | |||
| List<WxPromotType> plist = wxPromotTypeMapper.findList(p); | |||
| if (null != plist && plist.size() > 0 ) { | |||
| WxPromotCache.cacheList(objectCommonRedisTemplate, plist,product.getTenantId()); | |||
| return plist; | |||
| } | |||
| } | |||
| return productList; | |||
| } | |||
| @Override | |||
| public List<WxPromotTitle> getPromotTitleList(WxPromotTitle product) { | |||
| List<WxPromotTitle> productList = WxPromotCache.getCacheTitleList(objectCommonRedisTemplate,product.getPromotTypeId()); | |||
| if (null == productList || productList.size() <= 0 ) { | |||
| WxPromotTitle p = new WxPromotTitle(); | |||
| p.updateTenantInfo(product); | |||
| p.setStatus(EnumDeleteStatus.NORMAL.getCode()); | |||
| List<WxPromotTitle> plist = wxPromotTitleMapper.findList(p); | |||
| if (null != plist && plist.size() > 0 ) { | |||
| WxPromotCache.cacheTitleList(objectCommonRedisTemplate, plist,product.getPromotTypeId()); | |||
| return plist; | |||
| } | |||
| } | |||
| return productList; | |||
| } | |||
| } | |||
| @@ -13,6 +13,9 @@ public class Constant { | |||
| public static final String noticeListPrev = "gpt:noticeList:"; | |||
| public static final String linkPrev = "gpt:link:"; | |||
| public static final String linkListPrev = "gpt:linkList:"; | |||
| public static final String promotPre = "gpt:promot:"; | |||
| public static final String promotListPre= "gpt:promotList:"; | |||
| public static final String promotTitleListPre= "gpt:promotTitleList:"; | |||
| public static final String currentUser = "currentUser"; | |||
| public static final String TENANT_ID = "tenantId"; | |||
| public static final String PARENT_TENANT_ID = "parentTenantId"; | |||
| @@ -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.WxPromotTitleMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxPromotTitle"> | |||
| <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="create_time" jdbcType="TIMESTAMP" property="createTime"/> | |||
| <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> | |||
| <result column="title" jdbcType="VARCHAR" property="title"/> | |||
| <result column="pre_promot" jdbcType="VARCHAR" property="prePromot"/> | |||
| <result column="status" jdbcType="INTEGER" property="status"/> | |||
| <result column="promot_type_id" jdbcType="BIGINT" property="promotTypeId"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`title`,`pre_promot`,`status`,`promot_type_id` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| where `tenant_id` = #{tenantId} | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != createTime "> | |||
| and `create_time` = #{createTime} | |||
| </if> | |||
| <if test=" null != updateTime "> | |||
| and `update_time` = #{updateTime} | |||
| </if> | |||
| <if test=" null != name "> | |||
| and `name` like concat('%', #{name},'%') | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != promotTypeId "> | |||
| and `promot_type_id` = #{promotTypeId} | |||
| </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_promot_title where id = #{id} and tenant_id = #{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxPromotTitle" resultMap="BaseResultMap"> | |||
| select | |||
| <include refid="allColumns"/> | |||
| from wx_promot_title | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| </mapper> | |||
| @@ -0,0 +1,66 @@ | |||
| <?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.WxPromotTypeMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxPromotType"> | |||
| <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="create_time" jdbcType="TIMESTAMP" property="createTime"/> | |||
| <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> | |||
| <result column="name" jdbcType="VARCHAR" property="name"/> | |||
| <result column="img" jdbcType="VARCHAR" property="img"/> | |||
| <result column="status" jdbcType="INTEGER" property="status"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`name`,`img`,`status` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| where `tenant_id` = #{tenantId} | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != createTime "> | |||
| and `create_time` = #{createTime} | |||
| </if> | |||
| <if test=" null != updateTime "> | |||
| and `update_time` = #{updateTime} | |||
| </if> | |||
| <if test=" null != name "> | |||
| and `name` like concat('%', #{name},'%') | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </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_promot_type where id = #{id} and tenant_id = #{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxPromotType" resultMap="BaseResultMap"> | |||
| select | |||
| <include refid="allColumns"/> | |||
| from wx_promot_type | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| </mapper> | |||