Commit a09acac6 authored by 王向伟's avatar 王向伟

Merge remote-tracking branch 'origin/master' into features/userInfo_0708

parents def4b2d2 28060a1d
......@@ -2,6 +2,8 @@ package cn.quantgroup.cashloanflowboss.api.order.controller;
import cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo;
import cn.quantgroup.cashloanflowboss.api.order.model.LendingFormModel;
import cn.quantgroup.cashloanflowboss.api.order.model.RepayStatusEnum;
import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import cn.quantgroup.cashloanflowboss.api.order.service.MoOrderServiceImpl;
import cn.quantgroup.cashloanflowboss.api.order.service.OrderService;
import cn.quantgroup.cashloanflowboss.component.route.ServiceRoute;
......@@ -216,10 +218,16 @@ public class OrderController {
return Result.buildFail("channelOrderNumber 和 loanId 不能同时为空");
}
OrderService orderService = serviceRoute.routeOrderService(null,channelOrderNumber,loanId);
return Result.buildSuccess(orderService.findRepaymentPlan(channelOrderNumber, loanId));
RepaymentPlansResultModel result = orderService.findRepaymentPlan(channelOrderNumber, loanId);
if (result != null) {
result.getRepaymentPlans().forEach(r -> {
RepayStatusEnum statusEnum = RepayStatusEnum.getByValue(r.getRepaymentStatus());
r.setRepaymentStatus(statusEnum == null ? null : statusEnum.getDesc());
});
}
return Result.buildSuccess(result);
}
/**
* 发起结清
*
......
package cn.quantgroup.cashloanflowboss.api.order.model;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
/**
* 还款状态
*
* 还款状态,0 ("未还款")、2 ("已逾期")、3 ("已还款")
*
* @author lupeng
* 2020/7/10
*/
public enum RepayStatusEnum {
NO_REPAYMENT("0", "未还款"),
OVERDUE("2", "已逾期"),
OK_REPAYMENT("3", "已还款"),
;
@Getter
private String value;
@Getter
private String desc;
RepayStatusEnum (String value, String desc) {
this.desc = desc;
this.value = value;
}
public static RepayStatusEnum getByValue(String value) {
if (StringUtils.isNotBlank(value)) {
for (RepayStatusEnum statusEnum : RepayStatusEnum.values()) {
if (statusEnum.value.equals(value)) {
return statusEnum;
}
}
}
return null;
}
}
......@@ -27,7 +27,7 @@ public class RepaymentPlanItem {
/**
* 还款状态,0 ("未还款")、2 ("已逾期")、3 ("已还款")
*/
private Integer repaymentStatus;
private String repaymentStatus;
/**
* 应还本金
*/
......
......@@ -549,7 +549,7 @@ public class MoOrderServiceImpl implements OrderService{
callbackRecordVoModel.setTermNo(callbackRecord.getTermNo());
Tuple<String, String> stringStringTuple = OrderUtil.KaNoticeTypeNameConvertChnName(callbackRecord.getNoticeType());
callbackRecordVoModel.setNoticeType(stringStringTuple != null ? stringStringTuple.getValue() : callbackRecord.getNoticeType().name());
callbackRecordVoModel.setNoticeType(!"未知状态".equals(stringStringTuple.getValue()) ? stringStringTuple.getValue() : callbackRecord.getNoticeType().getDesc());
callbackRecordVoModel.setCallbackStatus(callbackRecord.getCallbackStatus());
callbackRecordVoModel.setChannelId(callbackRecord.getChannelId());
......@@ -570,7 +570,7 @@ public class MoOrderServiceImpl implements OrderService{
callbackFailRecordVoModel.setTermNo(callbackFailRecord.getTermNo());
Tuple<String, String> stringStringTuple = OrderUtil.KaNoticeTypeNameConvertChnName(callbackFailRecord.getNoticeType());
callbackFailRecordVoModel.setNoticeType(stringStringTuple != null ? stringStringTuple.getValue() : callbackFailRecord.getNoticeType().name());
callbackFailRecordVoModel.setNoticeType(!"未知状态".equals(stringStringTuple.getValue()) ? stringStringTuple.getValue() : callbackFailRecord.getNoticeType().getDesc());
callbackFailRecordVoModel.setCallbackStatus(callbackFailRecord.getCallbackStatus());
callbackFailRecordVoModel.setChannelId(callbackFailRecord.getChannelId());
......@@ -608,7 +608,7 @@ public class MoOrderServiceImpl implements OrderService{
ServiceResult<RepaymentPlansResultModel> serviceResult = xyqbCenterService.findRepaymentPlan(loanId);
log.info("[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},serviceResult={}", channelOrderNumber, loanId, serviceResult);
if (Objects.isNull(serviceResult) || !serviceResult.isSuccess()) {
if (Objects.isNull(serviceResult) || !serviceResult.isSuccess() || Objects.isNull(serviceResult.getData())) {
log.error("[findRepaymentPlan] 查询还款计划异常,返回页面空list");
return null;
}
......
......@@ -232,18 +232,19 @@ public class OrderServiceImpl implements OrderService {
if (clfChannelConfiguration == null) {
return new Tuple(false, "审批失败,clfChannelConfiguration渠道配置为空");
}
QuotaProduct quotaProduct = null;
Map<String, Object> data = null;
if (channels.contains(orderMapping.getRegisteredFrom())) {
data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, 9);
QuotaProduct quotaProduct ;
Map<String, Object> data ;
Long channelId = orderMapping.getRegisteredFrom();
if (StringUtils.isEmpty(clfChannelConfiguration.getXyqbProductId())) {
//没有配置productId多订单类型
quotaProduct = xyqbCenterService.getXyqbProduct(channelId);
} else {
quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId());
if (quotaProduct == null) {
return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
}
data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, quotaProduct.getProductType());
}
if (quotaProduct == null) {
return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
}
data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, quotaProduct.getProductType());
// 发起审批
......@@ -563,7 +564,7 @@ public class OrderServiceImpl implements OrderService {
callbackRecordVoModel.setTermNo(callbackRecord.getTermNo());
Tuple<String, String> stringStringTuple = OrderUtil.KaNoticeTypeNameConvertChnName(callbackRecord.getNoticeType());
callbackRecordVoModel.setNoticeType(stringStringTuple != null ? stringStringTuple.getValue() : callbackRecord.getNoticeType().name());
callbackRecordVoModel.setNoticeType(!"未知状态".equals(stringStringTuple.getValue()) ? stringStringTuple.getValue() : callbackRecord.getNoticeType().getDesc());
callbackRecordVoModel.setCallbackStatus(callbackRecord.getCallbackStatus());
callbackRecordVoModel.setChannelId(callbackRecord.getChannelId());
......@@ -584,7 +585,7 @@ public class OrderServiceImpl implements OrderService {
callbackFailRecordVoModel.setTermNo(callbackFailRecord.getTermNo());
Tuple<String, String> stringStringTuple = OrderUtil.KaNoticeTypeNameConvertChnName(callbackFailRecord.getNoticeType());
callbackFailRecordVoModel.setNoticeType(stringStringTuple != null ? stringStringTuple.getValue() : callbackFailRecord.getNoticeType().name());
callbackFailRecordVoModel.setNoticeType(!"未知状态".equals(stringStringTuple.getValue()) ? stringStringTuple.getValue() : callbackFailRecord.getNoticeType().getDesc());
callbackFailRecordVoModel.setCallbackStatus(callbackFailRecord.getCallbackStatus());
callbackFailRecordVoModel.setChannelId(callbackFailRecord.getChannelId());
......@@ -623,7 +624,7 @@ public class OrderServiceImpl implements OrderService {
ServiceResult<RepaymentPlansResultModel> serviceResult = xyqbCenterService.findRepaymentPlan(loanId);
log.info("[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},serviceResult={}", channelOrderNumber, loanId, serviceResult);
if (Objects.isNull(serviceResult) || !serviceResult.isSuccess()) {
if (Objects.isNull(serviceResult) || !serviceResult.isSuccess() || Objects.isNull(serviceResult.getData())) {
log.error("[findRepaymentPlan] 查询还款计划异常,返回页面空list");
return null;
}
......
......@@ -82,6 +82,10 @@ public class OrderUtil {
return new Tuple(kaNoticeType, "已关单");
case "CANCEL_AFTER_LOAN" :
return new Tuple(kaNoticeType, "存管提现超时或贷后关单");
case "REPAYMENT_RESULT":
return new Tuple<>(kaNoticeType, "还款结果通知");
case "QUOTA_EXPIRED":
return new Tuple<>(kaNoticeType, "额度失效");
default:
return new Tuple(kaNoticeType, "未知状态");
}
......
......@@ -146,14 +146,14 @@ public class UserController {
* @return
*/
// @Security(authorityId = "User.add")
@Security(authorityId = "User.add")
@PostMapping(value = "/add")
public Result<Boolean> addUser(@RequestBody @Valid UserModelVo userModelVo) {
return userService.addUser(userModelVo);
}
@PutMapping("/modify")
// @Security(authorityId = "User.update")
@Security(authorityId = "User.update")
public Result<Boolean> modifyUser(@RequestBody @Valid UserModelVo userModelVo) {
return userService.modifyUser(userModelVo);
}
......@@ -165,7 +165,7 @@ public class UserController {
* @return
*/
@GetMapping("/list/get")
//@Security(authorityId = "User.list")
@Security(authorityId = "User.list")
public Result<Page<User>> UserList(@Valid QueryUserListModel queryUserListModel) {
return userService.getUserList(queryUserListModel);
}
......@@ -193,7 +193,7 @@ public class UserController {
}
@PutMapping("/update/password")
// @Security(authorityId = "User.update")
@Security(authorityId = "User.update")
public Result<Boolean> modifyUser(@RequestBody @Valid UpdatePasswordParam param) {
return userService.updatePassword(param);
}
......
......@@ -3,6 +3,7 @@ package cn.quantgroup.cashloanflowboss.api.user.service;
import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.api.role.entity.Role;
import cn.quantgroup.cashloanflowboss.api.role.repository.RoleRepository;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserRank;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.User;
import cn.quantgroup.cashloanflowboss.api.user.model.*;
......@@ -300,7 +301,15 @@ public class UserServiceImpl implements UserService {
}
exist.setChannelName(configuration.getChannelName());
}
if (roleId == 1L) {
// 将普通用户设置成超级管理,需要级联设置用户级别
exist.setRank(UserRank.SUPER_ADMINISTRATOR);
} else {
if (exist.getRank().equals(UserRank.SUPER_ADMINISTRATOR)) {
// 如果之前是超管 改成普通操作员,用户级别做相应调整
exist.setRank(UserRank.OPERATOR);
}
}
//exist.setPassword(MD5Tools.md5(userModelVo.getPassword()));
exist.setRoles(Collections.singletonList(role));
exist.setUpdateTime(new Date());
......
......@@ -17,7 +17,7 @@ public enum ApplicationStatus implements Status<ApplicationStatus> {
INTERNAL_SERVICE_ERROR(500001, "内部服务错误"),
ARGUMENT_VALID_EXCEPTION(500002, "无效的请求参数"),
ARGUMENT_VALID_EXCEPTION(500002, "无效的参数"),
AUTHENTICATION_FAILURE(500003, "非法访问"),
......
......@@ -6,7 +6,6 @@ package cn.quantgroup.cashloanflowboss.spi.clf.model;
* Created with suntao on 2018/4/15
*/
public enum KANoticeType {
CREDIT_ORDER_SUBMITTING("CREDIT_ING","授信中"),
CREDIT_SUCC("CREDIT_SUCC", "授信成功"),//0
CREDIT_FAIL("CREDIT_FAIL", "授信失败"),//1
FUAD_ASSIFN_SUCC("FUAD_ASSIFN_SUCC", "分配资金方成功"),//2
......@@ -33,17 +32,17 @@ public enum KANoticeType {
ADD_CARD_SUCCESS("ADD_CARD_SUCCESS", "添加银行卡成功,非提现页面绑卡"), //23
REPAY_FAIL("REPAY_FAIL", "还款失败"), //24
UNKNOWN("UNKNOWN", "没有逻辑意义的数据库兼容的值"),
RP_INIT_F_SUCC("REPAYMENT_INIT_FUND_SUCC", "放款成功推送还款计划"),
APPROVE_ING("APPROVE_ING", "审批中"),
PAY_ING("PAY_ING", "放款中"),
TEST("TEST", "test"),
REPAYMENT_RESULT("REPAYMENT_RESULT","还款结果告知"),//30
QUOTA_EXPIRED("QUOTA_EXPIRED", "额度失效"),//31
WITHDRAW_APPROVING("WITHDRAW_APPROVING", "提现审批中"), //对应loan状态50,等待二次审核
FUND_WAITING_WITHDRAW("FUND_WAITING_WITHDRAW", "放款成功,等待二次提现"),
UNKNOWN("UNKNOWN", "没有逻辑意义的数据库兼容的值"),
RP_INIT_F_SUCC("REPAYMENT_INIT_FUND_SUCC", "放款成功推送还款计划"),
TEST("TEST", "test");
CREDIT_ORDER_SUBMITTING("CREDIT_ING","授信中"),
;
private String type;
private String desc;
......
......@@ -4,6 +4,7 @@ package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.QuotaProduct;
import cn.quantgroup.cashloanflowboss.spi.xyqb.source.XYQBDataSource;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
/**
* @author Jie.Feng
......@@ -11,4 +12,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
*/
@XYQBDataSource
public interface QuotaProductRepository extends JpaRepository<QuotaProduct,Long> {
@Query(value = "select * from quota_product where channel_id=?1 limit 1", nativeQuery = true)
QuotaProduct findByChannelIdFirstOne(Long channelId);
}
......@@ -63,4 +63,6 @@ public interface XYQBCenterService {
ApplyScenarioInfoEntity findFirstByApplyNo(String applyNo);
QuotaProduct getXyqbProduct(Long channelId);
}
......@@ -4,8 +4,10 @@ import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.base.ServiceResult;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneUtil;
import cn.quantgroup.cashloanflowboss.spi.jolyne.model.JolyneDB;
......@@ -288,4 +290,10 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
return applyScenarioInfoRepository.findFirstByOrderNo(applyNo);
}
@Override
public QuotaProduct getXyqbProduct(Long channelId) {
Assert.isNull(channelId, ApplicationStatus.ARGUMENT_VALID_EXCEPTION);
return quotaProductRepository.findByChannelIdFirstOne(channelId);
}
}
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