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

Commit 17db424f authored by 张国柄's avatar 张国柄

+记录用户手机号地域信息;

parent 2dcd1018
......@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.constant;
public class AdamRedisConst {
public static final String PREFIX = "adam:";
public static final String LIB_DICT_LOCATE_MOBILE = PREFIX.concat("lib_dict:locate_mobile:");
public static final String VALID_SMS_CODE_MOBILE = PREFIX.concat("valid:sms:code:mobile");
public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:");
......
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户手机号地域信息
* </p>
*
* @author liquidnet
* @since 2021-10-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamUserMobileLocate implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
private String uid;
/**
* 当前手机号
*/
private String mobile;
/**
* 姓名
*/
private String name;
/**
* 证件号
*/
private String idCard;
/**
* 0-INIT,1-NORMAL,2-INVALID
*/
private Integer state;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 运营商
*/
private String corp;
/**
* 区号
*/
private String areaCode;
/**
* 邮编
*/
private String postCode;
/**
* 注册手机号
*/
private String registMobile;
/**
* 注册IP
*/
private String registAddr;
/**
* 注册来源
*/
private String registSource;
private LocalDateTime registAt;
/**
* 最近登录IP
*/
private String latestAddr;
/**
* 最近登录来源
*/
private String latestSource;
private LocalDateTime latestAt;
private LocalDateTime updatedAt;
private String comment;
}
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamUserMobileLocate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户手机号地域信息 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-10-11
*/
public interface AdamUserMobileLocateMapper extends BaseMapper<AdamUserMobileLocate> {
}
<?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.liquidnet.service.adam.mapper.AdamUserMobileLocateMapper">
</mapper>
......@@ -461,5 +461,34 @@ create table adam_member_code_batch
create index idx_adam_member_code_batch_no on adam_member_code_batch (batch_no);
alter table adam_member_code add batch_no int null comment '~`adam_member_code_batch.batch_no`' after mid;
-- >>------------------------------------------------------------------------------------|20211011手机号地域记录
drop table if exists adam_user_mobile_locate;
create table adam_user_mobile_locate
(
mid bigint unsigned auto_increment primary key,
uid varchar(64) not null,
mobile varchar(30) not null comment '当前手机号',
name varchar(50) comment '姓名',
id_card varchar(50) comment '证件号',
state tinyint comment '0-INIT,1-NORMAL,2-INVALID',
province varchar(50) comment '省份',
city varchar(50) comment '城市',
corp varchar(50) comment '运营商',
area_code varchar(50) comment '区号',
post_code varchar(50) comment '邮编',
regist_mobile varchar(50) comment '注册手机号',
regist_addr varchar(50) comment '注册IP',
regist_source varchar(50) comment '注册来源',
regist_at datetime(3),
latest_addr varchar(50) comment '最近登录IP',
latest_source varchar(50) comment '最近登录来源',
latest_at datetime(3),
updated_at datetime(3),
comment text
) engine = InnoDB comment '用户手机号地域信息';
create unique index uidx_auser_mobile_locate_id on adam_user_mobile_locate (uid);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......@@ -290,7 +290,14 @@ public class AdamUserController {
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) {
return ResponseDto.failure(ErrorMapping.get("10104"));
}
AdamRealInfoVo vo = adamUserService.identity(CurrentUtil.getCurrentUid(), name, idCard);
String currentUid = CurrentUtil.getCurrentUid();
AdamRealInfoVo realInfoVoByUid = adamRdmService.getRealInfoVoByUid(currentUid);
if (null != realInfoVoByUid) {
realInfoVoByUid.setName(SensitizeUtil.chineseName(realInfoVoByUid.getName()));
realInfoVoByUid.setIdCard(SensitizeUtil.custom(realInfoVoByUid.getIdCard(), 3, 2));
return ResponseDto.success(realInfoVoByUid);
}
AdamRealInfoVo vo = adamUserService.identity(currentUid, name, idCard);
vo.setName(SensitizeUtil.chineseName(vo.getName()));
vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2));
return ResponseDto.success(vo);
......
......@@ -41,6 +41,29 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | library of dict for locate by mobile */
/**
* 根据手机前缀(前7位)设置地理区域信息
*
* @param mobilePrefix 手机号(11位)前7位
* @param locateInfo 地理区域信息.eg:"{province}|{city}|{corp}|{areaCode}|{postCode}"
*/
public void setMobileLocateStr(String mobilePrefix, String locateInfo) {
redisUtil.set(AdamRedisConst.LIB_DICT_LOCATE_MOBILE.concat(mobilePrefix), locateInfo);
}
/**
* 根据手机号获取地理区域信息
*
* @param mobile 手机号(11位)
* @return String[]{ province,city,corp,areaCode,postCode }
*/
public String[] getMobileLocateArr(String mobile) {
String locateInfo = (String) redisUtil.get(AdamRedisConst.LIB_DICT_LOCATE_MOBILE.concat(mobile.substring(0, 7)));
return StringUtils.isEmpty(locateInfo) ? null : locateInfo.split("\\|");
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <Mobile, SMS CODE> */
public boolean setSmsCodeByMobile(String mobile, String smsCode) {
......
package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.SqlMapping;
......@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -25,9 +28,9 @@ import java.util.List;
@Service
public class AdamRealNameServiceImpl implements IAdamRealNameService {
@Autowired
RedisUtil redisUtil;
private AdamRdmService adamRdmService;
@Autowired
QueueUtils queueUtils;
private QueueUtils queueUtils;
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
......@@ -41,10 +44,31 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
realName.getState(),
realName.getCreatedAt()
);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> initUserRealInfoObjs = CollectionUtil.linkedListObjectArr(),
updateUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_real_name.add"));
initUserRealInfoObjs.add(paramList.toArray());
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.get("adam_real_name.add", paramList.toArray())
SqlMapping.gets(toMqSqls, initUserRealInfoObjs, updateUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
......
......@@ -187,9 +187,28 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
adamRdmService.setUserInfoVoByUid(uid, beforeUserInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
log.info("LNS_USER_MDF_MOBILE:[UID={},OLD_MOBILE={},NEW_MOBILE={},CLI_IP={},CLI_SOURCE={}]", uid, beforeUserInfoVo.getMobile(), mobile, CurrentUtil.getCliIpAddr(), CurrentUtil.getHeaderCliSource());
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> updateUserInfoObjs = CollectionUtil.linkedListObjectArr(),
updateUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_user.edit.mobile"));
updateUserInfoObjs.add(new Object[]{mobile, now, uid});
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(mobile);
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.modify_mobile"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
updateUserMobileLocateObjs.add(new Object[]{
mobile,
mobileLocateArr[0], mobileLocateArr[1], mobileLocateArr[2], mobileLocateArr[3], mobileLocateArr[4],
now, uid
});
}
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_user.edit.mobile", mobile, now, uid)
SqlMapping.gets(toMqSqls, updateUserInfoObjs, updateUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
......
package com.liquidnet.service.adam.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.constant.AdamConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
......@@ -51,10 +52,6 @@ public class AdamUserServiceImpl implements IAdamUserService {
@Autowired
AdamRdmService adamRdmService;
private static final String PHP_API_REAL_NAME = "/IdCardCheckVerification";
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public AdamUserInfoVo register(String mobile) {
......@@ -83,16 +80,29 @@ public class AdamUserServiceImpl implements IAdamUserService {
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> initUserObjs = CollectionUtil.linkedListObjectArr(),
initUserInfoObjs = CollectionUtil.linkedListObjectArr();
initUserInfoObjs = CollectionUtil.linkedListObjectArr(),
initUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_user.add"));
initUserObjs.add(new Object[]{userInfoVo.getUid(), userInfoVo.getMobile(), userInfoVo.getState(), 0, now});
toMqSqls.add(SqlMapping.get("adam_user_info.add"));
initUserInfoObjs.add(new Object[]{userInfoVo.getUid(), userInfoVo.getNickname(), null, userInfoVo.getQrCode()});
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(mobile);
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.add"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
String cliIpAddr = CurrentUtil.getCliIpAddr();
String headerCliSource = CurrentUtil.getHeaderCliSource();
initUserMobileLocateObjs.add(new Object[]{
userInfoVo.getUid(), mobile, 1,
mobileLocateArr[0], mobileLocateArr[1], mobileLocateArr[2], mobileLocateArr[3], mobileLocateArr[4],
cliIpAddr, headerCliSource, now, cliIpAddr, headerCliSource, now, now
});
}
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UREGISTER.getKey(),
SqlMapping.gets(toMqSqls, initUserObjs, initUserInfoObjs)
SqlMapping.gets(toMqSqls, initUserObjs, initUserInfoObjs, initUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
return userInfoVo;
......@@ -110,7 +120,8 @@ public class AdamUserServiceImpl implements IAdamUserService {
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> initUserObjs = CollectionUtil.linkedListObjectArr(),
initUserInfoObjs = CollectionUtil.linkedListObjectArr(),
initThirdPartObjs = CollectionUtil.linkedListObjectArr();
initThirdPartObjs = CollectionUtil.linkedListObjectArr(),
initUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
if (StringUtils.isEmpty(uid)) {// 不存在UID,手机号未注册
userInfoVo = AdamUserInfoVo.getNew();
......@@ -145,9 +156,21 @@ public class AdamUserServiceImpl implements IAdamUserService {
adamRdmService.setUidByMobile(param.getMobile(), thirdPartInfoVo.getUid());
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(param.getMobile());
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.add"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
String cliIpAddr = CurrentUtil.getCliIpAddr();
String headerCliSource = CurrentUtil.getHeaderCliSource();
initUserMobileLocateObjs.add(new Object[]{
userInfoVo.getUid(), userInfoVo.getMobile(), 1,
mobileLocateArr[0], mobileLocateArr[1], mobileLocateArr[2], mobileLocateArr[3], mobileLocateArr[4],
cliIpAddr, headerCliSource, now, cliIpAddr, headerCliSource, now, now
});
}
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UREGISTER.getKey(),
SqlMapping.gets(toMqSqls, initUserObjs, initUserInfoObjs, initThirdPartObjs)
SqlMapping.gets(toMqSqls, initUserObjs, initUserInfoObjs, initThirdPartObjs, initUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
......@@ -273,8 +296,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
objsThirdPart = CollectionUtil.linkedListObjectArr(),
objsUserMember = CollectionUtil.linkedListObjectArr(),
objsRealInfo = CollectionUtil.linkedListObjectArr(),
objsAddresses = CollectionUtil.linkedListObjectArr(),
objsEnters = CollectionUtil.linkedListObjectArr(),
objsAddresses = CollectionUtil.linkedListObjectArr();
objsMobileLocate = CollectionUtil.linkedListObjectArr();
long s = System.currentTimeMillis();
// AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
......@@ -360,10 +384,14 @@ public class AdamUserServiceImpl implements IAdamUserService {
toMqSqls.add(SqlMapping.get("adam_enters.close"));
objsEnters.add(new Object[]{now, now, uid});
/* ---------------------- 用户手机地域信息 */
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.close"));
objsMobileLocate.add(new Object[]{now, uid});
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.gets(toMqSqls, objsUser, objsThirdPart, objsUserMember, objsRealInfo, objsAddresses, objsEnters)
SqlMapping.gets(toMqSqls, objsUser, objsThirdPart, objsUserMember, objsRealInfo, objsAddresses, objsEnters, objsMobileLocate)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
......@@ -389,7 +417,6 @@ public class AdamUserServiceImpl implements IAdamUserService {
// }
adamRdmService.identityHandler1(uid, name, idCard);
AdamRealName realName = new AdamRealName();
realName.setRealNameId(IDGenerator.nextSnowId() + "");
realName.setUid(uid);
......
......@@ -65,9 +65,11 @@ candy_mgt_coupon.add_for_member=INSERT INTO candy_mgt_coupon (mcoupon_id, coupon
# ----------------------------------------------------
adam_user_busi_acct.add=INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
# ----------------------------------------------------
adam_user_mobile_locate.add=INSERT INTO adam_user_mobile_locate (`uid`, mobile, `state`, province, city, corp, area_code, post_code, regist_mobile, regist_addr, regist_source, regist_at, latest_addr, latest_source, latest_at, updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
adam_user_mobile_locate.modify_mobile=UPDATE adam_user_mobile_locate SET mobile=?, province=?, city=?, corp=?, area_code=?, post_code=?, updated_at=? WHERE uid=? AND `state`=1
adam_user_mobile_locate.real_name=UPDATE adam_user_mobile_locate SET name=?, id_card=?, updated_at=? WHERE uid=? AND `state`=1
adam_user_mobile_locate.close=UPDATE adam_user_mobile_locate SET `state`=2, updated_at=? WHERE uid=? AND `state`=1
# ----------------------------------------------------
......
......@@ -33,6 +33,7 @@ public class TestAdam {
"adam:info:member:simple",
"adam:info:member:category:1",
"adam:info:member:agreement",
"adam:info:member:rights:1",
"adam:info:member:rights:v:1",
"adam:info:tags:music",
......
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