|
@@ -2,48 +2,41 @@ package com.huaxu.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-
|
|
|
import com.huaxu.dao.LoginLogMapper;
|
|
|
import com.huaxu.dao.UserMapper;
|
|
|
+import com.huaxu.dto.UserAuthDto;
|
|
|
import com.huaxu.dto.UserDto;
|
|
|
import com.huaxu.entity.LoginLog;
|
|
|
import com.huaxu.entity.MenuEntity;
|
|
|
import com.huaxu.entity.Org;
|
|
|
import com.huaxu.entity.User;
|
|
|
-import com.huaxu.model.*;
|
|
|
-import com.huaxu.security.config.RedisTokenStore;
|
|
|
-import com.huaxu.security.exception.SecurityException;
|
|
|
+import com.huaxu.exception.ServiceException;
|
|
|
+import com.huaxu.model.LoginUser;
|
|
|
+import com.huaxu.model.Permission;
|
|
|
+import com.huaxu.model.ProgramItem;
|
|
|
+import com.huaxu.model.ResultStatus;
|
|
|
import com.huaxu.security.mobile.MobileLoginAuthenticationToken;
|
|
|
-import com.huaxu.security.smsCode.SmsCodeException;
|
|
|
import com.huaxu.service.UserService;
|
|
|
-import com.huaxu.util.ByteArrayUtils;
|
|
|
-import com.huaxu.util.RedisUtil;
|
|
|
-import com.huaxu.util.UserUtil;
|
|
|
-import com.huaxu.util.Util;
|
|
|
+import com.huaxu.util.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.apache.ibatis.annotations.Param;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
-import org.springframework.data.redis.connection.RedisConnection;
|
|
|
import org.springframework.http.HttpEntity;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
|
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
import org.springframework.security.oauth2.common.OAuth2AccessToken;
|
|
|
-import org.springframework.security.oauth2.common.exceptions.UnapprovedClientAuthenticationException;
|
|
|
-import org.springframework.security.oauth2.provider.*;
|
|
|
+import org.springframework.security.oauth2.provider.ClientDetailsService;
|
|
|
+import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
|
|
import org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices;
|
|
|
import org.springframework.security.oauth2.provider.token.ConsumerTokenServices;
|
|
|
import org.springframework.security.oauth2.provider.token.TokenStore;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
|
import org.springframework.util.MultiValueMap;
|
|
|
-import org.springframework.util.ReflectionUtils;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
import sun.misc.BASE64Encoder;
|
|
|
|
|
@@ -200,6 +193,7 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
@Override
|
|
|
public String getRangeCode(String appId) {
|
|
|
+ UserAuthDto userAuthDto = new UserAuthDto();
|
|
|
LoginUser currentUser = UserUtil.getCurrentUser();
|
|
|
Integer id = currentUser.getId();
|
|
|
String appSecret=userMapper.getAppSecret(appId);
|
|
@@ -213,12 +207,14 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
|
|
|
if(uniqueUserID!=null){
|
|
|
+ userAuthDto.setUniqId(uniqueUserID);
|
|
|
+ userAuthDto.setMobile(currentUser.getPhoneNumber());
|
|
|
for (int i=0;i<6;i++)
|
|
|
{
|
|
|
code+=random.nextInt(10);
|
|
|
}
|
|
|
String key=code+"_"+appId+"_"+appSecret;
|
|
|
- redisUtil.set(key,uniqueUserID);
|
|
|
+ redisUtil.set(key, JSONObject.toJSONString(userAuthDto));
|
|
|
redisUtil.setExpire(key,300);
|
|
|
}
|
|
|
|
|
@@ -231,6 +227,34 @@ public class UserServiceImpl implements UserService {
|
|
|
return redisUtil.get(key);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public UserAuthDto getUniqId(String appId, String encryptValue) {
|
|
|
+ String appSecret = userMapper.getAppSecret(appId);
|
|
|
+ if (StringUtils.isEmpty(appSecret)){
|
|
|
+ throw new ServiceException(ResultStatus.USER_AUTH_APPID_NOT_FOUND);
|
|
|
+ }
|
|
|
+ String key = null;
|
|
|
+ try {
|
|
|
+ // 验证加密的内容是否正确
|
|
|
+ key = DESUtil.decrypt(encryptValue,appSecret);
|
|
|
+ // 截取里面的时间
|
|
|
+ String date = key.substring(key.lastIndexOf("_") + 1, key.length());
|
|
|
+ // 验证在5分钟之内是否是有效的加密
|
|
|
+ if (!DESUtil.verifyTime(Long.parseLong(date), 5)){
|
|
|
+ throw new ServiceException(ResultStatus.USER_AUTH_ENCRYPT_VALUE_VERIFY_ERROR);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ServiceException(ResultStatus.USER_AUTH_ENCRYPT_VALUE_VERIFY_ERROR);
|
|
|
+ }
|
|
|
+ String value = redisUtil.get(key.substring(0, key.lastIndexOf("_")));
|
|
|
+ if (StringUtils.isEmpty(value)){
|
|
|
+ throw new ServiceException(ResultStatus.USER_AUTH_UNIQID_OR_CODE_ISNULL);
|
|
|
+ }
|
|
|
+ UserAuthDto dto = JSONObject.parseObject(value,UserAuthDto.class);
|
|
|
+ dto.setMessage(key);
|
|
|
+ return dto;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public User chooseUser(User user) {
|
|
@@ -477,6 +501,16 @@ public class UserServiceImpl implements UserService {
|
|
|
insertLoginLog(UserUtil.getCurrentUser(),"登出");
|
|
|
return flag;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 新增注册数据
|
|
|
+ * @author yjy
|
|
|
+ * @param user 实例对象
|
|
|
+ * @return 影响行数
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int insertRegister(User user) {
|
|
|
+ return this.userMapper.insertRegister(user);
|
|
|
+ }
|
|
|
private void insertLoginLog(LoginUser loginUser,String type){
|
|
|
LoginLog loginLog=new LoginLog();
|
|
|
loginLog.setName(loginUser.getName());
|
|
@@ -489,14 +523,4 @@ public class UserServiceImpl implements UserService {
|
|
|
loginLog.setLoginIp(Util.getIpAddr(request));
|
|
|
loginLogMapper.insert(loginLog);
|
|
|
}
|
|
|
- /**
|
|
|
- * 新增注册数据
|
|
|
- * @author yjy
|
|
|
- * @param user 实例对象
|
|
|
- * @return 影响行数
|
|
|
- */
|
|
|
- @Override
|
|
|
- public int insertRegister(User user) {
|
|
|
- return this.userMapper.insertRegister(user);
|
|
|
- }
|
|
|
}
|