Commit 0aeda08d authored by suntao's avatar suntao

渠道配置信息 编辑保存

parent 0fb0a5dd
package cn.quantgroup.cashloanflowboss.api.channel.controller; package cn.quantgroup.cashloanflowboss.api.channel.controller;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfAddModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfBaseModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfVo;
import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit; import cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.api.channel.service.ChannelConfService; import cn.quantgroup.cashloanflowboss.api.channel.service.ChannelConfService;
import cn.quantgroup.cashloanflowboss.core.base.Result; import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.utils.JSONTools;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Map;
/** /**
* Created with suntao on 2019/8/2 * Created with suntao on 2019/8/2
* @author suntao * @author suntao
...@@ -34,10 +42,17 @@ public class ChannelConfController { ...@@ -34,10 +42,17 @@ public class ChannelConfController {
@GetMapping("/cfg/info") @GetMapping("/cfg/info")
public Result channelConfInfo(Long channelId) { public Result getChannelConfInfo(Long channelId) {
return Result.buildSuccess(channelConfService.getChannelConf(channelId), "success"); return Result.buildSuccess(channelConfService.getChannelConf(channelId), "success");
} }
@PostMapping("/cfg/info")
public Result editChannelConfInfo(@RequestBody @Valid ChannelConfVo channelConfVo) {
return Result.buildSuccess(channelConfService.editChannelConfInfo(channelConfVo));
}
} }
...@@ -69,10 +69,22 @@ public class ChannelConf extends Primary { ...@@ -69,10 +69,22 @@ public class ChannelConf extends Primary {
private String md5Key; private String md5Key;
/** /**
* env_url * env_path
*/ */
@Column(name = "env_url") @Column(name = "env_path")
private String envUrl; private String envPath;
/**
* authCode
*/
@Column(name = "auth_code")
private String authCode;
/**
* riskCode
*/
@Column(name = "risk_code")
private String riskCode;
/** /**
* channel_ip * channel_ip
......
...@@ -10,7 +10,7 @@ import lombok.Data; ...@@ -10,7 +10,7 @@ import lombok.Data;
*/ */
@Data @Data
public class ChannelConfAddModel { public class ChannelConfAddModel {
private String envUrl; private String envPath;
private String channelIp; private String channelIp;
private String approveCallBackUrl; private String approveCallBackUrl;
private String orderStatusCallBackUrl; private String orderStatusCallBackUrl;
......
...@@ -2,13 +2,17 @@ package cn.quantgroup.cashloanflowboss.api.channel.model; ...@@ -2,13 +2,17 @@ package cn.quantgroup.cashloanflowboss.api.channel.model;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
/** /**
* Created with suntao on 2019/8/2 * Created with suntao on 2019/8/2
*/ */
@Data @Data
public class ChannelConfBaseModel { public class ChannelConfBaseModel {
private Integer channelId; @NotNull(message = "渠道id不能为空")
private Long channelId;
private String channelName; private String channelName;
private String channelCode; private String channelCode;
private String env; private String env;
...@@ -17,4 +21,6 @@ public class ChannelConfBaseModel { ...@@ -17,4 +21,6 @@ public class ChannelConfBaseModel {
private String bizType; private String bizType;
private String aesKey; private String aesKey;
private String md5Key; private String md5Key;
private String authCode;
private String riskCode;
} }
package cn.quantgroup.cashloanflowboss.api.channel.model;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* function:
* date: 2019/8/7
*
* @author: suntao
*/
@Data
public class ChannelConfVo {
@NotNull(message = "基础配置信息不能为空")
private ChannelConfBaseModel basicInfo;
@NotNull(message = "回调地址配置信息不能为空")
private ChannelConfAddModel addInfo;
}
package cn.quantgroup.cashloanflowboss.api.channel.service; package cn.quantgroup.cashloanflowboss.api.channel.service;
import java.sql.Timestamp;
import java.util.*; import java.util.*;
import cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf; import cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfAddModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfBaseModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfVo;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelListModel; import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelListModel;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ChannelConfiguration; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfCallbackConfiguration;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration;
import cn.quantgroup.cashloanflowboss.api.channel.repository.boss.ChannelConfRepository; import cn.quantgroup.cashloanflowboss.api.channel.repository.boss.ChannelConfRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ChannelConfigurationRepository; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderCallBack;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfCallbackConfigurationRepository;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfChannelConfigurationRepository;
import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil; import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import cn.quantgroup.cashloanflowboss.api.user.model.Pagination; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderCallbackRepository;
import cn.quantgroup.cashloanflowboss.core.base.Result; import cn.quantgroup.cashloanflowboss.utils.IgnorePropertiesUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
...@@ -28,15 +36,18 @@ public class ChannelConfService { ...@@ -28,15 +36,18 @@ public class ChannelConfService {
@Autowired @Autowired
private ChannelConfRepository channelConfRepository; private ChannelConfRepository channelConfRepository;
@Autowired @Autowired
private ChannelConfigurationRepository clfChannelConfigurationRepository; private ClfChannelConfigurationRepository clfChannelConfigurationRepository;
@Autowired
private ClfCallbackConfigurationRepository clfCallbackConfigurationRepository;
@Autowired
private ClfOrderCallbackRepository clfOrderCallbackRepository;
public Page<ChannelListModel> getChannelInfo(Integer pageNumber, Integer pageSize, Long channelId) { public Page<ChannelListModel> getChannelInfo(Integer pageNumber, Integer pageSize, Long channelId) {
Page<ChannelConfiguration> page = this.clfChannelConfigurationRepository.findAll((root, criteriaQuery, criteriaBuilder) -> { Page<ClfChannelConfiguration> page = this.clfChannelConfigurationRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>(); List<Predicate> predicates = new ArrayList<>();
...@@ -60,7 +71,7 @@ public class ChannelConfService { ...@@ -60,7 +71,7 @@ public class ChannelConfService {
channelListModel.setChannelName(it.getChannelName()); channelListModel.setChannelName(it.getChannelName());
channelListModel.setChannelCode(it.getChannelCode()); channelListModel.setChannelCode(it.getChannelCode());
// TODO // TODO
channelListModel.setBizType(1); channelListModel.setBizType(null);
channelListModel.setCreatedAt(it.getCreatedAt()); channelListModel.setCreatedAt(it.getCreatedAt());
return channelListModel; return channelListModel;
}); });
...@@ -69,11 +80,53 @@ public class ChannelConfService { ...@@ -69,11 +80,53 @@ public class ChannelConfService {
} }
//todo 返回值不用map可以吗 public ChannelConfVo getChannelConf(Long channelId) {
public Map<String, Object> getChannelConf(Long channelId) {
ChannelConf channelConf = channelConfRepository.getByChannelId(channelId); ChannelConf channelConf = channelConfRepository.getByChannelId(channelId);
return ChannelConfUtil.channelConfConvertVOModel(channelConf); return ChannelConfUtil.channelConfConvertVOModel(channelConf);
} }
public Boolean editChannelConfInfo(ChannelConfVo confVo) {
ChannelConfBaseModel basicInfo = confVo.getBasicInfo();
ChannelConfAddModel addInfo = confVo.getAddInfo();
ChannelConf channelConf = ChannelConfUtil.voModelConfConvertChannelConf(confVo);
ChannelConf channelConfExsit = channelConfRepository.getByChannelId(basicInfo.getChannelId());
// cash-loan-flow-boss 库
if (channelConfExsit == null) {
// 新保存
channelConf.setCreateTime(new Date());
channelConfRepository.save(channelConf);
} else {
// 更新数据库 数据
BeanUtils.copyProperties(channelConf, channelConfExsit, IgnorePropertiesUtil.getNullPropertyNames(channelConf));
channelConfExsit.setUpdateTime(new Date());
channelConfRepository.save(channelConfExsit);
}
// clf 库
ClfChannelConfiguration channelConfiguration = ChannelConfUtil.convert2ClfChannelConfiguration(basicInfo);
List<ClfOrderCallBack> clfOrderCallBackList = ChannelConfUtil.convert2ClfOrderCallback(basicInfo.getChannelId(), addInfo);
ClfChannelConfiguration channelConfigurationExsit = clfChannelConfigurationRepository.findByRegisteredFrom(basicInfo.getChannelId());
if (channelConfigurationExsit == null) {
// 新保存
channelConfiguration.setCreatedAt(new Timestamp(System.currentTimeMillis()));
clfChannelConfigurationRepository.save(channelConfiguration);
ClfCallbackConfiguration clfCallbackConfiguration = ChannelConfUtil.convert2ClfCallbackConfiguration(basicInfo);
clfCallbackConfigurationRepository.save(clfCallbackConfiguration);
clfOrderCallbackRepository.save(clfOrderCallBackList);
} else {
// update
BeanUtils.copyProperties(channelConfiguration, channelConfigurationExsit, IgnorePropertiesUtil.getNullPropertyNames(channelConfiguration));
clfChannelConfigurationRepository.save(channelConfigurationExsit);
clfOrderCallbackRepository.save(clfOrderCallBackList);
}
return true;
}
} }
package cn.quantgroup.cashloanflowboss.spi.clf.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.CallbackRouter;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
/**
* Created by liqing on 2017/5/5 0005.
*/
@Setter
@Getter
@Entity
@Table(name = "callback_configuration",catalog = "cash_loan_flow")
public class ClfCallbackConfiguration implements Serializable {
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "channel_id")
private Long channelId;
@Column(name = "is_loan_makeup")
private Boolean isLoanMakeup;
@Column(name = "is_repay_makeup")
private Boolean isRepayMakeup;
@Column(name = "loan_makeup_strategy")
private String loanMakeupStrategy;
@Column(name = "repay_makeup_strategy")
private String repayMakeupStrategy;
@Column(name = "is_active")
private Boolean isActive;
@Column(name = "only_new_user")
private Boolean onlyNewUser;
@Column(name = "callback_service_name")
private String callbackServiceName;
@Column(name = "callback_no_push_progress")
private String callbackNoPushProgress;
@Column(name = "pre_progress")
private String preProgress;
@Column(name = "retry_max_times")
private Long retryMaxTimes;
@Enumerated(EnumType.ORDINAL)
@Column(name = "callback_router")
private CallbackRouter callbackRouter;
}
...@@ -13,7 +13,7 @@ import java.sql.Timestamp; ...@@ -13,7 +13,7 @@ import java.sql.Timestamp;
@Data @Data
@Entity @Entity
@Table(name = "channel_configuration", catalog = "cash_loan_flow") @Table(name = "channel_configuration", catalog = "cash_loan_flow")
public class ChannelConfiguration implements Serializable { public class ClfChannelConfiguration implements Serializable {
private static final long serialVersionUID = -1L; private static final long serialVersionUID = -1L;
@Id @Id
......
package cn.quantgroup.cashloanflowboss.spi.clf.entity;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* Created by 11 on 2016/11/29.
*/
@Data
@Entity
@Table(name = "order_callback")
public class ClfOrderCallBack implements Serializable{
private static final long serialVersionUID = -1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "loan_id")
private Long loanId;
@Column(name = "progress")
private LoanProgress progress;
@Column(name = "callback_status")
@Enumerated(EnumType.STRING)//保存字面值到数据库
private KANoticeType callbackStatus;
@Column(name = "registered_from")
private Long registeredFrom;
@Column(name = "callback_url")
private String callbackUrl;
@Column(name = "is_active")
private Boolean isActive = Boolean.TRUE;
@Column(name = "created_at")
private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
}
\ No newline at end of file
package cn.quantgroup.cashloanflowboss.spi.clf.model;
/**
* Created with suntao on 2018/11/14
*/
public enum CallbackRouter {
API,
COMMON
}
package cn.quantgroup.cashloanflowboss.spi.clf.model;
/**
* 对应 MQ 消息通知类型 的枚举类,在数据库中保存,和QuotaNoticeType 独立,保证xyqb改动的灵活性
* Created with suntao on 2018/4/15
*/
public enum KANoticeType {
CREDIT_SUCC("CREDIT_SUCC", "授信成功"),//0
CREDIT_FAIL("CREDIT_FAIL", "授信失败"),//1
FUAD_ASSIFN_SUCC("FUAD_ASSIFN_SUCC", "分配资金方成功"),//2
FUAD_ASSIFN_FAIL("FUAD_ASSIFN_FAIL", "分配资金方失败"),//3
BIND_SUCC("BIND_SUCC", "绑卡成功"),//4
BIND_FAIL("BIND_FAIL", "绑卡失败"),//5
WAITING_FUND("WAITING_FUND", "进件给资金方成功,等待放款"),//6
FUND_SUCC("FUND_SUCC", "放款成功"),//7
FUND_WITHDRAW_SUCC("FUND_WITHDRAW_SUCC", "放款提现成功,存管提现成功"),//8
FUND_FAIL("FUND_FAIL", "放款失败"),//9
REPAYMENT("REPAYMENT", "还款成功"),//10
ALL_REPAID("ALL_REPAID", "结清"),//11
QUOTA_INCREASE("QUOTA_INCREASE", "额度提升"),//12
QUOTA_DECREASE("QUOTA_DECREASE", "额度下降"),//13
QUOTA_FREEZE("QUOTA_FREEZE", "风控额度冻结"),//14
WITHDRAW("WITHDRAW", "用户提现额度冻结"),//WITHDRAW,创建loanId,//15(BIND_SUCC 同时发送)
REJECT("REJECT", "风控审核不通过"),//16
RISK_PASS("RISK_PASS", "风控审核通过"),//17
INCREASE_CHANGE("INCREASE_CHANGE", "利率调整"),//18
CANCEL_LOAN("CANCEL_LOAN", "关闭订单"),//19
COMPENSATORY("COMPENSATORY", "代偿"),//20
DROP_COURSE("DROP_COURSE", "退课代偿"),//21
CANCEL_AFTER_LOAN("CANCEL_AFTER_LOAN", "贷后关闭订单"),//22
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");
private String type;
private String desc;
KANoticeType(String type, String desc) {
this.type = type;
this.desc = desc;
}
public static KANoticeType getOrdinalValue(Integer ordinal) {
KANoticeType[] values = values();
for (int i = 0; i < values.length; i++) {
if (values[i].ordinal() == ordinal) {
return values[i];
}
}
return null;
}
public String getType() {
return this.type;
}
public String getDesc() {
return this.desc;
}
}
package cn.quantgroup.cashloanflowboss.spi.clf.model;
import com.google.common.collect.Sets;
import java.util.Set;
/**
* Created by Miraculous on 15/7/12.
*/
public enum LoanProgress {
/**
* 不会被持久化到数据库
*/
USERINFO_INCOMPLETE("用户未填写个人信息"),//0
USER_INFORMATION_INCOMPLETE("用户未填写贷款信息"),//1
USER_AUTHENTICATION_INCOMPLETE("用户授权信息未全部完成"),//2
USER_AUTHENTICATION_COMPLETE("授权状态完成"),//3
FURTHER_INFORMATION_INCOMPLETE("用户补充资料未完成"),//4
PRE_SCREENING("初审中"),//5
PRE_SCREENING_REJECT("初审拒绝"),//6
FINAL_SCREENING("终审中"),//7
FINAL_SCREENING_REJECT("终审拒绝"),//8
LOAN_APPLICATION_MANIFEST_COMPLETE("借款清单生成完成"),//9
BIND_BANKCARD("确认借款并且去绑卡"),//10
BIND_BANKCARD_SUCCESS("绑卡成功"),//11
QUIT_AND_SHOW_REASON("放弃借款"),//12
SIGN_CONTRACT("签订协议"),//13
FUND_TRANSFER("打款"),//14
CHECK_REPAYMENT_PLAN("查看还款计划"),//15
LOAN_COMPLETE("借款完成"),//16
FILTERED_BY_BLACKLIST("黑名单过滤"),//17
FINAL_SCREENING_PASSED("后台终审通过"),//18
FILTERING_DECLINED("未通过初筛"),//19
WAITING_FUND("等待资金方放款"),// 20
FINAL_SEND_TO_MASHANG_BEFORE_APPROVAL("已发送给马上金融, 等待放款"),//21, 发邮件后更新使用
FINAL_MASHANG_APPROVAL_SUCCESS("马上金融放款成功"),//22
FINAL_FUNDED_APPROVAL_FAIL("马上金融放款失败"),//23,
ADDRESS_COMPLETE("地址填写完毕,去绑卡"), // 24
BEIYIN_USERINFO_INCOMPLETE("北银消费-用户未填写个人信息"),//25
BEIYIN_USER_FILE_INCOMPLETE("北银消费-用户未上传文件"),//26
BEIYIN_SCREENING("北银消费-审批中"),//27
BEIYIN_SCREENING_FAILED("北银消费-审批失败"),//28
BEIYIN_SCREENING_PASSED("北银消费-审批通过"),//29
BEIYIN_LOAN_COMPLETE("北银消费-借款完成"),//30
BAITIAO_AUTHENTICATION_TAOBAO("白条-淘宝授权"),//31
BAITIAO_AUTHENTICATION_MOBILE("白条-手机运营商授权"),//32
BAITIAO_SCREENING("白条-审核中"),//33
BAITIAO_FILTER_PASSED("白条-初筛通过"),//34
BAITIAO_SCREENING_FAILED("白条-审核拒绝"),//35
BAITIAO_SCREENING_PASSED("白条-审核通过"),//36
BAITIAO_BIND_CARD("白条-绑卡"),//37
BAITIAO_BIND_CARD_ING("白条-绑卡中"),//38
BAITIAO_ACTIVATE_SUCC("白条-激活成功"),//39
/**
* 修改时间 20160104 资金方解耦
*/
// category 4x
/* 易联校验/代收订单 异步通知重构 */
BIND_BANKCARD_IN_PROGRESS("绑卡处理中"),//40
/*REPAY_ORDER_IN_PROGRESS("还款处理中")*/
USER_RELATION_INCOMPLETE("与用户相关联系人信息未完成"),//41,
PLACE_HOLDER_42("占位"),PLACE_HOLDER_43("占位"),PLACE_HOLDER_44("占位"),
PLACE_HOLDER_45("占位"),PLACE_HOLDER_46("占位"),PING_AN_PAGE("跳转平安填写信息页面"),// 47
DROP_SUCC("取消借款"),//48
PLACE_HOLDER_49("占位"),
// category 5x
PLACE_HOLDER_50("占位"),PLACE_HOLDER_51("占位"),PLACE_HOLDER_52("占位"),PLACE_HOLDER_53("占位"),PLACE_HOLDER_54("占位"),
PLACE_HOLDER_55("占位"),PLACE_HOLDER_56("占位"),PLACE_HOLDER_57("占位"),PLACE_HOLDER_58("占位"),PLACE_HOLDER_59("占位"),
// category 6x
PLACE_HOLDER_60("占位"),PLACE_HOLDER_61("占位"),PLACE_HOLDER_62("占位"),PLACE_HOLDER_63("占位"),PLACE_HOLDER_64("占位"),
WAITING_WITHDRAW("待存管提现"),// 65
PLACE_HOLDER_66("占位"),PLACE_HOLDER_67("占位"),PLACE_HOLDER_68("占位"),PLACE_HOLDER_69("占位"),
// category 7x
PLACE_HOLDER_70("占位"),PLACE_HOLDER_71("占位"),PLACE_HOLDER_72("占位"),PLACE_HOLDER_73("占位"),PLACE_HOLDER_74("占位"),
PLACE_HOLDER_75("占位"),PLACE_HOLDER_76("占位"),PLACE_HOLDER_77("占位"),PLACE_HOLDER_78("占位"),PLACE_HOLDER_79("占位"),
// category 8x
PLACE_HOLDER_80("占位"),PLACE_HOLDER_81("占位"),PLACE_HOLDER_82("占位"),PLACE_HOLDER_83("占位"),PLACE_HOLDER_84("占位"),
PLACE_HOLDER_85("占位"),PLACE_HOLDER_86("占位"),PLACE_HOLDER_87("占位"),PLACE_HOLDER_88("占位"),PLACE_HOLDER_89("占位"),
// category 9x
PLACE_HOLDER_90("占位"),PLACE_HOLDER_91("占位"),PLACE_HOLDER_92("占位"),PLACE_HOLDER_93("占位"),PLACE_HOLDER_94("占位"),
PLACE_HOLDER_95("占位"),PLACE_HOLDER_96("占位"),PLACE_HOLDER_97("占位"),PLACE_HOLDER_98("占位"),PLACE_HOLDER_99("占位"),
/**
* 资金方相关
*/
// 等待资金方放款 : 100
WAITING_MASHANG_FUND("等待马上金融放款"),// 100, 发邮件前查询使用
// 已提交给资金方等待放款 : 101
SENDED_TO_FUND_CORP("已提交给资金方"),
// category 10x
PLACE_HOLDER_102("占位"),PLACE_HOLDER_103("占位"),PLACE_HOLDER_104("占位"),PLACE_HOLDER_105("占位"),PLACE_HOLDER_106("占位"),
PLACE_HOLDER_107("占位"),PLACE_HOLDER_108("占位"),PLACE_HOLDER_109("占位"),
JD_BANDCARD_FAIL("京东绑卡失败")//110 京东绑卡失败状态
;
private String description;
LoanProgress(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return description;
}
/**
* 获取审核拒绝状态
* @return
*/
public static Set<LoanProgress> getCheckReject(){
return Sets.newHashSet(LoanProgress.FILTERING_DECLINED, LoanProgress.PRE_SCREENING_REJECT,
LoanProgress.FINAL_SCREENING_REJECT, LoanProgress.FILTERED_BY_BLACKLIST);
}
/**
* 获取推送订单状态
* @return
*/
public static Set<LoanProgress> getFeedBackOrderStatus(){
return Sets.newHashSet(LoanProgress.WAITING_FUND, LoanProgress.FINAL_SEND_TO_MASHANG_BEFORE_APPROVAL,
LoanProgress.FINAL_FUNDED_APPROVAL_FAIL, LoanProgress.CHECK_REPAYMENT_PLAN, LoanProgress.LOAN_COMPLETE);
}
}
package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfCallbackConfiguration;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* function:
* date: 2019/8/7
*
* @author: suntao
*/
public interface ClfCallbackConfigurationRepository extends JpaRepository<ClfCallbackConfiguration, Long> {
}
package cn.quantgroup.cashloanflowboss.spi.clf.repository; package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ChannelConfiguration; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface ChannelConfigurationRepository extends PagingAndSortingRepository<ChannelConfiguration, Long>, JpaSpecificationExecutor<ChannelConfiguration> { public interface ClfChannelConfigurationRepository extends PagingAndSortingRepository<ClfChannelConfiguration, Long>, JpaSpecificationExecutor<ClfChannelConfiguration> {
ClfChannelConfiguration findByRegisteredFrom(Long channelId);
} }
package cn.quantgroup.cashloanflowboss.spi.clf.repository;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderCallBack;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* function:
* date: 2019/8/7
*
* @author: suntao
*/
public interface ClfOrderCallbackRepository extends JpaRepository<ClfOrderCallBack, Long> {
}
package cn.quantgroup.cashloanflowboss.utils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import java.beans.PropertyDescriptor;
import java.util.HashSet;
import java.util.Set;
/**
* function:
* date: 2019/8/7
*
* @author: suntao
*/
public class IgnorePropertiesUtil {
public static String[] getNullPropertyNames(Object source) {
BeanWrapper src = new BeanWrapperImpl(source);
PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for (PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null) {
emptyNames.add(pd.getName());
}
}
return emptyNames.toArray(new String[emptyNames.size()]);
}
}
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