Browse Source

20220121获取用户信息

master
zy_Java 4 years ago
parent
commit
0d86203b4c
  1. 8
      .drone.yml
  2. 2
      pom.xml
  3. 3
      ptos_open/src/main/resources/mapper_dao/BusinessDao.xml
  4. 7
      ptos_tall/src/main/java/com/ccsens/ptos_tall/bean/dto/BusinessDto.java
  5. 22
      ptos_tall/src/main/java/com/ccsens/ptos_tall/service/BusinessService.java
  6. 10
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/ProjectController.java
  7. 6
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/RoleController.java
  8. 14
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/TaskController.java
  9. 28
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/bean/dto/TokenDto.java
  10. 2
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/bean/vo/TokenVo.java
  11. 12
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/service/ITallService.java
  12. 7
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/util/Constant.java
  13. 115
      tall_sdk/src/main/java/com/ccsensptos/tallsdk/util/TokenUtil.java

8
.drone.yml

@ -16,12 +16,18 @@ constants:
- java -version
- mvn clean package -Dmaven.test.skip=true
- &SCP_TARGET /home/ptos_open/server
- &SCP_SOURCE ptos_open/target/*.jar
- &SCP_SOURCE
-ptos_open/target/*.jar
-ptos_tall/target/*.jar
- &SCP_STRIP_DIR_LEVEL 2
- &SSH_CMDER
- cd /home/ptos_open/server
- pwd
- ./open.sh > /dev/null 2> /dev/null &
- mv ptos_tall-0.0.1-SNAPSHOT.jar /home/ptos_tall/server
- cd /home/ptos_tall/server
- pwd
- ./ptos.sh > /dev/null 2> /dev/null &
#- &NOTIFY_EMAIL weizezhao@ccsens.com
- &NOTIFY_WECHATROBOT_WEBHOOK https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b2b93e9a-128b-41d4-8dce-12004e3f48b9

2
pom.xml

@ -13,7 +13,7 @@
<module>ptos_diplomatist</module>
<module>ptos_open</module>
<module>tall_sdk</module>
<module>ptoszero</module>
<!-- <module>ptoszero</module>-->
</modules>

3
ptos_open/src/main/resources/mapper_dao/BusinessDao.xml

@ -58,10 +58,11 @@
p.js
FROM
t_open_business_plugin bp
LEFT JOIN t_open_plugin p on bp.plugin_id = p.id and p.rec_status = 0
LEFT JOIN t_open_plugin p on bp.plugin_id = p.id
LEFT JOIN t_open_plugin_img i on p.id = i.plugin_id and i.type = 0 and i.rec_status = 0
WHERE
bp.business_id = #{businessId}
and bp.rec_status = 0
and p.rec_status = 0
</select>
</mapper>

7
ptos_tall/src/main/java/com/ccsens/ptos_tall/bean/dto/BusinessDto.java

@ -17,13 +17,6 @@ public class BusinessDto {
@ApiModelProperty("secret")
private String secret;
public BusinessToken() {
}
public BusinessToken(String appId, String secret) {
this.appId = appId;
this.secret = secret;
}
}
}

22
ptos_tall/src/main/java/com/ccsens/ptos_tall/service/BusinessService.java

@ -1,18 +1,36 @@
package com.ccsens.ptos_tall.service;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.ptos_tall.bean.dto.BusinessDto;
import com.ccsens.util.JwtUtil;
import com.ccsens.util.RedisKeyManager;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.WebConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Map;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class BusinessService implements IBusinessService {
@Resource
private RedisUtil redisUtil;
@Override
public String getAccessTokenByAppId(BusinessDto.BusinessToken params) {
return null;
//生成accessToken
Map<String, Object> payLoads = CollectionUtil.newHashMap();
payLoads.put("secret", params.getSecret());
//生成过期时间
long tokenExpired = 3600 * 1000L * 2;
//生成token并缓存
String accessToken = JwtUtil.createJWT(params.getAppId() + "",payLoads, tokenExpired,WebConstant.JWT_ACCESS_TOKEN_SECERT);
redisUtil.set(RedisKeyManager.getTokenCachedKey(params.getAppId()), accessToken, tokenExpired / 1000);
return accessToken;
}
}

10
tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/ProjectController.java

@ -1,5 +1,6 @@
package com.ccsensptos.tallsdk.api;
import com.ccsens.util.WebConstant;
import com.ccsensptos.tallsdk.bean.dto.ProjectDto;
import com.ccsensptos.tallsdk.service.ITallService;
import com.ccsensptos.tallsdk.bean.vo.ProjectVo;
@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@ -32,9 +34,9 @@ public class ProjectController {
@ApiOperation(value = "日历页获取项目列表", notes = "")
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<ProjectVo.ProjectInfo>> queryProjectByUser(@ApiParam @Validated @RequestBody ProjectDto.QueryProjectDto params) throws Exception{
public JsonResponse<List<ProjectVo.ProjectInfo>> queryProjectByUser(HttpServletRequest request,@ApiParam @Validated @RequestBody ProjectDto.QueryProjectDto params) throws Exception{
log.info("查询用户所有域下所有业务内的所有项目:{}",params);
List<ProjectVo.ProjectInfo> projectInfoList = tallService.queryProjectByUser(params);
List<ProjectVo.ProjectInfo> projectInfoList = tallService.queryProjectByUser(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
log.info("返回用户所有域下所有业务内的所有项目");
return JsonResponse.newInstance().ok(projectInfoList);
}
@ -42,9 +44,9 @@ public class ProjectController {
@ApiOperation(value = "导入Wbs", notes = "")
@RequestMapping(value = "/wbs", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<ProjectVo.ProjectInfo> queryProjectByUser(@ApiParam @Validated @RequestBody MultipartFile params) throws Exception{
public JsonResponse<ProjectVo.ProjectInfo> queryProjectByUser(HttpServletRequest request,@ApiParam @Validated @RequestBody MultipartFile params) throws Exception{
log.info("导入Wbs:{}",params);
List<ProjectVo.ProjectInfo> projectInfoList = tallService.importWbs(params);
List<ProjectVo.ProjectInfo> projectInfoList = tallService.importWbs(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
log.info("导入Wbs");
return JsonResponse.newInstance().ok(projectInfoList);
}

6
tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/RoleController.java

@ -1,5 +1,6 @@
package com.ccsensptos.tallsdk.api;
import com.ccsens.util.WebConstant;
import com.ccsensptos.tallsdk.bean.dto.RoleDto;
import com.ccsensptos.tallsdk.bean.vo.RoleVo;
import com.ccsensptos.tallsdk.service.ITallService;
@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @author
@ -31,9 +33,9 @@ public class RoleController {
@ApiOperation(value = "根据项目id查找角色", notes = "")
@RequestMapping(value = "/show", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<RoleVo.QueryRole> queryByProjectId(@ApiParam @Validated @RequestBody RoleDto.QueryRoleById params) {
public JsonResponse<RoleVo.QueryRole> queryByProjectId(HttpServletRequest request, @ApiParam @Validated @RequestBody RoleDto.QueryRoleById params) {
log.info("根据项目id查找角色{}",params);
RoleVo.QueryRole queryRole = tallService.queryShowRole(params);
RoleVo.QueryRole queryRole = tallService.queryShowRole(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
log.info("项目id查找角色列表{}",queryRole);
return JsonResponse.newInstance().ok(queryRole);
}

14
tall_sdk/src/main/java/com/ccsensptos/tallsdk/api/TaskController.java

@ -1,5 +1,6 @@
package com.ccsensptos.tallsdk.api;
import com.ccsens.util.WebConstant;
import com.ccsensptos.tallsdk.service.ITallService;
import com.ccsensptos.tallsdk.bean.dto.TaskDto;
import com.ccsensptos.tallsdk.bean.vo.TaskVo;
@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@ -32,24 +34,24 @@ public class TaskController {
@ApiOperation(value = "查找永久日常任务", notes = "")
@RequestMapping(value = "/permanent", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.QueryTask>> queryPermanentGlobalTask(@ApiParam @Validated @RequestBody TaskDto.QueryPermanentGlobalTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryPermanentGlobalTask(params);
public JsonResponse<List<TaskVo.QueryTask>> queryPermanentGlobalTask(HttpServletRequest request,@ApiParam @Validated @RequestBody TaskDto.QueryPermanentGlobalTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryPermanentGlobalTask(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
return JsonResponse.newInstance().ok(queryTasks);
}
@ApiOperation(value = "查找带时间的日常任务", notes = "")
@RequestMapping(value = "/global", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.QueryTask>> queryGlobalTask(@ApiParam @Validated @RequestBody TaskDto.QueryGlobalTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryGlobalTask(params);
public JsonResponse<List<TaskVo.QueryTask>> queryGlobalTask(HttpServletRequest request,@ApiParam @Validated @RequestBody TaskDto.QueryGlobalTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryGlobalTask(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
return JsonResponse.newInstance().ok(queryTasks);
}
@ApiOperation(value = "查找定期任务", notes = "")
@RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.QueryTask>> queryRegularTask(@ApiParam @Validated @RequestBody TaskDto.QueryRegularTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryRegularTask(params);
public JsonResponse<List<TaskVo.QueryTask>> queryRegularTask(HttpServletRequest request, @ApiParam @Validated @RequestBody TaskDto.QueryRegularTask params) {
List<TaskVo.QueryTask> queryTasks = tallService.queryRegularTask(request.getHeader(WebConstant.HEADER_KEY_TOKEN),params);
return JsonResponse.newInstance().ok(queryTasks);
}
}

28
tall_sdk/src/main/java/com/ccsensptos/tallsdk/bean/dto/TokenDto.java

@ -1,5 +1,7 @@
package com.ccsensptos.tallsdk.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -9,20 +11,30 @@ import lombok.Data;
public class TokenDto {
// @Data
// public static class GetAccessToken{
// //"appId"
// private String appId;
// //"secret"
// private String secret;
// }
@Data
public static class GetAccessToken{
//"appId"
private String appId;
//"secret"
private String secret;
public GetAccessToken(String appId, String secret) {
this.appId = appId;
this.secret = secret;
}
public GetAccessToken() {
}
}
@Data
public static class GetUserByToken{
//"token")
private String token;
//"appId")
private String appId;
//"secret")
private String secret;
}
}

2
tall_sdk/src/main/java/com/ccsensptos/tallsdk/bean/vo/TokenVo.java

@ -32,7 +32,7 @@ public class TokenVo {
@Data
public static class AccessToken{
//"accessToken"
private Long accessToken;
private String accessToken;
//"存放时间"
private Long time;
}

12
tall_sdk/src/main/java/com/ccsensptos/tallsdk/service/ITallService.java

@ -19,40 +19,40 @@ public interface ITallService {
* @param param 开始结束时间
* @return 返回项目列表
*/
List<ProjectVo.ProjectInfo> queryProjectByUser(ProjectDto.QueryProjectDto param);
List<ProjectVo.ProjectInfo> queryProjectByUser(String token,ProjectDto.QueryProjectDto param);
/**
* 查询项目下的角色列表
* @param param 项目id
* @return 返回角色列表
*/
RoleVo.QueryRole queryShowRole(RoleDto.QueryRoleById param);
RoleVo.QueryRole queryShowRole(String token,RoleDto.QueryRoleById param);
/**
* 查询没有时间的日常任务
* @param param 角色id等
* @return 返回任务列表
*/
List<TaskVo.QueryTask> queryPermanentGlobalTask(TaskDto.QueryPermanentGlobalTask param);
List<TaskVo.QueryTask> queryPermanentGlobalTask(String token,TaskDto.QueryPermanentGlobalTask param);
/**
* 查询有时间的日常任务
* @param param 角色id和时间
* @return 返回任务列表
*/
List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param);
List<TaskVo.QueryTask> queryGlobalTask(String token,TaskDto.QueryGlobalTask param);
/**
* 查询定期任务
* @param param 角色id和时间
* @return 返回任务列表
*/
List<TaskVo.QueryTask> queryRegularTask(TaskDto.QueryRegularTask param);
List<TaskVo.QueryTask> queryRegularTask(String token,TaskDto.QueryRegularTask param);
/**
* 导入wbs
* @param params wbs文件
* @return 返回项目信息
*/
List<ProjectVo.ProjectInfo> importWbs(MultipartFile params);
List<ProjectVo.ProjectInfo> importWbs(String token,MultipartFile params);
}

7
tall_sdk/src/main/java/com/ccsensptos/tallsdk/util/Constant.java

@ -10,6 +10,11 @@ public class Constant {
/**请求用户信息的接口路径*/
public static final String TALL_USER_TOKEN = "users/businessToken";
/**获取accessToken*/
public static final String TALL_GET_ACCESS_TOKEN = "users/businessToken";
public static final String TALL_GET_ACCESS_TOKEN = "business/accessToken";
/**请求头--accessToken*/
public static final String ACCESS_TOKEN = "accessToken";
/**token过期时间 100分钟*/
public static final Long EXPIRATION_TIME = 60 * 1000L * 100;
}

115
tall_sdk/src/main/java/com/ccsensptos/tallsdk/util/TokenUtil.java

@ -1,24 +1,37 @@
package com.ccsensptos.tallsdk.util;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.RestTemplateUtil;
import com.ccsensptos.tallsdk.bean.dto.TokenDto;
import com.ccsensptos.tallsdk.bean.vo.TokenVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServlet;
import java.util.HashMap;
import java.util.Map;
/**
* @author
*/
@Component
@Slf4j
public class TokenUtil {
public static final String REDIS_IS_OPEN = "1";
/**缓存token或用户信息*/
public static Map<String, Object> accessTokenMap = new HashMap<>();
public static String openRedis;
@Value("${spring.application.sdk-cache-redis:}")
public void setApplication(String redis) {
openRedis = redis;
@ -37,11 +50,9 @@ public class TokenUtil {
/**
* 通过AppId获取accessToken
* @param appId appId
* @param secret secret
* @return 返回accessToken
*/
public static String getAccessToken(String appId,String secret){
public static String getAccessToken(String appId, String secret){
//查看业务是否开启redis缓存
// if(REDIS_IS_OPEN.equals(openRedis)){
// //redis开启则通过appId去redis内查询
@ -55,26 +66,80 @@ public class TokenUtil {
//调用tall的接口生成accessToken
return null;
//查找map内的数据
long now = System.currentTimeMillis();
TokenVo.AccessToken accessToken = (TokenVo.AccessToken) accessTokenMap.get(appId);
if(ObjectUtil.isNotNull(accessToken)){
if(accessToken.getTime() + Constant.EXPIRATION_TIME > now){
return accessToken.getAccessToken();
}else {
//如果过期,就删掉数据
accessTokenMap.remove(appId);
}
}
//map内查不到,则去请求tall获取新的accessToken
String url = Constant.TALL_URL + Constant.TALL_GET_ACCESS_TOKEN;
TokenDto.GetAccessToken getAccessToken = new TokenDto.GetAccessToken(appId,secret);
log.info("调用接口:{}--{}", url, getAccessToken);
String postBody = RestTemplateUtil.postBody(url, getAccessToken);
JSONObject jsonObject = JSONObject.parseObject(postBody);
log.info("接口返回:{}", jsonObject);
//请求正确返回则,否则无操作
Integer code = jsonObject.getInteger("code");
if (code == null || code != 200) {
return null;
}
String data = jsonObject.getString("data");
if(ObjectUtil.isNull(data)){
return null;
}
TokenVo.AccessToken t = new TokenVo.AccessToken();
t.setAccessToken(data);
t.setTime(System.currentTimeMillis());
accessTokenMap.put(getAccessToken.getAppId(),t);
return data;
}
// /**
// * 通过token获取用户信息
// * @return 返回accessToken
// */
// public static TokenVo.UserIdByToken getUserByToken(String token,){
// //查看业务是否开启redis缓存
//// if(REDIS_IS_OPEN.equals(openRedis)){
//// //查询token是否存在
//// util.redisUtil.get(token);
//// }
// //没开启redis则去map内查找,如果
//
// //调用tall的接口生成查询项目信息
//// TokenVo.UserIdByToken userIdByToken =
//
// return null;
// }
/**
* 通过token获取用户信息
* @return 返回accessToken
*/
public static TokenVo.UserIdByToken getUserByToken(TokenDto.GetUserByToken getUserByToken){
//查看业务是否开启redis缓存
// if(REDIS_IS_OPEN.equals(openRedis)){
// //查询token是否存在
// util.redisUtil.get(token);
// }
//没开启redis则去map内查找,如果
//调用tall的接口生成查询项目信息
//发送请求
String url = Constant.TALL_URL + Constant.TALL_USER_TOKEN;
log.info("调用接口:{}--{}", url, getUserByToken);
Map<String,String> map = new HashMap<>();
map.put(Constant.ACCESS_TOKEN,getAccessToken(getUserByToken.getAppId(),getUserByToken.getSecret()));
String postBody = RestTemplateUtil.postBodySpecialHeader(url, getUserByToken,map);
JSONObject jsonObject = JSONObject.parseObject(postBody);
log.info("接口返回:{}", jsonObject);
//请求正确返回则,否则无操作
Integer code = jsonObject.getInteger("code");
if (code == null || code != 200) {
return null;
}
String data = jsonObject.getString("data");
if(ObjectUtil.isNull(data)){
return null;
}
TokenVo.UserIdByToken userIdByToken;
try {
userIdByToken = JSON.parseObject(data,TokenVo.UserIdByToken.class);
}catch (Exception e){
log.info("返回值转换失败");
return null;
}
return userIdByToken;
}
}

Loading…
Cancel
Save