package com.care.keeper.service; import com.care.common.cache.RedisKeyConstant; import com.care.common.cache.RedisUtil; import com.care.common.entity.CareSysUser; import com.care.common.exception.BDException; import com.care.common.service.CareSysUserService; import com.care.common.util.CheckUtils; import com.care.common.util.Result; import com.care.common.util.WxUtil; import com.care.keeper.vo.KeeperInfoVO; import com.care.keeper.vo.KeeperInitParams; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; @Slf4j @Service public class KeeperPassportService extends AbstractKeeperPassportService{ @Resource private RedisUtil redisUtil; @Resource private WxKeeperPassportService wxKeeperPassportService; @Resource private CareSysUserService careSysUserService; public Result login(KeeperInitParams params) { if ("wx".equalsIgnoreCase(params.getLoginType())) { CheckUtils.valueIsNull(params, "code"); Result result = wxKeeperPassportService.login(params); return result; } else if ("pwd".equalsIgnoreCase(params.getLoginType())) { CheckUtils.valueIsNull(params, "phone"); CheckUtils.valueIsNull(params, "password"); CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(params.getPhone()); if (careSysUser == null){ return Result.error("手机号没注册"); } if (!DigestUtils.md5Hex(params.getPassword()).equals(careSysUser.getPassword())) { return Result.error("密码错误"); } cache(params); return Result.success(); } return Result.error(); } public void logout(String token) { CheckUtils.notNull(token, "token"); KeeperInfoVO memberInfoVO = (KeeperInfoVO) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token); if (memberInfoVO != null) { redisUtil.hset(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token, null); } } public KeeperInfoVO checkToken(String token) { CheckUtils.notNull(token, "token"); if (!redisUtil.hHasKey(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token)) { throw new BDException(400002, "TOKEN WAS WRONG :[{"+token+"}]" ); } return (KeeperInfoVO) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_LOGIN_INFO, token); } public Boolean changePwd(String password,Long userId) { CareSysUser careSysUser = careSysUserService.getById(userId); careSysUser.setPassword(DigestUtils.md5Hex(password)); return careSysUserService.updateById(careSysUser); } public Boolean decodePhoneNumber(String code, String encryptedData,String iv) { KeeperInitParams params = (KeeperInitParams) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO, code); String sessionKey = params.getSessionKey(); String phone = WxUtil.getPhoneNumber(encryptedData,sessionKey,iv); if (StringUtils.isEmpty(phone)) { return false; } params.setPhone(phone); CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(phone); if (careSysUser == null) { //没注册 return false; } else { //已经注册了 cache(params); return true; } } }