From 23a65435745389a0c37fe122d4da1747da790bbc Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Mon, 22 Sep 2025 09:25:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/ErrorMsgEnum.java | 1 + .../controller/ApmConfigController.java | 35 +++++- .../controller/ApmRecordController.java | 116 ++++++++++-------- .../controller/BlacklistController.java | 39 +++++- .../controller/CommonApiController.java | 41 ++++++- 5 files changed, 179 insertions(+), 53 deletions(-) diff --git a/src/main/java/org/springblade/common/enums/ErrorMsgEnum.java b/src/main/java/org/springblade/common/enums/ErrorMsgEnum.java index aa51bd7..1d5de48 100644 --- a/src/main/java/org/springblade/common/enums/ErrorMsgEnum.java +++ b/src/main/java/org/springblade/common/enums/ErrorMsgEnum.java @@ -22,6 +22,7 @@ public enum ErrorMsgEnum { APMRECORD_SAVE_DATE_IS_NULL("APMRECORD_SAVE_DATE_IS_NULL", "参数错误, 预约时间为空"), USER_IN_BLACKLIST("USER_IN_BLACKLIST", "预约失败, 用户已被拉黑"), + PARAMS_CHECK_FAIL("PARAMS_CHECK_FAIL", "参数错误, 二次校验未通过"), ; final String name; diff --git a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java index 211ff48..1974bb6 100644 --- a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java +++ b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java @@ -2,9 +2,13 @@ package org.springblade.modules.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.*; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.bouncycastle.crypto.InvalidCipherTextException; import org.springblade.common.config.Sm2PrivatekeyProperties; import org.springblade.common.constant.BusinessConstant; @@ -27,6 +31,7 @@ import org.springblade.modules.business.vo.ApmConfigVO; import org.springblade.modules.business.wrapper.ApmConfigWrapper; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; @@ -134,7 +139,7 @@ public class ApmConfigController extends BladeController { * @return */ @GetMapping("/detail-for-apm2") - public R> detailForApm2(Long createDept, String apmDay, String cupCardNo) throws InvalidCipherTextException, UnsupportedEncodingException { + public R> detailForApm2(Long createDept, String apmDay, String cupCardNo, HttpServletRequest request) throws InvalidCipherTextException, UnsupportedEncodingException, JsonProcessingException { if (Func.isEmpty(createDept)) { return R.fail(ErrorMsgEnum.PARAMS_NULL_CREATE_DEPT.getValue()); } @@ -144,8 +149,34 @@ public class ApmConfigController extends BladeController { if (Func.isEmpty(cupCardNo)) { return R.fail(ErrorMsgEnum.PARAMS_NULL_CUP_CARD_NO.getValue()); } - //cupCardNo = Sm2Utils.decrypt(cupCardNo,sm2PrivatekeyProperties.getDetailForApm()); System.out.println("获取放号详细获取到的身份证号是:" + cupCardNo); + String cardNo = null; + // 获取指定请求头 + String interfaceToken = request.getHeader("interfaceToken"); + if(StringUtils.isNotEmpty(interfaceToken)){ + System.out.println("获取放号详细获取到的interfaceToken是:" + interfaceToken); + String info1 = Sm2Utils.decrypt(interfaceToken,"7d6a56ad28bd40b0305cf0d029121516cf1dc69a220ad66a111a95e091bc1264"); + String info = Sm2Utils.decrypt(info1,"3c57e96dac2d6d0dfd92e400ebb609e584b148b755968d898bd25f226aa5b636"); + System.out.println("获取放号详细token解密后的内容是:"+info); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + + // 解析JSON字符串 + JsonNode rootNode = objectMapper.readTree(info); + + // 获取data字段的值(这是一个JSON字符串) + String dataJson = rootNode.get("data").asText(); + + // 解析data字段的JSON字符串 + JsonNode dataNode = objectMapper.readTree(dataJson); + + // 获取certNo的值 + cardNo = dataNode.get("certNo").asText(); + + System.out.println("获取放号详细获取到的身份证号是:"+cardNo); + + } + return R.data(apmConfigService.detailForApm(createDept, apmDay, cupCardNo)); } diff --git a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java index 6846cfb..28047a7 100644 --- a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java +++ b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java @@ -2,10 +2,14 @@ package org.springblade.modules.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.bouncycastle.crypto.InvalidCipherTextException; import org.springblade.common.cache.DeptCache; import org.springblade.common.cache.DictBizCache; @@ -15,6 +19,7 @@ import org.springblade.common.constant.BusinessConstant; import org.springblade.common.constant.CommonConstant; import org.springblade.common.enums.ApmRecordStatusEnum; import org.springblade.common.enums.ErrorMsgEnum; +import org.springblade.common.utils.Sm2Utils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; @@ -37,6 +42,7 @@ import org.springblade.modules.business.wrapper.ApmRecordWrapper; import org.springblade.modules.system.entity.Dept; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -188,7 +194,7 @@ public class ApmRecordController extends BladeController { }) @ApiOperationSupport(order = 4) @ApiOperation(value = "分页", notes = "分页") - public R> selectPage2(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus) throws InvalidCipherTextException, IOException { + public R> selectPage2(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus, HttpServletRequest request) throws InvalidCipherTextException, IOException { /*BladeUser user = AuthUtil.getUser(); if (Func.isNotEmpty(user) && !BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) { createDept = null; @@ -203,6 +209,37 @@ public class ApmRecordController extends BladeController { } } return R.data(page);*/ + System.out.println("我的预约传参是:"+cupCardNo); + String cardNo = null; + // 获取指定请求头 + String interfaceToken = request.getHeader("interfaceToken"); + if(StringUtils.isNotEmpty(interfaceToken)){ + System.out.println("我的预约获取到的interfaceToken是:" + interfaceToken); + String info1 = Sm2Utils.decrypt(interfaceToken,"411d0cc222bfd3c72830f1b0e92d1da42ffd50d74b6f495ebab6ded09d48ab57"); + String info = Sm2Utils.decrypt(info1,"3c57e96dac2d6d0dfd92e400ebb609e584b148b755968d898bd25f226aa5b636"); + System.out.println("我的预约token解密后的内容是:"+info); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + + // 解析JSON字符串 + JsonNode rootNode = objectMapper.readTree(info); + + // 获取data字段的值(这是一个JSON字符串) + String dataJson = rootNode.get("data").asText(); + + // 解析data字段的JSON字符串 + JsonNode dataNode = objectMapper.readTree(dataJson); + + // 获取certNo的值 + cardNo = dataNode.get("certNo").asText(); + + System.out.println("我的预约获取到的身份证号是:"+cardNo); + + } + + /*if(!cupCardNo.equals(cardNo)){ + return R.fail(ErrorMsgEnum.PARAMS_CHECK_FAIL.getValue()); + }*/ BladeUser user = AuthUtil.getUser(); if (Func.isNotEmpty(user) && !BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) { createDept = null; @@ -267,66 +304,47 @@ public class ApmRecordController extends BladeController { @PostMapping("/save2") @ApiOperationSupport(order = 5) @ApiOperation(value = "新增", notes = "传入apmConfig") - public R save2(@RequestBody Map apmRecordListStr) throws InvalidCipherTextException, UnsupportedEncodingException { - /*List> apmRecordMapList = (List>) apmRecordListStr.get("data"); + public R save2(@RequestBody Map apmRecordListStr, HttpServletRequest request) throws InvalidCipherTextException, UnsupportedEncodingException, JsonProcessingException { + List> apmRecordMapList = (List>) apmRecordListStr.get("data"); List apmRecordList = new ArrayList<>(); Date apmDay = null; String cardNo = null; for (Map item : apmRecordMapList) { ApmRecord record = BeanUtil.copy(item, ApmRecord.class); - record.setApmDay(DateUtil.parse(item.get("apmDay").toString(), DateUtil.PATTERN_DATE)); - record.setCreateDept(Long.parseLong(item.get("createDept").toString())); - if(item.get("cupName") != null){ - record.setCupName(Sm2Utils.decrypt(item.get("cupName").toString(),sm2PrivatekeyProperties.getSave())); - } - if(item.get("cupCardNo") != null){ - record.setCupCardNo(Sm2Utils.decrypt(item.get("cupCardNo").toString(),sm2PrivatekeyProperties.getSave())); - } - if(item.get("cupPhone") != null){ - record.setCupPhone(Sm2Utils.decrypt(item.get("cupPhone").toString(),sm2PrivatekeyProperties.getSave())); - } - if (apmDay == null) { - apmDay = record.getApmDay(); - } - if (cardNo == null) { - cardNo = record.getCupCardNo(); - } - if (!DateUtil.format(apmDay, DateUtil.PATTERN_DATE).equals(DateUtil.format(record.getApmDay(), DateUtil.PATTERN_DATE))) { - return R.fail("预约失败, 一次只能预约同一天的体检项目"); - } + System.out.println("提交我的预约传参是:"+record.getCupCardNo()); + // 获取指定请求头 + String interfaceToken = request.getHeader("interfaceToken"); + if(StringUtils.isNotEmpty(interfaceToken)){ + System.out.println("提交我的预约获取到的interfaceToken是:" + interfaceToken); + String info1 = Sm2Utils.decrypt(interfaceToken,"1ba5264f7cea5dcc213864bcf4c60bb772638ab9e9f93ecc1e3f854a0139d310"); + String info = Sm2Utils.decrypt(info1,"3c57e96dac2d6d0dfd92e400ebb609e584b148b755968d898bd25f226aa5b636"); + System.out.println("提交我的预约token解密后的内容是:"+info); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); - if (!cardNo.equals(record.getCupCardNo())) { - return R.fail("预约失败, 一次只能预约同一个人"); - } + // 解析JSON字符串 + JsonNode rootNode = objectMapper.readTree(info); - record.setApmTime(DateUtil.now()); - record.setApmStatus(BusinessConstant.RECORD_STATUS_UNREGISTER); - apmRecordList.add(record); - } + // 获取data字段的值(这是一个JSON字符串) + String dataJson = rootNode.get("data").asText(); + + // 解析data字段的JSON字符串 + JsonNode dataNode = objectMapper.readTree(dataJson); + + // 获取certNo的值 + cardNo = dataNode.get("certNo").asText(); + + System.out.println("提交我的预约取到的身份证号是:"+cardNo); - String checkMsg = ""; - synchronized(this){ - checkMsg = recordService.checkApmRecordSave(apmRecordList); - if (Func.isBlank(checkMsg)) { - recordService.saveBatch(apmRecordList); - int blacklistOutdate = DictBizCache.getDictValueWithOffset(BusinessConstant.DICT_KEY_BLACKLIST_OUTDATE); - int timesToBlacklist = DictBizCache.getDictValueWithOffset(BusinessConstant.DICT_KEY_RENEGED_TIMES_TO_BLACKLIST); - Map result = new HashMap<>(); - result.put("blacklistOutDate", blacklistOutdate); - result.put("timesToBlacklist", timesToBlacklist); - return R.data(result); } - } - return R.fail(checkMsg);*/ - List> apmRecordMapList = (List>) apmRecordListStr.get("data"); - List apmRecordList = new ArrayList<>(); - Date apmDay = null; - String cardNo = null; - for (Map item : apmRecordMapList) { - ApmRecord record = BeanUtil.copy(item, ApmRecord.class); + /*if(!record.getCupCardNo().equals(cardNo)){ + return R.fail(ErrorMsgEnum.PARAMS_CHECK_FAIL.getValue()); + }*/ + + record.setApmDay(DateUtil.parse(item.get("apmDay").toString(), DateUtil.PATTERN_DATE)); record.setCreateDept(Long.parseLong(item.get("createDept").toString())); if (apmDay == null) { diff --git a/src/main/java/org/springblade/modules/business/controller/BlacklistController.java b/src/main/java/org/springblade/modules/business/controller/BlacklistController.java index b863b07..205a04d 100644 --- a/src/main/java/org/springblade/modules/business/controller/BlacklistController.java +++ b/src/main/java/org/springblade/modules/business/controller/BlacklistController.java @@ -2,9 +2,13 @@ package org.springblade.modules.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.*; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.bouncycastle.crypto.InvalidCipherTextException; import org.springblade.common.cache.DictBizCache; import org.springblade.common.config.Sm2PrivatekeyProperties; @@ -26,6 +30,7 @@ import org.springblade.modules.business.vo.BlacklistVO; import org.springblade.modules.business.wrapper.BlacklistWrapper; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.util.Date; @@ -115,10 +120,42 @@ public class BlacklistController extends BladeController { @GetMapping("/user-blacklist2") @ApiOperationSupport(order = 4) @ApiOperation(value = "获取正在生效的黑名单", notes = "传入用户证件号") - public R userBlacklist2(String cupCardNo) throws InvalidCipherTextException, UnsupportedEncodingException { + public R userBlacklist2(String cupCardNo, HttpServletRequest request) throws InvalidCipherTextException, UnsupportedEncodingException, JsonProcessingException { if (Func.isEmpty(cupCardNo)) { return R.fail(ErrorMsgEnum.PARAMS_NULL_CUP_CARD_NO.getValue()); } + System.out.println("黑名单传参是:"+cupCardNo); + String cardNo = null; + // 获取指定请求头 + String interfaceToken = request.getHeader("interfaceToken"); + if(StringUtils.isNotEmpty(interfaceToken)){ + System.out.println("黑名单获取到的interfaceToken是:" + interfaceToken); + String info1 = Sm2Utils.decrypt(interfaceToken,"00b7ce5a76c69b1687b82feae5a97dd889f506771c38bd2cf3cb397e1fde21cd36"); + String info = Sm2Utils.decrypt(info1,"3c57e96dac2d6d0dfd92e400ebb609e584b148b755968d898bd25f226aa5b636"); + System.out.println("黑名单token解密后的内容是:"+info); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + + // 解析JSON字符串 + JsonNode rootNode = objectMapper.readTree(info); + + // 获取data字段的值(这是一个JSON字符串) + String dataJson = rootNode.get("data").asText(); + + // 解析data字段的JSON字符串 + JsonNode dataNode = objectMapper.readTree(dataJson); + + // 获取certNo的值 + cardNo = dataNode.get("certNo").asText(); + + System.out.println("黑名单获取到的身份证号是:"+cardNo); + + } + + /*if(!cupCardNo.equals(cardNo)){ + return R.fail(ErrorMsgEnum.PARAMS_CHECK_FAIL.getValue()); + }*/ + System.out.println("黑名单获取到的身份证号是:"+cupCardNo); //cupCardNo = Sm2Utils.decrypt(cupCardNo,sm2PrivatekeyProperties.getUserBlacklist()); Blacklist blacklist = blacklistService.getLatelyRecord(cupCardNo); diff --git a/src/main/java/org/springblade/modules/business/controller/CommonApiController.java b/src/main/java/org/springblade/modules/business/controller/CommonApiController.java index 85b2771..2ca59c5 100644 --- a/src/main/java/org/springblade/modules/business/controller/CommonApiController.java +++ b/src/main/java/org/springblade/modules/business/controller/CommonApiController.java @@ -1,15 +1,21 @@ package org.springblade.modules.business.controller; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.bouncycastle.crypto.InvalidCipherTextException; import org.springblade.common.cache.business.CupImgCache; import org.springblade.common.config.Sm2PrivatekeyProperties; import org.springblade.common.constant.CommonConstant; +import org.springblade.common.enums.ErrorMsgEnum; import org.springblade.common.utils.CommonDateUtil; +import org.springblade.common.utils.Sm2Utils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tenant.annotation.TenantDS; import org.springblade.core.tool.api.R; @@ -19,6 +25,7 @@ import org.springblade.modules.business.entity.CupImg; import org.springblade.modules.business.service.ICupImgService; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; /** @@ -63,7 +70,7 @@ public class CommonApiController extends BladeController { @PostMapping("/save-cup-img") @ApiOperationSupport(order = 3) @ApiOperation(value = "保存用户头像", notes = "保存用户头像") - public R saveCupImg(@RequestParam String data) { + public R saveCupImg(@RequestParam String data, HttpServletRequest request) throws JsonProcessingException, InvalidCipherTextException, UnsupportedEncodingException { if (Func.isBlank(data)) { return R.fail("请求数据为空"); } @@ -71,6 +78,38 @@ public class CommonApiController extends BladeController { JSONObject json = JSONObject.parseObject(data); CupImg cupImg = BeanUtil.copy(json, CupImg.class); + System.out.println("保存用户头像传参是:"+cupImg.getCupCardNo()); + String cardNo = null; + // 获取指定请求头 + String interfaceToken = request.getHeader("interfaceToken"); + if(StringUtils.isNotEmpty(interfaceToken)){ + System.out.println("保存用户头像获取到的interfaceToken是:" + interfaceToken); + String info1 = Sm2Utils.decrypt(interfaceToken,"00c308b1ca5c0bd452e52816af5f16c3baf0bbff8587d32b63ccb23bc8e4f73759"); + String info = Sm2Utils.decrypt(info1,"3c57e96dac2d6d0dfd92e400ebb609e584b148b755968d898bd25f226aa5b636"); + System.out.println("保存用户头像token解密后的内容是:"+info); + // 创建ObjectMapper实例 + ObjectMapper objectMapper = new ObjectMapper(); + + // 解析JSON字符串 + JsonNode rootNode = objectMapper.readTree(info); + + // 获取data字段的值(这是一个JSON字符串) + String dataJson = rootNode.get("data").asText(); + + // 解析data字段的JSON字符串 + JsonNode dataNode = objectMapper.readTree(dataJson); + + // 获取certNo的值 + cardNo = dataNode.get("certNo").asText(); + + System.out.println("保存用户头像获取到的身份证号是:"+cardNo); + + } + + /*if(!cupImg.getCupCardNo().equals(cardNo)){ + return R.fail(ErrorMsgEnum.PARAMS_CHECK_FAIL.getValue()); + }*/ + CupImg cupImgCheck = cupImgService.getByCardNo(cupImg.getCupCardNo()); if (Func.isEmpty(cupImgCheck)) {