提交 60360dbc 作者: xiaowang

fdd企业实名认证

上级 36769fc3
package com.mmc.iuav.user.model.fdd.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:53
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AppUserFddDTO implements Serializable {
private static final long serialVersionUID = -4952516407490131779L;
private Integer id;
private String unionId;
private String customerId;
private Integer personVerifyStatus;
private Integer entVerifyStatus;
private Integer accountType;
private Date createTime;
private Date updateTime;
}
package com.mmc.iuav.user.model.fdd.req;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/7/27
* time:14:29
*/
@Data
@NoArgsConstructor
public class NECertReq implements Serializable {
private static final long serialVersionUID = 6174142180495289363L;
private String name;
private String value;
}
package com.mmc.iuav.user.model.fdd.resp;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/7/21
* time:18:13
*/
@Data
@NoArgsConstructor
public class CompanyVerifyResp implements Serializable {
private static final long serialVersionUID = 5835274401261039702L;
private String transactionNo;
private String url;
}
package com.mmc.iuav.user.model.fdd.resp;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/7/18
* time:16:00
*/
@Data
@NoArgsConstructor
public class PersonVerifyResp implements Serializable {
private static final long serialVersionUID = 7583599952872411025L;
private String transactionNo;
private String url;
}
package com.mmc.iuav.user.model.fdd.seal;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author LW
* @date 2022/8/3 16:24
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SealDetail implements Serializable {
@ApiModelProperty(value = "签章图片Base64")
private String signatureImg;
@ApiModelProperty(value = "签章编号")
private String signatureId;
@ApiModelProperty(value = "签章图片作用范围:0:非默认 1:默认章")
private Integer signatureScope;
@ApiModelProperty(value = "签章来源 0:法大大生成 1:平台上传")
private String signatureSource;
@ApiModelProperty(value = "企业或者个人 1:个人 2:企业")
private String signatureType;
}
......@@ -9,6 +9,8 @@ public enum ResultEnum implements BaseErrorInfoInterface {
BODY_NOT_MATCH("400", "请求的数据格式不符"),
FAIL("500", "fail"),
PARAM_ERROR("400", "参数错误"),
REQUEST_PARAM_ILLEGAL_ERROR("706", "请求参数非法"),
NOT_FOUND("404", "未找到该资源!"),
//企业认证
BUSINESS_LICENSE_CHECK_ANALYSIS_ERROR("1000", "营业执照解析失败,请上传有效清晰的执照"),
......
......@@ -94,6 +94,14 @@
</dependency>
<dependency>
<groupId>com.mmc.csf.fdd</groupId>
<artifactId>self-innovate</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/fdd-verify-process-1.8.5.jar</systemPath>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.5</version>
......
......@@ -22,11 +22,11 @@ public class FddConstant {
public static final String UPLOAD_FILE = "uploadFile/";
//企业实名认证异步回调
public static final String NOTIFY_E_CERT_RES = "fddservlet/fdd/notifyECertRes";
// public static final String NOTIFY_E_CERT_RES = "fddservlet/fdd/notifyECertRes";
//企业实名认证同步回调
public static final String RETURN_E_CERT_RES = "fddservlet/fdd/returnECertRes";
//小程序企业实名认证异步回调
public static final String APP_NOTIFY_E_CERT_RES = "fddservlet/appfdd/notifyECertRes";
public static final String NOTIFY_E_CERT_RES = "fdd/notifyECertRes";
//签署合同异步回调
public static final String NOTIFY_STAMP = "fddservlet/contract/notifyStamp";
......
package com.mmc.iuav.user.controller.fdd;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.controller.BaseController;
import com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp;
import com.mmc.iuav.user.service.fdd.UserFddAuthService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @author:zhenjie Date:2022/9/1
* time:15:44
*/
@Api(tags = {"小程序-fdd用户认证" })
@RestController
@RequestMapping("/fdd/")
public class UserFddAuthController extends BaseController {
@Autowired
private UserFddAuthService userFddAuthService;
@ApiOperation(value = "注册法大大账号")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = String.class)})
@ApiIgnore
@GetMapping("register")
public String register(@ApiParam(value = "唯一标识当类型为1的时候传openid 当为2的时候传id") @RequestParam String uid, @ApiParam(value = "账号类型 1个人 2企业") @RequestParam String accountType) {
return userFddAuthService.register(uid, accountType);
}
// @ApiOperation(value = "获取个人实名认证地址")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = PersonVerifyResp.class)})
// @ApiIgnore
// @GetMapping("getPersonVerifyUrl")
// public PersonVerifyResp getPersonVerifyUrl(@RequestParam String customerId) {
// return userFddAuthService.getPersonVerifyUrl(customerId);
// }
@ApiOperation(value = "获取企业实名认证url")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = CompanyVerifyResp.class)})
@GetMapping("getCompanyVerifyUrl")
public ResultBody getCompanyVerifyUrl(@ApiParam(value = "端口:0小程序 1后台") @RequestParam Integer port, HttpServletRequest request) {
return userFddAuthService.getCompanyVerifyUrl(port, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "异步处理企业实名认证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@ApiIgnore
@PostMapping("notifyECertRes")
public ResultBody notifyECertRes(@RequestParam Map<String, String> map) {
return userFddAuthService.notifyECertRes(map);
}
//
// @ApiOperation(value = "app获取企业实名认证信息")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = AppEVerifyInfoDTO.class)})
// @GetMapping("findCompanyCertInfo")
// public ResultBody findCompanyCertInfo(@RequestParam String unionId) {
// return userFddAuthService.findCompanyCertInfo(unionId);
// }
//
// @ApiOperation(value = "app获取认证信息")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = AppUserFddDTO.class)})
// @GetMapping("getAppUserFddInfo")
// public ResultBody<AppUserFddDTO> getAppUserFddInfo(@RequestParam String unionId) {
// return userFddAuthService.getAppUserFddInfo(unionId);
// }
//
// @ApiOperation(value = "app获取认证信息(feign调用)")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = AppUserFddDTO.class)})
// @ApiIgnore
// @GetMapping("feignGetAppUserFddInfo")
// public List<AppUserFddDTO> feignGetAppUserFddInfo(@RequestParam List<String> unionIds) {
// return userFddAuthService.feignGetAppUserFddInfo(unionIds);
// }
}
package com.mmc.iuav.user.dao.fdd;
import com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO;
import com.mmc.iuav.user.entity.fdd.UserFddDO;
import org.apache.ibatis.annotations.Mapper;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
@Mapper
public interface UserFddAuthDao {
UserFddDO checkRegisterFdd(String unionId);
void insertAppUserFdd(UserFddDO userFddDO);
FddVerifyInfoDO getCompanyVerifyUrl(String customerId);
void insertVerifyInfo(FddVerifyInfoDO verifyInfoDO1);
void updateCompanyCertStatus(String customerId, String status);
// void insertAppUserFdd(UserFddDO appUserFddDO1);
//
// AppEVerifyInfoDO getCompanyVerifyUrl(String customerId);
//
// void insertAppEVerifyInfo(AppEVerifyInfoDO appEVerifyInfoDO1);
//
// void updateCompanyCertStatus(String customerId, String status);
//
// UserFddDO getAppUserFddInfo(String unionId);
//
// List<UserFddDO> feignGetAppUserFddInfo(List<String> unionIds);
//
// UserFddDO getAppUserFddInfoByCustomerId(String customerId);
}
package com.mmc.iuav.user.entity.fdd;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author:zhenjie Date:2022/7/22
* time:11:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FddVerifyInfoDO implements Serializable {
private static final long serialVersionUID = 7766546708723743143L;
private Integer id;
private Integer userFddId;
private String customerId;
private String transactionNo;
private String url;
private Integer deleted;
private Date createTime;
private Date updateTime;
}
package com.mmc.iuav.user.entity.fdd;
import com.mmc.iuav.user.model.fdd.dto.AppUserFddDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:51
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserFddDO implements Serializable {
private static final long serialVersionUID = -6432171445803296265L;
private Integer id;
private String unionId;
private String customerId;
private Integer personVerifyStatus;
private Integer entVerifyStatus;
private Integer accountType;
private Date createTime;
private Date updateTime;
public AppUserFddDTO buildAppUserFddDTO() {
return AppUserFddDTO.builder().id(this.id).unionId(this.unionId).customerId(this.customerId).personVerifyStatus(this.personVerifyStatus)
.entVerifyStatus(this.entVerifyStatus).accountType(this.accountType).createTime(this.createTime).updateTime(this.updateTime).build();
}
}
package com.mmc.iuav.user.service.fdd;
import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp;
/**
* author:zhenjie
* Date:2022/7/16
* time:15:30
*/
public interface FddService {
String register(String uid, String accountType);
PersonVerifyResp getPersonVerifyUrl(String customerId);
//
// ResultBody findPersonCertInfo(String verifiedSerialNo);
//
// ResultBody getCompanyVerifyUrl(Integer userAccountId);
//
String getApplyCert(String customerId, String transactionNo);
//
// ResultBody findCompanyCertInfo(Integer userAccountId);
//
// ResultBody notifyECertRes(String appId, String serialNo, String customerId, String status, String statusDesc, String certStatus, String authenticationType, String timestamp, String sign);
//
// ResultBody returnECertRes(String personName, String transactionNo, String authenticationType, String status, String sign);
//
// ResultBody newNotifyECertRes(Map<String, String> map);
//
// ResultBody getUserFddInfo(Integer id);
//
// List<UserFddDTO> feignBatchUserFddPage(List<Integer> list);
//
// ResultBody getFileByUuid(String uuid, String docType);
}
package com.mmc.iuav.user.service.fdd;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp;
import java.util.Map;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
public interface UserFddAuthService {
String register(String uid, String accountType);
PersonVerifyResp getPersonVerifyUrl(String customerId);
ResultBody getCompanyVerifyUrl(Integer port, LoginSuccessDTO loginSuccessDTO);
ResultBody notifyECertRes(Map<String, String> map);
//
// ResultBody findCompanyCertInfo(String unionId);
//
// ResultBody getAppUserFddInfo(String unionId);
String replaceUnableString(String uid);
//
// List<AppUserFddDTO> feignGetAppUserFddInfo(List<String> unionId);
}
package com.mmc.iuav.user.service.fdd.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fadada.sdk.base.client.FddBaseClient;
import com.fadada.sdk.base.model.req.RegisterAccountParams;
import com.fadada.sdk.verify.client.FddVerifyClient;
import com.fadada.sdk.verify.model.req.ApplyCertParams;
import com.fadada.sdk.verify.model.req.PersonVerifyUrlParams;
import com.mmc.iuav.user.constant.fdd.FddConnectConstant;
import com.mmc.iuav.user.constant.fdd.FddConstant;
import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp;
import com.mmc.iuav.user.service.fdd.FddService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* author:zhenjie
* Date:2022/7/16
* time:15:30
*/
@Service
@Slf4j
public class FddServiceImpl implements FddService {
@Override
public String register(String uid, String accountType) {
FddBaseClient baseClient = new FddBaseClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
RegisterAccountParams params = new RegisterAccountParams();
//账号类型1个人 2企业
params.setAccountType(accountType);
//替换uid中包含的-或者_
String openId = uid.replaceAll("[-|_]", "");
//平台方自定义唯一标识
params.setOpenId(openId);
String result = baseClient.invokeRegisterAccount(params);
log.info(result);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return null;
}
return JSONObject.parseObject(result).getString(FddConstant.DATA);
}
@Override
public PersonVerifyResp getPersonVerifyUrl(String customerId) {
FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
PersonVerifyUrlParams params = new PersonVerifyUrlParams();
//客户编号
params.setCustomerId(customerId);
//实名认证套餐类型
params.setVerifiedWay("0");
//是否允许用户页面修改 1允许 2不允许
params.setPageModify("1");
// 以下是非必填参数
// params.setNotifyUrl(""); //异步回调地址
// params.setReturnUrl(""); //同步通知url
// params.setCustomerName(""); //姓名
// params.setCustomerIdentType(""); //证件类型
// params.setCustomerIdentNo(""); //证件号码
// params.setMobile(""); //手机号码
// params.setIdentFrontPath(""); //证件正面照下载地址
// params.setIdentBackPath(""); //证件反面照下载地址
// params.setResultType(""); //刷脸是否显示结果页面
// params.setCertFlag(""); //是否认证成功后自动申请实名证书
// params.setCertType(""); //证件类型
// params.setBankCardNo(""); //个人银行卡
// params.setOption(""); //不传默认add
// params.setIdPhotoOptional(""); //是否需要上传身份照片
// params.setIsMinProgram(""); //是否跳转法大大公证处小程序认证
// params.setLang("zh"); //zh:中文;en:英文
// params.setIsAllowOverseasBankCardAuth(""); //海外用户是否支持银行卡认证
// params.setIdentFrontImg(new File("")); //证件正面照图片文件
// params.setIdentBackImg(new File("")); //证件反面照图片文件
String result = client.invokePersonVerifyUrl(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return null;
}
return JSON.parseObject(JSONObject.parseObject(result).getString(FddConstant.DATA), PersonVerifyResp.class);
}
// @Override
// public ResultBody findPersonCertInfo(String verifiedSerialNo) {
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FindPersonCertParams params = new FindPersonCertParams();
// params.setVerifiedSerialNo(verifiedSerialNo); //此处填获取个人实名认证地址返回的交易号
// String result = client.invokeFindPersonCert(params);
// return ResultBody.success(result);
// }
//
// @Override
// public ResultBody getCompanyVerifyUrl(Integer userAccountId) {
// String customerId = this.checkRegisterFdd(userAccountId);
// if(customerId == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// //查询原来有没有请求
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfo(userAccountId);
// if(fddEVerifyInfo == null){
// CompanyVerifyResp companyVerifyResp = this.reqCompanyVerifyUrl(customerId);
// if(companyVerifyResp == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// //保存实名认证链接和交易号
// FddEVerifyInfoDO fddEVerifyInfoDO = new FddEVerifyInfoDO();
// fddEVerifyInfoDO.setUserAccountId(userAccountId);
// fddEVerifyInfoDO.setCustomerId(customerId);
// fddEVerifyInfoDO.setTransactionNo(companyVerifyResp.getTransactionNo());
// fddEVerifyInfoDO.setUrl(companyVerifyResp.getUrl());
// fddVerifyDao.addFddEVerifyInfo(fddEVerifyInfoDO);
// return ResultBody.success(companyVerifyResp.getUrl());
// }
// return ResultBody.success(fddEVerifyInfo.getUrl());
// }
//
// private CompanyVerifyResp reqCompanyVerifyUrl(String customerId){
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// CompanyVerifyUrlParams params = new CompanyVerifyUrlParams();
// params.setCustomerId(customerId);
// params.setPageModify("1");//1允许 2不允许 默认为1
// //设置回调通知
// params.setReturnUrl(FddConnectConstant.MMC_URL + FddConstant.RETURN_E_CERT_RES);
// params.setNotifyUrl(FddConnectConstant.MMC_URL + FddConstant.NOTIFY_E_CERT_RES);
// String result = client.invokeCompanyVerifyUrl(params);
// if(!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)){
// return null;
// }
// CompanyVerifyResp data = JSON.parseObject(JSONObject.parseObject(result).getString(FddConstant.DATA), CompanyVerifyResp.class);
// return data;
// }
@Override
public String getApplyCert(String customerId, String transactionNo) {
FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
ApplyCertParams params = new ApplyCertParams();
//客户编号
params.setCustomerId(customerId);
// 填写获取实名认证地址返回的交易号transactionNo
params.setVerifiedSerialNo(transactionNo);
String result = client.invokeApplyCert(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return null;
}
return result;
}
// @Override
// public ResultBody findCompanyCertInfo(Integer userAccountId) {
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(userAccountId);
// if(userFddDO == null){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfo(userAccountId);
// if( fddEVerifyInfo == null ){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
//
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FindCompanyCertParams params = new FindCompanyCertParams();
// params.setVerifiedSerialNo(fddEVerifyInfo.getTransactionNo());//此处填获取企业实名认证地址返回的交易号
// String result = client.invokeFindCompanyCert(params);
// if(!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// return ResultBody.success(JSONObject.parseObject(result).getString(FddConstant.DATA));
// }
//
// @Override
// public ResultBody notifyECertRes(String appId, String serialNo, String customerId, String status, String statusDesc, String certStatus, String authenticationType, String timestamp, String sign) {
// if (!appId.equals(FddConnectConstant.APP_ID)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// //修改状态认证
// return userServletClient.notifyECertRes(appId, serialNo, customerId, status, statusDesc, certStatus, authenticationType, timestamp, sign);
// }
//
// @Override
// public ResultBody returnECertRes(String personName, String transactionNo, String authenticationType, String status, String sign) {
// //修改状态认证
// return userServletClient.returnECertRes(personName, transactionNo, authenticationType, status, sign);
// }
//
// @Override
// public ResultBody newNotifyECertRes(Map<String, String> map) {
//
// String appId = map.get("appId");
//// String name="%E9%83%AD%E5%AE%B6%E8%BE%89";
// String serialNo = map.get("serialNo");
// String customerId = map.get("customerId");
// String status = map.get("status");
// String statusDesc = map.get("statusDesc");
// String certStatus = map.get("certStatus");
// String authenticationType = map.get("authenticationType");
// String timestamp = map.get("timestamp");
// String sign = map.get("sign");
// String sha1 = FddEncryptTool.sha1(FddConnectConstant.APP_KEY +authenticationType +certStatus+customerId+ serialNo+status+ statusDesc);
// try {
// String md5 = FddEncryptTool.md5Digest(timestamp);
// String outSha1 = FddEncryptTool.sha1(FddConnectConstant.APP_ID+md5 + sha1);
// String base64 = new String(FddEncryptTool.Base64Encode(outSha1.getBytes())).trim();
// if(!base64.equals(sign)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// if (!appId.equals(FddConnectConstant.APP_ID)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// }catch (Exception e){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// FddEVerifyInfoDO fddEVerifyInfo = fddVerifyDao.getFddEVerifyInfoByTransactionNo(serialNo);
// if(fddEVerifyInfo == null){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// //修改认证状态
// fddVerifyDao.updateCompanyCertStatus(customerId, status);
// //通过需要申请证书
// if(status.equals("4")){
// this.getApplyCert(fddEVerifyInfo.getCustomerId(), fddEVerifyInfo.getTransactionNo());
// }
// return ResultBody.success();
// }
//
// @Override
// public ResultBody getUserFddInfo(Integer id) {
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(id);
// if(userFddDO == null){
// return ResultBody.error(ResultEnum.NO_REAL_NAME);
// }
// return ResultBody.success(userFddDO.buildUserFddDTO());
// }
//
// @Override
// public List<UserFddDTO> feignBatchUserFddPage(List<Integer> list) {
// if( list.size() == 0 ){
// return null;
// }
// List<UserFddDO> userFddDOList = fddVerifyDao.listUserFddPage(list);
// List<UserFddDTO> collect = userFddDOList.stream().map(d -> {
// return d.buildUserFddDTO();
// }).collect(Collectors.toList());
// return collect;
// }
//
// @Override
// public ResultBody getFileByUuid(String uuid, String docType) {
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FileForUUIDParams params = new FileForUUIDParams();
// params.setUuid(uuid);//此处传个人实名认证接口查询中返回的认证图片id,或查询企业认证信息中返回 的企业认证申请表id
// params.setDocType(docType);//0:图片(默认图片)1:pdf (仅支持企业申请表模板)
// String result = client.invokeFileForUUID(params);
// //防止被转移,把字符串转base64
// String base64 = new String(FddEncryptTool.Base64Encode(result.getBytes())).trim();
// return ResultBody.success(base64);
// }
//
// /**
// * 查询是否注册法大大
// */
// private String checkRegisterFdd(Integer userAccountId){
// UserAccountDTO userAccountDTO = userServletClient.feignGetUserSimpleInfo(userAccountId);
// UserFddDO userFddDO = fddVerifyDao.getUserFddByUserAccountId(userAccountId);
// String customerId = null;
// if(userFddDO == null){
// //账号类型1个人 2企业,合伙人默认全部是企业
// Integer accountType = 2;
// customerId = this.register(userAccountDTO.getUid(), accountType+"");
// if(customerId == null){
// return null;
// }
// UserFddDO userFddDO1 = new UserFddDO();
// userFddDO1.setUserAccountId(userAccountId);
// userFddDO1.setCustomerId(customerId);
// userFddDO1.setAccountType(accountType);
// userFddDO1.setPersonVerifyStatus(0);
// userFddDO1.setEntVerifyStatus(0);
// fddVerifyDao.addUserFdd(userFddDO1);
// }else {
// customerId = userFddDO.getCustomerId();
// }
// return customerId;
// }
}
\ No newline at end of file
package com.mmc.iuav.user.service.fdd.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fadada.sdk.utils.crypt.FddEncryptTool;
import com.fadada.sdk.verify.client.FddVerifyClient;
import com.fadada.sdk.verify.model.req.CompanyVerifyUrlParams;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.response.ResultEnum;
import com.mmc.iuav.user.constant.fdd.FddConnectConstant;
import com.mmc.iuav.user.constant.fdd.FddConstant;
import com.mmc.iuav.user.dao.UserServiceDao;
import com.mmc.iuav.user.dao.fdd.UserFddAuthDao;
import com.mmc.iuav.user.entity.UserAccountDO;
import com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO;
import com.mmc.iuav.user.entity.fdd.UserFddDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.fdd.resp.CompanyVerifyResp;
import com.mmc.iuav.user.model.fdd.resp.PersonVerifyResp;
import com.mmc.iuav.user.service.fdd.FddService;
import com.mmc.iuav.user.service.fdd.UserFddAuthService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* author:zhenjie
* Date:2022/9/1
* time:15:46
*/
@Service
public class UserFddAuthServiceImpl implements UserFddAuthService {
@Autowired
private FddService fddService;
@Resource
private UserServiceDao userServiceDao;
@Autowired
private UserFddAuthDao userFddAuthDao;
@Override
public String register(String uid, String accountType) {
return fddService.register(uid, accountType);
}
@Override
public PersonVerifyResp getPersonVerifyUrl(String customerId) {
return fddService.getPersonVerifyUrl(customerId);
}
@Override
public ResultBody getCompanyVerifyUrl(Integer port, LoginSuccessDTO loginSuccessDTO) {
String uId;
if (port.equals(0)) {
// 获取小程序用户信息拿到unionId
UserAccountDO userInfo = userServiceDao.getUserAccountById(loginSuccessDTO.getUserAccountId());
uId = this.replaceUnableString(userInfo.getUnionId());
} else {
uId = loginSuccessDTO.getUserAccountId().toString();
}
//验证是否注册企业
String customerId = this.checkRegisterFdd(uId);
if (customerId == null) {
return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
}
UserFddDO userFddDO = userFddAuthDao.checkRegisterFdd(uId);
if (userFddDO == null) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
//查看原来是否有申请
FddVerifyInfoDO verifyInfoDO = userFddAuthDao.getCompanyVerifyUrl(userFddDO.getCustomerId());
if (verifyInfoDO == null) {
CompanyVerifyResp companyVerifyResp = this.reqCompanyVerifyUrl(customerId);
if (companyVerifyResp == null) {
return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
}
FddVerifyInfoDO verifyInfoDO1 = new FddVerifyInfoDO();
verifyInfoDO1.setUserFddId(userFddDO.getId());
verifyInfoDO1.setCustomerId(customerId);
verifyInfoDO1.setTransactionNo(companyVerifyResp.getTransactionNo());
verifyInfoDO1.setUrl(companyVerifyResp.getUrl());
userFddAuthDao.insertVerifyInfo(verifyInfoDO1);
return ResultBody.success(companyVerifyResp.getUrl());
}
return ResultBody.success(verifyInfoDO.getUrl());
}
@Override
public ResultBody notifyECertRes(Map<String, String> map) {
String appId = map.get("appId");
String serialNo = map.get("serialNo");
String customerId = map.get("customerId");
String status = map.get("status");
String statusDesc = map.get("statusDesc");
String certStatus = map.get("certStatus");
String authenticationType = map.get("authenticationType");
String timestamp = map.get("timestamp");
String sign = map.get("sign");
String sha1 = FddEncryptTool.sha1(FddConnectConstant.APP_KEY + authenticationType + certStatus + customerId + serialNo + status + statusDesc);
try {
String md5 = FddEncryptTool.md5Digest(timestamp);
String outSha1 = FddEncryptTool.sha1(FddConnectConstant.APP_ID + md5 + sha1);
String base64 = new String(FddEncryptTool.Base64Encode(outSha1.getBytes())).trim();
if (!base64.equals(sign)) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
if (!appId.equals(FddConnectConstant.APP_ID)) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
} catch (Exception e) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
FddVerifyInfoDO verifyInfoDO = userFddAuthDao.getCompanyVerifyUrl(customerId);
if (verifyInfoDO == null) {
return ResultBody.error(ResultEnum.NOT_FOUND);
}
//修改认证状态
userFddAuthDao.updateCompanyCertStatus(customerId, status);
//通过需要申请证书
if (status.equals("4")) {
fddService.getApplyCert(verifyInfoDO.getCustomerId(), verifyInfoDO.getTransactionNo());
}
// // 已认证实时同步到小程序用户
// if(status.equals("4")){
// UserFddDO appUserFddDO = appUserFddAuthDao.getAppUserFddInfoByCustomerId(customerId);
// if(appUserFddDO!=null){
// mallUserClient.feingUpdateEntVerify(appUserFddDO.getUnionId(),1,appUserFddDO.getCreateTime());
// }
// }
return ResultBody.success();
}
//
// @Override
// public ResultBody findCompanyCertInfo(String unionId) {
// String uId = this.replaceUnableString(unionId);
// UserFddDO appUserFddDO = appUserFddAuthDao.getAppUserFddInfo(uId);
// if(appUserFddDO == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// AppEVerifyInfoDO appEVerifyInfoDO = appUserFddAuthDao.getCompanyVerifyUrl(appUserFddDO.getCustomerId());
// if(appEVerifyInfoDO == null){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
// FindCompanyCertParams params = new FindCompanyCertParams();
// params.setVerifiedSerialNo(appEVerifyInfoDO.getTransactionNo());//此处填获取企业实名认证地址返回的交易号
// String result = client.invokeFindCompanyCert(params);
// if(!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)){
// return ResultBody.error(ResultEnum.NOT_FOUND);
// }
// return ResultBody.success(JSONObject.parseObject(result).getString(FddConstant.DATA));
// }
//
// @Override
// public ResultBody getAppUserFddInfo(String unionId) {
// String uId = this.replaceUnableString(unionId);
// UserFddDO appUserFddDO = appUserFddAuthDao.getAppUserFddInfo(uId);
// return ResultBody.success(appUserFddDO == null ? null : appUserFddDO.buildAppUserFddDTO());
// }
//
private CompanyVerifyResp reqCompanyVerifyUrl(String customerId) {
FddVerifyClient client = new FddVerifyClient(FddConnectConstant.APP_ID, FddConnectConstant.APP_KEY, FddConnectConstant.VERSION, FddConnectConstant.HOST);
CompanyVerifyUrlParams params = new CompanyVerifyUrlParams();
params.setCustomerId(customerId);
params.setPageModify("1");//1允许 2不允许 默认为1
//设置回调通知
params.setNotifyUrl(FddConnectConstant.MMC_URL + FddConstant.NOTIFY_E_CERT_RES);
params.setMVerifiedWay("4");
String result = client.invokeCompanyVerifyUrl(params);
if (!JSONObject.parseObject(result).getString(FddConstant.CODE).equals(FddConstant.SUCCESS)) {
return null;
}
CompanyVerifyResp data = JSON.parseObject(JSONObject.parseObject(result).getString(FddConstant.DATA), CompanyVerifyResp.class);
return data;
}
private String checkRegisterFdd(String unionId) {
//查看是否已注册
UserFddDO userFddDO = userFddAuthDao.checkRegisterFdd(unionId);
String customerId;
if (userFddDO == null) {
//账号类型1个人 2企业
Integer accountType = 2;
customerId = this.register(unionId, accountType.toString());
if (customerId == null) {
return null;
}
UserFddDO userFddDO1 = new UserFddDO();
userFddDO1.setUnionId(unionId);
userFddDO1.setCustomerId(customerId);
userFddDO1.setAccountType(accountType);
userFddDO1.setEntVerifyStatus(0);
userFddDO1.setPersonVerifyStatus(0);
userFddAuthDao.insertAppUserFdd(userFddDO1);
} else {
customerId = userFddDO.getCustomerId();
}
return customerId;
}
//
@Override
public String replaceUnableString(String uid) {
String u = uid.replaceAll(FddConstant.UID_REGEX, "");
return u;
}
//
// @Override
// public List<AppUserFddDTO> feignGetAppUserFddInfo(List<String> unionId) {
// List<String> uids = new ArrayList<>();
// for (String uId : unionId) {
// String repUnionId = this.replaceUnableString(uId);
// uids.add(repUnionId);
// }
// List<UserFddDO> appUserFddDOs = appUserFddAuthDao.feignGetAppUserFddInfo(uids);
// List<AppUserFddDTO> appUserFddDTOS = new ArrayList<>();
// if(!CollectionUtils.isEmpty(appUserFddDOs)){
// appUserFddDTOS = appUserFddDOs.stream().map(UserFddDO::buildAppUserFddDTO).collect(Collectors.toList());
// }
// return appUserFddDTOS;
// }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.fdd.UserFddAuthDao">
<resultMap id="appUserFddResultMap" type="com.mmc.iuav.user.entity.fdd.UserFddDO">
<id property="id" column="id"/>
<result property="unionId" column="union_id"/>
<result property="customerId" column="customer_id"/>
<result property="personVerifyStatus" column="person_verify_status"/>
<result property="entVerifyStatus" column="ent_verify_status"/>
<result property="accountType" column="account_type"/>
<result property="updateTime" column="update_time"/>
<result property="createTime" column="create_time"/>
</resultMap>
<insert id="insertAppUserFdd" parameterType="com.mmc.iuav.user.entity.fdd.UserFddDO"
keyProperty="id" useGeneratedKeys="true">
insert into user_fdd
(union_id, customer_id, person_verify_status, ent_verify_status, account_type, create_time)
values (#{unionId}, #{customerId}, #{personVerifyStatus}, #{entVerifyStatus}, #{accountType}, NOW())
</insert>
<insert id="insertVerifyInfo" useGeneratedKeys="true" keyProperty="id"
parameterType="com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO">
insert into fdd_verify_info
(user_fdd_id, customer_id, transaction_no, url, create_time)
values (#{userFddId}, #{customerId}, #{transactionNo}, #{url}, NOW())
</insert>
<update id="updateCompanyCertStatus">
update user_fdd
set ent_verify_status = #{status}
where customer_id = #{customerId}
</update>
<select id="checkRegisterFdd" resultType="com.mmc.iuav.user.entity.fdd.UserFddDO">
select id,
union_id,
customer_id,
person_verify_status,
ent_verify_status,
account_type,
create_time,
update_time
from user_fdd
where union_id = #{unionId}
and is_deleted = 0
</select>
<select id="getCompanyVerifyUrl" resultType="com.mmc.iuav.user.entity.fdd.FddVerifyInfoDO">
select id, user_fdd_id, customer_id, transaction_no, url, create_time, update_time
from fdd_verify_info
where customer_id = #{customerId}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论