@@ -49,6 +49,9 @@ public class WxChatController extends BaseController { | |||
@Autowired | |||
WxAppinfoService wxAppinfoServie; | |||
@Autowired | |||
WxLinkService wxLinkService; | |||
@GetMapping("/limit") | |||
public ResultData chatLimit() { | |||
Map retMap = new HashMap(); | |||
@@ -86,9 +89,21 @@ public class WxChatController extends BaseController { | |||
@GetMapping("/link") | |||
public ResultData link() { | |||
Map retMap = new HashMap(); | |||
TenantEntity tenantEntity = getCUser(); | |||
SysConfig config = sysConfigService.getByKey(SysConfigConstant.linkQrCode, tenantEntity); | |||
retMap.put("linkQrCode", config.getConfigItemValue()); | |||
WxCUser user = getCUser(); | |||
SysConfig linkFirstSlogan = sysConfigService.getByKey(SysConfigConstant.linkFirstSlogan, user); | |||
retMap.put("linkFirstSlogan", linkFirstSlogan.getConfigItemValue()); | |||
SysConfig linkSecondSlogan = sysConfigService.getByKey(SysConfigConstant.linkSecondSlogan, user); | |||
retMap.put("linkSecondSlogan", linkSecondSlogan.getConfigItemValue()); | |||
SysConfig linkCompany = sysConfigService.getByKey(SysConfigConstant.linkCompany, user); | |||
retMap.put("linkCompany", linkCompany.getConfigItemValue()); | |||
SysConfig linkCompanyAddress = sysConfigService.getByKey(SysConfigConstant.linkCompanyAddress, user); | |||
retMap.put("linkCompanyAddress", linkCompanyAddress.getConfigItemValue()); | |||
List<WxLink> linkList = wxLinkService.getCLinkList(user); | |||
retMap.put("linkList", linkList); | |||
return new ResultData(retMap); | |||
} | |||
} |
@@ -0,0 +1,30 @@ | |||
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_link") | |||
@Data | |||
@EqualsAndHashCode(callSuper = true) | |||
@ToString | |||
public class WxLink 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="qrCode") | |||
private String qrCode; | |||
@io.swagger.annotations.ApiModelProperty(value="电话",name="phone") | |||
private String phone; | |||
@io.swagger.annotations.ApiModelProperty(value="邮箱",name="email") | |||
private String email; | |||
} |
@@ -0,0 +1,16 @@ | |||
package com.iformall.mapper; | |||
import java.util.*; | |||
import org.apache.ibatis.annotations.Param; | |||
import com.iformall.common.CommonMapper; | |||
import com.iformall.domain.po.WxLink; | |||
public interface WxLinkMapper extends CommonMapper<WxLink, Long> { | |||
WxLink selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||
List<WxLink> findList(WxLink wxLink); | |||
} |
@@ -0,0 +1,25 @@ | |||
package com.iformall.service; | |||
import com.iformall.domain.po.WxLink; | |||
import com.iformall.domain.po.base.TenantEntity; | |||
import java.util.List; | |||
public interface WxLinkService { | |||
/** | |||
* 根据Id获得实体 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
WxLink getById(Long id,String tenantId); | |||
List<WxLink> list(WxLink product); | |||
List<WxLink> getCLinkList(TenantEntity tenantEntity); | |||
WxLink getCLink(TenantEntity tenantEntity,Long id); | |||
} |
@@ -0,0 +1,53 @@ | |||
package com.iformall.service.cache; | |||
import java.util.List; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import com.iformall.domain.po.WxLink; | |||
import com.iformall.utils.Constant; | |||
import com.iformall.utils.RedisCacheUtils; | |||
public class WxLinkCache { | |||
private static String getKey(Long linkId) { | |||
String key = Constant.linkPrev + linkId; | |||
return key; | |||
} | |||
public static WxLink getCache(RedisTemplate<String, Object> redisTemplate,Long linkId) { | |||
String key = getKey(linkId); | |||
return RedisCacheUtils.getCacheObject(redisTemplate, key, WxLink.class); | |||
} | |||
public static void cache(RedisTemplate<String, Object> redisTemplate,WxLink link) { | |||
String key = getKey(link.getId()); | |||
RedisCacheUtils.cache(redisTemplate, key, link, 3600*24*7); | |||
} | |||
public static void removeCache(RedisTemplate<String, Object> redisTemplate,Long linkId) { | |||
String key = getKey(linkId); | |||
RedisCacheUtils.removeCache(redisTemplate, key); | |||
} | |||
private static String getListKey(String tenantId) { | |||
String key = Constant.linkListPrev + tenantId; | |||
return key; | |||
} | |||
public static List<WxLink> getCacheList(RedisTemplate<String, Object> redisTemplate,String tenantId) { | |||
String key = getListKey(tenantId); | |||
return RedisCacheUtils.getCacheListObject(redisTemplate, key, WxLink.class); | |||
} | |||
public static void cacheList(RedisTemplate<String, Object> redisTemplate,List<WxLink> wxLinkList,String tenantId) { | |||
String key = getListKey(tenantId); | |||
RedisCacheUtils.cache(redisTemplate, key, wxLinkList, 3600*24*7); | |||
} | |||
public static void removeCacheList(RedisTemplate<String, Object> redisTemplate,String tenantId) { | |||
String key = getListKey(tenantId); | |||
RedisCacheUtils.removeCache(redisTemplate, key); | |||
} | |||
} |
@@ -0,0 +1,67 @@ | |||
package com.iformall.service.impl; | |||
import com.iformall.domain.po.WxLink; | |||
import com.iformall.domain.po.base.TenantEntity; | |||
import com.iformall.mapper.WxLinkMapper; | |||
import com.iformall.service.WxLinkService; | |||
import com.iformall.service.cache.WxLinkCache; | |||
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 WxLinkServiceImpl implements WxLinkService { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
WxLinkMapper wxLinkMapper; | |||
@Autowired | |||
@Qualifier("objectCommonRedisTemplate") | |||
RedisTemplate<String, Object> objectCommonRedisTemplate; | |||
@Override | |||
public WxLink getById(Long id, String tenantId) { | |||
return wxLinkMapper.selectById(id, tenantId); | |||
} | |||
@Override | |||
public List<WxLink> list(WxLink product) { | |||
return wxLinkMapper.findList(product); | |||
} | |||
@Override | |||
public List<WxLink> getCLinkList(TenantEntity tenantEntity) { | |||
List<WxLink> productList = WxLinkCache.getCacheList(objectCommonRedisTemplate,tenantEntity.getTenantId()); | |||
if (null == productList || productList.size() <= 0 ) { | |||
WxLink p = new WxLink(); | |||
p.updateTenantInfo(tenantEntity); | |||
List<WxLink> plist = list(p); | |||
if (null != plist && plist.size() > 0 ) { | |||
WxLinkCache.cacheList(objectCommonRedisTemplate, plist,tenantEntity.getTenantId()); | |||
return plist; | |||
} | |||
} | |||
return productList; | |||
} | |||
@Override | |||
public WxLink getCLink(TenantEntity tenantEntity,Long id) { | |||
WxLink _product = WxLinkCache.getCache(objectCommonRedisTemplate,id); | |||
if (null == _product) { | |||
_product = getById(id, tenantEntity.getTenantId()); | |||
if (null != _product) { | |||
WxLinkCache.cache(objectCommonRedisTemplate, _product); | |||
} | |||
} | |||
return _product; | |||
} | |||
} |
@@ -11,6 +11,8 @@ public class Constant { | |||
public static final String payaccountPrev = "gpt:payAccount:"; | |||
public static final String noticePrev = "gpt:notice:"; | |||
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 currentUser = "currentUser"; | |||
public static final String TENANT_ID = "tenantId"; | |||
public static final String PARENT_TENANT_ID = "parentTenantId"; | |||
@@ -6,6 +6,9 @@ public class SysConfigConstant { | |||
public static final String freeDays="freeDays"; | |||
public static final String promotContentCount="promotContentCount"; | |||
public static final String completionContentCount="completionContentCount"; | |||
public static final String linkQrCode="linkQrCode"; | |||
public static final String linkFirstSlogan="linkFirstSlogan"; | |||
public static final String linkSecondSlogan="linkSecondSlogan"; | |||
public static final String linkCompany="linkCompany"; | |||
public static final String linkCompanyAddress="linkCompanyAddress"; | |||
} |
@@ -0,0 +1,58 @@ | |||
<?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.WxLinkMapper"> | |||
<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxLink"> | |||
<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="qr_code" jdbcType="VARCHAR" property="qrCode"/> | |||
<result column="phone" jdbcType="VARCHAR" property="phone"/> | |||
<result column="email" jdbcType="VARCHAR" property="email"/> | |||
</resultMap> | |||
<sql id="allColumns"> | |||
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`qr_code`,`phone`,`email` | |||
</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 != 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_link where id = #{id} and tenant_id = #{tenantId} | |||
</select> | |||
<select id="findList" parameterType="com.iformall.domain.po.WxLink" resultMap="BaseResultMap"> | |||
select | |||
<include refid="allColumns"/> | |||
from wx_link | |||
<include refid="dynamicWhereConditions"/> | |||
</select> | |||
</mapper> |