Commit 45f5f605 authored by minminyan's avatar minminyan

禁用用户的同时删除相应的缓存

parent 8aa4d2be
...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.entity.*; ...@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.*; import cn.quantgroup.xyqb.entity.enumerate.*;
import cn.quantgroup.xyqb.model.*; import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.service.auth.IIdCardService; import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*; import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.service.wechat.IWechatService; import cn.quantgroup.xyqb.service.wechat.IWechatService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -28,343 +29,350 @@ import java.util.List; ...@@ -28,343 +29,350 @@ import java.util.List;
@RequestMapping("/innerapi") @RequestMapping("/innerapi")
public class InnerController { public class InnerController {
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(InnerController.class); private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(InnerController.class);
@Autowired @Autowired
private IUserService userService; private IUserService userService;
@Autowired @Autowired
private IUserDetailService userDetailService; private IUserDetailService userDetailService;
@Autowired @Autowired
private IIdCardService idCardService; private IIdCardService idCardService;
@Autowired @Autowired
private IUserExtInfoService userExtInfoService; private IUserExtInfoService userExtInfoService;
@Autowired @Autowired
private IContactService contactService; private IContactService contactService;
@Autowired @Autowired
private IAddressService addressService; private IAddressService addressService;
@Autowired @Autowired
private IWechatService wechatService; private IWechatService wechatService;
@Autowired
private ISessionService sessionService;
@RequestMapping("/user/search/phoneNo")
@RequestMapping("/user/search/phoneNo") public JsonResult findByPhoneNo(String phoneNo) {
public JsonResult findByPhoneNo(String phoneNo) { User user = userService.findByPhoneInDb(phoneNo);
User user = userService.findByPhoneInDb(phoneNo); if (user == null) {
if (user == null) { return JsonResult.buildErrorStateResult("", null);
return JsonResult.buildErrorStateResult("", null);
}
UserRet userRet = UserRet.getUserRet(user);
return JsonResult.buildSuccessResult("", userRet);
} }
UserRet userRet = UserRet.getUserRet(user);
return JsonResult.buildSuccessResult("", userRet);
}
@RequestMapping("/user/search/uuid") @RequestMapping("/user/search/uuid")
public JsonResult findByUuid(String uuid) { public JsonResult findByUuid(String uuid) {
User user = userService.findByUuidInDb(uuid); User user = userService.findByUuidInDb(uuid);
if (user == null) { if (user == null) {
return JsonResult.buildErrorStateResult("", null); return JsonResult.buildErrorStateResult("", null);
}
UserRet userRet = UserRet.getUserRet(user);
return JsonResult.buildSuccessResult("", userRet);
} }
UserRet userRet = UserRet.getUserRet(user);
return JsonResult.buildSuccessResult("", userRet);
}
@RequestMapping("/user/save") @RequestMapping("/user/save")
public JsonResult saveUser( public JsonResult saveUser(
String phoneNo, Long registeredFrom, Long createdAt, Long updatedAt, String phoneNo, Long registeredFrom, Long createdAt, Long updatedAt,
String password, String uuid) { String password, String uuid) {
//参数验证 //参数验证
if(StringUtils.isBlank(phoneNo)){ if (StringUtils.isBlank(phoneNo)) {
return JsonResult.buildErrorStateResult("用户手机号不能为空.", null); return JsonResult.buildErrorStateResult("用户手机号不能为空.", null);
} }
if(registeredFrom == null){ if (registeredFrom == null) {
registeredFrom = 0L; registeredFrom = 0L;
} }
if(StringUtils.isBlank(password)){ if (StringUtils.isBlank(password)) {
password = ""; password = "";
} }
if(StringUtils.isBlank(uuid)){ if (StringUtils.isBlank(uuid)) {
return JsonResult.buildErrorStateResult("用户uuid为空.", null); return JsonResult.buildErrorStateResult("用户uuid为空.", null);
} }
if(createdAt == 0L || updatedAt == 0L){ if (createdAt == 0L || updatedAt == 0L) {
createdAt = System.currentTimeMillis(); createdAt = System.currentTimeMillis();
updatedAt = System.currentTimeMillis(); updatedAt = System.currentTimeMillis();
}
User user = userService.findByPhoneWithCache(phoneNo);
if (user == null) {
user = new User();
}
user.setPhoneNo(phoneNo);
user.setCreatedAt(new Timestamp(createdAt));
user.setUpdatedAt(new Timestamp(updatedAt));
user.setEnable(true);
user.setRegisteredFrom(registeredFrom);
user.setUuid(uuid);
user.setPassword(password);
user = userService.saveUser(user);
UserRet userRet = null;
if(user != null){
userRet = UserRet.getUserRet(user);
}
return JsonResult.buildSuccessResult(null, userRet);
} }
User user = userService.findByPhoneWithCache(phoneNo);
if (user == null) {
user = new User();
}
user.setPhoneNo(phoneNo);
user.setCreatedAt(new Timestamp(createdAt));
user.setUpdatedAt(new Timestamp(updatedAt));
user.setEnable(true);
user.setRegisteredFrom(registeredFrom);
user.setUuid(uuid);
user.setPassword(password);
user = userService.saveUser(user);
UserRet userRet = null;
if (user != null) {
userRet = UserRet.getUserRet(user);
}
return JsonResult.buildSuccessResult(null, userRet);
}
/** /**
* 保存用户详细信息 * 保存用户详细信息
* @param userId *
* @param phoneNo * @param userId
* @param name * @param phoneNo
* @param idNo * @param name
* @param email * @param idNo
* @return * @param email
*/ * @return
@RequestMapping("/user_detail/save") */
public JsonResult saveUserDetail(Long userId, String phoneNo, String name, String idNo, @RequestMapping("/user_detail/save")
String email, Long id){ public JsonResult saveUserDetail(Long userId, String phoneNo, String name, String idNo,
//参数验证 String email, Long id) {
if(userId == null || userId == 0L){ //参数验证
return JsonResult.buildErrorStateResult("用户id为空.", null); if (userId == null || userId == 0L) {
} return JsonResult.buildErrorStateResult("用户id为空.", null);
if(StringUtils.isBlank(phoneNo)){ }
return JsonResult.buildErrorStateResult("用户手机号为空.", null); if (StringUtils.isBlank(phoneNo)) {
} return JsonResult.buildErrorStateResult("用户手机号为空.", null);
if(StringUtils.isBlank(name)){ }
return JsonResult.buildErrorStateResult("用户名为空.", null); if (StringUtils.isBlank(name)) {
} return JsonResult.buildErrorStateResult("用户名为空.", null);
if(StringUtils.isBlank(idNo)){
return JsonResult.buildErrorStateResult("用户身份证为空.", null);
}
UserDetail userDetail = new UserDetail();
if(id != null && id > 0){
userDetail.setId(id);
}
userDetail.setUserId(userId);
userDetail.setName(name);
userDetail.setPhoneNo(phoneNo);
userDetail.setIdNo(idNo);
Timestamp time = new Timestamp(System.currentTimeMillis());
userDetail.setCreatedAt(time);
userDetail.setUpdatedAt(time);
userDetail.setIdType(IdType.ID_CARD);
try {
userDetail.setGender(idCardService.getIdCardInfo(idNo).getGender());
} catch (ParseException e) {
LOGGER.error("根据身份证获取性别出错,错误信息:" + e);
return JsonResult.buildErrorStateResult(null, null);
}
userDetail.setEmail(email);
userDetail = userDetailService.saveUserDetail(userDetail);
if(userDetail != null){
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
}
return JsonResult.buildErrorStateResult("",null);
} }
if (StringUtils.isBlank(idNo)) {
return JsonResult.buildErrorStateResult("用户身份证为空.", null);
}
UserDetail userDetail = new UserDetail();
if (id != null && id > 0) {
userDetail.setId(id);
}
userDetail.setUserId(userId);
userDetail.setName(name);
userDetail.setPhoneNo(phoneNo);
userDetail.setIdNo(idNo);
Timestamp time = new Timestamp(System.currentTimeMillis());
userDetail.setCreatedAt(time);
userDetail.setUpdatedAt(time);
userDetail.setIdType(IdType.ID_CARD);
try {
userDetail.setGender(idCardService.getIdCardInfo(idNo).getGender());
} catch (ParseException e) {
LOGGER.error("根据身份证获取性别出错,错误信息:" + e);
return JsonResult.buildErrorStateResult(null, null);
}
userDetail.setEmail(email);
userDetail = userDetailService.saveUserDetail(userDetail);
if (userDetail != null) {
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
}
return JsonResult.buildErrorStateResult("", null);
}
/** /**
* 根据用户id查询用户的详细信息 * 根据用户id查询用户的详细信息
* @param userId *
* @return * @param userId
*/ * @return
@RequestMapping("/user_detail/search/userId") */
public JsonResult findUserDetailByUserId(Long userId){ @RequestMapping("/user_detail/search/userId")
UserDetail userDetail = userDetailService.findByUserId(userId); public JsonResult findUserDetailByUserId(Long userId) {
if(userDetail != null){ UserDetail userDetail = userDetailService.findByUserId(userId);
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail)); if (userDetail != null) {
} return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
return JsonResult.buildErrorStateResult("", null);
} }
return JsonResult.buildErrorStateResult("", null);
}
@RequestMapping("/user/search/userId") @RequestMapping("/user/search/userId")
public JsonResult findUserByUserId(Long userId){ public JsonResult findUserByUserId(Long userId) {
User user = userService.findById(userId); User user = userService.findById(userId);
if(user != null){ if (user != null) {
return JsonResult.buildSuccessResult(null, UserRet.getUserRet(user)); return JsonResult.buildSuccessResult(null, UserRet.getUserRet(user));
}
return JsonResult.buildErrorStateResult("", null);
} }
return JsonResult.buildErrorStateResult("", null);
}
@RequestMapping("/user_detail/search/phone") @RequestMapping("/user_detail/search/phone")
public JsonResult findUserDetailByPhone(String phoneNo){ public JsonResult findUserDetailByPhone(String phoneNo) {
UserDetail userDetail = userDetailService.findByPhoneNo(phoneNo); UserDetail userDetail = userDetailService.findByPhoneNo(phoneNo);
if(userDetail != null){ if (userDetail != null) {
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail)); return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
}
return JsonResult.buildErrorStateResult("", null);
} }
return JsonResult.buildErrorStateResult("", null);
}
@RequestMapping("/user_detail/update/qq") @RequestMapping("/user_detail/update/qq")
public JsonResult updateUserQQ(String qq, Long userId){ public JsonResult updateUserQQ(String qq, Long userId) {
if(StringUtils.isEmpty(qq) || userId == null || userId == 0L){ if (StringUtils.isEmpty(qq) || userId == null || userId == 0L) {
return JsonResult.buildErrorStateResult("参数校验失败,qq或用户id为空", null); return JsonResult.buildErrorStateResult("参数校验失败,qq或用户id为空", null);
}
userDetailService.updateUserQQ(userId, qq);
return JsonResult.buildSuccessResult(null, null);
} }
userDetailService.updateUserQQ(userId, qq);
return JsonResult.buildSuccessResult(null, null);
}
@RequestMapping("/contact/search/user_id") @RequestMapping("/contact/search/user_id")
public JsonResult findContactsByUserId(Long userId) { public JsonResult findContactsByUserId(Long userId) {
if (null == userId) { if (null == userId) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
}
List<Contact> contacts = contactService.findByUserId(userId);
if(null == contacts || contacts.size() == 0) {
return JsonResult.buildErrorStateResult(null, Collections.emptyList());
}
return JsonResult.buildSuccessResult(null, ContactRet.contacts2ContactRets(contacts));
} }
List<Contact> contacts = contactService.findByUserId(userId);
if (null == contacts || contacts.size() == 0) {
return JsonResult.buildErrorStateResult(null, Collections.emptyList());
}
return JsonResult.buildSuccessResult(null, ContactRet.contacts2ContactRets(contacts));
}
@RequestMapping("/contact/save/contacts") @RequestMapping("/contact/save/contacts")
public JsonResult save2Contact(Long userId, @RequestParam(value = "contacts") String contactsStr) { public JsonResult save2Contact(Long userId, @RequestParam(value = "contacts") String contactsStr) {
LOGGER.info("保存用户联系人:userId:{}, contacts:" + contactsStr); LOGGER.info("保存用户联系人:userId:{}, contacts:" + contactsStr);
if (StringUtils.isEmpty(contactsStr)) { if (StringUtils.isEmpty(contactsStr)) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
if (userId == null) { if (userId == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
List<Contact> userContact = contactService.findByUserId(userId); List<Contact> userContact = contactService.findByUserId(userId);
if(userContact != null && userContact.size() >= 2) { if (userContact != null && userContact.size() >= 2) {
return JsonResult.buildSuccessResult(null, ContactRet.contacts2ContactRets(userContact)); return JsonResult.buildSuccessResult(null, ContactRet.contacts2ContactRets(userContact));
} }
List<Contact> contacts = JSONObject.parseObject(contactsStr, new TypeReference<List<Contact>>() {}); List<Contact> contacts = JSONObject.parseObject(contactsStr, new TypeReference<List<Contact>>() {
if (CollectionUtils.isEmpty(contacts)) { });
return JsonResult.buildErrorStateResult(null, null); if (CollectionUtils.isEmpty(contacts)) {
} return JsonResult.buildErrorStateResult(null, null);
Timestamp now = new Timestamp(System.currentTimeMillis());
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, ContactRet.contacts2ContactRets(result));
} }
Timestamp now = new Timestamp(System.currentTimeMillis());
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, ContactRet.contacts2ContactRets(result));
}
@RequestMapping("/address/search/user_id") @RequestMapping("/address/search/user_id")
public JsonResult findAddressByUserId(Long userId) { public JsonResult findAddressByUserId(Long userId) {
if (userId == null) { if (userId == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Address address = addressService.findByUserId(userId); Address address = addressService.findByUserId(userId);
if (address == null) { if (address == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
}
return JsonResult.buildSuccessResult(null, AddressRet.address2AddressRet(address));
} }
return JsonResult.buildSuccessResult(null, AddressRet.address2AddressRet(address));
}
@RequestMapping("/address/save") @RequestMapping("/address/save")
public JsonResult saveAddress( public JsonResult saveAddress(
Long userId, Long provinceCode, Long cityCode, String city, Long userId, Long provinceCode, Long cityCode, String city,
Long districtCode, String district, String address, String province) { Long districtCode, String district, String address, String province) {
LOGGER.info("保存地址详情:city:{},province:{}" + city, province); LOGGER.info("保存地址详情:city:{},province:{}" + city, province);
if (userId == null || provinceCode == null || cityCode == null) { if (userId == null || provinceCode == null || cityCode == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
} }
Address addressObj = addressService.findByUserId(userId); Address addressObj = addressService.findByUserId(userId);
if (addressObj == null) { if (addressObj == null) {
addressObj = new Address(); addressObj = new Address();
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
addressObj.setCreatedAt(now); addressObj.setCreatedAt(now);
addressObj.setUpdateAt(now); addressObj.setUpdateAt(now);
}
addressObj.setUserId(userId);
addressObj.setProvinceCode(provinceCode);
addressObj.setCityCode(cityCode);
addressObj.setCity(city);
addressObj.setDistrictCode(districtCode);
addressObj.setDistrict(district);
addressObj.setAddress(address);
addressObj.setProvince(province);
addressObj = addressService.save(addressObj);
return JsonResult.buildSuccessResult(null, AddressRet.address2AddressRet(addressObj));
} }
addressObj.setUserId(userId);
addressObj.setProvinceCode(provinceCode);
addressObj.setCityCode(cityCode);
addressObj.setCity(city);
addressObj.setDistrictCode(districtCode);
addressObj.setDistrict(district);
addressObj.setAddress(address);
addressObj.setProvince(province);
addressObj = addressService.save(addressObj);
return JsonResult.buildSuccessResult(null, AddressRet.address2AddressRet(addressObj));
}
@RequestMapping("/user_ext_info/update") @RequestMapping("/user_ext_info/update")
public JsonResult updateMarryStatus( public JsonResult updateMarryStatus(
Long userId, IncomeEnum incomeEnum, IncomeRangeEnum incomeRangeEnum, Long userId, IncomeEnum incomeEnum, IncomeRangeEnum incomeRangeEnum,
OccupationEnum occupationEnum, EducationEnum educationEnum, Boolean hasCar, OccupationEnum occupationEnum, EducationEnum educationEnum, Boolean hasCar,
Boolean hasSocialSecurity, Boolean hasHouse, Boolean hasCreditCard, MaritalStatus maritalStatus) { Boolean hasSocialSecurity, Boolean hasHouse, Boolean hasCreditCard, MaritalStatus maritalStatus) {
if (null == userId) { if (null == userId) {
return JsonResult.buildErrorStateResult("用户ID不能为空", null); return JsonResult.buildErrorStateResult("用户ID不能为空", null);
}
UserExtInfo info = userExtInfoService.findByUserId(userId);
if (info == null) {
Timestamp now = new Timestamp(System.currentTimeMillis());
info = new UserExtInfo();
info.setUserId(userId);
info.setCreatedAt(now);
info.setUpdateAt(now);
}
if (incomeEnum != null) {
info.setIncomeEnum(incomeEnum);
}
if (incomeRangeEnum != null) {
info.setIncomeRangeEnum(incomeRangeEnum);
}
if (occupationEnum != null) {
info.setOccupationEnum(occupationEnum);
}
if (educationEnum != null) {
info.setEducationEnum(educationEnum);
}
if (hasCar != null) {
info.setHasCar(hasCar);
}
if (hasSocialSecurity != null) {
info.setHasCreditCard(hasCreditCard);
}
if (hasHouse != null) {
info.setHasHouse(hasHouse);
}
if (maritalStatus != null) {
info.setMarryStatus(maritalStatus);
}
info = userExtInfoService.save(info);
return JsonResult.buildSuccessResult(null, UserExtInfoRet.getUserExtInfoRet(info));
} }
UserExtInfo info = userExtInfoService.findByUserId(userId);
@RequestMapping("/user_detail/search_list") if (info == null) {
public JsonResult searchUserDetailList(String name, String phoneNo, String idNo) { Timestamp now = new Timestamp(System.currentTimeMillis());
List<UserDetail> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo); info = new UserExtInfo();
return JsonResult.buildSuccessResult("success", userDetails); info.setUserId(userId);
info.setCreatedAt(now);
info.setUpdateAt(now);
}
if (incomeEnum != null) {
info.setIncomeEnum(incomeEnum);
}
if (incomeRangeEnum != null) {
info.setIncomeRangeEnum(incomeRangeEnum);
}
if (occupationEnum != null) {
info.setOccupationEnum(occupationEnum);
}
if (educationEnum != null) {
info.setEducationEnum(educationEnum);
}
if (hasCar != null) {
info.setHasCar(hasCar);
} }
if (hasSocialSecurity != null) {
info.setHasCreditCard(hasCreditCard);
}
if (hasHouse != null) {
info.setHasHouse(hasHouse);
}
if (maritalStatus != null) {
info.setMarryStatus(maritalStatus);
}
info = userExtInfoService.save(info);
return JsonResult.buildSuccessResult(null, UserExtInfoRet.getUserExtInfoRet(info));
}
@RequestMapping("/user_detail/search_list")
public JsonResult searchUserDetailList(String name, String phoneNo, String idNo) {
List<UserDetail> userDetails = userDetailService.searchUserDetailList(name, phoneNo, idNo);
return JsonResult.buildSuccessResult("success", userDetails);
}
@RequestMapping("/user_ext_info/search/user_id") @RequestMapping("/user_ext_info/search/user_id")
public JsonResult searchUserExtInfoByUserId(Long userId) { public JsonResult searchUserExtInfoByUserId(Long userId) {
if (userId == null) { if (userId == null) {
return JsonResult.buildErrorStateResult("userId不能为空", null); return JsonResult.buildErrorStateResult("userId不能为空", null);
}
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
if (userExtInfo == null) {
return JsonResult.buildErrorStateResult(null, null);
}
return JsonResult.buildSuccessResult("success", UserExtInfoRet.getUserExtInfoRet(userExtInfo));
} }
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
if (userExtInfo == null) {
return JsonResult.buildErrorStateResult(null, null);
}
return JsonResult.buildSuccessResult("success", UserExtInfoRet.getUserExtInfoRet(userExtInfo));
}
@RequestMapping("/user/query/openId") @RequestMapping("/user/query/openId")
public JsonResult queryOpenIdByUserId(Long userId) { public JsonResult queryOpenIdByUserId(Long userId) {
if(userId == null) { if (userId == null) {
return JsonResult.buildErrorStateResult("userId不能为空", null); return JsonResult.buildErrorStateResult("userId不能为空", null);
} }
WechatUserInfo wechatUserInfo = wechatService.queryOpenIdByUserId(userId); WechatUserInfo wechatUserInfo = wechatService.queryOpenIdByUserId(userId);
if(wechatUserInfo == null) { if (wechatUserInfo == null) {
return JsonResult.buildErrorStateResult(null, null); return JsonResult.buildErrorStateResult(null, null);
}
return JsonResult.buildSuccessResult("success", wechatUserInfo.getOpenId());
} }
return JsonResult.buildSuccessResult("success", wechatUserInfo.getOpenId());
}
@RequestMapping("/user/disable") @RequestMapping("/user/disable")
public JsonResult disableUser(Long userId) { public JsonResult disableUser(Long userId) {
if(null == userId || 0L == userId) { if (null == userId || 0L == userId) {
return JsonResult.buildErrorStateResult("userId不能为空", null); return JsonResult.buildErrorStateResult("userId不能为空", null);
} }
User user = userService.findById(userId); User user = userService.findById(userId);
if(null == user) { if (null == user) {
return JsonResult.buildErrorStateResult("未查询到该用户,用户id:" + userId, null); return JsonResult.buildErrorStateResult("未查询到该用户,用户id:" + userId, null);
} }
user.setEnable(false); user.setEnable(false);
user = userService.saveUser(user); user = userService.saveUser(user);
return JsonResult.buildSuccessResult("用户已禁用.", user.getEnable() == false); if (!user.getEnable()) {
sessionService.deleteByUserId(userId);
} }
return JsonResult.buildSuccessResult("用户已禁用.", user.getEnable() == false);
}
} }
\ No newline at end of file
...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.service.session; ...@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.service.session;
import cn.quantgroup.xyqb.entity.Merchant; import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.function.OneArgFunction;
import cn.quantgroup.xyqb.model.AuthBean; import cn.quantgroup.xyqb.model.AuthBean;
import cn.quantgroup.xyqb.model.LoginProperties; import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
...@@ -14,15 +13,19 @@ import cn.quantgroup.xyqb.model.session.SessionValue; ...@@ -14,15 +13,19 @@ import cn.quantgroup.xyqb.model.session.SessionValue;
public interface ISessionService { public interface ISessionService {
AuthBean createSession(Long channelId, Long createdFrom, String appChannel, User user, Merchant merchant); AuthBean createSession(Long channelId, Long createdFrom, String appChannel, User user, Merchant merchant);
SessionStruct createSessionAndPersist(User user, LoginProperties loginProperties); SessionStruct createSessionAndPersist(User user, LoginProperties loginProperties);
String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties); String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties);
String findSessionValueBySessionId(String sessionId); String findSessionValueBySessionId(String sessionId);
SessionStruct newSession(User user, LoginProperties properties);
void persistSession(String token, SessionValue sessionValue);
SessionStruct findSessionBySessionId(String sessionId); SessionStruct newSession(User user, LoginProperties properties);
void persistSession(String token, SessionValue sessionValue);
SessionStruct findSessionBySessionId(String sessionId);
void deleteByUserId(long userId);
} }
...@@ -3,9 +3,7 @@ package cn.quantgroup.xyqb.service.session.impl; ...@@ -3,9 +3,7 @@ package cn.quantgroup.xyqb.service.session.impl;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.Merchant; import cn.quantgroup.xyqb.entity.Merchant;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.function.OneArgFunction;
import cn.quantgroup.xyqb.model.AuthBean; import cn.quantgroup.xyqb.model.AuthBean;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.LoginProperties; import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.session.SessionStruct; import cn.quantgroup.xyqb.model.session.SessionStruct;
import cn.quantgroup.xyqb.model.session.SessionValue; import cn.quantgroup.xyqb.model.session.SessionValue;
...@@ -21,136 +19,141 @@ import org.springframework.stereotype.Service; ...@@ -21,136 +19,141 @@ import org.springframework.stereotype.Service;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
*
* Created by 11 on 2016/12/28. * Created by 11 on 2016/12/28.
*/ */
@Slf4j @Slf4j
@Service @Service
public class SessionServiceImpl implements ISessionService{ public class SessionServiceImpl implements ISessionService {
@Autowired @Autowired
@Qualifier("stringRedisTemplate") @Qualifier("stringRedisTemplate")
private RedisTemplate<String, String> stringRedisTemplate; private RedisTemplate<String, String> stringRedisTemplate;
@Override @Override
public AuthBean createSession(Long channelId, Long createdFrom, String appChannel, User user, Merchant merchant) { public AuthBean createSession(Long channelId, Long createdFrom, String appChannel, User user, Merchant merchant) {
AuthBean authBean = new AuthBean(); AuthBean authBean = new AuthBean();
LoginProperties properties = new LoginProperties(); LoginProperties properties = new LoginProperties();
properties.setAppChannel(appChannel); properties.setAppChannel(appChannel);
properties.setMerchantName(merchant.getName()); properties.setMerchantName(merchant.getName());
properties.setChannelId(channelId); properties.setChannelId(channelId);
properties.setCreatedFrom(createdFrom); properties.setCreatedFrom(createdFrom);
//找到用户 //找到用户
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties);
// String sessionId = sessionService.findSessionIdByUserIdAndMerchant(user.getId(), merchant); // String sessionId = sessionService.findSessionIdByUserIdAndMerchant(user.getId(), merchant);
if(org.apache.commons.lang.StringUtils.isNotEmpty(sessionId)) { if (org.apache.commons.lang.StringUtils.isNotEmpty(sessionId)) {
SessionStruct sessionStruct = findSessionBySessionId(sessionId); SessionStruct sessionStruct = findSessionBySessionId(sessionId);
sessionStruct.setAttribute("channelId", String.valueOf(channelId)); sessionStruct.setAttribute("channelId", String.valueOf(channelId));
sessionStruct.setAttribute("createdFrom", String.valueOf(createdFrom)); sessionStruct.setAttribute("createdFrom", String.valueOf(createdFrom));
sessionStruct.setAttribute("appChannel", String.valueOf(appChannel)); sessionStruct.setAttribute("appChannel", String.valueOf(appChannel));
authBean.setPhoneNo(user.getPhoneNo()); authBean.setPhoneNo(user.getPhoneNo());
authBean.setToken(sessionStruct.getSid()); authBean.setToken(sessionStruct.getSid());
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", createdFrom, user.getPhoneNo(), appChannel); log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", createdFrom, user.getPhoneNo(), appChannel);
return authBean; return authBean;
}
SessionStruct sessionStruct = createSessionAndPersist(user, properties);
authBean.setPhoneNo(user.getPhoneNo());
authBean.setToken(sessionStruct.getSid());
log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", createdFrom, user.getPhoneNo(), appChannel);
return authBean;
} }
SessionStruct sessionStruct = createSessionAndPersist(user, properties);
authBean.setPhoneNo(user.getPhoneNo());
authBean.setToken(sessionStruct.getSid());
log.info("用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{}", createdFrom, user.getPhoneNo(), appChannel);
return authBean;
}
@Override @Override
public SessionStruct createSessionAndPersist(User user, LoginProperties properties) { public SessionStruct createSessionAndPersist(User user, LoginProperties properties) {
SessionStruct sessionStruct; SessionStruct sessionStruct;
//获取sessionid //获取sessionid
String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties); String sessionId = findSessionIdByUserIdLoginProperties(user.getId(), properties);
if (StringUtils.length(sessionId) == 36) { if (StringUtils.length(sessionId) == 36) {
sessionStruct = findSessionBySessionId(sessionId); sessionStruct = findSessionBySessionId(sessionId);
if (sessionStruct == null) { if (sessionStruct == null) {
sessionStruct = newSession(user, properties); sessionStruct = newSession(user, properties);
} else { } else {
sessionStruct.getValues().setLoginProperties(properties); sessionStruct.getValues().setLoginProperties(properties);
} }
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
} else { } else {
sessionStruct = newSession(user, properties); sessionStruct = newSession(user, properties);
persistSession(sessionStruct.getSid(), sessionStruct.getValues()); persistSession(sessionStruct.getSid(), sessionStruct.getValues());
}
return sessionStruct;
} }
return sessionStruct;
}
@Override @Override
public String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties) { public String findSessionIdByUserIdLoginProperties(Long userId, LoginProperties properties) {
return stringRedisTemplate.opsForValue().get(generateLoginPropertiesKey(userId, properties)); return stringRedisTemplate.opsForValue().get(generateLoginPropertiesKey(userId, properties));
} }
private String generateLoginPropertiesKey(Long userId, LoginProperties properties) {
if ("baitiao".equals(properties.getMerchantName())) {
return Constants.Session.USER_SESSION_ID_CACHE + ":" + String.valueOf(userId) + ":" + properties.getMerchantName() + ":" + properties.getCreatedFrom();
} else {
return Constants.Session.USER_SESSION_ID_CACHE + ":" + String.valueOf(userId) + ":" + properties.getMerchantName();
}
}
@Override private String generateLoginPropertiesKey(Long userId, LoginProperties properties) {
public String findSessionValueBySessionId(String sessionId){ if ("baitiao".equals(properties.getMerchantName())) {
String result = stringRedisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + sessionId); return Constants.Session.USER_SESSION_ID_CACHE + ":" + String.valueOf(userId) + ":" + properties.getMerchantName() + ":" + properties.getCreatedFrom();
return StringUtils.defaultString(result, ""); } else {
return Constants.Session.USER_SESSION_ID_CACHE + ":" + String.valueOf(userId) + ":" + properties.getMerchantName();
} }
}
@Override @Override
public SessionStruct newSession(User user, LoginProperties loginProperties){ public String findSessionValueBySessionId(String sessionId) {
Timestamp now = new Timestamp(System.currentTimeMillis()); String result = stringRedisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + sessionId);
SessionStruct sessionStruct = new SessionStruct(); return StringUtils.defaultString(result, "");
SessionValue sessionValue = new SessionValue(); }
sessionStruct.setSid(UUID.randomUUID().toString());
sessionValue.setCreatedAt(now);
sessionValue.setLastAccessTime(now);
sessionValue.setUser(user);
sessionValue.setLoginProperties(loginProperties);
Map<String, String> values = new HashMap<>();
sessionValue.setValues(values);
sessionStruct.setValues(sessionValue);
return sessionStruct;
}
@Override @Override
public void persistSession(String token, SessionValue sessionValue) { public SessionStruct newSession(User user, LoginProperties loginProperties) {
Timestamp current = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
sessionValue.setLastAccessTime(current); SessionStruct sessionStruct = new SessionStruct();
String json = JSON.toJSONString(sessionValue); SessionValue sessionValue = new SessionValue();
stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json, sessionStruct.setSid(UUID.randomUUID().toString());
Constants.Session.ONE_DAY, TimeUnit.SECONDS); sessionValue.setCreatedAt(now);
String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties()); sessionValue.setLastAccessTime(now);
stringRedisTemplate.opsForValue().set(key, token, Constants.Session.ONE_DAY, TimeUnit.SECONDS); sessionValue.setUser(user);
} sessionValue.setLoginProperties(loginProperties);
Map<String, String> values = new HashMap<>();
sessionValue.setValues(values);
sessionStruct.setValues(sessionValue);
return sessionStruct;
}
@Override @Override
public SessionStruct findSessionBySessionId(String sessionId) { public void persistSession(String token, SessionValue sessionValue) {
String sessionValue = findSessionValueBySessionId(sessionId); Timestamp current = new Timestamp(System.currentTimeMillis());
if(StringUtils.isEmpty(sessionValue)) { sessionValue.setLastAccessTime(current);
return null; String json = JSON.toJSONString(sessionValue);
} stringRedisTemplate.opsForValue().set(Constants.Session.USER_SESSION_CACHE + token, json,
try { Constants.Session.ONE_DAY, TimeUnit.SECONDS);
SessionValue value = JSON.parseObject(sessionValue, SessionValue.class); String key = generateLoginPropertiesKey(sessionValue.getUser().getId(), sessionValue.getLoginProperties());
if (null == value) { stringRedisTemplate.opsForValue().set(key, token, Constants.Session.ONE_DAY, TimeUnit.SECONDS);
return null; }
}
SessionStruct struct = new SessionStruct();
struct.setSid(sessionId);
struct.setValues(value);
return struct;
} catch (Exception ex) {
return null;
}
@Override
public SessionStruct findSessionBySessionId(String sessionId) {
String sessionValue = findSessionValueBySessionId(sessionId);
if (StringUtils.isEmpty(sessionValue)) {
return null;
}
try {
SessionValue value = JSON.parseObject(sessionValue, SessionValue.class);
if (null == value) {
return null;
}
SessionStruct struct = new SessionStruct();
struct.setSid(sessionId);
struct.setValues(value);
return struct;
} catch (Exception ex) {
return null;
} }
}
@Override
public void deleteByUserId(long userId) {
String pattern = Constants.Session.USER_SESSION_ID_CACHE + ":" + String.valueOf(userId) + ":*";
Set<String> keys = stringRedisTemplate.keys(pattern);
stringRedisTemplate.delete(keys);
}
} }
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