Commit 61b0d508 authored by 技术部—现金贷—曾丽宾's avatar 技术部—现金贷—曾丽宾

Merge remote-tracking branch 'origin/master' into baitiao_channel

# Conflicts:
#	src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
#	src/main/resources/config/dev/logback.xml
parents 5dbbf0df dcc59b63
...@@ -58,4 +58,8 @@ public interface Constants { ...@@ -58,4 +58,8 @@ public interface Constants {
String SCOPE = "snsapi_userinfo"; String SCOPE = "snsapi_userinfo";
} }
interface UserAvatar {
String AVATAR_DEFAULT = "https://avatar.xyqb.com/default_avatar.png";
}
} }
package cn.quantgroup.xyqb.aspect.accessable;
import java.lang.annotation.*;
/**
* Created by 11 on 2017/3/23.
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IpValidator {
}
package cn.quantgroup.xyqb.aspect.accessable;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.util.IPUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.dsig.keyinfo.PGPData;
/**
* Created by 11 on 2017/3/23.
*/
@Aspect
@Component
public class IpValidatorAdvisor {
private static final Logger LOGGER = LoggerFactory.getLogger(IpValidatorAdvisor.class);
/*@Value("${config.accessable}")
private boolean accessable;*/
@Pointcut("@annotation(cn.quantgroup.xyqb.aspect.accessable.IpValidator)")
private void needIpValidate() {
}
@Around("needIpValidate()")
private Object doCapchaValidate(ProceedingJoinPoint pjp) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String ip = IPUtil.getRemoteIP(request);
LOGGER.info("获取ip地址:" + ip);
/*HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip = IPUtil.getRemoteIP(request);
if(accessable) {
return pjp.proceed();
} else {
if(ip.startsWith("172")){
return pjp.proceed();
} else {
LOGGER.error("非法ip:{}", ip);
return JsonResult.buildErrorStateResult("非法ip", null);
}
}*/
return pjp.proceed();
}
}
...@@ -7,21 +7,59 @@ import cn.quantgroup.xyqb.entity.*; ...@@ -7,21 +7,59 @@ import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.user.enums.*; import cn.quantgroup.user.enums.*;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
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.entity.UserSpouse;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.xyqb.entity.enumerate.Relation;
import cn.quantgroup.xyqb.model.AddressRet;
import cn.quantgroup.xyqb.model.ContactRet;
import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserDetailRet;
import cn.quantgroup.xyqb.model.UserExtInfoRet;
import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.UserSpouseRet;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.service.session.ISessionService; import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO; 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;
import cn.quantgroup.xyqb.service.user.IUserSpouseService;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.common.collect.ImmutableMap;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -66,6 +104,22 @@ public class InnerController implements IBaseController { ...@@ -66,6 +104,22 @@ public class InnerController implements IBaseController {
@Autowired @Autowired
private ISessionService sessionService; private ISessionService sessionService;
@Autowired
private IHttpService httpService;
@Value("${xyqb.user.query.url}")
private String queryUrl;
@Value("${xyqb.auth.url}")
private String hanguguanUrl;
private static final ObjectMapper MAPPER = new ObjectMapper();
static {
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MAPPER.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true);
}
@Autowired @Autowired
private ILkbUserService lkbUserService; private ILkbUserService lkbUserService;
...@@ -134,6 +188,8 @@ public class InnerController implements IBaseController { ...@@ -134,6 +188,8 @@ public class InnerController implements IBaseController {
User user = userService.findByPhoneWithCache(phoneNo); User user = userService.findByPhoneWithCache(phoneNo);
if (user == null) { if (user == null) {
user = new User(); user = new User();
}else if(!user.getEnable()){
return JsonResult.buildErrorStateResult("用户已经注销", null);
} }
if (org.apache.commons.lang.StringUtils.isEmpty(user.getUuid())) { if (org.apache.commons.lang.StringUtils.isEmpty(user.getUuid())) {
user.setUuid(uuid); user.setUuid(uuid);
...@@ -391,8 +447,23 @@ public class InnerController implements IBaseController { ...@@ -391,8 +447,23 @@ public class InnerController implements IBaseController {
if (StringUtils.isBlank(name) && StringUtils.isBlank(phoneNo) && StringUtils.isBlank(idNo)) { if (StringUtils.isBlank(name) && StringUtils.isBlank(phoneNo) && StringUtils.isBlank(idNo)) {
return JsonResult.buildErrorStateResult("至少必须满足一个条件不为空", null); return JsonResult.buildErrorStateResult("至少必须满足一个条件不为空", null);
} }
List<UserDetailVO> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo);
return JsonResult.buildSuccessResult("success", userDetails); /*List<UserDetailVO> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo);
return JsonResult.buildSuccessResult("success", userDetails);*/
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
if(StringUtils.isNotBlank(name)){
builder.put("name",name);
}
if(StringUtils.isNotBlank(phoneNo)){
builder.put("phoneNo",phoneNo);
}
if(StringUtils.isNotBlank(idNo)){
builder.put("idNo",idNo);
}
Map<String, String> param =builder.build();
String s = httpService.get(queryUrl.concat("/innerapi/user_detail/search_list"), param);
return JSON.parseObject(s, JsonResult.class);
} }
@RequestMapping("/user_ext_info/search/user_id") @RequestMapping("/user_ext_info/search/user_id")
...@@ -449,6 +520,8 @@ public class InnerController implements IBaseController { ...@@ -449,6 +520,8 @@ public class InnerController implements IBaseController {
if (!user.getEnable()) { if (!user.getEnable()) {
sessionService.deleteByUserId(userId); sessionService.deleteByUserId(userId);
} }
LOGGER.info("去清除函谷关的缓存");
httpService.get(hanguguanUrl.concat("/innerapi/disableUserCache"),ImmutableMap.of("phone",user.getPhoneNo()));
return JsonResult.buildSuccessResult("用户已禁用.", user.getEnable() == false); return JsonResult.buildSuccessResult("用户已禁用.", user.getEnable() == false);
} }
...@@ -499,19 +572,20 @@ public class InnerController implements IBaseController { ...@@ -499,19 +572,20 @@ public class InnerController implements IBaseController {
if(StringUtils.isBlank(userPhones)){ if(StringUtils.isBlank(userPhones)){
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null); return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null);
} }
List<String> phones = JSONObject.parseObject(userPhones, new TypeReference<List<String>>() {}); List<String> phones = JSONObject.parseObject(userPhones, new TypeReference<List<String>>() {
});
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(phones)) { if(org.apache.commons.collections.CollectionUtils.isNotEmpty(phones)) {
if(!(phones.size()>500)) { if(!(phones.size()>500)) {
List<User> users = userService.findByPhones(phones); List<User> users = userService.findByPhones(phones);
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) { if(org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) {
return JsonResult.buildSuccessResult(null, users.stream().map(User::getId).collect(Collectors.toList())); return JsonResult.buildSuccessResult(null, users.stream().collect(Collectors.toMap(User::getPhoneNo,User::getId)));
}else { }else {
return JsonResult.buildSuccessResult(null, null); return JsonResult.buildSuccessResult(null, null);
} }
} }
return JsonResult.buildErrorStateResult("单次批量查询不可超过500个手机号",null); return JsonResult.buildErrorStateResult("单次批量查询不可超过500个手机号",null);
} }
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null); return JsonResult.buildErrorStateResult("传入用户手机号不可为空", null);
} }
...@@ -623,4 +697,20 @@ public class InnerController implements IBaseController { ...@@ -623,4 +697,20 @@ public class InnerController implements IBaseController {
return JsonResult.buildSuccessResult(null, userRet); return JsonResult.buildSuccessResult(null, userRet);
} }
@RequestMapping("/user/register")
public JsonResult register(String phoneNo, String password, Long channelId) {
if (!ValidationUtil.validatePhoneNo(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号不正确", null);
}
User user = userService.findByPhoneInDb(phoneNo);
if (user == null) {
user = userService.registerAndReturn(phoneNo, StringUtils.defaultString(password, ""), channelId);
}
if (user == null) {
return JsonResult.buildErrorStateResult("注册失败", null);
}
return JsonResult.buildSuccessResult(null, UserRet.getUserRet(user));
}
} }
\ No newline at end of file
package cn.quantgroup.xyqb.controller.external.user.center;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.xyqb.model.ContactRet;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.user.*;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Timestamp;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by 11 on 2017/3/22.
*/
@RestController
@RequestMapping("/user/center")
public class UserCenterController {
@Autowired
private UserCenterService userCenterService;
@Autowired
private IUserDetailService userDetailService;
@Autowired
private IUserExtInfoService userExtInfoService;
@Autowired
private IContactService contactService;
@Autowired
private IAddressService addressService;
@Autowired
private IUserService userService;
private static final Logger LOGGER = LoggerFactory.getLogger(UserCenterController.class);
/**
* 用户中心首页,显示用户头像、昵称、姓名
* @param phoneNo
* @return
*/
@RequestMapping("/index")
public JsonResult userCenterIndex(String phoneNo) {
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
Map<String, String> result = new HashMap<>();
if(userAttached != null) {
result.put("avatar", userAttached.getAvatar());
result.put("nick", userAttached.getNick());
}
UserDetail userDetail = userDetailService.findByUserId(userId);
if(userDetail != null) {
result.put("name", userDetail.getName());
result.put("sex", userDetail.getGender().ordinal() + "");
}
return JsonResult.buildSuccessResult(null, result);
}
/**
* 上传后调用该接口保存用户头像
* @param phoneNo 用户手机号
* @param avatarUrl 上传后生成的头像地址
* @return
*/
@RequestMapping("/save/avatar")
public JsonResult SaveUserAvatarAddr(String phoneNo, String avatarUrl) {
if(StringUtils.isEmpty(avatarUrl) || StringUtils.isEmpty(phoneNo)) {
LOGGER.error("参数不合法:avatarUrl:{}, phoneNo:{}", avatarUrl, phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
if(StringUtils.isBlank(avatarUrl)) {
avatarUrl = Constants.UserAvatar.AVATAR_DEFAULT;
}
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
//查询到数据,直接更新头像和更新时间
if(null != userAttached) {
userAttached.setAvatar(avatarUrl);
userAttached.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
} else {
userAttached = createUserAttached(userId, avatarUrl, "");
}
UserAttached result = userCenterService.saveUserAttached(userAttached);
if(null == userAttached) {
LOGGER.error("保存用户头像昵称失败.");
return JsonResult.buildErrorStateResult("信息保存失败,请稍后再试.", null);
}
return JsonResult.buildSuccessResult("保存成功", result);
}
/**
* 根据用户手机号查询昵称.
* @param phoneNo
* @return
*/
@RequestMapping("/queryNick")
public JsonResult queryUserNick(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
if(null != userAttached) {
LOGGER.info("获取用户昵称:{}", userAttached.getNick());
return JsonResult.buildSuccessResult(null, userAttached.getNick());
}
return JsonResult.buildSuccessResult(null, null);
}
/**
* 修改用户的昵称
* @param phoneNo
* @param nick
* @return
*/
@RequestMapping("/saveNick")
public JsonResult saveUserNick(String phoneNo, String nick) {
if(StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserAttached userAttached = userCenterService.searchUserAttachedByUserId(userId);
if(null == userAttached) {
userAttached = createUserAttached(userId, "", nick);
} else {
userAttached.setNick(nick);
userAttached.setUpdatedAt(new Timestamp(System.currentTimeMillis()));
}
UserAttached result = userCenterService.saveUserAttached(userAttached);
return JsonResult.buildSuccessResult(null, result.getNick());
}
/**
* 查询用户是否实名认证.
* @param phoneNo
* @return
*/
@RequestMapping("/query/verified")
public JsonResult queryVerified(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserDetail userDetail = userDetailService.findByUserId(userId);
if(null != userDetail) {
return JsonResult.buildSuccessResult(null, userDetail);
}
return JsonResult.buildSuccessResult(null, null);
}
/**
* 个人资料信息
* @param phoneNo
* @return
*/
@RequestMapping("/personalData")
public JsonResult personalData(String phoneNo) {
if(StringUtils.isEmpty(phoneNo)) {
LOGGER.error("手机号为空,phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数不合法", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
List<Contact> contacts = contactService.findByUserId(userId);
Map<String, Object> result = new HashMap<>();
if(null != userExtInfo) {
result.put("contacts", null != contacts && contacts.size() > 0 ? true : false);
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
*/
@RequestMapping("/contacts/save")
public JsonResult saveUserContact(String phoneNo, String contactJson) {
if(StringUtils.isEmpty(phoneNo)) {
LOGGER.error("保存联系人,参数错误. phoneNo:{}", phoneNo);
return JsonResult.buildErrorStateResult("参数有误.", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
if(StringUtils.isEmpty(contactJson)) {
LOGGER.error("保存联系人,联系人参数为空.contactJson:{}", contactJson);
return JsonResult.buildErrorStateResult(null, null);
}
List<Contact> userContact = contactService.findByUserId(userId);
/*if(userContact != null && userContact.size() >= 2) {
return JsonResult.buildSuccessResult(null, ContactRet.contacts2ContactRets(userContact));
}*/
//推翻之前逻辑,联系人可以更改.如果数据库已有记录.则更改
List<Contact> contacts = JSONObject.parseObject(contactJson, new TypeReference<List<Contact>>() {});
Timestamp now = new Timestamp(System.currentTimeMillis());
if (CollectionUtils.isEmpty(contacts)) {
return JsonResult.buildErrorStateResult("参数转换错误", null);
}
if(null != userContact && userContact.size() > 0) {
for(int i = 0; i < contacts.size(); i ++) {
contacts.get(i).setId(userContact.get(i).getId());
contacts.get(i).setUserId(userContact.get(i).getUserId());
contacts.get(i).setCreatedAt(now);
contacts.get(i).setUpdateAt(now);
}
} else {
for (Contact c : contacts) {
c.setId(null);
c.setUserId(userId);
c.setCreatedAt(now);
c.setUpdateAt(now);
}
}
List<Contact> result = contactService.save(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) {
LOGGER.info("保存用户地址信息, phoneNo:{}, province:{}, provinceCode:{}, city:{}, cityCode:{}", phoneNo, province, provinceCode, city, cityCode);
if (StringUtils.isEmpty(phoneNo) || provinceCode == null || cityCode == null) {
return JsonResult.buildErrorStateResult("参数错误", null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
//查询用户是否有保存地址信息
Address addressInfo = addressService.findByUserId(userId);
if(null == addressInfo) {
Timestamp now = new Timestamp(System.currentTimeMillis());
addressInfo = new Address();
addressInfo.setCreatedAt(now);
addressInfo.setUpdateAt(now);
}
addressInfo.setUserId(userId);
addressInfo.setProvince(province);
addressInfo.setProvinceCode(provinceCode);
addressInfo.setCity(city);
addressInfo.setCityCode(cityCode);
addressInfo.setDistrictCode(districtCode);
addressInfo.setDistrict(district);
addressInfo.setAddress(address);
//更新时间
addressInfo.setUpdateAt(new Timestamp(System.currentTimeMillis()));
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) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
Address address = addressService.findByUserId(userId);
return JsonResult.buildSuccessResult(null, address);
}
/**
* 查询用户联系人
* @param phoneNo
* @return
*/
@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) {
LOGGER.error("保存联系人,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
List<Contact> contacts = contactService.findByUserId(userId);
return JsonResult.buildSuccessResult(null, contacts);
}
/**
* 保存用户经济信息
* @param educationEnum 学历
* @param occupationEnum 职业
* @param incomeRangeEnum 月收入范围
* @param maritalStatus 婚姻状态
* @return
*/
@RequestMapping("/save/userExtInfo")
public JsonResult saveUserExtInfo(String phoneNo, EducationEnum educationEnum, MaritalStatus maritalStatus, IncomeRangeEnum incomeRangeEnum, OccupationEnum occupationEnum) {
if(StringUtils.isEmpty(phoneNo)) {
return JsonResult.buildErrorStateResult(null, null);
}
Long userId = queryUserId(phoneNo);
if(null == userId || userId == 0L) {
LOGGER.error("保存用户经济信息,未获取到用户id. userId:{}", userId);
return JsonResult.buildErrorStateResult("该用户不存在", null);
}
//查询用户是否保存过.
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
Timestamp now = new Timestamp(System.currentTimeMillis());
if(null == userExtInfo) {
userExtInfo = new UserExtInfo();
userExtInfo.setUserId(userId);
}
userExtInfo.setCreatedAt(now);
userExtInfo.setUpdateAt(now);
userExtInfo.setEducationEnum(educationEnum);
userExtInfo.setMarryStatus(maritalStatus);
userExtInfo.setOccupationEnum(occupationEnum);
userExtInfo.setIncomeRangeEnum(incomeRangeEnum);
userExtInfo = userExtInfoService.save(userExtInfo);
return JsonResult.buildSuccessResult(null, userExtInfo);
}
/**
* 创建用户附加信息实体
* @param userId
* @param avatar
* @param nick
* @return
*/
private UserAttached createUserAttached(Long userId, String avatar, String nick) {
UserAttached userAttached = new UserAttached();
Timestamp now = new Timestamp(System.currentTimeMillis());
userAttached.setUserId(userId);
userAttached.setAvatar(avatar);
userAttached.setNick(nick);
userAttached.setCreatedAt(now);
userAttached.setUpdatedAt(now);
return userAttached;
}
/**
* 根据手机号查询用户id, nodejs调用接口无法获取到userId.
* 所以增加该接口来查询用户id
* @param phoneNo
* @return
*/
private Long queryUserId(String phoneNo) {
User user = userService.findByPhoneInDb(phoneNo);
return null == user ? null : user.getId();
}
}
...@@ -41,4 +41,9 @@ public class Address implements Serializable { ...@@ -41,4 +41,9 @@ public class Address implements Serializable {
private Timestamp createdAt; private Timestamp createdAt;
@Column(name = "updated_at") @Column(name = "updated_at")
private Timestamp updateAt; private Timestamp updateAt;
@PreUpdate
public void preUpdate(){
this.updateAt = new Timestamp(System.currentTimeMillis());
}
} }
package cn.quantgroup.xyqb.entity;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created by 11 on 2017/3/22.
*/
@Data
@Entity
@Table(name = "user_attached")
public class UserAttached {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column( name = "user_id")
private Long userId;
@Column(name = "avatar")
private String avatar;
@Column(name = "nick")
private String nick;
@Column(name = "created_at")
private Timestamp createdAt;
@Column(name = "updated_at")
private Timestamp updatedAt;
}
...@@ -25,16 +25,9 @@ import java.io.PrintWriter; ...@@ -25,16 +25,9 @@ import java.io.PrintWriter;
@Order(Ordered.HIGHEST_PRECEDENCE + 100) @Order(Ordered.HIGHEST_PRECEDENCE + 100)
public class RequestFilter implements Filter { public class RequestFilter implements Filter {
//private static final String[] ALLOWED_PATTERNS = {
// "/innerapi/**", "/user/exist", "/motan/**", "/user/register", "/user/login", "/user/register/fast","/auth/info/login",
// "/user/login/fast", "/user/reset_password", "/user/exist_check",
// "/jr58/**", "/app/login", "/app/login_super", "/wechat/**", "/config/**", "/api/**", "/user/exists_token",
// "/platform/api/page/return_url", "/MP_" +
// "verify_AWiagUn4kZiwmTt0.txt"
//};
private static final String[] ALLOWED_PATTERNS = { private static final String[] ALLOWED_PATTERNS = {
"/innerapi/**", "/user/exist", "/motan/**", "/user/register", "/user/login", "/user/register/fast","/auth/info/login", "/innerapi/**", "/user/exist", "/motan/**", "/user/register", "/user/login", "/user/register/fast","/auth/info/login",
"/user/login/fast", "/user/reset_password", "/user/exist_check", "/user/login/fast", "/user/reset_password", "/user/exist_check","/user/center/**",
"/jr58/**", "/app/login", "/app/login_super", "/wechat/**", "/config/**", "/api/**", "/user/exists_token", "/jr58/**", "/app/login", "/app/login_super", "/wechat/**", "/config/**", "/api/**", "/user/exists_token",
"/platform/api/page/return_url", "/MP_" + "/platform/api/page/return_url", "/MP_" +
"verify_AWiagUn4kZiwmTt0.txt" "verify_AWiagUn4kZiwmTt0.txt"
......
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserAttached;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* Created by 11 on 2017/3/22.
*/
public interface IUserAttachedRepository extends JpaRepository<UserAttached, Long> {
UserAttached findByUserId(Long userId);
}
package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.UserAttached;
/**
* Created by 11 on 2017/3/22.
*/
public interface UserCenterService {
UserAttached searchUserAttachedByUserId(Long userId);
UserAttached saveUserAttached(UserAttached userAttached);
}
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.xyqb.entity.UserAttached;
import cn.quantgroup.xyqb.repository.IUserAttachedRepository;
import cn.quantgroup.xyqb.service.user.UserCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by 11 on 2017/3/22.
*/
@Service
public class UserCenterServiceImpl implements UserCenterService {
@Autowired
private IUserAttachedRepository userAttachedRepository;
@Override
public UserAttached searchUserAttachedByUserId(Long userId) {
return userAttachedRepository.findByUserId(userId);
}
@Override
public UserAttached saveUserAttached(UserAttached userAttached) {
return userAttachedRepository.save(userAttached);
}
}
...@@ -7,6 +7,14 @@ import cn.quantgroup.xyqb.repository.IUserRepository; ...@@ -7,6 +7,14 @@ import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.user.IUserDetailService; import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO; import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DataIntegrityViolationException;
...@@ -14,15 +22,6 @@ import org.springframework.data.jpa.domain.Specification; ...@@ -14,15 +22,6 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* Created by 11 on 2016/12/29. * Created by 11 on 2016/12/29.
*/ */
......
config.accessable=false
configserver.disable=1 configserver.disable=1
configserver.system=xyqb-user configserver.system=xyqb-user
...@@ -86,4 +87,5 @@ motan.user.module=user-motan-rpc ...@@ -86,4 +87,5 @@ motan.user.module=user-motan-rpc
motan.application=xyqbUserMotan motan.application=xyqbUserMotan
#xyqb-user-域名 #xyqb-user-域名
xyqb.user.domain=passport.xyqb.com xyqb.user.domain=passport.xyqb.com
\ No newline at end of file xyqb.user.query.url=http://192.168.11.40:8081
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<configuration> <configuration>
<!--<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="FILE" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender"> <!--<appender name="FILE" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender">-->
<file>/home/quant_group/logs/xyqb_user.log</file> <file>/home/quant_group/logs/xyqb_user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/quant_group/logs/xyqb_user.log.%d{yyyy-MM-dd}</fileNamePattern> <fileNamePattern>/home/quant_group/logs/xyqb_user.log.%d{yyyy-MM-dd}</fileNamePattern>
......
...@@ -49,4 +49,6 @@ motan.user.module=user-motan-rpc ...@@ -49,4 +49,6 @@ motan.user.module=user-motan-rpc
motan.application=xyqbUserMotan motan.application=xyqbUserMotan
#xyqb-user-域名 #xyqb-user-域名
xyqb.user.domain=passport.xyqb.com xyqb.user.domain=passport.xyqb.com
\ No newline at end of file
xyqb.user.query.url=http://userqry.xyqb.com
\ No newline at end of file
...@@ -51,4 +51,5 @@ wechat.appid=wxcdf6077af8127559 ...@@ -51,4 +51,5 @@ wechat.appid=wxcdf6077af8127559
wechat.secret=16eaec16084d0d9c52d4114f359cc72c wechat.secret=16eaec16084d0d9c52d4114f359cc72c
#xyqb-user-域名 #xyqb-user-域名
xyqb.user.domain=passport.xyqb.com xyqb.user.domain=passport.xyqb.com
\ No newline at end of file xyqb.user.query.url=http://userqry.xyqb.com
\ No newline at end of file
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