【添加】Schema接口开发完毕
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
||||
package com.jero.modules.docking.iam.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Inherited
|
||||
public @interface IamProperty {
|
||||
|
||||
// /**
|
||||
// * 字段属性名
|
||||
// * @return
|
||||
// */
|
||||
// String name() default "";
|
||||
//
|
||||
// /**
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// String type() default "";
|
||||
|
||||
/**
|
||||
* 定义对象的属性字段在创建时是否为必填字段
|
||||
* @return
|
||||
*/
|
||||
boolean required() default true;
|
||||
|
||||
/**
|
||||
* 定义对象的属性字段是否为多值
|
||||
* @return
|
||||
*/
|
||||
boolean multivalued() default false;
|
||||
|
||||
}
|
||||
+58
-14
@@ -1,19 +1,38 @@
|
||||
package com.jero.modules.docking.iam.controller;
|
||||
|
||||
import com.bamboocloud.codec.BamboocloudFacade;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.common.util.UUIDGenerator;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.modules.docking.iam.dto.IamCommonAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamOrgAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto;
|
||||
import com.jero.modules.docking.iam.dto.response.IamOrgCreateResponse;
|
||||
import com.jero.modules.docking.iam.dto.response.IamSchemaResponse;
|
||||
import com.jero.modules.docking.iam.dto.response.IamUserCreateResponse;
|
||||
import com.jero.modules.docking.iam.exception.IamGlobalException;
|
||||
import com.jero.modules.docking.iam.po.AcceptPoSystemPo;
|
||||
import com.jero.modules.docking.iam.po.MessageHeader;
|
||||
import com.jero.modules.docking.iam.po.SendPoSystemPo;
|
||||
import com.jero.modules.docking.iam.po.SendReturnsPo;
|
||||
import com.jero.modules.docking.iam.service.SyncIamService;
|
||||
import com.jero.modules.docking.utils.BamboocloudUtils;
|
||||
import com.jero.modules.docking.utils.DockingConstant;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* IAM同步的控制器,提供用户、组织、菜单和权限的同步
|
||||
*/
|
||||
@@ -22,51 +41,76 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@Slf4j
|
||||
public class SyncIamController {
|
||||
|
||||
@Resource
|
||||
private SyncIamService syncIamService;
|
||||
|
||||
@PostMapping({"/SchemaService"})
|
||||
public SendPoSystemPo<IamSchemaResponse> SchemaService(@RequestBody AcceptPoSystemPo<IamCommonResponseDto> iamCommon) {
|
||||
SendPoSystemPo<IamSchemaResponse> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo SchemaService(@RequestBody AcceptPoSystemPo<IamCommonAcceptDto> iamCommon) throws JsonProcessingException {
|
||||
if (iamCommon == null
|
||||
|| iamCommon.getMessageTabels() == null
|
||||
|| iamCommon.getMessageTabels().getHeader() == null
|
||||
|| iamCommon.getMessageTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamCommon.getMessageTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
|
||||
// 处理业务逻辑,封装字段
|
||||
IamSchemaResponse iamSchemaResponse = this.syncIamService.getSchemaInfo(commonAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamCommon.getMessageHeader();
|
||||
SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamSchemaResponse);
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserCreateService"})
|
||||
public SendPoSystemPo<IamUserCreateResponse> userCreateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo<IamUserCreateResponse> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo userCreateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserUpdateService"})
|
||||
public SendPoSystemPo<IamCommonResponseDto> UserUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo<IamCommonResponseDto> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo UserUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserDeleteService"})
|
||||
public SendPoSystemPo<IamCommonResponseDto> UserDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo<IamCommonResponseDto> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo UserDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgCreateService"})
|
||||
public SendPoSystemPo<IamOrgCreateResponse> OrgCreateService(@RequestBody AcceptPoSystemPo<IamOrgAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo<IamOrgCreateResponse> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo OrgCreateService(@RequestBody AcceptPoSystemPo<IamOrgAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgUpdateService"})
|
||||
public SendPoSystemPo<IamCommonResponseDto> OrgUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo<IamCommonResponseDto> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo OrgUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgDeleteService"})
|
||||
public SendPoSystemPo<IamCommonResponseDto> OrgDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo<IamCommonResponseDto> sendPoSystemPo = new SendPoSystemPo<>();
|
||||
public SendPoSystemPo OrgDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
+1
@@ -16,6 +16,7 @@ public class IamOrgAcceptDto extends IamCommonAcceptDto {
|
||||
/**
|
||||
* 机构编码.全集团唯一,不可重复,撤销后不可重新启用
|
||||
*/
|
||||
|
||||
private String srmsOrgCode;
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import java.util.List;
|
||||
* Schema映射的响应体
|
||||
*/
|
||||
@Data
|
||||
public class IamSchemaResponse extends IamCommonResponseDto{
|
||||
public class IamSchemaResponse {
|
||||
|
||||
/**
|
||||
* 请求id,收到什么就返回什么
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.jero.modules.docking.iam.exception;
|
||||
|
||||
import com.jero.common.util.MessageUtils;
|
||||
|
||||
public class IamGlobalException extends RuntimeException {
|
||||
|
||||
private String bimRequestId;
|
||||
private String message;
|
||||
|
||||
private static final long serialVersionUID = 3634632351214L;
|
||||
|
||||
public IamGlobalException(String bimRequestId, String message){
|
||||
super(message);
|
||||
this.bimRequestId = bimRequestId;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getBimRequestId() {
|
||||
return bimRequestId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.jero.modules.docking.iam.exception;
|
||||
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.apache.shiro.authz.AuthorizationException;
|
||||
import org.apache.shiro.authz.UnauthorizedException;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.data.redis.connection.PoolException;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||
|
||||
/**
|
||||
* IAM对接全局异常处理器
|
||||
*/
|
||||
@RestControllerAdvice
|
||||
@Slf4j
|
||||
public class IamGlobalExceptionHandler {
|
||||
|
||||
/**
|
||||
* 处理自定义异常
|
||||
*/
|
||||
@ExceptionHandler(IamGlobalException.class)
|
||||
public IamCommonResponseDto handleJeroBootException(IamGlobalException e){
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
iamCommonResponseDto.setBimRequestId(e.getBimRequestId());
|
||||
iamCommonResponseDto.setResultCode("-1"); // 错误码统一为-1
|
||||
iamCommonResponseDto.setMessage(e.getMessage());
|
||||
|
||||
return iamCommonResponseDto;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -13,6 +13,6 @@ public class AcceptPoSystemPo<T> {
|
||||
private MessageHeader messageHeader;
|
||||
|
||||
@JsonProperty("Tables")
|
||||
private MessageTabels<T> messageTabels;
|
||||
private MessageTabels messageTabels;
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,9 +7,9 @@ import lombok.Data;
|
||||
* PO系统交互必须的实体,包含接口传递的正式数据(仅为套的一层壳)
|
||||
*/
|
||||
@Data
|
||||
public class MessageTabels<T> {
|
||||
public class MessageTabels {
|
||||
|
||||
@JsonProperty("Header")
|
||||
private T header;
|
||||
private MessageTabelsHeader header;
|
||||
|
||||
}
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.jero.modules.docking.iam.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 接受数据的tables中的header层
|
||||
*/
|
||||
@Data
|
||||
public class MessageTabelsHeader {
|
||||
|
||||
@JsonProperty("data")
|
||||
private String data;
|
||||
|
||||
}
|
||||
+2
-2
@@ -7,12 +7,12 @@ import lombok.Data;
|
||||
* 和PO系统做数据交互的最外层壳,做数据发送用
|
||||
*/
|
||||
@Data
|
||||
public class SendPoSystemPo<T> {
|
||||
public class SendPoSystemPo {
|
||||
|
||||
@JsonProperty("MessageHeader")
|
||||
private MessageHeader messageHeader;
|
||||
|
||||
@JsonProperty("Returns")
|
||||
private T returns;
|
||||
private SendReturnsPo returns;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.jero.modules.docking.iam.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 返回数据的Return层
|
||||
*/
|
||||
@Data
|
||||
public class SendReturnsPo {
|
||||
|
||||
@JsonProperty("data")
|
||||
private String data;
|
||||
|
||||
public SendReturnsPo(String data){
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
}
|
||||
+142
@@ -0,0 +1,142 @@
|
||||
package com.jero.modules.docking.iam.service;
|
||||
|
||||
import com.bamboocloud.codec.BamboocloudFacade;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jero.common.aspect.annotation.Translation;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.common.util.UUIDGenerator;
|
||||
import com.jero.modules.docking.iam.annotation.IamProperty;
|
||||
import com.jero.modules.docking.iam.dto.IamCommonAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamOrgAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto;
|
||||
import com.jero.modules.docking.iam.dto.response.IamSchemaResponse;
|
||||
import com.jero.modules.docking.iam.dto.response.SchemaResponseInner;
|
||||
import com.jero.modules.docking.iam.exception.IamGlobalException;
|
||||
import com.jero.modules.docking.iam.po.MessageHeader;
|
||||
import com.jero.modules.docking.iam.po.SendPoSystemPo;
|
||||
import com.jero.modules.docking.iam.po.SendReturnsPo;
|
||||
import com.jero.modules.docking.utils.DockingConstant;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* IAM对接业务处理类
|
||||
*/
|
||||
@Service
|
||||
@Transactional
|
||||
public class SyncIamService {
|
||||
|
||||
@Value("${iam.bimRemoteUser}")
|
||||
private String bimRemoteUser;
|
||||
|
||||
@Value("${iam.bimRemotePwd}")
|
||||
private String bimRemotePwd;
|
||||
|
||||
/**
|
||||
* 校验IAM调用时的账号密码是否正确
|
||||
* 校验通过了正常走后续,不通过直接返回
|
||||
* @return
|
||||
*/
|
||||
public void validateUserAndPwd(IamCommonAcceptDto commonAcceptDto) {
|
||||
if (!bimRemoteUser.equals(commonAcceptDto.getBimRemoteUser())
|
||||
|| !bimRemotePwd.equals(commonAcceptDto.getBimRemotePwd())){
|
||||
throw new IamGlobalException(commonAcceptDto.getBimRequestId(), "用户名或密码不对,无法调用接口");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成Schema的信息
|
||||
* @return
|
||||
*/
|
||||
public IamSchemaResponse getSchemaInfo(IamCommonAcceptDto commonAcceptDto){
|
||||
// 获取用户同步的字段
|
||||
List<SchemaResponseInner> accountFiledList = new ArrayList<>();
|
||||
Field[] userFields = IamUserAcceptDto.class.getDeclaredFields();
|
||||
this.extractedFieldProperty(accountFiledList, userFields);
|
||||
|
||||
// 获取组织机构同步的字段
|
||||
List<SchemaResponseInner> orgFiledList = new ArrayList<>();
|
||||
Field[] orgFields = IamOrgAcceptDto.class.getDeclaredFields();
|
||||
this.extractedFieldProperty(orgFiledList, orgFields);
|
||||
|
||||
IamSchemaResponse iamSchemaResponse = new IamSchemaResponse();
|
||||
iamSchemaResponse.setAccount(accountFiledList);
|
||||
iamSchemaResponse.setOrganization(orgFiledList);
|
||||
iamSchemaResponse.setBimRequestId(commonAcceptDto.getBimRequestId());
|
||||
|
||||
|
||||
return iamSchemaResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽取含有IamProperty注解的字段元属性
|
||||
* @param filedList
|
||||
* @param fields
|
||||
*/
|
||||
private void extractedFieldProperty(List<SchemaResponseInner> filedList, Field[] fields) {
|
||||
for (Field field : fields) {
|
||||
if (field.isAnnotationPresent(IamProperty.class)) {
|
||||
SchemaResponseInner schemaInfo = new SchemaResponseInner();
|
||||
|
||||
field.setAccessible(true);
|
||||
|
||||
//获取Annotation对象
|
||||
IamProperty iamProperty = (IamProperty) field.getAnnotation(IamProperty.class);
|
||||
//提取注解对象元数据
|
||||
boolean required = iamProperty.required();
|
||||
boolean multivalued = iamProperty.multivalued();
|
||||
String name = field.getName();
|
||||
String type = field.getType().getSimpleName();
|
||||
|
||||
schemaInfo.setName(name);
|
||||
schemaInfo.setType(type);
|
||||
schemaInfo.setRequired(required);
|
||||
schemaInfo.setMultivalued(multivalued);
|
||||
|
||||
filedList.add(schemaInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理统一响应PO层,并加密业务字段
|
||||
* @param acceptMessageHeader
|
||||
* @param iamSchemaResponse
|
||||
* @return
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
public SendPoSystemPo handlerGloablResponse(MessageHeader acceptMessageHeader, IamSchemaResponse iamSchemaResponse) throws JsonProcessingException {
|
||||
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
|
||||
|
||||
|
||||
MessageHeader sendMessageHeader = new MessageHeader();
|
||||
sendMessageHeader.setInterfaceID(acceptMessageHeader.getInterfaceID());
|
||||
sendMessageHeader.setUUID(UUIDGenerator.generate());
|
||||
sendMessageHeader.setMessageId(UUIDGenerator.generate());
|
||||
sendMessageHeader.setSender(DockingConstant.SYSTEM_NAME); // 固定值,即本系统
|
||||
sendMessageHeader.setReceiver(DockingConstant.IAM_SYSTEM_NAME);
|
||||
|
||||
Date curDate = new Date();
|
||||
sendMessageHeader.setSendDate(DateUtils.formatDate(curDate, "YYYYMMDD"));
|
||||
sendMessageHeader.setSendTime(DateUtils.formatDate(curDate, "hhmmss"));
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String returnData = objectMapper.writeValueAsString(iamSchemaResponse);
|
||||
// 加密PO层外的业务数据
|
||||
String encryptData = BamboocloudFacade.encrypt(returnData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
sendPoSystemPo.setMessageHeader(sendMessageHeader);
|
||||
sendPoSystemPo.setReturns(new SendReturnsPo(encryptData));
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.jero.modules.docking.utils;//package com.jero.modules.iam;
|
||||
|
||||
import com.bamboocloud.codec.BamboocloudFacade;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
@Slf4j
|
||||
public class BamboocloudUtils {
|
||||
public static void main(String[] args) {
|
||||
String aes = BamboocloudFacade.encrypt("{\"uid\":\"104\",\"bimRequestId\":\"95d73fe7aa7a4930a3edea779708a46c\",\"resultCode\":\"0\",\"message\":\"success\"}", "123456", "AES");
|
||||
System.out.println(aes);
|
||||
String aes1 = getPlaintext("KJ3jbIflWkNiEq3oxE2d5oxtKRLO3CC7edGrq57RIB02RSRgPljiNcTfuWYLS3sc1tbZMLm5fWG2guLK100g9MkWH9NhlxorPSlcP8LaYuP5NeZ1wFP8iKqr5RredwXfDA3J1fjOCAJfzPvJ4HSb1w==", "123456", "AES");
|
||||
System.out.println(aes1);
|
||||
}
|
||||
public static boolean checkUsernamePassword(String username, String password) {
|
||||
log.info("username --->" + username + " password --- >" + password + " ----ok");
|
||||
if("bbcadmin".equals(username)&&"P@ssw0rd".equals(password)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getPlaintext(String ciphertext, String key, String type) {
|
||||
return BamboocloudFacade.decrypt(ciphertext, key, type);
|
||||
}
|
||||
|
||||
public static Boolean verify(Map<String, Object> reqmap, String type) {
|
||||
Map<String, Object> verifymap = new TreeMap<String, Object>();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
Iterator<String> it = reqmap.keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
String key = (String) it.next();
|
||||
verifymap.put(key, reqmap.get(key));
|
||||
}
|
||||
Iterator<String> ittree = verifymap.keySet().iterator();
|
||||
while (ittree.hasNext()) {
|
||||
String key = (String) ittree.next();
|
||||
if (!"signature".equals(key)) {
|
||||
sb.append(key).append("=").append(verifymap.get(key)).append("&");
|
||||
}
|
||||
}
|
||||
sb.deleteCharAt(sb.length() - 1);
|
||||
System.out.println(reqmap.get("signature") + " now " + sb.toString());
|
||||
return BamboocloudFacade.verify(reqmap.get("signature").toString(), sb.toString(), type);
|
||||
}
|
||||
|
||||
public static String getRequestBody(HttpServletRequest request) {
|
||||
BufferedReader br = null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String str = "";
|
||||
try {
|
||||
br = request.getReader();
|
||||
while ((str = br.readLine()) != null) {
|
||||
sb.append(str);
|
||||
}
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
if (br != null) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException eo) {
|
||||
eo.printStackTrace();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (br != null) {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.jero.modules.docking.utils;
|
||||
|
||||
/**
|
||||
* 常量类
|
||||
*/
|
||||
public class DockingConstant {
|
||||
|
||||
/**
|
||||
* 本系统名称
|
||||
*/
|
||||
public static String SYSTEM_NAME = "SRMS";
|
||||
|
||||
/**
|
||||
* IAM系统名称
|
||||
*/
|
||||
public static String IAM_SYSTEM_NAME = "IAM";
|
||||
|
||||
/**
|
||||
* IAM对称加密算法
|
||||
*/
|
||||
public static String IAM_ENCRYPT_TYPE = "AES";
|
||||
|
||||
/**
|
||||
* IAM对称加密密钥
|
||||
*/
|
||||
public static String IAM_ENCRYPT_SECRET = "123456";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.jero.modules.docking.utils;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
public class SHA256Util {
|
||||
public static void main(String[] args) {
|
||||
String sha256StrJava = getSHA256StrJava("123456");
|
||||
System.out.println(sha256StrJava);
|
||||
}
|
||||
/**
|
||||
* 利用java原生的摘要实现SHA256加密密后的报文
|
||||
*/
|
||||
public static String getSHA256StrJava(String str) {
|
||||
MessageDigest messageDigest;
|
||||
String encodeStr = "";
|
||||
try {
|
||||
messageDigest = MessageDigest.getInstance("SHA-256");
|
||||
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
|
||||
encodeStr = byte2Hex(messageDigest.digest());
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return encodeStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将byte转为16进制
|
||||
*/
|
||||
private static String byte2Hex(byte[] bytes) {
|
||||
StringBuilder stringBuffer = new StringBuilder();
|
||||
String temp;
|
||||
for (byte aByte : bytes) {
|
||||
temp = Integer.toHexString(aByte & 0xFF);
|
||||
if (temp.length() == 1) {
|
||||
//1得到一位的进行补0操作
|
||||
stringBuffer.append("0");
|
||||
}
|
||||
stringBuffer.append(temp);
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
}
|
||||
@@ -358,33 +358,6 @@ justauth:
|
||||
type: default
|
||||
prefix: 'demo::'
|
||||
timeout: 1h
|
||||
# 云端OCR识别集成配置参数
|
||||
OCR:
|
||||
#请求OCR转换接口
|
||||
# handleFileUrl: https://sws.trans-cosmos.com.cn/WebService.asmx/FileConversion
|
||||
handleFileUrl: http://61.136.1.103:8091/WebService.asmx/FileConversion
|
||||
# OCR回调接口地址 配置客户本地的IP及端口号
|
||||
# callBackUrl: http://139.9.235.66:9110//api/ocr/OCRRestful/OcrHandleResult
|
||||
callBackUrl: http://139.9.235.66:9022/local-tool/ocr/ocrHandleResult
|
||||
# OCR认证用户
|
||||
userId: dayuzhou1234
|
||||
# OCR认证编码
|
||||
authCode: 123456
|
||||
# OCR接口公钥
|
||||
publicKey: EC4KKA6ZDTCPAOCRBC5M
|
||||
# OCR文件存储路径
|
||||
ocrPath: /ocrFiles/
|
||||
#ocrPath: /data/DeploymentPackage/laws-shanqi/APPSOFT/LAWSOCRDEMO/OCRFILE/
|
||||
# OCR文件下载地址(onlyoffice专用)
|
||||
ocrDownPath: http://10.0.1.25:8080/jero-boot/ocr/ocrCheck/downFile
|
||||
# OCR文件保存地址(onlyoffice专用)
|
||||
ocrSavePath: http://10.0.1.25:8080/jero-boot/ocr/ocrCheck/saveFile
|
||||
# OCR文件编辑失败返回列表页(onlyoffice专用)
|
||||
serverUrl: http://10.0.1.25:3000/docManage/ocr
|
||||
# OCR接口超时时间
|
||||
times: 20
|
||||
# OCR转换类型
|
||||
convertType: BOTH
|
||||
|
||||
file:
|
||||
downloadUrl: a
|
||||
@@ -392,3 +365,7 @@ file:
|
||||
path: D://opt//onlyoffice//file//splitImage/
|
||||
sourceFilePath: D://opt//onlyoffice//sourceFile//DOCX.docx
|
||||
path: D://opt//onlyoffice//file//
|
||||
|
||||
iam:
|
||||
bimRemoteUser: srmsIam
|
||||
bimRemotePwd: srmsIam2023
|
||||
@@ -335,33 +335,6 @@ justauth:
|
||||
type: default
|
||||
prefix: 'demo::'
|
||||
timeout: 1h
|
||||
# 云端OCR识别集成配置参数
|
||||
OCR:
|
||||
#请求OCR转换接口
|
||||
# handleFileUrl: https://sws.trans-cosmos.com.cn/WebService.asmx/FileConversion
|
||||
handleFileUrl: http://61.136.1.103:8091/WebService.asmx/FileConversion
|
||||
# OCR回调接口地址 配置客户本地的IP及端口号
|
||||
# callBackUrl: http://139.9.235.66:9110//api/ocr/OCRRestful/OcrHandleResult
|
||||
callBackUrl: http://139.9.235.66:9022/local-tool/ocr/ocrHandleResult
|
||||
# OCR认证用户
|
||||
userId: dayuzhou1234
|
||||
# OCR认证编码
|
||||
authCode: 123456
|
||||
# OCR接口公钥
|
||||
publicKey: EC4KKA6ZDTCPAOCRBC5M
|
||||
# OCR文件存储路径
|
||||
ocrPath: /ocrFiles/
|
||||
#ocrPath: /data/DeploymentPackage/laws-shanqi/APPSOFT/LAWSOCRDEMO/OCRFILE/
|
||||
# OCR文件下载地址(onlyoffice专用)
|
||||
ocrDownPath: http://10.0.1.25:8080/jero-boot/ocr/ocrCheck/downFile
|
||||
# OCR文件保存地址(onlyoffice专用)
|
||||
ocrSavePath: http://10.0.1.25:8080/jero-boot/ocr/ocrCheck/saveFile
|
||||
# OCR文件编辑失败返回列表页(onlyoffice专用)
|
||||
serverUrl: http://10.0.1.25:3000/docManage/ocr
|
||||
# OCR接口超时时间
|
||||
times: 20
|
||||
# OCR转换类型
|
||||
convertType: BOTH
|
||||
|
||||
file:
|
||||
downloadUrl: a
|
||||
|
||||
Reference in New Issue
Block a user