2024-01-23 11:45:36 完成后端接口开发

master
魔神煜修罗皇 1 year ago
parent 1c1208419a
commit 8e79cdfce8
  1. 2
      psdc-admin/src/main/resources/application.yml
  2. BIN
      psdc-business/lib/dntd-common-1.0-SNAPSHOT.jar
  3. BIN
      psdc-business/lib/dntd-model-buildheating-1.0-SNAPSHOT.jar
  4. BIN
      psdc-business/lib/dntd-model-heatboiler-1.0-SNAPSHOT.jar
  5. BIN
      psdc-business/lib/dntd-modelI-1.0-SNAPSHOT.jar
  6. BIN
      psdc-business/lib/dntd-tool-1.0-SNAPSHOT.jar
  7. 49
      psdc-business/pom.xml
  8. 4
      psdc-business/src/main/java/com/psdc/entity/SecretKey.java
  9. 19
      psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java
  10. 9
      psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java
  11. 16
      psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java
  12. 11
      psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java
  13. 38
      psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java
  14. 19
      psdc-business/src/main/java/com/psdc/service/model/IBuildHeatingService.java
  15. 29
      psdc-business/src/main/java/com/psdc/service/model/impl/BuildHeatingServiceImpl.java
  16. 2
      psdc-business/src/main/resources/mapper/business/PrivateKeyMapper.xml
  17. 70
      psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml
  18. 13
      psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java
  19. 101
      psdc-web/src/main/java/com/psdc/controller/key/SecretKeyController.java
  20. 50
      psdc-web/src/main/java/com/psdc/controller/model/BuildHeatingController.java

@ -1,3 +1,3 @@
spring:
profiles:
active: prod
active: dev

@ -28,12 +28,49 @@
<artifactId>psdc-framework</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.5</version>
</dependency>
<dependency>
<groupId>com.psdc</groupId>
<artifactId>psdc-quartz</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-modelI</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-model-heatboiler</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-model-buildheating</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-tool</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
@ -71,5 +108,15 @@
<!-- </dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -21,6 +21,10 @@ public class SecretKey {
private Integer id ;
/** 密钥 */
private String keyValue ;
/** 密钥cpu_ids */
private String cpuIds ;
/** 授权单位 */
private String keyUnit ;
/** 有效期至 */
private String exportDate ;
/** 创建时间 */

@ -1,9 +1,12 @@
package com.psdc.mapper;
import com.psdc.entity.PrivateKey;
import com.psdc.entity.SecretKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 小镇做题家
@ -27,6 +30,22 @@ public interface SecretKeyMapper {
Integer update(@Param(value = "newKey") String s1,
@Param(value = "oldKey") String s2);
Integer updateById(SecretKey secretKey);
SecretKey selOneByKey(@Param(value = "key") String s);
SecretKey selOneById(@Param(value = "id") Integer id);
Integer deleteById(@Param(value = "id") Integer id);
List<PrivateKey> queryAllByLimit(@Param(value = "keyUnit") String keyUnit,
@Param(value = "endDateTime") String endDateTime,
@Param(value = "startDateTime") String startDateTime,
@Param(value = "pageCurrent") Integer pageCurrent,
@Param(value = "pageSize") Integer pageSize);
Long selectCount(@Param(value = "keyUnit") String keyUnit,
@Param(value = "endDateTime") String endDateTime,
@Param(value = "startDateTime") String startDateTime);
}

@ -1,5 +1,6 @@
package com.psdc.service;
import com.psdc.core.domain.AjaxResult;
import com.psdc.entity.SecretKey;
/**
@ -14,6 +15,14 @@ public interface ISecretKeyService {
SecretKey selOne(String key, String date);
SecretKey selOneById(Integer id);
Integer deleteById(Integer id);
Integer updateById(SecretKey secretKey);
AjaxResult queryAllByLimit(String keyUnit, String startDateTime, String endDateTime, Integer pageCurrent, Integer pageSize);
Integer insert(SecretKey secretKey);
Integer update(String s1, String s2);

@ -35,12 +35,11 @@ public class GenerateKeyIml implements IGenerateKey {
@Override
public String generateKey(Map map, String sm4) {
String key;
SM4Util sm4Util = new SM4Util();
try {
// 解密
String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY);
// 解密 SM4Util sm4Util = new SM4Util();
// String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY);
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
SecretKeySpec secretKey = new SecretKeySpec(decryptBySM4ECB.getBytes(StandardCharsets.UTF_8), "AES");
SecretKeySpec secretKey = new SecretKeySpec(sm4.getBytes(StandardCharsets.UTF_8), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8));
key = Base64.getEncoder().encodeToString(encrypted);
@ -51,6 +50,15 @@ public class GenerateKeyIml implements IGenerateKey {
return key;
}
public static String encrypt(Map<String, String> map) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM, "BC");
SecretKeySpec secretKey = new SecretKeySpec(SM4_KEY.getBytes(StandardCharsets.UTF_8), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encrypted);
}
private static String mapToString(Map<String, String> map) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {

@ -72,7 +72,13 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService {
long pageCount = (count/pageSize) + (count%pageSize==0?0:1);
AjaxResult ajax = new AjaxResult();
Map map = new HashMap<String, Object>();
SM4Util sm4Util = new SM4Util();
List<PrivateKey> list = privateKeyMapper.queryAllByLimit(keyUnit, start, pageSize);
list.parallelStream().forEach((s)->{
// 解密
String decryptBySM4ECB = sm4Util.decryptBySM4ECB(s.getKeyValue(), SM4_KEY);
s.setKeyValue(decryptBySM4ECB);
});
ajax.put("data", list);
map.put("pageCurrent", pageCurrent);
map.put("pageSize", pageSize);
@ -86,10 +92,13 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService {
public AjaxResult selectAll() {
List<Map> ary = new ArrayList<>();
AjaxResult ajax = new AjaxResult();
SM4Util sm4Util = new SM4Util();
List<PrivateKey> list = privateKeyMapper.selectAll();
list.parallelStream().forEach((s)->{
Map map = new HashMap<String, Object>();
map.put("key", s.getKeyValue());
// 解密
String decryptBySM4ECB = sm4Util.decryptBySM4ECB(s.getKeyValue(), SM4_KEY);
map.put("key", decryptBySM4ECB);
map.put("unit", s.getKeyUnit());
ary.add(map);
});

@ -1,5 +1,7 @@
package com.psdc.service.impl;
import com.psdc.core.domain.AjaxResult;
import com.psdc.entity.PrivateKey;
import com.psdc.entity.SecretKey;
import com.psdc.mapper.SecretKeyMapper;
import com.psdc.service.ISecretKeyService;
@ -8,6 +10,9 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author戴仕崑
@ -31,6 +36,39 @@ public class SecretKeyServiceImpl implements ISecretKeyService {
return secretKeyMapper.selOneByKey(key);
}
@Override
public SecretKey selOneById(Integer id) {
return secretKeyMapper.selOneById(id);
}
@Override
public Integer deleteById(Integer id) {
return secretKeyMapper.deleteById(id);
}
@Override
public Integer updateById(SecretKey secretKey) {
secretKey.setUpdateTime(sdf.format(new Date()));
return secretKeyMapper.updateById(secretKey);
}
@Override
public AjaxResult queryAllByLimit(String keyUnit, String startDateTime, String endDateTime, Integer pageCurrent, Integer pageSize) {
int start = (pageCurrent - 1) * pageSize;
long count = secretKeyMapper.selectCount(keyUnit, endDateTime, startDateTime);
long pageCount = (count/pageSize) + (count%pageSize==0?0:1);
AjaxResult ajax = new AjaxResult();
Map map = new HashMap<String, Object>();
List<PrivateKey> list = secretKeyMapper.queryAllByLimit(keyUnit, endDateTime, startDateTime, start, pageSize);
ajax.put("data", list);
map.put("pageCurrent", pageCurrent);
map.put("pageSize", pageSize);
map.put("pageTotalRow", count);
map.put("pageCount", pageCount);
ajax.put("page", map);
return ajax;
}
@Override
public Integer insert(SecretKey secretKey) {
secretKey.setCreateTime(sdf.format(new Date()));

@ -0,0 +1,19 @@
package com.psdc.service.model;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
/**
* @Author戴仕崑
* @Projectpsdc
* @FilenameIBuildHeatingService
* @Slogan 致敬大师致敬未来的你
* @Date2024/2/1 17:32
* @Version 1.0
*/
public interface IBuildHeatingService {
JSONObject exeModel2Report(JSONArray devSpecList, JSONObject jsonObject, String key);
}

@ -0,0 +1,29 @@
package com.psdc.service.model.impl;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.dky.tool.ModelTool;
import com.psdc.service.model.IBuildHeatingService;
import org.springframework.stereotype.Service;
/**
* @Author戴仕崑
* @Projectpsdc
* @FilenameBuildHeatingServiceImpl
* @Slogan 致敬大师致敬未来的你
* @Date2024/2/1 17:32
* @Version 1.0
*/
@Service
public class BuildHeatingServiceImpl implements IBuildHeatingService {
@Override
public JSONObject exeModel2Report(JSONArray devSpecList, JSONObject param, String key) {
JSONObject list = new JSONObject();
list.put("devSpecList",devSpecList);
new ModelTool(list);
return ModelTool.exeModel2Report(param, key);
}
}

@ -32,7 +32,7 @@
Select COUNT(1) From private_key
<where>
<if test="keyUnit != null and keyUnit != ''">
key_unit Like CONCAT("%",#{keyUnit},"%")
key_unit Like CONCAT("%",#{keyUnit},"%")
</if>
</where>
</select>

@ -6,21 +6,87 @@
<result property="id" column="id" />
<result property="keyValue" column="key_value" />
<result property="exportDate" column="export_date" />
<result property="cpuIds" column="cpu_ids" />
<result property="keyUnit" column="key_unit" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<insert id="insert" parameterType="com.psdc.entity.SecretKey">
Insert into secret_key(key_value,export_date,create_time,update_time)
values (#{keyValue},#{exportDate},#{createTime},#{updateTime})
Insert into secret_key(key_value,export_date,cpu_ids,key_unit,create_time,update_time)
values (#{keyValue},#{exportDate},#{cpuIds},#{keyUnit},#{createTime},#{updateTime})
</insert>
<update id="update">
UPDATE `secret_key` set key_value = #{newKey}, update_time = now() WHERE key_value = #{oldKey}
</update>
<update id="updateById">
Update secret_key
<set>
<if test="keyValue != null and keyValue != ''">
key_value = #{keyValue},
</if>
<if test="exportDate != null and exportDate != ''">
export_date = #{exportDate},
</if>
<if test="createTime != null and createTime != ''">
create_time = #{createTime},
</if>
<if test="updateTime != null and updateTime != ''">
update_time = #{updateTime},
</if>
<if test="cpuIds != null and cpuIds != ''">
cpu_ids = #{cpuIds},
</if>
<if test="keyUnit != null and keyUnit != ''">
key_unit = #{keyUnit},
</if>
</set>
Where id = #{id}
</update>
<delete id="deleteById">
Delete from secret_key Where id = #{id}
</delete>
<select id="selectCount" resultType="java.lang.Long">
Select Count(1) From secret_key
<where>
<if test="keyUnit != null and keyUnit != ''">
And key_unit Like CONCAT("%",#{keyUnit},"%")
</if>
<if test="endDateTime != null and endDateTime != ''">
And export_date &gt;= #{endDateTime}
</if>
<if test="startDateTime != null and startDateTime != ''">
And export_date &lt;= #{startDateTime}
</if>
</where>
</select>
<select id="queryAllByLimit" resultMap="SecretKeyMap">
SELECT * FROM secret_key
<where>
<if test="keyUnit != null and keyUnit != ''">
And key_unit Like CONCAT("%",#{keyUnit},"%")
</if>
<if test="endDateTime != null and endDateTime != ''">
And export_date &lt;= #{endDateTime}
</if>
<if test="startDateTime != null and startDateTime != ''">
And export_date &gt;= #{startDateTime}
</if>
</where>
Limit #{pageCurrent}, #{pageSize}
</select>
<select id="selOneByKey" resultMap="SecretKeyMap">
Select * From secret_key Where key_value = #{key}
</select>
<select id="selOneById" resultMap="SecretKeyMap">
Select * From secret_key Where id = #{id}
</select>
</mapper>

@ -10,10 +10,8 @@ import com.psdc.service.ISecretKeyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -37,10 +35,11 @@ public class GenerateKeyController extends BaseController {
public AjaxResult getGenerateKey(@RequestBody Map<String, Object> requestBody) {
List<String> cpuIds = (List<String>) requestBody.get("cpuIds");
String expiration = (String) requestBody.get("expiration");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String key = (String) requestBody.get("key");
String companyname = (String) requestBody.get("companyname");
String companyName = (String) requestBody.get("companyname");
Map map = new HashMap();
map.put("companyname", companyname);
map.put("companyname", companyName);
map.put("expireTime", expiration);
map.put("cpuIds", cpuIds.toString());
AjaxResult ajax = AjaxResult.success();
@ -48,7 +47,9 @@ public class GenerateKeyController extends BaseController {
ajax.put("key", s);
SecretKey secretKey = new SecretKey();
secretKey.setKeyValue(s);
secretKey.setCpuIds(cpuIds.toString());
secretKey.setExportDate(expiration);
secretKey.setKeyUnit(companyName);
SecretKey selOne = secretKeyService.selOne(s, expiration);
if (Optional.ofNullable(selOne).isPresent()) {
secretKeyService.update(s, selOne.getKeyValue());

@ -0,0 +1,101 @@
package com.psdc.controller.key;
import com.psdc.core.domain.AjaxResult;
import com.psdc.entity.SecretKey;
import com.psdc.service.IGenerateKey;
import com.psdc.service.ISecretKeyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @Author戴仕崑
* @Projectpsdc
* @FilenameSecretKeyController
* @Slogan 致敬大师致敬未来的你
* @Date2024/1/30 10:09
* @Version 1.0
*/
@RestController
@RequestMapping("/system/secret/key")
public class SecretKeyController {
@Autowired
ISecretKeyService secretKeyService;
@Autowired
IGenerateKey generateKey;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@GetMapping("/byId")
public AjaxResult queryById(@RequestParam(value = "id") Integer id){
AjaxResult ajax = new AjaxResult();
ajax.put("data", secretKeyService.selOneById(id));
return ajax;
}
/**
* 通过ID删除单条数据
*
* @param requestBody 参数
* @return 实例对象
*/
@PostMapping("/delById")
public AjaxResult delById(@RequestBody Map<String, Object> requestBody){
AjaxResult ajax = new AjaxResult();
Integer id = (Integer) requestBody.get("id");
ajax.put("data", secretKeyService.deleteById(id));
return ajax;
}
/**
* 分页查询
*
* @param requestBody 筛选条件
* @return 查询结果
*/
@PostMapping("/byPage")
public AjaxResult paginQuery(@RequestBody Map<String, Object> requestBody){
String unit = (String) requestBody.get("keyUnit");
String startDateTime = (String) requestBody.get("startDateTime");
String endDateTime = (String) requestBody.get("endDateTime");
Integer pageCurrent = (Integer) requestBody.get("pageCurrent");
Integer pageSize = (Integer) requestBody.get("pageSize");
return secretKeyService.queryAllByLimit(unit, startDateTime, endDateTime, pageCurrent, pageSize);
}
@PostMapping("/upKeyData")
public AjaxResult upKeyDate(@RequestBody Map<String, Object> requestBody){
List<String> cpuIds = (List<String>) requestBody.get("cpuIds");
String expiration = (String) requestBody.get("expiration");
String key = (String) requestBody.get("key");
String companyName = (String) requestBody.get("companyname");
Integer id = (Integer) requestBody.get("id");
Map map = new HashMap();
map.put("companyname", companyName);
map.put("expireTime", expiration);
map.put("cpuIds", cpuIds.toString());
AjaxResult ajax = AjaxResult.success();
String s = generateKey.generateKey(map, key);
ajax.put("key", s);
SecretKey secretKey = new SecretKey();
secretKey.setKeyValue(s);
secretKey.setId(id);
secretKey.setCpuIds(cpuIds.toString());
secretKey.setExportDate(expiration);
secretKey.setKeyUnit(companyName);
secretKeyService.updateById(secretKey);
return ajax;
}
}

@ -0,0 +1,50 @@
package com.psdc.controller.model;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.psdc.core.domain.AjaxResult;
import com.psdc.entity.SecretKey;
import com.psdc.service.model.IBuildHeatingService;
import org.springframework.beans.factory.annotation.Autowired;
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 java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* @Author戴仕崑
* @Projectpsdc
* @FilenameBuildHeatingController
* @Slogan 致敬大师致敬未来的你
* @Date2024/2/2 8:55
* @Version 1.0
*/
@RestController
@RequestMapping("/system/model")
public class BuildHeatingController {
@Autowired
IBuildHeatingService buildHeatingService;
@PostMapping("/getReport")
public AjaxResult getGenerateKey(@RequestBody Map<String, Object> requestBody) {
List<SysDeviceHeatScene> devSpecList = (List<SysDeviceHeatScene>) requestBody.get("devSpecList");
JSONArray objects = new JSONArray();
objects.addAll(devSpecList);
HashMap<String, Object> param = (HashMap<String, Object>) requestBody.get("param");
JSONObject jsonObject = new JSONObject();
jsonObject.putAll(param);
String key = (String) requestBody.get("key");
AjaxResult ajax = AjaxResult.success();
ajax.put("report", buildHeatingService.exeModel2Report(objects, jsonObject, key));
return ajax;
}
}
Loading…
Cancel
Save