From e1f3b99c3359e6156182584a4d241308de310bd6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 17 Aug 2022 11:14:13 +0800 Subject: [PATCH] // add bank --- .../iformall/controller/BankController.java | 133 ++++++++++++++++++ .../service/bank/WxBankUtilService.java | 20 +++ .../bank/impl/WxBankUtilServiceImpl.java | 96 +++++++++++++ 3 files changed, 249 insertions(+) create mode 100644 mallinkBApi/src/main/java/com/iformall/controller/BankController.java create mode 100644 mallinkService/src/main/java/com/iformall/service/bank/WxBankUtilService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/bank/impl/WxBankUtilServiceImpl.java diff --git a/mallinkBApi/src/main/java/com/iformall/controller/BankController.java b/mallinkBApi/src/main/java/com/iformall/controller/BankController.java new file mode 100644 index 000000000..2a106f154 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/controller/BankController.java @@ -0,0 +1,133 @@ +package com.iformall.controller; + +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCoupon; +import com.iformall.enums.EnumCouponSourceType; +import com.iformall.enums.EnumSharingReceiverQualificationGth; +import com.iformall.enums.EnumSharingReceiverQualificationQy; +import com.iformall.service.bank.WxBankUtilService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("bank") +@Api(description="银行") +public class BankController extends BaseController{ + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxBankUtilService wxBankUtilService; + + @ApiOperation("根据对私银行卡号获取开户银行") + @GetMapping("/searchBanks") + public ResultData searchBanks(String accountNumber) { + logger.debug("[" + getIpAddr() + "] BankController::searchBanks"); + if(StringUtils.isBlank(accountNumber)){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(accountNumber.trim().length() < 10){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"参数不符合规范"); + } + try { + return wxBankUtilService.searchBanksByBankAccount(getTenantInfo(),accountNumber); + } catch (Exception e) { + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } + + @ApiOperation("查询支持个人业务的银行列表") + @GetMapping("personalBanking") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData personalBanking(Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] BankController::personalBanking"); + if(pageNum == null){ + pageNum = 1; + } + if(pageSize == null){ + pageSize = 200; + } + int offset = (pageNum-1)*pageSize; + int limit = pageSize; + + return wxBankUtilService.personalBanking(getTenantInfo(),offset, limit); + } + + @ApiOperation("查询支持对公业务的银行列表") + @GetMapping("corporateBanking") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData corporateBanking(Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] BankController::corporateBanking"); + if(pageNum == null){ + pageNum = 1; + } + if(pageSize == null){ + pageSize = 200; + } + int offset = (pageNum-1)*pageSize; + int limit = pageSize; + + return wxBankUtilService.corporateBanking(getTenantInfo(),offset, limit); + } + + @ApiOperation("查省") + @GetMapping("areasProvinces") + public ResultData areasProvinces() { + logger.debug("[" + getIpAddr() + "] BankController::areasProvinces"); + return wxBankUtilService.areasProvinces(getTenantInfo()); + } + + @ApiOperation("查市") + @GetMapping("areasCities") + public ResultData areasCities(Integer provinceCode) { + logger.debug("[" + getIpAddr() + "] BankController::areasCities"); + if(provinceCode == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + return wxBankUtilService.areasCities(getTenantInfo(),provinceCode); + } + + @ApiOperation("查支行") + @GetMapping("bankBranches") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData bankBranches(String bankAliasCode, Integer cityCode, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] BankController::bankBranches"); + if(StringUtils.isBlank(bankAliasCode)){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未选择银行"); + } + if(cityCode == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未选择城市"); + } + if(pageNum == null){ + pageNum = 1; + } + if(pageSize == null){ + pageSize = 200; + } + int offset = (pageNum-1)*pageSize; + int limit = pageSize; + + return wxBankUtilService.bankBranches(getTenantInfo(),bankAliasCode,cityCode,offset, limit); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/bank/WxBankUtilService.java b/mallinkService/src/main/java/com/iformall/service/bank/WxBankUtilService.java new file mode 100644 index 000000000..b8cef78af --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/bank/WxBankUtilService.java @@ -0,0 +1,20 @@ +package com.iformall.service.bank; + +import com.iformall.common.ResultData; +import com.iformall.domain.po.base.TenantEntity; + + +public interface WxBankUtilService { + + ResultData searchBanksByBankAccount(TenantEntity tenantInfo,String accountNumber); + + ResultData personalBanking(TenantEntity tenantInfo, int offset, int limit); + + ResultData corporateBanking(TenantEntity tenantInfo, int offset, int limit); + + ResultData areasProvinces(TenantEntity tenantInfo); + + ResultData areasCities(TenantEntity tenantInfo, Integer provinceCode); + + ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode, int offset, int limit); +} diff --git a/mallinkService/src/main/java/com/iformall/service/bank/impl/WxBankUtilServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/bank/impl/WxBankUtilServiceImpl.java new file mode 100644 index 000000000..155dee28d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/bank/impl/WxBankUtilServiceImpl.java @@ -0,0 +1,96 @@ +package com.iformall.service.bank.impl; + +import com.github.binarywang.wxpay.bean.bank.*; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.service.WxPayAccountService; +import com.iformall.service.bank.WxBankUtilService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +@Service +public class WxBankUtilServiceImpl implements WxBankUtilService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxPayAccountService wxPayAccountService; + + @Override + public ResultData searchBanksByBankAccount(TenantEntity tenantInfo,String accountNumber) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + BankAccountResult bankAccountResult = wxPayService.getBankService().searchBanksByBankAccount(accountNumber); + return new ResultData(bankAccountResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData personalBanking(TenantEntity tenantInfo, int offset, int limit) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + BankingResult bankingResult = wxPayService.getBankService().personalBanking(offset,limit); + return new ResultData(bankingResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData corporateBanking(TenantEntity tenantInfo, int offset, int limit) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + BankingResult bankingResult = wxPayService.getBankService().corporateBanking(offset,limit); + return new ResultData(bankingResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData areasProvinces(TenantEntity tenantInfo) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + ProvincesResult provincesResult = wxPayService.getBankService().areasProvinces(); + return new ResultData(provincesResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData areasCities(TenantEntity tenantInfo, Integer provinceCode) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + CitiesResult citiesResult = wxPayService.getBankService().areasCities(provinceCode); + return new ResultData(citiesResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } + + @Override + public ResultData bankBranches(TenantEntity tenantInfo, String bankAliasCode, Integer cityCode, int offset, int limit) { + WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantInfo.getTenantId()); + try { + BankBranchesResult bankBranchesResult = wxPayService.getBankService().bankBranches(bankAliasCode,cityCode,offset,limit); + return new ResultData(bankBranchesResult.getData()); + } catch (WxPayException e) { + e.printStackTrace(); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage()); + } + } +}