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

Commit b0d60088 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev' into dev

parents 939f3211 8aa137ae
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamAddressesParam; import com.liquidnet.service.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.entity.AdamAddresses;
import java.util.List;
/** /**
* <p> * <p>
...@@ -23,5 +23,5 @@ public interface IAdamAddressesService { ...@@ -23,5 +23,5 @@ public interface IAdamAddressesService {
void remove(String uid, String addressesId); void remove(String uid, String addressesId);
AdamAddressesVo queryDefault(String uid); AdamAddressesVo queryDefault(List<AdamAddressesVo> vos, String uid, boolean downgrade);
} }
...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.service; ...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.AdamEntersParam; import com.liquidnet.service.adam.dto.AdamEntersParam;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import java.util.List;
/** /**
* <p> * <p>
* 入场人 服务类 * 入场人 服务类
...@@ -20,5 +22,5 @@ public interface IAdamEntersService { ...@@ -20,5 +22,5 @@ public interface IAdamEntersService {
void remove(String uid, String entersId); void remove(String uid, String entersId);
AdamEntersVo queryDefault(String uid); AdamEntersVo queryDefault(List<AdamEntersVo> vos, String uid, boolean downgrade);
} }
...@@ -39,6 +39,17 @@ public class AdamSwitchAdminController { ...@@ -39,6 +39,17 @@ public class AdamSwitchAdminController {
return ResponseDto.success(redisUtil.get(AdamRedisConst.SWITCH_BUY_MEMBER)); return ResponseDto.success(redisUtil.get(AdamRedisConst.SWITCH_BUY_MEMBER));
} }
@RequiresPermissions("adam:switch:max:memberno")
@ApiOperation(value = "会员用户最大ID_NO")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "int", name = "opt", value = "会员用户最大ID_NO", example = "15000"),
})
@PostMapping("set/memberno")
public ResponseDto<Object> purchaseStartMemberNo(@Max(1) @Min(0) @RequestParam int opt) {
redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, opt);
return ResponseDto.success(redisUtil.get(AdamRedisConst.INCR_MEMBER_NO));
}
@RequiresPermissions("adam:switch:gray:login") @RequiresPermissions("adam:switch:gray:login")
@ApiOperation(value = "开放/限制校验证码") @ApiOperation(value = "开放/限制校验证码")
@ApiImplicitParams({ @ApiImplicitParams({
......
liquidnet:
info:
port: 9003
context: /service-account
name: liquidnet-service-account
logfile:
path: /data/logs
name: service-account
mysql:
database-name: liquidnet_wac
server:
port: ${liquidnet.info.port}
tomcat:
uri-encoding: UTF-8
servlet:
context-path: ${liquidnet.info.context}
# -----------------------------------------------------------
knife4j:
production: ${liquidnet.knife4j.disable}
basic:
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
logging:
file:
name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}.log
max-size: 200MB
pattern:
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level:
root: info
#以下是为指定包设置日志级别
# com:
# liquidnet: info
# -----------------------------------------------------------
eureka:
# client:
# register-with-eureka: true
# fetch-registry: true
# serviceUrl:
# defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
instance:
hostname: ${spring.cloud.client.ip-address}
lease-expiration-duration-in-seconds: 15 #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
lease-renewal-interval-in-seconds: 5 #服务刷新时间配置,每隔这个时间会主动心跳一次
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
# -----------------------------------------------------------
#actuator/info
info:
app:
name: ${liquidnet.info.name}
company:
name: lightnet.io
build:
groupId: '@project.groupId@'
artifactId: '@project.artifactId@'
version: '@project.version@'
# -----------------------------------------------------------
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
# -----------------------------------------------------------
xxl:
job:
admin:
addresses: http://127.0.0.1:8090/
accessToken:
executor:
appname: liquidnetTaskService
address:
ip:
port: 9102
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 3
# -----------------------------------------------------------
spring:
application:
name: ${liquidnet.info.name}
autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
cloud:
refresh:
extra-refreshable: none
rabbitmq:
addresses: ${liquidnet.rabbitmq.host}
port: ${liquidnet.rabbitmq.port}
username: ${liquidnet.rabbitmq.username}
password: ${liquidnet.rabbitmq.password}
shardingsphere:
props:
sql:
show: false
simple: true
datasource:
names: db0
db0:
type: org.apache.commons.dbcp2.BasicDataSource
# driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${liquidnet.mysql.urlHostAndPort}/${liquidnet.mysql.database-name}?serverTimezone=UTC&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8&useSSL=false&autoReconnect=true
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
initialSize: 10
maxTotal: 50
maxIdle: 10
# minIdle: 0
timeBetweenEvictionRunsMillis: 6000
validationQuery: select 1
testWhileIdle: true
testOnBorrow: false
poolPreparedStatements: true
maxOpenPreparedStatements: 100
sharding:
tables:
FIN_AC_N02:
actualDataNodes: db${0}.FIN_AC_N02_${0..24}
logicTable: FIN_AC_N02
tableStrategy:
standard:
sharding-column: FA1
precise-algorithm-class-name: com.liquidnet.common.sharding.jdbc.algorithm.ModuloShardingTableAlgorithm
range-algorithm-class-name: com.liquidnet.common.sharding.jdbc.algorithm.ModuloShardingTableAlgorithm
# inline:
# algorithmExpression: FIN_AC_N11_${FA1 % 25}
# shardingColumn: fin_id
# -----------------------------------------------------------
# -----------------------------------------------------------
...@@ -106,11 +106,11 @@ spring: ...@@ -106,11 +106,11 @@ spring:
codec: codec:
class: "org.redisson.codec.JsonJacksonCodec" class: "org.redisson.codec.JsonJacksonCodec"
transportMode: "NIO" transportMode: "NIO"
data: # data:
mongodb: # mongodb:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100 # uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled} # sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database} # database: ${liquidnet.mongodb.database}
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
liquidnet:
info:
port: 9002
context: /service-bank
name: liquidnet-service-bank
logfile:
path: /data/logs
name: service-bank
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level-root: info
mysql:
database-name: liquidnet_bank
conf:
currencycloud:
email_address: liquidnet@lightnet.io
auth:
environment: demo
login_id: michael.ran@lightnet.io
api_key: 745dbaee98a8b7115df3696b6fa7b48959294c34117e7240ebcd1e07268a9bad
#以下为spring各环境个性配置
spring:
rabbitmq:
addresses: ${liquidnet.rabbitmq.host}
port: ${liquidnet.rabbitmq.port}
username: ${liquidnet.rabbitmq.username}
password: ${liquidnet.rabbitmq.password}
redis:
port: ${liquidnet.redis.port}
host: ${liquidnet.redis.host}
password: ${liquidnet.redis.password}
lettuce:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
data:
mongodb:
uri: mongodb://${liquidnet.mongodb.host}:${liquidnet.mongodb.port}/${liquidnet.mongodb.gfsdatabasename}
server:
port: ${liquidnet.info.port}
tomcat:
uri-encoding: UTF-8
servlet:
context-path: ${liquidnet.info.context}
# -----------------------------------------------------------
knife4j:
production: ${liquidnet.knife4j.disable}
basic:
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
logging:
config: ${liquidnet.logfile.config}
# file:
# name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}.log
# max-size: 200MB
# pattern:
# file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
# console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
# rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
# level:
# root: info
#以下是为指定包设置日志级别
# com:
# liquidnet: info
# -----------------------------------------------------------
eureka:
# client:
# register-with-eureka: true
# fetch-registry: true
# serviceUrl:
# defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
instance:
hostname: ${spring.cloud.client.ip-address}
lease-expiration-duration-in-seconds: 15 #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
lease-renewal-interval-in-seconds: 5 #服务刷新时间配置,每隔这个时间会主动心跳一次
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
# -----------------------------------------------------------
#actuator/info
info:
app:
name: ${liquidnet.info.name}
company:
name: lightnet.io
build:
groupId: '@project.groupId@'
artifactId: '@project.artifactId@'
version: '@project.version@'
# -----------------------------------------------------------
mybatis-plus:
mapper-locations: classpath:com.liquidnet.service.bank.mapper/*Mapper.xml
global-config:
db-config:
logic-delete-field: is_active
logic-delete-value: false
logic-not-delete-value: true
# -----------------------------------------------------------
spring:
application:
name: ${liquidnet.info.name}
autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
datasource:
name: liquidnet_bus_db
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: org.apache.tomcat.jdbc.pool.DataSource
driver-class-name: com.mysql.cj.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
mvc:
static-path-pattern: /templates/**
# 定位模板的目录
view:
prefix: classpath:/templates/
suffix: .html
resources:
static-locations: classpath:/templates/,classpath:/static/page
# -----------------------------------------------------------
# -----------------------------------------------------------
...@@ -70,7 +70,9 @@ spring: ...@@ -70,7 +70,9 @@ spring:
profiles: profiles:
include: common-service #这里加载management相关公共配置 include: common-service #这里加载management相关公共配置
autoconfigure: autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
database: 0 database: 0
port: ${liquidnet.redis.dragon.port} port: ${liquidnet.redis.dragon.port}
......
...@@ -70,7 +70,9 @@ spring: ...@@ -70,7 +70,9 @@ spring:
profiles: profiles:
include: common-service #这里加载management相关公共配置 include: common-service #这里加载management相关公共配置
autoconfigure: autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
database: 15 database: 15
port: ${liquidnet.redis.port} port: ${liquidnet.redis.port}
......
...@@ -70,7 +70,9 @@ spring: ...@@ -70,7 +70,9 @@ spring:
profiles: profiles:
include: common-service #这里加载management相关公共配置 include: common-service #这里加载management相关公共配置
autoconfigure: autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
rabbitmq: rabbitmq:
addresses: ${liquidnet.rabbitmq.host} addresses: ${liquidnet.rabbitmq.host}
port: ${liquidnet.rabbitmq.port} port: ${liquidnet.rabbitmq.port}
......
...@@ -70,7 +70,9 @@ spring: ...@@ -70,7 +70,9 @@ spring:
profiles: profiles:
include: common-service #这里加载management相关公共配置 include: common-service #这里加载management相关公共配置
autoconfigure: autoconfigure:
exclude: org.springframework.cloud.bus.BusAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
database: 15 database: 15
port: ${liquidnet.redis.port} port: ${liquidnet.redis.port}
......
...@@ -33,10 +33,10 @@ ...@@ -33,10 +33,10 @@
<artifactId>liquidnet-common-cache-redisson</artifactId> <artifactId>liquidnet-common-cache-redisson</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.springframework.boot</groupId> <!-- <groupId>org.springframework.boot</groupId>-->
<artifactId>spring-boot-starter-data-mongodb</artifactId> <!-- <artifactId>spring-boot-starter-data-mongodb</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>com.liquidnet</groupId> <groupId>com.liquidnet</groupId>
......
...@@ -124,7 +124,7 @@ public class AdamAddressesController { ...@@ -124,7 +124,7 @@ public class AdamAddressesController {
@ApiOperation(value = "获取默认收货地址") @ApiOperation(value = "获取默认收货地址")
@PostMapping("query/def") @PostMapping("query/def")
public ResponseDto<AdamAddressesVo> queryDef() { public ResponseDto<AdamAddressesVo> queryDef() {
AdamAddressesVo vo = adamAddressesService.queryDefault(CurrentUtil.getCurrentUid()); AdamAddressesVo vo = adamAddressesService.queryDefault(null, CurrentUtil.getCurrentUid(), true);
if (null != vo) { if (null != vo) {
vo.setPhone(SensitizeUtil.custom(vo.getPhone(), 3, 4)); vo.setPhone(SensitizeUtil.custom(vo.getPhone(), 3, 4));
} }
......
...@@ -180,7 +180,7 @@ public class AdamEntersController { ...@@ -180,7 +180,7 @@ public class AdamEntersController {
@ApiOperation(value = "获取默认入场人") @ApiOperation(value = "获取默认入场人")
@PostMapping("query/def") @PostMapping("query/def")
public ResponseDto<AdamEntersVo> queryDef() { public ResponseDto<AdamEntersVo> queryDef() {
AdamEntersVo vo = adamEntersService.queryDefault(CurrentUtil.getCurrentUid()); AdamEntersVo vo = adamEntersService.queryDefault(null, CurrentUtil.getCurrentUid(), true);
if (null != vo) { if (null != vo) {
vo.setName(SensitizeUtil.chineseName(vo.getName())); vo.setName(SensitizeUtil.chineseName(vo.getName()));
vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2)); vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2));
......
...@@ -248,7 +248,7 @@ public class AdamMemberOrderController { ...@@ -248,7 +248,7 @@ public class AdamMemberOrderController {
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@ApiOperation(value = "会员订单详情") @ApiOperation(value = "会员订单详情")
@GetMapping("info/{orderNo}") @GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@NotBlank(message = "订单号不能为空") @PathVariable String orderNo) { public ResponseDto<AdamMemberOrderVo> getMemberOrder(@NotBlank(message = "订单号不能为空") @PathVariable String orderNo) {
AdamMemberOrderVo mOrderVo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo); AdamMemberOrderVo mOrderVo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo);
if (null != mOrderVo) { if (null != mOrderVo) {
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(mOrderVo.getMemberId()); AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(mOrderVo.getMemberId());
......
...@@ -9,10 +9,6 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst; ...@@ -9,10 +9,6 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
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.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -27,8 +23,8 @@ import java.util.stream.Collectors; ...@@ -27,8 +23,8 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class AdamRdmService { public class AdamRdmService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
...@@ -71,17 +67,17 @@ public class AdamRdmService { ...@@ -71,17 +67,17 @@ public class AdamRdmService {
String key = AdamRedisConst.IDENTITY_MOBILE.concat(mobile); String key = AdamRedisConst.IDENTITY_MOBILE.concat(mobile);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
String val = (String) redisUtil.get(key); String val = (String) redisUtil.get(key);
if (StringUtils.isEmpty(val)) { // if (StringUtils.isEmpty(val)) {
Query query = Query.query(Criteria.where("mobile").is(mobile).and("state").is(1)); // Query query = Query.query(Criteria.where("mobile").is(mobile).and("state").is(1));
query.fields().include("uid"); // query.fields().include("uid");
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
AdamUserInfoVo vo = mongoTemplate.findOne(query, AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName()); // AdamUserInfoVo vo = mongoTemplate.findOne(query, AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != vo) { // if (null != vo) {
val = vo.getUid(); // val = vo.getUid();
redisUtil.set(key, vo.getUid()); // redisUtil.set(key, vo.getUid());
} // }
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return val; return val;
} }
...@@ -98,17 +94,17 @@ public class AdamRdmService { ...@@ -98,17 +94,17 @@ public class AdamRdmService {
String key = AdamRedisConst.IDENTITY_THIRD_PARTY + platform + ":" + openId; String key = AdamRedisConst.IDENTITY_THIRD_PARTY + platform + ":" + openId;
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
String val = (String) redisUtil.get(key); String val = (String) redisUtil.get(key);
if (StringUtils.isEmpty(val)) { // if (StringUtils.isEmpty(val)) {
Query query = Query.query(Criteria.where("openId").is(openId).and("platform").is(platform).and("state").is(1)); // Query query = Query.query(Criteria.where("openId").is(openId).and("platform").is(platform).and("state").is(1));
query.fields().include("uid"); // query.fields().include("uid");
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
AdamThirdPartInfoVo vo = mongoTemplate.findOne(query, AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName()); // AdamThirdPartInfoVo vo = mongoTemplate.findOne(query, AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != vo) { // if (null != vo) {
val = vo.getUid(); // val = vo.getUid();
redisUtil.set(key, vo.getUid()); // redisUtil.set(key, vo.getUid());
} // }
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return val; return val;
} }
...@@ -127,14 +123,14 @@ public class AdamRdmService { ...@@ -127,14 +123,14 @@ public class AdamRdmService {
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) { // 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)),
AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName()); // AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (null != vo) redisUtil.set(rk, vo); // if (null != vo) redisUtil.set(rk, vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
...@@ -153,14 +149,14 @@ public class AdamRdmService { ...@@ -153,14 +149,14 @@ public class AdamRdmService {
String rk = AdamRedisConst.INFO_REAL_NAME.concat(uid); String rk = AdamRedisConst.INFO_REAL_NAME.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamRealInfoVo vo = (AdamRealInfoVo) redisUtil.get(rk); AdamRealInfoVo vo = (AdamRealInfoVo) redisUtil.get(rk);
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)),
AdamRealInfoVo.class, AdamRealInfoVo.class.getSimpleName()); // AdamRealInfoVo.class, AdamRealInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (null != vo) redisUtil.set(rk, vo); // if (null != vo) redisUtil.set(rk, vo);
} // }
if (null != vo) { if (null != vo) {
vo.setName(SensitizeUtil.chineseName(vo.getName())); vo.setName(SensitizeUtil.chineseName(vo.getName()));
vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2)); vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2));
...@@ -190,14 +186,14 @@ public class AdamRdmService { ...@@ -190,14 +186,14 @@ public class AdamRdmService {
String rk = AdamRedisConst.INFO_THIRD_PARTY.concat(uid); String rk = AdamRedisConst.INFO_THIRD_PARTY.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
List<AdamThirdPartInfoVo> thirdPartInfoVos = (List<AdamThirdPartInfoVo>) redisUtil.get(rk); List<AdamThirdPartInfoVo> thirdPartInfoVos = (List<AdamThirdPartInfoVo>) redisUtil.get(rk);
if (CollectionUtils.isEmpty(thirdPartInfoVos)) { // if (CollectionUtils.isEmpty(thirdPartInfoVos)) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
thirdPartInfoVos = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)), // thirdPartInfoVos = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName()); // AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (!CollectionUtils.isEmpty(thirdPartInfoVos)) redisUtil.set(rk, thirdPartInfoVos); // if (!CollectionUtils.isEmpty(thirdPartInfoVos)) redisUtil.set(rk, thirdPartInfoVos);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return thirdPartInfoVos; return thirdPartInfoVos;
} }
...@@ -229,20 +225,24 @@ public class AdamRdmService { ...@@ -229,20 +225,24 @@ public class AdamRdmService {
String rk = AdamRedisConst.INFO_ENTERS.concat(uid); String rk = AdamRedisConst.INFO_ENTERS.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
List<AdamEntersVo> vos = (List<AdamEntersVo>) redisUtil.get(rk); List<AdamEntersVo> vos = (List<AdamEntersVo>) redisUtil.get(rk);
if (CollectionUtils.isEmpty(vos)) { // if (CollectionUtils.isEmpty(vos)) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vos = mongoTemplate.find( // vos = mongoTemplate.find(
Query.query(Criteria.where("uid").is(uid).and("state").is(1)).with(Sort.by(Sort.Direction.DESC, "createdAt")), // Query.query(Criteria.where("uid").is(uid).and("state").is(1)).with(Sort.by(Sort.Direction.DESC, "createdAt")),
AdamEntersVo.class, AdamEntersVo.class.getSimpleName() // AdamEntersVo.class, AdamEntersVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (!CollectionUtils.isEmpty(vos)) redisUtil.set(rk, vos); // if (!CollectionUtils.isEmpty(vos)) redisUtil.set(rk, vos);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vos; return vos;
} }
public AdamEntersVo getEntersVoByUidEntersId(List<AdamEntersVo> vos, String entersId) {
return vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
public AdamEntersVo getEntersVoByUidEntersId(String uid, String entersId) { public AdamEntersVo getEntersVoByUidEntersId(String uid, String entersId) {
return this.getEntersVoByUid(uid).stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null); return this.getEntersVoByUid(uid).stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
} }
...@@ -266,20 +266,24 @@ public class AdamRdmService { ...@@ -266,20 +266,24 @@ public class AdamRdmService {
String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid); String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
List<AdamAddressesVo> vos = (List<AdamAddressesVo>) redisUtil.get(rk); List<AdamAddressesVo> vos = (List<AdamAddressesVo>) redisUtil.get(rk);
if (CollectionUtils.isEmpty(vos)) { // if (CollectionUtils.isEmpty(vos)) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vos = mongoTemplate.find( // vos = mongoTemplate.find(
Query.query(Criteria.where("uid").is(uid).and("state").is(1)).with(Sort.by(Sort.Direction.DESC, "createdAt")), // Query.query(Criteria.where("uid").is(uid).and("state").is(1)).with(Sort.by(Sort.Direction.DESC, "createdAt")),
AdamAddressesVo.class, AdamAddressesVo.class.getSimpleName() // AdamAddressesVo.class, AdamAddressesVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (!CollectionUtils.isEmpty(vos)) redisUtil.set(rk, vos); // if (!CollectionUtils.isEmpty(vos)) redisUtil.set(rk, vos);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vos; return vos;
} }
public AdamAddressesVo getAddressesVoByUidAddressesId(List<AdamAddressesVo> vos, String addressesId) {
return vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public AdamAddressesVo getAddressesVoByUidAddressesId(String uid, String addressesId) { public AdamAddressesVo getAddressesVoByUidAddressesId(String uid, String addressesId) {
return this.getAddressesVoByUid(uid).stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null); return this.getAddressesVoByUid(uid).stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
} }
...@@ -308,13 +312,13 @@ public class AdamRdmService { ...@@ -308,13 +312,13 @@ public class AdamRdmService {
String rk = AdamRedisConst.INFO_USER_MEMBER.concat(uid); String rk = AdamRedisConst.INFO_USER_MEMBER.concat(uid);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamUserMemberVo vo = (AdamUserMemberVo) redisUtil.get(rk); AdamUserMemberVo vo = (AdamUserMemberVo) redisUtil.get(rk);
if (null == vo) { // if (null == vo) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName()); // vo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (null != vo) redisUtil.set(rk, vo); // if (null != vo) redisUtil.set(rk, vo);
} // }
if (null != vo) { if (null != vo) {
vo.setState(vo.getState() == 1 ? (vo.getExpiryAt().isAfter(LocalDateTime.now()) ? 1 : 2) : vo.getState()); vo.setState(vo.getState() == 1 ? (vo.getExpiryAt().isAfter(LocalDateTime.now()) ? 1 : 2) : vo.getState());
} }
...@@ -329,19 +333,21 @@ public class AdamRdmService { ...@@ -329,19 +333,21 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_SIMPLE_INFO> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_SIMPLE_INFO> */
public AdamMemberSimpleVo getMemberSimpleVo() { public AdamMemberSimpleVo getMemberSimpleVo() {
long s = System.currentTimeMillis();
AdamMemberSimpleVo vo = (AdamMemberSimpleVo) redisUtil.get(AdamRedisConst.INFO_MEMBER_SIMPLE); AdamMemberSimpleVo vo = (AdamMemberSimpleVo) redisUtil.get(AdamRedisConst.INFO_MEMBER_SIMPLE);
if (null == vo) { // if (null == vo) {
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
List<AdamMemberSimpleVo> vos = mongoTemplate.find( // List<AdamMemberSimpleVo> vos = mongoTemplate.find(
Query.query(Criteria.where("state").is(1)).with(Sort.by(Sort.Direction.ASC, "memberId")), // Query.query(Criteria.where("state").is(1)).with(Sort.by(Sort.Direction.ASC, "memberId")),
AdamMemberSimpleVo.class, AdamMemberVo.class.getSimpleName() // AdamMemberSimpleVo.class, AdamMemberVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
vo = CollectionUtils.isEmpty(vos) ? null : vos.get(0); // vo = CollectionUtils.isEmpty(vos) ? null : vos.get(0);
//
if (null != vo) redisUtil.set(AdamRedisConst.INFO_MEMBER_SIMPLE, vo); // if (null != vo) redisUtil.set(AdamRedisConst.INFO_MEMBER_SIMPLE, vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
...@@ -355,15 +361,15 @@ public class AdamRdmService { ...@@ -355,15 +361,15 @@ public class AdamRdmService {
String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId); String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamMemberVo vo = (AdamMemberVo) redisUtil.get(key); AdamMemberVo vo = (AdamMemberVo) redisUtil.get(key);
if (null == vo) { // if (null == vo) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vo = mongoTemplate.findOne( // vo = mongoTemplate.findOne(
Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)), // Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)),
AdamMemberVo.class, AdamMemberVo.class.getSimpleName() // AdamMemberVo.class, AdamMemberVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != vo) redisUtil.set(key, vo); // if (null != vo) redisUtil.set(key, vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
...@@ -382,22 +388,21 @@ public class AdamRdmService { ...@@ -382,22 +388,21 @@ public class AdamRdmService {
String key = AdamRedisConst.INFO_MEMBER_PRICE.concat(memberId); String key = AdamRedisConst.INFO_MEMBER_PRICE.concat(memberId);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
List<AdamMemberPriceVo> vos = (List<AdamMemberPriceVo>) redisUtil.get(key); List<AdamMemberPriceVo> vos = (List<AdamMemberPriceVo>) redisUtil.get(key);
if (CollectionUtils.isEmpty(vos)) { // if (CollectionUtils.isEmpty(vos)) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vos = mongoTemplate.find( // vos = mongoTemplate.find(
Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)), // Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)),
AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName() // AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (!CollectionUtils.isEmpty(vos)) redisUtil.set(key, vos); // if (!CollectionUtils.isEmpty(vos)) redisUtil.set(key, vos);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vos; return vos;
} }
public AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId) { public AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId) {
long s = System.currentTimeMillis();
List<AdamMemberPriceVo> vos = this.getMemberPriceVoByMemberId(memberId); List<AdamMemberPriceVo> vos = this.getMemberPriceVoByMemberId(memberId);
if (!CollectionUtils.isEmpty(vos)) { if (!CollectionUtils.isEmpty(vos)) {
// for (AdamMemberPriceVo r : vos) { // for (AdamMemberPriceVo r : vos) {
...@@ -459,16 +464,16 @@ public class AdamRdmService { ...@@ -459,16 +464,16 @@ public class AdamRdmService {
String key = AdamRedisConst.SHOT_MEMBER_ORDER + orderNo; String key = AdamRedisConst.SHOT_MEMBER_ORDER + orderNo;
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamMemberOrderVo vo = (AdamMemberOrderVo) redisUtil.get(key); AdamMemberOrderVo vo = (AdamMemberOrderVo) redisUtil.get(key);
if (null == vo) { // if (null == vo) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vo = mongoTemplate.findOne( // vo = mongoTemplate.findOne(
Query.query(Criteria.where("orderNo").is(orderNo)), // Query.query(Criteria.where("orderNo").is(orderNo)),
AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName() // AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
if (null != vo) redisUtil.set(key, vo); // if (null != vo) redisUtil.set(key, vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
...@@ -502,15 +507,15 @@ public class AdamRdmService { ...@@ -502,15 +507,15 @@ public class AdamRdmService {
String key = AdamRedisConst.INFO_MEMBER_CODE.concat(memberCode); String key = AdamRedisConst.INFO_MEMBER_CODE.concat(memberCode);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
AdamMemberCodeVo vo = (AdamMemberCodeVo) redisUtil.get(key); AdamMemberCodeVo vo = (AdamMemberCodeVo) redisUtil.get(key);
if (null == vo) { // if (null == vo) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vo = mongoTemplate.findOne( // vo = mongoTemplate.findOne(
Query.query(Criteria.where("code").is(memberCode)), // Query.query(Criteria.where("code").is(memberCode)),
AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName() // AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != vo && vo.getState() == 0) redisUtil.set(AdamRedisConst.INFO_MEMBER_CODE.concat(memberCode), vo); // if (null != vo && vo.getState() == 0) redisUtil.set(AdamRedisConst.INFO_MEMBER_CODE.concat(memberCode), vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
...@@ -525,14 +530,16 @@ public class AdamRdmService { ...@@ -525,14 +530,16 @@ public class AdamRdmService {
* Temporarily connect Mongo * Temporarily connect Mongo
*/ */
public AdamMemberCodeVo getMemberCodeVoByBuyOrderNo(String buyOrderNo) { public AdamMemberCodeVo getMemberCodeVoByBuyOrderNo(String buyOrderNo) {
Query query = Query.query(Criteria.where("buyOrderNo").is(buyOrderNo)); // Query query = Query.query(Criteria.where("buyOrderNo").is(buyOrderNo));
query.fields().include("code").include("memberNo").include("state").include("type"); // query.fields().include("code").include("memberNo").include("state").include("type");
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
AdamMemberCodeVo vo = mongoTemplate.findOne( // AdamMemberCodeVo vo = mongoTemplate.findOne(
query, AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName() // query, AdamMemberCodeVo.class, AdamMemberCodeVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
return vo; // return vo;
// TODO: 2021/7/29 降级查取,此处只用于用户购买会员码时使用
return AdamMemberCodeVo.getNew();
} }
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | TAGS:List<AdamTagVo> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | TAGS:List<AdamTagVo> */
......
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.AdamAddressesParam; import com.liquidnet.service.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
...@@ -10,16 +12,9 @@ import com.liquidnet.service.adam.util.QueueUtils; ...@@ -10,16 +12,9 @@ import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.DeleteResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -39,8 +34,8 @@ import java.util.stream.IntStream; ...@@ -39,8 +34,8 @@ import java.util.stream.IntStream;
@Slf4j @Slf4j
@Service @Service
public class AdamAddressesServiceImpl implements IAdamAddressesService { public class AdamAddressesServiceImpl implements IAdamAddressesService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -62,11 +57,11 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -62,11 +57,11 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
vo.setState(1); vo.setState(1);
vo.setCreatedAt(now); vo.setCreatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(vo, AdamAddressesVo.class.getSimpleName()); // mongoTemplate.insert(vo, AdamAddressesVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.delAddressesVoByUid(currentUid); adamRdmService.delAddressesVoByUid(currentUid);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -91,39 +86,45 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -91,39 +86,45 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
// AdamAddressesVo unDeaultVo = AdamAddressesVo.getNew(); // AdamAddressesVo unDeaultVo = AdamAddressesVo.getNew();
// unDeaultVo.setIsDefault(false); // unDeaultVo.setIsDefault(false);
// unDeaultVo.setUpdatedAt(now); // unDeaultVo.setUpdatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid).and("state").is(1).and("isDefault").is(true)).getQueryObject(), // Query.query(Criteria.where("uid").is(uid).and("state").is(1).and("isDefault").is(true)).getQueryObject(),
new Document("$set", new Document("isDefault", false).append("updatedAt", now)), // new Document("$set", new Document("isDefault", false).append("updatedAt", now)),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != doc) { // if (null != doc) {
AdamAddressesVo unDefaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class); // AdamAddressesVo unDefaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class);
AdamAddressesVo defaultVo = queryDefault(vos, uid, false);
defaultVo.setIsDefault(false);
defaultVo.setUpdatedAt(now);
toMqObjs.add(new Object[]{false, now, unDefaultVoAfter.getAddressesId()}); toMqObjs.add(new Object[]{false, now, defaultVo.getAddressesId()});
vos = this.collectionProcess(vos, unDefaultVoAfter.getAddressesId(), unDefaultVoAfter); this.collectionProcess(vos, defaultVo.getAddressesId(), defaultVo);
} // }
} }
{// 设置新默认 {// 设置新默认
// AdamAddressesVo defaultVo = AdamAddressesVo.getNew(); // AdamAddressesVo defaultVo = AdamAddressesVo.getNew();
// defaultVo.setIsDefault(true); // defaultVo.setIsDefault(true);
// defaultVo.setUpdatedAt(now); // defaultVo.setUpdatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid).and("addressesId").is(addressesId)).getQueryObject(), // Query.query(Criteria.where("uid").is(uid).and("addressesId").is(addressesId)).getQueryObject(),
new Document("$set", new Document("isDefault", true).append("updatedAt", now)), // new Document("$set", new Document("isDefault", true).append("updatedAt", now)),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != doc) { // if (null != doc) {
AdamAddressesVo defaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class); // AdamAddressesVo defaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class);
AdamAddressesVo defaultVoAfter = adamRdmService.getAddressesVoByUidAddressesId(vos, addressesId);
defaultVoAfter.setIsDefault(true);
defaultVoAfter.setUpdatedAt(now);
toMqObjs.add(new Object[]{true, now, addressesId}); toMqObjs.add(new Object[]{true, now, addressesId});
vos = this.collectionProcess(vos, defaultVoAfter.getAddressesId(), defaultVoAfter); this.collectionProcess(vos, defaultVoAfter.getAddressesId(), defaultVoAfter);
} // }
} }
if (!CollectionUtils.isEmpty(toMqObjs)) { if (!CollectionUtils.isEmpty(toMqObjs)) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
...@@ -144,20 +145,29 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -144,20 +145,29 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
AdamAddressesVo updateVo = AdamAddressesVo.getNew(); List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(currentUid);
BeanUtils.copyProperties(parameter, updateVo); AdamAddressesVo updateVo = adamRdmService.getAddressesVoByUidAddressesId(vos, parameter.getAddressesId());
long s = System.currentTimeMillis(); updateVo.setName(parameter.getName());
Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate( updateVo.setPhone(parameter.getPhone());
Query.query(Criteria.where("uid").is(currentUid).and("addressesId").is(parameter.getAddressesId())).getQueryObject(), updateVo.setProvince(parameter.getProvince());
new Document("$set", Document.parse(JsonUtils.toJson(updateVo)).append("updatedAt", now)), updateVo.setCity(parameter.getCity());
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) updateVo.setCounty(parameter.getCounty());
); updateVo.setAddress(parameter.getAddress());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); updateVo.setUpdatedAt(now);
if (null != doc) { // AdamAddressesVo updateVo = AdamAddressesVo.getNew();
updateVo = BsonUtil.toBean(doc, AdamAddressesVo.class); // BeanUtils.copyProperties(parameter, updateVo);
// long s = System.currentTimeMillis();
List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(currentUid); // Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
s = System.currentTimeMillis(); // Query.query(Criteria.where("uid").is(currentUid).and("addressesId").is(parameter.getAddressesId())).getQueryObject(),
// new Document("$set", Document.parse(JsonUtils.toJson(updateVo)).append("updatedAt", now)),
// new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
// );
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// if (null != doc) {
// updateVo = BsonUtil.toBean(doc, AdamAddressesVo.class);
//
// List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(currentUid);
long s = System.currentTimeMillis();
adamRdmService.setAddressesVoByUid(updateVo.getUid(), this.collectionProcess(vos, parameter.getAddressesId(), updateVo)); adamRdmService.setAddressesVoByUid(updateVo.getUid(), this.collectionProcess(vos, parameter.getAddressesId(), updateVo));
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -169,13 +179,13 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -169,13 +179,13 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
) )
); );
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} // }
} }
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void remove(String uid, String addressesId) { public void remove(String uid, String addressesId) {
String currentUid = CurrentUtil.getCurrentUid(); // String currentUid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// AdamAddressesVo removeVo = AdamAddressesVo.getNew(); // AdamAddressesVo removeVo = AdamAddressesVo.getNew();
...@@ -184,14 +194,14 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -184,14 +194,14 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
// removeVo.setUpdatedAt(now); // removeVo.setUpdatedAt(now);
// removeVo.setDeletedAt(now); // removeVo.setDeletedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
DeleteResult deleteResult = mongoTemplate.remove( // DeleteResult deleteResult = mongoTemplate.remove(
Query.query(Criteria.where("uid").is(currentUid).and("addressesId").is(addressesId)), AdamAddressesVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(currentUid).and("addressesId").is(addressesId)), AdamAddressesVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(uid); List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(uid);
vos.removeIf(r -> r.getAddressesId().equals(addressesId)); vos.removeIf(r -> r.getAddressesId().equals(addressesId));
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setAddressesVoByUid(uid, vos); adamRdmService.setAddressesVoByUid(uid, vos);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -204,16 +214,20 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -204,16 +214,20 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
} }
@Override @Override
public AdamAddressesVo queryDefault(String uid) { public AdamAddressesVo queryDefault(List<AdamAddressesVo> vos, String uid, boolean downgrade) {
List<AdamAddressesVo> vos = adamRdmService.getAddressesVoByUid(uid); if (CollectionUtils.isEmpty(vos)) {
vos = adamRdmService.getAddressesVoByUid(uid);
}
if (!CollectionUtils.isEmpty(vos)) { if (!CollectionUtils.isEmpty(vos)) {
AdamAddressesVo defaultVo = null; AdamAddressesVo defaultVo = null;
for (AdamAddressesVo vo : vos) { for (AdamAddressesVo vo : vos) {
if (vo.getIsDefault()) { if (vo.getIsDefault()) {
return vo; return vo;
} }
defaultVo = null == defaultVo ? vo : if (downgrade) {
vo.getCreatedAt().compareTo(defaultVo.getCreatedAt()) > 0 ? vo : defaultVo; defaultVo = null == defaultVo ? vo :
vo.getCreatedAt().compareTo(defaultVo.getCreatedAt()) > 0 ? vo : defaultVo;
}
} }
return defaultVo; return defaultVo;
} }
...@@ -228,18 +242,18 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService { ...@@ -228,18 +242,18 @@ public class AdamAddressesServiceImpl implements IAdamAddressesService {
.filter(i -> vos.get(i).getAddressesId().equals(replaceId)) .filter(i -> vos.get(i).getAddressesId().equals(replaceId))
.findFirst().orElse(-1); .findFirst().orElse(-1);
if (idx == -1) { if (idx == -1) {
adamRdmService.delAddressesVoByUid(updateVo.getUid()); // adamRdmService.delAddressesVoByUid(updateVo.getUid());
//
List<AdamAddressesVo> addressesVos = adamRdmService.getAddressesVoByUid(updateVo.getUid()); // List<AdamAddressesVo> addressesVos = adamRdmService.getAddressesVoByUid(updateVo.getUid());
//
idx = IntStream.range(0, vos.size()) // idx = IntStream.range(0, vos.size())
.filter(i -> addressesVos.get(i).getAddressesId().equals(replaceId)) // .filter(i -> addressesVos.get(i).getAddressesId().equals(replaceId))
.findFirst().orElse(-1); // .findFirst().orElse(-1);
//
if (idx == -1) { // if (idx == -1) {
ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10018"); ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10018");
throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage()); throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage());
} // }
} }
vos.set(idx, updateVo); vos.set(idx, updateVo);
log.debug("#collect.process耗时:{}ms", System.currentTimeMillis() - s); log.debug("#collect.process耗时:{}ms", System.currentTimeMillis() - s);
......
...@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service.impl; ...@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.adam.dto.vo.AdamCollectBaseVo; import com.liquidnet.service.adam.dto.vo.AdamCollectBaseVo;
import com.liquidnet.service.adam.dto.vo.AdamCollectInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamCollectVo; import com.liquidnet.service.adam.dto.vo.AdamCollectVo;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamCollectionService; import com.liquidnet.service.adam.service.IAdamCollectionService;
...@@ -11,22 +10,12 @@ import com.liquidnet.service.adam.util.QueueUtils; ...@@ -11,22 +10,12 @@ import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.mongodb.client.result.DeleteResult;
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.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
/** /**
* <p> * <p>
...@@ -39,8 +28,8 @@ import java.util.List; ...@@ -39,8 +28,8 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class AdamCollectionServiceImpl implements IAdamCollectionService { public class AdamCollectionServiceImpl implements IAdamCollectionService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -53,7 +42,7 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService { ...@@ -53,7 +42,7 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService {
vo.setState(1); vo.setState(1);
vo.setCreatedAt(now); vo.setCreatedAt(now);
mongoTemplate.insert(vo, AdamCollectBaseVo.class.getSimpleName()); // mongoTemplate.insert(vo, AdamCollectBaseVo.class.getSimpleName());
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(), MQConst.AdamQueue.SQL_UCENTER.getKey(),
...@@ -65,21 +54,22 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService { ...@@ -65,21 +54,22 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService {
@Override @Override
public boolean exists(String uid, String type, String contentId) { public boolean exists(String uid, String type, String contentId) {
return mongoTemplate.exists( return false;
Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)), // return mongoTemplate.exists(
AdamCollectBaseVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)),
); // AdamCollectBaseVo.class.getSimpleName()
// );
} }
@Override @Override
public void del(String uid, String type, String... contentIds) { public void del(String uid, String type, String... contentIds) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
DeleteResult deleteResult = mongoTemplate.remove( // DeleteResult deleteResult = mongoTemplate.remove(
Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("contentId").in(contentIds)), // Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("contentId").in(contentIds)),
AdamCollectBaseVo.class.getSimpleName() // AdamCollectBaseVo.class.getSimpleName()
); // );
if (deleteResult.getDeletedCount() > 0) { // if (deleteResult.getDeletedCount() > 0) {
LinkedList<Object[]> toMqObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> toMqObjs = CollectionUtil.linkedListObjectArr();
for (String c : contentIds) { for (String c : contentIds) {
toMqObjs.add(new Object[]{now, uid, c}); toMqObjs.add(new Object[]{now, uid, c});
...@@ -88,86 +78,88 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService { ...@@ -88,86 +78,88 @@ public class AdamCollectionServiceImpl implements IAdamCollectionService {
MQConst.AdamQueue.SQL_UCENTER.getKey(), MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_collection.del", toMqObjs) SqlMapping.get("adam_collection.del", toMqObjs)
); );
} // }
} }
@Override @Override
public boolean queryState(String uid, String type, String contentId) { public boolean queryState(String uid, String type, String contentId) {
return mongoTemplate.exists( return false;
Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)), // return mongoTemplate.exists(
AdamCollectBaseVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)),
); // AdamCollectBaseVo.class.getSimpleName()
// );
} }
@Override @Override
public PagedResult<AdamCollectVo> queryPage(String uid, String type, int pageNo, int pageSize) { public PagedResult<AdamCollectVo> queryPage(String uid, String type, int pageNo, int pageSize) {
Query query = Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("state").is(1)); // Query query = Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("state").is(1));
//
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
long count = mongoTemplate.count(query, AdamCollectBaseVo.class.getSimpleName()); // long count = mongoTemplate.count(query, AdamCollectBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
PagedResult<AdamCollectVo> pagedResult = ObjectUtil.getAdamCollectVoPagedResult();
if (count > 0) {
Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt"));
query.with(pageable);
s = System.currentTimeMillis();
List<AdamCollectVo> collectVoList = mongoTemplate.find(query, AdamCollectVo.class, AdamCollectBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (!CollectionUtils.isEmpty(collectVoList)) {
// try {
// String[] contentIds = collectVoList.stream().map(AdamCollectVo::getContentId).toArray(a -> new String[collectVoList.size()]);
// //
// ResponseDto<List<KylinPerformanceVo>> performanceVoListDto = feignKylinPerformanceClient.performanceList(contentIds); // PagedResult<AdamCollectVo> pagedResult = ObjectUtil.getAdamCollectVoPagedResult();
// if (count > 0) {
// Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt"));
// //
// if (performanceVoListDto.isSuccess()) { // query.with(pageable);
// List<KylinPerformanceVo> kylinPerformanceVoList = performanceVoListDto.getData();
// //
// collectVoList.forEach(v -> { // s = System.currentTimeMillis();
// kylinPerformanceVoList.forEach(vl -> { // List<AdamCollectVo> collectVoList = mongoTemplate.find(query, AdamCollectVo.class, AdamCollectBaseVo.class.getSimpleName());
// if (vl.getPerformancesId().equals(v.getContentId())) { // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// AdamCollectInfoVo collectInfoVo = AdamCollectInfoVo.getNew(); //
// BeanUtils.copyProperties(vl, collectInfoVo); // if (!CollectionUtils.isEmpty(collectVoList)) {
// v.setContentInfo(collectInfoVo); //// try {
// } //// String[] contentIds = collectVoList.stream().map(AdamCollectVo::getContentId).toArray(a -> new String[collectVoList.size()]);
// }); ////
// }); //// ResponseDto<List<KylinPerformanceVo>> performanceVoListDto = feignKylinPerformanceClient.performanceList(contentIds);
// } else { ////
// log.info("Failed:{}.API.performanceList(...) for AdamCollection:{}", feignKylinPerformanceClient.getClass().getSimpleName(), performanceVoListDto.toJson()); //// if (performanceVoListDto.isSuccess()) {
//// List<KylinPerformanceVo> kylinPerformanceVoList = performanceVoListDto.getData();
////
//// collectVoList.forEach(v -> {
//// kylinPerformanceVoList.forEach(vl -> {
//// if (vl.getPerformancesId().equals(v.getContentId())) {
//// AdamCollectInfoVo collectInfoVo = AdamCollectInfoVo.getNew();
//// BeanUtils.copyProperties(vl, collectInfoVo);
//// v.setContentInfo(collectInfoVo);
//// }
//// });
//// });
//// } else {
//// log.info("Failed:{}.API.performanceList(...) for AdamCollection:{}", feignKylinPerformanceClient.getClass().getSimpleName(), performanceVoListDto.toJson());
//// }
//// } catch (Exception e) {
//// log.error("Exception:{}.API.performanceList(...) for AdamCollection", feignKylinPerformanceClient.getClass().getSimpleName(), e);
//// }
// s = System.currentTimeMillis();
// collectVoList.forEach(r -> {
// AdamCollectInfoVo vo = AdamCollectInfoVo.getNew();
// KylinPerformanceVo performanceVo = adamRdmService.kylinPerformanceVo(r.getContentId());
// if (null != performanceVo) {
//// BeanUtils.copyProperties(performanceVo, vo);
// vo.setPerformancesId(performanceVo.getPerformancesId());
// vo.setTitle(performanceVo.getTitle());
// vo.setImgPoster(performanceVo.getImgPoster());
// vo.setType(performanceVo.getType());
// vo.setTimeStart(performanceVo.getTimeStart());
// vo.setPrice(performanceVo.getPrice());
// vo.setCityName(performanceVo.getCityName());
// vo.setFieldName(performanceVo.getFieldName());
// vo.setIsMember(performanceVo.getIsMember());
// vo.setIsExclusive(performanceVo.getIsExclusive());
// vo.setIsDiscount(performanceVo.getIsDiscount());
// vo.setIsAdvance(performanceVo.getIsAdvance());
// } // }
// } catch (Exception e) { // r.setContentInfo(vo);
// log.error("Exception:{}.API.performanceList(...) for AdamCollection", feignKylinPerformanceClient.getClass().getSimpleName(), e); // });
// } // log.debug("#COL.RDS.K耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis(); // }
collectVoList.forEach(r -> { //
AdamCollectInfoVo vo = AdamCollectInfoVo.getNew(); // pagedResult.setList(collectVoList).setTotal(count, pageSize);
KylinPerformanceVo performanceVo = adamRdmService.kylinPerformanceVo(r.getContentId()); // }
if (null != performanceVo) { //
// BeanUtils.copyProperties(performanceVo, vo); // return pagedResult;
vo.setPerformancesId(performanceVo.getPerformancesId()); return ObjectUtil.getAdamCollectVoPagedResult();
vo.setTitle(performanceVo.getTitle());
vo.setImgPoster(performanceVo.getImgPoster());
vo.setType(performanceVo.getType());
vo.setTimeStart(performanceVo.getTimeStart());
vo.setPrice(performanceVo.getPrice());
vo.setCityName(performanceVo.getCityName());
vo.setFieldName(performanceVo.getFieldName());
vo.setIsMember(performanceVo.getIsMember());
vo.setIsExclusive(performanceVo.getIsExclusive());
vo.setIsDiscount(performanceVo.getIsDiscount());
vo.setIsAdvance(performanceVo.getIsAdvance());
}
r.setContentInfo(vo);
});
log.debug("#COL.RDS.K耗时:{}ms", System.currentTimeMillis() - s);
}
pagedResult.setList(collectVoList).setTotal(count, pageSize);
}
return pagedResult;
} }
} }
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.adam.dto.vo.AdamCollectInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamDisposedBaseVo; import com.liquidnet.service.adam.dto.vo.AdamDisposedBaseVo;
import com.liquidnet.service.adam.dto.vo.AdamDisposedUserVo; import com.liquidnet.service.adam.dto.vo.AdamDisposedUserVo;
import com.liquidnet.service.adam.dto.vo.AdamDisposedVo; import com.liquidnet.service.adam.dto.vo.AdamDisposedVo;
...@@ -12,21 +11,12 @@ import com.liquidnet.service.adam.util.QueueUtils; ...@@ -12,21 +11,12 @@ import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.mongodb.client.result.DeleteResult;
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.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
/** /**
* <p> * <p>
...@@ -39,8 +29,8 @@ import java.util.List; ...@@ -39,8 +29,8 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class AdamDisposedServiceImpl implements IAdamDisposedService { public class AdamDisposedServiceImpl implements IAdamDisposedService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -58,7 +48,7 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService { ...@@ -58,7 +48,7 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService {
vo.setState(1); vo.setState(1);
vo.setCreatedAt(now); vo.setCreatedAt(now);
mongoTemplate.insert(vo, AdamDisposedBaseVo.class.getSimpleName()); // mongoTemplate.insert(vo, AdamDisposedBaseVo.class.getSimpleName());
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(), MQConst.AdamQueue.SQL_UCENTER.getKey(),
...@@ -70,21 +60,22 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService { ...@@ -70,21 +60,22 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService {
@Override @Override
public boolean exists(String uid, String type, String contentId) { public boolean exists(String uid, String type, String contentId) {
return mongoTemplate.exists( return false;
Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)), // return mongoTemplate.exists(
AdamDisposedBaseVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)),
); // AdamDisposedBaseVo.class.getSimpleName()
// );
} }
@Override @Override
public void del(String uid, String type, String... contentIds) { public void del(String uid, String type, String... contentIds) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
DeleteResult deleteResult = mongoTemplate.remove( // DeleteResult deleteResult = mongoTemplate.remove(
Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("contentId").in(contentIds)), // Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("contentId").in(contentIds)),
AdamDisposedBaseVo.class.getSimpleName() // AdamDisposedBaseVo.class.getSimpleName()
); // );
if (deleteResult.getDeletedCount() > 0) { // if (deleteResult.getDeletedCount() > 0) {
LinkedList<Object[]> toMqObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> toMqObjs = CollectionUtil.linkedListObjectArr();
for (String c : contentIds) { for (String c : contentIds) {
toMqObjs.add(new Object[]{now, uid, c}); toMqObjs.add(new Object[]{now, uid, c});
...@@ -93,120 +84,123 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService { ...@@ -93,120 +84,123 @@ public class AdamDisposedServiceImpl implements IAdamDisposedService {
MQConst.AdamQueue.SQL_UCENTER.getKey(), MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_disposed.del", toMqObjs) SqlMapping.get("adam_disposed.del", toMqObjs)
); );
} // }
} }
@Override @Override
public boolean queryState(String uid, String type, String contentId) { public boolean queryState(String uid, String type, String contentId) {
return mongoTemplate.exists( return false;
Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)), // return mongoTemplate.exists(
AdamDisposedBaseVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(uid).and("contentId").is(contentId).and("type").is(type).and("state").is(1)),
); // AdamDisposedBaseVo.class.getSimpleName()
// );
} }
@Override @Override
public PagedResult<AdamDisposedVo> queryPage(String uid, String type, int pageNo, int pageSize) { public PagedResult<AdamDisposedVo> queryPage(String uid, String type, int pageNo, int pageSize) {
Query query = Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("state").is(1)); // Query query = Query.query(Criteria.where("uid").is(uid).and("type").is(type).and("state").is(1));
long s = System.currentTimeMillis();
long count = mongoTemplate.count(query, AdamDisposedBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
PagedResult<AdamDisposedVo> pagedResult = ObjectUtil.getAdamDisposedVoPagedResult();
if (count > 0) {
query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt")));
s = System.currentTimeMillis();
List<AdamDisposedVo> disposedVoList = mongoTemplate.find(query, AdamDisposedVo.class, AdamDisposedBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (!CollectionUtils.isEmpty(disposedVoList)) {
// List<KylinPerformanceVo> kylinPerformanceVoList = null;
// try {
// String[] contentIds = disposedVoList.stream().map(AdamDisposedVo::getContentId).toArray(a -> new String[disposedVoList.size()]);
// //
// ResponseDto<List<KylinPerformanceVo>> performanceVoListDto = kylinPerformanceClient.performanceList(contentIds); // long s = System.currentTimeMillis();
// long count = mongoTemplate.count(query, AdamDisposedBaseVo.class.getSimpleName());
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// //
// if (performanceVoListDto.isSuccess()) { // PagedResult<AdamDisposedVo> pagedResult = ObjectUtil.getAdamDisposedVoPagedResult();
// kylinPerformanceVoList = performanceVoListDto.getData(); // if (count > 0) {
// } else { // query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt")));
// log.info("Failed:{}.API.performanceList(...) for AdamDisposedVo:{}", kylinPerformanceClient.getClass().getSimpleName(), performanceVoListDto.toJson());
// }
// } catch (Exception e) {
// log.error("Exception:{}.API.performanceList(...) for AdamDisposedVo >> {}", kylinPerformanceClient.getClass().getSimpleName(), e.getLocalizedMessage());
// }
// //
// if (!CollectionUtils.isEmpty(kylinPerformanceVoList)) { // s = System.currentTimeMillis();
// kylinPerformanceVoList.forEach(pv -> { // List<AdamDisposedVo> disposedVoList = mongoTemplate.find(query, AdamDisposedVo.class, AdamDisposedBaseVo.class.getSimpleName());
// disposedVoList.forEach(v -> { // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// if (pv.getPerformancesId().equals(v.getContentId())) {
// AdamCollectInfoVo collectInfoVo = AdamCollectInfoVo.getNew();
// BeanUtils.copyProperties(pv, collectInfoVo);
// v.setContentInfo(collectInfoVo);
// }
// //
// PageInfo<AdamDisposedUserVo> disposedUserVoPageInfo = this.queryDisposedUsers(type, v.getContentId(), 1, 3); // if (!CollectionUtils.isEmpty(disposedVoList)) {
//// List<KylinPerformanceVo> kylinPerformanceVoList = null;
//// try {
//// String[] contentIds = disposedVoList.stream().map(AdamDisposedVo::getContentId).toArray(a -> new String[disposedVoList.size()]);
////
//// ResponseDto<List<KylinPerformanceVo>> performanceVoListDto = kylinPerformanceClient.performanceList(contentIds);
////
//// if (performanceVoListDto.isSuccess()) {
//// kylinPerformanceVoList = performanceVoListDto.getData();
//// } else {
//// log.info("Failed:{}.API.performanceList(...) for AdamDisposedVo:{}", kylinPerformanceClient.getClass().getSimpleName(), performanceVoListDto.toJson());
//// }
//// } catch (Exception e) {
//// log.error("Exception:{}.API.performanceList(...) for AdamDisposedVo >> {}", kylinPerformanceClient.getClass().getSimpleName(), e.getLocalizedMessage());
//// }
////
//// if (!CollectionUtils.isEmpty(kylinPerformanceVoList)) {
//// kylinPerformanceVoList.forEach(pv -> {
//// disposedVoList.forEach(v -> {
//// if (pv.getPerformancesId().equals(v.getContentId())) {
//// AdamCollectInfoVo collectInfoVo = AdamCollectInfoVo.getNew();
//// BeanUtils.copyProperties(pv, collectInfoVo);
//// v.setContentInfo(collectInfoVo);
//// }
////
//// PageInfo<AdamDisposedUserVo> disposedUserVoPageInfo = this.queryDisposedUsers(type, v.getContentId(), 1, 3);
////
//// if (disposedUserVoPageInfo.getTotal() > 0) v.setUserVos(disposedUserVoPageInfo.getList());
//// });
//// });
//// } else {
//// disposedVoList.forEach(v -> {
//// PageInfo<AdamDisposedUserVo> disposedUserVoPageInfo = this.queryDisposedUsers(type, v.getContentId(), 1, 3);
////
//// if (disposedUserVoPageInfo.getTotal() > 0) v.setUserVos(disposedUserVoPageInfo.getList());
//// });
//// }
// s = System.currentTimeMillis();
// disposedVoList.forEach(r -> {
// AdamCollectInfoVo vo = AdamCollectInfoVo.getNew();
// KylinPerformanceVo performanceVo = adamRdmService.kylinPerformanceVo(r.getContentId());
// if (null != performanceVo) {
//// BeanUtils.copyProperties(performanceVo, vo);
// vo.setPerformancesId(performanceVo.getPerformancesId());
// vo.setTitle(performanceVo.getTitle());
// vo.setImgPoster(performanceVo.getImgPoster());
// vo.setType(performanceVo.getType());
// vo.setTimeStart(performanceVo.getTimeStart());
// vo.setPrice(performanceVo.getPrice());
// vo.setCityName(performanceVo.getCityName());
// vo.setFieldName(performanceVo.getFieldName());
// vo.setIsMember(performanceVo.getIsMember());
// vo.setIsExclusive(performanceVo.getIsExclusive());
// vo.setIsDiscount(performanceVo.getIsDiscount());
// vo.setIsAdvance(performanceVo.getIsAdvance());
// }
// r.setContentInfo(vo);
// PagedResult<AdamDisposedUserVo> disposedUserVoPagedResult = this.queryDisposedUsers(type, r.getContentId(), 1, 3);
// if (disposedUserVoPagedResult.getTotal() > 0) r.setUserVos(disposedUserVoPagedResult.getList());
// });
// log.debug("#DIS.RDS.MDB.K耗时:{}ms", System.currentTimeMillis() - s);
// }
// //
// if (disposedUserVoPageInfo.getTotal() > 0) v.setUserVos(disposedUserVoPageInfo.getList()); // pagedResult.setList(disposedVoList).setTotal(count, pageSize);
// }); // }
// });
// } else {
// disposedVoList.forEach(v -> {
// PageInfo<AdamDisposedUserVo> disposedUserVoPageInfo = this.queryDisposedUsers(type, v.getContentId(), 1, 3);
// //
// if (disposedUserVoPageInfo.getTotal() > 0) v.setUserVos(disposedUserVoPageInfo.getList()); // return pagedResult;
// }); return ObjectUtil.getAdamDisposedVoPagedResult();
// }
s = System.currentTimeMillis();
disposedVoList.forEach(r -> {
AdamCollectInfoVo vo = AdamCollectInfoVo.getNew();
KylinPerformanceVo performanceVo = adamRdmService.kylinPerformanceVo(r.getContentId());
if (null != performanceVo) {
// BeanUtils.copyProperties(performanceVo, vo);
vo.setPerformancesId(performanceVo.getPerformancesId());
vo.setTitle(performanceVo.getTitle());
vo.setImgPoster(performanceVo.getImgPoster());
vo.setType(performanceVo.getType());
vo.setTimeStart(performanceVo.getTimeStart());
vo.setPrice(performanceVo.getPrice());
vo.setCityName(performanceVo.getCityName());
vo.setFieldName(performanceVo.getFieldName());
vo.setIsMember(performanceVo.getIsMember());
vo.setIsExclusive(performanceVo.getIsExclusive());
vo.setIsDiscount(performanceVo.getIsDiscount());
vo.setIsAdvance(performanceVo.getIsAdvance());
}
r.setContentInfo(vo);
PagedResult<AdamDisposedUserVo> disposedUserVoPagedResult = this.queryDisposedUsers(type, r.getContentId(), 1, 3);
if (disposedUserVoPagedResult.getTotal() > 0) r.setUserVos(disposedUserVoPagedResult.getList());
});
log.debug("#DIS.RDS.MDB.K耗时:{}ms", System.currentTimeMillis() - s);
}
pagedResult.setList(disposedVoList).setTotal(count, pageSize);
}
return pagedResult;
} }
@Override @Override
public PagedResult<AdamDisposedUserVo> queryDisposedUsers(String type, String contentId, int pageNo, int pageSize) { public PagedResult<AdamDisposedUserVo> queryDisposedUsers(String type, String contentId, int pageNo, int pageSize) {
Query query = Query.query(Criteria.where("type").is(type).and("contentId").is(contentId).and("state").is(1)); // Query query = Query.query(Criteria.where("type").is(type).and("contentId").is(contentId).and("state").is(1));
//
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
long count = mongoTemplate.count(query, AdamDisposedBaseVo.class.getSimpleName()); // long count = mongoTemplate.count(query, AdamDisposedBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
PagedResult<AdamDisposedUserVo> pagedResult = ObjectUtil.getAdamDisposedUserVoPagedResult(); // PagedResult<AdamDisposedUserVo> pagedResult = ObjectUtil.getAdamDisposedUserVoPagedResult();
if (count > 0) { // if (count > 0) {
query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt"))); // query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt")));
//
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
List<AdamDisposedUserVo> disposedUserVoList = mongoTemplate.find(query, AdamDisposedUserVo.class, AdamDisposedBaseVo.class.getSimpleName()); // List<AdamDisposedUserVo> disposedUserVoList = mongoTemplate.find(query, AdamDisposedUserVo.class, AdamDisposedBaseVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
pagedResult.setList(disposedUserVoList).setTotal(count, pageSize); // pagedResult.setList(disposedUserVoList).setTotal(count, pageSize);
} // }
return pagedResult; // return pagedResult;
return ObjectUtil.getAdamDisposedUserVoPagedResult();
} }
} }
...@@ -11,26 +11,16 @@ import com.liquidnet.service.adam.util.QueueUtils; ...@@ -11,26 +11,16 @@ import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.DeleteResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.IntStream; import java.util.stream.IntStream;
/** /**
...@@ -46,8 +36,8 @@ import java.util.stream.IntStream; ...@@ -46,8 +36,8 @@ import java.util.stream.IntStream;
public class AdamEntersServiceImpl implements IAdamEntersService { public class AdamEntersServiceImpl implements IAdamEntersService {
@Autowired @Autowired
Environment env; Environment env;
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -80,11 +70,11 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -80,11 +70,11 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
vo.setState(1); vo.setState(1);
vo.setCreatedAt(now); vo.setCreatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(vo, AdamEntersVo.class.getSimpleName()); // mongoTemplate.insert(vo, AdamEntersVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.delEntersVoByUid(currentUid); adamRdmService.delEntersVoByUid(currentUid);
if (1 == parameter.getType()) { if (1 == parameter.getType()) {
adamRdmService.setCertification(1, parameter.getIdCard(), parameter.getName()); adamRdmService.setCertification(1, parameter.getIdCard(), parameter.getName());
...@@ -117,39 +107,44 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -117,39 +107,44 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
// AdamEntersVo unDeaultVo = AdamEntersVo.getNew(); // AdamEntersVo unDeaultVo = AdamEntersVo.getNew();
// unDeaultVo.setIsDefault(false); // unDeaultVo.setIsDefault(false);
// unDeaultVo.setUpdatedAt(now); // unDeaultVo.setUpdatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid).and("state").is(1).and("isDefault").is(true)).getQueryObject(), // Query.query(Criteria.where("uid").is(uid).and("state").is(1).and("isDefault").is(true)).getQueryObject(),
new Document("$set", new Document("isDefault", false).append("updatedAt", now)), // new Document("$set", new Document("isDefault", false).append("updatedAt", now)),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != doc) { // if (null != doc) {
AdamEntersVo unDeaultVoAfter = BsonUtil.toBean(doc, AdamEntersVo.class); // AdamEntersVo defaultVo = BsonUtil.toBean(doc, AdamEntersVo.class);
AdamEntersVo defaultVo = queryDefault(vos, uid, false);
toMqObjs.add(new Object[]{false, now, unDeaultVoAfter.getEntersId()}); defaultVo.setIsDefault(false);
defaultVo.setUpdatedAt(now);
vos = this.collectionProcess(vos, unDeaultVoAfter.getEntersId(), unDeaultVoAfter);
} toMqObjs.add(new Object[]{false, now, defaultVo.getEntersId()});
vos = this.collectionProcess(vos, defaultVo.getEntersId(), defaultVo);
// }
} }
{// 设置新默认 {// 设置新默认
// AdamEntersVo defaultVo = AdamEntersVo.getNew(); // AdamEntersVo defaultVo = AdamEntersVo.getNew();
// defaultVo.setIsDefault(true); // defaultVo.setIsDefault(true);
// defaultVo.setUpdatedAt(now); // defaultVo.setUpdatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid).and("entersId").is(entersId)).getQueryObject(), // Query.query(Criteria.where("uid").is(uid).and("entersId").is(entersId)).getQueryObject(),
new Document("$set", new Document("isDefault", true).append("updatedAt", now)), // new Document("$set", new Document("isDefault", true).append("updatedAt", now)),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != doc) { // if (null != doc) {
AdamEntersVo defaultVoAfter = BsonUtil.toBean(doc, AdamEntersVo.class); AdamEntersVo defaultVoAfter = adamRdmService.getEntersVoByUidEntersId(vos, entersId);
defaultVoAfter.setIsDefault(true);
defaultVoAfter.setUpdatedAt(now);
toMqObjs.add(new Object[]{true, now, entersId}); toMqObjs.add(new Object[]{true, now, entersId});
vos = this.collectionProcess(vos, defaultVoAfter.getEntersId(), defaultVoAfter); vos = this.collectionProcess(vos, defaultVoAfter.getEntersId(), defaultVoAfter);
} // }
} }
if (!CollectionUtils.isEmpty(toMqObjs)) { if (!CollectionUtils.isEmpty(toMqObjs)) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
...@@ -176,20 +171,27 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -176,20 +171,27 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
} }
} }
AdamEntersVo updateVo = AdamEntersVo.getNew(); List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(currentUid);
BeanUtils.copyProperties(parameter, updateVo); AdamEntersVo updateVo = adamRdmService.getEntersVoByUidEntersId(vos, parameter.getEntersId());
long s = System.currentTimeMillis(); updateVo.setType(parameter.getType());
Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate( updateVo.setName(parameter.getName());
Query.query(Criteria.where("uid").is(currentUid).and("entersId").is(parameter.getEntersId())).getQueryObject(), updateVo.setMobile(parameter.getMobile());
new Document("$set", Document.parse(JsonUtils.toJson(updateVo)).append("updatedAt", now)), updateVo.setIdCard(parameter.getIdCard());
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) updateVo.setUpdatedAt(now);
); // AdamEntersVo updateVo = AdamEntersVo.getNew();
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // BeanUtils.copyProperties(parameter, updateVo);
if (null != doc) { // long s = System.currentTimeMillis();
updateVo = BsonUtil.toBean(doc, AdamEntersVo.class); // Document doc = mongoTemplate.getCollection(AdamEntersVo.class.getSimpleName()).findOneAndUpdate(
// Query.query(Criteria.where("uid").is(currentUid).and("entersId").is(parameter.getEntersId())).getQueryObject(),
List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(currentUid); // new Document("$set", Document.parse(JsonUtils.toJson(updateVo)).append("updatedAt", now)),
s = System.currentTimeMillis(); // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
// );
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// if (null != doc) {
// updateVo = BsonUtil.toBean(doc, AdamEntersVo.class);
//
// List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(currentUid);
long s = System.currentTimeMillis();
adamRdmService.setEntersVoByUid(currentUid, this.collectionProcess(vos, parameter.getEntersId(), updateVo)); adamRdmService.setEntersVoByUid(currentUid, this.collectionProcess(vos, parameter.getEntersId(), updateVo));
if (1 == parameter.getType()) { if (1 == parameter.getType()) {
adamRdmService.setCertification(1, parameter.getIdCard(), parameter.getName()); adamRdmService.setCertification(1, parameter.getIdCard(), parameter.getName());
...@@ -204,22 +206,22 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -204,22 +206,22 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
) )
); );
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} // }
} }
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void remove(String uid, String entersId) { public void remove(String uid, String entersId) {
String currentUid = CurrentUtil.getCurrentUid(); // String currentUid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
DeleteResult deleteResult = mongoTemplate.remove( // DeleteResult deleteResult = mongoTemplate.remove(
Query.query(Criteria.where("uid").is(currentUid).and("entersId").is(entersId)), AdamEntersVo.class.getSimpleName() // Query.query(Criteria.where("uid").is(currentUid).and("entersId").is(entersId)), AdamEntersVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(uid); List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(uid);
vos.removeIf(r -> r.getEntersId().equals(entersId)); vos.removeIf(r -> r.getEntersId().equals(entersId));
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setEntersVoByUid(uid, vos); adamRdmService.setEntersVoByUid(uid, vos);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -232,8 +234,10 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -232,8 +234,10 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
} }
@Override @Override
public AdamEntersVo queryDefault(String uid) { public AdamEntersVo queryDefault(List<AdamEntersVo> vos, String uid, boolean downgrade) {
List<AdamEntersVo> vos = adamRdmService.getEntersVoByUid(uid); if (CollectionUtils.isEmpty(vos)) {
vos = adamRdmService.getEntersVoByUid(uid);
}
if (!CollectionUtils.isEmpty(vos)) { if (!CollectionUtils.isEmpty(vos)) {
AdamEntersVo defaultVo = null; AdamEntersVo defaultVo = null;
...@@ -241,8 +245,10 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -241,8 +245,10 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
if (vo.getIsDefault()) { if (vo.getIsDefault()) {
return vo; return vo;
} }
defaultVo = null == defaultVo ? vo : if (downgrade) {
vo.getCreatedAt().compareTo(defaultVo.getCreatedAt()) > 0 ? vo : defaultVo; defaultVo = null == defaultVo ? vo :
vo.getCreatedAt().compareTo(defaultVo.getCreatedAt()) > 0 ? vo : defaultVo;
}
} }
return defaultVo; return defaultVo;
} }
...@@ -257,18 +263,18 @@ public class AdamEntersServiceImpl implements IAdamEntersService { ...@@ -257,18 +263,18 @@ public class AdamEntersServiceImpl implements IAdamEntersService {
.filter(i -> vos.get(i).getEntersId().equals(replaceId)) .filter(i -> vos.get(i).getEntersId().equals(replaceId))
.findFirst().orElse(-1); .findFirst().orElse(-1);
if (idx == -1) { if (idx == -1) {
adamRdmService.delEntersVoByUid(updateVo.getUid()); // adamRdmService.delEntersVoByUid(updateVo.getUid());
//
List<AdamEntersVo> entersVos = adamRdmService.getEntersVoByUid(updateVo.getUid()); // List<AdamEntersVo> entersVos = adamRdmService.getEntersVoByUid(updateVo.getUid());
//
idx = IntStream.range(0, vos.size()) // idx = IntStream.range(0, vos.size())
.filter(i -> entersVos.get(i).getEntersId().equals(replaceId)) // .filter(i -> entersVos.get(i).getEntersId().equals(replaceId))
.findFirst().orElse(-1); // .findFirst().orElse(-1);
//
if (idx == -1) { // if (idx == -1) {
ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10017"); ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10017");
throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage()); throw new LiquidnetServiceException(errorMessage.getCode(), errorMessage.getMessage());
} // }
} }
vos.set(idx, updateVo); vos.set(idx, updateVo);
log.debug("#collect.process耗时:{}ms", System.currentTimeMillis() - s); log.debug("#collect.process耗时:{}ms", System.currentTimeMillis() - s);
......
...@@ -19,14 +19,8 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -19,14 +19,8 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -35,15 +29,14 @@ import java.math.BigDecimal; ...@@ -35,15 +29,14 @@ import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
@Autowired @Autowired
Environment env; Environment env;
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -215,10 +208,10 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -215,10 +208,10 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
initUserMemberVo.setExpiryAt(now.plusDays(memberPriceVo.getDays()).with(LocalTime.MAX)); initUserMemberVo.setExpiryAt(now.plusDays(memberPriceVo.getDays()).with(LocalTime.MAX));
initUserMemberVo.setCreatedAt(now); initUserMemberVo.setCreatedAt(now);
// long s = System.currentTimeMillis();
// mongoTemplate.insert(initUserMemberVo, AdamUserMemberVo.class.getSimpleName());
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
mongoTemplate.insert(initUserMemberVo, AdamUserMemberVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), initUserMemberVo); adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), initUserMemberVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -233,15 +226,15 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -233,15 +226,15 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
LocalDateTime currentExpiryAt = existUserMemberVo.getExpiryAt(); LocalDateTime currentExpiryAt = existUserMemberVo.getExpiryAt();
LocalDateTime expiryAt = (currentExpiryAt.isBefore(now) ? now : currentExpiryAt).plusDays(memberPriceVo.getDays()).with(LocalTime.MAX); LocalDateTime expiryAt = (currentExpiryAt.isBefore(now) ? now : currentExpiryAt).plusDays(memberPriceVo.getDays()).with(LocalTime.MAX);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.getCollection(AdamUserMemberVo.class.getSimpleName()).updateOne( // mongoTemplate.getCollection(AdamUserMemberVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("uid").is(existUserMemberVo.getUid())).getQueryObject(), // Query.query(Criteria.where("uid").is(existUserMemberVo.getUid())).getQueryObject(),
new Document("$set", new Document("expiryAt", expiryAt).append("state", 1)) // new Document("$set", new Document("expiryAt", expiryAt).append("state", 1))
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
existUserMemberVo.setState(1); existUserMemberVo.setState(1);
existUserMemberVo.setExpiryAt(expiryAt); existUserMemberVo.setExpiryAt(expiryAt);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), existUserMemberVo); adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), existUserMemberVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -268,10 +261,10 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -268,10 +261,10 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
initMemberCodeVo.setBuyAt(handleMemberOrderVo.getCreatedAt()); initMemberCodeVo.setBuyAt(handleMemberOrderVo.getCreatedAt());
initMemberCodeVo.setCreatedAt(now); initMemberCodeVo.setCreatedAt(now);
// long s = System.currentTimeMillis();
// mongoTemplate.insert(initMemberCodeVo, AdamMemberCodeVo.class.getSimpleName());
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
mongoTemplate.insert(initMemberCodeVo, AdamMemberCodeVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
adamRdmService.setMemberCodeVoByCode(initMemberCodeVo.getCode(), initMemberCodeVo); adamRdmService.setMemberCodeVoByCode(initMemberCodeVo.getCode(), initMemberCodeVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -286,9 +279,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -286,9 +279,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
handleMemberOrderVo.setUpdatedAt(now); handleMemberOrderVo.setUpdatedAt(now);
handleMemberOrderVo.setState(1);// 1-已支付 handleMemberOrderVo.setState(1);// 1-已支付
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(handleMemberOrderVo, AdamMemberOrderVo.class.getSimpleName()); // mongoTemplate.insert(handleMemberOrderVo, AdamMemberOrderVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_member_order.add")); toMqSqls.add(SqlMapping.get("adam_member_order.add"));
updateMemberOrderObjs.add(new Object[]{ updateMemberOrderObjs.add(new Object[]{
...@@ -299,7 +292,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -299,7 +292,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
handleMemberOrderVo.getCreatedAt(), handleMemberOrderVo.getClientIp(), handleMemberOrderVo.getSource(), handleMemberOrderVo.getVersion() handleMemberOrderVo.getCreatedAt(), handleMemberOrderVo.getClientIp(), handleMemberOrderVo.getSource(), handleMemberOrderVo.getVersion()
}); });
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setShotMemberOrderVoByOrderNo(handleMemberOrderVo.getOrderNo(), handleMemberOrderVo); adamRdmService.setShotMemberOrderVoByOrderNo(handleMemberOrderVo.getOrderNo(), handleMemberOrderVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -363,12 +356,12 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -363,12 +356,12 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
upsertUserMemberVo.setExpiryAt( upsertUserMemberVo.setExpiryAt(
(expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX) (expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX)
); );
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.getCollection(AdamUserMemberVo.class.getSimpleName()).updateOne( // mongoTemplate.getCollection(AdamUserMemberVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("uid").is(upsertUserMemberVo.getUid())).getQueryObject(), // Query.query(Criteria.where("uid").is(upsertUserMemberVo.getUid())).getQueryObject(),
new Document("$set", new Document("expiryAt", upsertUserMemberVo.getExpiryAt()).append("state", 1)) // new Document("$set", new Document("expiryAt", upsertUserMemberVo.getExpiryAt()).append("state", 1))
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_user_member.update")); toMqSqls.add(SqlMapping.get("adam_user_member.update"));
upsertUserMemberObjs.add(new Object[]{ upsertUserMemberObjs.add(new Object[]{
upsertUserMemberVo.getState(), upsertUserMemberVo.getExpiryAt(), now, upsertUserMemberVo.getUid() upsertUserMemberVo.getState(), upsertUserMemberVo.getExpiryAt(), now, upsertUserMemberVo.getUid()
...@@ -382,9 +375,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -382,9 +375,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
upsertUserMemberVo.setExpiryAt(now.plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX)); upsertUserMemberVo.setExpiryAt(now.plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX));
upsertUserMemberVo.setCreatedAt(now); upsertUserMemberVo.setCreatedAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(upsertUserMemberVo, AdamUserMemberVo.class.getSimpleName()); // mongoTemplate.insert(upsertUserMemberVo, AdamUserMemberVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_user_member.add")); toMqSqls.add(SqlMapping.get("adam_user_member.add"));
upsertUserMemberObjs.add(new Object[]{ upsertUserMemberObjs.add(new Object[]{
upsertUserMemberVo.getUid(), upsertUserMemberVo.getMemberId(), upsertUserMemberVo.getMemberNo(), upsertUserMemberVo.getUid(), upsertUserMemberVo.getMemberId(), upsertUserMemberVo.getMemberNo(),
...@@ -396,25 +389,25 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -396,25 +389,25 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
adamRdmService.delMemberCodeVoByCode(memberCodeVo.getCode()); adamRdmService.delMemberCodeVoByCode(memberCodeVo.getCode());
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
Document updateMemberCodeVo = new Document("state", 1) // Document updateMemberCodeVo = new Document("state", 1)
.append("updatedAt", now) // .append("updatedAt", now)
.append("useOrderNo", initMemberOrderVo.getOrderNo()) // .append("useOrderNo", initMemberOrderVo.getOrderNo())
.append("useUid", upsertUserMemberVo.getUid()) // .append("useUid", upsertUserMemberVo.getUid())
.append("useAt", now); // .append("useAt", now);
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
mongoTemplate.getCollection(AdamMemberCodeVo.class.getSimpleName()).updateOne( // mongoTemplate.getCollection(AdamMemberCodeVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("code").is(memberCodeVo.getCode())).getQueryObject(), // Query.query(Criteria.where("code").is(memberCodeVo.getCode())).getQueryObject(),
new Document("$set", updateMemberCodeVo) // new Document("$set", updateMemberCodeVo)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_member_code.exchange")); toMqSqls.add(SqlMapping.get("adam_member_code.exchange"));
updateMemberCodeObjs.add(new Object[]{ updateMemberCodeObjs.add(new Object[]{
1, now, initMemberOrderVo.getOrderNo(), upsertUserMemberVo.getUid(), now, memberCodeVo.getCode() 1, now, initMemberOrderVo.getOrderNo(), upsertUserMemberVo.getUid(), now, memberCodeVo.getCode()
}); });
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
mongoTemplate.insert(initMemberOrderVo, AdamMemberOrderVo.class.getSimpleName()); // mongoTemplate.insert(initMemberOrderVo, AdamMemberOrderVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_member_order.add")); toMqSqls.add(SqlMapping.get("adam_member_order.add"));
initMemberOrderObjs.add(new Object[]{ initMemberOrderObjs.add(new Object[]{
initMemberOrderVo.getOrderNo(), initMemberOrderVo.getUid(), initMemberOrderVo.getMode(), initMemberOrderVo.getPrice(), initMemberOrderVo.getOrderNo(), initMemberOrderVo.getUid(), initMemberOrderVo.getMode(), initMemberOrderVo.getPrice(),
...@@ -438,20 +431,22 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -438,20 +431,22 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
@Override @Override
public PagedResult<AdamMemberOrderSimpleVo> queryPage(String uid, int pageNo, int pageSize) { public PagedResult<AdamMemberOrderSimpleVo> queryPage(String uid, int pageNo, int pageSize) {
Query query = Query.query(Criteria.where("uid").is(uid).and("state").in(1,5)); // Query query = Query.query(Criteria.where("uid").is(uid).and("state").in(1,5));
//
long count = mongoTemplate.count(query, AdamMemberOrderVo.class.getSimpleName()); // long count = mongoTemplate.count(query, AdamMemberOrderVo.class.getSimpleName());
//
PagedResult<AdamMemberOrderSimpleVo> pagedResult = ObjectUtil.getAdamMemberOrderSimpleVoPagedResult(); // PagedResult<AdamMemberOrderSimpleVo> pagedResult = ObjectUtil.getAdamMemberOrderSimpleVoPagedResult();
if (count > 0) { // if (count > 0) {
query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt"))); // query.with(PageRequest.of(pageNo - 1, pageSize, Sort.by(Sort.Direction.DESC, "createdAt")));
//
List<AdamMemberOrderSimpleVo> voList = mongoTemplate.find( // List<AdamMemberOrderSimpleVo> voList = mongoTemplate.find(
query, AdamMemberOrderSimpleVo.class, AdamMemberOrderVo.class.getSimpleName() // query, AdamMemberOrderSimpleVo.class, AdamMemberOrderVo.class.getSimpleName()
); // );
//
pagedResult.setList(voList).setTotal(count, pageSize); // pagedResult.setList(voList).setTotal(count, pageSize);
} // }
return pagedResult; // return pagedResult;
// TODO: 2021/7/29 会员订单列表查取
return ObjectUtil.getAdamMemberOrderSimpleVoPagedResult();
} }
} }
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName; import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.service.IAdamRealNameService; import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.util.QueueUtils; import com.liquidnet.service.adam.util.QueueUtils;
...@@ -9,7 +8,6 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -9,7 +8,6 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
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.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
...@@ -26,8 +24,8 @@ import java.util.List; ...@@ -26,8 +24,8 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class AdamRealNameServiceImpl implements IAdamRealNameService { public class AdamRealNameServiceImpl implements IAdamRealNameService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
@Autowired @Autowired
...@@ -36,9 +34,9 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService { ...@@ -36,9 +34,9 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamRealName realName) { public void add(AdamRealName realName) {
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(realName, AdamRealInfoVo.class.getSimpleName()); // mongoTemplate.insert(realName, AdamRealInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
List<Object> paramList = Arrays.asList( List<Object> paramList = Arrays.asList(
realName.getRealNameId(), realName.getRealNameId(),
...@@ -49,7 +47,7 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService { ...@@ -49,7 +47,7 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
realName.getState(), realName.getState(),
realName.getCreatedAt() realName.getCreatedAt()
); );
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(), MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_real_name.add", paramList.toArray()) SqlMapping.get("adam_real_name.add", paramList.toArray())
......
...@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service.impl; ...@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.core.JwtValidator; import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
...@@ -11,15 +10,9 @@ import com.liquidnet.service.adam.service.IAdamUserInfoService; ...@@ -11,15 +10,9 @@ import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.adam.util.QueueUtils; import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document; import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils; import org.springframework.util.DigestUtils;
...@@ -39,8 +32,8 @@ import java.util.Map; ...@@ -39,8 +32,8 @@ import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class AdamUserInfoServiceImpl implements IAdamUserInfoService { public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
AdamRdmService adamRdmService; AdamRdmService adamRdmService;
@Autowired @Autowired
...@@ -56,17 +49,17 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -56,17 +49,17 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
userInfoVo.setCreateAt(null); userInfoVo.setCreateAt(null);
Document updateDoc = Document.parse(JsonUtils.toJson(userInfoVo)); Document updateDoc = Document.parse(JsonUtils.toJson(userInfoVo));
updateDoc.replace("updatedAt", userInfoVo.getUpdatedAt()); updateDoc.replace("updatedAt", userInfoVo.getUpdatedAt());
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
UpdateResult updateResult = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).updateOne( // UpdateResult updateResult = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(), // Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(),
new Document("$set", updateDoc) // new Document("$set", updateDoc)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (updateResult.getModifiedCount() <= 0) { // if (updateResult.getModifiedCount() <= 0) {
log.warn("Invalid update MDB.AdamUserInfoVo:{}", JsonUtils.toJson(userInfoVo)); // log.warn("Invalid update MDB.AdamUserInfoVo:{}", JsonUtils.toJson(userInfoVo));
} // }
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo); adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -105,17 +98,18 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -105,17 +98,18 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
// AdamUserInfoVo updateInfoVo = AdamUserInfoVo.getNew(); // AdamUserInfoVo updateInfoVo = AdamUserInfoVo.getNew();
// updateInfoVo.setUpdatedAt(now); // updateInfoVo.setUpdatedAt(now);
// updateInfoVo.setMobile(mobile); // updateInfoVo.setMobile(mobile);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid)).getQueryObject(), // Query.query(Criteria.where("uid").is(uid)).getQueryObject(),
new Document("$set", new Document("mobile", mobile).append("updatedAt", now)), // new Document("$set", new Document("mobile", mobile).append("updatedAt", now)),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.BEFORE) // new FindOneAndUpdateOptions().returnDocument(ReturnDocument.BEFORE)
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
log.debug("edit mobile - before doc:{}", JsonUtils.toJson(doc)); // log.debug("edit mobile - before doc:{}", JsonUtils.toJson(doc));
AdamUserInfoVo beforeUserInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class); // AdamUserInfoVo beforeUserInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class);
AdamUserInfoVo beforeUserInfoVo = adamRdmService.getUserInfoVoByUid(uid);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.delUidByMobile(beforeUserInfoVo.getMobile()); adamRdmService.delUidByMobile(beforeUserInfoVo.getMobile());
adamRdmService.setUidByMobile(mobile, uid); adamRdmService.setUidByMobile(mobile, uid);
beforeUserInfoVo.setMobile(mobile); beforeUserInfoVo.setMobile(mobile);
......
...@@ -2,15 +2,10 @@ package com.liquidnet.service.adam.service.impl; ...@@ -2,15 +2,10 @@ package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil; import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo; import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserMemberService; import com.liquidnet.service.adam.service.IAdamUserMemberService;
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.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -20,8 +15,8 @@ import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UMEMBE ...@@ -20,8 +15,8 @@ import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UMEMBE
@Slf4j @Slf4j
@Service @Service
public class AdamUserMemberServiceImpl implements IAdamUserMemberService { public class AdamUserMemberServiceImpl implements IAdamUserMemberService {
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
AdamRdmService adamRdmService; AdamRdmService adamRdmService;
...@@ -33,17 +28,17 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService { ...@@ -33,17 +28,17 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService {
if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) { if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) {
memberMaxNo = adamRdmService.getMaxMemberNo(); memberMaxNo = adamRdmService.getMaxMemberNo();
if (-1 == memberMaxNo) { if (-1 == memberMaxNo) {
Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1); // Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
//
AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName()); // AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
//
if (null == latestMaxMemberNoVo) { // if (null == latestMaxMemberNoVo) {
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(memberId); AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(memberId);
adamRdmService.setMaxMemberNo(memberVo.getStartNo()); adamRdmService.setMaxMemberNo(memberVo.getStartNo());
} else { // } else {
adamRdmService.setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo())); // adamRdmService.setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo()));
} // }
} }
RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO); RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO);
} else { } else {
......
...@@ -6,8 +6,9 @@ import com.liquidnet.common.exception.LiquidnetServiceException; ...@@ -6,8 +6,9 @@ import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam; import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamEnters; import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName; import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamEntersService; import com.liquidnet.service.adam.service.IAdamEntersService;
...@@ -17,28 +18,21 @@ import com.liquidnet.service.adam.util.QueueUtils; ...@@ -17,28 +18,21 @@ import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.DeleteResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.LinkedList;
import java.util.List;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UREGISTER; import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UREGISTER;
...@@ -55,8 +49,8 @@ import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UREGIS ...@@ -55,8 +49,8 @@ import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UREGIS
public class AdamUserServiceImpl implements IAdamUserService { public class AdamUserServiceImpl implements IAdamUserService {
@Autowired @Autowired
Environment env; Environment env;
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired @Autowired
...@@ -89,11 +83,11 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -89,11 +83,11 @@ public class AdamUserServiceImpl implements IAdamUserService {
userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase())); userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfoVo.setCreateAt(now); userInfoVo.setCreateAt(now);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName()); // mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setUidByMobile(mobile, userInfoVo.getUid()); adamRdmService.setUidByMobile(mobile, userInfoVo.getUid());
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -148,9 +142,9 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -148,9 +142,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase())); userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfoVo.setCreateAt(now); userInfoVo.setCreateAt(now);
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName()); // mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
userInfoVo.setMobile(SensitizeUtil.custom(param.getMobile(), 3, 4)); userInfoVo.setMobile(SensitizeUtil.custom(param.getMobile(), 3, 4));
...@@ -172,9 +166,9 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -172,9 +166,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
thirdPartInfoVo.setUid(userInfoVo.getUid()); thirdPartInfoVo.setUid(userInfoVo.getUid());
thirdPartInfoVo.setState(1);// 1-绑定 thirdPartInfoVo.setState(1);// 1-绑定
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName()); // mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_third_party.add")); toMqSqls.add(SqlMapping.get("adam_third_party.add"));
initThirdPartObjs.add(new Object[]{thirdPartInfoVo.getUid(), thirdPartInfoVo.getOpenId(), thirdPartInfoVo.getAvatar(), thirdPartInfoVo.getNickname(), thirdPartInfoVo.getPlatform(), thirdPartInfoVo.getState(), thirdPartInfoVo.getCreatedAt()}); initThirdPartObjs.add(new Object[]{thirdPartInfoVo.getUid(), thirdPartInfoVo.getOpenId(), thirdPartInfoVo.getAvatar(), thirdPartInfoVo.getNickname(), thirdPartInfoVo.getPlatform(), thirdPartInfoVo.getState(), thirdPartInfoVo.getCreatedAt()});
...@@ -207,11 +201,11 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -207,11 +201,11 @@ public class AdamUserServiceImpl implements IAdamUserService {
thirdPartInfoVo.setUid(uid); thirdPartInfoVo.setUid(uid);
thirdPartInfoVo.setState(1);// 1-绑定 thirdPartInfoVo.setState(1);// 1-绑定
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName()); // mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setUidByPlatformOpenId(param.getPlatform(), param.getOpenId(), uid); adamRdmService.setUidByPlatformOpenId(param.getPlatform(), param.getOpenId(), uid);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -242,7 +236,7 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -242,7 +236,7 @@ public class AdamUserServiceImpl implements IAdamUserService {
thirdPartInfoVo.setUid(bindUid); thirdPartInfoVo.setUid(bindUid);
thirdPartInfoVo.setState(1);// 1-绑定 thirdPartInfoVo.setState(1);// 1-绑定
mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName()); // mongoTemplate.insert(thirdPartInfoVo, AdamThirdPartInfoVo.class.getSimpleName());
adamRdmService.setUidByPlatformOpenId(param.getPlatform(), param.getOpenId(), bindUid); adamRdmService.setUidByPlatformOpenId(param.getPlatform(), param.getOpenId(), bindUid);
...@@ -269,17 +263,22 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -269,17 +263,22 @@ public class AdamUserServiceImpl implements IAdamUserService {
// unBindThirdPartInfoVo.setUpdatedAt(now); // unBindThirdPartInfoVo.setUpdatedAt(now);
// unBindThirdPartInfoVo.setState(2);// 2-解绑 // unBindThirdPartInfoVo.setState(2);// 2-解绑
// long s = System.currentTimeMillis();
// Document doc = mongoTemplate.getCollection(AdamThirdPartInfoVo.class.getSimpleName()).findOneAndUpdate(
// Query.query(Criteria.where("uid").is(uid).and("platform").is(platform).and("state").is(1)).getQueryObject(),
// new Document("$set", new Document("state", 2).append("updatedAt", now)),
// new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
// );
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
//
// s = System.currentTimeMillis();
// if (null != doc) {
// adamRdmService.delUidByPlatformOpenId(platform, doc.getString("openId"));
// }
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamThirdPartInfoVo.class.getSimpleName()).findOneAndUpdate( AdamThirdPartInfoVo unBindTpaVo = adamRdmService.getThirdPartVoByUidPlatform(uid, platform);
Query.query(Criteria.where("uid").is(uid).and("platform").is(platform).and("state").is(1)).getQueryObject(), if (null != unBindTpaVo) {
new Document("$set", new Document("state", 2).append("updatedAt", now)), adamRdmService.delUidByPlatformOpenId(platform, unBindTpaVo.getOpenId());
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
if (null != doc) {
adamRdmService.delUidByPlatformOpenId(platform, doc.getString("openId"));
} }
adamRdmService.delThirdPartVoListByUid(uid); adamRdmService.delThirdPartVoListByUid(uid);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -323,45 +322,45 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -323,45 +322,45 @@ public class AdamUserServiceImpl implements IAdamUserService {
adamRdmService.delEntersVoByUid(uid); adamRdmService.delEntersVoByUid(uid);
log.debug("##RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("##RDS耗时:{}ms", System.currentTimeMillis() - s);
DeleteResult deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamUserInfoVo.class.getSimpleName()); // DeleteResult deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamUserInfoVo.class.getSimpleName());
toMqSqls.add(SqlMapping.get("adam_user.close")); toMqSqls.add(SqlMapping.get("adam_user.close"));
objsUser.add(new Object[]{now, now, uid}); objsUser.add(new Object[]{now, now, uid});
/* ---------------------- 三方账号信息 */ /* ---------------------- 三方账号信息 */
if (!CollectionUtils.isEmpty(thirdPartInfoVos)) { if (!CollectionUtils.isEmpty(thirdPartInfoVos)) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamThirdPartInfoVo.class.getSimpleName()); // mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamThirdPartInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
toMqSqls.add(SqlMapping.get("adam_third_party.close")); toMqSqls.add(SqlMapping.get("adam_third_party.close"));
objsThirdPart.add(new Object[]{now, uid}); objsThirdPart.add(new Object[]{now, uid});
} }
/* ---------------------- 用户会员信息 */ /* ---------------------- 用户会员信息 */
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class.getSimpleName()); // deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (deleteResult.getDeletedCount() > 0) { // if (deleteResult.getDeletedCount() > 0) {
toMqSqls.add(SqlMapping.get("adam_user_member.close")); toMqSqls.add(SqlMapping.get("adam_user_member.close"));
objsThirdPart.add(new Object[]{now, uid}); objsThirdPart.add(new Object[]{now, uid});
} // }
/* ---------------------- 收货地址信息 */ /* ---------------------- 收货地址信息 */
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamAddressesVo.class.getSimpleName()); // deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), AdamAddressesVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (deleteResult.getDeletedCount() > 0) { // if (deleteResult.getDeletedCount() > 0) {
toMqSqls.add(SqlMapping.get("adam_addresses.close")); toMqSqls.add(SqlMapping.get("adam_addresses.close"));
objsAddresses.add(new Object[]{now, now, uid}); objsAddresses.add(new Object[]{now, now, uid});
} // }
/* ---------------------- 入场人信息 */ /* ---------------------- 入场人信息 */
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)).getQueryObject(), AdamEnters.class.getSimpleName()); // deleteResult = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)).getQueryObject(), AdamEnters.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (deleteResult.getDeletedCount() > 0) { // if (deleteResult.getDeletedCount() > 0) {
toMqSqls.add(SqlMapping.get("adam_enters.close")); toMqSqls.add(SqlMapping.get("adam_enters.close"));
objsAddresses.add(new Object[]{now, now, uid}); objsAddresses.add(new Object[]{now, now, uid});
} // }
s = System.currentTimeMillis(); s = System.currentTimeMillis();
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
......
...@@ -9,9 +9,9 @@ eureka: ...@@ -9,9 +9,9 @@ eureka:
spring: spring:
cloud: cloud:
config: config:
# uri: http://127.0.0.1:7002/support-config uri: http://127.0.0.1:7002/support-config
profile: ${liquidnet.cloudConfig.profile} # profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name # name: ${spring.application.name} #默认为spring.application.name
discovery: # discovery:
enabled: true # enabled: true
service-id: liquidnet-support-config # service-id: liquidnet-support-config
\ No newline at end of file \ No newline at end of file
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbHashIndexCreate {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
HashMap<String,String[]> colNameMap = new HashMap();
colNameMap.put("AdamUserInfoVo", new String[]{"uid","state"});
colNameMap.put("AdamRealInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamThirdPartInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamUserMemberVo",new String[]{"uid"});
colNameMap.put("AdamMemberVo",new String[]{"member_id"});
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
for(Map.Entry<String, String[]> entry: colNameMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
if(entry.getKey().equalsIgnoreCase(collectionName)){
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
String[] indexColArray = entry.getValue();
for(String indexName:indexColArray){
BasicDBObject index1 = new BasicDBObject();
index1.put(indexName,"hashed");
indexModels.add(new IndexModel(index1));
}
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
}
}
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbIndexCreate {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
HashMap<String,String[]> colNameMap = new HashMap();
colNameMap.put("AdamUserInfoVo", new String[]{"uid","state"});
colNameMap.put("AdamRealInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamThirdPartInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamUserMemberVo",new String[]{"uid"});
colNameMap.put("AdamMemberVo",new String[]{"member_id"});
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
for(Map.Entry<String, String[]> entry: colNameMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
if(entry.getKey().equalsIgnoreCase(collectionName)){
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
String[] indexColArray = entry.getValue();
for(String indexName:indexColArray){
BasicDBObject index1 = new BasicDBObject();
index1.put(indexName,1);
indexModels.add(new IndexModel(index1));
}
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
}
}
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbIndexCreateExample {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"test-mongo"};
// String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
BasicDBObject index1 = new BasicDBObject();
index1.put("name",1);
indexModels.add(new IndexModel(index1));
BasicDBObject index2 = new BasicDBObject();
index2.put("name",1);
index2.put("age",1);
indexModels.add(new IndexModel((index2)));
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
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