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

Commit 8fed1512 authored by 胡佳晨's avatar 胡佳晨

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

parents e5392a82 ff2fc1f5
......@@ -15,5 +15,9 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -3,17 +3,11 @@ package com.liquidnet.common.cache.redis.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
......@@ -25,23 +19,27 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
public class RedisCacheConfig{
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(factory);
Jackson2JsonRedisSerializer j2jrs = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
om.registerModule(new JavaTimeModule());
om.activateDefaultTyping(om.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
j2jrs.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
redisTemplate.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setValueSerializer(j2jrs);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
redisTemplate.setHashValueSerializer(j2jrs);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
......@@ -12,8 +12,8 @@ liquidnet:
rabbitmq:
host: 172.16.2.15
port: 5672
username: bingbing
password: 123456
username: admin
password: admin
knife4j:
disable: false
redis:
......
......@@ -8,14 +8,16 @@ import lombok.Data;
@Data
public class AdamEntersParam implements java.io.Serializable {
private static final long serialVersionUID = 5940725094369061032L;
@ApiModelProperty(position = 10, required = true, value = "入场人名称[50]", example = "Swagger")
@ApiModelProperty(position = 10, required = false, value = "入场人ID[50]")
private String entersId;
@ApiModelProperty(position = 11, required = true, value = "入场人名称[50]", example = "Swagger")
private String name;
@ApiModelProperty(position = 11, required = true, value = "入场人手机号[11]", example = "13100000000")
@ApiModelProperty(position = 12, required = true, value = "入场人手机号[11]", example = "13100000000")
private String mobile;
@ApiModelProperty(position = 12, required = true, value = "证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证", allowableValues = "1,2,3,4,5")
@ApiModelProperty(position = 13, required = true, value = "证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证", allowableValues = "1,2,3,4,5")
private Integer type;
@ApiModelProperty(position = 13, required = true, value = "入场人证件号[11]", example = "110101110001010111")
@ApiModelProperty(position = 14, required = true, value = "入场人证件号[11]", example = "110101110001010111")
private String idCard;
@ApiModelProperty(position = 14, required = true, value = "是否是默认入场人:0-否,1-是", allowableValues = "0,1")
@ApiModelProperty(position = 15, required = true, value = "是否是默认入场人:0-否,1-是", allowableValues = "0,1")
private Boolean isDefault;
}
package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "AdamEntersParam", description = "添加入场人参数")
@Data
public class AdamEntersResult implements java.io.Serializable {
private static final long serialVersionUID = 5940725094369061032L;
@ApiModelProperty(position = 10, required = true, value = "入场人名称[50]", example = "Swagger")
private String name;
@ApiModelProperty(position = 11, required = true, value = "入场人手机号[11]", example = "13100000000")
private String mobile;
@ApiModelProperty(position = 12, required = true, value = "证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证", allowableValues = "1,2,3,4,5")
private Integer type;
@ApiModelProperty(position = 13, required = true, value = "入场人证件号[11]", example = "110101110001010111")
private String idCard;
@ApiModelProperty(position = 14, required = true, value = "是否是默认入场人:0-否,1-是", allowableValues = "0,1")
private Boolean isDefault;
}
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.service.adam.entity.AdamEnters;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "AdamEntersVo", description = "入场人")
@Data
public class AdamEntersVo implements java.io.Serializable {
public class AdamEntersVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
@ApiModelProperty(position = 10, value = "入场人名称[50]")
private String name;
......@@ -18,4 +19,24 @@ public class AdamEntersVo implements java.io.Serializable {
private String idCard;
@ApiModelProperty(position = 14, value = "是否是默认入场人:0-否,1-是")
private Boolean isDefault;
private static final AdamEntersVo obj = new AdamEntersVo();
public static AdamEntersVo getNew() {
try {
return (AdamEntersVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamEntersVo();
}
public AdamEntersVo copy(AdamEnters source) {
this.setName(source.getName());
this.setIdCard(source.getIdCard());
this.setMobile(source.getMobile());
this.setType(source.getType());
this.setIsDefault(source.getIsDefault());
return this;
}
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
import java.util.List;
......@@ -15,9 +14,11 @@ import java.util.List;
* @since 2021-04-28
*/
public interface IAdamEntersService extends IService<AdamEnters> {
List<AdamEntersVo> list(String uid);
List<AdamEnters> list(String uid);
boolean add(AdamEnters info);
void add(AdamEnters info);
AdamEnters query(String entersId);
AdamEnters query(String uid, String entersId);
void edit(AdamEnters info);
}
......@@ -125,6 +125,7 @@ create table adam_addresses
mid int unsigned auto_increment not null primary key,
# `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id关联',
# `string_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '用户StringID',
addresses_id varchar(64) not null,
uid varchar(64) not null,
name varchar(255) not null comment '姓名',
phone varchar(255) not null comment '手机号',
......@@ -135,8 +136,11 @@ create table adam_addresses
is_default tinyint not null default 0 comment '0-非默认,1-默认',
created_at datetime not null,
updated_at datetime,
deleted_at datetime
deleted_at datetime,
comment text
) engine = InnoDB comment '收货地址';
create unique index uidx_adam_addresses_id on adam_addresses (addresses_id);
create index idx_adam_addresses_uid on adam_addresses (uid);
-- >>------------------------------------------------------------------------------------
drop table if exists adam_feedback;
......
......@@ -29,36 +29,17 @@ import java.net.UnknownHostException;
import java.util.Arrays;
@Slf4j
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
@EnableEurekaClient
@EnableFeignClients
@EnableCircuitBreaker
@EnableScheduling
@EnableAsync
@MapperScan(basePackages = "com.liquidnet.service.adam.mapper")
@EnableTransactionManagement
@EnableConfigurationProperties
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
public class ServiceAdamApplication implements TransactionManagementConfigurer, CommandLineRunner {
@Autowired
private DataSource dataSource;
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
public class ServiceAdamApplication implements CommandLineRunner {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(ServiceAdamApplication.class, args);
}
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
log.info("配置事务管理###########################");
return new DataSourceTransactionManager(dataSource);
}
@Override
public void run(String... strings) throws Exception {
try {
......
package com.liquidnet.service.adam.constant;
/**
* @author Li Chen
* @date 2020-11-04 14:02
*/
public class AdamRedisConst {
public static final String ADAM = "adam";
public static final String INFO_ENTERS = ADAM.concat(":list:enters:");
// public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
//
// public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:";
//
// public static final String USER_EMAIL_UPDATE_KEY = ADAM + ":user:email:update:";
//
// public static final String USER_PASSWORD_FORGET_KEY = ADAM + ":user:password:forget:";
//
// public static final String USER_PASSWORD_ERROR_KEY = ADAM + ":user:password:error:";
//
// public static final String CONVERSION_SEND_CONFIRM_KEY = ADAM + ":conversion:send_confirm:";
//
// public static final String WALLET_LOCK = ADAM + "_wallet_lock_";
//
// public static final String FUNDING_LOCK = ADAM + "_funding_lock_";
//
// public static final String PAYOUT_LOCK = ADAM + "_payout_lock_";
//
// public static final String USER_LOGIN_TIME_OUT_KEY = ADAM + ":user:login:timeout:";
//
// public static final String USER_LOGIN_TOKEN_ITEM_EMAIL_CHANGE = "emailChangeFlag";
//
// public static final String USER_LOGIN_KEY = ADAM + ":user:login:";
//
// public static final String USER_LOGIN_ITEM_TOKEN = "token";
//
// public static final String USER_LOGIN_ITEM_PERMIT = "permit";
}
......@@ -4,23 +4,21 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamEntersParam;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.adam.service.IAdamEntersService;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
......@@ -55,39 +53,67 @@ public class AdamEntersController {
@ApiOperationSupport(order = 1)
@ApiOperation(value = "入场人列表")
@PostMapping("list")
public ResponseDto<AdamEntersVo> list() {
// TODO: 2021/4/29 获取登录用户ID
public ResponseDto<List<AdamEntersVo>> list() {
// TODO: 2021/4/29 获取登录UID
String uid = "1";
List<AdamEntersVo> voList = new ArrayList<>();
adamEntersService.list(uid).forEach(i -> {
voList.add(AdamEntersVo.getNew().copy(i));
});
return null;
return ResponseDto.success(voList);
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "添加入场人")
@PostMapping("add")
public ResponseDto<Object> add(@RequestBody AdamEntersParam parameter) {
// TODO: 2021/4/28 数据校验,身份认证
// TODO: 2021/4/28 数据校验、身份认证、获取登录UID
String uid = "1";
AdamEnters addInfo = new AdamEnters();
BeanUtils.copyProperties(parameter, addInfo);
addInfo.setUid(uid);
addInfo.setEntersId(String.valueOf(IDGenerator.nextSnowId()));
addInfo.setCreatedAt(LocalDateTime.now());
addInfo.setState(1);
adamEntersService.add(addInfo);
return adamEntersService.add(addInfo) ? ResponseDto.success() : ResponseDto.failure();
return ResponseDto.success();
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "入场人详情")
@PostMapping("query/{id}")
public ResponseDto<Object> query(@PathVariable(name = "id") String entersId) {
// TODO: 2021/4/28 校验
public ResponseDto<AdamEntersVo> query(@PathVariable(name = "id") String entersId) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
AdamEnters info = adamEntersService.query(uid, entersId);
return ResponseDto.success(adamEntersService.query(entersId));
return ResponseDto.success(AdamEntersVo.getNew().copy(info));
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "入场人编辑")
@PostMapping("edit")
public ResponseDto<Object> edit(@RequestBody AdamEntersParam parameter) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
AdamEnters updateInfo = new AdamEnters();
BeanUtils.copyProperties(parameter, updateInfo);
updateInfo.setUpdatedAt(LocalDateTime.now());
updateInfo.setUid(uid);
updateInfo.setState(1);
adamEntersService.edit(updateInfo);
return ResponseDto.success();
}
}
package com.liquidnet.service.adam.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.adam.mapper.AdamEntersMapper;
import com.liquidnet.service.adam.service.IAdamEntersService;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
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.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -26,46 +30,68 @@ import java.util.List;
* @author liquidnet
* @since 2021-04-28
*/
@Slf4j
@Service
public class AdamEntersServiceImpl extends ServiceImpl<AdamEntersMapper, AdamEnters> implements IAdamEntersService {
@Autowired
AdamEntersMapper adamEntersMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public List<AdamEntersVo> list(String uid) {
List<AdamEntersVo> voList = null;
public List<AdamEnters> list(String uid) {
List<AdamEnters> infoList = new ArrayList<>();
voList = (List<AdamEntersVo>) redisUtil.hget(AdamRedisConst.INFO_ENTERS, uid);
Map<Object, Object> map = redisUtil.hmget(AdamRedisConst.INFO_ENTERS.concat(uid));
// mongoTemplate.find(Query.query(Criteria.where()))
if (CollectionUtils.isEmpty(map)) {
infoList = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid)), AdamEnters.class, AdamEnters.class.getSimpleName());
} else {
for (Object o : map.values()) {
infoList.add((AdamEnters) o);
}
}
return voList;
return infoList;
}
@Override
public boolean add(AdamEnters info) {
// TODO: 2021/4/28 同步REDIS
Collection<AdamEnters> insertRst = mongoTemplate.insert(Collections.singletonList(info), AdamEnters.class.getSimpleName());
public void add(AdamEnters info) {
mongoTemplate.insert(Collections.singletonList(info), AdamEnters.class.getSimpleName());
// TODO: 2021/4/28 放入MQ
return true;
// TODO: 2021/4/28 同步REDIS
redisUtil.hset(AdamRedisConst.INFO_ENTERS.concat(info.getUid()), info.getEntersId(), info);
}
@Override
public AdamEnters query(String entersId) {
public AdamEnters query(String uid, String entersId) {
AdamEnters info = null;
// TODO: 2021/4/28 REDIS:QUERY
info = (AdamEnters) redisUtil.hget(AdamRedisConst.INFO_ENTERS.concat(uid), entersId);
if (null == info) {
info = mongoTemplate.findOne(Query.query(Criteria.where("entersId").is(entersId)), AdamEnters.class, AdamEnters.class.getSimpleName());
}
return info;
}
@Override
public void edit(AdamEnters info) {
BasicDBObject object = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(info)));
mongoTemplate.getCollection(AdamEnters.class.getSimpleName())
.updateOne(Query.query(Criteria.where("entersId").is(info.getEntersId())).getQueryObject(), object);
// TODO: 2021/4/28 放入MQ
// TODO: 2021/4/28 同步REDIS
redisUtil.hset(AdamRedisConst.INFO_ENTERS.concat(info.getUid()), info.getEntersId(), info);
}
}
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