Browse Source

20250417修改

master
tangxinyuan 2 days ago
parent
commit
464e1b78c3
  1. 26
      code/springboot/newBank/src/main/java/demo/zhangjie/Qrydebit.java
  2. 138
      code/springboot/newBank/src/main/java/demo/zhangjie/acceptdebit.java
  3. 2
      code/springboot/newBank/src/main/java/demo/zhangjie/approvalsubmit.java

26
code/springboot/newBank/src/main/java/demo/zhangjie/Qrydebit.java

@ -38,4 +38,30 @@ public class Qrydebit {
return list; return list;
} }
@RequestMapping("/qryhis")
public List<Map<String, Object>> qryhis(HttpServletRequest request) {
// 第一步,取下前端的字段
String debitNo = request.getParameter("debitNo");
String CustomerName = request.getParameter("CustomerName");
// 参数检查
if (debitNo == null || CustomerName == null) {
return java.util.Collections.emptyList();
}
// 第二步,写sql,使用预编译语句
String sql = "SELECT * FROM debit WHERE debitNo = ? AND CustomerName = ?";
// 第三步,执行sql
try {
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, debitNo, CustomerName);
return list;
} catch (Exception e) {
System.err.println("查询历史记录出错: " + e.getMessage());
return java.util.Collections.emptyList();
}
}
} }

138
code/springboot/newBank/src/main/java/demo/zhangjie/acceptdebit.java

@ -6,12 +6,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.time.LocalDate; // 新增日期类
import java.time.format.DateTimeFormatter; // 新增日期格式化类
@RestController @RestController
public class acceptdebit { public class acceptdebit {
@ -19,39 +20,122 @@ public class acceptdebit {
@Autowired @Autowired
private JdbcTemplate jdbcTemplate; private JdbcTemplate jdbcTemplate;
@RequestMapping("/acceptdebitA") @RequestMapping("/acceptdebit")
public Object acceptdebit2(HttpServletRequest request) { public Map<String, Object> acceptDebit(HttpServletRequest request) {
Map<String, Object> response = new HashMap<>();
try {
// 1. 获取所有必填字段
String CertificatesNo = getRequiredParameter(request, "CertificatesNo");
String debitTp = getRequiredParameter(request, "debitTp");
String debitBank = getRequiredParameter(request, "debitBank");
String debitAmount = getRequiredParameter(request, "debitAmount");
String debitTerm = getRequiredParameter(request, "debitTerm");
// String corp = request.getParameter( "corp");
String CertificatesTp = getRequiredParameter(request, "CertificatesTp");
String CustomerName = getRequiredParameter(request, "CustomerName");
String CustomerGender = getRequiredParameter(request, "CustomerGender");
String CustomerBirthday = request.getParameter( "CustomerBirthday");
String address = getRequiredParameter(request, "address");
String ifmaterialComplete = getRequiredParameter(request, "ifmaterialComplete");
String paydebitTp = getRequiredParameter(request, "paydebitTp");
String submissionTime = request.getParameter("SubmissionTime"); // 允许为空
//第一步,取下前端的字段 // 2. 参数校验
String CertificatesNo=request.getParameter("CertificatesNo");//贷款人(证件号码) validateCode("贷款类型", debitTp, 1,2, 3);
String debitTp =request.getParameter("debitTp");//贷款类型 (1-住房类、2-消费类、3-经营类) validateCode("贷款期限", debitTerm, 1, 2, 3);
String debitBank =request.getParameter("debitBank");//贷款银行 // validateCode("性别", CustomerGender, 0, 1);
String debitAmount =request.getParameter("debitAmount");//贷款金额 validateCode("材料状态", ifmaterialComplete, 1,2);
String debitTerm =request.getParameter("debitTerm");//贷款期限(1-一年、2-两年、5-五年) validateCode("还款类型", paydebitTp, 1,2,3);
UUID uuid=UUID.randomUUID(); // 3. 生成业务数据
String fullSeq=uuid.toString(); String debitNo = generateDebitNo();
LocalDateTime debitDate = parseDateTime(submissionTime); // 使用传入时间或当前时间
LocalDate birthDate = parseBirthDate(CustomerBirthday);
// 4. 使用参数化SQL防止注入
String sql = "INSERT INTO newbank.debit (" +
"debitNo, CertificatesNo, debitTp, debitBank, debitAmount, " +
"debitTerm, state, CertificatesTp, CustomerName, " +
"CustomerGender, CustomerBirthday, address, ifmaterialComplete, " +
"paydebitTp, SubmissionTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
LocalDate currentDate = LocalDate.now(); // 获取当前日期 int result = jdbcTemplate.update(sql,
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); debitNo,
String formattedDate = currentDate.format(formatter); // 格式化为字符串 CertificatesNo,
// corp,
debitTp,
debitBank,
debitAmount,
debitTerm,
//第二步,写sql 0, // 初始状态为受理
String sql ="INSERT INTO newbank.debit\n" + CertificatesTp,
"(debitNo, CertificatesNo, corp, debitTp, debitBank, debitAmount, debitTerm, debitDate, payAmount, leftDate, state, payDate)\n" + CustomerName,
"VALUES('"+fullSeq+"', '"+CertificatesNo+"', NULL, '"+debitTp+"', '"+debitBank+"', '"+debitAmount+"', '"+debitTerm+"', '"+formattedDate+"', NULL, NULL, '0', NULL);"; CustomerGender,
birthDate,
address,
ifmaterialComplete,
paydebitTp,
debitDate // 使用统一时间字段
);
// 5. 返回结果
response.put("debitNo", debitNo);
response.put("status", 0);
response.put("success", result == 1);
//第三步,执行sql } catch (IllegalArgumentException e) {
int result=jdbcTemplate.update(sql); response.put("error", e.getMessage());
response.put("success", false);
} catch (Exception e) {
response.put("error", "系统处理异常");
response.put("success", false);
}
return response;
}
HashMap<Object, Object> map = new HashMap<>(); private String getRequiredParameter(HttpServletRequest request, String param) {
map.put("debitNo", fullSeq); String value = request.getParameter(param);
map.put("result", result); if (value == null || value.trim().isEmpty()) {
//第四步,返回 throw new IllegalArgumentException("缺少必要参数: " + param);
return map; }
return value.trim();
}
private void validateCode(String fieldName, String value, int... validCodes) {
try {
int code = Integer.parseInt(value);
for (int valid : validCodes) {
if (code == valid) return;
}
throw new IllegalArgumentException(fieldName + "代码无效");
} catch (NumberFormatException e) {
throw new IllegalArgumentException(fieldName + "格式错误");
}
} }
private String generateDebitNo() {
return "LOAN-" + LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)
+ "-" + UUID.randomUUID().toString().substring(0, 6).toUpperCase();
}
private LocalDateTime parseDateTime(String datetimeStr) {
if (datetimeStr == null || datetimeStr.isEmpty()) {
return LocalDateTime.now();
}
try {
return LocalDateTime.parse(datetimeStr, DateTimeFormatter.ISO_DATE_TIME);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("时间格式错误,请使用ISO格式(如:2023-01-01T10:00:00)");
}
}
private LocalDate parseBirthDate(String birthDateStr) {
try {
return LocalDate.parse(birthDateStr, DateTimeFormatter.ISO_DATE);
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("生日格式错误,请使用yyyy-MM-dd格式");
}
}
} }

2
code/springboot/newBank/src/main/java/demo/zhangjie/approvalsubmit.java

@ -131,7 +131,7 @@ public class approvalsubmit {
} }
// 3. 查询贷款信息(使用悲观锁保证数据一致性) // 3. 查询贷款信息(使用悲观锁保证数据一致性)
String querySql = "SELECT debitAmount, state FROM debit WHERE debitNo = ? AND CertificatesNo = ? FOR UPDATE"; String querySql = "SELECT debitAmount, state,submissionTime FROM debit WHERE debitNo = ? AND CertificatesNo = ? FOR UPDATE";
List<Map<String, Object>> records = jdbcTemplate.queryForList( List<Map<String, Object>> records = jdbcTemplate.queryForList(
querySql, querySql,
debitNo, debitNo,

Loading…
Cancel
Save