记得上下班打卡 | git大法好,push需谨慎

Commit 8480af40 authored by wangyifan's avatar wangyifan

redis缓存改造-adam:info:user

parent 872f86c6
...@@ -73,7 +73,7 @@ spring: ...@@ -73,7 +73,7 @@ spring:
autoconfigure: autoconfigure:
exclude: exclude:
- org.springframework.cloud.bus.BusAutoConfiguration - org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration # - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration - org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
redis: redis:
queue: queue:
...@@ -98,6 +98,18 @@ spring: ...@@ -98,6 +98,18 @@ spring:
max-wait: -1 max-wait: -1
max-idle: 8 max-idle: 8
min-idle: 4 min-idle: 4
datasource:
name: ${liquidnet.mysql.database-name}
url: jdbc:mysql://${liquidnet.mysql.urlHostAndPort}/${liquidnet.mysql.database-name}?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
# type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 45
minimum-idle: 8
connection-test-query: SELECT 1
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -73,7 +73,7 @@ spring: ...@@ -73,7 +73,7 @@ spring:
autoconfigure: autoconfigure:
exclude: exclude:
- org.springframework.cloud.bus.BusAutoConfiguration - org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration # - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
queue: queue:
database: ${liquidnet.redis.queue.database} database: ${liquidnet.redis.queue.database}
...@@ -102,6 +102,17 @@ spring: ...@@ -102,6 +102,17 @@ spring:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=200&waitQueueMultiple=100 uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=200&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled} sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database} database: ${liquidnet.mongodb.database}
datasource:
name: ${liquidnet.mysql.database-name}
url: jdbc:mysql://${liquidnet.mysql.urlHostAndPort}/${liquidnet.mysql.database-name}?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
# type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 45
minimum-idle: 8
connection-test-query: SELECT 1
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -73,7 +73,7 @@ spring: ...@@ -73,7 +73,7 @@ spring:
autoconfigure: autoconfigure:
exclude: exclude:
- org.springframework.cloud.bus.BusAutoConfiguration - org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration # - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
queue: queue:
database: ${liquidnet.redis.queue.database} database: ${liquidnet.redis.queue.database}
...@@ -102,6 +102,17 @@ spring: ...@@ -102,6 +102,17 @@ spring:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=200&waitQueueMultiple=100 uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=200&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled} sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database} database: ${liquidnet.mongodb.database}
datasource:
name: ${liquidnet.mysql.database-name}
url: jdbc:mysql://${liquidnet.mysql.urlHostAndPort}/${liquidnet.mysql.database-name}?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
# type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 45
minimum-idle: 8
connection-test-query: SELECT 1
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -60,4 +60,32 @@ public interface AdamUserMapper extends BaseMapper<AdamUser> { ...@@ -60,4 +60,32 @@ public interface AdamUserMapper extends BaseMapper<AdamUser> {
* @return * @return
*/ */
List<AdamUserInfoDto> selectByPhones(@Param("mobiles") String mobiles); List<AdamUserInfoDto> selectByPhones(@Param("mobiles") String mobiles);
@Select("SELECT " +
"au.uid, " +
"au.mobile, " +
"au.passwd, " +
"aui.nickname, " +
"au.state, " +
"aui.sex, " +
"aui.birthday, " +
"aui.area, " +
"aui.signature, " +
"aui.avatar, " +
"aui.background, " +
"aui.tag_me, " +
"au.created_at, " +
"au.updated_at, " +
"au.closed_at, " +
"au.is_complete, " +
"aui.rong_cloud_token, " +
"aui.qr_code, " +
"auml.province, " +
"auml.city, " +
"auml.county " +
"from adam_user au " +
"left join adam_user_info aui on au.uid = aui.uid " +
"left join adam_user_mobile_locate auml on au.uid = auml.uid " +
"where au.uid = #{uid}")
AdamUserInfoDto selectByUid(@Param("uid") String uid);
} }
package com.liquidnet.service; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
...@@ -14,6 +15,7 @@ import java.util.Arrays; ...@@ -14,6 +15,7 @@ import java.util.Arrays;
@Slf4j @Slf4j
@EnableFeignClients @EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"}) @SpringBootApplication(scanBasePackages = {"com.liquidnet"})
@MapperScan(basePackages = {"com.liquidnet.service.*.mapper"})
public class ServiceAdamApplication implements CommandLineRunner { public class ServiceAdamApplication implements CommandLineRunner {
@Autowired @Autowired
private Environment environment; private Environment environment;
......
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
...@@ -7,7 +8,11 @@ import com.liquidnet.commons.lang.util.IdentityUtils; ...@@ -7,7 +8,11 @@ import com.liquidnet.commons.lang.util.IdentityUtils;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil; import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.adam.util.ObjectUtil; import com.liquidnet.service.adam.util.ObjectUtil;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -34,6 +39,11 @@ public class AdamRdmService { ...@@ -34,6 +39,11 @@ public class AdamRdmService {
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
@Autowired
AdamUserMapper adamUserMapper;
@Autowired
AdamUserMemberMapper adamUserMemberMapper;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | Switch config */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | Switch config */
public Integer getSwitch(String rk) { public Integer getSwitch(String rk) {
...@@ -138,13 +148,39 @@ public class AdamRdmService { ...@@ -138,13 +148,39 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <UID, USER_INFO> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <UID, USER_INFO> */
public boolean setUserInfoVoByUid(String uid, AdamUserInfoVo vo) { public boolean setUserInfoVoByUid(String uid, AdamUserInfoVo vo) {
return redisUtil.set(AdamRedisConst.INFO_USER.concat(uid), vo); // 缓存30天
return redisUtil.set(AdamRedisConst.INFO_USER.concat(uid), vo, 30 * 24 * 60 * 60);
} }
public AdamUserInfoVo getUserInfoVoByUid(String uid) { public AdamUserInfoVo getUserInfoVoByUid(String uid) {
String rk = AdamRedisConst.INFO_USER.concat(uid); String rk = AdamRedisConst.INFO_USER.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk); AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk);
// TODO 如果不存在则从数据库查询
if (null == vo) {
log.info("not find value in redis cache, key: {}", rk);
AdamUserInfoDto adamUserInfoDto = adamUserMapper.selectByUid(uid);
if (null != adamUserInfoDto) {
vo = AdamUserInfoVo.getNew();
vo.copy(adamUserInfoDto);
LambdaQueryWrapper<AdamUserMember> adamUserMemberWrapper = new LambdaQueryWrapper();
adamUserMemberWrapper.eq(AdamUserMember::getUid, uid);
AdamUserMember adamUserMember = adamUserMemberMapper.selectOne(adamUserMemberWrapper);
if (null == adamUserMember) {
vo.rating(null);
} else {
AdamUserMemberVo adamUserMemberVo = new AdamUserMemberVo();
adamUserMemberVo.copy(adamUserMember);
vo.rating(adamUserMemberVo);
}
}
if (null != vo) {
boolean setResult = setUserInfoVoByUid(uid, vo);
log.info("save value to redis cache, key: {}, result: {}", rk, setResult);
}
}
// if (null == vo) { // if (null == vo) {
// s = System.currentTimeMillis(); // s = System.currentTimeMillis();
// vo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid).and("state").is(1)), // vo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
...@@ -263,10 +299,10 @@ public class AdamRdmService { ...@@ -263,10 +299,10 @@ public class AdamRdmService {
public void identityHandler1(String uid, String name, String idCard) { public void identityHandler1(String uid, String name, String idCard) {
int rst = this.isCertification(1, idCard, name); int rst = this.isCertification(1, idCard, name);
//增加判断逻辑 用户添加的时候先去调自己的库,如果有身份证数据但和名字不匹配的时候,再请求第三方接口去验 //增加判断逻辑 用户添加的时候先去调自己的库,如果有身份证数据但和名字不匹配的时候,再请求第三方接口去验
if(rst==0){ if (rst == 0) {
//本地存在,验证不通过 删除标记 //本地存在,验证不通过 删除标记
redisUtil.del(AdamRedisConst.INFO_CERTIFICATION + 1 + idCard); redisUtil.del(AdamRedisConst.INFO_CERTIFICATION + 1 + idCard);
rst=-1; rst = -1;
} }
switch (rst) { switch (rst) {
case -1:// 本地不存在 case -1:// 本地不存在
...@@ -443,7 +479,7 @@ public class AdamRdmService { ...@@ -443,7 +479,7 @@ public class AdamRdmService {
if (null == vos) { if (null == vos) {
vos = ObjectUtil.getAdamEntersVoArrayList(); vos = ObjectUtil.getAdamEntersVoArrayList();
} }
vos.add(0,vo); vos.add(0, vo);
return redisUtil.set(AdamRedisConst.INFO_ENTERS + uid, vos); return redisUtil.set(AdamRedisConst.INFO_ENTERS + uid, vos);
} }
......
package com.liquidnet.service; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
...@@ -14,6 +15,7 @@ import java.util.Arrays; ...@@ -14,6 +15,7 @@ import java.util.Arrays;
@Slf4j @Slf4j
@EnableFeignClients @EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"}) @SpringBootApplication(scanBasePackages = {"com.liquidnet"})
@MapperScan(basePackages = {"com.liquidnet.service.*.mapper"})
public class ServiceGoblinApplication implements CommandLineRunner { public class ServiceGoblinApplication implements CommandLineRunner {
@Autowired @Autowired
private Environment environment; private Environment environment;
......
package com.liquidnet.service.goblin.util; package com.liquidnet.service.goblin.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo; import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -15,11 +20,35 @@ import java.time.LocalDateTime; ...@@ -15,11 +20,35 @@ import java.time.LocalDateTime;
public class AdamRedisUtils { public class AdamRedisUtils {
@Autowired @Autowired
public RedisUtil redisUtil; public RedisUtil redisUtil;
@Autowired
AdamUserMapper adamUserMapper;
@Autowired
AdamUserMemberMapper adamUserMemberMapper;
public AdamUserInfoVo getUserInfoVoByUid(String uid) { public AdamUserInfoVo getUserInfoVoByUid(String uid) {
String rk = AdamRedisConst.INFO_USER.concat(uid); String rk = AdamRedisConst.INFO_USER.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk); AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk);
// TODO 如果不存在则从数据库查询
if (null == vo) {
log.info("not find value in redis cache, key: {}", rk);
AdamUserInfoDto adamUserInfoDto = adamUserMapper.selectByUid(uid);
if (null != adamUserInfoDto) {
vo = AdamUserInfoVo.getNew();
vo.copy(adamUserInfoDto);
LambdaQueryWrapper<AdamUserMember> adamUserMemberWrapper = new LambdaQueryWrapper();
adamUserMemberWrapper.eq(AdamUserMember::getUid, uid);
AdamUserMember adamUserMember = adamUserMemberMapper.selectOne(adamUserMemberWrapper);
if (null == adamUserMember) {
vo.rating(null);
} else {
AdamUserMemberVo adamUserMemberVo = new AdamUserMemberVo();
adamUserMemberVo.copy(adamUserMember);
vo.rating(adamUserMemberVo);
}
}
}
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
......
package com.liquidnet.service; package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
...@@ -14,6 +15,7 @@ import java.util.Arrays; ...@@ -14,6 +15,7 @@ import java.util.Arrays;
@Slf4j @Slf4j
@EnableFeignClients @EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"}) @SpringBootApplication(scanBasePackages = {"com.liquidnet"})
@MapperScan(basePackages = {"com.liquidnet.service.*.mapper"})
public class ServiceOrderApplication implements CommandLineRunner { public class ServiceOrderApplication implements CommandLineRunner {
@Autowired @Autowired
private Environment environment; private Environment environment;
......
package com.liquidnet.service.order.utils; package com.liquidnet.service.order.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.IdentityUtils; import com.liquidnet.commons.lang.util.IdentityUtils;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo; import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -21,11 +26,34 @@ import java.time.LocalDateTime; ...@@ -21,11 +26,34 @@ import java.time.LocalDateTime;
public class AdamRedisUtils { public class AdamRedisUtils {
@Autowired @Autowired
public RedisUtil redisUtil; public RedisUtil redisUtil;
@Autowired
AdamUserMapper adamUserMapper;
@Autowired
AdamUserMemberMapper adamUserMemberMapper;
public AdamUserInfoVo getUserInfoVoByUid(String uid) { public AdamUserInfoVo getUserInfoVoByUid(String uid) {
String rk = AdamRedisConst.INFO_USER.concat(uid); String rk = AdamRedisConst.INFO_USER.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk); AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk);
if (null == vo) {
log.info("not find value in redis cache, key: {}", rk);
AdamUserInfoDto adamUserInfoDto = adamUserMapper.selectByUid(uid);
if (null != adamUserInfoDto) {
vo = AdamUserInfoVo.getNew();
vo.copy(adamUserInfoDto);
LambdaQueryWrapper<AdamUserMember> adamUserMemberWrapper = new LambdaQueryWrapper();
adamUserMemberWrapper.eq(AdamUserMember::getUid, uid);
AdamUserMember adamUserMember = adamUserMemberMapper.selectOne(adamUserMemberWrapper);
if (null == adamUserMember) {
vo.rating(null);
} else {
AdamUserMemberVo adamUserMemberVo = new AdamUserMemberVo();
adamUserMemberVo.copy(adamUserMember);
vo.rating(adamUserMemberVo);
}
}
}
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment