From ce0bb993ae60d0b62a1c30c913d6b548c3b27223 Mon Sep 17 00:00:00 2001 From: tangxinyuan Date: Thu, 5 Dec 2024 15:18:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'code/springboot/newBank/src/main/java/demo'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/demo/AccountController.java | 207 ++++++++++++++++++ .../src/main/java/demo/AccountTab.java | 161 ++++++++++++++ .../src/main/java/demo/RecordTable.java | 72 ++++++ .../src/main/java/demo/WithdrawMoneyDTO.java | 69 ++++++ 4 files changed, 509 insertions(+) create mode 100644 code/springboot/newBank/src/main/java/demo/AccountController.java create mode 100644 code/springboot/newBank/src/main/java/demo/AccountTab.java create mode 100644 code/springboot/newBank/src/main/java/demo/RecordTable.java create mode 100644 code/springboot/newBank/src/main/java/demo/WithdrawMoneyDTO.java diff --git a/code/springboot/newBank/src/main/java/demo/AccountController.java b/code/springboot/newBank/src/main/java/demo/AccountController.java new file mode 100644 index 000000000..1ae3d2b31 --- /dev/null +++ b/code/springboot/newBank/src/main/java/demo/AccountController.java @@ -0,0 +1,207 @@ +package demo.weihuijia.controller; + + +import demo.weihuijia.model.AccountTab; +import demo.weihuijia.model.RecordTable; +import demo.weihuijia.model.WithdrawMoneyDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; + +/** + * @author Administrator + */ +@RestController +@RequestMapping("/weihuijia") +public class AccountController { + + @Autowired + private JdbcTemplate jdbcTemplate; + + /** + * 生成银行卡号接口 + * + * @param organiNm 公司 + * @return + */ + @GetMapping("/generateBankNumber") + public String generateBankNumber(String organiNm) { + // 根据机构名称 查询机构号 + String agencyNumber = getOrganizationNoByOrganizationName(organiNm); + + int number = 1; + // 向编号表查询 编号名noName是否已经存在 + String sql_qry = String.format("select * from ordinal"); + List> list = jdbcTemplate.queryForList(sql_qry); + if (!CollectionUtils.isEmpty(list)) { + number = list.size() + 1; + } + String formattedString = String.format("%04d", number); + String count = "625772024" + agencyNumber + formattedString; + + // 将count 存入数据库中 + + // 将数据添加到数据库 + String sql = String.format( + "INSERT INTO newbank.ordinal (ordinalNo) " + + "VALUES ('%s');", + count + ); + jdbcTemplate.update(sql); + + return count; + } + + /** + * 开户接口 + * + * @return + */ + @PostMapping("/openAccount") + public Boolean openAccount(@RequestBody AccountTab account) { + // 开户 + final String INSERT_SQL = "INSERT INTO account_tab (" + + "cardNo, customNo, IDtype, IDNo, organiNm, accountDa, accstaff, balance, acctype, depositTy, status, password) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + jdbcTemplate.update(INSERT_SQL, + account.getCardNo(), + account.getCustomNo(), + account.getIdType(), + account.getIdNo(), + account.getOrganiNm(), + account.getAccountDa(), + account.getAccstaff(), + account.getBalance(), + account.getAcctype(), + account.getDepositTy(), + account.getStatus(), + account.getPassword() + ); + + // 生成流水 + + // 根据机构名称 查询机构号 + String agencyNumber = getOrganizationNoByOrganizationName(account.getOrganiNm()); + RecordTable recordTable = new RecordTable(); + recordTable.setCardNo(account.getCardNo()); + recordTable.setMoney(account.getBalance()); + recordTable.setServiceTy("1"); + recordTable.setBalance(account.getBalance()); + recordTable.setRecordNo(getRecordNo(account.getAccstaff(), agencyNumber)); + saveRecordTable(recordTable); + + return true; + } + + /** + * 查询卡信息 + * + * @param cardNo 卡号 + * @return + */ + @GetMapping("/getAccount") + public List> getAccount(String cardNo) { + String sql = "select * from account_tab s where cardNo ='" + cardNo + "'"; + return jdbcTemplate.queryForList(sql); + } + + /** + * 验证账户密码 + * + * @param cardNo 卡号 + * @param password 密码 + * @return + */ + @GetMapping("/verifyAccountPassword") + public Boolean verifyAccountPassword(String cardNo, String password) { + String sql = "select * from account_tab s where cardNo ='" + cardNo + "'" + "and password='" + password + "'"; + return !CollectionUtils.isEmpty(jdbcTemplate.queryForList(sql)); + } + + /** + * 存取钱接口 + * + * @return + */ + @PostMapping("/withdrawMoney") + public Boolean withdrawMoney(@RequestBody WithdrawMoneyDTO withdrawMoneyDTO) { + String sql = "select * from account_tab s where cardNo ='" + withdrawMoneyDTO.getCardNo() + "'"; + if (CollectionUtils.isEmpty(jdbcTemplate.queryForList(sql))) { + return false; + } + List> maps = jdbcTemplate.queryForList(sql); + double balance = Double.parseDouble(maps.get(0).get("balance").toString()); + // 存钱 + if (withdrawMoneyDTO.getServiceTy().equals("1")) { + balance = balance + withdrawMoneyDTO.getMoney(); + } + // 取钱 + else { + balance = balance - withdrawMoneyDTO.getMoney(); + } + // 更新账户信息 + String sql1 = "UPDATE account_tab SET balance = ? WHERE cardNo = ?"; + jdbcTemplate.update(sql1, balance, withdrawMoneyDTO.getCardNo()); + + // 产生流水记录 + RecordTable recordTable = new RecordTable(); + recordTable.setCardNo(withdrawMoneyDTO.getCardNo()); + recordTable.setMoney(withdrawMoneyDTO.getMoney()); + recordTable.setServiceTy(withdrawMoneyDTO.getServiceTy()); + recordTable.setBalance(balance); + recordTable.setRecordNo(getRecordNo(withdrawMoneyDTO.getStaffNo(), withdrawMoneyDTO.getOrganiNm())); + saveRecordTable(recordTable); + return true; + } + + /** + * 存入流水记录 + */ + private void saveRecordTable(RecordTable recordTable) { + // 获取当前时间 + String formattedTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + String sql = "INSERT INTO recordtable (date, cardNo, money, serviceTy, balance, recordNo) VALUES (?, ?, ?, ?, ?, ?)"; + // 执行插入操作 + jdbcTemplate.update(sql, formattedTime, recordTable.getCardNo(), recordTable.getMoney(), recordTable.getServiceTy(), recordTable.getBalance(), recordTable.getRecordNo()); + } + + /** + * 获取流水号 年月日+机构号+员工号+序号 20位 + * + * @param staffNo 开户员工 + * @param organiNm 开户机构 + * @return + */ + private String getRecordNo(String staffNo, String organiNm) { + int number = 1; + String sql_qry = String.format("select * from recordtable"); + List> list = jdbcTemplate.queryForList(sql_qry); + if (!CollectionUtils.isEmpty(list)) { + number = list.size() + 1; + } + // 序号 + String formattedString = String.format("%06d", number); + String formattedTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); + return formattedTime + organiNm + staffNo + formattedString; + } + + /** + * 通过机构名称 查询机构号 + */ + private String getOrganizationNoByOrganizationName(String organiNm) { + // 根据机构名称 查询机构号 + String sql1 = "select * from bank_organi where organiNm ='" + organiNm + "'"; + List> list1 = jdbcTemplate.queryForList(sql1); + if (!CollectionUtils.isEmpty(list1)) { + return list1.get(0).get("organiNo").toString(); + } + return null; + } +} diff --git a/code/springboot/newBank/src/main/java/demo/AccountTab.java b/code/springboot/newBank/src/main/java/demo/AccountTab.java new file mode 100644 index 000000000..5190fa230 --- /dev/null +++ b/code/springboot/newBank/src/main/java/demo/AccountTab.java @@ -0,0 +1,161 @@ +package demo.weihuijia.model; + +/** + * @author Administrator + * 账户表 + */ +public class AccountTab { + + /** + * 账号(卡号) + */ + private String cardNo; + + /** + * 客户号 + */ + private String customNo; + + /** + * 证件类型 + */ + private String idType; + /** + * 证件号码 + */ + private String idNo; + /** + * 开户机构 + */ + private String organiNm; + /** + * 开户日期 + */ + private String accountDa; + + /** + * 开户员工(员工号) + */ + private String accstaff; + + /** + * 余额 + */ + private Double balance; + + /** + * 类型(1个人、2企业) + */ + private String acctype; + + /** + * 存款类型 1存 2取 + */ + private String depositTy; + + /** + * 账户状态 1 正常 2 销户 + */ + private String status; + + /** + * 密码 + */ + private String password; + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getCustomNo() { + return customNo; + } + + public void setCustomNo(String customNo) { + this.customNo = customNo; + } + + public String getIdType() { + return idType; + } + + public void setIdType(String idType) { + this.idType = idType; + } + + public String getIdNo() { + return idNo; + } + + public void setIdNo(String idNo) { + this.idNo = idNo; + } + + public String getOrganiNm() { + return organiNm; + } + + public void setOrganiNm(String organiNm) { + this.organiNm = organiNm; + } + + public String getAccountDa() { + return accountDa; + } + + public void setAccountDa(String accountDa) { + this.accountDa = accountDa; + } + + public String getAccstaff() { + return accstaff; + } + + public void setAccstaff(String accstaff) { + this.accstaff = accstaff; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } + + public String getAcctype() { + return acctype; + } + + public void setAcctype(String acctype) { + this.acctype = acctype; + } + + public String getDepositTy() { + return depositTy; + } + + public void setDepositTy(String depositTy) { + this.depositTy = depositTy; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/code/springboot/newBank/src/main/java/demo/RecordTable.java b/code/springboot/newBank/src/main/java/demo/RecordTable.java new file mode 100644 index 000000000..93c0fab4c --- /dev/null +++ b/code/springboot/newBank/src/main/java/demo/RecordTable.java @@ -0,0 +1,72 @@ +package demo.weihuijia.model; + +/** + * @author Administrator + */ +public class RecordTable { + + /** + * 卡号 + */ + private String cardNo; + + /** + * 金钱 + */ + private Double money; + + /** + * 存取钱 1存钱 2取钱 + */ + private String serviceTy; + + /** + * 金额 + */ + private Double balance; + + /** + * 流水号 + */ + private String recordNo; + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public String getServiceTy() { + return serviceTy; + } + + public void setServiceTy(String serviceTy) { + this.serviceTy = serviceTy; + } + + public Double getMoney() { + return money; + } + + public void setMoney(Double money) { + this.money = money; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } + + public String getRecordNo() { + return recordNo; + } + + public void setRecordNo(String recordNo) { + this.recordNo = recordNo; + } +} diff --git a/code/springboot/newBank/src/main/java/demo/WithdrawMoneyDTO.java b/code/springboot/newBank/src/main/java/demo/WithdrawMoneyDTO.java new file mode 100644 index 000000000..0ed851d9a --- /dev/null +++ b/code/springboot/newBank/src/main/java/demo/WithdrawMoneyDTO.java @@ -0,0 +1,69 @@ +package demo.weihuijia.model; + + +/** + * @author Administrator + */ +public class WithdrawMoneyDTO { + + /** + * 账号 + */ + private String cardNo; + /** + * 金额 + */ + private Double money; + /** + * 存取 1存 2取 + */ + private String serviceTy; + /** + * 员工编号 + */ + private String staffNo; + /** + * 机构号 + */ + private String organiNm; + + public String getCardNo() { + return cardNo; + } + + public void setCardNo(String cardNo) { + this.cardNo = cardNo; + } + + public Double getMoney() { + return money; + } + + public void setMoney(Double money) { + this.money = money; + } + + public String getServiceTy() { + return serviceTy; + } + + public void setServiceTy(String serviceTy) { + this.serviceTy = serviceTy; + } + + public String getStaffNo() { + return staffNo; + } + + public void setStaffNo(String staffNo) { + this.staffNo = staffNo; + } + + public String getOrganiNm() { + return organiNm; + } + + public void setOrganiNm(String organiNm) { + this.organiNm = organiNm; + } +}