Commit cfb9d374 authored by 郝彦辉's avatar 郝彦辉

黑灰名单2020.04.20

parent 4e773793
......@@ -49,6 +49,66 @@ public class ConstantBlackGrey {
") AS page USING(r_id); ";
//现金分期在逾转已还清
public static String XYQB_QUERY_XIANJINDAI_IS_PAYOFF = "select count(distinct a.user_id) in_overdue " +
" from repayment_plan a " +
" left join loan_application_manifest_history b " +
" on a.loan_application_history_id=b.loan_application_history_id " +
" left join user c on a.user_id=c.id " +
" where c.uuid=? " +
" and b.transaction_status in (2,5) " +
" and a.repayment_status not in (3,4) and a.deadline<=CURDATE(); ";
//白条在逾转已还清
public static String XYQB_QUERY_BAITIAO_IS_PAYOFF = "select count(distinct a.user_id) in_overdue " +
" from baitiao_repayment_plan a " +
" left join baitiao_order b on a.order_id=b.id " +
" left join user c on a.user_id=c.id " +
" where c.uuid=? " +
" and b.status=1 " +
" and a.repayment_status not in (3,4) and a.deadline<CURDATE(); ";
//VCC在逾转已还清
public static String XYQB_QUERY_VCC_IS_PAYOFF = "select count(distinct a.user_id) in_overdue " +
" from acs_plan a " +
" left join acs_trans b on a.trans_id = b.id " +
" where a.plan_status ='Overdue' " +
" and b.trans_type in ('Shop','Loan') " +
" and b.trans_status = 'Complete' " +
" and a.user_id=?;";
//查询黑名单-现金分期-最大逾期天数
public static String XYQB_QUERY_XIANJINDAI_OVERDUE_DAYS = " select max(if(repayment_status=3,DATEDIFF(repaid_at,deadline)+1,DATEDIFF(CURDATE(),deadline)+1)) max_overdue_days " +
" ,sum(if(repayment_status=3,DATEDIFF(repaid_at,deadline)+1,DATEDIFF(CURDATE(),deadline)+1)) total_overdue_days " +
" from repayment_plan a " +
" left join user b on a.user_id=b.id " +
" left join loan_application_manifest_history c on a.loan_application_history_id=c.loan_application_history_id " +
" where c.transaction_status in (2,5) " +
" and deadline<=CURDATE() " +
" and (repayment_status not in (3,4) or (repayment_status=3 and repaid_at>=deadline)) " +
" and b.uuid =?; ";
//查询黑名单-白条-最大逾期天数
public static String XYQB_QUERY_BAITIAO_OVERDUE_DAYS = " select max(if(repayment_status=3,DATEDIFF(repaid_at,deadline),DATEDIFF(CURDATE(),deadline))) max_overdue_days " +
" ,sum(if(repayment_status=3,DATEDIFF(repaid_at,deadline),DATEDIFF(CURDATE(),deadline))) total_overdue_days " +
" from baitiao_repayment_plan a " +
" left join baitiao_order b on a.order_id=b.id " +
" left join user c on a.user_id=c.id " +
" where b.status=1 " +
" and deadline<CURDATE() " +
" and (repayment_status <>3 or (repayment_status=3 and repaid_at>=deadline)) " +
" and c.uuid=?;";
//查询黑名单-VCC-最大逾期天数
public static String XYQB_QUERY_VCC_OVERDUE_DAYS = "select max(if(plan_status ='Finish',DATEDIFF(paid_off_date,repay_date),DATEDIFF(CURDATE(),repay_date))) max_overdue_days " +
" ,sum(if(plan_status ='Finish',DATEDIFF(paid_off_date,repay_date),DATEDIFF(CURDATE(),repay_date))) total_overdue_days " +
" from acs_plan a " +
" left join acs_trans b on a.trans_id = b.id " +
" where b.trans_type in ('Shop','Loan') " +
" and b.trans_status = 'Complete' " +
" and a.repay_date<CURDATE() " +
" and (plan_status <>'Finish' or (plan_status ='Finish' and paid_off_date>repay_date)) " +
" and a.user_id=?; ";
public static String BLACK_LIST_NEW_QUERY_THIRD_PART_BLACK_LIST_CONFIG_SQL = "select * from third_part_black_list_config where status = true;";
......@@ -96,29 +156,9 @@ public class ConstantBlackGrey {
}
public static class BATCH_TYPE {
public static final String BATCH_PHONES_MONTH = "BATCH_PHONES_MONTH";
public static final String BATCH_IDCARDS_MONTH = "BATCH_IDCARDS_MONTH";
public static final String BATCH_PHONES_DAYS = "BATCH_PHONES_DAYS";
public static final String BATCH_IDCARDS_DAYS = "BATCH_IDCARDS_DAYS";
public static final String BATCH_UPDATE_OVERDUE_DAYS = "BATCH_UPDATE_OVERDUE_DAYS";
/** 手动批量更新phone_no_md5,id_no_md5字段*/
public static final String BATCH_PHONESMD5_AND_IDNOMD5_MANUAL = "BATCH_PHONESMD5_AND_IDNOMD5_MANUAL";
}
public static class PARAM {
public static final String USER_ID = "user_id";
public static final String TOTAL_OVERDUE_DAYS= "total_overdue_days";
public static final String MAX_OVERDUE_DAYS= "max_overdue_days";
public static final String BLACK_LIST_LEVEL_D1 = "D1";
public static final String BLACK_LIST_LEVEL_D2 = "D2";
public static final String BLACK_LIST_LEVEL_D3 = "D3";
public static final String BLACK_LIST_LEVEL_A2 = "A2";
public static final String BLACK_LIST_LEVEL_A3 = "A3";
public static final String BLACK_LIST_MAJAOR = "3";
public static final String BLACK_LIST_THIRD_PART = "BLACK_LIST_THIRD_PART";
public static final String BLACK_LIST_INNER_PART = "BLACK_LIST_INNER_PART";
public static final String[] BLACK_LIST_TYPES = {"1","2","10"};
}
......
package cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
......@@ -66,34 +65,34 @@ public class BlackGreyListResult implements Serializable {
return typesSet;
}
public static List<Reasons> reasonsToList(String oldJsonStr, String newReason, String newType){
List<Reasons> reasonList = null;
public static List<ReasonsVo> reasonsToList(String oldJsonStr, String newReason, String newType){
List<ReasonsVo> reasonList = null;
try {
if(StringUtils.isNotEmpty(oldJsonStr)) {
reasonList = JSONArray.parseArray(oldJsonStr, Reasons.class);
reasonList = JSONArray.parseArray(oldJsonStr, ReasonsVo.class);
}
}catch (Exception e){
e.printStackTrace();
}
if(reasonList==null){
reasonList = new ArrayList<Reasons>();
reasonList = new ArrayList<ReasonsVo>();
}
int size = reasonList.size();
if(size>=2){
Reasons back1 = reasonList.get(0);
ReasonsVo back1 = reasonList.get(0);
for(int i=1; i < size; i++){
Reasons tmp2 = reasonList.get(i);
ReasonsVo tmp2 = reasonList.get(i);
if(back1.getUtcTime() <= tmp2.getUtcTime()){
back1 = tmp2;
}
}
reasonList = new ArrayList<Reasons>();
reasonList = new ArrayList<ReasonsVo>();
reasonList.add(back1);
}
Reasons newObj = new Reasons();
ReasonsVo newObj = new ReasonsVo();
newObj.setReason(newReason);
newObj.setType(newType);
newObj.setUtcTime(System.currentTimeMillis());
......
package cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* -----------------------------------------------------------------------------<br>
* 类描述: black_grey_list_result join black_grey_list_details表实体 <br>
* 创建人: yanhui.Hao <br>
* 创建时间: 2020.04.14 20:43 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Data
public class BlackGreyListRjoinDVo implements Serializable {
private static final long serialVersionUID = 3504867579864272343L;
private Long id;
private String rId;
private String name;
private String phoneNo;
private String idNo;
private String type; //原始黑名单来源。1~99:QG黑名单(1:现金贷,2:白条,3:去哪儿,4:法院黑名单,5:线下黑名单,6新氧黑名单,8手机套现黑名单,9.环球黑卡套现,10.vcc逾期黑名单,11恶意投诉客户);101~199:P2P黑名单(101:p2p黑名单,102:weshare黑名单,103:芝麻行业关注名单,104:其他小贷黑名单,105-企美提供黑名单,106-拿下分期黑名单);201~299:机构黑名单(201-black_bank,202-black_kaola,203-black_car,204-前海黑名单,205-华融黑名单,206-人人信黑名单,207-同盾黑名单,208-大锤黑名单,209-国美黑名单,210-美借,211-快金,212-米么,213-手机贷,214-拍拍贷,215-掌众(闪电借款),216-向前贷(明特量化),217-齐立欣提供小贷渠道1,218-致诚阿福黑名单,219-算话黑名单);301~399:其他黑名单(301:black_dispute);401~499:白条黑名单(401:白条套现);501-马上闹事群众
private String reasonCode;//加入黑名单原因。1现金分期逾期大于15天,且仍然在逾;2.vcc逾期大于15天,且仍然在逾。;3.白条在逾;4.恶意投诉客户;
private String maxOverdueDays;
private String totalOverdueDays;
private int status; //状态 0:正常有效的; -1:由灰名单进入黑名单(无效,逻辑删除的); -2:由黑名单进入灰名单(无效,逻辑删除的); 10:当前在黑名单,并且该条数据逾期已还清的
private String remark;
@JsonIgnore
private Timestamp createdAt;
@JsonIgnore
private Timestamp updatedAt;
private String uuid;
/**phoneNo md5加密*/
private String phoneNoMd5;
/**idNo md5加密*/
private String idNoMd5;
private String blackType;
private String types;
private String reasons;
}
package cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* -----------------------------------------------------------------------------<br>
* 类描述: black_grey_list_details更新update实体 <br>
* 创建人: yanhui.Hao <br>
* 创建时间: 2020.04.14 20:43 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Data
public class DetailsUpdate implements Serializable {
private static final long serialVersionUID = 3504867579864272343L;
private Long id;
private String rId;
private String name;
private String phoneNo;
private String idNo;
private String type; //原始黑名单来源。1~99:QG黑名单(1:现金贷,2:白条,3:去哪儿,4:法院黑名单,5:线下黑名单,6新氧黑名单,8手机套现黑名单,9.环球黑卡套现,10.vcc逾期黑名单,11恶意投诉客户);101~199:P2P黑名单(101:p2p黑名单,102:weshare黑名单,103:芝麻行业关注名单,104:其他小贷黑名单,105-企美提供黑名单,106-拿下分期黑名单);201~299:机构黑名单(201-black_bank,202-black_kaola,203-black_car,204-前海黑名单,205-华融黑名单,206-人人信黑名单,207-同盾黑名单,208-大锤黑名单,209-国美黑名单,210-美借,211-快金,212-米么,213-手机贷,214-拍拍贷,215-掌众(闪电借款),216-向前贷(明特量化),217-齐立欣提供小贷渠道1,218-致诚阿福黑名单,219-算话黑名单);301~399:其他黑名单(301:black_dispute);401~499:白条黑名单(401:白条套现);501-马上闹事群众
private String reasonCode;//加入黑名单原因。1现金分期逾期大于15天,且仍然在逾;2.vcc逾期大于15天,且仍然在逾。;3.白条在逾;4.恶意投诉客户;
private String maxOverdueDays;
private String totalOverdueDays;
private int status; //状态 0:正常有效的; -1:由灰名单进入黑名单(无效,逻辑删除的); -2:由黑名单进入灰名单(无效,逻辑删除的); 10:当前在黑名单,并且该条数据逾期已还清的
private String remark;
@JsonIgnore
private Timestamp createdAt;
@JsonIgnore
private Timestamp updatedAt;
private Integer wEqStatus; //where条件
private List<Integer> wInStatus; //where条件
private String wEqType;//where条件
private List<String> wInType;//where条件
}
package cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist;
import lombok.Data;
import java.io.Serializable;
/**
* -----------------------------------------------------------------------------<br>
* 类描述: 逾期天数 <br>
* 创建人: yanhui.Hao <br>
* 创建时间: 2020.04.14 20:57 <br>
* 公司: 北京众信利民信息技术有限公司 <br>
* -----------------------------------------------------------------------------
*/
@Data
public class OverdueDaysVo implements Serializable {
private String uuid;
private String userId;
private String maxOverdueDays;
private String totalOverdueDays;
}
......@@ -16,7 +16,7 @@ import java.sql.Timestamp;
* -----------------------------------------------------------------------------
*/
@Data
public class Reasons implements Serializable {
public class ReasonsVo implements Serializable {
private String type;
private String reason;
......
package cn.quantgroup.qgblservice.repository.mybatis.mapper.blacklist;
import cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListDetails;
import cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListQueryVo;
import cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListResult;
import cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.*;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -21,13 +19,17 @@ public interface BlackGreyListMapper {
BlackGreyListResult findBGLResultByRid(String rId);
List<BlackGreyListResult> findBlackGreyListResultByParam(BlackGreyListQueryVo queryParams);
//通过三要素查询
//通过三要素精确查询
List<BlackGreyListResult> findBlackGreyListResultBy3YS(BlackGreyListQueryVo queryParams);
List<BlackGreyListDetails> findBlackGreyListDetails(BlackGreyListQueryVo queryParams);
//通过三要素精确查询
List<BlackGreyListDetails> findBlackGreyListDetailsBy3YS(BlackGreyListQueryVo queryParams);
//结果表和明细表关联查询
List<BlackGreyListRjoinDVo> findBlackGreyListRjoinD(BlackGreyListQueryVo queryParams);
int insertBlackGreyListResult(BlackGreyListResult result);
......@@ -36,6 +38,10 @@ public interface BlackGreyListMapper {
int updateBlackGreyListResult(BlackGreyListResult params);
int updateDetailsStatus(BlackGreyListDetails params);
int updateDetailsStatusByparams(DetailsUpdate params);
int updateDetailOverdueDayById(DetailsUpdate params);
}
......@@ -34,6 +34,32 @@
<result column="updatedAt" jdbcType="TIMESTAMP" property="updated_at"/>
</resultMap>
<resultMap id="BlackGreyListRjoinDVoMap" type="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListRjoinDVo">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="rId" jdbcType="VARCHAR" property="r_id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="phoneNo" jdbcType="VARCHAR" property="phone_no"/>
<result column="idNo" jdbcType="VARCHAR" property="id_no"/>
<result column="type" jdbcType="VARCHAR" property="type"/>
<result column="reasonCode" jdbcType="VARCHAR" property="reason_code"/>
<result column="totalOverdueDays" jdbcType="VARCHAR" property="total_overdue_days"/>
<result column="maxOverdueDays" jdbcType="VARCHAR" property="max_overdue_days"/>
<result column="status" jdbcType="INTEGER" property="status"/>
<result column="remark" jdbcType="VARCHAR" property="remark"/>
<result column="createdAt" jdbcType="TIMESTAMP" property="created_at"/>
<result column="updatedAt" jdbcType="TIMESTAMP" property="updated_at"/>
<result column="uuid" jdbcType="VARCHAR" property="uuid"/>
<result column="blackType" jdbcType="VARCHAR" property="black_type"/>
<result column="types" jdbcType="VARCHAR" property="types"/>
<result column="reasons" jdbcType="VARCHAR" property="reasons"/>
<result column="phoneNoMd5" jdbcType="VARCHAR" property="phone_no_md5"/>
<result column="idNoMd5" jdbcType="VARCHAR" property="id_no_md5"/>
</resultMap>
<select id="findBGLResultByRid" parameterType="java.lang.String" resultMap="BlackGreyListResultMap">
select * from black_grey_list_result where r_id = #{rId, jdbcType=VARCHAR} ;
......@@ -119,12 +145,76 @@
</if>
<if test="status != null">
and type = #{status,jdbcType=INTEGER}
and status = #{status,jdbcType=INTEGER}
</if>
</trim>
</select>
<select id="findBlackGreyListDetailsBy3YS" parameterType="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListQueryVo" resultMap="BlackGreyListDetailsMap">
select * from black_grey_list_details
where
<choose>
<when test = "phoneNo == null">
phone_no is NULL
</when>
<otherwise>
phone_no = #{phoneNo,jdbcType=VARCHAR}
</otherwise>
</choose>
<choose>
<when test = "name == null">
and name is NULL
</when>
<otherwise>
and name = #{name,jdbcType=VARCHAR}
</otherwise>
</choose>
<choose>
<when test = "idNo == null">
and id_no is NULL
</when>
<otherwise>
and id_no = #{idNo,jdbcType=VARCHAR}
</otherwise>
</choose>
<if test="type != null">
and type = #{type,jdbcType=VARCHAR}
</if>
<if test="status != null">
and status = #{status,jdbcType=INTEGER}
</if>
</select>
<select id="findBlackGreyListRjoinD" parameterType="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListRjoinDVo" resultMap="BlackGreyListRjoinDVoMap">
select r.r_id , r.uuid, r.`name`, r.phone_no, r.id_no, r.black_type, r.types,
d.id, d.type, d.reason_code, d.max_overdue_days, d.total_overdue_days, d.`status`, d.remark, d.created_at, d.updated_at
from black_grey_list_result r
join black_grey_list_details d on r.r_id=d.r_id
where
r.r_id = #{rId,jdbcType=VARCHAR}
<if test="type != null">
and d.type = #{type,jdbcType=VARCHAR}
</if>
<if test="status != null">
and d.status = #{status,jdbcType=INTEGER}
</if>
<!--<trim prefix="where" prefixOverrides="and">
<if test="phoneNo != null">
and r.phone_no = #{phoneNo,jdbcType=VARCHAR}
</if>
<if test="name != null">
and r.name = #{name,jdbcType=VARCHAR}
</if>
<if test="idNo != null">
and r.id_no = #{idNo,jdbcType=VARCHAR}
</if>
</trim>-->
</select>
<insert id="insertBlackGreyListResult"
......@@ -175,13 +265,42 @@
</set>
</update>
<update id="updateDetailsStatus" parameterType="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.BlackGreyListDetails">
<update id="updateDetailsStatusByparams" parameterType="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.DetailsUpdate">
/*update black_grey_list_details set status = ?, updated_at = ? where r_id = ? AND status =10 AND type IN ('1','2','10')*/
update black_grey_list_details
set status = #{status,jdbcType=INTEGER}, updated_at = #{updatedAt,jdbcType=VARCHAR}
where
r_id = #{rId,jdbcType=VARCHAR} AND status=0 ;
r_id = #{rId,jdbcType=VARCHAR}
<if test="wEqStatus != null">
AND status = #{wEqStatus,jdbcType=INTEGER}
</if>
<if test="wEqType != null">
AND type = #{wEqType,jdbcType=VARCHAR}
</if>
<if test="wInStatus != null and wInStatus.size() > 0">
AND status IN
<foreach collection="wInStatus" item="status" index="i" open="(" close=")" separator=",">
#{status,jdbcType=INTEGER}
</foreach>
</if>
<if test="wInType != null and wInType.size() > 0">
AND type IN
<foreach collection="wInType" item="type" index="i" open="(" close=")" separator=",">
#{type,jdbcType=VARCHAR}
</foreach>
</if>
</update>
<update id="updateDetailOverdueDayById" parameterType="cn.quantgroup.qgblservice.repository.mybatis.entity.blacklist.DetailsUpdate">
update black_grey_list_details
set max_overdue_days = #{maxOverdueDays,jdbcType=VARCHAR}, total_overdue_days = #{totalOverdueDays,jdbcType=VARCHAR}, updated_at = #{updatedAt,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
package cn.quantgroup.qgblservice.service;
import cn.quantgroup.qgblservice.repository.mybatis.entity.tidb.TmpBlackGreyList;
import cn.quantgroup.qgblservice.repository.mybatis.entity.xyqbuser.XyqbUser;
import java.sql.Connection;
import java.sql.SQLException;
......@@ -16,7 +17,6 @@ import java.util.List;
*/
public interface IBlackGreyListService {
//往black_grey_list_result表及black_grey_list_details表插入
int saveBlackGreyList(TmpBlackGreyList blackGreyObj);
......
......@@ -457,8 +457,6 @@ public class BlackListToolsManagerServiceImpl implements IBlackListToolsManagerS
}
/**
* -----------------------------------------------------------------------------<br>
* 描述: black_list_new 数据,往tmp_black_grey_list清洗<br>
......@@ -502,7 +500,26 @@ public class BlackListToolsManagerServiceImpl implements IBlackListToolsManagerS
//update_huiTohei_type10();
}
else if("tmpBlackGreyToProduct".equals(operatType)){
tmpBlackGreyToProduct();
//tmpBlackGreyToProduct();
}
//测试job中的方法
//现金分期,每日逾期15+用户 每日执行导入新的黑名单表
else if("importXianJinDaiBlackGreyList".equals(operatType)){
blackGreyListService.importXianJinDaiBlackGreyList();
}
//vcc逾期,每日逾期15+用户 每日执行导入新的黑名单表
else if("importVccBlackGreyList".equals(operatType)){
blackGreyListService.importVccBlackGreyList();
}
//逾期已还清黑名单>>转灰名单
else if("removeBlackToGreyList".equals(operatType)){
blackGreyListService.removeBlackToGreyList();
}
//更新黑名单>>逾期天数
else if("updateBlackListOverdueDay".equals(operatType)){
blackGreyListService.updateBlackListOverdueDay();
}
else{
......@@ -1400,7 +1417,8 @@ public class BlackListToolsManagerServiceImpl implements IBlackListToolsManagerS
BlackGreyListQueryVo queryResultParam = BlackGreyListQueryVo.builder().name(blackGreyObj.getName()).idNo(blackGreyObj.getIdNo()).phoneNo(blackGreyObj.getPhoneNo())
.type(blackGreyObj.getType()).status(0).build();
List<BlackGreyListDetails> detailsList = blackGreyListMapper.findBlackGreyListDetails(queryResultParam);
//List<BlackGreyListDetails> detailsList = blackGreyListMapper.findBlackGreyListDetails(queryResultParam);
List<BlackGreyListDetails> detailsList = blackGreyListMapper.findBlackGreyListDetailsBy3YS(queryResultParam);
if(detailsList!=null && detailsList.size()>0){
details_haveCount++;
}else {
......
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