记得上下班打卡 | git大法好,push需谨慎

Commit e90b75ac authored by 张国柄's avatar 张国柄

+API:业务账号开通API:NFT数字账号开通;

~API:登录、个人信息接口返回+业务账号信息字段;
~API:实名认证+支持更新实名;
parent 5346fa02
package com.liquidnet.service.adam.constant;
public class AdamEnum {
/**
* 业务账户
*/
public enum BizAcct {
IMHX("imhx", "即时通讯-环信"),
NFT_ZX("nft_zx", "NFT-至信链"),
;
private final String code;
private final String desc;
BizAcct(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
/**
* 业务账户状态
*/
public enum BizAcctStatus {
UNOPEN(0, "账户未开通"),
OPENED(1, "账户已开通"),
;
private final Integer val;
private final String desc;
BizAcctStatus(Integer val, String desc) {
this.val = val;
this.desc = desc;
}
public Integer getVal() {
return val;
}
public String getDesc() {
return desc;
}
}
/**
* 业务账户模块
*/
public enum BizAcctWork {
USER("user", "用户模块"),
;
private final String val;
private final String desc;
BizAcctWork(String val, String desc) {
this.val = val;
this.desc = desc;
}
public String getVal() {
return val;
}
public String getDesc() {
return desc;
}
}
}
...@@ -20,13 +20,17 @@ public class AdamRedisConst { ...@@ -20,13 +20,17 @@ public class AdamRedisConst {
public static final String INFO_THIRD_PARTY = PREFIX.concat("info:third_party:"); public static final String INFO_THIRD_PARTY = PREFIX.concat("info:third_party:");
public static final String INFO_ENTERS = PREFIX.concat("info:enters:"); public static final String INFO_ENTERS = PREFIX.concat("info:enters:");
public static final String INFO_ADDRESSES = PREFIX.concat("info:addresses:"); public static final String INFO_ADDRESSES = PREFIX.concat("info:addresses:");
/**
* {adam:info:biz:{uid},List<com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo>}
*/
public static final String INFO_BIZ = PREFIX.concat("info:biz:");
public static final String INFO_CERTIFICATION = PREFIX.concat("info:certification:"); public static final String INFO_CERTIFICATION = PREFIX.concat("info:certification:");
/** /**
* {adam:info:certmeta:{idType+idNo},{idname,mobile}} * {adam:info:certmeta:{idType+idNo},{idname,mobile}}
*/ */
public static final String INFO_CERTMETA = PREFIX.concat("info:certmeta:"); public static final String INFO_CERTMETA = PREFIX.concat("info:certmeta:");
public static final String INFO_CERTMETA_JUNK = PREFIX.concat("info:certmeta:"); public static final String INFO_CERTMETA_JUNK = PREFIX.concat("info:certmeta_junk:");
/** /**
* 认证失败标记 * 认证失败标记
*/ */
......
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据") @ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据")
public class AdamLoginInfoVo implements Serializable, Cloneable { public class AdamLoginInfoVo implements Serializable, Cloneable {
...@@ -20,10 +21,12 @@ public class AdamLoginInfoVo implements Serializable, Cloneable { ...@@ -20,10 +21,12 @@ public class AdamLoginInfoVo implements Serializable, Cloneable {
// private AdamMemberSimpleVo memberVo; // private AdamMemberSimpleVo memberVo;
@ApiModelProperty(position = 16, value = "用户会员信息") @ApiModelProperty(position = 16, value = "用户会员信息")
private AdamUserMemberVo userMemberVo; private AdamUserMemberVo userMemberVo;
@ApiModelProperty(position = 17, value = "业务账号信息")
private List<AdamUserBizAcctVo> bizAcctVoList;
@ApiModelProperty(position = 17, value = "微信用户openid(微信小程序登录返回,用于给小程序用户推送信息)") @ApiModelProperty(position = 18, value = "微信用户openid(微信小程序登录返回,用于给小程序用户推送信息)")
private String wechatOpenid; private String wechatOpenid;
@ApiModelProperty(position = 18, value = "微信用户unionid(微信小程序登录返回,用于给小程序用户推送信息)") @ApiModelProperty(position = 19, value = "微信用户unionid(微信小程序登录返回,用于给小程序用户推送信息)")
private String wechatUnionid; private String wechatUnionid;
public String getToken() { public String getToken() {
...@@ -74,6 +77,14 @@ public class AdamLoginInfoVo implements Serializable, Cloneable { ...@@ -74,6 +77,14 @@ public class AdamLoginInfoVo implements Serializable, Cloneable {
this.userMemberVo = userMemberVo; this.userMemberVo = userMemberVo;
} }
public List<AdamUserBizAcctVo> getBizAcctVoList() {
return bizAcctVoList;
}
public void setBizAcctVoList(List<AdamUserBizAcctVo> bizAcctVoList) {
this.bizAcctVoList = bizAcctVoList;
}
public String getWechatOpenid() { public String getWechatOpenid() {
return wechatOpenid; return wechatOpenid;
} }
......
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.liquidnet.service.adam.entity.AdamUserBusiAcct;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamUserBizAcctVo", description = "用户业务账号信息")
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class AdamUserBizAcctVo implements Serializable, Cloneable {
private static final long serialVersionUID = 7428532456309328881L;
@ApiModelProperty(position = 11, value = "业务码[NFT_ZX-至信数字藏品账号]")
private String bizCode;
@ApiModelProperty(position = 12, value = "业务账号状态[1-已开通]")
private Integer state;
@ApiModelProperty(position = 13, value = "业务账号ID")
private String uuid;
private static final AdamUserBizAcctVo obj = new AdamUserBizAcctVo();
public static AdamUserBizAcctVo getNew() {
try {
return (AdamUserBizAcctVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamUserBizAcctVo();
}
}
public AdamUserBizAcctVo copy(AdamUserBusiAcct source) {
if (null == source) return this;
this.setBizCode(source.getBusi());
this.setUuid(source.getUuid());
this.setState(source.getState());
return this;
}
}
...@@ -22,6 +22,8 @@ public class AdamUserProfileVo implements java.io.Serializable, Cloneable { ...@@ -22,6 +22,8 @@ public class AdamUserProfileVo implements java.io.Serializable, Cloneable {
private AdamUserMemberVo userMemberVo; private AdamUserMemberVo userMemberVo;
@ApiModelProperty(position = 16, value = "会员卡信息") @ApiModelProperty(position = 16, value = "会员卡信息")
private AdamMemberJoinusVo memberJoinusVo; private AdamMemberJoinusVo memberJoinusVo;
@ApiModelProperty(position = 17, value = "业务账号信息")
private List<AdamUserBizAcctVo> bizAcctVoList;
private static final AdamUserProfileVo obj = new AdamUserProfileVo(); private static final AdamUserProfileVo obj = new AdamUserProfileVo();
......
...@@ -11,5 +11,8 @@ import com.liquidnet.service.adam.entity.AdamRealName; ...@@ -11,5 +11,8 @@ import com.liquidnet.service.adam.entity.AdamRealName;
* @since 2021-05-10 * @since 2021-05-10
*/ */
public interface IAdamRealNameService { public interface IAdamRealNameService {
void add(AdamRealName realName); void add(AdamRealName realName);
void upsert(AdamRealName realName, boolean updateFlg);
} }
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo;
import com.liquidnet.service.base.ResponseDto;
/**
* 用户业务账号服务类
*
* @author zhanggb
* Created by IntelliJ IDEA at 2022/3/29
*/
public interface IAdamUserBusiAcctService {
ResponseDto<AdamUserBizAcctVo> openAccount(String uid, String bizCode, String name, String idCard, String mobile);
}
...@@ -68,4 +68,6 @@ public interface IAdamUserService { ...@@ -68,4 +68,6 @@ public interface IAdamUserService {
void close(String uid); void close(String uid);
AdamRealInfoVo identity(String uid, String name, String idCard, String mobile); AdamRealInfoVo identity(String uid, String name, String idCard, String mobile);
AdamRealInfoVo identityForUpsert(String uid, String name, String idCard, String mobile, boolean updateFlg);
} }
...@@ -4,7 +4,6 @@ import com.aliyuncs.DefaultAcsClient; ...@@ -4,7 +4,6 @@ import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.dypnsapi.model.v20170525.GetMobileRequest; import com.aliyuncs.dypnsapi.model.v20170525.GetMobileRequest;
import com.aliyuncs.dypnsapi.model.v20170525.GetMobileResponse; import com.aliyuncs.dypnsapi.model.v20170525.GetMobileResponse;
import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ClientException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
...@@ -14,7 +13,6 @@ import com.liquidnet.common.sms.processor.SmsProcessor; ...@@ -14,7 +13,6 @@ import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.constant.LnsEnum; import com.liquidnet.commons.lang.constant.LnsEnum;
import com.liquidnet.commons.lang.core.JwtValidator; import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamWechatConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam; import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo; import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
...@@ -498,7 +496,9 @@ public class AdamLoginController { ...@@ -498,7 +496,9 @@ public class AdamLoginController {
} }
private ResponseDto<AdamLoginInfoVo> loginVoResponseProcessing(AdamLoginInfoVo loginInfoVo) { private ResponseDto<AdamLoginInfoVo> loginVoResponseProcessing(AdamLoginInfoVo loginInfoVo) {
adamRdmService.ratingProvince(loginInfoVo.getUserInfo()); AdamUserInfoVo userInfo = loginInfoVo.getUserInfo();
adamRdmService.ratingProvince(userInfo);
loginInfoVo.setBizAcctVoList(adamRdmService.getBizAcctVosByUid(userInfo.getUid()));
return ResponseDto.success(loginInfoVo.desensitize(reviewUserInfo).finalRating()); return ResponseDto.success(loginInfoVo.desensitize(reviewUserInfo).finalRating());
} }
} }
...@@ -2,10 +2,10 @@ package com.liquidnet.service.adam.controller; ...@@ -2,10 +2,10 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.common.third.shumei.util.ShumeiUtil; import com.liquidnet.common.third.shumei.util.ShumeiUtil;
import com.liquidnet.commons.lang.constant.LnsEnum; import com.liquidnet.commons.lang.constant.LnsEnum;
import com.liquidnet.commons.lang.constant.LnsRegex; import com.liquidnet.commons.lang.constant.LnsRegex;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil; import com.liquidnet.commons.lang.util.SensitizeUtil;
...@@ -14,6 +14,7 @@ import com.liquidnet.service.adam.dto.AdamThirdPartParam; ...@@ -14,6 +14,7 @@ import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.AdamUserInfoParam; import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserBusiAcctService;
import com.liquidnet.service.adam.service.IAdamUserInfoService; import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.adam.service.IAdamUserService; import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.adam.util.ObjectUtil; import com.liquidnet.service.adam.util.ObjectUtil;
...@@ -36,7 +37,6 @@ import javax.validation.Valid; ...@@ -36,7 +37,6 @@ import javax.validation.Valid;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ApiSupport(order = 10020) @ApiSupport(order = 10020)
...@@ -58,6 +58,8 @@ public class AdamUserController { ...@@ -58,6 +58,8 @@ public class AdamUserController {
@Autowired @Autowired
IAdamUserInfoService adamUserInfoService; IAdamUserInfoService adamUserInfoService;
@Autowired @Autowired
IAdamUserBusiAcctService adamUserBusiAcctService;
@Autowired
private ShumeiUtil shumeiUtil; private ShumeiUtil shumeiUtil;
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
...@@ -407,6 +409,8 @@ public class AdamUserController { ...@@ -407,6 +409,8 @@ public class AdamUserController {
userProfileVo.setUserInfo(adamRdmService.ratingProvince(userInfoVo).desensitize(reviewUserInfo).rating(userMemberVo)); userProfileVo.setUserInfo(adamRdmService.ratingProvince(userInfoVo).desensitize(reviewUserInfo).rating(userMemberVo));
userProfileVo.setBizAcctVoList(adamRdmService.getBizAcctVosByUid(currentUid));
AdamMemberJoinusVo memberJoinusVo; AdamMemberJoinusVo memberJoinusVo;
if (org.springframework.util.StringUtils.startsWithIgnoreCase(userInfoVo.getQrCode(), "lN")) { if (org.springframework.util.StringUtils.startsWithIgnoreCase(userInfoVo.getQrCode(), "lN")) {
memberJoinusVo = adamRdmService.getMemberJoinusVo(0); memberJoinusVo = adamRdmService.getMemberJoinusVo(0);
...@@ -454,6 +458,39 @@ public class AdamUserController { ...@@ -454,6 +458,39 @@ public class AdamUserController {
} }
} }
@ApiOperationSupport(order = 11)
@ApiOperation(value = "业务账号开通")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "bizCode", value = "业务码[NFT_ZX]", allowableValues = "NFT_ZX"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "name", value = "姓名"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "idCard", value = "身份证号"),
})
@PostMapping(value = "open/account")
public ResponseDto<AdamUserBizAcctVo> openAccount(@Pattern(regexp = "\\b(NFT_ZX)\\b", message = "业务码无效")
@RequestParam String bizCode,
@RequestParam(required = false) String name,
@RequestParam(required = false) String idCard) {
if (StringUtils.isNotBlank(name) && !name.contains("*")) {
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_HANZI, name)) {
return ResponseDto.failure(ErrorMapping.get("10103"));
}
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) {
return ResponseDto.failure(ErrorMapping.get("10104"));
}
}
String currentUid = CurrentUtil.getCurrentUid();
String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE);
try {
return adamUserBusiAcctService.openAccount(currentUid, bizCode, name, idCard, mobile);
} catch (Exception e) {
if (e instanceof LiquidnetServiceException) {
LiquidnetServiceException lsEx = (LiquidnetServiceException) e;
return ResponseDto.failure(lsEx.getCode(), lsEx.getMessage());
}
return ResponseDto.failure(ErrorMapping.get("10113"));
}
}
/* ---------------------------- Internal Method ---------------------------- */ /* ---------------------------- Internal Method ---------------------------- */
private static final String PHP_API_SMS_CODE_VALID = "/smsValidation"; private static final String PHP_API_SMS_CODE_VALID = "/smsValidation";
......
...@@ -161,6 +161,20 @@ public class AdamRdmService { ...@@ -161,6 +161,20 @@ public class AdamRdmService {
redisUtil.del(AdamRedisConst.INFO_USER.concat(uid)); redisUtil.del(AdamRedisConst.INFO_USER.concat(uid));
} }
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <UID, BIZ_ACCT_INFO> */
public List<AdamUserBizAcctVo> getBizAcctVosByUid(String uid) {
return (List<AdamUserBizAcctVo>) redisUtil.get(AdamRedisConst.INFO_BIZ.concat(uid));
}
public boolean addBizAcctVoByUid(String uid, List<AdamUserBizAcctVo> befVos, AdamUserBizAcctVo vo) {
if (null == befVos) {
befVos = ObjectUtil.getAdamUserBizAcctVoArrayList();
}
befVos.add(vo);
return redisUtil.set(AdamRedisConst.INFO_BIZ.concat(uid), befVos);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <UID, REAL_INFO> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <UID, REAL_INFO> */
public boolean setRealInfoVoByUid(String uid, AdamRealInfoVo vo) { public boolean setRealInfoVoByUid(String uid, AdamRealInfoVo vo) {
...@@ -299,8 +313,8 @@ public class AdamRdmService { ...@@ -299,8 +313,8 @@ public class AdamRdmService {
} }
String respStr = IdentityUtils.ali3Meta(name, idCard, mobile); String respStr = IdentityUtils.ali3Meta(name, idCard, mobile);
JsonNode respJNode = JsonUtils.fromJson(respStr, JsonNode.class); JsonNode respJNode = JsonUtils.fromJson(respStr, JsonNode.class);
if (null == respJNode || !"200".equals(String.valueOf(respJNode.get("code"))) if (null == respJNode || !"200".equals(respJNode.get("code").asText())
|| !String.valueOf(respJNode.get("data").get("bizCode")).equals("1")) { || !respJNode.get("data").get("bizCode").asText().equals("1")) {
log.warn("###实名认证失败[{}]", respStr); log.warn("###实名认证失败[{}]", respStr);
this.setCertmetaJunk(1, idCard, name, mobile); this.setCertmetaJunk(1, idCard, name, mobile);
ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10112"); ErrorMapping.ErrorMessage errorMessage = ErrorMapping.get("10112");
......
...@@ -73,4 +73,50 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService { ...@@ -73,4 +73,50 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
); );
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} }
@Override
public void upsert(AdamRealName realName, boolean updateFlg) {
List<Object> paramList = Arrays.asList(
realName.getRealNameId(),
realName.getUid(),
realName.getType(),
realName.getNode(),
realName.getName(),
realName.getIdCard(),
realName.getState(),
realName.getCreatedAt()
);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> initUserRealInfoObjs = CollectionUtil.linkedListObjectArr(),
delUserRealInfoObjs = CollectionUtil.linkedListObjectArr(),
updateUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_real_name.add"));
initUserRealInfoObjs.add(paramList.toArray());
toMqSqls.add(SqlMapping.get("adam_real_name.del"));
if (updateFlg) {
delUserRealInfoObjs.add(new Object[]{realName.getCreatedAt(), realName.getUid()});
}
String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE);
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(mobile);
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.real_name"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
updateUserMobileLocateObjs.add(new Object[]{
realName.getName(), realName.getIdCard(), realName.getCreatedAt(), realName.getUid()
});
}
long s = System.currentTimeMillis();
// queueUtils.sendMsgByRedis(
// MQConst.AdamQueue.SQL_UCENTER.getKey(),
// SqlMapping.get("adam_real_name.add", paramList.toArray())
// );
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.gets(toMqSqls, initUserRealInfoObjs, delUserRealInfoObjs, updateUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
} }
package com.liquidnet.service.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamEnum;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserBusiAcctService;
import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import java.util.List;
import java.util.Optional;
@Slf4j
@Service
public class AdamUserBusiAcctServiceImpl implements IAdamUserBusiAcctService {
@Autowired
AdamRdmService adamRdmService;
@Autowired
IAdamUserService adamUserService;
@Autowired
Environment env;
// @Value("${liquidnet.service.galaxy.url}")// TODO: 2022/3/29 ==zhanggb
// private String sevGalaxyUrl;
@Override
public ResponseDto<AdamUserBizAcctVo> openAccount(String uid, String bizCode, String name, String idCard, String mobile) {
List<AdamUserBizAcctVo> userBizAcctVoList = adamRdmService.getBizAcctVosByUid(uid);
if (!CollectionUtils.isEmpty(userBizAcctVoList)) {
Optional<AdamUserBizAcctVo> optional = userBizAcctVoList.stream().filter(r -> r.getBizCode().equals(bizCode)).findAny();
if (optional.isPresent()) return ResponseDto.success(optional.get());
}
if (AdamEnum.BizAcct.NFT_ZX.name().equals(bizCode)) {
ResponseDto<AdamUserBizAcctVo> responseDto = this.openAccountForNftZXin(uid, name, idCard, mobile);
if (responseDto.isSuccess()) {
adamRdmService.addBizAcctVoByUid(uid, userBizAcctVoList, responseDto.getData());
}
return responseDto;
}
log.error("#开通业务账号:无效的业务码[UID={},bizCode={}]", bizCode, uid);
return ResponseDto.failure();
}
/**
* 数字藏品账号开通-至信链
*
* @param uid
* @param name
* @param idCard
* @param mobile
* @return ResponseDto<AdamUserBizAcctVo>
*/
private ResponseDto<AdamUserBizAcctVo> openAccountForNftZXin(String uid, String name, String idCard, String mobile) {
AdamRealInfoVo realInfoVo = adamRdmService.getRealInfoVoByUid(uid);
if (StringUtils.isBlank(name) || name.contains("*")) {
if (null == realInfoVo) {
return ResponseDto.failure(ErrorMapping.get("10102"));
}
name = realInfoVo.getName();
idCard = realInfoVo.getIdCard();
if (realInfoVo.getNode() != 3) {// 非三要素认证先做认证
adamUserService.identityForUpsert(uid, name, idCard, mobile, true);
}
} else {
if (null == realInfoVo || (3 != realInfoVo.getNode() && !realInfoVo.getName().equals(name) && !realInfoVo.getIdCard().equals(idCard))) {
adamUserService.identityForUpsert(uid, name, idCard, mobile, true);
}
}
LinkedMultiValueMap<String, String> paramsMap = CollectionUtil.linkedMultiValueMapStringString();
paramsMap.add("routerType", "zxinchain");// TODO: 2022/3/29 ==zhanggb
paramsMap.add("userId", uid);
paramsMap.add("idCardType", "1");
paramsMap.add("idCard", idCard);
paramsMap.add("userName", name);
paramsMap.add("mobile", mobile);
// String postUrl = sevGalaxyUrl + "/user/register", blockChainAddress;// TODO: 2022/3/29 ==zhanggb
String postUrl = "https://ENVgalaxy.zhengzai.tv/galaxy/user/register".replace("ENV", env.getProperty(CurrentUtil.CK_ENV_ACTIVE)), blockChainAddress;
try {
LinkedMultiValueMap<String, String> headerMap = CollectionUtil.linkedMultiValueMapStringString();
headerMap.add("Accept", MediaType.APPLICATION_JSON_VALUE);
String postRespStr = HttpUtil.post(postUrl, paramsMap, headerMap);
JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class);
if (null == postRespJNode || !postRespJNode.get("code").asText().equals("0")) {
log.warn("#开通业务账号:至信数字藏品账号开通失败[paramsMap={},postRespStr={}]", paramsMap, postRespStr);
return ResponseDto.failure(ErrorMapping.get("10113"));
}
JsonNode postRespDataJNode = postRespJNode.get("data");
blockChainAddress = postRespDataJNode.get("blockChainAddress").asText();
} catch (Exception e) {
log.error("Ex.开通业务账号:至信数字藏品账号开通请求异常[UID={},url={},paramsMap={}],ex:{}", uid, postUrl, paramsMap, e.getMessage());
return ResponseDto.failure(ErrorMapping.get("10113"));
}
AdamUserBizAcctVo userBizAcctVo = AdamUserBizAcctVo.getNew();
userBizAcctVo.setBizCode(AdamEnum.BizAcct.NFT_ZX.name());
userBizAcctVo.setState(AdamEnum.BizAcctStatus.OPENED.getVal());
userBizAcctVo.setUuid(blockChainAddress);
return ResponseDto.success(userBizAcctVo);
}
}
...@@ -5,6 +5,7 @@ import com.liquidnet.common.cache.redis.util.RedisUtil; ...@@ -5,6 +5,7 @@ import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.third.easemob.util.EasemobUtil; import com.liquidnet.common.third.easemob.util.EasemobUtil;
import com.liquidnet.commons.lang.core.JwtValidator; import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamEnum;
import com.liquidnet.service.adam.dto.AdamUserInfoParam; import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.AdamTagParentVo; import com.liquidnet.service.adam.dto.vo.AdamTagParentVo;
import com.liquidnet.service.adam.dto.vo.AdamTagVo; import com.liquidnet.service.adam.dto.vo.AdamTagVo;
...@@ -227,7 +228,7 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -227,7 +228,7 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
toMqSqls.add(SqlMapping.get("adam_user_busi_acct.add")); toMqSqls.add(SqlMapping.get("adam_user_busi_acct.add"));
if (syncChimeRegisterFlg) { if (syncChimeRegisterFlg) {
initUserBusiAcctObjs.add(new Object[]{ initUserBusiAcctObjs.add(new Object[]{
existUserInfoVo.getUid(), "IMHX", uuid, type, ppwd, 1, existUserInfoVo.getUpdatedAt() existUserInfoVo.getUid(), AdamEnum.BizAcct.IMHX.name(), uuid, type, ppwd, 1, existUserInfoVo.getUpdatedAt()
}); });
} }
log.debug("#SQL.GET耗时:{}ms", System.currentTimeMillis() - s); log.debug("#SQL.GET耗时:{}ms", System.currentTimeMillis() - s);
......
...@@ -453,4 +453,27 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -453,4 +453,27 @@ public class AdamUserServiceImpl implements IAdamUserService {
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
return vo; return vo;
} }
@Override
public AdamRealInfoVo identityForUpsert(String uid, String name, String idCard, String mobile, boolean updateFlg) {
adamRdmService.identityHandler3(name, idCard, mobile);
AdamRealName realName = new AdamRealName();
realName.setRealNameId(IDGenerator.nextSnowId() + "");
realName.setUid(uid);
realName.setType(1);
realName.setNode(3);
realName.setName(name);
realName.setIdCard(idCard);
realName.setState(1);
realName.setCreatedAt(LocalDateTime.now());
adamRealNameService.upsert(realName, updateFlg);
AdamRealInfoVo vo = AdamRealInfoVo.getNew().copy(realName);
long s = System.currentTimeMillis();
adamRdmService.setRealInfoVoByUid(uid, vo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
return vo;
}
} }
...@@ -15,6 +15,7 @@ public class ObjectUtil { ...@@ -15,6 +15,7 @@ public class ObjectUtil {
private static final ArrayList<AdamAddressesVo> adamAddressesVoArrayList = new ArrayList<>(); private static final ArrayList<AdamAddressesVo> adamAddressesVoArrayList = new ArrayList<>();
private static final ArrayList<AdamMemberOrderVo> adamMemberOrderVoArrayList = new ArrayList<>(); private static final ArrayList<AdamMemberOrderVo> adamMemberOrderVoArrayList = new ArrayList<>();
private static final ArrayList<AdamChimeUinfoDto> adamChimeUinfoDtoArrayList = new ArrayList<>(); private static final ArrayList<AdamChimeUinfoDto> adamChimeUinfoDtoArrayList = new ArrayList<>();
private static final ArrayList<AdamUserBizAcctVo> adamUserBizAcctVoArrayList = new ArrayList<>();
private static final PagedResult<AdamCollectVo> adamCollectVoPagedResult = new PagedResult<>(); private static final PagedResult<AdamCollectVo> adamCollectVoPagedResult = new PagedResult<>();
private static final PagedResult<AdamMemberOrderSimpleVo> adamMemberOrderSimpleVoPagedResult = new PagedResult<>(); private static final PagedResult<AdamMemberOrderSimpleVo> adamMemberOrderSimpleVoPagedResult = new PagedResult<>();
...@@ -53,6 +54,10 @@ public class ObjectUtil { ...@@ -53,6 +54,10 @@ public class ObjectUtil {
return (ArrayList<AdamChimeUinfoDto>) adamChimeUinfoDtoArrayList.clone(); return (ArrayList<AdamChimeUinfoDto>) adamChimeUinfoDtoArrayList.clone();
} }
public static ArrayList<AdamUserBizAcctVo> getAdamUserBizAcctVoArrayList() {
return (ArrayList<AdamUserBizAcctVo>) adamUserBizAcctVoArrayList.clone();
}
public static PagedResult<AdamCollectVo> getAdamCollectVoPagedResult() { public static PagedResult<AdamCollectVo> getAdamCollectVoPagedResult() {
return adamCollectVoPagedResult.clone(); return adamCollectVoPagedResult.clone();
} }
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
10110=护照号码不合规 10110=护照号码不合规
10111=军官证号不合规 10111=军官证号不合规
10112=证件信息或手机号不一致 10112=证件信息或手机号不一致
10113=账号开通失败,请联系客服
10200=仅限从未购买过会员的用户使用 10200=仅限从未购买过会员的用户使用
......
...@@ -12,6 +12,7 @@ adam_user_info.update_qr_code=UPDATE adam_user_info SET qr_code=? WHERE uid=? ...@@ -12,6 +12,7 @@ adam_user_info.update_qr_code=UPDATE adam_user_info SET qr_code=? WHERE uid=?
# ---------------------------------------------------- # ----------------------------------------------------
adam_real_name.add=INSERT INTO adam_real_name (real_name_id,`uid`,`type`,`node`,`name`,id_card,`state`,created_at) VALUES (?,?,?,?,?,?,?,?) adam_real_name.add=INSERT INTO adam_real_name (real_name_id,`uid`,`type`,`node`,`name`,id_card,`state`,created_at) VALUES (?,?,?,?,?,?,?,?)
adam_real_name.del=UPDATE adam_real_name SET `state`=2, updated_at=?, comment='三要素认证覆盖' WHERE `uid`=? and `state`=1 and node=2
adam_real_name.close=UPDATE adam_real_name SET `state`=2, updated_at=?, comment='close' WHERE `uid`=? adam_real_name.close=UPDATE adam_real_name SET `state`=2, updated_at=?, comment='close' WHERE `uid`=?
# ---------------------------------------------------- # ----------------------------------------------------
......
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