Commit 5d48c050 authored by 5359's avatar 5359

企业经办人逻辑调整修改

parent ac8e5700
......@@ -224,7 +224,7 @@ public class SignHclcController extends BaseController {
//注销机构账户
map = organSignHclcService.deleteOrgansAccount(iRequest, dto);
if ("0".equalsIgnoreCase(map.get("code").toString()) || "40051667".equalsIgnoreCase(map.get("code").toString())) {
if ("0".equalsIgnoreCase(map.get("code").toString()) || "40051667".equalsIgnoreCase(map.get("code").toString()) || "000003".equalsIgnoreCase(map.get("code").toString())) {
dto = signHclcService.selectByPrimaryKey(iRequest, dto);
//复制用户信息到历史表
SignUserInfoHclcHis signUserInfoHclcHis = new SignUserInfoHclcHis();
......@@ -238,15 +238,16 @@ public class SignHclcController extends BaseController {
dto.setAuthFlag("N");
dto.setCreateCode("");
dto.setCreateMessage("");
dto.setManagerAuthFlag("N");
//注销经办人用户
//初始化经办人人脸识别信息
SignUserInfoHclc agentSignInfo = new SignUserInfoHclc();
agentSignInfo.setOpenId(dto.getOpenId());
agentSignInfo.setIdNo(dto.getAgentIdNo());
agentSignInfo.setMobile(dto.getMobile());
agentSignInfo.setName(dto.getAgentName());
agentSignInfo.setAccountId(dto.getAgentAccountId());
// agentSignInfo.setIdNo(dto.getAgentIdNo());
// agentSignInfo.setMobile(dto.getMobile());
// agentSignInfo.setName(dto.getAgentName());
// agentSignInfo.setAccountId(dto.getAgentAccountId());
map = signHclcService.deletePersonAccount(iRequest, agentSignInfo);
if ("0".equalsIgnoreCase(map.get("code").toString()) || "40051667".equalsIgnoreCase(map.get("code").toString()) || "000003".equalsIgnoreCase(map.get("code").toString())) {
signHclcService.deleteByPrimaryKey(dto);
......@@ -254,7 +255,7 @@ public class SignHclcController extends BaseController {
} else {
signHclcService.updateByPrimaryKey(iRequest, dto);
}
//机构已注销,ccountaId为空的情况
//机构已注销,accountaId为空的情况
} else if ("000012".equalsIgnoreCase(map.get("code").toString())) {
//注销经办人用户
map = signHclcService.deletePersonAccount(iRequest, dto);
......@@ -302,34 +303,43 @@ public class SignHclcController extends BaseController {
* 经办人授权/取消授权
*
* @param request
* @param dto 经办人授权/取消授权
* @param lists<SignUserInfoHclc> 经办人授权/取消授权
* @return Map
*/
@ResponseBody
@RequestMapping("/auth/api/individual/authorize")
public Map<String, Object> setOrganIndividualAuthorize(HttpServletRequest request,
@RequestBody SignUserInfoHclc dto) {
@RequestBody List<SignUserInfoHclc> lists) {
Map<String, Object> map = new HashMap<>();
IRequest iRequest = createRequestContext(request);
if (Objects.isNull(dto.getOpenId())||Objects.isNull(dto.getAuthFlag())) {
map.put("code", "000005");
map.put("message", "关键参数openId不存在,调用失败!");
}else{
for (SignUserInfoHclc dto : lists) {
if (Objects.isNull(dto.getOpenId()) || Objects.isNull(dto.getManagerAuthFlag())) {
map.put("code", "000001");
map.put("message", "关键参数openId、managerAuthFlag不存在,调用失败!");
return map;
} else {
try {
organSignHclcService.updateByPrimaryKeySelective(iRequest, dto);
map.put("code", "000000");
map.put("message", "用户授权成功!");
}catch (Exception e){
map.put("code", "000006");
map.put("message", "用户授权失败,请检查!");
SignUserInfoHclc signUserInfoHclc = new SignUserInfoHclc();
signUserInfoHclc.setOpenId(dto.getOpenId());
signUserInfoHclc = signHclcService.selectByPrimaryKey(iRequest, signUserInfoHclc);
if (Objects.nonNull(signUserInfoHclc) && Objects.nonNull(signUserInfoHclc.getOpenId())) {
signHclcService.updateByPrimaryKeySelective(iRequest, dto);
}
} catch (Exception e) {
map.put("code", "000002");
map.put("message", "操作失败,请检查!");
return map;
}
}
//map = organSignHclcService.setOrganIndividualAuthorize(iRequest, dto);
}
map.put("code", "000000");
map.put("message", "操作成功!");
return map;
}
/**
* 经办人信息查询
*
......@@ -343,10 +353,15 @@ public class SignHclcController extends BaseController {
@RequestBody SignUserInfoHclc dto) {
IRequest requestContext = createRequestContext(request);
List<SignUserInfoHclc> signInfoHclcs = new ArrayList<>();
SignUserInfoHclc signInfoHclc = signHclcService.selectByPrimaryKey(requestContext, dto);
signInfoHclcs=organSignHclcService.getOrganIndividualInfoQuery(requestContext, dto);
SignUserInfoHclc signInfoHclc = new SignUserInfoHclc();
signInfoHclc.setIdNo(dto.getIdNo());
signInfoHclc.setIsManagerFlag("N");
signInfoHclc.setManagerAuthFlag(dto.getManagerAuthFlag());
signInfoHclcs = organSignHclcService.getOrganIndividualInfoQuery(requestContext, signInfoHclc);
return new ResponseData(signInfoHclcs);
}
/**
* 管理权限转让
*
......@@ -361,19 +376,38 @@ public class SignHclcController extends BaseController {
Map<String, Object> map = new HashMap<>();
IRequest iRequest = createRequestContext(request);
if (Objects.isNull(dto.getOpenId())||Objects.isNull(dto.getAuthFlag())) {
map.put("code", "000005");
map.put("message", "关键参数openId不存在,调用失败!");
}else{
if (Objects.isNull(dto.getOpenId())) {
map.put("code", "000001");
map.put("message", "关键参数openId,调用失败!");
return map;
} else {
try {
map=organSignHclcService.setOrganIndividualAssignment(iRequest, dto);
}catch (Exception e){
map.put("code", "000006");
map.put("message", "用户授权失败,请检查!");
//新管理员角色
SignUserInfoHclc infoHclc = new SignUserInfoHclc();
infoHclc.setOpenId(dto.getOpenId());
infoHclc = signHclcService.selectByPrimaryKey(iRequest, infoHclc);
if (Objects.nonNull(infoHclc) && !"Y".equalsIgnoreCase(infoHclc.getAuthFlag())) {
map.put("code", "000002");
map.put("message", "用户未完成认证,无法授权授权,请先认证!");
return map;
}
infoHclc.setIsManagerFlag("Y");
organSignHclcService.setOrganIndividualAssignment(iRequest, dto);
//原管理员角色
SignUserInfoHclc signUserInfoHclc = new SignUserInfoHclc();
signUserInfoHclc.setOpenId(dto.getOldOpenId());
signUserInfoHclc.setIsManagerFlag("N");
signHclcService.updateByPrimaryKeySelective(iRequest, signUserInfoHclc);
} catch (Exception e) {
map.put("code", "000003");
map.put("message", "操作失败,请检查!");
return map;
}
//map = organSignHclcService.setOrganIndividualAuthorize(iRequest, dto);
}
map.put("code", "000000");
map.put("message", "操作成功!");
return map;
}
......
......@@ -94,6 +94,9 @@ public class SignUserInfoHclc extends BaseDTO {
@Transient
private String historyFlag;//微信图片资源id
@Transient
private String oldOpenId;
public AttachmentInfo getAttachmentInfo() {
return attachmentInfo;
}
......@@ -397,4 +400,12 @@ public class SignUserInfoHclc extends BaseDTO {
public void setManagerAuthFlag(String managerAuthFlag) {
this.managerAuthFlag = managerAuthFlag;
}
public String getOldOpenId() {
return oldOpenId;
}
public void setOldOpenId(String oldOpenId) {
this.oldOpenId = oldOpenId;
}
}
......@@ -58,6 +58,10 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
public static final String deleteApiName = "organizationsDelete";
private static final String HASH_ALGORITHM = "HmacSHA256";
//业务系统接口信息
public static final String hclcSysName = "HCL_UPLOAD_FILE";
public static final String getManagerStatus = "getManagerStatus";
private final static int HTTP_OK = 200;
@Autowired
......@@ -83,6 +87,34 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
String accountStatus = null;
String getUrlType = null;
//判断经办人是否管理员
String isManager;
JSONObject param = new JSONObject();
param.put("name", info.getName());
param.put("agentIdNo", info.getAgentIdNo());
isManager = getManagerStatus(param);
//非管理员用户注册前判断企业是否已完成对应管理人角色注册
SignUserInfoHclc managerSignInfo = new SignUserInfoHclc();
if ("N".equalsIgnoreCase(isManager)) {
managerSignInfo.setIdNo(info.getIdNo());
managerSignInfo.setIsManagerFlag("Y");
managerSignInfo.setAuthFlag("Y");
List<SignUserInfoHclc> managerList = mapper.select(managerSignInfo);
if (Objects.isNull(managerList) || managerList.size() == 0) {
logger.error("请先完成企业电子合同管理人员注册!");
mapOrgan.put("code", "14");
mapOrgan.put("message", "请先完成企业电子合同管理人员注册!");
return mapOrgan;
}
info.setIsManagerFlag("N");
info.setManagerAuthFlag("N");
} else {
info.setIsManagerFlag("Y");
info.setManagerAuthFlag("Y");
}
//用户信息不存在,新增用户信息,创建e签宝经办人账户,获取经办人人脸核验url
if (Objects.isNull(signInfoHclc)) {
info.setCtitype(2L);
......@@ -125,7 +157,20 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
//判断人脸核身认证状态,核验完成直接获取机构核验url
if ("SUCCESS".equalsIgnoreCase(signInfoHclcFace.getAuthStatus())) {
//非企业管理员用户不做对公打款认证
if ("N".equalsIgnoreCase(isManager)) {
//更新非企业管理员用户的企业认证信息
signInfoHclc.setAccountId(managerSignInfo.getAccountId());
signInfoHclc.setOrgAuthId(managerSignInfo.getOrgAuthId());
signInfoHclc.setAccountId("Y");
this.updateByPrimaryKey(iRequest, signInfoHclc);
mapOrgan.put("code", "2");
mapOrgan.put("message", "机构认证已完成,无需重复验证!");
return mapOrgan;
} else {
getUrlType = "ORG";
}
} else if ("FAIL".equalsIgnoreCase(signInfoHclcFace.getAuthStatus())) {
accountStatus = "AGENT_EXISTS";
getUrlType = "AGENT";
......@@ -289,7 +334,7 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
}
//移动端用户信息发生变更,需要注销e签宝账户,重新创建,并获取企业核验url
if (!info.getIdNo().equalsIgnoreCase(signInfoHclc.getIdNo()) || !info.getName().equalsIgnoreCase(signInfoHclc.getName()) || !info.getLegalIdNo().equalsIgnoreCase(signInfoHclc.getLegalIdNo()) || !info.getLegalName().equalsIgnoreCase(signInfoHclc.getLegalName())) {
if (!info.getIdNo().equalsIgnoreCase(signInfoHclc.getIdNo()) || !info.getName().equalsIgnoreCase(signInfoHclc.getName()) || (Objects.nonNull(signInfoHclc.getLegalIdNo()) && !info.getLegalIdNo().equalsIgnoreCase(signInfoHclc.getLegalIdNo())) || !info.getLegalName().equalsIgnoreCase(signInfoHclc.getLegalName())) {
//判断人脸核身认证状态,核验完成直接结束任务
if (Objects.nonNull(signInfoHclcOrg)) {
......@@ -438,18 +483,50 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
return mapOrgan;
}
public List<SignUserInfoHclc> getOrganIndividualInfoQuery(IRequest iRequest, SignUserInfoHclc info){
public String getManagerStatus(JSONObject params) {
try {
//初始化接口信息
String url = iSignInfoHclcService.getApiUrl(hclcSysName, getManagerStatus);
logger.debug("sign flow url: {}", url);
Map<String, String> headInfo = new HashMap<String, String>();
headInfo.put("Content-Type", "application/x-www-form-urlencoded");
JSONObject requestData = new JSONObject();
requestData.put("requestData", params.toString());
//发送http请求
SignHclcUtils signHclcUtils1 = new SignHclcUtils();
String stringResult = signHclcUtils1.postString(url, requestData, headInfo, signHclcUtils1.APPLICATION_FORM_URLENCODED);
//解析返回结果
JSONObject jsonResult = JSONObject.parseObject(stringResult);
if ("true".equalsIgnoreCase(jsonResult.getString("success"))) {
return jsonResult.getString("isManager");
} else {
return "N";
}
} catch (Exception e) {
return "N";
}
}
public List<SignUserInfoHclc> getOrganIndividualInfoQuery(IRequest iRequest, SignUserInfoHclc info) {
List<SignUserInfoHclc> signInfoHclcs = signInfoHclcMapper.queryAgentInfo(info);
return signInfoHclcs;
}
public Map<String, Object> setOrganIndividualAssignment(IRequest iRequest, SignUserInfoHclc info){
public Map<String, Object> setOrganIndividualAssignment(IRequest iRequest, SignUserInfoHclc info) {
Map<String, Object> mapOrgan = new HashMap<>();
try {
signInfoHclcMapper.setOrganIndividualAssignment(info);
mapOrgan.put("code", "000000");
mapOrgan.put("message", "管理权限转让成功!");
}catch (Exception e){
} catch (Exception e) {
mapOrgan.put("code", "000005");
mapOrgan.put("message", "管理权限转让失败,请检查!");
}
......@@ -480,7 +557,9 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
//组织机构证件类型-统一社会信用代码
json2.put("certType", "ORGANIZATION_USC_CODE");
//法定代表人证件号
if (Objects.nonNull(info.getLegalIdNo()) && !"".equalsIgnoreCase(info.getLegalIdNo())) {
json2.put("legalRepCertNo", info.getLegalIdNo());
}
//法定代表人证件类型-中国大陆身份证
json2.put("egalRepCertType", "INDIVIDUAL_CH_IDCARD");
//法定代表人姓名
......@@ -494,11 +573,16 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
//经办人身份1 企业法定代表人;2 企业授权代理人
json2.put("operatorType", info.getAgentType());
//组织核验类型,“1”:三要素核验;“2”:四要素核验;不填为不指定核验类型
json2.put("verifyType", "2");
// json2.put("verifyType", "2");
//认证配置信息
String[] str = new String[]{};
JSONObject json3 = new JSONObject();
String[] str = new String[]{"name", "certNo", "legalRepName", "legalRepCertNo", "agentName", "agentIdNo"};
if (Objects.nonNull(info.getLegalIdNo()) && !"".equalsIgnoreCase(info.getLegalIdNo())) {
str = new String[]{"name", "certNo", "legalRepName", "legalRepCertNo", "agentName", "agentIdNo"};
} else {
str = new String[]{"name", "certNo", "legalRepName", "agentName", "agentIdNo"};
}
json3.put("indivUneditableInfo", str);
JSONObject result = new JSONObject();
......@@ -647,11 +731,19 @@ public class OrganSignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHc
if (Objects.isNull(signInfoHclc.getAccountId()) || "".equalsIgnoreCase(signInfoHclc.getAccountId())) {
logger.debug("e签宝机构账户 accountId: {} 不存在,无需注销!", signInfoHclc.getAccountId());
map.put("code", "40051667");
map.put("code", "000012");
map.put("message", "e签宝机构账户不存在,无需注销!");
return map;
}
//企业非管理员用户无需注销机构信息
if ("N".equalsIgnoreCase(signInfoHclc.getIsManagerFlag())) {
logger.debug("非管理员用户,无需注销!");
map.put("code", "000003");
map.put("message", "非管理员用户,无需注销!");
return map;
}
//业务方交互上下文信息
JSONObject result = new JSONObject();
//机构名称
......
......@@ -50,8 +50,12 @@ public class SignInfoHclcFaceServiceImpl extends BaseServiceImpl<SignUserFaceHcl
SignUserInfoHclc signInfoHclc = new SignUserInfoHclc();
signInfoHclc.setOpenId(signInfoHclcFace.getOpenId());
signInfoHclc = iSignInfoHclcService.selectByPrimaryKey(iRequest, signInfoHclc);
//更新用户认证状态为Y
if (signInfoHclc.getCtitype().compareTo(1L) == 0 || (signInfoHclc.getCtitype().compareTo(2L) == 0 && "2".equalsIgnoreCase(signInfoHclcFace.getAuthType()))) {
//更新用户认证状态为Y--modify by lsy 20200813调整
if (signInfoHclc.getCtitype().compareTo(1L) == 0 || (signInfoHclc.getCtitype().compareTo(2L) == 0
//非管理员用户人脸识别后认证成功
&& ((Objects.nonNull(signInfoHclc.getIsManagerFlag()) && "N".equalsIgnoreCase(signInfoHclc.getIsManagerFlag()) && "1".equalsIgnoreCase(signInfoHclcFace.getAuthType()))
//管理员用户对公打款后认证成功
|| "2".equalsIgnoreCase(signInfoHclcFace.getAuthType())))) {
signInfoHclc.setAuthFlag("Y");
iSignInfoHclcService.updateByPrimaryKeySelective(iRequest, signInfoHclc);
}
......
......@@ -1183,6 +1183,7 @@ public class SignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHclc> i
for (int i = 0; i < signers.size(); i++) {
JSONObject json1 = signers.getJSONObject(i);
String idNo = json1.getString("idNo");
String agentIdNo = json1.getString("agentIdNo");
String name = json1.getString("name");
String role = json1.getString("role");
......@@ -1205,6 +1206,11 @@ public class SignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHclc> i
signInfoHclc.setIdNo(idNo);
}
//企业客户匹配经办人证件号
if (Objects.nonNull(agentIdNo) && !"".equalsIgnoreCase(agentIdNo)) {
signInfoHclc.setAgentIdNo(agentIdNo);
}
List<SignUserInfoHclc> signInfoHclcs = signInfoHclcMapper.queryUserInfo(signInfoHclc);
if (signInfoHclcs.size() == 0) {
logger.error("create sign flows failed, account:{} is not defined in wx", name + idNo);
......@@ -1273,6 +1279,7 @@ public class SignInfoHclcServiceImpl extends BaseServiceImpl<SignUserInfoHclc> i
json1.put("accountType", "2");
json1.remove("idNo");
json1.remove("agentIdNo");
json1.remove("name");
json1.remove("role");
......
......@@ -42,6 +42,9 @@
<if test="idNo != null">
and id_no = #{idNo,jdbcType=VARCHAR}
</if>
<if test="agentIdNo != null">
and agent_id_no = #{agentIdNo,jdbcType=VARCHAR}
</if>
<if test="name != null">
and name = #{name,jdbcType=VARCHAR}
</if>
......@@ -56,13 +59,19 @@
</select>
<select id="queryAgentInfo" resultMap="BaseResultMap" parameterType="com.hand.app.esignHclc.dto.SignUserInfoHclc">
select open_id,agent_name,agent_id_no,mobile,auth_flag
select *
from SIGN_USER_INFO_HCLC
<where>
where
AUTH_FLAG='Y'
<if test="idNo != null">
and id_no = #{idNo,jdbcType=VARCHAR}
</if>
</where>
<if test="isManagerFlag != null">
and is_manager_flag = #{isManagerFlag,jdbcType=VARCHAR}
</if>
<if test="managerAuthFlag != null">
and manager_auth_flag = #{managerAuthFlag,jdbcType=VARCHAR}
</if>
order by account_id
</select>
......@@ -70,8 +79,8 @@
update SIGN_USER_INFO_HCLC
<set>
<if test="isManagerFlag != null">is_manager_flag=#{isManagerFlag,jdbcType=VARCHAR},</if>
<if test="managerAuthFlag != null">manager_auth_flag=#{managerAuthFlag}</if>
</set>
where id_no=#{idNo}
where open_id=#{openId}
AND manager_auth_flag='Y'
</update>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment