KeeperPassportService.java 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.care.keeper.service;
  2. import com.care.common.cache.RedisKeyConstant;
  3. import com.care.common.cache.RedisUtil;
  4. import com.care.common.entity.CareSysUser;
  5. import com.care.common.exception.BDException;
  6. import com.care.common.service.CareSysUserService;
  7. import com.care.common.util.CheckUtils;
  8. import com.care.common.util.Result;
  9. import com.care.common.util.WxUtil;
  10. import com.care.keeper.vo.KeeperInfoVO;
  11. import com.care.keeper.vo.KeeperInitParams;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.apache.commons.codec.digest.DigestUtils;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.util.StringUtils;
  16. import javax.annotation.Resource;
  17. @Slf4j
  18. @Service
  19. public class KeeperPassportService extends AbstractKeeperPassportService{
  20. @Resource
  21. private RedisUtil redisUtil;
  22. @Resource
  23. private WxKeeperPassportService wxKeeperPassportService;
  24. @Resource
  25. private CareSysUserService careSysUserService;
  26. public Result<Object> login(KeeperInitParams params) {
  27. if ("wx".equalsIgnoreCase(params.getLoginType())) {
  28. CheckUtils.valueIsNull(params, "code");
  29. Result<Object> result = wxKeeperPassportService.login(params);
  30. return result;
  31. } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
  32. CheckUtils.valueIsNull(params, "phone");
  33. CheckUtils.valueIsNull(params, "password");
  34. CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(params.getPhone());
  35. if (careSysUser == null){
  36. return Result.error("手机号没注册");
  37. }
  38. if (!DigestUtils.md5Hex(params.getPassword()).equals(careSysUser.getPassword())) {
  39. return Result.error("密码错误");
  40. }
  41. cache(params);
  42. return Result.success();
  43. }
  44. return Result.error();
  45. }
  46. public void logout(String token) {
  47. CheckUtils.notNull(token, "token");
  48. KeeperInfoVO memberInfoVO = (KeeperInfoVO) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token);
  49. if (memberInfoVO != null) {
  50. redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, null);
  51. }
  52. }
  53. public KeeperInfoVO checkToken(String token) {
  54. CheckUtils.notNull(token, "token");
  55. if (!redisUtil.hHasKey(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token)) {
  56. throw new BDException(400002, "TOKEN WAS WRONG :[{"+token+"}]" );
  57. }
  58. return (KeeperInfoVO) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token);
  59. }
  60. public Boolean changePwd(String password,Long userId) {
  61. CareSysUser careSysUser = careSysUserService.getById(userId);
  62. careSysUser.setPassword(DigestUtils.md5Hex(password));
  63. return careSysUserService.updateById(careSysUser);
  64. }
  65. public Boolean decodePhoneNumber(String code, String encryptedData,String iv) {
  66. KeeperInitParams params = (KeeperInitParams) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO, code);
  67. String sessionKey = params.getSessionKey();
  68. String phone = WxUtil.getPhoneNumber(encryptedData,sessionKey,iv);
  69. if (StringUtils.isEmpty(phone)) {
  70. return false;
  71. }
  72. params.setPhone(phone);
  73. CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(phone);
  74. if (careSysUser == null) { //没注册
  75. return false;
  76. } else { //已经注册了
  77. cache(params);
  78. return true;
  79. }
  80. }
  81. }