Commit 6dd3c4fb authored by 黎博's avatar 黎博

项目结构优化

parent 80086cf2
package cn.qg.qaplatform.controller.stools; package cn.qg.qaplatform.controller.common;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.vo.BindCardVo; import cn.qg.qaplatform.entity.vo.BindCardVo;
...@@ -20,7 +20,7 @@ import java.util.Map; ...@@ -20,7 +20,7 @@ import java.util.Map;
@CrossOrigin @CrossOrigin
@RestController @RestController
public class BindCardService { public class BindCardController {
@Autowired @Autowired
UserService userService; UserService userService;
......
package cn.qg.qaplatform.controller.stools; package cn.qg.qaplatform.controller.common;
import cn.qg.qaplatform.utils.JenkinsApi; import cn.qg.qaplatform.utils.JenkinsApi;
import cn.qg.qaplatform.vo.JenkinsBuildInfo; import cn.qg.qaplatform.entity.vo.JenkinsBuildInfo;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.utils.JsonResult;
import com.offbytwo.jenkins.model.Build; import com.offbytwo.jenkins.model.Build;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
@CrossOrigin @CrossOrigin
@RestController @RestController
@RequestMapping("/jenkins") @RequestMapping("/jenkins")
public class JenkinsBuildController { public class JenkinsController {
/** /**
* 获取构建信息列表 * 获取构建信息列表
......
package cn.qg.qaplatform.controller.stools; package cn.qg.qaplatform.controller.common;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.stools.MsgSendVo; import cn.qg.qaplatform.entity.vo.MsgSendVo;
import cn.qg.qaplatform.entity.stools.MsgTemplate; import cn.qg.qaplatform.entity.msg.MsgTemplate;
import cn.qg.qaplatform.entity.stools.PhoneNoWhiteList; import cn.qg.qaplatform.entity.vo.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo; import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.service.stools.MsgService; import cn.qg.qaplatform.service.msg.MsgTemplateService;
import cn.qg.qaplatform.service.stools.PhoneNoWhiteListService; import cn.qg.qaplatform.service.msg.PhoneNoWhiteListService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.utils.HttpClientUtils; import cn.qg.qaplatform.utils.HttpClientUtils;
import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.utils.Result; import cn.qg.qaplatform.utils.Result;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -38,13 +37,13 @@ import java.util.Map; ...@@ -38,13 +37,13 @@ import java.util.Map;
public class MsgController { public class MsgController {
@Autowired @Autowired
XyqbBasicQueryService xyqbBasicQueryService; UserService userService;
@Autowired @Autowired
PhoneNoWhiteListService phoneNoWhiteListService; PhoneNoWhiteListService phoneNoWhiteListService;
@Autowired @Autowired
MsgService msgService; MsgTemplateService msgTemplateService;
/** /**
* 发送push * 发送push
...@@ -57,13 +56,13 @@ public class MsgController { ...@@ -57,13 +56,13 @@ public class MsgController {
String phoneNo = msgSendVo.getPhoneNo(); String phoneNo = msgSendVo.getPhoneNo();
String contentId = msgSendVo.getContentId(); String contentId = msgSendVo.getContentId();
List<String> contentArgs = msgSendVo.getContentArgs(); List<String> contentArgs = msgSendVo.getContentArgs();
XjfqGenProcessVo xjfqGenProcessVo = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo); User user = userService.getUserInfoByPhoneNo(namespace, phoneNo);
String userId; String userId;
if (xjfqGenProcessVo == null) { if (user == null) {
log.info("用户中心查不到手机号{},因此本次不发送push.", phoneNo); log.info("用户中心查不到手机号{},因此本次不发送push.", phoneNo);
return Result.buildErrorStateResult("用户中心无此手机号,无法发送push", false); return Result.buildErrorStateResult("用户中心无此手机号,无法发送push", false);
} else { } else {
userId = xjfqGenProcessVo.getUserId(); userId = String.valueOf(user.getId());
} }
String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/appPush"; String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/appPush";
List<Map<String, Object>> paramList = new ArrayList<>(); List<Map<String, Object>> paramList = new ArrayList<>();
...@@ -103,13 +102,13 @@ public class MsgController { ...@@ -103,13 +102,13 @@ public class MsgController {
String phoneNo = msgSendVo.getPhoneNo(); String phoneNo = msgSendVo.getPhoneNo();
String contentId = msgSendVo.getContentId(); String contentId = msgSendVo.getContentId();
List<String> contentArgs = msgSendVo.getContentArgs(); List<String> contentArgs = msgSendVo.getContentArgs();
XjfqGenProcessVo xjfqGenProcessVo = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo); User user = userService.getUserInfoByPhoneNo(namespace, phoneNo);
String userId; String userId;
if (xjfqGenProcessVo == null) { if (user == null) {
log.info("用户中心查不到手机号{},因此本次不发送站内信.", phoneNo); log.info("用户中心查不到手机号{},因此本次不发送站内信.", phoneNo);
return Result.buildErrorStateResult("用户中心无此手机号,无法发送站内信", false); return Result.buildErrorStateResult("用户中心无此手机号,无法发送站内信", false);
} else { } else {
userId = xjfqGenProcessVo.getUserId(); userId = String.valueOf(user.getId());
} }
String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/stationLetter"; String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/stationLetter";
List<Map<String, Object>> paramList = new ArrayList<>(); List<Map<String, Object>> paramList = new ArrayList<>();
...@@ -150,13 +149,13 @@ public class MsgController { ...@@ -150,13 +149,13 @@ public class MsgController {
String contentId = msgSendVo.getContentId(); String contentId = msgSendVo.getContentId();
List<String> contentArgs = msgSendVo.getContentArgs(); List<String> contentArgs = msgSendVo.getContentArgs();
phoneNoWhiteListService.handlePhoneNoWhiteList(namespace, phoneNo); phoneNoWhiteListService.handlePhoneNoWhiteList(namespace, phoneNo);
XjfqGenProcessVo xjfqGenProcessVo = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo); User user = userService.getUserInfoByPhoneNo(namespace, phoneNo);
String userId; String userId;
if (xjfqGenProcessVo == null) { if (user == null) {
log.info("用户中心查不到手机号{},因此本次不发送短信.", phoneNo); log.info("用户中心查不到手机号{},因此本次不发送短信.", phoneNo);
return Result.buildErrorStateResult("用户中心未找到该手机号,短信不进行发送!", false); return Result.buildErrorStateResult("用户中心未找到该手机号,短信不进行发送!", false);
} else { } else {
userId = xjfqGenProcessVo.getUserId(); userId = String.valueOf(user.getId());
} }
String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/quick"; String url = "https://msgapi-" + namespace + ".liangkebang.net/middle_office/send/message/quick";
Map<String, Object> paramsMap = new HashMap<>(); Map<String, Object> paramsMap = new HashMap<>();
...@@ -237,7 +236,7 @@ public class MsgController { ...@@ -237,7 +236,7 @@ public class MsgController {
QueryWrapper<MsgTemplate> msgTemplateQueryWrapper = new QueryWrapper<>(); QueryWrapper<MsgTemplate> msgTemplateQueryWrapper = new QueryWrapper<>();
msgTemplateQueryWrapper.eq("template_type", templateType); msgTemplateQueryWrapper.eq("template_type", templateType);
msgTemplateQueryWrapper.orderByDesc("id"); msgTemplateQueryWrapper.orderByDesc("id");
IPage<MsgTemplate> msgTemplateIPage = msgService.page(page, msgTemplateQueryWrapper); IPage<MsgTemplate> msgTemplateIPage = msgTemplateService.page(page, msgTemplateQueryWrapper);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("total", msgTemplateIPage.getTotal()); map.put("total", msgTemplateIPage.getTotal());
map.put("list", msgTemplateIPage.getRecords()); map.put("list", msgTemplateIPage.getRecords());
......
package cn.qg.qaplatform.controller.common;
import cn.qg.qaplatform.enums.Namespace;
import cn.qg.qaplatform.utils.EnumUtils;
import cn.qg.qaplatform.utils.JsonResult;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@CrossOrigin
@RestController
public class NamespaceController {
/**
* 获取namespce列表
*/
@GetMapping("/namespace/list")
public JsonResult getAllNamespaceList() {
return JsonResult.success(EnumUtils.enumToListMap(Namespace.class));
}
}
package cn.qg.qaplatform.controller.zdata.vcc; package cn.qg.qaplatform.controller.vcc;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.vcc.Account; import cn.qg.qaplatform.entity.vcc.Account;
import cn.qg.qaplatform.entity.vcc.AcsPayOrder; import cn.qg.qaplatform.entity.vcc.AcsPayOrder;
import cn.qg.qaplatform.entity.vcc.RiskRecord; import cn.qg.qaplatform.entity.vcc.RiskRecord;
import cn.qg.qaplatform.entity.vcc.UserQuotaRecord; import cn.qg.qaplatform.entity.vcc.UserQuotaRecord;
import cn.qg.qaplatform.entity.workflow.BlackListConfig;
import cn.qg.qaplatform.entity.xyqbuser.User; import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.entity.zdata.VccOpenResultVo; import cn.qg.qaplatform.entity.vo.VccOpenResultVo;
import cn.qg.qaplatform.entity.zdata.VccUserEntity; import cn.qg.qaplatform.entity.vo.VccUserEntity;
import cn.qg.qaplatform.enums.VccStatusEnum; import cn.qg.qaplatform.enums.VccStatusEnum;
import cn.qg.qaplatform.process.Vcc; import cn.qg.qaplatform.process.Vcc;
import cn.qg.qaplatform.service.vcc.AccountService; import cn.qg.qaplatform.service.vcc.AccountService;
import cn.qg.qaplatform.service.vcc.AcsPayOrderService; import cn.qg.qaplatform.service.vcc.AcsPayOrderService;
import cn.qg.qaplatform.service.vcc.RiskRecordService; import cn.qg.qaplatform.service.vcc.RiskRecordService;
import cn.qg.qaplatform.service.vcc.UserQuotaRecordService; import cn.qg.qaplatform.service.vcc.UserQuotaRecordService;
import cn.qg.qaplatform.service.workflow.BlackListConfigService;
import cn.qg.qaplatform.service.xyqbUser.UserService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.service.zdata.risk.RuleEngineService;
import cn.qg.qaplatform.utils.HttpClientUtils; import cn.qg.qaplatform.utils.HttpClientUtils;
import cn.qg.qaplatform.utils.Result; import cn.qg.qaplatform.utils.Result;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -59,7 +60,7 @@ public class VccController { ...@@ -59,7 +60,7 @@ public class VccController {
AcsPayOrderService acsPayOrderService; AcsPayOrderService acsPayOrderService;
@Autowired @Autowired
RuleEngineService ruleEngineService; BlackListConfigService blackListConfigService;
/** /**
* vcc造数据 * vcc造数据
...@@ -112,7 +113,13 @@ public class VccController { ...@@ -112,7 +113,13 @@ public class VccController {
// 加入授信黑名单 // 加入授信黑名单
if (status == 2) { if (status == 2) {
ruleEngineService.addBlackList(uuid); SwitchDataSource.dataSourceSwitch("fe", "workflow");
BlackListConfig blackListConfig = new BlackListConfig();
blackListConfig.setUuid(uuid);
blackListConfig.setExpirDate(14);
blackListConfig.setType(0);
blackListConfig.setEnable(1);
blackListConfigService.save(blackListConfig);
log.info("将用户 {} 加入授信黑名单!", uuid); log.info("将用户 {} 加入授信黑名单!", uuid);
} }
......
package cn.qg.qaplatform.controller.xyqb;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.businessflow.ApplyList;
import cn.qg.qaplatform.entity.vo.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.workflow.WhiteListConfigNew;
import cn.qg.qaplatform.entity.xyqb.ApplyQuotaRecord;
import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.enums.ChannelEnum;
import cn.qg.qaplatform.enums.FundEnum;
import cn.qg.qaplatform.enums.LoanStatus;
import cn.qg.qaplatform.mapper.xyqb.XyqbMapper;
import cn.qg.qaplatform.service.businessFlow.ApplyListService;
import cn.qg.qaplatform.service.workflow.WhiteListConfigNewService;
import cn.qg.qaplatform.service.xyqb.ApplyQuotaRecordService;
import cn.qg.qaplatform.service.xyqb.XyqbService;
import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.utils.EnumUtils;
import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.utils.Result;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* 现金分期相关接口
*/
@CrossOrigin
@RestController
@RequestMapping("/xyqb")
public class XyqbController {
@Autowired
ApplyListService applyListService;
@Autowired
ApplyQuotaRecordService applyQuotaRecordService;
@Autowired
UserService userService;
@Autowired
XyqbMapper xyqbMapper;
@Autowired
WhiteListConfigNewService whiteListConfigNewService;
@Autowired
XyqbService xyqbService;
/**
* @return 获取所有借款用户状态
*/
@ApiOperation(value = "获取所有借款状态")
@GetMapping("/getLoanStatus")
public Result getLoanUserDataStatus() {
List<Map<String, Object>> allUserLoanStatusList = new ArrayList<>();
for (LoanStatus loanStatus:LoanStatus.values()) {
Map<String, Object> tempMap = new HashMap<>();
tempMap.put("value", loanStatus.getStatus());
tempMap.put("label", loanStatus.getDesc());
allUserLoanStatusList.add(tempMap);
}
return Result.buildSuccessResult(allUserLoanStatusList);
}
/**
* 现金分期捞数据接口
* @param status 用户状态(0-注册未申请,1-授信中,2-审核通过,3-审核拒绝,4-审核通过未提现,5-放款成功,6-放款失败,7-多订单)
* @param pageNum 页码
* @param pageSize 每页数量
* @return 所有借款用户数据
*/
@GetMapping("/getLoanUser")
public Result getLoanUserData(@RequestParam(value = "namespace") String namespace,
@RequestParam(value = "status") Integer status,
@RequestParam(value = "channel" ) Integer channel,
@RequestParam(value = "fundId") Integer fundId,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
if (status == 0) {
// 获取所有未申请的uuid
SwitchDataSource.dataSourceSwitch(namespace, "business_flow");
QueryWrapper<ApplyList> applyListQueryWrapper = new QueryWrapper<>();
applyListQueryWrapper.eq("apply_status", status);
if (channel != null) {
applyListQueryWrapper.eq("channel_id", channel);
}
List<ApplyList> applyLists = applyListService.list(applyListQueryWrapper);
List<String> uuidList = new ArrayList<>();
applyLists.forEach(applyList -> {
uuidList.add(applyList.getUuid());
});
// 根据uuid获取用户信息
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("uuid", uuidList);
IPage<User> iPage = new Page<>(pageNum, pageSize);
IPage userIPage = userService.page(iPage, userQueryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("total",userIPage.getTotal());
map.put("list", userIPage.getRecords());
return Result.buildSuccessResult(map);
}
if (status == 1 || status == 2 || status == 3) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
QueryWrapper<ApplyQuotaRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("apply_status", status);
if (channel != null) {
queryWrapper.eq("apply_from", channel);
}
List<ApplyQuotaRecord> applyQuotaRecords = applyQuotaRecordService.list(queryWrapper);
List<String> uuidList = new ArrayList<>();
applyQuotaRecords.forEach(applyQuotaRecord -> {
uuidList.add(applyQuotaRecord.getUuid());
});
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("uuid", uuidList);
IPage<User> iPage = new Page<>(pageNum, pageSize);
IPage userIPage = userService.page(iPage, userQueryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("total",userIPage.getTotal());
map.put("list", userIPage.getRecords());
return Result.buildSuccessResult(map);
}
if (status == 4) {
// 获取审核通过未提现的userId列表
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
List<String> userIds = xyqbMapper.queryAuthAndUnWithdraw(channel, fundId);
// 查询对应用户的具体信息,并进行分页处理
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("id", userIds);
IPage<User> iPage = new Page<>(pageNum, pageSize);
IPage userIPage = userService.page(iPage, userQueryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("total",userIPage.getTotal());
map.put("list", userIPage.getRecords());
return Result.buildSuccessResult(map);
}
if (status == 5 || status == 6) {
// 获取放款成功/放款失败的userId列表
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
List<String> userIds = new ArrayList<>();
if (status == 5) {
userIds = xyqbMapper.getLoanStatusUserIdList(15, channel, fundId);
}
if (status == 6) {
userIds = xyqbMapper.getLoanStatusUserIdList(23, channel, fundId);
}// 查询对应用户的具体信息,并进行分页处理
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("id", userIds);
IPage<User> iPage = new Page<>(pageNum, pageSize);
IPage userIPage = userService.page(iPage, userQueryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("total",userIPage.getTotal());
map.put("list", userIPage.getRecords());
return Result.buildSuccessResult(map);
}
if (status == 7) {
SwitchDataSource.dataSourceSwitch("fe", "workflow");
List<WhiteListConfigNew> whiteListConfigNews = whiteListConfigNewService.list();
List<String> uuidList = new ArrayList<>();
whiteListConfigNews.forEach(whiteListConfigNew -> {
uuidList.add(whiteListConfigNew.getUuid());
});
// 根据uuid获取用户信息
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.in("uuid", uuidList);
IPage<User> iPage = new Page<>(pageNum, pageSize);
IPage userIPage = userService.page(iPage, userQueryWrapper);
Map<String, Object> map = new HashMap<>();
map.put("total",userIPage.getTotal());
map.put("list", userIPage.getRecords());
return Result.buildSuccessResult(map);
}
return Result.buildErrorStateResult("借款状态暂不支持!", false);
}
/**
* 现金分期造数据接口
* status: 0 - 审核通过, 1 - 审核拒绝, 2 - 放款中, 3 - 放款成功, 4 - 放款失败
* @param xyqbApplyDataVo
* @return
*/
@PostMapping("/genLoanUser")
public Result genXjfqLoanUser(@RequestBody XyqbApplyDataVo xyqbApplyDataVo) {
try {
boolean result = false;
if (xyqbApplyDataVo.getChannel().equals(ChannelEnum.XYQB.getChannelId())) {
result = xyqbService.genLoanUser(xyqbApplyDataVo);
}
return Result.buildSuccessResult(result);
} catch (Exception e) {
e.printStackTrace();
return Result.buildErrorStateResult("数据生成失败!", false);
}
}
/**
* 查询用户状态
* @param namespace
* @param phoneNo
* @return
*/
@GetMapping("/userStatus")
public JsonResult queryUserStatus(@RequestParam String namespace,
@RequestParam String phoneNo) {
XjfqGenProcessVo xjfqGenProcessVo = xyqbService.queryUserStatus(namespace, phoneNo);
return JsonResult.success(xjfqGenProcessVo);
}
/**
* 支持的资方和渠道
* @return
*/
@GetMapping("/supportChannelAndFund")
public Result getSupportedLoanUserData() {
Map<String, List> map = new HashMap();
List supportChannel = EnumUtils.enumToListMap(ChannelEnum.class);
List supportFund = EnumUtils.enumToListMap(FundEnum.class);
map.put("channelList", supportChannel);
map.put("fundList", supportFund);
return Result.buildSuccessResult(map);
}
/**
* 渠道映射资方
* @param channel
* @return
*/
@GetMapping("/channelMappedFund")
public Result mapFund(@RequestParam Integer channel) {
List<Map<String, Object>> supportFund = EnumUtils.enumToListMap(FundEnum.class);
List<Map> resultFundList = new LinkedList<>();
if (channel == 1) {
for (Map<String, Object> temp: supportFund) {
if (temp.get("fundId").equals(480) || temp.get("fundId").equals(1030) || temp.get("fundId").equals(1040)) {
resultFundList.add(temp);
}
}
}
if (channel == 159886) {
for (Map<String, Object> temp: supportFund) {
if (temp.get("fundId").equals(1010)) {
resultFundList.add(temp);
}
}
}
return Result.buildSuccessResult(resultFundList);
}
/**
* 资方对应的渠道
* @param fundId 资方id
* @return
*/
@GetMapping("/fundMappedChannel")
public Result mapChannel(@RequestParam Integer fundId) {
List<Map<String, Object>> supportChannel = EnumUtils.enumToListMap(ChannelEnum.class);
List<Map> resultChannelList = new LinkedList<>();
if (fundId == 480 || fundId == 1030 || fundId == 1040) {
for (Map<String, Object> temp: supportChannel) {
if (temp.get("channelId").equals(1)) {
resultChannelList.add(temp);
}
}
}
if (fundId == 1010) {
for (Map<String, Object> temp: supportChannel) {
if (temp.get("channelId").equals(159886)) {
resultChannelList.add(temp);
}
}
}
return Result.buildSuccessResult(resultChannelList);
}
/**
* @param namespace 环境
* @param fundCorpId 资方id
* @return
* @throws Exception
*/
@GetMapping("/assign/fund")
public Result assignFund(String namespace, Integer fundCorpId) throws Exception {
return Result.buildSuccessResult(xyqbService.assignFund(namespace, fundCorpId));
}
}
package cn.qg.qaplatform.controller.zdata.xyqb; package cn.qg.qaplatform.controller.xyqb;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.enums.ChannelEnum; import cn.qg.qaplatform.enums.ChannelEnum;
import cn.qg.qaplatform.enums.FundEnum; import cn.qg.qaplatform.enums.FundEnum;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo; import cn.qg.qaplatform.entity.vo.XjfqGenProcessVo;
import cn.qg.qaplatform.service.zdata.xyqb.LexinDataService; import cn.qg.qaplatform.service.xyqb.LexinDataService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbGenDataService; import cn.qg.qaplatform.service.xyqb.XyqbService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService;
import cn.qg.qaplatform.utils.EnumUtils; import cn.qg.qaplatform.utils.EnumUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -26,20 +25,17 @@ import java.util.Map; ...@@ -26,20 +25,17 @@ import java.util.Map;
public class XyqbGenController { public class XyqbGenController {
@Autowired @Autowired
XyqbGenDataService xyqbGenDataService; XyqbService xyqbService;
@Autowired @Autowired
LexinDataService lexinDataService; LexinDataService lexinDataService;
@Autowired
XyqbBasicQueryService xyqbBasicQueryService;
@ApiOperation(value = "造数据接口") @ApiOperation(value = "造数据接口")
@PostMapping("/data") @PostMapping("/data")
public JsonResult genLoanUserData(@RequestBody XyqbApplyDataVo xyqbApplyDataVo) throws Exception { public JsonResult genLoanUserData(@RequestBody XyqbApplyDataVo xyqbApplyDataVo) throws Exception {
boolean result = false; boolean result = false;
if (xyqbApplyDataVo.getChannel().equals(ChannelEnum.XYQB.getChannelId())) { if (xyqbApplyDataVo.getChannel().equals(ChannelEnum.XYQB.getChannelId())) {
result = xyqbGenDataService.genLoanUser(xyqbApplyDataVo); result = xyqbService.genLoanUser(xyqbApplyDataVo);
} }
// if (xyqbApplyDataVo.getChannel().equals(ChannelEnum.LEXIN.getChannelId())) { // if (xyqbApplyDataVo.getChannel().equals(ChannelEnum.LEXIN.getChannelId())) {
// result = lexinDataService.genLexinData(xyqbApplyDataVo); // result = lexinDataService.genLexinData(xyqbApplyDataVo);
...@@ -62,7 +58,7 @@ public class XyqbGenController { ...@@ -62,7 +58,7 @@ public class XyqbGenController {
@GetMapping("/userStatus") @GetMapping("/userStatus")
public JsonResult queryUserStatus(@RequestParam String namespace, public JsonResult queryUserStatus(@RequestParam String namespace,
@RequestParam String phoneNo) { @RequestParam String phoneNo) {
XjfqGenProcessVo xjfqGenProcessVo = xyqbGenDataService.queryUserStatus(namespace, phoneNo); XjfqGenProcessVo xjfqGenProcessVo = xyqbService.queryUserStatus(namespace, phoneNo);
return JsonResult.success(xjfqGenProcessVo); return JsonResult.success(xjfqGenProcessVo);
} }
...@@ -122,7 +118,7 @@ public class XyqbGenController { ...@@ -122,7 +118,7 @@ public class XyqbGenController {
*/ */
@GetMapping("/assign/fund") @GetMapping("/assign/fund")
public JsonResult assignFund(String namespace, Integer fundCorpId) throws Exception { public JsonResult assignFund(String namespace, Integer fundCorpId) throws Exception {
return JsonResult.success(xyqbGenDataService.assignFund(namespace, fundCorpId)); return JsonResult.success(xyqbService.assignFund(namespace, fundCorpId));
} }
} }
package cn.qg.qaplatform.controller.zdata.xyqb; package cn.qg.qaplatform.controller.yxm;
import cn.qg.qaplatform.service.yxm.ClearDataService;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.service.zdata.xyqb.ClearDataService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
......
package cn.qg.qaplatform.controller.zdata.yxm; package cn.qg.qaplatform.controller.yxm;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mapper.zdata.KdspMapper; import cn.qg.qaplatform.mapper.zdata.KdspMapper;
......
package cn.qg.qaplatform.controller.stools; package cn.qg.qaplatform.controller.yxm;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.encrypt.kdsp.AESUtil; import cn.qg.qaplatform.encrypt.kdsp.AESUtil;
import cn.qg.qaplatform.encrypt.kdsp.RSA; import cn.qg.qaplatform.encrypt.kdsp.RSA;
import cn.qg.qaplatform.vo.EncryptRequest; import cn.qg.qaplatform.entity.vo.EncryptRequest;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
......
package cn.qg.qaplatform.controller.stools; package cn.qg.qaplatform.controller.yxm;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.stools.LoginInfo; import cn.qg.qaplatform.entity.loginrisk.LoginInfo;
import cn.qg.qaplatform.service.stools.CommonService; import cn.qg.qaplatform.entity.loginrisk.WhiteList;
import cn.qg.qaplatform.service.stools.LoginInfoService; import cn.qg.qaplatform.entity.vo.LoginWhiteListVo;
import cn.qg.qaplatform.service.loginRisk.WhiteListService;
import cn.qg.qaplatform.service.loginRisk.LoginInfoService;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.utils.Result;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -16,26 +19,40 @@ import java.util.Map; ...@@ -16,26 +19,40 @@ import java.util.Map;
@CrossOrigin @CrossOrigin
@RestController @RestController
@RequestMapping("/common") @RequestMapping("/login")
public class CommonController { public class LoginRiskController {
@Autowired @Autowired
CommonService commonService; LoginInfoService loginInfoService;
@Autowired @Autowired
LoginInfoService loginInfoService; WhiteListService whiteListService;
// /**
// * 添加登录白名单
// * @param namespace 环境
// * @param key 白名单值,设备id/手机号
// * @param keyType 白名单类型,0-手机号,1-设备id
// * @return
// */
// @GetMapping("/whitelist")
// public JsonResult addLoginWhiteList(String namespace, String key, Integer keyType) {
// boolean result = commonService.addLoginWhiteList(namespace, key, keyType);
// return JsonResult.success(result);
// }
/** /**
* 添加登录白名单 * @param loginWhiteListVo 登录白名单实体类
* @param namespace 环境
* @param key 白名单值,设备id/手机号
* @param keyType 白名单类型,0-手机号,1-设备id
* @return * @return
*/ */
@GetMapping("/whitelist") @PostMapping("/addWhiteList")
public JsonResult addLoginWhiteList(String namespace, String key, Integer keyType) { public Result addLoginWhiteList(@RequestBody LoginWhiteListVo loginWhiteListVo) {
boolean result = commonService.addLoginWhiteList(namespace, key, keyType); SwitchDataSource.dataSourceSwitch(loginWhiteListVo.getNamespace(), "login_risk");
return JsonResult.success(result); WhiteList whiteList = new WhiteList();
whiteList.setEnable(1);
whiteList.setKey(loginWhiteListVo.getKey());
whiteList.setKeyType(loginWhiteListVo.getKeyType());
return Result.buildSuccessResult(whiteListService.save(whiteList));
} }
/** /**
...@@ -45,7 +62,7 @@ public class CommonController { ...@@ -45,7 +62,7 @@ public class CommonController {
* @param pageSize 每页多少个 * @param pageSize 每页多少个
* @return * @return
*/ */
@GetMapping("/logininfo/list") @GetMapping("/list")
public JsonResult getLoginInfoList(String namespace, Integer pageNum, Integer pageSize) { public JsonResult getLoginInfoList(String namespace, Integer pageNum, Integer pageSize) {
SwitchDataSource.dataSourceSwitch(namespace, "login_risk"); SwitchDataSource.dataSourceSwitch(namespace, "login_risk");
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
......
package cn.qg.qaplatform.controller.zdata.xyqb;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbQueryService;
import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService;
import cn.qg.qaplatform.utils.page.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@CrossOrigin
@RestController
@RequestMapping("/xyqb/query")
@Api(tags = "捞数据相关接口")
public class XyqbQueryController {
@Autowired
private XyqbBasicQueryService basicLoanStatusDataService;
@Autowired
private XyqbQueryService loanUserDataService;
/**
* @return 获取所有借款用户状态
*/
@ApiOperation(value = "获取所有借款状态")
@GetMapping("/getAllStatus")
public JsonResult getLoanUserDataStatus() {
List<Map<String, Object>> statusList = basicLoanStatusDataService.getAllUserLoanStatus();
return JsonResult.success(statusList);
}
/**
* @return 获取所有环境namespace
*/
@ApiOperation(value = "获取所有环境信息")
@GetMapping("/getAllEnv")
public JsonResult getAllEnvInfo() {
List<Map<String, Object>> envList = basicLoanStatusDataService.getAllEnvInfo();
return JsonResult.success(envList);
}
/**
* @param status 用户状态
* @param pageNum 页码
* @param pageSize 每页数量
* @return 所有借款用户数据
*/
@ApiOperation(value = "捞数据接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "namespace", value="环境,qa、qa2等", required = true),
@ApiImplicitParam(name = "status", value = "借款状态", required = true),
@ApiImplicitParam(name = "channel", value = "渠道id"),
@ApiImplicitParam(name = "fundId", value = "资方id"),
@ApiImplicitParam(name = "pageNum", value = "页码", defaultValue = "1"),
@ApiImplicitParam(name = "pageSize", value = "每页数量", defaultValue = "10")
})
@GetMapping("/loanUser")
public JsonResult getLoanUserData(@RequestParam(value = "namespace") String namespace,
@RequestParam(value = "status") Integer status,
@RequestParam(value = "channel" ) Integer channel,
@RequestParam(value = "fundId") Integer fundId,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
PageResult result = loanUserDataService.getLoanUserData(namespace, status, channel, fundId, pageNum, pageSize);
return JsonResult.success(result);
}
/**
* 查看手机号是否存在
* @param phone
* @return
*/
@ApiOperation(value = "查询手机号是否存在于环境中")
@ApiImplicitParams({
@ApiImplicitParam(name = "namespace", value = "环境"),
@ApiImplicitParam(name = "phone", value = "手机号")
})
@GetMapping("/phoneExistence")
public JsonResult checkPhoneExistence(@RequestParam(value = "namespace") String namespace,
@RequestParam(value = "phone") String phone) {
return JsonResult.success(basicLoanStatusDataService.queryIfPhoneExist(namespace, phone));
}
/**
* todo
* @param namespace
* @param phoneNo
* @return
*/
@GetMapping("/getUserInfoByPhoneNo")
public JsonResult getUserInfoByPhoneNo(@RequestParam(value = "namespace") String namespace,
@RequestParam(value = "phoneNo") String phoneNo) {
return null;
}
}
package cn.qg.qaplatform.entity.businessflow;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 申请单表
*/
@Data
@TableName(value = "apply_list")
public class ApplyList {
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 渠道组编号
*/
private String channelGroupNo;
/**
* 渠道号
*/
private String channelId;
/**
* 产品类型(0-一单一审现金贷/白名单,2-循环额度,4-消费分期-小牛,6-极速版信用钱包,9-资金输出模式)
*/
private Integer productType;
/**
* 用户uuid
*/
private String uuid;
/**
* 申请单号
*/
private String applyNo;
/**
* 申请单状态(1-填写中,2-已填写未授信,3-授信审核中,4-资产分发中(授信审核完成),5-资方分发完成)
*/
private Integer applyStatus;
/**
* 审核状态(0.不通过,1.通过)
*/
private Integer auditResult;
/**
* 审核有效截止时间
*/
private Date auditValidTime;
/**
* 资产分发结果(0失败,1成功)
*/
private Integer assetsResult;
/**
* 资产分发完成时间
*/
private Date assetsFinishTime;
/**
* 申请单提交时间
*/
private Date applySubmitTime;
/**
* 平台0信用钱包1中台
*/
private Integer platform;
/**
* 是否可用(0-不可用 1-可用)
*/
private Integer enable;
/**
* 创建时间
*/
private Date createdAt;
/**
* 更新时间
*/
private Date updatedAt;
/**
* 审核结束时间
*/
private Date auditResultTime;
}
package cn.qg.qaplatform.entity.stools; package cn.qg.qaplatform.entity.loginrisk;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
......
package cn.qg.qaplatform.entity.loginrisk;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName(value = "white_list")
public class WhiteList {
/**
* 自增逐渐
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 白名单的key有可能是手机号,也可能是设备ID用type区分
*/
@TableField(value = "`key`")
private String key;
/**
* 白名单类型(0,手机号,1设备ID,2IP)
*/
private Integer keyType;
private Integer enable;
/**
* 创建时间
*/
private Date createdAt;
/**
* 更新时间
*/
private Date updatedAt;
}
package cn.qg.qaplatform.entity.stools; package cn.qg.qaplatform.entity.msg;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
......
package cn.qg.qaplatform.entity.stools; package cn.qg.qaplatform.entity.msg;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
/**
* 手机号白名单
*/
@Data @Data
@TableName(value = "phone_no_white_list")
public class PhoneNoWhiteList { public class PhoneNoWhiteList {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
......
package cn.qg.qaplatform.vo; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.vo; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.vo;
import lombok.Data;
@Data
public class LoginWhiteListVo {
/**
* 环境
*/
private String namespace;
/**
* 白名单的key有可能是手机号,也可能是设备ID用type区分
*/
private String key;
/**
* 白名单类型(0,手机号,1设备ID,2IP)
*/
private Integer keyType;
}
package cn.qg.qaplatform.entity.stools; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.zdata; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.zdata; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.zdata; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.zdata; package cn.qg.qaplatform.entity.vo;
import lombok.Data; import lombok.Data;
......
package cn.qg.qaplatform.entity.workflow;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 审核黑名单配置表
*/
@Data
@TableName(value = "black_list_config")
public class BlackListConfig {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String uuid;
/**
* 渠道号
*/
private String bizChannels;
/**
* 有效期/天
*/
private Integer expirDate;
/**
* 审核结果定制化, 默认拒绝+30天
*/
private String auditResultContent;
/**
* 0:额度审核黑名单, 1:下单审核黑名单, 2:预审黑名单,4:快速审核黑名单
*/
private Integer type;
/**
* 0-无效,1-有效
*/
private Integer enable;
private Date createdAt;
private Date updatedAt;
}
package cn.qg.qaplatform.entity.workflow;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 审核白名单配置单表新
*/
@Data
@TableName(value = "white_list_config_new")
public class WhiteListConfigNew {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String uuid;
/**
* 产品编号
*/
private String productNo;
/**
* 有效期/天
*/
private Integer expirDate;
/**
* 额度id
*/
private Long amountId;
/**
* 金融产品id
*/
private Long productId;
/**
* 金融产品id-中台
*/
private Long middleProductId;
/**
* 额度有效期id
*/
private Long deadLineId;
/**
* 渠道限制
*/
private String bizChannels;
/**
* 0-无效,1-有效
*/
private Integer enable;
private Date createdAt;
private Date updatedAt;
/**
* 1:召回白名单,2:多订单白名单
*/
private Integer type;
/**
* 操作人
*/
private String operator;
}
package cn.qg.qaplatform.entity.xyqb;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName(value = "apply_funding_risk_record")
public class ApplyFundingRiskRecord {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 额度申请记录id
*/
private Long assetsOrderId;
/**
* 用户ID
*/
private Long userId;
/**
* 资金方id
*/
private Long fundingCorpId;
/**
* 申请金额
*/
private BigDecimal amount;
/**
* json
*/
private String terms;
/**
* 利率
*/
private BigDecimal rate;
/**
* 增量,倍数, 风控给出
*/
private BigDecimal increment;
/**
* 其他费用
*/
private BigDecimal otherSum;
/**
* 与资金方交互状态
*/
private Integer applyStatus;
/**
* 简单备注
*/
private String remark;
private Date createdAt;
private Date updatedAt;
}
package cn.qg.qaplatform.entity.xyqb;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 申请额度记录表
*/
@Data
@TableName(value = "apply_quota_record")
public class ApplyQuotaRecord {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 预留字段,客户ID
*/
private String customerId;
private String uuid;
private Date applyTime;
/**
* 申请来源渠道
*/
private Long applyFrom;
/**
* 产品ID
*/
private Long productId;
/**
* 产品类型
*/
private Integer productType;
/**
* 申请状态 0-发起申请风控审核中 1-风控审核拒绝 2-风控审核通过
*/
private Integer applyStatus;
private Date updatedAt;
private Date createdAt;
/**
* 风控回调通知时间
*/
private Date riskNotifyTime;
/**
* 风控申请ID(暂时使用授信中心orderNo)
*/
private String orderNo;
/**
* 0-orderNo使用授信中心orderNo
*/
private Integer applyType;
/**
* 备注
*/
private String remark;
/**
* 资金方出结果的时间
*/
private Date fundResultAt;
}
package cn.qg.qaplatform.entity.xyqb;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName(value = "assign_funding_record")
public class AssignFundingRecord {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 资产订单表ID
*/
private Long assetOrderId;
/**
* 业务类型
*/
private Integer businessType;
/**
* 分配状态 0未分配 1分配队列中 2分配中 3分配成功 4分配失败 5取消借款
*/
private Integer assignStatus;
/**
* 资金方ID
*/
private Long fundingCorpId;
/**
* 被拒绝的资金方列表,以","分隔
*/
private String fundingBlockList;
/**
* 备注
*/
private String remark;
private Date createdAt;
private Date updatedAt;
/**
* 尝试分配的次数
*/
private Integer tryAssignCount;
}
package cn.qg.qaplatform.entity.xyqb;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 贷款记录
*/
@Data
@TableName(value = "loan_application_history")
public class LoanApplicationHistory {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* user.id
*/
private Long userId;
/**
* channel.id
*/
private Long channelId;
/**
* bank_card.id
*/
private Long bankCardId;
/**
* 是否是当前有效的借款
*/
private Boolean isActive;
/**
* 进度:0-用户未填写个人信息,1-用户未填写证件信息,2-用户未填写贷款信息,3-用户授权信息未全部完成,4-用户补充资料未完成,5-初审中,6-初审拒绝,7-终审中,8-终审拒绝,9-借款清单生成完成,10-确认借款并且去绑卡,11-放弃借款,12-绑卡完成,签订协议,13-查看还款计划
*/
private Integer progress;
/**
* 创建来源
*/
private Long createdFrom;
/**
* 业务类型:0-现金,1-白条
*/
private Integer businessType;
/**
* 支付方式 0-易联 1-易宝
*/
private Integer payApproach;
/**
* 白条merchant id
*/
private Long baitiaoMerchantId;
/**
* 创建时间
*/
private Date createdAt;
/**
* 更新时间
*/
private Date updatedAt;
}
package cn.qg.qaplatform.entity.zdata;
import lombok.Data;
import java.util.Date;
/**
* 捞数据返回的用户实体类
*/
@Data
public class XjfqUserEntity {
/**
* 手机号
*/
private String phoneNo;
/**
* 用户id
*/
private String userId;
/**
* uuid
*/
private String uuid;
/**
* 贷款状态
*/
private Integer enable;
/**
* 创建渠道
*/
private Long registeredFrom;
/**
* 分配的资方
*/
private Integer fundId;
/**
* 创建日期
*/
private Date createdAt;
}
...@@ -5,9 +5,9 @@ package cn.qg.qaplatform.enums; ...@@ -5,9 +5,9 @@ package cn.qg.qaplatform.enums;
*/ */
public enum FundEnum { public enum FundEnum {
GYXD("广达小贷", 480), GYXD("广达小贷", 480);
YNXT("云南信托", 1040), // YNXT("云南信托", 1040),
PDSB("平顶山银行", 1030); // PDSB("平顶山银行", 1030);
// GDLX("广达乐信",1010); // GDLX("广达乐信",1010);
private String name; private String name;
......
package cn.qg.qaplatform.mapper.businessFlow;
import cn.qg.qaplatform.entity.businessflow.ApplyList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ApplyListMapper extends BaseMapper<ApplyList> {
}
package cn.qg.qaplatform.mapper.stools; package cn.qg.qaplatform.mapper.loginRisk;
import cn.qg.qaplatform.entity.stools.LoginInfo; import cn.qg.qaplatform.entity.loginrisk.LoginInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface LoginInfoMapper extends BaseMapper<LoginInfo> { public interface LoginInfoMapper extends BaseMapper<LoginInfo> {
......
package cn.qg.qaplatform.mapper.loginRisk;
import cn.qg.qaplatform.entity.loginrisk.WhiteList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface WhiteListMapper extends BaseMapper<WhiteList> {
}
package cn.qg.qaplatform.mapper.msg;
import cn.qg.qaplatform.entity.msg.MsgTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MsgTemplateMapper extends BaseMapper<MsgTemplate> {
}
package cn.qg.qaplatform.mapper.stools; package cn.qg.qaplatform.mapper.msg;
import cn.qg.qaplatform.entity.stools.PhoneNoWhiteList; import cn.qg.qaplatform.entity.msg.PhoneNoWhiteList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface PhoneNoWhiteListMapper extends BaseMapper<PhoneNoWhiteList> { public interface PhoneNoWhiteListMapper extends BaseMapper<PhoneNoWhiteList> {
......
package cn.qg.qaplatform.mapper.stools;
public interface CommonMapper {
boolean addLoginWhiteList(String key, Integer keyType);
}
package cn.qg.qaplatform.mapper.stools;
import cn.qg.qaplatform.entity.stools.MsgTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MsgMapper extends BaseMapper<MsgTemplate> {
}
package cn.qg.qaplatform.mapper.workflow;
import cn.qg.qaplatform.entity.workflow.BlackListConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface BlackListConfigMapper extends BaseMapper<BlackListConfig> {
}
package cn.qg.qaplatform.mapper.workflow;
import cn.qg.qaplatform.entity.workflow.WhiteListConfigNew;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface WhiteListConfigNewMapper extends BaseMapper<WhiteListConfigNew> {
}
package cn.qg.qaplatform.mapper.xyqb;
import cn.qg.qaplatform.entity.xyqb.ApplyFundingRiskRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ApplyFundingRiskRecordMapper extends BaseMapper<ApplyFundingRiskRecord> {
}
package cn.qg.qaplatform.mapper.xyqb;
import cn.qg.qaplatform.entity.xyqb.ApplyQuotaRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface ApplyQuotaRecordMapper extends BaseMapper<ApplyQuotaRecord> {
}
package cn.qg.qaplatform.mapper.xyqb;
import cn.qg.qaplatform.entity.xyqb.AssignFundingRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface AssignFundingRecordMapper extends BaseMapper<AssignFundingRecord> {
}
package cn.qg.qaplatform.mapper.xyqb;
import cn.qg.qaplatform.entity.xyqb.LoanApplicationHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface LoanApplicationHistoryMapper extends BaseMapper<LoanApplicationHistory> {
}
package cn.qg.qaplatform.mapper.zdata; package cn.qg.qaplatform.mapper.xyqb;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.zdata.XjfqUserEntity;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface XyqbLoanDataMapper { public interface XyqbMapper {
/**
* 根据uuidList获取用户数据信息
* @param uuidList
* @return
*/
List<XjfqUserEntity> getUserDataListByUuidList(List<String> uuidList);
/**
* 获取未申请用户数据uuidList
*/
List<String> getUnApplyLoanUserUuidList(@Param("channel") Integer channel);
/**
* 判断手机号是否存在库里
*/
Object queryIfPhoneExist(String phone);
/**
* 根据userIdList获取用户信息列表
* @param userIdList
* @return
*/
List<XjfqUserEntity> getUserDataListByUserIdList(List<String> userIdList);
/**
* 根据审核状态获取用户Id列表
* @param status 0-审核中,1-审核拒绝,2-审核通过
* @return
*/
List<String> getAuditStatusUserIdList(Integer status, @Param("channel") Integer channel);
/** /**
* 根据资方和渠道id查询审核通过未提现的用户 * 根据资方和渠道id查询审核通过未提现的用户
...@@ -55,20 +21,6 @@ public interface XyqbLoanDataMapper { ...@@ -55,20 +21,6 @@ public interface XyqbLoanDataMapper {
*/ */
List<String> getLoanStatusUserIdList(Integer progress, @Param("channel") Integer channel, @Param("fundId") Integer fundId); List<String> getLoanStatusUserIdList(Integer progress, @Param("channel") Integer channel, @Param("fundId") Integer fundId);
/**
* 获取多订单用例id列表
* @return
*/
List<String> getMultiOrderuuidList();
/**
* 根据userId获取资方id
* @param userId
* @return
*/
Integer getAssignFundIdByUserId(String userId);
XjfqGenProcessVo getUserInfoByPhoneNo(String phoneNo);
Integer getLoanProgressByUserId(String userId); Integer getLoanProgressByUserId(String userId);
} }
package cn.qg.qaplatform.process; package cn.qg.qaplatform.process;
import cn.qg.qaplatform.config.WebSocketServer; import cn.qg.qaplatform.config.WebSocketServer;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.encrypt.LexinEncrypt; import cn.qg.qaplatform.encrypt.LexinEncrypt;
import cn.qg.qaplatform.utils.HttpClientUtils; import cn.qg.qaplatform.utils.HttpClientUtils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
......
...@@ -4,12 +4,10 @@ import cn.qg.qaplatform.encrypt.kdsp.AESUtil; ...@@ -4,12 +4,10 @@ import cn.qg.qaplatform.encrypt.kdsp.AESUtil;
import cn.qg.qaplatform.encrypt.kdsp.RSA; import cn.qg.qaplatform.encrypt.kdsp.RSA;
import cn.qg.qaplatform.encrypt.yxm.DESUtils; import cn.qg.qaplatform.encrypt.yxm.DESUtils;
import cn.qg.qaplatform.utils.HttpClientUtils; import cn.qg.qaplatform.utils.HttpClientUtils;
import cn.qg.qaplatform.utils.JsonResult; import cn.qg.qaplatform.entity.vo.EncryptRequest;
import cn.qg.qaplatform.vo.EncryptRequest;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
......
package cn.qg.qaplatform.service.businessFlow;
import cn.qg.qaplatform.entity.businessflow.ApplyList;
import com.baomidou.mybatisplus.extension.service.IService;
public interface ApplyListService extends IService<ApplyList> {
}
package cn.qg.qaplatform.service.businessFlow.impl;
import cn.qg.qaplatform.entity.businessflow.ApplyList;
import cn.qg.qaplatform.mapper.businessFlow.ApplyListMapper;
import cn.qg.qaplatform.service.businessFlow.ApplyListService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class ApplyListServiceImpl extends ServiceImpl<ApplyListMapper, ApplyList> implements ApplyListService {
}
package cn.qg.qaplatform.service.stools; package cn.qg.qaplatform.service.loginRisk;
import cn.qg.qaplatform.entity.stools.LoginInfo; import cn.qg.qaplatform.entity.loginrisk.LoginInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface LoginInfoService extends IService<LoginInfo> { public interface LoginInfoService extends IService<LoginInfo> {
......
package cn.qg.qaplatform.service.loginRisk;
import cn.qg.qaplatform.entity.loginrisk.WhiteList;
import com.baomidou.mybatisplus.extension.service.IService;
public interface WhiteListService extends IService<WhiteList> {
}
package cn.qg.qaplatform.service.stools.impl; package cn.qg.qaplatform.service.loginRisk.impl;
import cn.qg.qaplatform.entity.stools.LoginInfo; import cn.qg.qaplatform.entity.loginrisk.LoginInfo;
import cn.qg.qaplatform.mapper.stools.LoginInfoMapper; import cn.qg.qaplatform.mapper.loginRisk.LoginInfoMapper;
import cn.qg.qaplatform.service.stools.LoginInfoService; import cn.qg.qaplatform.service.loginRisk.LoginInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
......
package cn.qg.qaplatform.service.loginRisk.impl;
import cn.qg.qaplatform.entity.loginrisk.WhiteList;
import cn.qg.qaplatform.mapper.loginRisk.WhiteListMapper;
import cn.qg.qaplatform.service.loginRisk.WhiteListService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class WhiteListServiceImpl extends ServiceImpl<WhiteListMapper, WhiteList> implements WhiteListService {
}
package cn.qg.qaplatform.service.msg;
import cn.qg.qaplatform.entity.msg.MsgTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
public interface MsgTemplateService extends IService<MsgTemplate> {
}
package cn.qg.qaplatform.service.stools; package cn.qg.qaplatform.service.msg;
import cn.qg.qaplatform.entity.stools.PhoneNoWhiteList; import cn.qg.qaplatform.entity.msg.PhoneNoWhiteList;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface PhoneNoWhiteListService extends IService<PhoneNoWhiteList> { public interface PhoneNoWhiteListService extends IService<PhoneNoWhiteList> {
......
package cn.qg.qaplatform.service.msg.impl;
import cn.qg.qaplatform.entity.msg.MsgTemplate;
import cn.qg.qaplatform.mapper.msg.MsgTemplateMapper;
import cn.qg.qaplatform.service.msg.MsgTemplateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class MsgTemplateServiceImpl extends ServiceImpl<MsgTemplateMapper, MsgTemplate> implements MsgTemplateService {
}
package cn.qg.qaplatform.service.stools.impl; package cn.qg.qaplatform.service.msg.impl;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.stools.PhoneNoWhiteList; import cn.qg.qaplatform.entity.msg.PhoneNoWhiteList;
import cn.qg.qaplatform.mapper.stools.PhoneNoWhiteListMapper; import cn.qg.qaplatform.mapper.msg.PhoneNoWhiteListMapper;
import cn.qg.qaplatform.service.stools.PhoneNoWhiteListService; import cn.qg.qaplatform.service.msg.PhoneNoWhiteListService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
package cn.qg.qaplatform.service.stools;
public interface CommonService {
boolean addLoginWhiteList(String namespace, String key, Integer keyType);
}
package cn.qg.qaplatform.service.stools;
import cn.qg.qaplatform.entity.stools.MsgTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface MsgService extends IService<MsgTemplate> {
}
package cn.qg.qaplatform.service.stools.impl;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mapper.stools.CommonMapper;
import cn.qg.qaplatform.service.stools.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class CommonServiceImpl implements CommonService {
@Autowired
CommonMapper commonMapper;
@Override
public boolean addLoginWhiteList(String namespace, String key, Integer keyType) {
SwitchDataSource.dataSourceSwitch(namespace, "login_risk");
boolean result;
try {
result = commonMapper.addLoginWhiteList(key, keyType);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return result;
}
}
package cn.qg.qaplatform.service.stools.impl;
import cn.qg.qaplatform.entity.stools.MsgTemplate;
import cn.qg.qaplatform.mapper.stools.MsgMapper;
import cn.qg.qaplatform.service.stools.MsgService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class MsgServiceImpl extends ServiceImpl<MsgMapper, MsgTemplate> implements MsgService {
}
package cn.qg.qaplatform.service.workflow;
import cn.qg.qaplatform.entity.workflow.BlackListConfig;
import com.baomidou.mybatisplus.extension.service.IService;
public interface BlackListConfigService extends IService<BlackListConfig> {
}
package cn.qg.qaplatform.service.workflow;
import cn.qg.qaplatform.entity.workflow.WhiteListConfigNew;
import com.baomidou.mybatisplus.extension.service.IService;
public interface WhiteListConfigNewService extends IService<WhiteListConfigNew> {
}
package cn.qg.qaplatform.service.workflow.impl;
import cn.qg.qaplatform.entity.workflow.BlackListConfig;
import cn.qg.qaplatform.mapper.workflow.BlackListConfigMapper;
import cn.qg.qaplatform.service.workflow.BlackListConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class BlackListConfigServiceImpl extends ServiceImpl<BlackListConfigMapper, BlackListConfig>
implements BlackListConfigService {
}
package cn.qg.qaplatform.service.workflow.impl;
import cn.qg.qaplatform.entity.workflow.WhiteListConfigNew;
import cn.qg.qaplatform.mapper.workflow.WhiteListConfigNewMapper;
import cn.qg.qaplatform.service.workflow.WhiteListConfigNewService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class WhiteListConfigNewServiceImpl extends ServiceImpl<WhiteListConfigNewMapper, WhiteListConfigNew>
implements WhiteListConfigNewService {
}
package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.xyqb.ApplyFundingRiskRecord;
import com.baomidou.mybatisplus.extension.service.IService;
public interface ApplyFundingRiskRecordService extends IService<ApplyFundingRiskRecord> {
}
package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.xyqb.ApplyQuotaRecord;
import com.baomidou.mybatisplus.extension.service.IService;
public interface ApplyQuotaRecordService extends IService<ApplyQuotaRecord> {
}
package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.xyqb.AssignFundingRecord;
import cn.qg.qaplatform.service.xyqb.impl.AssignFundingRecordServiceImpl;
import com.baomidou.mybatisplus.extension.service.IService;
public interface AssignFundingRecordService extends IService<AssignFundingRecord> {
/**
* 根据userId获取分配的资方
* @param namespace 环境
* @param userId 分配的资方
* @return
*/
AssignFundingRecord getFundRecordByUserId(String namespace, String userId);
}
package cn.qg.qaplatform.service.zdata.xyqb; package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
/** /**
* 乐信数据 * 乐信数据
......
package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.xyqb.LoanApplicationHistory;
import com.baomidou.mybatisplus.extension.service.IService;
public interface LoanApplicationHistoryService extends IService<LoanApplicationHistory> {
LoanApplicationHistory getLastestLoanByUserId(String namespace, String userId);
}
\ No newline at end of file
package cn.qg.qaplatform.service.zdata.xyqb; package cn.qg.qaplatform.service.xyqb;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo; import cn.qg.qaplatform.entity.vo.XjfqGenProcessVo;
import java.io.IOException; import java.io.IOException;
import java.net.URISyntaxException;
public interface XyqbGenDataService { public interface XyqbService {
/** /**
* 分配资金方 * 分配资金方
......
package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.entity.xyqb.ApplyFundingRiskRecord;
import cn.qg.qaplatform.mapper.xyqb.ApplyFundingRiskRecordMapper;
import cn.qg.qaplatform.service.xyqb.ApplyFundingRiskRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class ApplyFundingRiskRecordServiceImpl extends ServiceImpl<ApplyFundingRiskRecordMapper, ApplyFundingRiskRecord>
implements ApplyFundingRiskRecordService {
}
package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.entity.xyqb.ApplyQuotaRecord;
import cn.qg.qaplatform.mapper.xyqb.ApplyQuotaRecordMapper;
import cn.qg.qaplatform.service.xyqb.ApplyQuotaRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class ApplyQuotaRecordServiceImpl extends ServiceImpl<ApplyQuotaRecordMapper, ApplyQuotaRecord> implements ApplyQuotaRecordService {
}
package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.xyqb.AssignFundingRecord;
import cn.qg.qaplatform.mapper.xyqb.AssignFundingRecordMapper;
import cn.qg.qaplatform.service.xyqb.AssignFundingRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AssignFundingRecordServiceImpl extends ServiceImpl<AssignFundingRecordMapper, AssignFundingRecord>
implements AssignFundingRecordService {
@Autowired
AssignFundingRecordMapper assignFundingRecordMapper;
@Override
public AssignFundingRecord getFundRecordByUserId(String namespace, String userId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
QueryWrapper<AssignFundingRecord> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq("user_id", userId)
.orderByDesc("id")
.last("limit 1");
return assignFundingRecordMapper.selectOne(queryWrapper);
}
}
package cn.qg.qaplatform.service.zdata.xyqb.impl; package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.config.WebSocketServer;
import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.process.Common; import cn.qg.qaplatform.process.Common;
import cn.qg.qaplatform.process.Lexin; import cn.qg.qaplatform.process.Lexin;
import cn.qg.qaplatform.process.Xyqb; import cn.qg.qaplatform.process.Xyqb;
import cn.qg.qaplatform.service.zdata.xyqb.QueryInProcessStatusService; import cn.qg.qaplatform.service.xyqb.AssignFundingRecordService;
import cn.qg.qaplatform.service.zdata.xyqb.LexinDataService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.service.xyqb.LexinDataService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -17,11 +20,34 @@ import java.util.Map; ...@@ -17,11 +20,34 @@ import java.util.Map;
@Slf4j @Slf4j
public class LexinDataServiceImpl implements LexinDataService { public class LexinDataServiceImpl implements LexinDataService {
@Autowired @Autowired
QueryInProcessStatusService queryInProcessStatusService; UserService userService;
@Autowired
AssignFundingRecordService assignFundingRecordService;
@Autowired @Autowired
RedisTemplate redisTemplate; RedisTemplate redisTemplate;
public void queryFundingAssignProgress(String namespace, String phoneNo, Integer fundId, String symbol) throws InterruptedException {
String userId = String.valueOf(userService.getUserInfoByPhoneNo(namespace, phoneNo).getId());
while (true) {
Integer searchResult = Math.toIntExact(assignFundingRecordService.getFundRecordByUserId(namespace, userId).getFundingCorpId());
log.info(searchResult.toString());
if (fundId.equals(searchResult)) {
log.info("用户:" + userId + "资方分配成功!");
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方分配成功.", symbol);
}
break;
} else {
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方还未分配成功,10秒后重试", symbol);
}
Thread.sleep(10000);
}
}
}
@Override @Override
public boolean genLexinData(XyqbApplyDataVo xyqbApplyDataVo) throws Exception { public boolean genLexinData(XyqbApplyDataVo xyqbApplyDataVo) throws Exception {
String namespace = xyqbApplyDataVo.getNamespace(); String namespace = xyqbApplyDataVo.getNamespace();
...@@ -53,7 +79,7 @@ public class LexinDataServiceImpl implements LexinDataService { ...@@ -53,7 +79,7 @@ public class LexinDataServiceImpl implements LexinDataService {
// Xyqb.creditAuthNotify(namespace, token, uuid, ChannelEnum.LEXIN.getChannelId(), fundId, channelOrderNo, 0, true, amount, term); // Xyqb.creditAuthNotify(namespace, token, uuid, ChannelEnum.LEXIN.getChannelId(), fundId, channelOrderNo, 0, true, amount, term);
setUserStatusRedisValue(namespace, phoneNo, 0); setUserStatusRedisValue(namespace, phoneNo, 0);
// 查询到资方分配成功才进行下一步 // 查询到资方分配成功才进行下一步
queryInProcessStatusService.queryFundingAssignProgress(namespace, phoneNo, fundId, symbol); queryFundingAssignProgress(namespace, phoneNo, fundId, symbol);
// api提现 // api提现
boolean withDrawResult = Common.withDraw(namespace, "LEXIN", channelOrderNo, bankCardNo, bankCode, bankName, phoneNo); boolean withDrawResult = Common.withDraw(namespace, "LEXIN", channelOrderNo, bankCardNo, bankCode, bankName, phoneNo);
if (!withDrawResult) { if (!withDrawResult) {
......
package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.xyqb.LoanApplicationHistory;
import cn.qg.qaplatform.mapper.xyqb.LoanApplicationHistoryMapper;
import cn.qg.qaplatform.service.xyqb.LoanApplicationHistoryService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LoanApplicationHistoryServiceImpl extends ServiceImpl<LoanApplicationHistoryMapper, LoanApplicationHistory>
implements LoanApplicationHistoryService {
@Autowired
LoanApplicationHistoryMapper loanApplicationHistoryMapper;
@Override
public LoanApplicationHistory getLastestLoanByUserId(String namespace, String userId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
QueryWrapper<LoanApplicationHistory> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq("user_id", userId)
.orderByDesc("id")
.last("limit 1");
return loanApplicationHistoryMapper.selectOne(queryWrapper);
}
}
package cn.qg.qaplatform.service.zdata.xyqb.impl; package cn.qg.qaplatform.service.xyqb.impl;
import cn.qg.qaplatform.config.WebSocketServer; import cn.qg.qaplatform.config.WebSocketServer;
import cn.qg.qaplatform.entity.zdata.XyqbApplyDataVo; import cn.qg.qaplatform.entity.vo.XyqbApplyDataVo;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo; import cn.qg.qaplatform.entity.vo.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.process.Xyqb; import cn.qg.qaplatform.process.Xyqb;
import cn.qg.qaplatform.service.zdata.xyqb.QueryInProcessStatusService; import cn.qg.qaplatform.service.xyqb.AssignFundingRecordService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbGenDataService; import cn.qg.qaplatform.service.xyqb.LoanApplicationHistoryService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.service.xyqb.XyqbService;
import cn.qg.qaplatform.utils.HttpClientUtils; import cn.qg.qaplatform.utils.HttpClientUtils;
import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.net.URISyntaxException; import java.net.URISyntaxException;
...@@ -25,16 +29,19 @@ import java.util.concurrent.TimeUnit; ...@@ -25,16 +29,19 @@ import java.util.concurrent.TimeUnit;
@Service @Service
@Slf4j @Slf4j
public class XyqbGenDataServiceImpl implements XyqbGenDataService { public class XyqbServiceImpl implements XyqbService {
@Resource @Resource
RedisTemplate redisTemplate; RedisTemplate redisTemplate;
@Autowired @Autowired
XyqbBasicQueryService xyqbBasicQueryService; UserService userService;
@Autowired @Autowired
QueryInProcessStatusService queryInProcessStatusService; AssignFundingRecordService assignFundingRecordService;
@Autowired
LoanApplicationHistoryService loanApplicationHistoryService;
/** /**
* 分配资产计划 * 分配资产计划
...@@ -90,7 +97,6 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -90,7 +97,6 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
Integer fundId = xyqbApplyDataVo.getFundId(); Integer fundId = xyqbApplyDataVo.getFundId();
Integer amount = xyqbApplyDataVo.getAmount(); Integer amount = xyqbApplyDataVo.getAmount();
Integer term = xyqbApplyDataVo.getTerm(); Integer term = xyqbApplyDataVo.getTerm();
String symbol = xyqbApplyDataVo.getSymbol();
String name = xyqbApplyDataVo.getName(); String name = xyqbApplyDataVo.getName();
String idCardNo = xyqbApplyDataVo.getIdCardNo(); String idCardNo = xyqbApplyDataVo.getIdCardNo();
...@@ -255,6 +261,59 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -255,6 +261,59 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
redisTemplate.expire(redisKey, 1800, TimeUnit.SECONDS); redisTemplate.expire(redisKey, 1800, TimeUnit.SECONDS);
} }
/**
* 查询资方分配情况
* @param namespace
* @param phoneNo
* @param fundId
* @param symbol
* @throws InterruptedException
*/
public void queryFundingAssignProgress(String namespace, String phoneNo, Integer fundId, String symbol) throws InterruptedException {
String userId = String.valueOf(userService.getUserInfoByPhoneNo(namespace, phoneNo).getId());
while (true) {
Integer searchResult = Math.toIntExact(assignFundingRecordService.getFundRecordByUserId(namespace, userId).getFundingCorpId());
log.info(searchResult.toString());
if (fundId.equals(searchResult)) {
log.info("用户:" + userId + "资方分配成功!");
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方分配成功.", symbol);
}
break;
} else {
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方还未分配成功,10秒后重试", symbol);
}
Thread.sleep(10000);
}
}
}
/**
* 查询放款进度
* @param namespace
* @param phoneNo
* @param symbol
* @throws InterruptedException
*/
public void queryLoanProgress(String namespace, String phoneNo, String symbol) throws InterruptedException {
String userId = String.valueOf(userService.getUserInfoByPhoneNo(namespace, phoneNo).getId());
while (true) {
Integer progress = loanApplicationHistoryService.getLastestLoanByUserId(namespace, userId).getProgress();
if (progress == 15) {
log.info("用户:" + userId + "放款成功!");
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("放款成功.", symbol);
}
break;
} else {
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的状态为:" + progress + ",资方放款中,30秒后重新查询状态!", symbol);
}
Thread.sleep(30000);
}
}
}
@Override @Override
public boolean genLoanUser(XyqbApplyDataVo xyqbApplyDataVo) throws Exception { public boolean genLoanUser(XyqbApplyDataVo xyqbApplyDataVo) throws Exception {
...@@ -297,7 +356,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -297,7 +356,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
return false; return false;
} }
// 查询资方审核进度,如未分配成功,则阻塞下一步 // 查询资方审核进度,如未分配成功,则阻塞下一步
queryInProcessStatusService.queryFundingAssignProgress(namespace, phoneNo, fundId, symbol); queryFundingAssignProgress(namespace, phoneNo, fundId, symbol);
return withDraw(xyqbApplyDataVo, true); return withDraw(xyqbApplyDataVo, true);
} }
...@@ -310,7 +369,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -310,7 +369,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
return false; return false;
} }
// 查询资方审核进度,如未分配成功,则阻塞下一步 // 查询资方审核进度,如未分配成功,则阻塞下一步
queryInProcessStatusService.queryFundingAssignProgress(namespace, phoneNo, fundId, symbol); queryFundingAssignProgress(namespace, phoneNo, fundId, symbol);
boolean withDrawResult = withDraw(xyqbApplyDataVo, true); boolean withDrawResult = withDraw(xyqbApplyDataVo, true);
if (!withDrawResult) { if (!withDrawResult) {
WebSocketServer.sendInfo("提现失败!", symbol); WebSocketServer.sendInfo("提现失败!", symbol);
...@@ -319,14 +378,14 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -319,14 +378,14 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
// 如果资方选择云信,则不需要手动调放款 // 如果资方选择云信,则不需要手动调放款
if (fundId == 1040) { if (fundId == 1040) {
WebSocketServer.sendInfo("提现成功,等待云信放款...", symbol); WebSocketServer.sendInfo("提现成功,等待云信放款...", symbol);
queryInProcessStatusService.queryLoanProgress(namespace, phoneNo, symbol); queryLoanProgress(namespace, phoneNo, symbol);
setUserStatusRedisValue(namespace, phoneNo, 3); // 因为没有调放款广达放款接口,因此需要手动设置redis值 setUserStatusRedisValue(namespace, phoneNo, 3); // 因为没有调放款广达放款接口,因此需要手动设置redis值
return true; return true;
} }
// 资方为平顶山,不需要手动放款 // 资方为平顶山,不需要手动放款
if (fundId == 1030) { if (fundId == 1030) {
WebSocketServer.sendInfo("已完成二次风控,等待平银放款...", symbol); WebSocketServer.sendInfo("已完成二次风控,等待平银放款...", symbol);
queryInProcessStatusService.queryLoanProgress(namespace, phoneNo, symbol); queryLoanProgress(namespace, phoneNo, symbol);
setUserStatusRedisValue(namespace, phoneNo, 3); setUserStatusRedisValue(namespace, phoneNo, 3);
} }
WebSocketServer.sendInfo("提现成功,10秒后放款!", symbol); WebSocketServer.sendInfo("提现成功,10秒后放款!", symbol);
...@@ -350,7 +409,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -350,7 +409,7 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
return false; return false;
} }
// 查询资方审核进度,如未分配成功,则阻塞下一步 // 查询资方审核进度,如未分配成功,则阻塞下一步
queryInProcessStatusService.queryFundingAssignProgress(namespace, phoneNo, fundId, symbol); queryFundingAssignProgress(namespace, phoneNo, fundId, symbol);
// 云南信托:二次风控失败,即代表放款失败 // 云南信托:二次风控失败,即代表放款失败
if (fundId == 1040 || fundId == 1030) { if (fundId == 1040 || fundId == 1030) {
withDraw(xyqbApplyDataVo, false); withDraw(xyqbApplyDataVo, false);
...@@ -380,8 +439,8 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService { ...@@ -380,8 +439,8 @@ public class XyqbGenDataServiceImpl implements XyqbGenDataService {
String redisResult = redisTemplate.opsForValue().get(namespace + "_" + phoneNo).toString(); String redisResult = redisTemplate.opsForValue().get(namespace + "_" + phoneNo).toString();
log.info("获取redis key结果为:" + redisResult); log.info("获取redis key结果为:" + redisResult);
XjfqGenProcessVo xjfqGenProcessVo = new XjfqGenProcessVo(); XjfqGenProcessVo xjfqGenProcessVo = new XjfqGenProcessVo();
xjfqGenProcessVo = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo); User user = userService.getUserInfoByPhoneNo(namespace, phoneNo);
xjfqGenProcessVo.setFundId(xyqbBasicQueryService.getAssignFundIdByUserId(namespace, xjfqGenProcessVo.getUserId())); xjfqGenProcessVo.setFundId(Math.toIntExact(assignFundingRecordService.getFundRecordByUserId(namespace, String.valueOf(user.getId())).getFundingCorpId()));
// 授信审核中 // 授信审核中
if (redisResult.equals("0")) { if (redisResult.equals("0")) {
xjfqGenProcessVo.setStatus(0); xjfqGenProcessVo.setStatus(0);
......
...@@ -4,4 +4,6 @@ import cn.qg.qaplatform.entity.xyqbuser.User; ...@@ -4,4 +4,6 @@ import cn.qg.qaplatform.entity.xyqbuser.User;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> { public interface UserService extends IService<User> {
User getUserInfoByPhoneNo(String namespace, String phoneNo);
} }
package cn.qg.qaplatform.service.xyqbUser.impl; package cn.qg.qaplatform.service.xyqbUser.impl;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.xyqbuser.User; import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.mapper.xyqbUser.UserMapper; import cn.qg.qaplatform.mapper.xyqbUser.UserMapper;
import cn.qg.qaplatform.service.xyqbUser.UserService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
UserMapper userMapper;
@Override
public User getUserInfoByPhoneNo(String namespace, String phoneNo) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("phone_no", phoneNo);
return userMapper.selectOne(userQueryWrapper);
}
} }
package cn.qg.qaplatform.service.zdata.xyqb; package cn.qg.qaplatform.service.yxm;
/** /**
* 清除羊小咩数据 * 清除羊小咩数据
......
package cn.qg.qaplatform.service.zdata.yxm; package cn.qg.qaplatform.service.yxm;
public interface PurchaseService { public interface PurchaseService {
......
package cn.qg.qaplatform.service.zdata.xyqb.impl; package cn.qg.qaplatform.service.yxm.impl;
import cn.qg.qaplatform.config.SwitchDataSource; import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo; import cn.qg.qaplatform.entity.xyqbuser.User;
import cn.qg.qaplatform.service.zdata.xyqb.ClearDataService; import cn.qg.qaplatform.service.xyqbUser.UserService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService; import cn.qg.qaplatform.service.yxm.ClearDataService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
...@@ -17,16 +17,16 @@ import java.util.Map; ...@@ -17,16 +17,16 @@ import java.util.Map;
public class ClearDataServiceImpl implements ClearDataService { public class ClearDataServiceImpl implements ClearDataService {
@Autowired @Autowired
XyqbBasicQueryService xyqbBasicQueryService; UserService userService;
@Autowired @Autowired
JdbcTemplate jdbcTemplate; JdbcTemplate jdbcTemplate;
@Override @Override
public boolean clearData(String namespace, String phoneNo) { public boolean clearData(String namespace, String phoneNo) {
XjfqGenProcessVo xjfqGenProcessVo = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo); User user = userService.getUserInfoByPhoneNo(namespace, phoneNo);
String userId = xjfqGenProcessVo.getUserId(); String userId = String.valueOf(user.getId());
String uuid = xjfqGenProcessVo.getUuid(); String uuid = user.getUuid();
log.info("开始删除{}环境{}用户kdsp中的数据!", namespace, phoneNo); log.info("开始删除{}环境{}用户kdsp中的数据!", namespace, phoneNo);
SwitchDataSource.dataSourceSwitch(namespace, "kdsp"); SwitchDataSource.dataSourceSwitch(namespace, "kdsp");
......
package cn.qg.qaplatform.service.zdata.yxm.impl; package cn.qg.qaplatform.service.yxm.impl;
import cn.qg.qaplatform.service.zdata.yxm.PurchaseService; import cn.qg.qaplatform.service.yxm.PurchaseService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
......
package cn.qg.qaplatform.service.zdata.risk;
/**
* 风控相关服务
*/
public interface RuleEngineService {
/**
* 添加授信黑名单
* @param uuid uuid
* @return 成功与否
*/
boolean addBlackList(String uuid);
}
package cn.qg.qaplatform.service.zdata.risk.impl;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mapper.zdata.RuleEngineMapper;
import cn.qg.qaplatform.service.zdata.risk.RuleEngineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 风控相关服务
*/
@Service
public class RuleEngineServiceImpl implements RuleEngineService {
@Autowired
RuleEngineMapper ruleEngineMapper;
/**
* 添加授信黑名单
* @param uuid uuid
* @return 成功与否
*/
@Override
public boolean addBlackList(String uuid) {
SwitchDataSource.dataSourceSwitch("fe", "workflow");
int insertResult = ruleEngineMapper.addBlackList(uuid);
return insertResult >= 1;
}
}
package cn.qg.qaplatform.service.zdata.xyqb;
/**
* 查询造数据流程中的状态
*/
public interface QueryInProcessStatusService {
/**
* 查询资方分配的进度
*/
void queryFundingAssignProgress(String namespace, String phoneNo, Integer fundId, String symbol) throws InterruptedException;
/**
* 查询发起提现的进度
*/
void queryLoanProgress(String namespace, String phoneNo, String symbol) throws InterruptedException;
}
package cn.qg.qaplatform.service.zdata.xyqb;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.zdata.XjfqUserEntity;
import java.util.List;
import java.util.Map;
/**
* 单个状态数据查询
*/
public interface XyqbBasicQueryService {
/**
* 获取所有的用户状态
*/
List<Map<String, Object>> getAllUserLoanStatus();
/**
* 获取所有环境信息
*/
List<Map<String, Object>> getAllEnvInfo();
/**
* 根据uuid获取用户信息
*/
List<XjfqUserEntity> getUserDataListByUuidList(String namespace, List<String> uuidList);
/**
* 获取未申请用户
* @return uuidList
*/
List<String> getUnApplyUserUuidList(String namespace, Integer channel);
/**
* 判断用户是否存在
*/
boolean queryIfPhoneExist(String namespace, String phone);
/**
* 获取审核状态的用户Id列表
*/
List<String> getAuditStatusUserIdList(String namespace, Integer status, Integer channel);
/**
* 审核通过未提现
*/
List<String> queryAuthAndUnWithdraw(String namespace, Integer channel, Integer fundId);
/**
* 根据userIdList获取用户信息列表
*/
List<XjfqUserEntity> getUserDataListByUserIdList(String namespace, List<String> userIdList);
/**
* 获取不同放款状态的用户
*/
List<String> getLoanStatusUserIdList(String namespace, Integer status, Integer channel, Integer fundId);
/**
* 获取多订单用户信息列表
*/
List<String> getMultiOrderUserDataList(String namespace);
/**
* 根据userId获取资金方id
*/
Integer getAssignFundIdByUserId(String namespace, String userId);
/**
* 根据手机号查询用户信息
*/
XjfqGenProcessVo getUserInfoByPhoneNo(String namespace, String phoneNo);
/**
* 根据userId获取用户放款状态
*/
Integer getLoanProgressByUserId(String namespace, String userId);
}
package cn.qg.qaplatform.service.zdata.xyqb;
import cn.qg.qaplatform.utils.page.PageResult;
/**
* 多个状态结合查询
*/
public interface XyqbQueryService {
/**
* 获取已有用户状态数据
* @param status 用户状态
* @param namespace 环境
* @return
*/
PageResult getLoanUserData(String namespace, Integer status, Integer channel, Integer fundId, Integer pageNum, Integer pageSize);
}
package cn.qg.qaplatform.service.zdata.xyqb.impl;
import cn.qg.qaplatform.config.WebSocketServer;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService;
import cn.qg.qaplatform.service.zdata.xyqb.QueryInProcessStatusService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class QueryInProcessStatusServiceImpl implements QueryInProcessStatusService {
@Autowired
XyqbBasicQueryService xyqbBasicQueryService;
@Override
public void queryFundingAssignProgress(String namespace, String phoneNo, Integer fundId, String symbol) throws InterruptedException {
String userId = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo).getUserId();
while (true) {
Integer searchResult = xyqbBasicQueryService.getAssignFundIdByUserId(namespace, userId);
log.info(searchResult.toString());
if (fundId.equals(searchResult)) {
log.info("用户:" + userId + "资方分配成功!");
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方分配成功.", symbol);
}
break;
} else {
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的资方为:" + searchResult +",资方还未分配成功,10秒后重试", symbol);
}
Thread.sleep(10000);
}
}
}
@Override
public void queryLoanProgress(String namespace, String phoneNo, String symbol) throws InterruptedException {
String userId = xyqbBasicQueryService.getUserInfoByPhoneNo(namespace, phoneNo).getUserId();
while (true) {
Integer progress = xyqbBasicQueryService.getLoanProgressByUserId(namespace, userId);
if (progress == 15) {
log.info("用户:" + userId + "放款成功!");
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("放款成功.", symbol);
}
break;
} else {
if (!StringUtils.isEmpty(symbol)) {
WebSocketServer.sendInfo("查询到的状态为:" + progress + ",资方放款中,30秒后重新查询状态!", symbol);
}
Thread.sleep(30000);
}
}
}
}
package cn.qg.qaplatform.service.zdata.xyqb.impl;
import cn.qg.qaplatform.enums.LoanStatus;
import cn.qg.qaplatform.enums.Namespace;
import cn.qg.qaplatform.mapper.zdata.XyqbLoanDataMapper;
import cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo;
import cn.qg.qaplatform.entity.zdata.XjfqUserEntity;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class XyqbBasicQueryServiceImpl implements XyqbBasicQueryService {
@Autowired
XyqbLoanDataMapper xyqbLoanDataMapper;
/**
* 获取所有用户状态
* @return 用户状态列表
*/
@Override
public List<Map<String, Object>> getAllUserLoanStatus() {
List<Map<String, Object>> allUserLoanStatusList = new ArrayList<>();
for (LoanStatus loanStatus:LoanStatus.values()) {
Map<String, Object> tempMap = new HashMap<>();
tempMap.put("value", loanStatus.getStatus());
tempMap.put("label", loanStatus.getDesc());
allUserLoanStatusList.add(tempMap);
}
return allUserLoanStatusList;
}
/**
* 获取所有环境信息
* @return 环境信息列表
*/
@Override
public List<Map<String, Object>> getAllEnvInfo() {
List<Map<String, Object>> allEnvList = new ArrayList<>();
for (Namespace namespace: Namespace.values()) {
Map<String, Object> tempMap = new HashMap<>();
tempMap.put("value", namespace.getKey());
tempMap.put("label", namespace.getDesc());
allEnvList.add(tempMap);
}
return allEnvList;
}
/**
* 根据uuidList获取用户信息
* @param uuidList
* @return
*/
@Override
public List<XjfqUserEntity> getUserDataListByUuidList(String namespace, List<String> uuidList) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
return xyqbLoanDataMapper.getUserDataListByUuidList(uuidList);
}
/**
* 获取未申请用户uuidList
* @return
*/
@Override
public List<String> getUnApplyUserUuidList(String namespace, Integer channel) {
SwitchDataSource.dataSourceSwitch(namespace, "business_flow");
return xyqbLoanDataMapper.getUnApplyLoanUserUuidList(channel);
}
/**
* 查看手机号是否在库里
* @param phone
* @return
*/
@Override
public boolean queryIfPhoneExist(String namespace, String phone) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
if (xyqbLoanDataMapper.queryIfPhoneExist(phone) != null) {
return true;
}
return false;
}
/**
* 根据审核状态获取用户Id列表
* @param namespace
* @param status 0-授信中,1-审核拒绝,2-审核成功
* @return
*/
@Override
public List<String> getAuditStatusUserIdList(String namespace, Integer status, Integer channel) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
if (status == 0) {
return xyqbLoanDataMapper.getAuditStatusUserIdList(0, channel);
}
if (status == 1) {
return xyqbLoanDataMapper.getAuditStatusUserIdList(1, channel);
}
if (status == 2) {
return xyqbLoanDataMapper.getAuditStatusUserIdList(2, channel);
}
return null;
}
/**
* 审核通过未提现
* @param namespace 环境
* @param channel 渠道id
* @param fundId 资方id
* @return 用户id列表
*/
@Override
public List<String> queryAuthAndUnWithdraw(String namespace, Integer channel, Integer fundId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
List<String> userIdList = xyqbLoanDataMapper.queryAuthAndUnWithdraw(channel, fundId);
return userIdList;
}
/**
* 根据userIdList获取用户信息列表
*
* @param userIdList
* @return
*/
@Override
public List<XjfqUserEntity> getUserDataListByUserIdList(String namespace, List<String> userIdList) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
List<XjfqUserEntity> result = xyqbLoanDataMapper.getUserDataListByUserIdList(userIdList);
return result;
}
/**
* 获取不同放款状态的用户
* @param namespace
* @param status 0-放款失败,1-放款成功
* @return
*/
@Override
public List<String> getLoanStatusUserIdList(String namespace, Integer status, Integer channel, Integer fundId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
if (status == 0) {
return xyqbLoanDataMapper.getLoanStatusUserIdList(23, channel, fundId);
}
if (status == 1) {
return xyqbLoanDataMapper.getLoanStatusUserIdList(15, channel, fundId);
}
return null;
}
/**
* 获取多订单用户列表
* @param namespace
* @return
*/
@Override
public List<String> getMultiOrderUserDataList(String namespace) {
SwitchDataSource.dataSourceSwitch("fe", "workflow");
return xyqbLoanDataMapper.getMultiOrderuuidList();
}
@Override
public Integer getAssignFundIdByUserId(String namespace, String userId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
return xyqbLoanDataMapper.getAssignFundIdByUserId(userId);
}
@Override
public XjfqGenProcessVo getUserInfoByPhoneNo(String namespace, String phoneNo) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb_user");
return xyqbLoanDataMapper.getUserInfoByPhoneNo(phoneNo);
}
@Override
public Integer getLoanProgressByUserId(String namespace, String userId) {
SwitchDataSource.dataSourceSwitch(namespace, "xyqb");
return xyqbLoanDataMapper.getLoanProgressByUserId(userId);
}
}
package cn.qg.qaplatform.service.zdata.xyqb.impl;
import cn.qg.qaplatform.entity.zdata.XjfqUserEntity;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbQueryService;
import cn.qg.qaplatform.service.zdata.xyqb.XyqbBasicQueryService;
import cn.qg.qaplatform.utils.page.PageResult;
import cn.qg.qaplatform.utils.page.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 查询旧有数据
*/
@Service
@Slf4j
public class XyqbQueryServiceImpl implements XyqbQueryService {
@Autowired
private XyqbBasicQueryService basicLoanStatusDataService;
/**
* 筛选某个状态的用户(0-注册未申请,1-授信中,2-审核通过,3-审核拒绝,4-审核通过未提现,5-放款成功,6-放款失败,7-多订单)
*
* @param namespace 环境
* @param status 用户状态
* @param channel 渠道id
* @param fundId 资方id
* @return
*/
@Override
public PageResult getLoanUserData(String namespace, Integer status, Integer channel, Integer fundId, Integer pageNum, Integer pageSize) {
List<XjfqUserEntity> result = new ArrayList<>();
/**
* 0-注册未申请
*/
if (status == 0) {
List<String> uuidList = basicLoanStatusDataService.getUnApplyUserUuidList(namespace, channel);
if (uuidList.isEmpty()) {
log.info("渠道:" + channel + "【注册未申请】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUuidList(namespace, uuidList);
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 1-授信中
*/
if (status == 1) {
List<String> userIdList = basicLoanStatusDataService.getAuditStatusUserIdList(namespace, 0, channel);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + "【授信中】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 2-审核通过
*/
if (status == 2) {
List<String> userIdList = basicLoanStatusDataService.getAuditStatusUserIdList(namespace, 2, channel);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + "【审核通过】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
if (fundId == null) {
result.forEach((item) -> item.setFundId(basicLoanStatusDataService.getAssignFundIdByUserId(namespace, item.getUserId())));
} else {
result.forEach((item) -> item.setFundId(fundId));
}
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 3-审核拒绝
*/
if (status == 3) {
List<String> userIdList = basicLoanStatusDataService.getAuditStatusUserIdList(namespace, 1, channel);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + "【审核拒绝】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
if (fundId == null) {
result.forEach((item) -> item.setFundId(basicLoanStatusDataService.getAssignFundIdByUserId(namespace, item.getUserId())));
} else {
result.forEach((item) -> item.setFundId(fundId));
}
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 4-审核通过未提现
*/
if (status == 4) {
List<String> userIdList = basicLoanStatusDataService.queryAuthAndUnWithdraw(namespace, channel, fundId);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + ", 资方:" + fundId + "【审核通过未提现】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
result.forEach((item) -> item.setFundId(fundId));
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 5-放款成功
*/
if (status == 5) {
List<String> userIdList = basicLoanStatusDataService.getLoanStatusUserIdList(namespace, 1, channel, fundId);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + ", 资方:" + fundId + "【放款成功】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
if (fundId == null) {
result.forEach((item) -> item.setFundId(basicLoanStatusDataService.getAssignFundIdByUserId(namespace, item.getUserId())));
} else {
result.forEach((item) -> item.setFundId(fundId));
}
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 6-放款失败
*/
if (status == 6) {
List<String> userIdList = basicLoanStatusDataService.getLoanStatusUserIdList(namespace, 0, channel, fundId);
if (userIdList.isEmpty()) {
log.info(namespace + "环境," + "渠道:" + channel + ", 资方:" + fundId + "【放款失败】的人数为空!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUserIdList(namespace, userIdList);
if (fundId == null) {
result.forEach((item) -> item.setFundId(basicLoanStatusDataService.getAssignFundIdByUserId(namespace, item.getUserId())));
} else {
result.forEach((item) -> item.setFundId(fundId));
}
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
/**
* 7-多订单白名单
*/
if (status == 7) {
List<String> uuidList = basicLoanStatusDataService.getMultiOrderUserDataList(namespace);
if (uuidList.isEmpty()) {
log.info(namespace + "环境,多订单白名单的用户数为0!");
return null;
}
PageHelper.startPage(pageNum, pageSize);
result = basicLoanStatusDataService.getUserDataListByUuidList(namespace, uuidList);
PageInfo<XjfqUserEntity> pageList = new PageInfo<>(result);
PageResult pageResult = PageUtil.getPageResult(pageList, pageNum, pageSize);
return pageResult;
}
log.info("status=" + status + "状态不存在!");
return null;
}
}
<?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="cn.qg.qaplatform.mapper.stools.CommonMapper">
<insert id="addLoginWhiteList">
INSERT INTO `white_list` (`key`, `key_type`, `enable`) VALUE (#{key}, #{keyType}, '1');
</insert>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?> <?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" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.qg.qaplatform.mapper.zdata.XyqbLoanDataMapper"> <mapper namespace="cn.qg.qaplatform.mapper.xyqb.XyqbMapper">
<!-- 注册未申请 -->
<select id="getUnApplyLoanUserUuidList" resultType="java.lang.String">
SELECT `uuid` FROM `apply_list`
<where>
`apply_status` = 1
<if test="channel != null">
AND `channel_id` = #{channel}
</if>
</where>
</select>
<!-- 根据uuidList获取用户信息列表 -->
<select id="getUserDataListByUuidList" parameterType="java.util.List" resultType="cn.qg.qaplatform.entity.zdata.XjfqUserEntity">
SELECT `id` as userId, `phone_no` as phoneNo, `uuid`, `registered_from` as registeredFrom, `enable`, `created_at` as createdAt FROM `user`
where `uuid` in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
order by created_at desc
</select>
<!-- 判断手机号是否在库里 -->
<select id="queryIfPhoneExist" resultType="object">
SELECT * FROM `user` where phone_no = #{phone}
</select>
<!-- 根据userIdList获取用户信息List -->
<select id="getUserDataListByUserIdList" resultType="cn.qg.qaplatform.entity.zdata.XjfqUserEntity">
SELECT `id` as userId, `uuid`, `phone_no` as phoneNo, `registered_from` as registeredFrom, `enable`, `created_at` as createdAt FROM `user`
where `id` in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
order by created_at desc
</select>
<!-- 根据不同审核状态返回用户Id列表 -->
<select id="getAuditStatusUserIdList" resultType="java.lang.String">
SELECT `user_id` FROM apply_quota_record
<where>
`apply_status` = #{status}
<if test="channel != null">
AND `apply_from` = #{channel}
</if>
</where>
</select>
<!-- 审核通过未提现 xyqb库 --> <!-- 审核通过未提现 xyqb库 -->
<select id="queryAuthAndUnWithdraw" resultType="java.lang.String"> <select id="queryAuthAndUnWithdraw" resultType="java.lang.String">
...@@ -82,23 +36,6 @@ ...@@ -82,23 +36,6 @@
</where> </where>
</select> </select>
<!-- 获取多订单用户列表 -->
<select id="getMultiOrderuuidList" resultType="java.lang.String">
SELECT uuid FROM `white_list_config_new`
</select>
<!-- 获取资方id -->
<select id="getAssignFundIdByUserId" resultType="java.lang.Integer">
SELECT `funding_corp_id` as `fundId` FROM `assign_funding_record`
WHERE `user_id` = #{userId} order by id desc limit 0,1
</select>
<!-- 根据手机号获取用户信息-->
<select id="getUserInfoByPhoneNo" resultType="cn.qg.qaplatform.entity.zdata.XjfqGenProcessVo">
SELECT `id` as userId, `phone_no` as phoneNo, `uuid`, `registered_from` as registeredFrom, `created_at` as createdAt FROM `user`
WHERE `phone_no` = #{phoneNo}
</select>
<!-- 根据用户id获取放款进度 --> <!-- 根据用户id获取放款进度 -->
<select id="getLoanProgressByUserId" resultType="java.lang.Integer"> <select id="getLoanProgressByUserId" resultType="java.lang.Integer">
SELECT `progress` FROM `loan_application_history` SELECT `progress` FROM `loan_application_history`
......
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