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

Commit 53811626 authored by 张国柄's avatar 张国柄

fix:用户中心.收货地址调整MDB存储及MQ

parent 2a8c6970
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.SensitizeUtil; import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.entity.AdamAddresses; import com.liquidnet.service.adam.entity.AdamAddresses;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -12,6 +13,8 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable { ...@@ -12,6 +13,8 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -3096308044365829079L; private static final long serialVersionUID = -3096308044365829079L;
@ApiModelProperty(position = 10, value = "收获地址ID[64]") @ApiModelProperty(position = 10, value = "收获地址ID[64]")
private String addressesId; private String addressesId;
@ApiModelProperty(position = 11, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "姓名[30]") @ApiModelProperty(position = 11, value = "姓名[30]")
private String name; private String name;
@ApiModelProperty(position = 12, value = "手机号[11]") @ApiModelProperty(position = 12, value = "手机号[11]")
...@@ -24,8 +27,13 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable { ...@@ -24,8 +27,13 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable {
private String county; private String county;
@ApiModelProperty(position = 16, value = "详细地址[100]") @ApiModelProperty(position = 16, value = "详细地址[100]")
private String address; private String address;
@ApiModelProperty(position = 18, value = "是否为默认:0-否,1-是") @ApiModelProperty(position = 17, value = "是否为默认:0-否,1-是")
private Boolean isDefault; private Boolean isDefault;
@ApiModelProperty(position = 18, value = "状态:0-INIT,1-NORMAL,2-INVALID")
private Integer state;
private String createdAt;
private String updatedAt;
private String deletedAt;
private static final AdamAddressesVo obj = new AdamAddressesVo(); private static final AdamAddressesVo obj = new AdamAddressesVo();
...@@ -41,6 +49,7 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable { ...@@ -41,6 +49,7 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable {
public AdamAddressesVo copy(AdamAddresses source) { public AdamAddressesVo copy(AdamAddresses source) {
if (null == source) return this; if (null == source) return this;
this.setAddressesId(source.getAddressesId()); this.setAddressesId(source.getAddressesId());
this.setUid(source.getUid());
this.setName(source.getName()); this.setName(source.getName());
this.setPhone(SensitizeUtil.custom(source.getPhone(), 3, 4)); this.setPhone(SensitizeUtil.custom(source.getPhone(), 3, 4));
this.setProvince(source.getProvince()); this.setProvince(source.getProvince());
...@@ -48,6 +57,10 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable { ...@@ -48,6 +57,10 @@ public class AdamAddressesVo implements java.io.Serializable, Cloneable {
this.setCounty(source.getCounty()); this.setCounty(source.getCounty());
this.setAddress(source.getAddress()); this.setAddress(source.getAddress());
this.setIsDefault(source.getIsDefault()); this.setIsDefault(source.getIsDefault());
this.setState(source.getState());
this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmssTrim.format(source.getCreatedAt()));
this.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmssTrim.format(source.getUpdatedAt()));
this.setDeletedAt(DateUtil.Formatter.yyyyMMddHHmmssTrim.format(source.getDeletedAt()));
return this; return this;
} }
} }
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.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.entity.AdamAddresses;
import java.util.List;
/** /**
* <p> * <p>
...@@ -14,17 +11,13 @@ import java.util.List; ...@@ -14,17 +11,13 @@ import java.util.List;
* @author liquidnet * @author liquidnet
* @since 2021-05-11 * @since 2021-05-11
*/ */
public interface IAdamAddressesService extends IService<AdamAddresses> { public interface IAdamAddressesService {
void add(AdamAddresses adamAddresses);
// List<AdamAddresses> queryByUid(String uid);
// AdamAddresses query(String uid, String addressesId); String add(AdamAddressesParam parameter);
void def(String uid, String addressesId); void def(String uid, String addressesId);
void edit(AdamAddresses info); void edit(AdamAddressesParam parameter);
void remove(String uid, String addressesId); void remove(String uid, String addressesId);
......
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.entity.AdamAddresses;
import com.liquidnet.service.adam.entity.AdamEnters; import com.liquidnet.service.adam.entity.AdamEnters;
import java.util.List; import java.util.List;
...@@ -47,11 +46,11 @@ public interface IAdamRdmService { ...@@ -47,11 +46,11 @@ public interface IAdamRdmService {
void delEntersByUid(String uid); void delEntersByUid(String uid);
boolean setAddressesByUid(String uid, List<AdamAddresses> list); boolean setAddressesByUid(String uid, List<AdamAddressesVo> list);
List<AdamAddresses> getAddressesByUid(String uid); List<AdamAddressesVo> getAddressesByUid(String uid);
AdamAddresses getAddressesByUidAddressesId(String uid, String addressesId); AdamAddressesVo getAddressesByUidAddressesId(String uid, String addressesId);
void delAddressesByUid(String uid); void delAddressesByUid(String uid);
......
...@@ -3,27 +3,22 @@ package com.liquidnet.service.adam.controller; ...@@ -3,27 +3,22 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil; 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.entity.AdamAddresses; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.service.IAdamAddressesService; import com.liquidnet.service.adam.service.IAdamAddressesService;
import com.liquidnet.service.adam.service.IAdamRdmService; import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -49,33 +44,15 @@ public class AdamAddressesController { ...@@ -49,33 +44,15 @@ public class AdamAddressesController {
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@ApiOperation(value = "添加收获地址") @ApiOperation(value = "添加收获地址")
@PostMapping("add") @PostMapping("add")
public ResponseDto<Object> add(@RequestBody @Valid AdamAddressesParam parameter) { public ResponseDto<Object> add(@Valid @RequestBody AdamAddressesParam parameter) {
String currentUid = CurrentUtil.getCurrentUid(); return ResponseDto.success(adamAddressesService.add(parameter));
AdamAddresses adamAddresses = new AdamAddresses();
BeanUtils.copyProperties(parameter, adamAddresses);
adamAddresses.setUid(currentUid);
adamAddresses.setAddressesId(String.valueOf(IDGenerator.nextSnowId()));
adamAddresses.setCreatedAt(LocalDateTime.now());
adamAddresses.setState(1);
adamAddressesService.add(adamAddresses);
return ResponseDto.success(adamAddresses.getAddressesId());
} }
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@ApiOperation(value = "收获地址列表") @ApiOperation(value = "收获地址列表")
@GetMapping("list") @GetMapping("list")
public ResponseDto<List<AdamAddressesVo>> list() { public ResponseDto<List<AdamAddressesVo>> list() {
String currentUid = CurrentUtil.getCurrentUid(); return ResponseDto.success(adamRdmService.getAddressesByUid(CurrentUtil.getCurrentUid()));
List<AdamAddressesVo> voList = new ArrayList<>();
adamRdmService.getAddressesByUid(currentUid).forEach(i -> {
voList.add(AdamAddressesVo.getNew().copy(i));
});
return ResponseDto.success(voList);
} }
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
...@@ -84,10 +61,10 @@ public class AdamAddressesController { ...@@ -84,10 +61,10 @@ public class AdamAddressesController {
public ResponseDto<Object> def(@NotBlank @PathVariable String addrId) { public ResponseDto<Object> def(@NotBlank @PathVariable String addrId) {
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
AdamAddresses addresses = adamRdmService.getAddressesByUidAddressesId(currentUid, addrId); AdamAddressesVo vo = adamRdmService.getAddressesByUidAddressesId(currentUid, addrId);
if (null == addresses) return ResponseDto.failure(ErrorMapping.get("10106")); if (null == vo) return ResponseDto.failure(ErrorMapping.get("10106"));
if (!addresses.getIsDefault()) adamAddressesService.def(currentUid, addrId); if (!vo.getIsDefault()) adamAddressesService.def(currentUid, addrId);
return ResponseDto.success(); return ResponseDto.success();
} }
...@@ -99,16 +76,7 @@ public class AdamAddressesController { ...@@ -99,16 +76,7 @@ public class AdamAddressesController {
if (StringUtils.isBlank(parameter.getAddressesId())) { if (StringUtils.isBlank(parameter.getAddressesId())) {
return ResponseDto.failure(ErrorMapping.get("10016")); return ResponseDto.failure(ErrorMapping.get("10016"));
} }
String currentUid = CurrentUtil.getCurrentUid(); adamAddressesService.edit(parameter);
AdamAddresses updateInfo = new AdamAddresses();
BeanUtils.copyProperties(parameter, updateInfo);
updateInfo.setUpdatedAt(LocalDateTime.now());
updateInfo.setUid(currentUid);
updateInfo.setState(1);
adamAddressesService.edit(updateInfo);
return ResponseDto.success(); return ResponseDto.success();
} }
...@@ -116,11 +84,10 @@ public class AdamAddressesController { ...@@ -116,11 +84,10 @@ public class AdamAddressesController {
@ApiOperation(value = "删除收获地址") @ApiOperation(value = "删除收获地址")
@PostMapping("del/{addrId}") @PostMapping("del/{addrId}")
public ResponseDto<Object> del(@NotBlank @PathVariable String addrId) { public ResponseDto<Object> del(@NotBlank @PathVariable String addrId) {
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
AdamAddresses addresses = adamRdmService.getAddressesByUidAddressesId(currentUid, addrId); AdamAddressesVo vo = adamRdmService.getAddressesByUidAddressesId(currentUid, addrId);
if (null == addresses) return ResponseDto.failure(ErrorMapping.get("10106")); if (null == vo) return ResponseDto.failure(ErrorMapping.get("10106"));
adamAddressesService.remove(currentUid, addrId); adamAddressesService.remove(currentUid, addrId);
return ResponseDto.success(); return ResponseDto.success();
...@@ -130,10 +97,9 @@ public class AdamAddressesController { ...@@ -130,10 +97,9 @@ public class AdamAddressesController {
@ApiOperation(value = "收货地址详情") @ApiOperation(value = "收货地址详情")
@PostMapping("query/{id}") @PostMapping("query/{id}")
public ResponseDto<AdamAddressesVo> query(@NotBlank @PathVariable(name = "id") String addrId, public ResponseDto<AdamAddressesVo> query(@NotBlank @PathVariable(name = "id") String addrId,
@NotBlank @RequestParam(required = false) String uid) { @RequestParam(required = false) String uid) {
AdamAddresses addresses = adamRdmService.getAddressesByUidAddressesId(StringUtils.isBlank(uid) ? CurrentUtil.getCurrentUid() : uid, addrId); AdamAddressesVo vo = adamRdmService.getAddressesByUidAddressesId(StringUtils.isBlank(uid) ? CurrentUtil.getCurrentUid() : uid, addrId);
return null == vo ? ResponseDto.failure(ErrorMapping.get("10106")) : ResponseDto.success(vo);
return null == addresses ? ResponseDto.failure(ErrorMapping.get(10105)) : ResponseDto.success(AdamAddressesVo.getNew().copy(addresses));
} }
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
......
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.BsonUtil; import com.liquidnet.commons.lang.util.*;
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 com.liquidnet.service.adam.mapper.AdamAddressesMapper;
import com.liquidnet.service.adam.service.IAdamAddressesService; import com.liquidnet.service.adam.service.IAdamAddressesService;
import com.liquidnet.service.adam.service.IAdamRdmService; import com.liquidnet.service.adam.service.IAdamRdmService;
import com.mongodb.BasicDBObject; import com.liquidnet.service.base.SqlMapping;
import com.mongodb.client.model.FindOneAndUpdateOptions; import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument; import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document; import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
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.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
...@@ -24,7 +23,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -24,7 +23,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.LinkedList;
import java.util.List;
/** /**
* <p> * <p>
...@@ -35,9 +35,7 @@ import java.util.*; ...@@ -35,9 +35,7 @@ import java.util.*;
* @since 2021-05-11 * @since 2021-05-11
*/ */
@Service @Service
public class AdamAddressesServiceImpl extends ServiceImpl<AdamAddressesMapper, AdamAddresses> implements IAdamAddressesService { public class AdamAddressesServiceImpl implements IAdamAddressesService {
@Autowired
AdamAddressesMapper adamAddressesMapper;
@Autowired @Autowired
MongoConverter mongoConverter; MongoConverter mongoConverter;
@Autowired @Autowired
...@@ -49,166 +47,158 @@ public class AdamAddressesServiceImpl extends ServiceImpl<AdamAddressesMapper, A ...@@ -49,166 +47,158 @@ public class AdamAddressesServiceImpl extends ServiceImpl<AdamAddressesMapper, A
@Override @Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamAddresses adamAddresses) { public String add(AdamAddressesParam parameter) {
List<AdamAddresses> addressesList = adamRdmService.getAddressesByUid(adamAddresses.getUid()); String currentUid = CurrentUtil.getCurrentUid();
adamAddresses.setIsDefault(CollectionUtils.isEmpty(addressesList));
mongoTemplate.insert(adamAddresses, AdamAddresses.class.getSimpleName()); List<AdamAddressesVo> vos = adamRdmService.getAddressesByUid(currentUid);
// TODO: 2021/5/14 LocalDateTime now = LocalDateTime.now();
List<Object> objectList = Arrays.asList(); String nowStr = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_addresses.add", objectList.toArray())); AdamAddressesVo vo = AdamAddressesVo.getNew();
BeanUtils.copyProperties(parameter, vo);
vo.setAddressesId(String.valueOf(IDGenerator.nextSnowId()));
vo.setUid(currentUid);
vo.setIsDefault(CollectionUtils.isEmpty(vos));
vo.setState(1);
vo.setCreatedAt(nowStr);
mongoTemplate.insert(vo, AdamAddressesVo.class.getSimpleName());
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("adam_addresses.add",
vo.getAddressesId(), vo.getUid(), vo.getName(), vo.getPhone(), vo.getProvince(), vo.getCity(), vo.getCounty(), vo.getAddress(), vo.getIsDefault(), vo.getState(), now
)
);
addressesList.add(adamAddresses); vos.add(vo);
adamRdmService.setAddressesByUid(adamAddresses.getUid(), addressesList); adamRdmService.setAddressesByUid(currentUid, vos);
return vo.getAddressesId();
} }
// @Override
// public List<AdamAddresses> queryByUid(String uid) {
// List<AdamAddresses> infoList = new ArrayList<>();
//
// Map<Object, Object> objectMap = redisUtil.hmget(AdamRedisConst.INFO_ADDRESSES.concat(uid));
//
// if (CollectionUtils.isEmpty(objectMap)) {
// infoList = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)), AdamAddresses.class, AdamAddresses.class.getSimpleName());
// } else {
// Collection<Object> values = objectMap.values();
// for (Object o : values) {
// infoList.add((AdamAddresses) o);
// }
// }
//
// return infoList;
// }
// @Override
// public AdamAddresses query(String uid, String addressesId) {
// AdamAddresses info = (AdamAddresses) redisUtil.hget(AdamRedisConst.INFO_ADDRESSES.concat(uid), addressesId);
//
// if (null == info) {
// info = mongoTemplate.findOne(
// Query.query(Criteria.where("entersId").is(addressesId).and("state").is(1).and("uid").is(uid)
// ), AdamAddresses.class, AdamAddresses.class.getSimpleName());
//
// if (null != info) redisUtil.hset(AdamRedisConst.INFO_ADDRESSES.concat(uid), addressesId, info);
// }
//
// return info;
// }
@Override @Override
public void def(String uid, String addressesId) { public void def(String uid, String addressesId) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
LinkedList<Object[]> linkedList = new LinkedList<>(); String nowStr = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
List<AdamAddresses> addressesList = adamRdmService.getAddressesByUid(uid);
LinkedList<Object[]> toMqObjs = new LinkedList<>();
List<AdamAddressesVo> addressesList = adamRdmService.getAddressesByUid(uid);
if (addressesList.size() > 1) {// 取消原默认 if (addressesList.size() > 1) {// 取消原默认
AdamAddresses unDeaultAddresses = new AdamAddresses(); AdamAddressesVo unDeaultVo = AdamAddressesVo.getNew();
unDeaultAddresses.setIsDefault(false); unDeaultVo.setIsDefault(false);
unDeaultAddresses.setUpdatedAt(now); unDeaultVo.setUpdatedAt(nowStr);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(unDeaultAddresses)); Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Document doc = mongoTemplate.getCollection(AdamAddresses.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("isDefault").is(true)).getQueryObject(), new Document("$set", Document.parse(JsonUtils.toJson(unDeaultVo))),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
if (null != doc) { if (null != doc) {
AdamAddresses unDefaultAfterAddresses = BsonUtil.toBean(doc, AdamAddresses.class); AdamAddressesVo unDefaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class);
List<Object> paramList = new ArrayList<>(); toMqObjs.add(new Object[]{unDeaultVo.getIsDefault(), now, unDefaultVoAfter.getAddressesId()});
paramList.add(unDeaultAddresses.getIsDefault());
paramList.add(unDeaultAddresses.getUpdatedAt());
paramList.add(unDefaultAfterAddresses.getAddressesId());
linkedList.add(paramList.toArray());
addressesList.removeIf(r -> r.getAddressesId().equals(unDefaultAfterAddresses.getAddressesId())); addressesList.removeIf(r -> r.getAddressesId().equals(unDefaultVoAfter.getAddressesId()));
addressesList.add(unDefaultAfterAddresses); addressesList.add(unDefaultVoAfter);
} }
} }
{// 设置新默认 {// 设置新默认
AdamAddresses defaultAddresses = new AdamAddresses(); AdamAddressesVo defaultVo = AdamAddressesVo.getNew();
defaultAddresses.setIsDefault(true); defaultVo.setIsDefault(true);
defaultAddresses.setUpdatedAt(now); defaultVo.setUpdatedAt(nowStr);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(defaultAddresses)); Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Document doc = mongoTemplate.getCollection(AdamAddresses.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(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) new Document("$set", Document.parse(JsonUtils.toJson(defaultVo))),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
AdamAddresses addresses = BsonUtil.toBean(doc, AdamAddresses.class); if (null != doc) {
AdamAddressesVo defaultVoAfter = BsonUtil.toBean(doc, AdamAddressesVo.class);
List<Object> paramList = new ArrayList<>();
paramList.add(defaultAddresses.getIsDefault());
paramList.add(defaultAddresses.getUpdatedAt());
paramList.add(addressesId);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_enters.update.is_default", paramList.toArray()));
linkedList.add(paramList.toArray());
addressesList.removeIf(r -> r.getAddressesId().equals(addresses.getAddressesId()));
addressesList.add(addresses);
}
adamRdmService.setAddressesByUid(uid, addressesList);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, toMqObjs.add(new Object[]{defaultVo.getIsDefault(), now, addressesId});
// SqlMapping.get("adam_addresses.update.is_default", linkedList));
addressesList.removeIf(r -> r.getAddressesId().equals(defaultVoAfter.getAddressesId()));
addressesList.add(defaultVoAfter);
}
}
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("adam_addresses.update.is_default", toMqObjs));
adamRdmService.setAddressesByUid(uid, addressesList);
} }
@Override @Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamAddresses info) { public void edit(AdamAddressesParam parameter) {
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(info)); LocalDateTime now = LocalDateTime.now();
Document doc = mongoTemplate.getCollection(AdamAddresses.class.getSimpleName()).findOneAndUpdate( String nowStr = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
Query.query(Criteria.where("addressesId").is(info.getAddressesId())).getQueryObject(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) AdamAddressesVo updateVo = AdamAddressesVo.getNew();
BeanUtils.copyProperties(parameter, updateVo);
updateVo.setUpdatedAt(nowStr);
Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("addressesId").is(parameter.getAddressesId())).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(updateVo))),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
if (null != doc) {
updateVo = BsonUtil.toBean(doc, AdamAddressesVo.class);
String currentUid = CurrentUtil.getCurrentUid();
List<AdamAddressesVo> list = adamRdmService.getAddressesByUid(currentUid);
// TODO: 2021/5/14 rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
List<Object> paramList = Arrays.asList(); SqlMapping.get("adam_addresses.edit",
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, updateVo.getName(), updateVo.getPhone(), updateVo.getProvince(), updateVo.getCity(), updateVo.getCounty(), updateVo.getAddress(), now, updateVo.getAddressesId()
// SqlMapping.get("adam_addresses.edit", paramList.toArray())); )
);
List<AdamAddresses> list = adamRdmService.getAddressesByUid(info.getUid()); list.removeIf(r -> r.getAddressesId().equals(parameter.getAddressesId()));
list.removeIf(r -> r.getAddressesId().equals(info.getAddressesId())); list.add(updateVo);
list.add(info); adamRdmService.setAddressesByUid(currentUid, list);
adamRdmService.setAddressesByUid(info.getUid(), list); }
} }
@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) {
AdamAddresses addresses = new AdamAddresses(); LocalDateTime now = LocalDateTime.now();
addresses.setUpdatedAt(LocalDateTime.now()); String nowStr = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
addresses.setDeletedAt(addresses.getUpdatedAt());
addresses.setState(2); AdamAddressesVo removeVo = AdamAddressesVo.getNew();
removeVo.setState(2);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(addresses)); removeVo.setIsDefault(false);
UpdateResult updateResult = mongoTemplate.getCollection(AdamAddresses.class.getSimpleName()) removeVo.setUpdatedAt(nowStr);
.updateOne(Query.query(Criteria.where("addressesId").is(addressesId)).getQueryObject(), object); removeVo.setDeletedAt(nowStr);
Document doc = mongoTemplate.getCollection(AdamAddressesVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("addressesId").is(addressesId)).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(removeVo))),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
if (null != doc) {
List<AdamAddressesVo> list = adamRdmService.getAddressesByUid(uid);
List<Object> paramList = Arrays.asList(addresses.getUpdatedAt(), addresses.getDeletedAt(), addressesId); rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, SqlMapping.get("adam_addresses.remove", now, now, addressesId)
// SqlMapping.get("adam_addresses.remove", paramList.toArray())); );
List<AdamAddresses> list = adamRdmService.getAddressesByUid(uid);
list.removeIf(r -> r.getAddressesId().equals(addressesId)); list.removeIf(r -> r.getAddressesId().equals(addressesId));
adamRdmService.setAddressesByUid(uid, list); adamRdmService.setAddressesByUid(uid, list);
} }
}
@Override @Override
public AdamAddressesVo queryDefault(String uid) { public AdamAddressesVo queryDefault(String uid) {
List<AdamAddresses> addressesList = adamRdmService.getAddressesByUid(uid); List<AdamAddressesVo> vos = adamRdmService.getAddressesByUid(uid);
if (!CollectionUtils.isEmpty(vos)) {
if (!CollectionUtils.isEmpty(addressesList)) { AdamAddressesVo defaultAddr = null;
AdamAddresses defaultAddr = null; for (AdamAddressesVo vo : vos) {
for (AdamAddresses addresses : addressesList) { if (vo.getIsDefault()) {
if (addresses.getIsDefault()) { return vo;
return AdamAddressesVo.getNew().copy(addresses);
} }
defaultAddr = null == defaultAddr ? addresses : defaultAddr = null == defaultAddr ? vo :
addresses.getCreatedAt().isAfter(defaultAddr.getCreatedAt()) ? addresses : defaultAddr; vo.getCreatedAt().compareTo(defaultAddr.getCreatedAt()) > 0 ? vo : defaultAddr;
} }
return AdamAddressesVo.getNew().copy(defaultAddr); return defaultAddr;
} }
return null; return null;
} }
......
...@@ -3,7 +3,6 @@ package com.liquidnet.service.adam.service.impl; ...@@ -3,7 +3,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.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.entity.AdamAddresses;
import com.liquidnet.service.adam.entity.AdamEnters; import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.adam.service.IAdamRdmService; import com.liquidnet.service.adam.service.IAdamRdmService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -167,17 +166,17 @@ public class AdamRdmServiceImpl implements IAdamRdmService { ...@@ -167,17 +166,17 @@ public class AdamRdmServiceImpl implements IAdamRdmService {
} }
@Override @Override
public boolean setAddressesByUid(String uid, List<AdamAddresses> list) { public boolean setAddressesByUid(String uid, List<AdamAddressesVo> list) {
return redisUtil.set(AdamRedisConst.INFO_ADDRESSES.concat(uid), list); return redisUtil.set(AdamRedisConst.INFO_ADDRESSES.concat(uid), list);
} }
@Override @Override
public List<AdamAddresses> getAddressesByUid(String uid) { public List<AdamAddressesVo> getAddressesByUid(String uid) {
String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid); String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid);
List<AdamAddresses> list = (List<AdamAddresses>) redisUtil.get(rk); List<AdamAddressesVo> list = (List<AdamAddressesVo>) redisUtil.get(rk);
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
list = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)), list = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamAddresses.class, AdamAddresses.class.getSimpleName()); AdamAddressesVo.class, AdamAddressesVo.class.getSimpleName());
if (!CollectionUtils.isEmpty(list)) redisUtil.set(rk, list); if (!CollectionUtils.isEmpty(list)) redisUtil.set(rk, list);
} }
...@@ -185,12 +184,8 @@ public class AdamRdmServiceImpl implements IAdamRdmService { ...@@ -185,12 +184,8 @@ public class AdamRdmServiceImpl implements IAdamRdmService {
} }
@Override @Override
public AdamAddresses getAddressesByUidAddressesId(String uid, String addressesId) { public AdamAddressesVo getAddressesByUidAddressesId(String uid, String addressesId) {
List<AdamAddresses> list = this.getAddressesByUid(uid); return this.getAddressesByUid(uid).stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
if (!CollectionUtils.isEmpty(list))
for (AdamAddresses r : list)
if (addressesId.equals(r.getAddressesId())) return r;
return null;
} }
@Override @Override
......
...@@ -13,10 +13,10 @@ adam_third_party.add=INSERT INTO adam_third_party (`uid`, open_id, avatar, nickn ...@@ -13,10 +13,10 @@ adam_third_party.add=INSERT INTO adam_third_party (`uid`, open_id, avatar, nickn
adam_third_party.unbind=UPDATE adam_third_party SET `state`=2, updated_at=? WHERE `uid`=? AND platform=? AND `state`=1 adam_third_party.unbind=UPDATE adam_third_party SET `state`=2, updated_at=? WHERE `uid`=? AND platform=? AND `state`=1
# ---------------------------------------------------- # ----------------------------------------------------
adam_addresses.add= adam_addresses.add=INSERT INTO adam_addresses (addresses_id, `uid`, `name`, phone, province, city, county, address, is_default, `state`, created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?)
adam_addresses.edit= adam_addresses.edit=UPDATE adam_addresses SET `name`=?, phone=?, province=?, city=?, county=?, address=?, updated_at=? WHERE addresses_id=?
adam_addresses.update.is_default=UPDATE adam_addresses set is_default=?, updated_at=? where addresses_id=? adam_addresses.update.is_default=UPDATE adam_addresses SET is_default=?, updated_at=? where addresses_id=?
adam_addresses.remove=UPDATE adam_addresses SET `state`=2, updated_at=?, deleted_at=? where addresses_id=? adam_addresses.remove=UPDATE adam_addresses SET is_default=0, `state`=2, updated_at=?, deleted_at=? where addresses_id=?
# ---------------------------------------------------- # ----------------------------------------------------
adam_enters.add=INSERT INTO adam_enters (enters_id, `uid`, `type`,`name`, mobile, id_card, is_default, `state`, created_at, updated_at, deleted_at, `comment`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) adam_enters.add=INSERT INTO adam_enters (enters_id, `uid`, `type`,`name`, mobile, id_card, is_default, `state`, created_at, updated_at, deleted_at, `comment`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
......
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