bug修复: 兰坪IOS第二轮问题修复

This commit is contained in:
gaowdong 2025-01-14 15:15:46 +08:00
parent 03d8f1b8af
commit 040914ea8a
8 changed files with 202 additions and 3 deletions

View File

@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import com.bonus.app.entry.dao.EntryPersonDao;
import com.bonus.app.entry.entity.*;
import com.bonus.app.pay.dao.PayCardDao;
import com.bonus.app.pay.entity.PayCardBean;
import com.bonus.app.person.dao.BasePersonDao;
import com.bonus.app.person.entity.BasePersonBean;
import com.bonus.common.core.constant.Constants;
@ -32,6 +34,9 @@ public class EntryPersonServiceImpl implements EntryPersonService{
@Resource(name = "basePersonDao")
private BasePersonDao basePersonDao;
@Resource(name = "payCardDao")
private PayCardDao payCardDao;
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
@Override
@ -142,6 +147,15 @@ public class EntryPersonServiceImpl implements EntryPersonService{
}else{
entryPersonDao.insertBasePersonBankData(o);
}
if(o.getEntryBankBean() != null && StringUtils.isNotEmpty(o.getEntryBankBean().getBankPhoto())) {
PayCardBean payCardBean = new PayCardBean();
payCardBean.setIdNumber(o.getEntryIdNumberBean().getIdNumber());
payCardBean.setPath(o.getEntryBankBean().getBankPhoto());
String currentDatetime = DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss");
payCardBean.setUploadTime(currentDatetime);
payCardBean.setUploadDate(currentDatetime);
payCardDao.uploadBankWiness(payCardBean);
}
if(StringUtils.isNotEmpty(o.getEntryContractBean().getContractCode())){
if(StringUtils.isEmpty(o.getEntryContractBean().getContractId())){
o.getEntryContractBean().setContractId(UUID.randomUUID().toString());

View File

@ -289,7 +289,8 @@
left join bm_worker_bank bwb on bwb.id_number = bw.id_number and bwb.is_active = 1
left join bm_worker_payroll bwp on bwp.ID_NUMBER = bw.ID_NUMBER and bwp.is_active = 1
where bw.id_number = #{idNumber}
GROUP BY bw.id_number
order by bwp.upload_time desc
limit 1
</select>
<select id="selectOtherData" resultType="com.bonus.app.entry.entity.EntryOtherBean">

View File

@ -207,6 +207,12 @@
<systemPath>${project.basedir}/lib/arcsoft-sdk-face-3.0.0.0-linux.jar</systemPath>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>arcsoft</groupId>-->
<!-- <artifactId>arcsoft</artifactId>-->

View File

@ -1,6 +1,7 @@
package com.bonus.bmw.basic.controller;
import com.bonus.bmw.basic.dao.UserDao;
import com.bonus.bmw.basic.entity.BankCardBean;
import com.bonus.bmw.basic.entity.PushUserBean;
import com.bonus.bmw.basic.entity.UserBean;
import com.bonus.bmw.basic.service.OrgService;
@ -170,4 +171,13 @@ public class UserController {
public String sendSMS(@RequestBody UserBean userDto) {
return userService.sendSMS(userDto);
}
/**
* 银行卡识别
*/
@PostMapping("/bankCard")
@Log(title = "银行卡识别", businessType = BusinessType.OTHER)
public R bankCard(@RequestBody BankCardBean bean){
return userService.bankCard(bean);
}
}

View File

@ -0,0 +1,37 @@
package com.bonus.bmw.basic.entity;
import lombok.Data;
/**
* 银行卡
* @author hay
*/
@Data
public class BankCardBean {
private String id;
/**
* base64图片
*/
private String imageBase64;
/**
* 银行卡号
*/
private String bankCard;
/**
* 银行名称
*/
private String bankName;
/**
* 日期
*/
private String date;
/**
* 类型
*/
private String type;
}

View File

@ -1,5 +1,6 @@
package com.bonus.bmw.basic.service;
import com.bonus.bmw.basic.entity.BankCardBean;
import com.bonus.bmw.basic.entity.PushUserBean;
import com.bonus.bmw.basic.entity.UserBean;
import com.bonus.common.core.domain.R;
@ -32,4 +33,11 @@ public interface UserService {
List<PushUserBean> getNeedDeleteUser();
String sendSMS(UserBean userDto);
/**
* 识别银行卡
* @param bean
* @return
*/
R bankCard(BankCardBean bean);
}

View File

@ -1,12 +1,16 @@
package com.bonus.bmw.basic.service;
import com.alibaba.fastjson.JSONObject;
import com.bonus.bmw.basic.HttpRequestHelper;
import com.bonus.bmw.basic.dao.UserDao;
import com.bonus.bmw.basic.entity.BankCardBean;
import com.bonus.bmw.basic.entity.PushUserBean;
import com.bonus.bmw.basic.entity.UserBean;
import com.bonus.common.core.domain.R;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.system.api.domain.SysUser;
import okhttp3.*;
import org.hibernate.validator.internal.util.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -14,13 +18,33 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.Random;
@Service("userService")
public class UserServiceImpl implements UserService {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
/** 应用1 */
public static final String API_KEY = "HAdKRY9O9tTzXNfDKcHD4Qmh";
/** 应用1 */
public static final String SECRET_KEY = "S07GzrLyIQIbDqDQZPmDHAWzsgJxs0P3";
/** 应用2 */
public static final String API_KEY_2 = "7WOVv79Yr0MMMPNTUfrSxGZb";
/** 应用2 */
public static final String SECRET_KEY_2 = "VA0QjDVr4Br9e2GefxMizGDwsuifIQZP";
/** 应用3 */
public static final String API_KEY_3 = "rdFbKoeAjzs9YgwM1kiERhGA";
/** 应用3 */
public static final String SECRET_KEY_3 = "NgkR11xe6qSBY5jW71WFdGLloQKPxsbo";
private static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
@Autowired
private UserDao userDao;
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
@ -180,4 +204,103 @@ public class UserServiceImpl implements UserService {
return result;
}
@Override
public R bankCard(BankCardBean bean) {
try {
if (!StringHelper.isNullOrEmptyString(bean.getImageBase64())) {
String image = URLEncoder.encode(bean.getImageBase64(), "utf-8");
// String image = bean.getImageBase64();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "image=" + image + "&location=false&detect_quality=false");
Request request = new Request.Builder()
.url("https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard?access_token=" + getAccessToken())
.method("POST", body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Accept", "application/json")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
String jsonString = response.body().string();
JSONObject jsonObject = JSONObject.parseObject(jsonString);
JSONObject resultObject = jsonObject.getJSONObject("result");
String card_number = resultObject.getString("bank_card_number");
String bank_name = resultObject.getString("bank_name");
String date = resultObject.getString("valid_date");
String type = resultObject.getString("bank_card_type");
if (StringHelper.isNullOrEmptyString(card_number) || StringHelper.isNullOrEmptyString(bank_name)){
return R.fail("银行卡信息识别失败");
}
BankCardBean bankCardBean = new BankCardBean();
bankCardBean.setBankCard(card_number.replaceAll("\\s", ""));
bankCardBean.setBankName(updateBankName(bank_name));
bankCardBean.setDate(date);
bankCardBean.setType(type);
System.out.println(bankCardBean.getBankCard());
return R.ok(bankCardBean, "识别成功");
} else {
return R.fail("请上传银行卡照片");
}
} catch (Exception e) {
log.error("银行卡识别失败", e);
return R.fail("银行卡识别失败");
}
}
/**
* 从用户的AKSK生成鉴权签名Access Token
*
* @return 鉴权签名Access Token
* @throws IOException IO异常
*/
static String getAccessToken() throws IOException {
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body=null;
//生成随机数获取应用key
Random random = new Random();
int i = random.nextInt(3);
if (i == 0){
body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
+ "&client_secret=" + SECRET_KEY);
} else if (i == 1){
body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY_2
+ "&client_secret=" + SECRET_KEY_2);
} else {
body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY_3
+ "&client_secret=" + SECRET_KEY_3);
}
Request request = new Request.Builder()
.url("https://aip.baidubce.com/oauth/2.0/token")
.method("POST", body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
String jsonString = response.body().string();
JSONObject jsonObject = JSONObject.parseObject(jsonString);
String accessToken = jsonObject.getString("access_token");
return accessToken;
}
private String updateBankName(String bankName) {
if (!StringHelper.isNullOrEmptyString(bankName)){
if (bankName.contains("工商银行")){
return "中国工商银行";
} else if (bankName.contains("建设银行")){
return "中国建设银行";
} else if (bankName.contains("人民银行")){
return "中国人民银行";
} else if (bankName.contains("农业银行")){
return "中国农业银行";
} else if (bankName.contains("交通银行")){
return "中国交通银行";
} else if (bankName.contains("农业发展银行")){
return "中国农业发展银行";
} else if (bankName.contains("邮政")){
return "中国邮政储蓄银行";
}else {
return bankName;
}
} else {
return bankName;
}
}
}

View File

@ -498,7 +498,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
return R.ok(sysFile, FaceStatusCodeReturn.faceStatusCodeReturn(Integer.parseInt(code)));
} catch (Exception e) {
log.error("上传文件失败", e);
return R.fail(e.getMessage());
return R.fail("人脸识别失败,请重试");
}
}
@ -513,7 +513,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
JSONArray jsonArray = JSONObject.parseArray(personJsonObject.getString("data"));
return jsonArray.get(0).toString();
}else{
return null;
return "该人员不在人员库中";
}
}