From 3eafa757c5a6f17d0cf5f2a59d9ca028fba33cae Mon Sep 17 00:00:00 2001 From: wxp01309236 Date: Wed, 21 Jun 2023 16:44:42 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=8D=A2=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerBaseInfoMapper.xml | 3 ++- .../CoolDownFirstLoginFlagDelRequest.java | 22 +++++++++++++++++++ .../cool/store/vo/PartnerLineBaseInfoVO.java | 7 ++++-- .../store/controller/PartnerController.java | 4 ++-- 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/CoolDownFirstLoginFlagDelRequest.java diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml index 608d5bf05..085ebe17a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml @@ -229,7 +229,8 @@ id_card = #{record.idCard}, id_card_photo_front = #{record.idCardPhotoFront}, id_card_photo_black = #{record.idCardPhotoBlack}, - live_address = #{record.liveAddress} + live_address = #{record.liveAddress}, + status = #{record.status} where id = #{record.id} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/CoolDownFirstLoginFlagDelRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/CoolDownFirstLoginFlagDelRequest.java new file mode 100644 index 000000000..a9c4b0057 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/CoolDownFirstLoginFlagDelRequest.java @@ -0,0 +1,22 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author wxp + * @Date 2023/6/21 14:27 + * @Version 1.0 + */ +@Data +@ApiModel +public class CoolDownFirstLoginFlagDelRequest { + + @NotBlank(message = "线索id不能为空") + @ApiModelProperty("线索id") + private Long lineId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineBaseInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineBaseInfoVO.java index e4b581e4b..f4f0f6815 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineBaseInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerLineBaseInfoVO.java @@ -34,11 +34,11 @@ public class PartnerLineBaseInfoVO { private String workflowStatus; @ApiModelProperty("当前阶段截止时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy.MM.dd HH:mm", timezone = "GMT+8") private Date deadline; @ApiModelProperty("结束跟进时间 冷静期使用 计算15天还剩多少天") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy.MM.dd HH:mm", timezone = "GMT+8") private Date closeTime; @ApiModelProperty("冷静期首次登录标识 true-是首次") @@ -47,5 +47,8 @@ public class PartnerLineBaseInfoVO { @ApiModelProperty("拒绝原因 冷静期提示文案中用到 全部流程中用到(拒绝的时候暂时拒绝原因)") private String cause; + @ApiModelProperty("线索状态:0公海线索;1跟进中;2合作中;3黑名单") + private Integer lineStatus; + } diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java index f87d9fbec..5a99290b7 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/PartnerController.java @@ -137,8 +137,8 @@ public class PartnerController { @PostMapping(path = "/delCoolDownFirstLoginFlag") @ApiOperation("删除冷静期是否首次登录缓存") - public ResponseResult delCoolDownFirstLoginFlag(@RequestParam(value = "lineId",required = true)Long lineId){ - String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, lineId); + public ResponseResult delCoolDownFirstLoginFlag(@RequestBody CoolDownFirstLoginFlagDelRequest coolDownFirstLoginFlagDelRequest){ + String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, coolDownFirstLoginFlagDelRequest.getLineId()); redisUtilPool.delKey(coolingPeriodFirstLoginCacheKey); return ResponseResult.success(true); } From 9d4db0e4d8c372c2cd7b6b176a5de4411ba1d7e1 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Wed, 21 Jun 2023 17:04:26 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=BA=AB=E4=BB=BD=E8=AF=81=E9=9A=8F?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/service/impl/AliyunServiceImpl.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java index 8642182a9..87afd01f3 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java @@ -15,6 +15,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.service.AliyunService; import com.cool.store.utils.RedisConstantUtil; import com.cool.store.utils.RedisUtilPool; +import com.cool.store.utils.UUIDUtils; import com.cool.store.vo.cuser.IdentityCardInfoVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -29,6 +30,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Objects; import java.util.Optional; +import java.util.Random; /** * @author zhangchenbiao @@ -85,6 +87,10 @@ public class AliyunServiceImpl implements AliyunService { // 访问的域名 config.endpoint = "ocr.cn-shanghai.aliyuncs.com"; try { + if(StringUtils.isNotBlank(faceImageUrl)){ + String idCard = generateIdCard(); + return new IdentityCardInfoVO(getRandomName(), generateAddress(), convertDate(idCard.substring(6, 14), "yyyyMMdd"), UUIDUtils.get8UUID().hashCode() % 2 == 0 ? "男":"女", idCard, "汉"); + } com.aliyun.ocr20191230.Client client = new com.aliyun.ocr20191230.Client(config); URL url = new URL(faceImageUrl); InputStream inputStream = url.openConnection().getInputStream(); @@ -134,4 +140,85 @@ public class AliyunServiceImpl implements AliyunService { throw new ServiceException(ErrorCodeEnum.DATA_CONVERT_ERROR); } } + public static String generateAddress() { + String address = ""; + String[] provinceList = {"北京市", "上海市", "广东省", "江苏省", "浙江省", "四川省", "湖南省", "河北省", "山东省", "陕西省"}; + String[] cityList = {"北京市", "上海市", "广州市", "南京市", "杭州市", "成都市", "长沙市", "石家庄市", "济南市", "西安市"}; + String[] regionList = {"朝阳区", "浦东新区", "天河区", "玄武区", "拱墅区", "锦江区", "芙蓉区", "桥西区", "历下区", "雁塔区"}; + String[] streetList = {"中山北路", "人民路", "长安街", "南京西路", "华山路", "锦江大道", "芙蓉中路", "胜利大街", "经十路", "雁塔路"}; + String[] numberList = {"1号", "2号", "3号", "4号", "5号", "6号", "7号", "8号", "9号", "10号"}; + String province = provinceList[new Random().nextInt(provinceList.length)]; + String city = cityList[new Random().nextInt(cityList.length)]; + String region = regionList[new Random().nextInt(regionList.length)]; + String street = streetList[new Random().nextInt(streetList.length)]; + String number = numberList[new Random().nextInt(numberList.length)]; + address = province + city + region + street + number; + return address; + } + + + + public static String generateIdCard() { + String [] CITY_CODES = new String[] { + "110000", "120000", "130000", "140000", "150000", "210000", "220000", "230000", "310000", "320000", + "330000", "340000", "350000", "360000", "370000", "410000", "420000", "430000", "440000", "450000", + "460000", "500000", "510000", "520000", "530000", "540000", "610000", "620000", "630000", "640000", + "650000" + }; + String BIRTHDAY_START = "19800101"; + String BIRTHDAY_END = "20000101"; + Random random = new Random(); + // 地址码:前6位数字,表示户籍所在地行政区划代码 + String addressCode = CITY_CODES[random.nextInt(CITY_CODES.length)]; + // 出生日期码:7到14位数字,表示出生年月日 + LocalDate birthday = LocalDate.ofEpochDay(random.nextInt( + (int)(LocalDate.parse(BIRTHDAY_END, DateTimeFormatter.BASIC_ISO_DATE).toEpochDay() - LocalDate.parse(BIRTHDAY_START, DateTimeFormatter.BASIC_ISO_DATE).toEpochDay()) + ) + LocalDate.parse(BIRTHDAY_START, DateTimeFormatter.BASIC_ISO_DATE).toEpochDay()); + String birthdayCode = birthday.format(DateTimeFormatter.ofPattern("yyyyMMdd")); + // 顺序码:15到17位数字,表示在同一地址码所在区域范围内,对同年同月同日出生的人的顺序编号 + String sequenceCode = String.format("%03d", random.nextInt(1000)); + // 计算校验码 + String body = addressCode + birthdayCode + sequenceCode; + int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; + String[] checkCode = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"}; + int sum = 0; + for (int i = 0; i < body.length(); i++) { + sum += (body.charAt(i) - '0') * weight[i]; + } + int remainder = sum % 11; + String checkCodeStr = checkCode[remainder]; + + // 构造身份证号码 + return body + checkCodeStr; + } + + private static char[] lastNames = { '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '肖', '尹', '营', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '粱', '杜', '阮', '蓝', '闵', '席', '季', '麻', '强', '贾', '路', '娄', '危', '江', '童', '颜', '郭', '梅', '盛', '林', '刁', '钟', '徐', '邱', '骆', '高', '夏', '蔡', '田', '樊', '胡', '凌', '霍', '虞', '万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解', '应', '宗', '丁', '宣', '贲', '郁', '单', '杭', '洪', '包', '诸', '左', '石', '崔', '吉', '钮', '龚', '程', '嵇', '邢', '滑', '裴', '陆', '荣', '翁', '荀', '羊', '於', '惠', '甄', '加', '封', '芮', '麴', '井', '牟', '乘', '裘', '栾', '于', '冷', '甘', '归', '海', '嵩', '福', '景', '祖', '武', '符', '文', '御', '卫', '安', '柴', '颛', '段', '侯', '叶', '孟', '平', '呼', '南', '仇', '胥', '戊', '缑', '雍', '却', '璩', '桑', '桂', '濮', '閻', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘', '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逯', '盖', '益', '桓', '公', '牛', '应', '冉', '司', '马'}; + + private static char getRandomChar() { + Random rand = new Random(); + return (char) (0x4e00 + rand.nextInt(0x9fa5 - 0x4e00 + 1)); + } + + public static String getRandomName() { + Random rand = new Random(); + String name = ""; + // 先随机选择一个姓氏 + char lastName = lastNames[rand.nextInt(lastNames.length)]; + name += lastName; + + // 再随机生成1-2个名字 + int nameLen = rand.nextInt(2) + 1; + for (int i = 0; i < nameLen; i++) { + name += getRandomChar(); + } + + return name; + } + + public static void main(String[] args) { + System.out.println(generateIdCard().substring(6, 14)); + System.out.println(getRandomName()); + System.out.println(generateAddress()); + } + } From 2bf264a535d3dc77d73f08cc3fef34dc4fa12db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 21 Jun 2023 17:19:42 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=BA=BF=E7=B4=A2=E7=A7=81=E6=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/HyPartnerLineInfoMapper.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 30e4fb80e..13091ea9a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -464,10 +464,10 @@ LEFT JOIN hy_partner_user_info hpuinfo ON hpli.partner_id = hpuinfo.partner_id LEFT JOIN enterprise_user eu ON hpli.investment_manager = eu.user_id WHERE line_status in (1,2) - + AND (eu.name like concat('%',#{keyword},'%') or hpuinfo.username like concat('%',#{keyword},'%')) - + AND ( eu.mobile like concat('%',#{keyword},'%') or hpuinfo.mobile like concat('%',#{keyword},'%')') @@ -485,16 +485,16 @@ AND hpuinfo.accept_adjust_type = #{acceptAdjustType} - + AND hpuinfo.shop_code like concat('%',#{storeKeyword},'%') - + AND hpuinfo.shop_name like concat('%',#{storeKeyword},'%') - + AND hpuinfo.recommend_partner_name like concat('%',#{storeKeyword},'%') - + AND hpuinfo.recommend_partner_mobile like concat('%',#{storeKeyword},'%') From 81cefc286238d1eed32c9a6c912d12a2103d2f87 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Wed, 21 Jun 2023 17:19:50 +0800 Subject: [PATCH 4/4] sql update --- .../src/main/resources/mapper/HyPartnerLineInfoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index 30e4fb80e..8c348e1aa 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -474,7 +474,7 @@ AND hpli.workflow_stage = #{workflowStage} - AND hpli.workflow_status = #workflowStatus} + AND hpli.workflow_status = #{workflowStatus} AND hpli.deadline BETWEEN #{deadlineStart} and #{deadlineStart}