Commit 25909857 authored by 王亮's avatar 王亮

Merge branch 'feature-temp-20230607' into 'master'

remove unused code.

See merge request !111
parents ecd19e8a dc438b0c
......@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.controller.internal.querylog;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.forbidden.AccessForbiddenValidator;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserQueryLog;
import cn.quantgroup.xyqb.exception.UserQueryLogException;
......@@ -10,7 +9,6 @@ import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.PageModel;
import cn.quantgroup.xyqb.model.UserQueryInfo;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserQueryLogService;
import cn.quantgroup.xyqb.util.IdcardValidator;
......@@ -61,8 +59,7 @@ public class UserQueryLogController {
private IUserQueryLogService userQueryLogService;
@Autowired
private IUserDetailService userDetailService;
@Autowired
private IAddressService addressService;
@Value("${payapi.http}")
private String payCenterUrl;
......@@ -368,16 +365,13 @@ public class UserQueryLogController {
phonesCards = getBankCardsByPhoneNos(phones);
}
}
List<Address> addresslist = new ArrayList<>();
if (columns.contains(Constants.ADDRESS)) {
List<Long> uidss = new ArrayList<>();
//加地址信息
for (UserDetail ud : userDetails) {
uidss.add(ud.getUserId());
}
if (uidss != null && uidss.size() > 0) {
addresslist = addressService.findByUserIds(uidss);
}
}
List<UserQueryInfo> userQueryInfos = new ArrayList<>();
for (UserDetail ud : userDetails) {
......@@ -394,10 +388,6 @@ public class UserQueryLogController {
if (columns.contains(Constants.USER_ID)) {
uqi.setUserId(ud.getUserId());
}
if (columns.contains(Constants.ADDRESS)) {
Optional<Address> oad = addresslist.stream().filter(addr -> Objects.equals(addr.getUserId(), ud.getUserId())).findFirst();
oad.ifPresent(address -> uqi.setAddress(address.toString()));
}
if (columns.contains(Constants.BANK_CARD) && phonesCards != null) {
uqi.setBankCards(phonesCards.get(ud.getPhoneNo()));
}
......
......@@ -9,16 +9,12 @@ import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.forbidden.AccessForbiddenValidator;
import cn.quantgroup.xyqb.aspect.limit.PasswordFreeAccessValidator;
import cn.quantgroup.xyqb.aspect.lock.RedisLock;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserAttached;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.event.UserExtInfoSaveEvent;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserExtInfoService;
import cn.quantgroup.xyqb.service.user.IUserService;
......@@ -56,10 +52,7 @@ public class UserCenterController {
private IUserDetailService userDetailService;
@Autowired
private IUserExtInfoService userExtInfoService;
@Autowired
private IContactService contactService;
@Autowired
private IAddressService addressService;
@Autowired
private IUserService userService;
@Autowired
......@@ -239,147 +232,17 @@ public class UserCenterController {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
List<Contact> contacts = contactService.findByUserIdAndBizType(userId, BizType.CASH, true);
Map<String, Object> result = new HashMap<>();
if (null != userExtInfo) {
result.put("contacts", null != contacts && contacts.size() > 0);
result.put("occupation", userExtInfo.getOccupationEnum() == null ? "" : userExtInfo.getOccupationEnum().ordinal());
result.put("education", userExtInfo.getEducationEnum() == null ? "" : userExtInfo.getEducationEnum().ordinal());
result.put("income", userExtInfo.getIncomeRangeEnum() == null ? "" : userExtInfo.getIncomeRangeEnum().ordinal());
result.put("marryStatus", userExtInfo.getMarryStatus() == null ? "" : userExtInfo.getMarryStatus().ordinal());
}
Address address = addressService.findByUserId(userId);
if (null != address) {
//用户住址信息,返回二级信息:
result.put("address", address.getAddress());
result.put("provinceCode", address.getProvinceCode());
result.put("province", address.getProvince());
result.put("cityCode", address.getCityCode());
result.put("city", address.getCity());
result.put("districtCode", address.getDistrictCode());
result.put("district", address.getDistrict());
}
return JsonResult.buildSuccessResult(null, result);
}
/**
* 保存用户联系人,
*
* @param phoneNo 用户手机号
* @param contactJson 要保存的联系人json串
* @return
*/
@AccessForbiddenValidator
@RequestMapping("/contacts/save")
public JsonResult saveUserContact(String phoneNo, String contactJson) {
if (StringUtils.isEmpty(phoneNo)) {
log.error("保存联系人,参数错误. phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数有误.", null);
}
Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) {
log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
if (StringUtils.isEmpty(contactJson)) {
log.error("保存联系人,联系人参数为空.contactJson:{}", contactJson);
return JsonResult.buildErrorStateResult(null, null);
}
List<Contact> contacts = JSONObject.parseObject(contactJson, new TypeReference<List<Contact>>() {
});
if (CollectionUtils.isEmpty(contacts)) {
log.info("联系人不能空");
return JsonResult.buildErrorStateResult(null, null);
}
for (Contact contact : contacts) {
if (!contact.valid()) {
log.info("用户手机号或姓名错误, phoneNo:{},name:{}", contact.getPhoneNo(), contact.getName());
return JsonResult.buildErrorStateResult(null, null);
}
}
List<Contact> result = contactService.save(userId, contacts);
return JsonResult.buildSuccessResult(null, result);
}
/**
* 保存用户住址信息
*
* @param province
* @param provinceCode
* @param city
* @param cityCode
* @param address
* @return
*/
@RequestMapping("/address/save")
public JsonResult saveUserAddress(String phoneNo, String province, Long provinceCode, String city, Long cityCode, String address,
Long districtCode, String district) {
log.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{},district:{}, address:{}", phoneNo, province, provinceCode, city, cityCode, district, address);
if (StringUtils.isEmpty(phoneNo) || provinceCode == null || cityCode == null || StringUtils.isBlank(address)) {
return JsonResult.buildErrorStateResult("参数错误", null);
}
Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) {
log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
//查询用户是否有保存地址信息
Address addressInfo = addressService.findByUserId(userId);
if (null == addressInfo) {
addressInfo = new Address();
}
addressInfo.setUserId(userId);
addressInfo.setProvince(province);
addressInfo.setProvinceCode(provinceCode);
addressInfo.setCity(city);
addressInfo.setCityCode(cityCode);
addressInfo.setDistrictCode(districtCode);
addressInfo.setDistrict(district);
addressInfo.setAddress(address);
addressService.save(addressInfo);
return JsonResult.buildSuccessResult(null, addressInfo);
}
/**
* 查询用户住址信息
*
* @param phoneNo
* @return
*/
@RequestMapping("/searchAddress/phoneNo")
public JsonResult searchUserAddress(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null);
}
Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) {
log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
Address address = addressService.findByUserId(userId);
return JsonResult.buildSuccessResult(null, address);
}
/**
* 查询用户联系人
*
* @param phoneNo
* @return
*/
@AccessForbiddenValidator
@RequestMapping("/searchContacts/phoneNo")
public JsonResult searchUserContacts(String phoneNo) {
if (StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null);
}
Long userId = queryUserId(phoneNo);
if (null == userId || userId == 0L) {
log.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
List<Contact> contacts = contactService.findByUserIdAndBizType(userId, BizType.CASH, true);
return JsonResult.buildSuccessResult(null, contacts);
}
/**
* 保存用户经济信息
......
......@@ -3,11 +3,9 @@ package cn.quantgroup.xyqb.controller.middleoffice.contact;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.xyqb.controller.middleoffice.contact.dto.ContactSaveDto;
import cn.quantgroup.xyqb.controller.middleoffice.contact.dto.ContactUpdateDto;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.ValidationUtil;
import java.util.ArrayList;
......@@ -29,84 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/middle_office/contacts")
public class ContactController {
@Resource
private IContactService contactService;
@Resource
private IUserService userService;
/**
* 获取联系人
*
* @param userId 用户 ID
* @param bizType 业务类型
* @return
*/
@GetMapping
public JsonResult get(Long userId, BizType bizType) {
List<Contact> contactList = contactService.findByUserIdAndBizType(userId, bizType, true);
return JsonResult.buildSuccessResult("", contactList);
}
/**
* 更新联系人信息
*
* @param contactUpdateDtoList
* @return
*/
@PatchMapping
public JsonResult update(@RequestBody List<ContactUpdateDto> contactUpdateDtoList) {
contactUpdateDtoList = contactUpdateDtoList.stream()
.filter(contactUpdateDto -> (
ValidationUtil.validatePhoneNo(contactUpdateDto.getPhoneNo())
&& ValidationUtil.validateChinese(contactUpdateDto.getName())))
.collect(Collectors.toList());
if (contactUpdateDtoList.isEmpty()) {
return JsonResult.buildErrorStateResult("数据格式错误", null);
}
for (ContactUpdateDto contact : contactUpdateDtoList) {
contactService.update(contact.getName(), contact.getPhoneNo(), contact.getRelation(), contact.getId());
}
return JsonResult.buildSuccessResult();
}
/**
* 新增联系人
*
* @return
*/
@PostMapping
public JsonResult save(@RequestBody ContactSaveDto contactSaveDto) {
Long userId = contactSaveDto.getUserId();
List<Contact> contacts = contactSaveDto.getContacts();
for (Contact contact : contacts) {
Tuple<String, Boolean> result = contact.validAndResult();
//数据校验
if (!result.getValue()) {
return JsonResult.buildErrorStateResult(result.getKey(), null);
}
contact.setUserId(userId);
contact.setBizType(contactSaveDto.getBizType());
}
contactService.save(contacts);
return JsonResult.buildSuccessResult();
}
/**
* @需求 http://confluence.quantgroup.cn/pages/viewpage.action?pageId=61683308
* 根据用户uuid 获取联系人列表
* @param uuid
* @return
* @Yapi http://yapi.quantgroups.com/project/17/interface/api/33578
*/
@RequestMapping("/getContactForUuid")
public JsonResult getContactForUuid(@RequestParam String uuid) {
User user = userService.findByUuidInDb(uuid);
List<Contact> contactList = new ArrayList<>();
if (user != null) {
contactList = contactService.findContactForUserId(user.getId());
}
return JsonResult.buildSuccessResult("", contactList);
}
}
package cn.quantgroup.xyqb.controller.middleoffice.contact.dto;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.xyqb.entity.Contact;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
......@@ -15,6 +15,4 @@ public class ContactSaveDto {
private Long userId;
@NotNull(message = "业务类型不能为空")
private BizType bizType;
@NotEmpty(message = "联系人信息不能为空")
private List<Contact> contacts;
}
......@@ -3,13 +3,10 @@ package cn.quantgroup.xyqb.controller.middleoffice.userext;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.OccupationEnum;
import cn.quantgroup.xyqb.controller.middleoffice.userext.req.UserExtReq;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.event.UserExtInfoSaveEvent;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserExtInfoService;
import cn.quantgroup.xyqb.service.user.IUserService;
......@@ -36,14 +33,10 @@ public class UserExtController {
@Resource
private IUserExtInfoService userExtInfoService;
@Resource
private IContactService contactService;
@Resource
private IUserDetailService userDetailService;
@Resource
private IAddressService addressService;
@Resource
private IUserService userService;
......@@ -60,17 +53,7 @@ public class UserExtController {
if (userExtReq.getQq() != null) {
userDetailService.updateUserQq(userId, userExtReq.getQq());
}
if (CollectionUtils.isNotEmpty(userExtReq.getContacts())) {
contactService.save(userId, userExtReq.getContacts());
}
if (userExtReq.getAddress() != null) {
Address address = addressService.findByUserId(userId);
if (address != null) {
userExtReq.getAddress().setId(address.getId());
}
userExtReq.getAddress().setUserId(userId);
addressService.save(userExtReq.getAddress());
}
if (userExtReq.getExtInfo() != null) {
UserExtInfo extInfo = userExtInfoService.findByUserId(userId);
if (extInfo != null) {
......@@ -92,16 +75,9 @@ public class UserExtController {
@GetMapping("/userId/{userId}")
public JsonResult query(@PathVariable Long userId,
@RequestParam(defaultValue = "false") Boolean address,
@RequestParam(defaultValue = "false") Boolean contacts,
@RequestParam(defaultValue = "false") Boolean extInfo) {
Map<String, Object> result = new HashMap<>();
if (address) {
result.put("address", addressService.findByUserId(userId));
}
if (contacts) {
result.put("contacts", contactService.findByUserIdAndBizType(userId, BizType.CASH, true));
}
if (extInfo) {
result.put("extInfo", userExtInfoService.findByUserId(userId));
}
......@@ -110,8 +86,6 @@ public class UserExtController {
@GetMapping("/phoneNo/{phoneNo}")
public JsonResult query(@PathVariable String phoneNo,
@RequestParam(defaultValue = "false") Boolean address,
@RequestParam(defaultValue = "false") Boolean contacts,
@RequestParam(defaultValue = "false") Boolean extInfo) {
User user = userService.findByPhoneWithCache(phoneNo);
if (user == null) {
......@@ -121,12 +95,7 @@ public class UserExtController {
//todo duplicated
Map<String, Object> result = new HashMap<>();
if (address) {
result.put("address", addressService.findByUserId(userId));
}
if (contacts) {
result.put("contacts", contactService.findByUserIdAndBizType(userId, BizType.CASH, true));
}
if (extInfo) {
result.put("extInfo", userExtInfoService.findByUserId(userId));
}
......
package cn.quantgroup.xyqb.controller.middleoffice.userext.req;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import java.util.List;
import lombok.Data;
@Data
public class UserExtReq {
private List<Contact> contacts;
private Address address;
private UserExtInfo extInfo;
private String email;
private String qq;
......
package cn.quantgroup.xyqb.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import lombok.Data;
/**
* Created by 11 on 2016/12/30.
*/
@Data
@Entity
@Table(name = "address", uniqueConstraints = @UniqueConstraint(columnNames = "user_id"))
public class Address extends BaseEntity implements Serializable {
private static final long serialVersionUID = -1L;
@Column(name = "user_id")
private Long userId;
@Column(name = "province_code")
private Long provinceCode;
@Column(name = "province")
private String province;
@Column(name = "city_code")
private Long cityCode;
@Column(name = "city")
private String city;
@Column(name = "district_code")
private Long districtCode;
@Column(name = "district")
private String district;
@Column(name = "address")
private String address;
public String toString() {
return province + "(省)" + city + "(市)" + district + "(区/县)" + address;
}
}
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.util.ValidationUtil;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Created by 11 on 2016/12/30.
*/
@Data
@Entity
@Table(name = "contact")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Contact extends BaseEntity implements Serializable {
private static final long serialVersionUID = -1L;
@Column(name = "user_id")
private Long userId;
@Column(name = "name")
private String name;
@Column(name = "phone_no")
private String phoneNo;
@Column(name = "biz_type")
private BizType bizType = BizType.CASH;
@Column(name = "relation")
private Relation relation;
/**
* 数据合法性校验
*
* @return
*/
public boolean valid() {
return (ValidationUtil.validatePhoneNo(this.phoneNo) && ValidationUtil.validateChinese(this.name));
}
public Tuple<String, Boolean> validAndResult() {
boolean phoneValidRes = ValidationUtil.validatePhoneNo(this.phoneNo);
if (!phoneValidRes) {
return new Tuple<>("手机号错误", false);
}
boolean nameValid = ValidationUtil.validateChinese(this.name);
if (!nameValid) {
return new Tuple<>("姓名错误", false);
}
return new Tuple<>("", true);
}
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.repository.IAddressRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
/**
* 注册成功后保存地址
*
* @author ag
*/
//@Component
public class AddressRegisteredEventListener implements ApplicationListener<RegisterEvent> {
@Autowired
private IAddressRepository addressRepository;
@Override
public void onApplicationEvent(RegisterEvent event) {
UserRegisterParam userRegisterParam = event.getUserRegisterParam();
Address address = userRegisterParam.getAddress();
if (address == null) {
return;
}
User user = userRegisterParam.getUser();
address.setUserId(user.getId());
addressRepository.save(address);
}
}
package cn.quantgroup.xyqb.event;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.model.UserRegisterParam;
import cn.quantgroup.xyqb.repository.IContactRepository;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.util.CollectionUtils;
/**
* 注册成功后, 保存联系人
*
* @author ag
*/
//@Component
public class ContactRegisteredEventListener implements ApplicationListener<RegisterEvent> {
@Autowired
private IContactRepository contactRepository;
@Override
public void onApplicationEvent(RegisterEvent event) {
UserRegisterParam userRegisterParam = event.getUserRegisterParam();
List<Contact> contactList = userRegisterParam.getContactList();
User user = userRegisterParam.getUser();
if (CollectionUtils.isEmpty(contactList)) {
return;
}
contactList.forEach(contact -> contact.setUserId(user.getId()));
contactRepository.save(contactList);
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Address;
import java.io.Serializable;
import lombok.Data;
/**
* 地址信息数据模型
*
* @author renwc
* @date 2018-01-04
*/
@Data
public class AddressModel implements Serializable {
private static final long serialVersionUID = -1L;
private Long provinceCode;
private String province;
private Long cityCode;
private String city;
private Long districtCode;
private String district;
private String address;
private AddressModel() {
}
public static AddressModel entity2Model(Address entity) {
if (entity == null) {
return null;
}
AddressModel model = new AddressModel();
model.setProvinceCode(entity.getProvinceCode());
model.setCityCode(entity.getCityCode());
model.setDistrictCode(entity.getDistrictCode());
model.setDistrict(entity.getDistrict());
model.setProvince(entity.getProvince());
model.setCity(entity.getCity());
model.setAddress(entity.getAddress());
return model;
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Address;
import lombok.Data;
/**
* Created by Miraculous on 2017/2/14.
*/
@Data
public class AddressRet {
private static final long serialVersionUID = -1L;
private Long id;
private Long userId;
private Long provinceCode;
private String province;
private Long cityCode;
private String city;
private Long districtCode;
private String district;
private String address;
private Long createdAt;
private Long updateAt;
public static AddressRet address2AddressRet(Address address) {
if (address == null) {
return null;
}
AddressRet ret = new AddressRet();
ret.setId(address.getId());
ret.setUserId(address.getUserId());
ret.setProvinceCode(address.getProvinceCode());
ret.setCityCode(address.getCityCode());
ret.setDistrictCode(address.getDistrictCode());
ret.setDistrict(address.getDistrict());
ret.setProvince(address.getProvince());
ret.setCity(address.getCity());
ret.setAddress(address.getAddress());
ret.setCreatedAt(address.getCreatedAt().getTime());
ret.setUpdateAt(address.getUpdatedAt().getTime());
return ret;
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact;
import java.io.Serializable;
import java.util.Optional;
import lombok.Data;
/**
* 联系人数据模型
*
* @author renwc
* @date 2018-01-04
*/
@Data
public class ContactModel implements Serializable {
private static final long serialVersionUID = -1L;
private String name;
private String phoneNo;
private String relationName;
private String relation;
private ContactModel() {
}
public static ContactModel entity2Model(Contact entity) {
if (entity == null) {
return null;
}
ContactModel model = new ContactModel();
model.setName(entity.getName());
model.setPhoneNo(entity.getPhoneNo());
model.setRelationName(Optional.ofNullable(entity.getRelation()).orElse(Relation.OTHER).getDesc());
model.setRelation(entity.getRelation().name());
return model;
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import lombok.Data;
import org.apache.commons.collections.CollectionUtils;
/**
* Created by Miraculous on 2017/2/14.
*/
@Data
public class ContactRet implements Serializable {
private static final long serialVersionUID = -1L;
private Long id;
private Long userId;
private String name;
private String phoneNo;
private Relation relation;
private Long createdAt;
private Long updateAt;
private static ContactRet contact2ContactRet(Contact c) {
if (c == null) {
return null;
}
ContactRet ret = new ContactRet();
ret.setId(c.getId());
ret.setUserId(c.getUserId());
ret.setName(c.getName());
ret.setPhoneNo(c.getPhoneNo());
ret.setRelation(c.getRelation());
if(Objects.nonNull(c.getCreatedAt())){
ret.setCreatedAt(c.getCreatedAt().getTime());
}
if(Objects.nonNull(c.getUpdatedAt())) {
ret.setUpdateAt(c.getUpdatedAt().getTime());
}
return ret;
}
public static List<ContactRet> contacts2ContactRets(List<Contact> cs) {
if (CollectionUtils.isEmpty(cs)) {
return Collections.emptyList();
}
List<ContactRet> contactRets = new ArrayList<>();
for (Contact c : cs) {
contactRets.add(contact2ContactRet(c));
}
return contactRets;
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
......@@ -45,40 +43,4 @@ public class UserAssociationModel implements Serializable {
private Boolean hasHouse;
// 是否有信用卡
private Boolean hasCreditCard;
private List<AddressModel> addressList;
private List<ContactModel> contactList;
/**
* 填充地址模型列表
*
* @param entitylist
*/
public void putAddressList(List<Address> entitylist) {
if (Objects.isNull(entitylist)) {
return;
}
if (Objects.isNull(this.addressList)) {
this.addressList = new ArrayList<>(entitylist.size());
}
for (Address entity : entitylist) {
this.addressList.add(AddressModel.entity2Model(entity));
}
}
/**
* 填充联系人模型列表
*
* @param entitylist
*/
public void putContactList(List<Contact> entitylist) {
if (Objects.isNull(entitylist)) {
return;
}
if (Objects.isNull(this.contactList)) {
this.contactList = new ArrayList<>(entitylist.size());
}
for (Contact entity : entitylist) {
this.contactList.add(ContactModel.entity2Model(entity));
}
}
}
package cn.quantgroup.xyqb.model;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import java.util.List;
import lombok.AllArgsConstructor;
......@@ -29,11 +27,9 @@ public class UserRegisterParam {
private Long channelId; // 业务渠道
private Long btRegisterChannelId; // 白条渠道
private String dimension; // 维度
private Address address; // 地址
private String contacts; // 联系人
private User user; // 注册生成的用户,也是返回结果
private List<Contact> contactList;
/**
* ======数据部分结束======
*/
......
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.Address;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* Created by 11 on 2016/12/30.
*/
public interface IAddressRepository extends JpaRepository<Address, Long>, JpaSpecificationExecutor<Address> {
Address findByUserId(Long userId);
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.xyqb.entity.Contact;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by 11 on 2016/12/30.
*/
public interface IContactRepository extends JpaRepository<Contact, Long> {
List<Contact> findByUserId(Long userId);
List<Contact> findByUserIdAndBizType(Long userId, BizType bizType);
@Modifying
@Transactional(rollbackFor = Exception.class)
@Query(value = "update contact set name=?1,phone_no=?2,relation=?3 where id = ?4", nativeQuery = true)
void update(String name, String phoneNo, Integer relation, Long id);
// @Query(value = "select *, max(`id`) as mid from contact where user_id=?1 GROUP BY phone_no ORDER BY id desc limit 2", nativeQuery = true)
@Query(value = "select * from contact, (select max(`id`) as mid from contact where user_id=?1 GROUP BY phone_no ORDER BY id desc limit 2) as ids where contact.id=ids.mid", nativeQuery = true)
List<Contact> findContactForUserId(Long userId);
}
package cn.quantgroup.xyqb.service.page.impl;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.service.page.IPageService;
import cn.quantgroup.xyqb.service.page.bean.BasePageType;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserExtInfoService;
import java.util.HashMap;
......@@ -45,24 +41,8 @@ public class PageServiceImpl implements IPageService {
return null != extInfo;
}
};
@Autowired
private IAddressService addressService;
private BasePageType pageAddress = new BasePageType("address", false) {
@Override
public boolean canPass(User user) {
Address address = addressService.findByUserId(user.getId());
return null != address;
}
};
@Autowired
private IContactService contactService;
private BasePageType pageContacts = new BasePageType("contacts", false) {
@Override
public boolean canPass(User user) {
List<Contact> contacts = contactService.findByUserIdAndBizType(user.getId(), BizType.CASH, true);
return contacts != null && contacts.size() != 0;
}
};
@PostConstruct
private void init() {
......@@ -71,12 +51,7 @@ public class PageServiceImpl implements IPageService {
routerDefinetion.put("cashTarget1", new BasePageType[]{
pageIdNo, pageUserFinance
});
routerDefinetion.put("cashTarget2", new BasePageType[]{
pageIdNo, pageAddress
});
routerDefinetion.put("cashTarget3", new BasePageType[]{
pageIdNo, pageContacts
});
routerDefinetion.put("cashTarget4", new BasePageType[]{
pageIdNo
});
......
package cn.quantgroup.xyqb.service.register;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import java.util.List;
......@@ -71,7 +69,7 @@ public interface IUserRegisterService {
* @author jinsong.zhu 2018年05月16日14:22:13
* 处理对address和contact的非必要兼容
*/
User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, Address addressObj, String contacts, List<Contact> contactList, Long btRegisterChannelId);
User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo,String contacts, Long btRegisterChannelId);
}
......@@ -4,8 +4,6 @@ import static cn.quantgroup.xyqb.Constants.DELETE_USER_AGAIN_REGISTER_INTERVAL;
import cn.quantgroup.user.enums.RecordType;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDeregisterRecord;
import cn.quantgroup.xyqb.event.RegisterEvent;
......@@ -244,7 +242,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService {
@Transactional(rollbackFor = Exception.class)
@Override
public User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, Address addressObj, String contacts, List<Contact> contactList, Long btRegisterChannelId) {
public User register(Long registeredFrom, Long channelId, String phoneNo, String name, String idNo, String contacts,Long btRegisterChannelId) {
deregisterCheck(phoneNo);
......@@ -255,9 +253,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService {
.name(name)
.channelId(channelId)
.btRegisterChannelId(btRegisterChannelId)
.address(addressObj)
.contacts(contacts)
.contactList(contactList)
.sendSuccessSms(true)
.sendAppSms(true)
.sendSuccessMq(true)
......
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.Address;
import java.util.List;
/**
* Created by Miraculous on 2017/1/3.
*/
public interface IAddressService {
Address findByUserId(Long userId);
Address save(Address addressObj);
List<Address> findByUserIds(List<Long> userIds);
}
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact;
import java.util.List;
/**
* Created by Miraculous on 2017/1/3.
*/
public interface IContactService {
/**
* @param userId - 用户主键
* @param trim - 是否清除非法错误记录,true-清除,false-不清除
* @return
*/
// List<Contact> findByUserId(Long userId, boolean trim);
List<Contact> findByUserIdAndBizType(Long userId, BizType bizType, boolean trim);
Contact findById(Long id);
/**
* 批量保存用户联系人
* 如果已存在联系人,则覆盖更新
*
* @param userId - 用户主键
* @param contacts - 联系人列表
* @return
*/
@Deprecated //因不能明确表述更新还是新增。已废弃
List<Contact> save(Long userId, List<Contact> contacts);
@Deprecated //因不能明确表述更新还是新增。已废弃
Contact save(Contact contact);
@Deprecated //因不能明确表述更新还是新增。已废弃
Contact saveContact(String name, String phoneNo, Relation relation, Contact contact);
void update(String name, String phoneNo, Relation relation, Long id);
void save(List<Contact> contactList);
List<Contact> findContactForUserId(Long userId);
}
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.repository.IAddressRepository;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.util.AddressFilter;
import cn.quantgroup.xyqb.util.EmojiUtil;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
/**
* Created by Miraculous on 2017/1/3.
*/
@Service
public class AddressServiceImpl implements IAddressService {
@Autowired
private IAddressRepository addressRepository;
@Override
// @Cacheable(value = "addresscache", key = "'address' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public Address findByUserId(Long userId) {
Address address = addressRepository.findByUserId(userId);
//过滤特殊字符
if (null != address && null != address.getAddress() && AddressFilter.isIncSpeChar(address.getAddress())) {
address.setAddress(AddressFilter.filterAddress(address.getAddress()));
}
return address;
}
@Override
@CacheEvict(value = "addresscache", key = "'address' + #addressObj.userId", cacheManager = "cacheManager")
public Address save(Address addressObj) {
/* 替换所有,UTF-8编码时4字节的Emoji表情字符 */
addressObj.setProvince(EmojiUtil.filterUnicode4(addressObj.getProvince()));
addressObj.setCity(EmojiUtil.filterUnicode4(addressObj.getCity()));
addressObj.setDistrict(EmojiUtil.filterUnicode4(addressObj.getDistrict()));
addressObj.setAddress(EmojiUtil.filterUnicode4(addressObj.getAddress()));
return addressRepository.save(addressObj);
}
@Override
public List<Address> findByUserIds(List<Long> userIds) {
return addressRepository.findAll((root, query, cb) -> {
query.where(root.get("userId").in(userIds));
return query.getRestriction();
});
}
}
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.repository.IContactRepository;
import cn.quantgroup.xyqb.service.user.IContactService;
import java.util.List;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
/**
* Created by Miraculous on 2017/1/3.
*/
@Slf4j
@Service
public class ContactServiceImpl implements IContactService {
@Autowired
private IContactRepository contactRepository;
public List<Contact> findByUserIdAndBizType(Long userId, BizType bizType, boolean trim) {
List<Contact> contacts = contactRepository.findByUserIdAndBizType(userId, bizType);
if (trim) {
trim(contacts);
}
return contacts;
}
/**
* 过滤掉非法联系人记录
*
* @param contacts - 包含待清除记录的联系人列表
*/
private void trim(List<Contact> contacts) {
if (CollectionUtils.isEmpty(contacts)) {
return;
}
contacts.removeIf(contact -> !contact.valid());
}
@Override
public Contact findById(Long id) {
return contactRepository.findOne(id);
}
@Override
@Caching(evict = {
@CacheEvict(value = "contact", key = "'contact:true' + #userId", cacheManager = "cacheManager"),
@CacheEvict(value = "contact", key = "'contact:false' + #userId", cacheManager = "cacheManager")})
public List<Contact> save(Long userId, List<Contact> contacts) {
if (userId == null) {
return null;
}
// 合并当前用户列表到更新列表
mergeContacts(userId, contacts);
return contactRepository.save(contacts);
}
@Override
@Caching(evict = {
@CacheEvict(value = "contact", key = "'contact:true' + #contact.userId", cacheManager = "cacheManager"),
@CacheEvict(value = "contact", key = "'contact:false' + #contact.userId", cacheManager = "cacheManager")})
public Contact save(Contact contact) {
return contactRepository.save(contact);
}
@Override
public Contact saveContact(String name, String phoneNo, Relation relation, Contact contact) {
if (StringUtils.isNotBlank(name)) {
contact.setName(name);
}
if (StringUtils.isNotBlank(phoneNo)) {
contact.setPhoneNo(phoneNo);
}
if (null != relation) {
contact.setRelation(relation);
}
log.info("修改前联系人信息:{}", contact);
contact = save(contact);
return contact;
}
@Override
public void update(String name, String phoneNo, Relation relation, Long id) {
contactRepository.update(name, phoneNo, relation.ordinal(), id);
}
@Override
public void save(List<Contact> contactList) {
contactRepository.save(contactList);
}
@Override
public List<Contact> findContactForUserId(Long userId) {
return contactRepository.findContactForUserId(userId);
}
/**
* 合并当前用户列表到更新列表
*
* @param userId - 用户主键
* @param contacts - 新联系人列表
*/
private void mergeContacts(Long userId, List<Contact> contacts) {
// 当前联系人列表
List<Contact> userContact = contactRepository.findByUserId(userId);
for (int i = 0; i < contacts.size(); i++) {
Contact c = contacts.get(i);
c.setId(null);
c.setUserId(userId);
if(Objects.isNull(c.getRelation())){
c.setRelation(Relation.OTHER);
}
if (CollectionUtils.isEmpty(userContact) || userContact.size() <= i) {
continue;
}
Contact old = userContact.get(i);
if(Objects.isNull(old)){
continue;
}
c.setId(old.getId());
if(Objects.nonNull(old.getCreatedAt())){
c.setCreatedAt(old.getCreatedAt());
}
}
}
}
......@@ -91,10 +91,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Resource
private IUserExtInfoService userExtInfoService;
@Resource
private IAddressService addressService;
@Resource
private IContactService contactService;
@Resource
private ILockIpv4Service lockIpv4Service;
@Autowired
......@@ -514,7 +510,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
User user = userRepository.findById(userId);
UserDetail userDetail = userDetailService.findByUserId(userId);
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
Address address = addressService.findByUserId(userId);
UserFullResp userFullResp = UserFullResp.builder().userId(userId).build();
if (user != null) {
......@@ -542,28 +537,6 @@ public class UserServiceImpl implements IUserService, IBaseController {
userFullResp.setHasCreditCard(userExtInfo.getHasCreditCard() == null ? 0 : userExtInfo.getHasCreditCard() ? 1 : 0);
userFullResp.setMarryStatus(userExtInfo.getMarryStatus() != null ? userExtInfo.getMarryStatus().ordinal() : null);
}
if (address != null) {
userFullResp.setProvinceCode(address.getProvinceCode());
userFullResp.setProvince(address.getProvince());
userFullResp.setCityCode(address.getCityCode());
userFullResp.setCity(address.getCity());
userFullResp.setDistrictCode(address.getDistrictCode());
userFullResp.setDistrict(address.getDistrict());
userFullResp.setAddress(address.getAddress());
}
List<UserFullResp.Contact> contacts = Lists.newArrayList();
contactService.findByUserIdAndBizType(userId, BizType.CASH, true)
.forEach(contact -> {
contacts.add(UserFullResp.Contact.builder()
.bizType(contact.getBizType())
.userId(userId)
.name(contact.getName())
.mobile(contact.getPhoneNo())
.relation(contact.getRelation()
.ordinal())
.build());
});
userFullResp.setContacts(contacts);
return userFullResp;
}
......
......@@ -5,10 +5,9 @@ import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.external.UserController;
import cn.quantgroup.xyqb.controller.internal.user.InnerController;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.model.AuthBean;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.IAddressService;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
......@@ -39,19 +38,13 @@ public class UserLoginTest {
private MockHttpServletRequest request = new MockHttpServletRequest();
;
@Resource
IAddressService iAddressService;
@Resource
private UserController userController;
@Resource
private InnerController innerController;
//注入brave-spring-boot-starter提供的techHttpClient
@Test
public void testQuery(){
Address byUserId = iAddressService.findByUserId(1L);
System.out.println(byUserId);
}
@Test
......@@ -62,13 +55,6 @@ public class UserLoginTest {
}
@Test
public void testJson() {
JsonResult addressByUserId = innerController.findAddressByUserId(22L);
// JsonResult userByUserId = innerController.findUserByPhoneNo("17811111122");
System.out.println("-------------result:" + addressByUserId);
}
/**
* 用户密码登陆接口
......
package service;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import com.google.common.collect.Lists;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -34,16 +27,10 @@ public class UserServiceTest {
private TestContextManager testContextManager;
@Resource
private IAddressService addressService;
@Resource
private IContactService contactService;
private Address addressObj;
public UserServiceTest(Address addressObj) {
public UserServiceTest() {
super();
this.addressObj = addressObj;
}
@Before
public void setUpContext() throws Exception {
......@@ -52,30 +39,6 @@ public class UserServiceTest {
this.testContextManager = new TestContextManager(getClass());
this.testContextManager.prepareTestInstance(this);
}
@Parameterized.Parameters
public static Collection data() {
Address addressObj =new Address();
addressObj.setUserId(123456L);
addressObj.setCity("悉尼");
addressObj.setCityCode(1L);
addressObj.setDistrict("悉尼");
addressObj.setDistrictCode(1L);
addressObj.setProvince("悉尼");
addressObj.setProvinceCode(1L);
addressObj.setAddress("嘻哈");
return Arrays.asList(new Object[][]{{addressObj}});
}
@Test
public void testAddress() {
addressService.save(addressObj);
addressObj=addressService.findByUserId(addressObj.getUserId());
System.out.println("测试地址"+addressObj);
List<Long> userIds= Lists.newArrayList();
userIds.add(123456L);
List<Address> addresses= addressService.findByUserIds(userIds);
System.out.println("测试地址集合"+addresses.get(0));
}
}
package wechat;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import cn.quantgroup.xyqb.service.user.IAddressService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
......@@ -29,17 +27,6 @@ public class WechatTest {
@Resource
private IWeChatUserRepository weChatUserRepository;
@Resource
IAddressService iAddressService;
@Test
public void testQuery(){
Address byUserId = iAddressService.findByUserId(58846805L);
System.out.println(byUserId);
byUserId = iAddressService.findByUserId(58846803L);
System.out.println(byUserId);
}
@Test
public void test(){
......
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