新增 绑定身份证 和银行卡接口

master
冯凯 2023-10-29 08:46:49 +08:00
parent be25972178
commit 8565a9ac98
9 changed files with 161 additions and 40 deletions

View File

@ -26,5 +26,15 @@ public class BankCard {
/* /*
id id
*/ */
private String userId; private Long userId;
/*
*/
private String bankType;
/*
*/
private String cardName;
} }

View File

@ -1,6 +1,8 @@
package com.health.system.server.controller; package com.health.system.server.controller;
import com.health.common.core.domain.Result; import com.health.common.core.domain.Result;
import com.health.system.common.domain.BankCard;
import com.health.system.server.config.ForestClientInterface;
import com.health.system.server.service.SysBankCardService; import com.health.system.server.service.SysBankCardService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -8,6 +10,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Base64;
import java.util.Map;
/** /**
* @author * @author
* @version 1.0 * @version 1.0
@ -16,6 +22,11 @@ import org.springframework.web.multipart.MultipartFile;
*/ */
@RestController("/bankCard") @RestController("/bankCard")
public class SysBankCardController { public class SysBankCardController {
/*
*/
@Autowired
private ForestClientInterface forestClientInterface;
/* /*
*/ */
@ -23,7 +34,9 @@ public class SysBankCardController {
private SysBankCardService sysBankCardService; private SysBankCardService sysBankCardService;
@PostMapping("/bindUserBank") @PostMapping("/bindUserBank")
public Result bindUserBank(@RequestParam("bankImage") MultipartFile bankImage){ public Result bindUserBank(@RequestParam("bankImage") MultipartFile bankImage) throws IOException {
return Result.success(); //获取银行卡照片的字节流
Boolean flag=sysBankCardService.bindUserBank(bankImage);
return flag==true?Result.success("","银行卡绑定成功"):Result.error("","银行卡绑定失败");
} }
} }

View File

@ -41,42 +41,7 @@ public class SysIdCardController {
@PostMapping("/bindIdCard") @PostMapping("/bindIdCard")
public Result bindIdCard(@RequestParam("faceImage")MultipartFile faceImage,@RequestParam("backImage") MultipartFile backImage) throws IOException { public Result bindIdCard(@RequestParam("faceImage")MultipartFile faceImage,@RequestParam("backImage") MultipartFile backImage) throws IOException {
//获取正面头像照片的字节流 Boolean flag= sysIdCardService.bindIdCard(faceImage,backImage);
System.out.println(SecurityUtils.getLoginUser()); return flag==true?Result.success("","身份证绑定成功"):Result.error("","身份证绑定失败");
String username = SecurityUtils.getUsername();
System.out.println("当前登录人是"+username);
byte[] faceImageBytes = faceImage.getBytes();
//获取反面国徽面的字节流
byte[] backImageBytes = backImage.getBytes();
String face = Base64.getEncoder().encodeToString(faceImageBytes);
Map faceMap = forestClientInterface.helloForestFace(face);
System.out.println(faceMap);
String address = (String) faceMap.get("address");
String birthday = (String) faceMap.get("birth");
String name = (String) faceMap.get("name");
String sex = (String) faceMap.get("sex");
String nation = (String) faceMap.get("nationality");
String num = (String) faceMap.get("num");
if (!name.equals(username)){
throw new ServerException("请选择自己的身份证进行绑定");
}
String back = Base64.getEncoder().encodeToString(backImageBytes);
Configure configure = new Configure();
configure.setSide(IdCardConfigureType.Back.getType());
Map backMap = forestClientInterface.helloForestBack(back, configure);
System.out.println(backMap);
String issueOffice = (String) backMap.get("issue");
IdCard idCard = new IdCard();
idCard.setName(name);
idCard.setBirthday(birthday);
idCard.setName(name);
idCard.setSex(sex);
idCard.setNation(nation);
idCard.setIdNumber(num);
idCard.setIssueOffice(issueOffice);
idCard.setAddress(address);
idCard.setUserId(SecurityUtils.getUserId());
Boolean flag= sysIdCardService.insertIdCard(idCard);
return flag==true?Result.success("","绑定成功"):Result.error("","绑定失败");
} }
} }

View File

@ -1,5 +1,6 @@
package com.health.system.server.mapper; package com.health.system.server.mapper;
import com.health.system.common.domain.BankCard;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -10,4 +11,5 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface SysBankCardMapper { public interface SysBankCardMapper {
int insertBankCard(BankCard bankCard);
} }

View File

@ -1,5 +1,9 @@
package com.health.system.server.service; package com.health.system.server.service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/** /**
* @author * @author
* @version 1.0 * @version 1.0
@ -7,4 +11,5 @@ package com.health.system.server.service;
* @date 2023/10/28 15:11 * @date 2023/10/28 15:11
*/ */
public interface SysBankCardService { public interface SysBankCardService {
Boolean bindUserBank(MultipartFile bankImage) throws IOException;
} }

View File

@ -1,6 +1,9 @@
package com.health.system.server.service; package com.health.system.server.service;
import com.health.system.common.domain.IdCard; import com.health.system.common.domain.IdCard;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/** /**
* @author * @author
@ -10,4 +13,6 @@ import com.health.system.common.domain.IdCard;
*/ */
public interface SysIdCardService { public interface SysIdCardService {
Boolean insertIdCard(IdCard idCard); Boolean insertIdCard(IdCard idCard);
Boolean bindIdCard(MultipartFile faceImage, MultipartFile backImage) throws IOException;
} }

View File

@ -1,9 +1,17 @@
package com.health.system.server.service.impl; package com.health.system.server.service.impl;
import com.health.common.security.utils.SecurityUtils;
import com.health.system.common.domain.BankCard;
import com.health.system.server.config.ForestClientInterface;
import com.health.system.server.mapper.SysBankCardMapper; import com.health.system.server.mapper.SysBankCardMapper;
import com.health.system.server.service.SysBankCardService; import com.health.system.server.service.SysBankCardService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Base64;
import java.util.Map;
/** /**
* @author * @author
@ -14,9 +22,31 @@ import org.springframework.stereotype.Service;
@Service @Service
public class SysBankCardServiceImpl implements SysBankCardService { public class SysBankCardServiceImpl implements SysBankCardService {
@Autowired
private ForestClientInterface forestClientInterface;
/* /*
*/ */
@Autowired @Autowired
private SysBankCardMapper sysBankCardMapper; private SysBankCardMapper sysBankCardMapper;
@Override
public Boolean bindUserBank(MultipartFile bankImage) throws IOException {
Long userId = SecurityUtils.getUserId();
byte[] bytes = bankImage.getBytes();
String bank = Base64.getEncoder().encodeToString(bytes);
Map map = forestClientInterface.helloForestBank(bank);
String cardNumber = (String) map.get("card_number");
String bankName = (String) map.get("bank_name");
String bankIdentificationNumber = (String) map.get("bank_identification_number");
String cardName = (String) map.get("card_name");
String cardType = (String) map.get("card_type");
BankCard bankCard = new BankCard();
bankCard.setUserId(userId);
bankCard.setBankNumber(cardNumber);
bankCard.setBankName(bankName);
bankCard.setBankType(cardType);
bankCard.setCardName(cardName);
return sysBankCardMapper.insertBankCard(bankCard)>0;
}
} }

View File

@ -1,10 +1,20 @@
package com.health.system.server.service.impl; package com.health.system.server.service.impl;
import com.health.common.core.domain.Configure;
import com.health.common.security.utils.SecurityUtils;
import com.health.system.common.domain.IdCard; import com.health.system.common.domain.IdCard;
import com.health.system.common.domain.util.IdCardConfigureType;
import com.health.system.server.config.ForestClientInterface;
import com.health.system.server.mapper.SysIdCardMapper; import com.health.system.server.mapper.SysIdCardMapper;
import com.health.system.server.service.SysIdCardService; import com.health.system.server.service.SysIdCardService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.rmi.ServerException;
import java.util.Base64;
import java.util.Map;
/** /**
* @author * @author
@ -15,6 +25,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class SysIdCardServiceImpl implements SysIdCardService { public class SysIdCardServiceImpl implements SysIdCardService {
@Autowired
private ForestClientInterface forestClientInterface;
/* /*
*/ */
@ -25,4 +37,45 @@ public class SysIdCardServiceImpl implements SysIdCardService {
public Boolean insertIdCard(IdCard idCard) { public Boolean insertIdCard(IdCard idCard) {
return sysIdCardMapper.insertIdCard(idCard)>0; return sysIdCardMapper.insertIdCard(idCard)>0;
} }
@Override
public Boolean bindIdCard(MultipartFile faceImage, MultipartFile backImage) throws IOException {
//获取正面头像照片的字节流
System.out.println(SecurityUtils.getLoginUser());
String username = SecurityUtils.getUsername();
System.out.println("当前登录人是"+username);
byte[] faceImageBytes = faceImage.getBytes();
//获取反面国徽面的字节流
byte[] backImageBytes = backImage.getBytes();
String face = Base64.getEncoder().encodeToString(faceImageBytes);
Map faceMap = forestClientInterface.helloForestFace(face);
System.out.println(faceMap);
String address = (String) faceMap.get("address");
String birthday = (String) faceMap.get("birth");
String name = (String) faceMap.get("name");
String sex = (String) faceMap.get("sex");
String nation = (String) faceMap.get("nationality");
String num = (String) faceMap.get("num");
if (!name.equals(username)){
throw new ServerException("请选择自己的身份证进行绑定");
}
String back = Base64.getEncoder().encodeToString(backImageBytes);
Configure configure = new Configure();
configure.setSide(IdCardConfigureType.Back.getType());
Map backMap = forestClientInterface.helloForestBack(back, configure);
System.out.println(backMap);
String issueOffice = (String) backMap.get("issue");
IdCard idCard = new IdCard();
idCard.setName(name);
idCard.setBirthday(birthday);
idCard.setName(name);
idCard.setSex(sex);
idCard.setNation(nation);
idCard.setIdNumber(num);
idCard.setIssueOffice(issueOffice);
idCard.setAddress(address);
idCard.setUserId(SecurityUtils.getUserId());
return sysIdCardMapper.insertIdCard(idCard)>0;
}
} }

View File

@ -3,4 +3,42 @@
<mapper namespace="com.health.system.server.mapper.SysBankCardMapper"> <mapper namespace="com.health.system.server.mapper.SysBankCardMapper">
<insert id="insertBankCard">
insert into tb_bank
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId!=null">
user_id,
</if>
<if test="bankNumber!=null and bankNumber!=''" >
bank_number,
</if>
<if test="bankName!=null and bankName!=''" >
bank_name,
</if>
<if test="bankType!=null and bankType!=''" >
bank_type,
</if>
<if test="cardName!=null and cardName!=''" >
card_name,
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId!=null">
#{userId},
</if>
<if test="bankNumber!=null and bankNumber!=''" >
#{bankNumber},
</if>
<if test="bankName!=null and bankName!=''" >
#{bankName},
</if>
<if test="bankType!=null and bankType!=''" >
#{bankType},
</if>
<if test="cardName!=null and cardName!=''" >
#{cardName},
</if>
</trim>
</insert>
</mapper> </mapper>