diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
new file mode 100644
index 0000000..6fd6672
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.*;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 生成jwt工具类
+ */
+public class JJWTRootUtils {
+
+ //定义对应的编码算法
+ static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ //盐值
+ static String secretKey = "asdfdsagfdgfdagdafgwetreg";
+
+ //获取key(指定算法和盐值的key对象)
+ private static Key generateKey(){
+ //将盐值转成字节
+ byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
+ //根据算法和盐值生成对应的key值
+ Key key = new SecretKeySpec(bytes, signatureAlgorithm.getJcaName());
+ return key;
+ }
+
+ /**
+ * 将我们的数据使用JWT的方式变成一个token xxx.yyy.zzz
+ * @param payLoad 负载(数据信息)
+ * @return
+ */
+ public static String generatorToken(Map payLoad){
+ ObjectMapper objectMapper = new ObjectMapper();
+ try{
+ //构建jwt生成器
+ JwtBuilder builder = Jwts.builder();
+ //将负载信息设置到jwt生成器中
+ JwtBuilder jwtBuilder = builder.setPayload(objectMapper.writeValueAsString(payLoad));
+ //根据签名算法和key值,生成新的jwtBuilder
+ JwtBuilder jwtBuilder1 = jwtBuilder.signWith(signatureAlgorithm, generateKey());
+ String token = jwtBuilder1.compact();
+ return token;
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 根据指定的token, 返回对应的body信息
+ * @param token
+ * @return
+ */
+ public static Claims phaseTokenGetBody(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ Claims body = claimsJws.getBody();//主要存放的信息
+ return body;
+ }
+
+ /**
+ * 根据指定的token获取签名信息
+ * @param token
+ * @return
+ */
+ public static String phaseTokenGetSignature(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ String signature = claimsJws.getSignature();
+ return signature;
+ }
+
+
+ /**
+ * 根据指定的token获取头信息
+ * @param token
+ * @return
+ */
+ public static JwsHeader phaseTokenGetHeader(String token){
+ //获取解析器
+ JwtParser parser = Jwts.parser();
+ //设置签名key(盐值)
+ parser = parser.setSigningKey(generateKey());
+ //解析token
+ Jws claimsJws = parser.parseClaimsJws(token);
+ JwsHeader header = claimsJws.getHeader();
+ return header;
+ }
+
+
+ public static void main(String[] args) {
+ //随机获取盐值
+// System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
+ Map payLoad = new HashMap<>();
+ payLoad.put("name", "curry");
+ String s = generatorToken(payLoad);
+ //eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiY3VycnkifQ.Sf3GiF3p56nLzoAxEHLXcAckPmmPTtecj1_lGT9oV8s
+ System.out.println(s);
+
+ //调用自定义API获取结果
+ Claims claims = phaseTokenGetBody(s);
+ //{name=curry}
+ System.out.println(claims);
+ }
+
+}
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
new file mode 100644
index 0000000..6fd6672
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.*;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 生成jwt工具类
+ */
+public class JJWTRootUtils {
+
+ //定义对应的编码算法
+ static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ //盐值
+ static String secretKey = "asdfdsagfdgfdagdafgwetreg";
+
+ //获取key(指定算法和盐值的key对象)
+ private static Key generateKey(){
+ //将盐值转成字节
+ byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
+ //根据算法和盐值生成对应的key值
+ Key key = new SecretKeySpec(bytes, signatureAlgorithm.getJcaName());
+ return key;
+ }
+
+ /**
+ * 将我们的数据使用JWT的方式变成一个token xxx.yyy.zzz
+ * @param payLoad 负载(数据信息)
+ * @return
+ */
+ public static String generatorToken(Map payLoad){
+ ObjectMapper objectMapper = new ObjectMapper();
+ try{
+ //构建jwt生成器
+ JwtBuilder builder = Jwts.builder();
+ //将负载信息设置到jwt生成器中
+ JwtBuilder jwtBuilder = builder.setPayload(objectMapper.writeValueAsString(payLoad));
+ //根据签名算法和key值,生成新的jwtBuilder
+ JwtBuilder jwtBuilder1 = jwtBuilder.signWith(signatureAlgorithm, generateKey());
+ String token = jwtBuilder1.compact();
+ return token;
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 根据指定的token, 返回对应的body信息
+ * @param token
+ * @return
+ */
+ public static Claims phaseTokenGetBody(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ Claims body = claimsJws.getBody();//主要存放的信息
+ return body;
+ }
+
+ /**
+ * 根据指定的token获取签名信息
+ * @param token
+ * @return
+ */
+ public static String phaseTokenGetSignature(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ String signature = claimsJws.getSignature();
+ return signature;
+ }
+
+
+ /**
+ * 根据指定的token获取头信息
+ * @param token
+ * @return
+ */
+ public static JwsHeader phaseTokenGetHeader(String token){
+ //获取解析器
+ JwtParser parser = Jwts.parser();
+ //设置签名key(盐值)
+ parser = parser.setSigningKey(generateKey());
+ //解析token
+ Jws claimsJws = parser.parseClaimsJws(token);
+ JwsHeader header = claimsJws.getHeader();
+ return header;
+ }
+
+
+ public static void main(String[] args) {
+ //随机获取盐值
+// System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
+ Map payLoad = new HashMap<>();
+ payLoad.put("name", "curry");
+ String s = generatorToken(payLoad);
+ //eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiY3VycnkifQ.Sf3GiF3p56nLzoAxEHLXcAckPmmPTtecj1_lGT9oV8s
+ System.out.println(s);
+
+ //调用自定义API获取结果
+ Claims claims = phaseTokenGetBody(s);
+ //{name=curry}
+ System.out.println(claims);
+ }
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
deleted file mode 100644
index 1d0c415..0000000
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.missiles.modular.system.utils;
-
-public interface Status {
- String OK = "请求成功";
- String FAIL = "请求失败";
- String SYSTEM_ERROR = "系统异常";
- String LOGIN_SUCCEEDED = "登录成功";
- String EMPLOYEE_NOT_EXIS = "员工不存在";
- String USER_ALREADY_REGISTERED = "该账号已注册";
- String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
- String FAILED_CERTIFICATION = "认证不通过";
- String FAILED_PHONE = "授权手机号不正确";
- String PHONE_GET_FAILED = "手机号获取失败";
- String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
-
-
-}
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
new file mode 100644
index 0000000..6fd6672
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.*;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 生成jwt工具类
+ */
+public class JJWTRootUtils {
+
+ //定义对应的编码算法
+ static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ //盐值
+ static String secretKey = "asdfdsagfdgfdagdafgwetreg";
+
+ //获取key(指定算法和盐值的key对象)
+ private static Key generateKey(){
+ //将盐值转成字节
+ byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
+ //根据算法和盐值生成对应的key值
+ Key key = new SecretKeySpec(bytes, signatureAlgorithm.getJcaName());
+ return key;
+ }
+
+ /**
+ * 将我们的数据使用JWT的方式变成一个token xxx.yyy.zzz
+ * @param payLoad 负载(数据信息)
+ * @return
+ */
+ public static String generatorToken(Map payLoad){
+ ObjectMapper objectMapper = new ObjectMapper();
+ try{
+ //构建jwt生成器
+ JwtBuilder builder = Jwts.builder();
+ //将负载信息设置到jwt生成器中
+ JwtBuilder jwtBuilder = builder.setPayload(objectMapper.writeValueAsString(payLoad));
+ //根据签名算法和key值,生成新的jwtBuilder
+ JwtBuilder jwtBuilder1 = jwtBuilder.signWith(signatureAlgorithm, generateKey());
+ String token = jwtBuilder1.compact();
+ return token;
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 根据指定的token, 返回对应的body信息
+ * @param token
+ * @return
+ */
+ public static Claims phaseTokenGetBody(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ Claims body = claimsJws.getBody();//主要存放的信息
+ return body;
+ }
+
+ /**
+ * 根据指定的token获取签名信息
+ * @param token
+ * @return
+ */
+ public static String phaseTokenGetSignature(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ String signature = claimsJws.getSignature();
+ return signature;
+ }
+
+
+ /**
+ * 根据指定的token获取头信息
+ * @param token
+ * @return
+ */
+ public static JwsHeader phaseTokenGetHeader(String token){
+ //获取解析器
+ JwtParser parser = Jwts.parser();
+ //设置签名key(盐值)
+ parser = parser.setSigningKey(generateKey());
+ //解析token
+ Jws claimsJws = parser.parseClaimsJws(token);
+ JwsHeader header = claimsJws.getHeader();
+ return header;
+ }
+
+
+ public static void main(String[] args) {
+ //随机获取盐值
+// System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
+ Map payLoad = new HashMap<>();
+ payLoad.put("name", "curry");
+ String s = generatorToken(payLoad);
+ //eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiY3VycnkifQ.Sf3GiF3p56nLzoAxEHLXcAckPmmPTtecj1_lGT9oV8s
+ System.out.println(s);
+
+ //调用自定义API获取结果
+ Claims claims = phaseTokenGetBody(s);
+ //{name=curry}
+ System.out.println(claims);
+ }
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
deleted file mode 100644
index 1d0c415..0000000
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.missiles.modular.system.utils;
-
-public interface Status {
- String OK = "请求成功";
- String FAIL = "请求失败";
- String SYSTEM_ERROR = "系统异常";
- String LOGIN_SUCCEEDED = "登录成功";
- String EMPLOYEE_NOT_EXIS = "员工不存在";
- String USER_ALREADY_REGISTERED = "该账号已注册";
- String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
- String FAILED_CERTIFICATION = "认证不通过";
- String FAILED_PHONE = "授权手机号不正确";
- String PHONE_GET_FAILED = "手机号获取失败";
- String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
-
-
-}
diff --git a/casic-web/pom.xml b/casic-web/pom.xml
index bd4cef8..eeeaaec 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -56,6 +56,22 @@
org.springframework.boot
spring-boot-starter-jdbc
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+
+
com.casic
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
new file mode 100644
index 0000000..6fd6672
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.*;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 生成jwt工具类
+ */
+public class JJWTRootUtils {
+
+ //定义对应的编码算法
+ static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ //盐值
+ static String secretKey = "asdfdsagfdgfdagdafgwetreg";
+
+ //获取key(指定算法和盐值的key对象)
+ private static Key generateKey(){
+ //将盐值转成字节
+ byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
+ //根据算法和盐值生成对应的key值
+ Key key = new SecretKeySpec(bytes, signatureAlgorithm.getJcaName());
+ return key;
+ }
+
+ /**
+ * 将我们的数据使用JWT的方式变成一个token xxx.yyy.zzz
+ * @param payLoad 负载(数据信息)
+ * @return
+ */
+ public static String generatorToken(Map payLoad){
+ ObjectMapper objectMapper = new ObjectMapper();
+ try{
+ //构建jwt生成器
+ JwtBuilder builder = Jwts.builder();
+ //将负载信息设置到jwt生成器中
+ JwtBuilder jwtBuilder = builder.setPayload(objectMapper.writeValueAsString(payLoad));
+ //根据签名算法和key值,生成新的jwtBuilder
+ JwtBuilder jwtBuilder1 = jwtBuilder.signWith(signatureAlgorithm, generateKey());
+ String token = jwtBuilder1.compact();
+ return token;
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 根据指定的token, 返回对应的body信息
+ * @param token
+ * @return
+ */
+ public static Claims phaseTokenGetBody(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ Claims body = claimsJws.getBody();//主要存放的信息
+ return body;
+ }
+
+ /**
+ * 根据指定的token获取签名信息
+ * @param token
+ * @return
+ */
+ public static String phaseTokenGetSignature(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ String signature = claimsJws.getSignature();
+ return signature;
+ }
+
+
+ /**
+ * 根据指定的token获取头信息
+ * @param token
+ * @return
+ */
+ public static JwsHeader phaseTokenGetHeader(String token){
+ //获取解析器
+ JwtParser parser = Jwts.parser();
+ //设置签名key(盐值)
+ parser = parser.setSigningKey(generateKey());
+ //解析token
+ Jws claimsJws = parser.parseClaimsJws(token);
+ JwsHeader header = claimsJws.getHeader();
+ return header;
+ }
+
+
+ public static void main(String[] args) {
+ //随机获取盐值
+// System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
+ Map payLoad = new HashMap<>();
+ payLoad.put("name", "curry");
+ String s = generatorToken(payLoad);
+ //eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiY3VycnkifQ.Sf3GiF3p56nLzoAxEHLXcAckPmmPTtecj1_lGT9oV8s
+ System.out.println(s);
+
+ //调用自定义API获取结果
+ Claims claims = phaseTokenGetBody(s);
+ //{name=curry}
+ System.out.println(claims);
+ }
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
deleted file mode 100644
index 1d0c415..0000000
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.missiles.modular.system.utils;
-
-public interface Status {
- String OK = "请求成功";
- String FAIL = "请求失败";
- String SYSTEM_ERROR = "系统异常";
- String LOGIN_SUCCEEDED = "登录成功";
- String EMPLOYEE_NOT_EXIS = "员工不存在";
- String USER_ALREADY_REGISTERED = "该账号已注册";
- String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
- String FAILED_CERTIFICATION = "认证不通过";
- String FAILED_PHONE = "授权手机号不正确";
- String PHONE_GET_FAILED = "手机号获取失败";
- String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
-
-
-}
diff --git a/casic-web/pom.xml b/casic-web/pom.xml
index bd4cef8..eeeaaec 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -56,6 +56,22 @@
org.springframework.boot
spring-boot-starter-jdbc
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+
+
com.casic
diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index 083a82f..f7ca146 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -7,6 +7,9 @@
url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit_mini?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true
username: root
password: Casic203
+ redis:
+ host: 127.0.0.1
+ port: 6379
# session:
# store-type: redis
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
index dca98c3..060eae2 100644
--- a/casic-server/pom.xml
+++ b/casic-server/pom.xml
@@ -88,6 +88,18 @@
casic-export-support
${extension.version}
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+ compile
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+ compile
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
index b4754dd..e45be89 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/UserController.java
@@ -2,19 +2,18 @@
import com.alibaba.fastjson.JSONObject;
import com.casic.missiles.model.response.ResponseData;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.*;
-import dm.jdbc.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
/**
* @Description: 小程序用户
@@ -28,13 +27,19 @@
@Resource
private UserActionService userActionService;
+ @RequestMapping("getLoginToken")
+ @ResponseBody
+ public Object getLoginToken(String code){
+ return userActionService.getLoginToken(code);
+ }
+
/**
- * 登录
+ * 认证手机号登录
*/
@RequestMapping("userLogin")
@ResponseBody
- public Object userLogin(@RequestBody ParamsDto dto){
- return userActionService.userLogin(dto);
+ public Object userLogin(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.userLogin(dto,request);
}
/**
@@ -58,36 +63,26 @@
*/
@RequestMapping("updateUserImg")
@ResponseBody
- public Object updateUserImg(@RequestBody ParamsDto dto){
- return userActionService.updateUserImg(dto);
+ public Object updateUserImg(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.updateUserImg(dto,request);
}
/**
* 获取用户权限
*/
@RequestMapping("getUserJurisdiction")
@ResponseBody
- public Object getUserJurisdiction(@RequestBody ParamsDto dto){
- return userActionService.getUserJurisdiction(dto);
+ public Object getUserJurisdiction(@RequestBody ParamsDto dto, HttpServletRequest request){
+ return userActionService.getUserJurisdiction(dto,request);
}
/**
- * 修改密码
+ * 获取用户信息
*/
-
- /**
- * 员工导入
- */
- /**
- * 获取微信openid,sessionkey等信息
- */
- @RequestMapping("getWxOpenidInfo")
+ @RequestMapping("getUserInfo")
@ResponseBody
- public Object getWxOpenidInfo(@RequestParam String code) {
- if (StringUtil.isEmpty(code)) {
- return null;
- }
- JSONObject jsonObject = WXUserUtils.getOpenId(code);
- return ResponseData.success(jsonObject);
+ public Object getUserInfo(HttpServletRequest request){
+ return userActionService.getUserInfo(request);
}
+
/**
* 获取微信手机号
*/
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
new file mode 100644
index 0000000..6de6999
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/Status.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.modular.system.enums;
+
+public interface Status {
+ String OK = "请求成功";
+ String FAIL = "请求失败";
+ String SYSTEM_ERROR = "系统异常";
+ String LOGIN_SUCCEEDED = "登录成功";
+ String EMPLOYEE_NOT_EXIS = "员工不存在";
+ String USER_ALREADY_REGISTERED = "该账号已注册";
+ String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
+ String FAILED_CERTIFICATION = "认证不通过";
+ String FAILED_PHONE = "授权手机号不正确";
+ String PHONE_GET_FAILED = "手机号获取失败";
+ String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
+ String TOKEN_EXPIRES = "登录过期,请重新登录";
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
index a1608fd..4a9527f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/UserActionService.java
@@ -5,15 +5,21 @@
import com.casic.missiles.modular.system.dto.ParamsDto;
import com.casic.missiles.modular.system.model.Dict;
+import javax.servlet.http.HttpServletRequest;
+
public interface UserActionService extends IService {
Object getUserType();
Object userRegister(UserDto userDto);
- Object userLogin(ParamsDto dto);
+ Object userLogin(ParamsDto dto, HttpServletRequest request);
- Object updateUserImg(ParamsDto dto);
+ Object updateUserImg(ParamsDto dto, HttpServletRequest request);
- Object getUserJurisdiction(ParamsDto dto);
+ Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request);
+
+ Object getLoginToken(String code);
+
+ Object getUserInfo(HttpServletRequest request);
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
index 9d469ae..8af18cc 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/UserActionServiceImpl.java
@@ -2,22 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.system.dao.UserActionMapper;
-import com.casic.missiles.modular.system.dto.UserDto;
import com.casic.missiles.modular.system.dto.ParamsDto;
+import com.casic.missiles.modular.system.dto.UserDto;
+import com.casic.missiles.modular.system.enums.Status;
import com.casic.missiles.modular.system.model.Dict;
import com.casic.missiles.modular.system.service.UserActionService;
-import com.casic.missiles.modular.system.utils.Status;
+import com.casic.missiles.modular.system.utils.JJWTRootUtils;
import com.casic.missiles.modular.system.utils.UuidUtils;
import com.casic.missiles.modular.system.utils.WXUserUtils;
import dm.jdbc.util.StringUtil;
-import org.springframework.beans.factory.annotation.Value;
+import io.jsonwebtoken.Claims;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Service("UserActionService")
public class UserActionServiceImpl extends ServiceImpl implements UserActionService {
@@ -25,14 +34,39 @@
@Resource
private UserActionMapper userActionDao;
- @Value("${casic.file.uploadPath}")
- private String filePath;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ final String SALT = "y76dniizew";
@Override
- public Object userLogin(ParamsDto dto) {
+ public Object getLoginToken(String code) {
+ JSONObject jsonObject = WXUserUtils.getOpenId(code);
+ if(null == jsonObject.get("openid")){
+ return ResponseData.error(jsonObject.get("errmsg").toString());
+ }
+ String newOpenid = ShiroKit.md5(jsonObject.get("openid").toString(), SALT);
+ Map payLoad = new HashMap<>();
+ payLoad.put("token", newOpenid);
+ String token = JJWTRootUtils.generatorToken(payLoad);
+ if(StringUtil.isNotEmpty(token)){
+ ValueOperations operations = redisTemplate.opsForValue();
+ operations.set(newOpenid, jsonObject);
+ redisTemplate.expire(newOpenid, 300 , TimeUnit.SECONDS);
+ }
+ return ResponseData.success(token);
+ }
+
+ @Override
+ public Object userLogin(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
UserDto userDto = new UserDto();
- String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ //String phone = WXUserUtils.getPhone(dto.getPhoneCode());
+ String phone = dto.getPhoneCode();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -40,16 +74,12 @@
UserDto user = userActionDao.getUserInfo(userDto);
if(null != user){
if(StringUtil.isEmpty(user.getSyncId())){
- JSONObject jsonObject = WXUserUtils.getOpenId(dto.getCode());
- if(null != jsonObject.get("openid")){
- user.setSyncId(jsonObject.get("openid").toString());
- }
+ user.setSyncId(jsonObject.get("openid").toString());
List list = userActionDao.getList(user.getSalt());
user.setSalt(list.get(0).getName());
userActionDao.setUserOpenId(user);
}
- user.setAvatar(filePath+user.getAvatar());
- return ResponseData.success(user);
+ return ResponseData.success();
}else{
return ResponseData.error(Status.USER_ALREADY_NOT_REGISTERED);
}
@@ -63,7 +93,8 @@
public Object userRegister(UserDto userDto) {
try {
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String phone = WXUserUtils.getPhone(userDto.getPhone());
+ //String phone = WXUserUtils.getPhone(userDto.getPhone());
+ String phone = userDto.getPhone();
if(phone.equals("GetFailed")){
return ResponseData.error(Status.PHONE_GET_FAILED);
}
@@ -89,8 +120,12 @@
}
@Override
- public Object updateUserImg(ParamsDto dto) {
+ public Object updateUserImg(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
userActionDao.updateUserImg(dto.getFileId(), dto.getUid());
return ResponseData.success();
}catch (Exception e){
@@ -100,8 +135,12 @@
}
@Override
- public Object getUserJurisdiction(ParamsDto dto) {
+ public Object getUserJurisdiction(ParamsDto dto, HttpServletRequest request) {
try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
List resList = userActionDao.getUserJurisdiction(dto.getUid());
return ResponseData.success(resList);
}catch (Exception e){
@@ -111,6 +150,34 @@
}
@Override
+ public Object getUserInfo(HttpServletRequest request) {
+ try {
+ JSONObject jsonObject = getLoginStatus(request);
+ if(null == jsonObject){
+ return ResponseData.error(Status.TOKEN_EXPIRES);
+ }
+ UserDto userDto = new UserDto();
+ userDto.setSyncId(jsonObject.get("openid").toString());
+ UserDto user = userActionDao.getUserInfo(userDto);
+ return ResponseData.success(user);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResponseData.error(Status.FAIL);
+ }
+ }
+
+ public JSONObject getLoginStatus(HttpServletRequest request) {
+ try {
+ String token = request.getHeader("token");
+ Claims claims = JJWTRootUtils.phaseTokenGetBody(token);
+ return (JSONObject) redisTemplate.opsForValue().get(claims.get("token"));
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
public Object getUserType() {
try {
List list = userActionDao.getList("");
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
new file mode 100644
index 0000000..6fd6672
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/JJWTRootUtils.java
@@ -0,0 +1,113 @@
+package com.casic.missiles.modular.system.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.*;
+
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.security.Key;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 生成jwt工具类
+ */
+public class JJWTRootUtils {
+
+ //定义对应的编码算法
+ static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+ //盐值
+ static String secretKey = "asdfdsagfdgfdagdafgwetreg";
+
+ //获取key(指定算法和盐值的key对象)
+ private static Key generateKey(){
+ //将盐值转成字节
+ byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
+ //根据算法和盐值生成对应的key值
+ Key key = new SecretKeySpec(bytes, signatureAlgorithm.getJcaName());
+ return key;
+ }
+
+ /**
+ * 将我们的数据使用JWT的方式变成一个token xxx.yyy.zzz
+ * @param payLoad 负载(数据信息)
+ * @return
+ */
+ public static String generatorToken(Map payLoad){
+ ObjectMapper objectMapper = new ObjectMapper();
+ try{
+ //构建jwt生成器
+ JwtBuilder builder = Jwts.builder();
+ //将负载信息设置到jwt生成器中
+ JwtBuilder jwtBuilder = builder.setPayload(objectMapper.writeValueAsString(payLoad));
+ //根据签名算法和key值,生成新的jwtBuilder
+ JwtBuilder jwtBuilder1 = jwtBuilder.signWith(signatureAlgorithm, generateKey());
+ String token = jwtBuilder1.compact();
+ return token;
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 根据指定的token, 返回对应的body信息
+ * @param token
+ * @return
+ */
+ public static Claims phaseTokenGetBody(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ Claims body = claimsJws.getBody();//主要存放的信息
+ return body;
+ }
+
+ /**
+ * 根据指定的token获取签名信息
+ * @param token
+ * @return
+ */
+ public static String phaseTokenGetSignature(String token){
+ JwtParser jwtParser = Jwts.parser().setSigningKey(generateKey());
+ Jws claimsJws = jwtParser.parseClaimsJws(token);
+ String signature = claimsJws.getSignature();
+ return signature;
+ }
+
+
+ /**
+ * 根据指定的token获取头信息
+ * @param token
+ * @return
+ */
+ public static JwsHeader phaseTokenGetHeader(String token){
+ //获取解析器
+ JwtParser parser = Jwts.parser();
+ //设置签名key(盐值)
+ parser = parser.setSigningKey(generateKey());
+ //解析token
+ Jws claimsJws = parser.parseClaimsJws(token);
+ JwsHeader header = claimsJws.getHeader();
+ return header;
+ }
+
+
+ public static void main(String[] args) {
+ //随机获取盐值
+// System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));
+ Map payLoad = new HashMap<>();
+ payLoad.put("name", "curry");
+ String s = generatorToken(payLoad);
+ //eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiY3VycnkifQ.Sf3GiF3p56nLzoAxEHLXcAckPmmPTtecj1_lGT9oV8s
+ System.out.println(s);
+
+ //调用自定义API获取结果
+ Claims claims = phaseTokenGetBody(s);
+ //{name=curry}
+ System.out.println(claims);
+ }
+
+}
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java b/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
deleted file mode 100644
index 1d0c415..0000000
--- a/casic-server/src/main/java/com/casic/missiles/modular/system/utils/Status.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.casic.missiles.modular.system.utils;
-
-public interface Status {
- String OK = "请求成功";
- String FAIL = "请求失败";
- String SYSTEM_ERROR = "系统异常";
- String LOGIN_SUCCEEDED = "登录成功";
- String EMPLOYEE_NOT_EXIS = "员工不存在";
- String USER_ALREADY_REGISTERED = "该账号已注册";
- String USER_ALREADY_NOT_REGISTERED = "您的账号未注册,请先注册";
- String FAILED_CERTIFICATION = "认证不通过";
- String FAILED_PHONE = "授权手机号不正确";
- String PHONE_GET_FAILED = "手机号获取失败";
- String EMPLOYEE_NAME_MISMATCH = "员工号与姓名不匹配";
-
-
-}
diff --git a/casic-web/pom.xml b/casic-web/pom.xml
index bd4cef8..eeeaaec 100644
--- a/casic-web/pom.xml
+++ b/casic-web/pom.xml
@@ -56,6 +56,22 @@
org.springframework.boot
spring-boot-starter-jdbc
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
+
+ com.auth0
+ java-jwt
+ 3.7.0
+
+
com.casic
diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml
index 083a82f..f7ca146 100644
--- a/casic-web/src/main/resources/config/application-dev.yml
+++ b/casic-web/src/main/resources/config/application-dev.yml
@@ -7,6 +7,9 @@
url: jdbc:mysql://111.198.10.15:11336/casic_security_cockpit_mini?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true
username: root
password: Casic203
+ redis:
+ host: 127.0.0.1
+ port: 6379
# session:
# store-type: redis
diff --git a/casic-web/src/main/resources/mapper/UserActionMapper.xml b/casic-web/src/main/resources/mapper/UserActionMapper.xml
index 0cece09..b7b0bab 100644
--- a/casic-web/src/main/resources/mapper/UserActionMapper.xml
+++ b/casic-web/src/main/resources/mapper/UserActionMapper.xml
@@ -28,6 +28,9 @@
and t.PHONE = #{userDto.attr1}
+
+ and t.SYNC_ID = #{userDto.syncId}
+
UPDATE sys_user SET `PHONE` = #{userDto.phone},`SALT`=#{userDto.salt} WHERE `ACCOUNT` = #{userDto.account} and `NAME` = #{userDto.name}