skjcmanager/skjcmanager-service-api/pom.xml
@@ -25,6 +25,7 @@ <module>skjcmanager-alerts-api</module> <module>skjcmanager-xxljob-api</module> <module>skjcmanager-nky-api</module> <module>skjcmanager-pwd-api</module> </modules> <dependencies> skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/pom.xml
New file @@ -0,0 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>skjcmanager-service-api</artifactId> <groupId>cn.gistack</groupId> <version>3.0.1.RELEASE</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>skjcmanager-pwd-api</artifactId> <name>${project.artifactId}</name> <version>${bladex.project.version}</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-starter-cache</artifactId> </dependency> </dependencies> </project> skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/dto/CBCResultDTO.java
New file @@ -0,0 +1,21 @@ package cn.gistack.pwd.dto; import lombok.Data; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: * @USER: aix * @DATE: 2023/8/14 9:49 */ @Data public class CBCResultDTO { private String keyIndex;// 密钥索引KeyIndex private String sm4IV;// base64后的16字节字符串 private String maced;// MAC计算值 public CBCResultDTO(String keyIndex, String sm4IV, String maced) { this.keyIndex = keyIndex; this.sm4IV = sm4IV; this.maced = maced; } } skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/dto/ResultDTO.java
New file @@ -0,0 +1,19 @@ package cn.gistack.pwd.dto; import lombok.Data; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: 用于接收云密码服务平台接口返回对象 * @USER: aix * @DATE: 2023/8/11 17:48 */ @Data public class ResultDTO { private String resultCode; private String resultString; private String data; } skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/IPwdClient.java
New file @@ -0,0 +1,37 @@ package cn.gistack.pwd.fegin; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import org.springblade.core.tool.api.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: * @USER: aix * @DATE: 2023/8/14 14:16 */ @FeignClient( value = "blade-pwd", fallback = PwdClientFallback.class ) public interface IPwdClient { String API_PREFIX = "/client"; String GET_CBCMACENCIPHER = API_PREFIX + "/getCBCMacEncipher"; String GET_ENCRYPT = API_PREFIX + "/getEncrypt"; String GET_DECRYPT = API_PREFIX + "/getDecrypt"; @PostMapping(GET_CBCMACENCIPHER) R<CBCResultDTO> getCBCMacEncipher(@RequestParam("message")String message); @PostMapping(GET_ENCRYPT) R<ResultDTO> getEncrypt(@RequestParam("sm4Iv")String sm4Iv, @RequestParam("keyIndex")String keyIndex, @RequestParam("message")String message); @PostMapping(GET_DECRYPT) R<ResultDTO> getDecrypt(@RequestParam("sm4Iv")String sm4Iv, @RequestParam("keyIndex")String keyIndex, @RequestParam("message")String message); } skjcmanager/skjcmanager-service-api/skjcmanager-pwd-api/src/main/java/cn/gistack/pwd/fegin/PwdClientFallback.java
New file @@ -0,0 +1,29 @@ package cn.gistack.pwd.fegin; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import org.springblade.core.tool.api.R; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: * @USER: aix * @DATE: 2023/8/14 14:17 */ public class PwdClientFallback implements IPwdClient { @Override public R<CBCResultDTO> getCBCMacEncipher(String message) { return R.fail("获取数据失败"); } @Override public R<ResultDTO> getEncrypt(String sm4Iv, String keyIndex, String message) { return R.fail("获取数据失败"); } @Override public R<ResultDTO> getDecrypt(String sm4Iv, String keyIndex, String message) { return R.fail("获取数据失败"); } } skjcmanager/skjcmanager-service/pom.xml
@@ -25,6 +25,7 @@ <module>skjcmanager-alerts</module> <module>skjcmanager-xxljob</module> <module>skjcmanager-nky</module> <module>skjcmanager-pwd</module> </modules> <dependencies> skjcmanager/skjcmanager-service/skjcmanager-pwd/pom.xml
New file @@ -0,0 +1,60 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>skjcmanager-service</artifactId> <groupId>cn.gistack</groupId> <version>3.0.1.RELEASE</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>skjcmanager-pwd</artifactId> <version>${bladex.project.version}</version> <name>${project.artifactId}</name> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-boot</artifactId> </dependency> <!--开启多数据源--> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-auto</artifactId> <scope>compile</scope> </dependency> <!--远程调度--> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-pwd-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <configuration> <username>${docker.username}</username> <password>${docker.password}</password> <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository> <tag>${project.version}</tag> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> <skip>false</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> </plugin> </plugins> </build> </project> skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/PwdApplication.java
New file @@ -0,0 +1,25 @@ package cn.gistack.pwd; import org.mybatis.spring.annotation.MapperScan; import org.springblade.core.cloud.client.BladeCloudApplication; import org.springblade.core.launch.BladeApplication; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @BladeCloudApplication @EnableFeignClients({"cn.gistack"}) @MapperScan({"org.springblade.**.mapper.**","cn.gistack.pwd.**.mapper.**"}) public class PwdApplication { public static void main(String[] args) { BladeApplication.run("blade-pwd", PwdApplication.class, args); } @Bean public RestTemplate restTemplate(RestTemplateBuilder builder){ return builder.build(); } } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/feign/PwdClient.java
New file @@ -0,0 +1,44 @@ package cn.gistack.pwd.feign; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import cn.gistack.pwd.fegin.IPwdClient; import cn.gistack.pwd.service.IPwdSendService; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: 云密码服务平台Feign实现类 * @USER: aix * @DATE: 2023/8/14 14:33 */ @NonDS @ApiIgnore @RestController @AllArgsConstructor public class PwdClient implements IPwdClient { private final IPwdSendService pwdSendService; @Override public R<CBCResultDTO> getCBCMacEncipher(String message) { return R.data(pwdSendService.getCBCMacEncipher(message)); } @Override @PostMapping(GET_ENCRYPT) public R<ResultDTO> getEncrypt(String sm4Iv, String keyIndex, String message) { return R.data(pwdSendService.getEncrypt(sm4Iv,keyIndex,message)); } @Override @PostMapping(GET_DECRYPT) public R<ResultDTO> getDecrypt(String sm4Iv, String keyIndex, String message) { return R.data(pwdSendService.getDecrypt(sm4Iv,keyIndex,message)); } } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/launch/PwdLauncherServiceImpl.java
New file @@ -0,0 +1,33 @@ package cn.gistack.pwd.launch; import cn.gistack.common.constant.LauncherConstant; import org.springblade.core.auto.service.AutoService; import org.springblade.core.launch.service.LauncherService; import org.springblade.core.launch.utils.PropsUtil; import org.springframework.boot.builder.SpringApplicationBuilder; import java.util.Properties; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: nacos配置 * @USER: aix * @DATE: 2023/7/31 10:51 */ @AutoService(LauncherService.class) public class PwdLauncherServiceImpl implements LauncherService { @Override public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) { Properties props = System.getProperties(); // 通用注册 PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile)); PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile)); PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile)); //开启多数据源 PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true"); } } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/IPwdSendService.java
New file @@ -0,0 +1,30 @@ package cn.gistack.pwd.service; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: * @USER: aix * @DATE: 2023/8/14 9:21 */ public interface IPwdSendService { /** * CBC加密 * @return 加密结果 */ CBCResultDTO getCBCMacEncipher(String message); ResultDTO getEncrypt(String sm4Iv, String keyIndex, String message); ResultDTO getDecrypt(String sm4Iv, String keyIndex, String message); /** * 用SM3算法进行HASH运算 * @return 加密结果 */ ResultDTO getHASHEncipher(); } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/service/impl/PwdSendServiceImpl.java
New file @@ -0,0 +1,42 @@ package cn.gistack.pwd.service.impl; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import cn.gistack.pwd.service.IPwdSendService; import cn.gistack.pwd.util.PwdSendRequestUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: * @USER: aix * @DATE: 2023/8/14 10:13 */ @Service public class PwdSendServiceImpl implements IPwdSendService { @Autowired private PwdSendRequestUtil pwdSendRequestUtil; @Override public CBCResultDTO getCBCMacEncipher(String message) { return pwdSendRequestUtil.getCBCMacEncipher(message); } @Override public ResultDTO getEncrypt(String sm4Iv, String keyIndex, String message) { return pwdSendRequestUtil.getEncrypt(sm4Iv, keyIndex, message); } @Override public ResultDTO getDecrypt(String sm4Iv, String keyIndex, String message) { return pwdSendRequestUtil.getDecrypt(sm4Iv, keyIndex, message); } @Override public ResultDTO getHASHEncipher() { return null; } } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/java/cn/gistack/pwd/util/PwdSendRequestUtil.java
New file @@ -0,0 +1,195 @@ package cn.gistack.pwd.util; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; import java.security.SecureRandom; import java.util.Base64; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: 云密码服务平台接口对接工具类 * @USER: aix * @DATE: 2023/8/11 16:12 */ @Configuration public class PwdSendRequestUtil { private static Logger logger = LoggerFactory.getLogger(PwdSendRequestUtil.class); @Value("${yunPwd.config.url-prefix}") public String urlPrefix; /** * 获取用户授权Token * * @return token */ public String getToken() { String url = urlPrefix + "/api/Http/token"; JSONObject jsonParm = new JSONObject(); jsonParm.put("Action", "GetToken"); jsonParm.put("DeviceType", "SCM"); JSONObject targetJson = new JSONObject(); targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis())); targetJson.put("UserName", "c"); targetJson.put("AppID", "1655430695646eaab36117987e19026b"); targetJson.put("AppKey", "1445a67edb89302f6b9f055112b42c13"); jsonParm.put("Target", targetJson); return apiRequest(url, jsonParm.toJSONString()).getData(); } /** * 密钥申请 * * @return 密钥 */ public String getKeyIndex() { String url = urlPrefix + "/api/Http/scm"; JSONObject jsonParm = new JSONObject(); jsonParm.put("Action", "ApplyKey"); jsonParm.put("DeviceType", "SCM"); JSONObject targetJson = new JSONObject(); targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis())); targetJson.put("Token", getToken()); targetJson.put("Algorithm", "1445a67edb89302f6b9f055112b42c13"); jsonParm.put("Target", targetJson); return apiRequest(url, jsonParm.toJSONString()).getData(); } /** * CBC加密 * * @param message keyIndex:密钥 sm4IV:base64后的16字节字符串 maced:MAC计算值 * @return */ public CBCResultDTO getCBCMacEncipher(String message) { String url = urlPrefix + "/api/Http/scm"; String sm4Iv = getSm4Iv(); JSONObject jsonParm = new JSONObject(); jsonParm.put("Action", "CBCMac"); jsonParm.put("DeviceType", "SCM"); JSONObject targetJson = new JSONObject(); targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis())); targetJson.put("Token", getToken()); targetJson.put("KeyIndex", getKeyIndex()); targetJson.put("Message", message); targetJson.put("Sm4IV", sm4Iv); jsonParm.put("Target", targetJson); ResultDTO ret = apiRequest(url, jsonParm.toJSONString()); return new CBCResultDTO(getKeyIndex(), sm4Iv, ret.getData()); } /** * 加密 * @param sm4Iv 算法为SM4时需要填写,16字节字符串 * @param keyIndex 密钥 * @param message 加密原数据 * @return 密文 */ public ResultDTO getEncrypt(String sm4Iv, String keyIndex, String message) { String url = urlPrefix + "/api/Http/scm"; JSONObject jsonParm = new JSONObject(); jsonParm.put("Action", "Encrypt"); jsonParm.put("DeviceType", "SCM"); JSONObject targetJson = new JSONObject(); targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis())); targetJson.put("Token", getToken()); targetJson.put("Algorithm", "SM4"); targetJson.put("Sm4Mode", "CBC"); targetJson.put("Sm4IV", sm4Iv); targetJson.put("KeyIndex", keyIndex); targetJson.put("Message", message); jsonParm.put("Target", targetJson); return apiRequest(url, jsonParm.toJSONString()); } /** * 解密 * * @param sm4Iv 算法为SM4时需要填写,16字节字符串 * @param keyIndex 密钥 * @param message 待解密信息 * @return base64后的解密信息 */ public ResultDTO getDecrypt(String sm4Iv, String keyIndex, String message) { String url = urlPrefix + "/api/Http/scm"; JSONObject jsonParm = new JSONObject(); jsonParm.put("Action", "Decrypt"); jsonParm.put("DeviceType", "SCM"); JSONObject targetJson = new JSONObject(); targetJson.put("TimeStamp", String.valueOf(System.currentTimeMillis())); targetJson.put("Token", getToken()); targetJson.put("Algorithm", "SM4"); targetJson.put("Sm4Mode", "CBC"); targetJson.put("Sm4IV", sm4Iv); targetJson.put("KeyIndex", keyIndex); targetJson.put("MessageCode", "base64"); targetJson.put("Message", message); jsonParm.put("Target", targetJson); return apiRequest(url, jsonParm.toJSONString()); } /** * 随机产生长度为16的字节数组并Base64编码 * * @return Sm4IV */ public String getSm4Iv() { // Generate random byte array SecureRandom secureRandom = new SecureRandom(); byte[] byteArray = new byte[16]; secureRandom.nextBytes(byteArray); // Encode byte array using Base64 String sm4IV = Base64.getEncoder().encodeToString(byteArray); return sm4IV; } public ResultDTO apiRequest(String url, String params) { logger.info("请求参数:" + params); // 声明一个header变量 HttpHeaders headers = new HttpHeaders(); // 设置为json格式 MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8"); headers.setContentType(mediaType); HttpEntity<String> httpEntity = new HttpEntity(params, headers); RestTemplate template = new RestTemplate(); ResultDTO resultDTO = template.postForObject(url, httpEntity, ResultDTO.class); logger.info("返回结果:" + JSONObject.toJSONString(resultDTO)); return resultDTO; } } skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/resources/application-dev.yml
New file @@ -0,0 +1,38 @@ #服务器端口 server: port: 8120 #数据源配置 #spring: # datasource: # url: ${blade.datasource.dev.url} # username: ${blade.datasource.dev.username} # password: ${blade.datasource.dev.password} #多数据源配置 spring: #排除DruidDataSourceAutoConfigure autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: #设置默认的数据源或者数据源组,默认值即为master primary: master datasource: ## 业务默认数据源 master: url: ${blade.datasource.dev.url} username: ${blade.datasource.dev.username} password: ${blade.datasource.dev.password} ##中台数据源 zt: url: ${blade.datasource.dev.zt.url} username: ${blade.datasource.dev.zt.username} password: ${blade.datasource.dev.zt.password} main: allow-circular-references: true yunPwd: config: url-prefix: http://192.168.1.1 skjcmanager/skjcmanager-service/skjcmanager-pwd/src/main/resources/application-prod.yml
New file @@ -0,0 +1,36 @@ #服务器端口 server: port: 8120 #数据源配置 #spring: # datasource: # url: ${blade.datasource.prod.url} # username: ${blade.datasource.prod.username} # password: ${blade.datasource.prod.password} #多数据源配置 spring: #排除DruidDataSourceAutoConfigure autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: dynamic: #设置默认的数据源或者数据源组,默认值即为master primary: master datasource: master: url: ${blade.datasource.prod.url} username: ${blade.datasource.prod.username} password: ${blade.datasource.prod.password} zt: url: ${blade.datasource.prod.zt.url} username: ${blade.datasource.prod.zt.username} password: ${blade.datasource.prod.zt.password} main: allow-circular-references: true yunPwd: config: url-prefix: http://10.10.1.1 skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
@@ -65,6 +65,12 @@ <artifactId>skjcmanager-nky-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-pwd-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/controller/DangerReportController.java
@@ -65,7 +65,7 @@ @PostMapping("/save") @ApiOperation(value = "新增", notes = "传入实体类参数") public R save(@RequestBody DangerReport dangerReport) { return R.data(dangerReportService.save(dangerReport)); return R.data(dangerReportService.saveUp(dangerReport)); } /** skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/entity/DangerReport.java
@@ -12,7 +12,7 @@ /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: 监测上报 * @DESCRIPTION: 险情上报 * @USER: aix * @DATE: 2023/5/18 17:39 */ @@ -65,4 +65,10 @@ */ @ApiModelProperty("水库id") private String reservoirId; private String sm4iv; private String keyindexs; private String maced; private String encdata; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/IDangerReportService.java
@@ -1,8 +1,8 @@ package cn.gistack.sm.jcsb.service; import cn.gistack.sm.jcsb.supo.DangerReportSUPO; import cn.gistack.sm.jcsb.entity.DangerReport; import cn.gistack.sm.jcsb.vo.DangerReportVO; import cn.gistack.sm.jcsb.vo.DeviceReportVO; import cn.gistack.sm.jcsb.vo.StatisticsVO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; @@ -26,4 +26,7 @@ * @return */ StatisticsVO getStatistics(String resGuid); boolean saveUp(DangerReport dangerReport); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/service/impl/DangerReportServiceImpl.java
@@ -1,14 +1,22 @@ package cn.gistack.sm.jcsb.service.impl; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import cn.gistack.pwd.fegin.IPwdClient; import cn.gistack.sm.jcsb.supo.DangerReportSUPO; import cn.gistack.sm.jcsb.entity.DangerReport; import cn.gistack.sm.jcsb.mapper.DangerReportMapper; import cn.gistack.sm.jcsb.service.IDangerReportService; import cn.gistack.sm.jcsb.vo.DangerReportVO; import cn.gistack.sm.jcsb.vo.DeviceReportVO; import cn.gistack.sm.jcsb.vo.StatisticsVO; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -20,6 +28,9 @@ */ @Service public class DangerReportServiceImpl extends BaseServiceImpl<DangerReportMapper, DangerReport> implements IDangerReportService { @Autowired private IPwdClient pwdClient; @Override public List<DangerReportVO> getAll(DangerReport dangerReport) { @@ -35,4 +46,32 @@ public StatisticsVO getStatistics(String resGuid) { return baseMapper.getStatistics(resGuid); } @Override @Transactional public boolean saveUp(DangerReport dangerReport) { this.save(dangerReport); DangerReportSUPO dangerReportSUPO = BeanUtil.copy(dangerReport, DangerReportSUPO.class); String message = JSONObject.toJSONString(dangerReportSUPO); R<CBCResultDTO> cbcResultDTOR = pwdClient.getCBCMacEncipher(message); if (cbcResultDTOR.getCode() != 200) { return false; } String maced = cbcResultDTOR.getData().getMaced(); String keyIndex = cbcResultDTOR.getData().getKeyIndex(); String sm4iv = cbcResultDTOR.getData().getSm4IV(); DangerReport ympo = new DangerReport(); ympo.setId(dangerReport.getId()); ympo.setMaced(maced); ympo.setKeyindexs(keyIndex); ympo.setSm4iv(sm4iv); R<ResultDTO> resultDTOR = pwdClient.getEncrypt(sm4iv, keyIndex, message); if (resultDTOR.getCode() != 200) { return false; } ympo.setEncdata(resultDTOR.getData().getData()); return this.updateById(ympo); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/supo/DangerReportSUPO.java
New file @@ -0,0 +1,56 @@ package cn.gistack.sm.jcsb.supo; import cn.gistack.sm.jcsb.entity.DangerReport; import lombok.Data; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; import java.util.Date; import java.util.Objects; /** * @PROJECT_NAME: skjcmanager * @DESCRIPTION: 加密超级类 * @USER: aix * @DATE: 2023/8/14 14:59 */ @Data public class DangerReportSUPO extends BaseEntity { /** * 图片数组 */ private Object[] images; /** * 描述信息 */ private String desinfo; /** * 接收人 */ private String toUser; /** * 图片数组 */ private Object[] toImages; /** * 描述信息 */ private String toDesinfo; /** * 类型(0:险情上报) */ private String type; /** * 水库id */ private String reservoirId; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/jcsb/vo/DangerReportVO.java
@@ -19,4 +19,5 @@ * 上报人 */ private String reportUser; }