二次校验

master
sunjianxi 7 months ago
parent 300bd7ea7a
commit 23a6543574
  1. 1
      src/main/java/org/springblade/common/enums/ErrorMsgEnum.java
  2. 35
      src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
  3. 116
      src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
  4. 39
      src/main/java/org/springblade/modules/business/controller/BlacklistController.java
  5. 41
      src/main/java/org/springblade/modules/business/controller/CommonApiController.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;

@ -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<List<ApmConfigListVO>> detailForApm2(Long createDept, String apmDay, String cupCardNo) throws InvalidCipherTextException, UnsupportedEncodingException {
public R<List<ApmConfigListVO>> 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));
}

@ -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<IPage<ApmRecordListVO>> selectPage2(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus) throws InvalidCipherTextException, IOException {
public R<IPage<ApmRecordListVO>> 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<String, Object> apmRecordListStr) throws InvalidCipherTextException, UnsupportedEncodingException {
/*List<Map<String, Object>> apmRecordMapList = (List<Map<String, Object>>) apmRecordListStr.get("data");
public R save2(@RequestBody Map<String, Object> apmRecordListStr, HttpServletRequest request) throws InvalidCipherTextException, UnsupportedEncodingException, JsonProcessingException {
List<Map<String, Object>> apmRecordMapList = (List<Map<String, Object>>) apmRecordListStr.get("data");
List<ApmRecord> apmRecordList = new ArrayList<>();
Date apmDay = null;
String cardNo = null;
for (Map<String, Object> 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<String, Object> result = new HashMap<>();
result.put("blacklistOutDate", blacklistOutdate);
result.put("timesToBlacklist", timesToBlacklist);
return R.data(result);
}
}
return R.fail(checkMsg);*/
List<Map<String, Object>> apmRecordMapList = (List<Map<String, Object>>) apmRecordListStr.get("data");
List<ApmRecord> apmRecordList = new ArrayList<>();
Date apmDay = null;
String cardNo = null;
for (Map<String, Object> 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) {

@ -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);

@ -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)) {

Loading…
Cancel
Save