提交 931c1104 authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/service/impl/OwnerAccountServiceImpl.java Former-commit-id: 56075a3e
...@@ -16,7 +16,8 @@ public enum OwnerAccountEnum { ...@@ -16,7 +16,8 @@ public enum OwnerAccountEnum {
@AllArgsConstructor @AllArgsConstructor
public enum AccountTypeStatus { public enum AccountTypeStatus {
MARGIN_ACCOUNT(1, "保证金账户"), MARGIN_ACCOUNT(1, "保证金账户"),
PREPAID_FREIGHT_ACCOUNT(2, "预付运费账户") PREPAID_FREIGHT_ACCOUNT(2, "预付运费账户"),
LOAN_ACCOUNT(3, "借款账户")
; ;
private final Integer code; private final Integer code;
private final String msg; private final String msg;
......
...@@ -119,6 +119,7 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -119,6 +119,7 @@ public enum PerformanceResultEnum implements ResultEnum {
NB_BANK_API_ERROR(1800, "宁波银行api调用失败"), NB_BANK_API_ERROR(1800, "宁波银行api调用失败"),
NB_BANK_NOTIFY_ERROR(1801, "宁波银行回调失败"), NB_BANK_NOTIFY_ERROR(1801, "宁波银行回调失败"),
NB_BANK_PAY_TYPE_ERROR(1802, "支付方式不支持"), NB_BANK_PAY_TYPE_ERROR(1802, "支付方式不支持"),
NB_BANK_ORDER_PAY_ERROR(1803, "宁波银行订单支付失败"),
; ;
private final int code; private final int code;
......
...@@ -19,7 +19,9 @@ public enum RunningWaterTypeEnum { ...@@ -19,7 +19,9 @@ public enum RunningWaterTypeEnum {
TAKE_OUT(40, "扣除"), TAKE_OUT(40, "扣除"),
CASE_OUT_FROZEN(50, "提现冻结"), CASE_OUT_FROZEN(50, "提现冻结"),
CASE_OUT_SUCCESS(60, "提现成功"), CASE_OUT_SUCCESS(60, "提现成功"),
CASE_OUT_FAIL(70, "提现失败") CASE_OUT_FAIL(70, "提现失败"),
ORDER_CHILD_WRITE_OFF(80, "运单核销"),
LOAN(90, "借款"),
; ;
private final Integer code; private final Integer code;
private final String msg; private final String msg;
......
package com.clx.performance.enums.borrower; package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.enums.borrower; package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OwnerLoanAccountApproveEnum {
;
//“待审批 10,审批成功 20,审批拒绝 30
@Getter
@AllArgsConstructor
public enum Status {
APPROVE_WAIT(10, "待审批"),
APPROVE_PASS(20, "审批通过"),
APPROVE_REFUSE(30, "审批拒绝"),
;
private final Integer code;
private final String msg;
public static Optional<OwnerLoanAccountApproveEnum.Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(OwnerLoanAccountApproveEnum.Status::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OwnerLoanRecordEnum {
;
//“待审批”,“审批通过”,“审批拒绝”,“付款中”,“付款成功”,“付款失败”
@Getter
@AllArgsConstructor
public enum Status {
APPROVE_WAIT(10, "待审批"),
APPROVE_PASS(20, "审批通过"),
APPROVE_REFUSE(30, "审批拒绝"),
PAYING(40, "付款中"),
PAY_SUCCESS(50, "付款成功"),
PAY_FAIL(60, "付款失败"),
;
private final Integer code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Status::getMsg).orElse(null);
}
}
//1:虚拟货币 2:资金
@Getter
@AllArgsConstructor
public enum LoanType {
VIRTUAL_CURRENCY(1, "虚拟货币"),
FUND(2, "资金"),
;
private final Integer code;
private final String msg;
public static Optional<LoanType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(LoanType::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OwnerPaymentEnum {
;
//“待付款”,“付款中”,“付款成功”,“付款失败”
@Getter
@AllArgsConstructor
public enum Status {
PAY_WAIT(10, "待付款"),
PAYING(40, "付款中"),
PAY_SUCCESS(50, "付款成功"),
PAY_FAIL(60, "付款失败"),
;
private final Integer code;
private final String msg;
public static Optional<OwnerPaymentEnum.Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(OwnerPaymentEnum.Status::getMsg).orElse(null);
}
}
}
package com.clx.performance.enums.loan;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OwnerRePaymentEnum {
;
//“待付款”,“付款中”,“付款成功”,“付款失败”
@Getter
@AllArgsConstructor
public enum Status {
PAY_WAIT(10, "待付款"),
PAYING(40, "付款中"),
PAY_SUCCESS(50, "付款成功"),
PAY_FAIL(60, "付款失败"),
;
private final Integer code;
private final String msg;
public static Optional<OwnerRePaymentEnum.Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(OwnerRePaymentEnum.Status::getMsg).orElse(null);
}
}
//支付渠道 10 订单支付 20 转账支付
@Getter
@AllArgsConstructor
public enum Channel {
ORDER(10, "订单支付"),
TRANSFER(20, "转账支付"),
;
private final Integer code;
private final String msg;
public static Optional<OwnerRePaymentEnum.Channel> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(OwnerRePaymentEnum.Channel::getMsg).orElse(null);
}
}
//10 未逾期 20 已逾期
@Getter
@AllArgsConstructor
public enum BeOverdue {
NO(10, "未逾期"),
YES(20, "已逾期"),
;
private final Integer code;
private final String msg;
public static Optional<OwnerRePaymentEnum.BeOverdue> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(OwnerRePaymentEnum.BeOverdue::getMsg).orElse(null);
}
}
}
...@@ -16,6 +16,8 @@ public enum NbBankRecordEnum { ...@@ -16,6 +16,8 @@ public enum NbBankRecordEnum {
UNION_PAY_DIRECT_ORDER(2, "银联订单支付收款模式"), UNION_PAY_DIRECT_ORDER(2, "银联订单支付收款模式"),
QUERY_ORDER(3, "交易结果查询"), QUERY_ORDER(3, "交易结果查询"),
NOTIFY_MERCHANT(4, "异步通知交易结果"), NOTIFY_MERCHANT(4, "异步通知交易结果"),
FUND_TRANSFER_ORDER(5, "云账簿资金划转"),
REFUND(6, "退款"),
; ;
private final Integer code; private final Integer code;
......
...@@ -11,6 +11,7 @@ import com.clx.performance.vo.app.collect.AppCollectTruckVO; ...@@ -11,6 +11,7 @@ import com.clx.performance.vo.app.collect.AppCollectTruckVO;
import com.clx.performance.vo.feign.FreightEstimateVO; import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO; import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO; import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO; import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
...@@ -111,4 +112,7 @@ public interface PerformanceFeign { ...@@ -111,4 +112,7 @@ public interface PerformanceFeign {
@PostMapping(value = {"clx-performance/feign/orderGoods/listFreightEstimate"}) @PostMapping(value = {"clx-performance/feign/orderGoods/listFreightEstimate"})
Result<FreightEstimateVO> listFreightEstimate(@RequestBody OrderChildReportParam param); Result<FreightEstimateVO> listFreightEstimate(@RequestBody OrderChildReportParam param);
@GetMapping(value = {"clx-performance/feign/owner/loanAccount"})
Result<OwnerLoanAccountVO> loanAccount(@RequestParam Long userNo);
} }
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
...@@ -6,6 +6,8 @@ import lombok.NoArgsConstructor; ...@@ -6,6 +6,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.validation.constraints.NotNull;
/** /**
* @Author: aiqingguo * @Author: aiqingguo
* @Date: 2023-10-11 17:30:57 * @Date: 2023-10-11 17:30:57
...@@ -18,10 +20,13 @@ import lombok.ToString; ...@@ -18,10 +20,13 @@ import lombok.ToString;
public class BorrowerConfigAddParam { public class BorrowerConfigAddParam {
@ApiModelProperty(value = "借出方id", example = "1") @ApiModelProperty(value = "借出方id", example = "1")
@NotNull(message = "借出方id不能为空")
private Integer borrowerId; private Integer borrowerId;
@ApiModelProperty(value = "类型:1资金 2虚拟货币", example = "1") @ApiModelProperty(value = "类型:1资金 2虚拟货币", example = "1")
@NotNull(message = "类型不能为空")
private Integer type; private Integer type;
@ApiModelProperty(value = "借款天数", example = "1") @ApiModelProperty(value = "借款天数", example = "1")
@NotNull(message = "借款天数不能为空")
private Integer day; private Integer day;
} }
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
...@@ -23,10 +23,13 @@ public class BorrowerConfigUpdateParam { ...@@ -23,10 +23,13 @@ public class BorrowerConfigUpdateParam {
@NotNull(message = "id不能为空") @NotNull(message = "id不能为空")
private Integer id; private Integer id;
@ApiModelProperty(value = "借出方id", example = "1") @ApiModelProperty(value = "借出方id", example = "1")
@NotNull(message = "借出方id不能为空")
private Integer borrowerId; private Integer borrowerId;
@ApiModelProperty(value = "类型:1资金 2虚拟货币", example = "1") @ApiModelProperty(value = "类型:1资金 2虚拟货币", example = "1")
@NotNull(message = "类型方不能为空")
private Integer type; private Integer type;
@ApiModelProperty(value = "借款天数", example = "1") @ApiModelProperty(value = "借款天数", example = "1")
@NotNull(message = "借款天数不能为空")
private Integer day; private Integer day;
} }
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
......
package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CarrierOwnerLoanRecordApproveParam {
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("1:同意 0:拒绝")
private Boolean status;
@ApiModelProperty("拒绝原因")
private String rejectReason;
@ApiModelProperty("1:虚拟货币 2:资金")
private Integer loanType;
}
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
/**
* @ClassName PageOwnerLoanAccountApproveParam
* @Description
* @Author kavin
* @Date 2024/1/20 17:57
* @Version 1.0
*/
@Getter
@Setter
public class OwnerLoanAccountApproveParam extends PageParam {
@ApiModelProperty("申请编号")
@NotNull
private Integer id;
@ApiModelProperty("拒绝原因")
private String rejectReason;
@ApiModelProperty("1:审核通过 0:审批拒绝")
@NotNull
private Boolean status;
}
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam; import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.clx.performance.param.pc.borrower; package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam; import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName PageCarrierOwnerLoanRecordParam
* @Description
* @Author kavin
* @Date 2024/1/20 17:31
* @Version 1.0
*/
@Getter
@Setter
public class PageCarrierOwnerLoanRecordParam extends PageParam {
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主姓名")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("借款类型 1:虚拟货币 2:资金")
private Integer loanType;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status;
}
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName PageCarrierOwnerRepaymentParam
* @Description
* @Author kavin
* @Date 2024/1/20 15:14
* @Version 1.0
*/
@Getter
@Setter
public class PageCarrierOwnerPaymentParam extends PageParam {
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("付款单号")
private Long paymentNo;
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
}
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName PageCarrierOwnerRepaymentParam
* @Description
* @Author kavin
* @Date 2024/1/20 15:14
* @Version 1.0
*/
@Getter
@Setter
public class PageCarrierOwnerRepaymentParam extends PageParam {
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
@ApiModelProperty("10 未逾期 20 已逾期")
private Integer beOverdue;
}
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName PageOwnerLoanAccountApproveParam
* @Description
* @Author kavin
* @Date 2024/1/20 17:57
* @Version 1.0
*/
@Getter
@Setter
public class PageOwnerLoanAccountApproveParam extends PageParam {
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("待审批 10,审批成功 20,审批拒绝 30")
private Integer status;
}
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageOwnerLoanAccountParam extends PageParam {
@ApiModelProperty(value = "货主编码", example = "10000000")
private Long ownerUserNo;
@ApiModelProperty(value = "货主名称", example = "张三")
private String ownerUserName;
@ApiModelProperty(value = "联系电话", example = "13000000000")
private String mobile;
}
\ No newline at end of file
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageOwnerLoanAccountWaterRecordOfOwnerParam extends PageParam {
@ApiModelProperty(value = "货主编码", example = "10000000")
private Long ownerUserNo;
@ApiModelProperty(value = "流水号", example = "100000")
private Long runningWaterNo;
@ApiModelProperty(value = "运单编号", example = "10000")
private String childNo;
@ApiModelProperty(value = "流水类型 70:运单核销 80:借款", example = "10")
private Integer runningWaterType;
}
\ No newline at end of file
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageOwnerLoanRecordOfOwner extends PageParam {
@ApiModelProperty(value = "货主编码", example = "10000000")
private Long ownerUserNo;
@ApiModelProperty(value = "借款单号", example = "100000000")
private Long loanNo;
@ApiModelProperty(value = "交易流水号(第三方)", example = "11000000000")
private String runningWaterOpenNo;
@ApiModelProperty(value = "借款类型 1:虚拟货币 2:资金", example = "1")
private Integer loanType;
@ApiModelProperty(value = "10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ", example = "1")
private Integer status;
}
\ No newline at end of file
package com.clx.performance.param.pc.loan.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PageOwnerRepaymentOfOwner extends PageParam {
@ApiModelProperty(value = "货主编码", example = "10000000")
private String ownerUserNo;
@ApiModelProperty(value = "还款单号", example = "100000000")
private String repaymentNo;
@ApiModelProperty(value = "联系电话", example = "13000000000")
private String mobile;
@ApiModelProperty(value = "借款单号", example = "100000000")
private Long loanNo;
@ApiModelProperty(value = "10 待付款 40 付款中 50 付款成功 60 付款失败", example = "10")
private Integer status;
@ApiModelProperty(value = "10 未逾期 20 已逾期", example = "10")
private Integer beOverdue;
}
\ No newline at end of file
package com.clx.performance.param.pc.loan.owner;
import com.msl.common.convertor.type.MoneyInConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OwnerLoanRecordParam {
@ApiModelProperty(value = "借款金额", example = "张三")
@NotNull(message = "借款金额不能为空")
@MoneyInConvert
private BigDecimal loanBalance;
@ApiModelProperty(value = "借款方", example = "伟华煤炭运销公司")
@NotBlank(message = "借款方不能为空")
private String borrower;
@ApiModelProperty(value = "借出方", example = "诚联信网络科技有限公司")
@NotBlank(message = "借出方不能为空")
private String lendingParty;
@ApiModelProperty(value = "借出方账户", example = "诚联信银行账户")
@NotBlank(message = "借出方不能为空")
private String paymentAccount;
@ApiModelProperty(value = "借出时效(天)", example = "2")
@NotNull(message = "借出时效(天)不能为空")
private Integer expireDay;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class OwnerLoanAccountVO {
private Integer id;
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("账户类型: 默认3 借款账户")
private Integer accountType;
@ApiModelProperty("资金金额")
private BigDecimal fundingAmount;
@ApiModelProperty("虚拟币金额")
private BigDecimal virtuallyAmount;
@ApiModelProperty("资金欠款")
private BigDecimal fundingArrears;
@ApiModelProperty("虚拟币欠款")
private BigDecimal virtuallyArrears;
@ApiModelProperty("创建人")
private String createBy;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
}
package com.clx.performance.vo.pc.borrower; package com.clx.performance.vo.pc.loan.carrier;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.clx.performance.vo.pc.borrower; package com.clx.performance.vo.pc.loan.carrier;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.clx.performance.vo.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
public class OwnerLoanAccountApproveVO {
private Integer id;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("账户类型 默认3 借款账户")
private Integer accountType;
@ApiModelProperty("待审批 10,审批成功 20,审批拒绝 30")
private Integer status;
@ApiModelProperty("审批时间")
private LocalDateTime approveTime;
@ApiModelProperty("审批人")
private String approveBy;
@ApiModelProperty("拒绝原因")
private String rejectReason;
@ApiModelProperty("创建人")
private String createBy;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
}
package com.clx.performance.vo.pc.loan.carrier;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 货主账户流水记录
* @Date: 2024/01/23 10:06:01
* @Version: 1.0
*/
@ApiModel(description = "货主账户流水记录")
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OwnerLoanAccountRunningWaterRecordVO {
@ApiModelProperty(value = "id", example = "")
private Integer id;
@ApiModelProperty(value = "货主编码", example = "1000000")
private String ownerUserNo;
@ApiModelProperty(value = "货主名称", example = "张三")
private String ownerUserName;
@ApiModelProperty(value = "联系电话", example = "13000000000")
private String mobile;
@ApiModelProperty(value = "流水号", example = "100000")
private Long runningWaterNo;
@ApiModelProperty(value = "借款单号", example = "100000")
private Long loanNo;
@ApiModelProperty(value = "运单编号", example = "100000")
private String childNo;
@ApiModelProperty(value = "流水类型 70:运单核销 80:借款", example = "10")
private Integer runningWaterType;
@ApiModelProperty(value = "金额", example = "1.23")
private BigDecimal alterationBalance;
@ApiModelProperty(value = "账户余额", example = "1.23")
private BigDecimal accountBalance;
@ApiModelProperty(value = "创建人", example = "张三")
private String createBy;
@ApiModelProperty(value = "创建时间", example = "")
private LocalDateTime createTime;
}
\ No newline at end of file
package com.clx.performance.vo.pc.loan.carrier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
/**
* @Author: aiqinguo
* @Description: 货主借款账户
* @Date: 2024/01/22 18:17:57
* @Version: 1.0
*/
@ApiModel(description = "货主借款账户")
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OwnerLoanAccountVO {
@ApiModelProperty(value = "货主编码", example = "10000000")
private Long ownerUserNo;
@ApiModelProperty(value = "货主名称", example = "张三")
private String ownerUserName;
@ApiModelProperty(value = "联系电话", example = "13000000000")
private String mobile;
@ApiModelProperty(value = "默认 3:借款账户", example = "3")
private Integer accountType;
@ApiModelProperty(value = "账户余额 (元) ", example = "1.23")
private BigDecimal amount;
public BigDecimal getAmount() {
return BigDecimal.ZERO.add(fundingAmount==null? BigDecimal.ZERO : fundingAmount).add(virtuallyAmount==null? BigDecimal.ZERO : virtuallyAmount);
}
@ApiModelProperty(value = "欠款金额 (元)", example = "1.23")
private BigDecimal arrears;
public BigDecimal getArrears() {
return BigDecimal.ZERO.add(fundingArrears==null? BigDecimal.ZERO : fundingArrears).add(virtuallyArrears==null? BigDecimal.ZERO : virtuallyArrears);
}
@ApiModelProperty(value = "创建人", example = "张三")
private String createBy;
@ApiModelProperty(value = "创建时间", example = "")
private String createTime;
@JsonIgnore
@ApiModelProperty(value = "资金金额", example = "1.23", hidden = true)
private BigDecimal fundingAmount;
@JsonIgnore
@ApiModelProperty(value = "虚拟币金额", example = "1.23", hidden = true)
private BigDecimal virtuallyAmount;
@JsonIgnore
@ApiModelProperty(value = "资金欠款", example = "1.23", hidden = true)
private BigDecimal fundingArrears;
@JsonIgnore
@ApiModelProperty(value = "虚拟币欠款", example = "1.23", hidden = true)
private BigDecimal virtuallyArrears;
}
\ No newline at end of file
package com.clx.performance.vo.pc.loan.carrier;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
@Getter
@Setter
public class OwnerLoanRecordVO {
private Integer id;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("交易流水号(第三方)")
private Long runningWaterOpenNo;
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("借款类型 1:虚拟货币 2:资金")
private Integer loanType;
@ApiModelProperty("借款类型 虚拟货币 资金")
private String loanTypeMsg;
public String getLoanTypeMsg(){
return OwnerLoanRecordEnum.LoanType.getMsgByCode(loanType);
}
@ApiModelProperty("借款金额")
private BigDecimal loanBalance;
@ApiModelProperty("借款方")
private String borrower;
@ApiModelProperty("借出方")
private String lendingParty;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("收款方")
private String payee;
@ApiModelProperty("收款账户")
private String payeeAccount;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private String statusMsg;
public String getStatusMsg(){
return OwnerLoanRecordEnum.Status.getMsgByCode(status);
}
@ApiModelProperty("审批时间")
private LocalDateTime approveTime;
@ApiModelProperty("审批人")
private String approveBy;
@ApiModelProperty("拒绝原因")
private String rejectReason;
@ApiModelProperty("借款归还时间")
private LocalDateTime loanRepaymentTime;
@ApiModelProperty("创建人")
private String createBy;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
}
package com.clx.performance.vo.pc.loan.carrier;
import com.clx.performance.enums.loan.OwnerPaymentEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
public class OwnerPaymentVO{
private Integer id;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("交易流水号(第三方)")
private Long runningWaterOpenNo;
@ApiModelProperty("付款单号")
private Long paymentNo;
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("付款金额")
private BigDecimal paymentBalance;
@ApiModelProperty("付款方")
private String payment;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("收款方")
private String payee;
@ApiModelProperty("收款账户")
private String payeeAccount;
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
@ApiModelProperty("待付款 付款中 付款成功 付款失败")
private String statusMsg;
public String getStatusMsg(){
return OwnerPaymentEnum.Status.getMsgByCode(status);
}
@ApiModelProperty("默认财资 30 ")
private Integer payChannel;
@ApiModelProperty("财资")
private String payChannelMsg;
public String getPayChannelMsg(){
return "财资";
}
@ApiModelProperty("操作时间")
private String operateTime;
@ApiModelProperty("操作人")
private String operateBy;
@ApiModelProperty("创建人")
private String createBy;
@ApiModelProperty("创建时间")
private String createTime;
@ApiModelProperty("修改时间")
private String modifiedTime;
}
package com.clx.performance.vo.pc.loan.carrier;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName OwnerRepayment
* @Description
* @Author kavin
* @Date 2024/1/20 15:18
* @Version 1.0
*/
@Getter
@Setter
public class OwnerRepaymentVO {
private Integer id;
@ApiModelProperty("货主编码")
private String ownerUserNo;
@ApiModelProperty("货主名称")
private String ownerUserName;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("交易流水号(第三方)")
private Long runningWaterOpenNo;
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("还款金额")
private BigDecimal repaymentBalance;
@ApiModelProperty("付款方")
private String payment;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("收款方")
private String payee;
@ApiModelProperty("收款账户")
private String payeeAccount;
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private String statusMsg;
public String getStatusMsg(){
return OwnerRePaymentEnum.Status.getMsgByCode(status);
}
@ApiModelProperty("支付渠道 10 订单支付 20 转账支付")
private Integer payChannel;
@ApiModelProperty("支付渠道 10 订单支付 20 转账支付")
private String payChannelMsg;
public String getPayChannelMsg(){
return OwnerRePaymentEnum.Channel.getMsgByCode(payChannel);
}
@ApiModelProperty("10 未逾期 20 已逾期")
private Integer beOverdue;
@ApiModelProperty("10 未逾期 20 已逾期")
private String beOverdueMsg;
public String getBeOverdueMsg(){
return OwnerRePaymentEnum.BeOverdue.getMsgByCode(beOverdue);
}
@ApiModelProperty("借款归还时间")
private String loanRepaymentTime;
@ApiModelProperty("操作时间")
private String operateTime;
@ApiModelProperty("操作人")
private String operateBy;
@ApiModelProperty("创建人")
private String createBy;
@ApiModelProperty("创建时间")
private String createTime;
@ApiModelProperty("修改时间")
private String modifiedTime;
}
package com.clx.performance.vo.pc.loan.owner;
/**
* @ClassName TestController
* @Description
* @Author kavin
* @Date 2024/1/22 10:20
* @Version 1.0
*/
public class TestController {
}
...@@ -19,14 +19,16 @@ import lombok.ToString; ...@@ -19,14 +19,16 @@ import lombok.ToString;
@NoArgsConstructor @NoArgsConstructor
public class NbBankOrderPayResultVO { public class NbBankOrderPayResultVO {
@ApiModelProperty(value = "金额(分)", example = "") @ApiModelProperty(value = "金额(分)", example = "1")
private Integer amount; private Integer amount;
@ApiModelProperty(value = "流水号", example = "20231129145541") @ApiModelProperty(value = "商户时间", example = "")
private String merDtTm;
@ApiModelProperty(value = "商户流水号", example = "20231129145541")
private String merSeqNo; private String merSeqNo;
@ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy") @ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy")
private String transSeqNo; private String transSeqNo;
@ApiModelProperty(value = "转账编号", example = "") @ApiModelProperty(value = "转账编号 (转账专用)", example = "123456")
private String signNo; private String signNo;
} }
\ No newline at end of file
...@@ -17,18 +17,20 @@ import lombok.ToString; ...@@ -17,18 +17,20 @@ import lombok.ToString;
@Setter @Setter
@ToString @ToString
@NoArgsConstructor @NoArgsConstructor
public class NbBankOrderPayStatusResultVO { public class NbBankOrderResultVO {
@ApiModelProperty(value = "金额(分)", example = "") @ApiModelProperty(value = "金额(分)", example = "")
private Integer amount; private Integer amount;
@ApiModelProperty(value = "实收金额(分)", example = "") @ApiModelProperty(value = "实收金额(分)", example = "")
private Integer realAmount; private Integer realAmount;
@ApiModelProperty(value = "流水号", example = "20231129145541") @ApiModelProperty(value = "商户时间")
private String merDtTm;
@ApiModelProperty(value = "商户流水号", example = "20231129145541")
private String merSeqNo; private String merSeqNo;
@ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy") @ApiModelProperty(value = "第三方流水号", example = "20231129145541065503563czKTBzy")
private String transSeqNo; private String transSeqNo;
@ApiModelProperty(value = "转账编号", example = "") @ApiModelProperty(value = "转账编号(转账专用)", example = "1234567")
private String signNo; private String signNo;
@ApiModelProperty(value = "交易状态", example = "") @ApiModelProperty(value = "交易状态", example = "")
......
...@@ -12,5 +12,6 @@ import org.springframework.context.annotation.Configuration; ...@@ -12,5 +12,6 @@ import org.springframework.context.annotation.Configuration;
public class NbBankConfig { public class NbBankConfig {
private String appKey = "77667c76_3503_4c04_95f7_fc10938c7942"; private String appKey = "77667c76_3503_4c04_95f7_fc10938c7942";
private String merId = "EFT33021200556315";
} }
...@@ -5,8 +5,8 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam; ...@@ -5,8 +5,8 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam; import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.OwnerAccountService; import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.vo.pc.OwnerAccountAllVO; import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -44,4 +44,10 @@ public class OwnerAccountFeignController { ...@@ -44,4 +44,10 @@ public class OwnerAccountFeignController {
public Result<OwnerAccountAllVO> accountInfo(@RequestParam Long userNo) { public Result<OwnerAccountAllVO> accountInfo(@RequestParam Long userNo) {
return Result.ok(ownerAccountService.accountInfo(userNo)); return Result.ok(ownerAccountService.accountInfo(userNo));
} }
@ApiOperation(value = "查询用户预付运费和保证金账户", notes = "<br>By:胡宇帆")
@GetMapping("/loanAccount")
public Result<OwnerLoanAccountVO> loanAccount(@RequestParam Long userNo) {
return Result.ok(ownerAccountService.loanAccount(userNo));
}
} }
package com.clx.performance.controller.pc.borrower.carrier; package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.service.borrower.BorrowerConfigService; import com.clx.performance.service.loan.BorrowerConfigService;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.clx.performance.vo.pc.borrower.BorrowerVO;
import com.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
......
package com.clx.performance.controller.pc.borrower.carrier; package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.service.borrower.BorrowerService; import com.clx.performance.service.loan.BorrowerService;
import com.clx.performance.service.impl.borrower.BorrowerServiceImpl; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import com.clx.performance.vo.pc.borrower.BorrowerVO;
import com.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
......
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.OwnerLoanAccountApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
import com.clx.performance.service.loan.OwnerLoanAccountApproveService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountApproveVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName CarrierOwnerLoanAccountApproveController
* @Description
* @Author kavin
* @Date 2024/1/20 17:52
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerLoanAccountApprove")
@Validated
@Api(tags = "承运端-运营管理")
@AllArgsConstructor
public class CarrierOwnerLoanAccountApproveController {
private final OwnerLoanAccountApproveService ownerLoanAccountApproveService;
@ApiOperation(value = "货主借款账户审核列表",notes = "<br>By:刘海泉")
@PostMapping("/pageOwnerLoanAccountApprove")
public Result<PageData<OwnerLoanAccountApproveVO>> pageOwnerLoanAccountApprove(@RequestBody @Validated PageOwnerLoanAccountApproveParam param) {
IPage<OwnerLoanAccountApproveVO> page = ownerLoanAccountApproveService.pageOwnerLoanAccountApprove(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "货主借款账户审批",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanAccountApprove")
public Result<Object> ownerLoanAccountApprove(@RequestBody @Validated OwnerLoanAccountApproveParam param) {
ownerLoanAccountApproveService.ownerLoanAccountApprove(param);
return Result.ok();
}
}
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerLoanAccount")
@Validated
@Api(tags = "承运端-借款账户")
public class CarrierOwnerLoanAccountController {
@Autowired
private OwnerLoanAccountService ownerLoanAccountService;
@ApiOperation(value = "分页搜索货主借款账户列表",notes = "<br>By:艾庆国")
@PostMapping("/pageOwnerLoanAccount")
public Result<PageData<OwnerLoanAccountVO>> pageOwnerLoanAccount(@RequestBody @Validated PageOwnerLoanAccountParam param) {
IPage<OwnerLoanAccountVO> page = ownerLoanAccountService.pageOwnerLoanAccount(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.service.loan.OwnerLoanAccountRunningWaterRecordService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerLoanAccountWaterRecord")
@Validated
@Api(tags = "承运端-借款账户")
public class CarrierOwnerLoanAccountWaterRecordController {
@Autowired
private OwnerLoanAccountRunningWaterRecordService ownerLoanAccountRunningWaterRecordService;
@ApiOperation(value = "分页搜索货主借款账户流水列表",notes = "<br>By:艾庆国")
@PostMapping("/pageOwnerLoanAccountWaterOfOwner")
public Result<PageData<OwnerLoanAccountRunningWaterRecordVO>> pageOwnerLoanAccountWaterOfOwner(@RequestBody @Validated PageOwnerLoanAccountWaterRecordOfOwnerParam param) {
IPage<OwnerLoanAccountRunningWaterRecordVO> page = ownerLoanAccountRunningWaterRecordService.pageOwnerLoanAccountWaterOfOwner(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.service.loan.OwnerLoanRecordService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerLoanRecord")
@Validated
@Api(tags = "承运端-借款管理")
@AllArgsConstructor
public class CarrierOwnerLoanRecordController {
private final OwnerLoanRecordService ownerLoanRecordService;
@ApiOperation(value = "借款列表",notes = "<br>By:刘海泉")
@PostMapping("/pageOwnerLoanRecord")
public Result<PageData<OwnerLoanRecordVO>> pageOwnerLoanRecord(@RequestBody @Validated PageCarrierOwnerLoanRecordParam param) {
IPage<OwnerLoanRecordVO> page = ownerLoanRecordService.pageOwnerLoanRecord(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "借款审批",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanRecordApprove")
public Result<Object> ownerLoanRecordApprove(@RequestBody @Validated CarrierOwnerLoanRecordApproveParam param) {
ownerLoanRecordService.ownerLoanRecordApprove(param);
return Result.ok();
}
@ApiOperation(value = "分页搜索货主借款列表",notes = "<br>By:艾庆国")
@PostMapping("/pageOwnerLoanRecordOfOwner")
public Result<PageData<OwnerLoanRecordVO>> pageOwnerLoanRecordOfOwner(@RequestBody @Validated PageOwnerLoanRecordOfOwner param) {
IPage<OwnerLoanRecordVO> page = ownerLoanRecordService.pageOwnerLoanRecordOfOwner(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerPaymentParam;
import com.clx.performance.service.loan.OwnerPaymentService;
import com.clx.performance.vo.pc.loan.carrier.OwnerPaymentVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerPayment")
@Validated
@Api(tags = "承运端-借款管理")
@AllArgsConstructor
public class CarrierOwnerPaymentController {
private final OwnerPaymentService ownerPaymentService;
@ApiOperation(value = "付款列表",notes = "<br>By:刘海泉")
@PostMapping("/pageOwnerPayment")
public Result<PageData<OwnerPaymentVO>> pageOwnerPayment(@RequestBody @Validated PageCarrierOwnerPaymentParam param) {
IPage<OwnerPaymentVO> page = ownerPaymentService.pageOwnerPayment(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
}
package com.clx.performance.controller.pc.loan.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.service.loan.OwnerRepaymentService;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerRepayment")
@Validated
@Api(tags = "承运端-借款管理")
@AllArgsConstructor
public class CarrierOwnerRepaymentController {
private final OwnerRepaymentService ownerRepaymentService;
@ApiOperation(value = "还款列表",notes = "<br>By:刘海泉")
@PostMapping("/pageOwnerRepayment")
public Result<PageData<OwnerRepaymentVO>> pageOwnerRepayment(@RequestBody @Validated PageCarrierOwnerRepaymentParam param) {
IPage<OwnerRepaymentVO> page = ownerRepaymentService.pageOwnerRepayment(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "分页搜索货主还款列表",notes = "<br>By:艾庆国")
@PostMapping("/pageOwnerRepaymentOfOwner")
public Result<PageData<OwnerRepaymentVO>> pageOwnerRepaymentOfOwner(@RequestBody @Validated PageOwnerRepaymentOfOwner param) {
IPage<OwnerRepaymentVO> page = ownerRepaymentService.pageOwnerRepaymentOfOwner(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.controller.pc.loan.owner;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.service.loan.OwnerLoanAccountApproveService;
import com.clx.performance.service.loan.OwnerLoanAccountRunningWaterRecordService;
import com.clx.performance.service.loan.OwnerLoanRecordService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/ownerLoanAccountApprove")
@Validated
@Api(tags = "货主端-资金管理")
@AllArgsConstructor
public class OwnerLoanAccountController {
private final OwnerLoanAccountApproveService ownerLoanAccountApproveService;
private final OwnerLoanRecordService ownerLoanRecordService;
@ApiOperation(value = "货主借款账户开通",notes = "<br>By:胡宇帆")
@GetMapping("/openOwnerLoanAccount")
public Result<Object> openOwnerLoanAccount() {
ownerLoanAccountApproveService.openOwnerLoanAccountApprove();
return Result.ok();
}
@ApiOperation(value = "货主借款申请",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanRecordSubmit")
public Result<Object> ownerLoanRecordSubmit(@RequestBody OwnerLoanRecordParam param) {
ownerLoanRecordService.ownerLoanRecordSubmit(param);
return Result.ok();
}
}
package com.clx.performance.controller.pc.loan.owner;
/**
* @ClassName TestController
* @Description
* @Author kavin
* @Date 2024/1/22 10:34
* @Version 1.0
*/
public class TestController {
}
...@@ -2,7 +2,7 @@ package com.clx.performance.controller.temp; ...@@ -2,7 +2,7 @@ package com.clx.performance.controller.temp;
import com.clx.performance.service.thirdparty.nbbank.NbBankService; import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -26,25 +26,39 @@ public class TempBankController { ...@@ -26,25 +26,39 @@ public class TempBankController {
@Autowired @Autowired
private NbBankService bankService; private NbBankService bankService;
@ApiOperation(value = "directBankTransferOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "转账支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/directBankTransferOrder", method = RequestMethod.POST) @RequestMapping(value = "/orderTransferPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> directBankTransferOrder() throws Exception { public Result<NbBankOrderPayResultVO> directBankTransferOrder() {
return Result.ok(bankService.orderPay(1)); return Result.ok(bankService.orderTransferPay(1));
} }
@ApiOperation(value = "unionPayDirectOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "订单支付", notes = "<br>By:艾庆国")
@RequestMapping(value = "/unionPayDirectOrder", method = RequestMethod.POST) @RequestMapping(value = "/orderDirectPay", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> unionPayDirectOrder() throws Exception { public Result<NbBankOrderPayResultVO> orderDirectPay() {
return Result.ok(bankService.orderPay(2)); return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰"));
} }
@ApiOperation(value = "queryOrder", notes = "<br>By:艾庆国") @ApiOperation(value = "查询", notes = "<br>By:艾庆国")
@RequestMapping(value = "/queryOrderTest", method = RequestMethod.POST) @RequestMapping(value = "/getResult", method = RequestMethod.POST)
public Result<NbBankOrderPayStatusResultVO> queryOrderTest(String merSeqNo) throws Exception { public Result<NbBankOrderResultVO> getResult(String merSeqNo) {
return Result.ok(bankService.getOrderStatus(merSeqNo)); return Result.ok(bankService.getResult(merSeqNo));
}
@ApiOperation(value = "调账", notes = "<br>By:艾庆国")
@RequestMapping(value = "/adjust", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> adjust(String merSeqNo, Integer amount) {
return Result.ok(bankService.adjust(merSeqNo, amount));
}
@ApiOperation(value = "退款", notes = "<br>By:艾庆国")
@RequestMapping(value = "/refund", method = RequestMethod.POST)
public Result<NbBankOrderResultVO> refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo) {
return Result.ok(bankService.refund(orgMerSeqNo,amount,orgTransSeqNo));
} }
} }
...@@ -17,7 +17,8 @@ public class OwnerBindCardRecordDaoImpl extends BaseDaoImpl<OwnerBindCardRecordM ...@@ -17,7 +17,8 @@ public class OwnerBindCardRecordDaoImpl extends BaseDaoImpl<OwnerBindCardRecordM
@Override @Override
public OwnerBindCardRecord getOwnerBindCardByUserNo(Long userNo) { public OwnerBindCardRecord getOwnerBindCardByUserNo(Long userNo) {
return super.getOne(lQrWrapper() return super.getOne(lQrWrapper()
.eq(OwnerBindCardRecord::getOwnerUserNo, userNo) .eq(OwnerBindCardRecord::getOwnerUserNo, userNo).eq(OwnerBindCardRecord::getCreateItem, "绑定银行卡")
.orderByDesc(OwnerBindCardRecord::getId)
.last("limit 1") .last("limit 1")
); );
} }
......
package com.clx.performance.dao.impl.borrower; package com.clx.performance.dao.impl.loan;
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;
import com.clx.performance.dao.borrower.BorrowerConfigDao; import com.clx.performance.dao.loan.BorrowerConfigDao;
import com.clx.performance.enums.borrower.BorrowerConfigEnum; import com.clx.performance.enums.loan.BorrowerConfigEnum;
import com.clx.performance.enums.borrower.BorrowerEnum; import com.clx.performance.mapper.loan.BorrowerConfigMapper;
import com.clx.performance.mapper.borrower.BorrowerConfigMapper; import com.clx.performance.model.loan.BorrowerConfig;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam;
import com.clx.performance.model.borrower.BorrowerConfig; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.clx.performance.param.pc.borrower.PageBorrowerConfigParam;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO;
import com.clx.performance.vo.pc.borrower.BorrowerVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -68,10 +65,11 @@ public class BorrowerConfigDaoImpl extends BaseDaoImpl<BorrowerConfigMapper, Bor ...@@ -68,10 +65,11 @@ public class BorrowerConfigDaoImpl extends BaseDaoImpl<BorrowerConfigMapper, Bor
} }
@Override @Override
public Optional<BorrowerConfig> selectByBorrowerId(Integer borrowerId) { public Optional<BorrowerConfig> selectByBorrowerIdAndType(Integer borrowerId, Integer type) {
return Optional.of(borrowerId) return Optional.of(borrowerId)
.map(item -> lQrWrapper() .map(item -> lQrWrapper()
.eq(BorrowerConfig::getBorrowerId, item) .eq(BorrowerConfig::getBorrowerId, item)
.eq(BorrowerConfig::getType, type)
.eq(BorrowerConfig::getDeleteStatus, BorrowerConfigEnum.DeleteStatus.NO.getCode()) .eq(BorrowerConfig::getDeleteStatus, BorrowerConfigEnum.DeleteStatus.NO.getCode())
.last("limit 1") .last("limit 1")
) )
......
package com.clx.performance.dao.impl.borrower; package com.clx.performance.dao.impl.loan;
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;
import com.clx.performance.dao.borrower.BorrowerDao; import com.clx.performance.dao.loan.BorrowerDao;
import com.clx.performance.enums.borrower.BorrowerEnum; import com.clx.performance.enums.loan.BorrowerEnum;
import com.clx.performance.mapper.borrower.BorrowerMapper; import com.clx.performance.mapper.loan.BorrowerMapper;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.param.pc.borrower.PageBorrowerParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerParam;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanAccountApproveDao;
import com.clx.performance.mapper.loan.OwnerLoanAccountApproveMapper;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Repository
public class OwnerLoanAccountApproveDaoImpl extends BaseDaoImpl<OwnerLoanAccountApproveMapper, OwnerLoanAccountApprove, Integer> implements OwnerLoanAccountApproveDao {
@Override
public IPage<OwnerLoanAccountApprove> pageOwnerLoanAccountApprove(PageOwnerLoanAccountApproveParam param) {
LambdaQueryWrapper<OwnerLoanAccountApprove> query = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getOwnerUserNo())){
query.eq(OwnerLoanAccountApprove :: getOwnerUserNo,param.getOwnerUserNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserName())){
query.like(OwnerLoanAccountApprove :: getOwnerUserName,param.getOwnerUserName());
}
if(Objects.nonNull(param.getStatus())){
query.like(OwnerLoanAccountApprove :: getStatus,param.getStatus());
}
query.orderByDesc(OwnerLoanAccountApprove :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
}
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.mapper.loan.OwnerLoanAccountMapper;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.msl.common.utils.DateUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Repository
public class OwnerLoanAccountDaoImpl extends BaseDaoImpl<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> implements OwnerLoanAccountDao {
@Override
public Integer updateAccountCAS(OwnerLoanAccount account, LocalDateTime now, boolean flag) {
String nowStr = DateUtils.formatDateTime(now).get();
if (flag) {
return baseMapper.addAccount(account, nowStr);
} else {
return null;
// return baseMapper.subAccount(account, nowStr);
}
}
@Override
public IPage<OwnerLoanAccountVO> pageByParam(PageOwnerLoanAccountParam param) {
Page<OwnerLoanAccountVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.mapper.loan.OwnerLoanAccountRunningWaterRecordMapper;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Repository
public class OwnerLoanAccountRunningWaterRecordDaoImpl extends BaseDaoImpl<OwnerLoanAccountRunningWaterRecordMapper, OwnerLoanAccountRunningWaterRecord, Integer> implements OwnerLoanAccountRunningWaterRecordDao {
@Override
public IPage<OwnerLoanAccountRunningWaterRecordVO> pageByParam(PageOwnerLoanAccountWaterRecordOfOwnerParam param) {
Page<OwnerLoanAccountRunningWaterRecordVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.mapper.loan.OwnerLoanRecordMapper;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
@Repository
public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, OwnerLoanRecord, Integer> implements OwnerLoanRecordDao {
@Override
public IPage<OwnerLoanRecord> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) {
LambdaQueryWrapper<OwnerLoanRecord> query = new LambdaQueryWrapper<>();
if(Objects.nonNull(param.getLoanType())){
query.eq(OwnerLoanRecord :: getLoanType,param.getLoanType());
}
if(StringUtils.isNotBlank(param.getOwnerUserNo())){
query.eq(OwnerLoanRecord :: getOwnerUserNo,param.getOwnerUserNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserName())){
query.like(OwnerLoanRecord :: getOwnerUserName,param.getOwnerUserName());
}
if(StringUtils.isNotBlank(param.getMobile())){
query.like(OwnerLoanRecord :: getMobile,param.getMobile());
}
if(Objects.nonNull(param.getLoanNo())){
query.like(OwnerLoanRecord :: getLoanNo,param.getLoanNo());
}
if(Objects.nonNull(param.getStatus())){
query.like(OwnerLoanRecord :: getStatus,param.getStatus());
}
query.orderByDesc(OwnerLoanRecord :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
@Override
public IPage<OwnerLoanRecordVO> pageByParam(PageOwnerLoanRecordOfOwner param) {
Page<OwnerLoanRecordVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerPaymentDao;
import com.clx.performance.mapper.loan.OwnerPaymentMapper;
import com.clx.performance.model.loan.OwnerPayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerPaymentParam;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Repository
public class OwnerPaymentDaoImpl extends BaseDaoImpl<OwnerPaymentMapper, OwnerPayment, Integer> implements OwnerPaymentDao {
@Override
public IPage<OwnerPayment> pageOwnerPayment(PageCarrierOwnerPaymentParam param) {
LambdaQueryWrapper<OwnerPayment> query = new LambdaQueryWrapper<>();
if(Objects.nonNull(param.getRepaymentNo())){
query.eq(OwnerPayment :: getRepaymentNo,param.getRepaymentNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserNo())){
query.eq(OwnerPayment :: getOwnerUserNo,param.getOwnerUserNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserName())){
query.like(OwnerPayment :: getOwnerUserName,param.getOwnerUserName());
}
if(StringUtils.isNotBlank(param.getMobile())){
query.like(OwnerPayment :: getMobile,param.getMobile());
}
if(Objects.nonNull(param.getPaymentNo())){
query.like(OwnerPayment :: getPaymentNo,param.getPaymentNo());
}
if(Objects.nonNull(param.getStatus())){
query.like(OwnerPayment :: getStatus,param.getStatus());
}
query.orderByDesc(OwnerPayment :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
}
package com.clx.performance.dao.impl.loan;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.mapper.loan.OwnerRepaymentMapper;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Repository
public class OwnerRepaymentDaoImpl extends BaseDaoImpl<OwnerRepaymentMapper, OwnerRepayment, Integer> implements OwnerRepaymentDao {
@Override
public IPage<OwnerRepayment> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param) {
LambdaQueryWrapper<OwnerRepayment> query = new LambdaQueryWrapper<>();
if(Objects.nonNull(param.getRepaymentNo())){
query.eq(OwnerRepayment :: getRepaymentNo,param.getRepaymentNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserNo())){
query.eq(OwnerRepayment :: getOwnerUserNo,param.getOwnerUserNo());
}
if(StringUtils.isNotBlank(param.getOwnerUserName())){
query.like(OwnerRepayment :: getOwnerUserName,param.getOwnerUserName());
}
if(StringUtils.isNotBlank(param.getMobile())){
query.like(OwnerRepayment :: getMobile,param.getMobile());
}
if(Objects.nonNull(param.getLoanNo())){
query.like(OwnerRepayment :: getLoanNo,param.getLoanNo());
}
if(Objects.nonNull(param.getStatus())){
query.like(OwnerRepayment :: getStatus,param.getStatus());
}
if(Objects.nonNull(param.getBeOverdue())){
query.like(OwnerRepayment :: getBeOverdue,param.getBeOverdue());
}
query.orderByDesc(OwnerRepayment :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
@Override
public IPage<OwnerRepaymentVO> pageByParam(PageOwnerRepaymentOfOwner param) {
Page<OwnerRepaymentVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.pageByParam(page,param);
}
}
package com.clx.performance.dao.borrower; package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.borrower.BorrowerConfigMapper; import com.clx.performance.mapper.loan.BorrowerConfigMapper;
import com.clx.performance.model.borrower.BorrowerConfig; import com.clx.performance.model.loan.BorrowerConfig;
import com.clx.performance.param.pc.borrower.PageBorrowerConfigParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
...@@ -23,7 +23,7 @@ public interface BorrowerConfigDao extends BaseDao<BorrowerConfigMapper, Borrowe ...@@ -23,7 +23,7 @@ public interface BorrowerConfigDao extends BaseDao<BorrowerConfigMapper, Borrowe
boolean updateStatus(BorrowerConfig item); boolean updateStatus(BorrowerConfig item);
boolean updateDelete(BorrowerConfig item); boolean updateDelete(BorrowerConfig item);
Optional<BorrowerConfig> selectByBorrowerId(Integer borrowerId); Optional<BorrowerConfig> selectByBorrowerIdAndType(Integer borrowerId, Integer type);
List<BorrowerConfig> listEnable(); List<BorrowerConfig> listEnable();
......
package com.clx.performance.dao.borrower; package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.borrower.BorrowerMapper; import com.clx.performance.mapper.loan.BorrowerMapper;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.param.pc.borrower.PageBorrowerParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerParam;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
......
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerLoanAccountApproveMapper;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
import com.msl.common.dao.BaseDao;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountApproveDao extends BaseDao<OwnerLoanAccountApproveMapper, OwnerLoanAccountApprove, Integer> {
IPage<OwnerLoanAccountApprove> pageOwnerLoanAccountApprove(PageOwnerLoanAccountApproveParam param);
}
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerLoanAccountMapper;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountDao extends BaseDao<OwnerLoanAccountMapper, OwnerLoanAccount, Integer> {
Integer updateAccountCAS(OwnerLoanAccount account, LocalDateTime now, boolean flag);
IPage<OwnerLoanAccountVO> pageByParam(PageOwnerLoanAccountParam param);
}
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerLoanAccountRunningWaterRecordMapper;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import com.msl.common.dao.BaseDao;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountRunningWaterRecordDao extends BaseDao<OwnerLoanAccountRunningWaterRecordMapper, OwnerLoanAccountRunningWaterRecord, Integer> {
IPage<OwnerLoanAccountRunningWaterRecordVO> pageByParam(PageOwnerLoanAccountWaterRecordOfOwnerParam param);
}
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerLoanRecordMapper;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.msl.common.dao.BaseDao;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
public interface OwnerLoanRecordDao extends BaseDao<OwnerLoanRecordMapper, OwnerLoanRecord, Integer> {
IPage<OwnerLoanRecord> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param);
IPage<OwnerLoanRecordVO> pageByParam(PageOwnerLoanRecordOfOwner param);
}
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerPaymentMapper;
import com.clx.performance.model.loan.OwnerPayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerPaymentParam;
import com.msl.common.dao.BaseDao;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerPaymentDao extends BaseDao<OwnerPaymentMapper, OwnerPayment, Integer> {
IPage<OwnerPayment> pageOwnerPayment(PageCarrierOwnerPaymentParam param);
}
package com.clx.performance.dao.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.loan.OwnerRepaymentMapper;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import com.msl.common.dao.BaseDao;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerRepaymentDao extends BaseDao<OwnerRepaymentMapper, OwnerRepayment, Integer> {
IPage<OwnerRepayment> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param);
IPage<OwnerRepaymentVO> pageByParam(PageOwnerRepaymentOfOwner param);
}
package com.clx.performance.mapper.borrower; package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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;
import com.clx.performance.model.borrower.BorrowerConfig; import com.clx.performance.model.loan.BorrowerConfig;
import com.clx.performance.param.pc.borrower.PageBorrowerConfigParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam;
import com.clx.performance.sqlProvider.borrower.BorrowerConfigSqlProvider; import com.clx.performance.sqlProvider.borrower.BorrowerConfigSqlProvider;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
......
package com.clx.performance.mapper.borrower; package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.param.pc.borrower.PageBorrowerParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerParam;
import com.clx.performance.sqlProvider.borrower.BorrowerSqlProvider; import com.clx.performance.sqlProvider.borrower.BorrowerSqlProvider;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
......
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountApproveMapper extends BaseMapper<OwnerLoanAccountApprove> {
}
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.sqlProvider.borrower.OwnerLoanAccountSqlProvider;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
@Update("update owner_loan_account set funding_amount = funding_amount + #{account.fundingAmount}"
+ ",virtually_amount = virtually_amount + #{account.virtuallyAmount}"
+ ",modified_time= #{now}"
+ "where id = #{account.id} and modified_time = #{account.modifiedTime}"
)
Integer addAccount(@Param("account") OwnerLoanAccount account, @Param("now") String nowStr);
// @Update("update owner_account set funding_amount = funding_amount - #{account.fundingAmount}," +
// "frozen_balance = frozen_balance + #{account.frozenBalance},account_balance = account_balance - #{account.accountBalance}," +
// "modified_time=#{now}"
// + "where id = #{account.id} and modified_time = #{account.modifiedTime}"
// )
// Integer subAccount(@Param("account") OwnerAccount account, @Param("now") String now);
/**
* @see OwnerLoanAccountSqlProvider#pageByParam(Page, PageOwnerLoanAccountParam)
*/
@SelectProvider(type = OwnerLoanAccountSqlProvider.class, method = "pageByParam")
IPage<OwnerLoanAccountVO> pageByParam(@Param("page") Page<OwnerLoanAccountVO> page, @Param("param") PageOwnerLoanAccountParam param);
}
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.sqlProvider.borrower.OwnerLoanAccountRunningWaterRecordSqlProvider;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountRunningWaterRecordMapper extends BaseMapper<OwnerLoanAccountRunningWaterRecord> {
/**
* @see OwnerLoanAccountRunningWaterRecordSqlProvider#pageByParam(Page, PageOwnerLoanAccountWaterRecordOfOwnerParam)
*/
@SelectProvider(type = OwnerLoanAccountRunningWaterRecordSqlProvider.class, method = "pageByParam")
IPage<OwnerLoanAccountRunningWaterRecordVO> pageByParam(@Param("page") Page<OwnerLoanAccountRunningWaterRecordVO> page, @Param("param") PageOwnerLoanAccountWaterRecordOfOwnerParam param);
}
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.sqlProvider.borrower.OwnerLoanRecordSqlProvider;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
public interface OwnerLoanRecordMapper extends BaseMapper<OwnerLoanRecord> {
/**
* @see OwnerLoanRecordSqlProvider#pageByParam(Page, PageOwnerLoanRecordOfOwner)
*/
@SelectProvider(type = OwnerLoanRecordSqlProvider.class, method = "pageByParam")
IPage<OwnerLoanRecordVO> pageByParam(@Param("page") Page<OwnerLoanRecordVO> page, @Param("param") PageOwnerLoanRecordOfOwner param);
}
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.loan.OwnerPayment;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerPaymentMapper extends BaseMapper<OwnerPayment> {
}
package com.clx.performance.mapper.loan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.sqlProvider.borrower.OwnerRepaymentSqlProvider;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerRepaymentMapper extends BaseMapper<OwnerRepayment> {
/**
* @see OwnerRepaymentSqlProvider#pageByParam(Page, PageOwnerRepaymentOfOwner)
*/
@SelectProvider(type = OwnerRepaymentSqlProvider.class, method = "pageByParam")
IPage<OwnerRepaymentVO> pageByParam(@Param("page") Page<OwnerRepaymentVO> page, @Param("param") PageOwnerRepaymentOfOwner param);
}
package com.clx.performance.model.borrower; package com.clx.performance.model.loan;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.clx.performance.model.borrower; package com.clx.performance.model.loan;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
......
package com.clx.performance.model.loan;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_loan_account")
public class OwnerLoanAccount implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("account_type")
@ApiModelProperty("账户类型: 默认3 借款账户")
private Integer accountType;
@TableField("funding_amount")
@ApiModelProperty("资金金额")
private BigDecimal fundingAmount;
@TableField("virtually_amount")
@ApiModelProperty("虚拟币金额")
private BigDecimal virtuallyAmount;
@TableField("funding_arrears")
@ApiModelProperty("资金欠款")
private BigDecimal fundingArrears;
@TableField("virtually_arrears")
@ApiModelProperty("虚拟币欠款")
private BigDecimal virtuallyArrears;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model.loan;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_loan_account_approve")
public class OwnerLoanAccountApprove implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("account_type")
@ApiModelProperty("账户类型 默认3 借款账户")
private Integer accountType;
@TableField("status")
@ApiModelProperty("待审批 10,审批成功 20,审批拒绝 30")
private Integer status;
@TableField("approve_time")
@ApiModelProperty("审批时间")
private LocalDateTime approveTime;
@TableField("approve_by")
@ApiModelProperty("审批人")
private String approveBy;
@TableField("reject_reason")
@ApiModelProperty("拒绝原因")
private String rejectReason;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model.loan;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_loan_account_running_water_record")
public class OwnerLoanAccountRunningWaterRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("running_water_no")
@ApiModelProperty("流水号")
private Long runningWaterNo;
@TableField("loan_no")
@ApiModelProperty("借款单号")
private Long loanNo;
@TableField("child_no")
@ApiModelProperty("运单编号")
private String childNo;
@TableField("running_water_type")
@ApiModelProperty("流水类型 70:运单核销 80:借款")
private Integer runningWaterType;
@TableField("alteration_balance")
@ApiModelProperty("金额")
private BigDecimal alterationBalance;
@TableField("account_balance")
@ApiModelProperty("账户余额")
private BigDecimal accountBalance;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model.loan;
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 com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_loan_record")
public class OwnerLoanRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("running_water_open_no")
@ApiModelProperty("交易流水号(第三方)")
private String runningWaterOpenNo;
@TableField("merchant_running_water_no")
@ApiModelProperty("商户流水号")
private String merchantRunningWaterNo;
@TableField("loan_no")
@ApiModelProperty("借款单号")
private Long loanNo;
@TableField("loan_type")
@ApiModelProperty("借款类型 1:虚拟货币 2:资金")
private Integer loanType;
@TableField("loan_balance")
@ApiModelProperty("借款金额")
private BigDecimal loanBalance;
@TableField("borrower")
@ApiModelProperty("借款方")
private String borrower;
@ApiModelProperty("借款方账户")
@TableField("borrower_account")
private String borrowerAccount;
@TableField("lending_party")
@ApiModelProperty("借出方")
private String lendingParty;
@TableField("payment_account")
@ApiModelProperty("付款账户")
private String paymentAccount;
@TableField("payee")
@ApiModelProperty("收款方")
private String payee;
@TableField("payee_account")
@ApiModelProperty("收款账户")
private String payeeAccount;
@TableField("status")
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status;
@TableField("approve_time")
@ApiModelProperty("审批时间")
private LocalDateTime approveTime;
@TableField("approve_by")
@ApiModelProperty("审批人")
private String approveBy;
@TableField("reject_reason")
@ApiModelProperty("拒绝原因")
private String rejectReason;
@TableField("loan_repayment_time")
@ApiModelProperty("借款归还时间")
private LocalDateTime loanRepaymentTime;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model.loan;
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 com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_payment")
public class OwnerPayment implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("running_water_open_no")
@ApiModelProperty("交易流水号(第三方)")
private Long runningWaterOpenNo;
@TableField("payment_no")
@ApiModelProperty("付款单号")
private Long paymentNo;
@TableField("repayment_no")
@ApiModelProperty("还款单号")
private Long repaymentNo;
@TableField("payment_balance")
@ApiModelProperty("付款金额")
private BigDecimal paymentBalance;
@TableField("payment")
@ApiModelProperty("付款方")
private String payment;
@TableField("payment_account")
@ApiModelProperty("付款账户")
private String paymentAccount;
@TableField("payee")
@ApiModelProperty("收款方")
private String payee;
@TableField("payee_account")
@ApiModelProperty("收款账户")
private String payeeAccount;
@TableField("status")
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
@TableField("pay_channel")
@ApiModelProperty("默认财资 30 ")
private Integer payChannel;
@TableField("operate_time")
@ApiModelProperty("操作时间")
private LocalDateTime operateTime;
@TableField("operate_by")
@ApiModelProperty("操作人")
private String operateBy;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model.loan;
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 com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("owner_repayment")
public class OwnerRepayment implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编码")
private Long ownerUserNo;
@TableField("owner_user_name")
@ApiModelProperty("货主名称")
private String ownerUserName;
@TableField("mobile")
@ApiModelProperty("联系电话")
private String mobile;
@TableField("running_water_open_no")
@ApiModelProperty("交易流水号(第三方)")
private String runningWaterOpenNo;
@TableField("merchant_running_water_no")
@ApiModelProperty("商户流水号")
private String merchantRunningWaterNo;
@TableField("repayment_no")
@ApiModelProperty("还款单号")
private Long repaymentNo;
@TableField("repayment_balance")
@ApiModelProperty("还款金额")
private BigDecimal repaymentBalance;
@TableField("payment")
@ApiModelProperty("付款方")
private String payment;
@TableField("payment_account")
@ApiModelProperty("付款账户")
private String paymentAccount;
@TableField("payee")
@ApiModelProperty("收款方")
private String payee;
@TableField("payee_account")
@ApiModelProperty("收款账户")
private String payeeAccount;
@TableField("loan_no")
@ApiModelProperty("借款单号")
private Long loanNo;
@TableField("status")
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status;
@TableField("pay_channel")
@ApiModelProperty("支付渠道 10 订单支付 20 转账支付")
private Integer payChannel;
@TableField("be_overdue")
@ApiModelProperty("10 未逾期 20 已逾期")
private Integer beOverdue;
@TableField("loan_repayment_time")
@ApiModelProperty("借款归还时间")
private LocalDateTime loanRepaymentTime;
@TableField("operate_time")
@ApiModelProperty("操作时间")
private LocalDateTime operateTime;
@TableField("operate_by")
@ApiModelProperty("操作人")
private String operateBy;
@TableField("create_by")
@ApiModelProperty("创建人")
private String createBy;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
...@@ -28,7 +28,8 @@ public class NbBankRecord implements HasKey<Integer> { ...@@ -28,7 +28,8 @@ public class NbBankRecord implements HasKey<Integer> {
private Integer id; //id private Integer id; //id
private Integer type; //类型:1转账直连下单 2银联订单支付收款模式 3交易结果查询 4异步通知交易结果 private Integer type; //类型:1转账直连下单 2银联订单支付收款模式 3交易结果查询 4异步通知交易结果
private String merId; //商户号 private String merId; //商户号
private String merSeqNo; //流水号 private String merSeqNo; //商户号流水号
private LocalDateTime merDtTm; //商户交易时间
private String transSeqNo; //第三方流水号 private String transSeqNo; //第三方流水号
private Integer amount; //金额 (分) private Integer amount; //金额 (分)
private String param; //参数 private String param; //参数
......
...@@ -16,6 +16,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam; ...@@ -16,6 +16,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.vo.pc.OwnerAccountAllVO; import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO; import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO; import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam; import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam;
import com.clx.user.vo.pc.owner.OwnerBindCardVO; import com.clx.user.vo.pc.owner.OwnerBindCardVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
...@@ -101,4 +102,6 @@ public interface OwnerAccountService { ...@@ -101,4 +102,6 @@ public interface OwnerAccountService {
String checkBusinessLicenseNumber(InformationParam param); String checkBusinessLicenseNumber(InformationParam param);
void resetPassword(ResetPasswordParam param); void resetPassword(ResetPasswordParam param);
OwnerLoanAccountVO loanAccount(Long userNo);
} }
...@@ -15,11 +15,13 @@ import com.clx.performance.config.ClxMessageConfig; ...@@ -15,11 +15,13 @@ import com.clx.performance.config.ClxMessageConfig;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.enums.IdTypeEnum; import com.clx.performance.enums.IdTypeEnum;
import com.clx.performance.enums.OwnerAccountEnum; import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.extranal.user.OwnerInfoService; import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.param.app.CheckMobileParam; import com.clx.performance.param.app.CheckMobileParam;
import com.clx.performance.param.app.InformationParam; import com.clx.performance.param.app.InformationParam;
import com.clx.performance.param.app.ResetPasswordParam; import com.clx.performance.param.app.ResetPasswordParam;
...@@ -33,6 +35,7 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam; ...@@ -33,6 +35,7 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam; import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.OwnerAccountService; import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.struct.OwnerAccountStruct; import com.clx.performance.struct.OwnerAccountStruct;
import com.clx.performance.struct.loan.OwnerLoanAccountStruct;
import com.clx.performance.utils.MyMD5Util; import com.clx.performance.utils.MyMD5Util;
import com.clx.performance.utils.excel.ExcelData; import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField; import com.clx.performance.utils.excel.ExcelField;
...@@ -41,6 +44,7 @@ import com.clx.performance.utils.excel.ExcelUtil; ...@@ -41,6 +44,7 @@ import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.OwnerAccountAllVO; import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO; import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO; import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.user.enums.owner.FreezeSettingEnum; import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.feign.OwnerFeign; import com.clx.user.feign.OwnerFeign;
import com.clx.user.feign.OwnerInfoFeign; import com.clx.user.feign.OwnerInfoFeign;
...@@ -111,6 +115,10 @@ public class OwnerAccountServiceImpl implements OwnerAccountService { ...@@ -111,6 +115,10 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
private final OwnerInfoService ownerInfoService; private final OwnerInfoService ownerInfoService;
private final OwnerLoanAccountDao ownerLoanAccountDao;
private final OwnerLoanAccountStruct ownerLoanAccountStruct;
@Override @Override
public IPage<OwnerAccountVO> pageList(PageOwnerAccountListParam param) { public IPage<OwnerAccountVO> pageList(PageOwnerAccountListParam param) {
return ownerAccountDao.pageList(param); return ownerAccountDao.pageList(param);
...@@ -249,7 +257,7 @@ public class OwnerAccountServiceImpl implements OwnerAccountService { ...@@ -249,7 +257,7 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
entity.setCaseOutBalance(caseOutBalance); entity.setCaseOutBalance(caseOutBalance);
entity.setOwnerUserNo(param.getOwnerUserNo()); entity.setOwnerUserNo(param.getOwnerUserNo());
entity.setStatus(OwnerAccountEnum.CaseOutStatus.PENDING_PAYMENT.getCode()); entity.setStatus(OwnerAccountEnum.CaseOutStatus.PENDING_PAYMENT.getCode());
entity.setCaseOutBank(param.getOwnerAccountBank()); entity.setCaseOutBank(param.getOwnerOpenBank());
entity.setCaseOutBankNumber(param.getOwnerBankAccount()); entity.setCaseOutBankNumber(param.getOwnerBankAccount());
entity.setCreateBy(loginUserInfo.getUserName()); entity.setCreateBy(loginUserInfo.getUserName());
...@@ -1213,5 +1221,13 @@ public class OwnerAccountServiceImpl implements OwnerAccountService { ...@@ -1213,5 +1221,13 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
} }
} }
@Override
public OwnerLoanAccountVO loanAccount(Long userNo) {
OwnerLoanAccount ownerLoanAccount = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo, userNo).orNull();
if (ownerLoanAccount == null) {
return null;
}
return ownerLoanAccountStruct.convert(ownerLoanAccount);
}
} }
package com.clx.performance.service.impl.borrower; package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.borrower.BorrowerConfigDao; import com.clx.performance.dao.loan.BorrowerConfigDao;
import com.clx.performance.dao.borrower.BorrowerDao; import com.clx.performance.dao.loan.BorrowerDao;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.borrower.BorrowerConfigEnum; import com.clx.performance.enums.loan.BorrowerConfigEnum;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.model.borrower.BorrowerConfig; import com.clx.performance.model.loan.BorrowerConfig;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.service.borrower.BorrowerConfigService; import com.clx.performance.service.loan.BorrowerConfigService;
import com.clx.performance.struct.borrower.BorrowerConfigStruct; import com.clx.performance.struct.borrower.BorrowerConfigStruct;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
...@@ -49,7 +49,7 @@ public class BorrowerConfigServiceImpl implements BorrowerConfigService { ...@@ -49,7 +49,7 @@ public class BorrowerConfigServiceImpl implements BorrowerConfigService {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
// 重复验证 // 重复验证
Optional<BorrowerConfig> borrowerConfigOptional = borrowerConfigDao.selectByBorrowerId(param.getBorrowerId()); Optional<BorrowerConfig> borrowerConfigOptional = borrowerConfigDao.selectByBorrowerIdAndType(param.getBorrowerId(), param.getType());
if (borrowerConfigOptional.isPresent()) { if (borrowerConfigOptional.isPresent()) {
throw new ServiceSystemException(PerformanceResultEnum.BORROWER_CONFIG_BORROWER_ID_EXIST); throw new ServiceSystemException(PerformanceResultEnum.BORROWER_CONFIG_BORROWER_ID_EXIST);
} }
...@@ -76,7 +76,7 @@ public class BorrowerConfigServiceImpl implements BorrowerConfigService { ...@@ -76,7 +76,7 @@ public class BorrowerConfigServiceImpl implements BorrowerConfigService {
BorrowerConfig borrowerConfig = borrowerConfigDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); BorrowerConfig borrowerConfig = borrowerConfigDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 重复验证 // 重复验证
Optional<BorrowerConfig> borrowerConfigOptional = borrowerConfigDao.selectByBorrowerId(param.getBorrowerId()); Optional<BorrowerConfig> borrowerConfigOptional = borrowerConfigDao.selectByBorrowerIdAndType(param.getBorrowerId(), param.getType());
if (borrowerConfigOptional.isPresent() && !Objects.equals(borrowerConfig.getId(), borrowerConfigOptional.get().getId())) { if (borrowerConfigOptional.isPresent() && !Objects.equals(borrowerConfig.getId(), borrowerConfigOptional.get().getId())) {
throw new ServiceSystemException(PerformanceResultEnum.BORROWER_CONFIG_BORROWER_ID_EXIST); throw new ServiceSystemException(PerformanceResultEnum.BORROWER_CONFIG_BORROWER_ID_EXIST);
} }
......
package com.clx.performance.service.impl.borrower; package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.borrower.BorrowerDao; import com.clx.performance.dao.loan.BorrowerDao;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.borrower.BorrowerEnum; import com.clx.performance.enums.loan.BorrowerEnum;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.service.borrower.BorrowerService; import com.clx.performance.service.loan.BorrowerService;
import com.clx.performance.struct.borrower.BorrowerStruct; import com.clx.performance.struct.borrower.BorrowerStruct;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
......
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanAccountApproveDao;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
import com.clx.performance.param.pc.loan.carrier.OwnerLoanAccountApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
import com.clx.performance.service.loan.OwnerLoanAccountApproveService;
import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.struct.loan.OwnerLoanAccountApproveStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountApproveVO;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Service
@Slf4j
@AllArgsConstructor
public class OwnerLoanAccountApproveServiceImpl implements OwnerLoanAccountApproveService {
private final OwnerLoanAccountApproveDao ownerLoanAccountApproveDao;
private final OwnerLoanAccountApproveStruct ownerLoanAccountApproveStruct;
private final OwnerLoanAccountService ownerLoanAccountService;
@Override
public IPage<OwnerLoanAccountApproveVO> pageOwnerLoanAccountApprove(PageOwnerLoanAccountApproveParam param) {
IPage<OwnerLoanAccountApprove> page = ownerLoanAccountApproveDao.pageOwnerLoanAccountApprove(param);
List<OwnerLoanAccountApproveVO> records = ownerLoanAccountApproveStruct.convertList(page.getRecords());
IPage<OwnerLoanAccountApproveVO> returnPage = new Page<>();
returnPage.setPages(page.getPages());
returnPage.setTotal(page.getTotal());
returnPage.setRecords(records);
return returnPage;
}
@Override
public void openOwnerLoanAccountApprove() {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
OwnerLoanAccountApprove entity = new OwnerLoanAccountApprove();
entity.setAccountType(3);
entity.setOwnerUserNo(loginUserInfo.getUserNo());
entity.setOwnerUserName(loginUserInfo.getUserName());
entity.setMobile(loginUserInfo.getUserMobile());
entity.setStatus(10);
ownerLoanAccountApproveDao.saveEntity(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerLoanAccountApprove(OwnerLoanAccountApproveParam param) {
Boolean status = param.getStatus();
OwnerLoanAccountApprove entity = new OwnerLoanAccountApprove();
entity.setId(param.getId());
if (status) {
//审批通过
entity.setStatus(10);
ownerLoanAccountApproveDao.updateEntityByKey(entity);
ownerLoanAccountService.openOwnerLoanAccount(entity.getOwnerUserNo(), entity.getOwnerUserName(), entity.getMobile());
} else {
//审批拒绝
entity.setStatus(20);
entity.setRejectReason(param.getRejectReason());
ownerLoanAccountApproveDao.updateEntityByKey(entity);
}
}
}
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.service.loan.OwnerLoanAccountRunningWaterRecordService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Service
@Slf4j
public class OwnerLoanAccountRunningWaterRecordServiceImpl implements OwnerLoanAccountRunningWaterRecordService {
@Autowired
private OwnerLoanAccountRunningWaterRecordDao ownerLoanAccountRunningWaterRecordDao;
@Override
public IPage<OwnerLoanAccountRunningWaterRecordVO> pageOwnerLoanAccountWaterOfOwner(PageOwnerLoanAccountWaterRecordOfOwnerParam param) {
return ownerLoanAccountRunningWaterRecordDao.pageByParam(param);
}
}
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Service
@Slf4j
@AllArgsConstructor
public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
private final OwnerLoanAccountDao ownerLoanAccountDao;
@Transactional(rollbackFor = Exception.class)
@Override
public void openOwnerLoanAccount(Long ownerUserNo, String ownerUserName, String mobile) {
OwnerLoanAccount entity = new OwnerLoanAccount();
entity.setOwnerUserNo(ownerUserNo);
entity.setMobile(mobile);
entity.setOwnerUserName(ownerUserName);
entity.setFundingAmount(BigDecimal.ZERO);
entity.setFundingAmount(BigDecimal.ZERO);
entity.setVirtuallyAmount(BigDecimal.ZERO);
entity.setVirtuallyArrears(BigDecimal.ZERO);
ownerLoanAccountDao.saveEntity(entity);
}
@Override
public IPage<OwnerLoanAccountVO> pageOwnerLoanAccount(PageOwnerLoanAccountParam param) {
return ownerLoanAccountDao.pageByParam(param);
}
}
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.dao.OwnerBindCardRecordDao;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.enums.RunningWaterTypeEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.model.OwnerBindCardRecord;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.service.loan.OwnerLoanRecordService;
import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.struct.loan.OwnerLoanRecordStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
@Service
@Slf4j
@AllArgsConstructor
public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final OwnerLoanRecordDao ownerLoanRecordDao;
private final OwnerLoanRecordStruct ownerLoanRecordStruct;
private final IdGenerateSnowFlake idGenerateSnowFlake;
private final OwnerLoanAccountDao ownerLoanAccountDao;
private final OwnerRepaymentDao ownerRepaymentDao;
private final OwnerBindCardRecordDao ownerBindCardRecordDao;
private final NbBankService bankService;
private final OwnerLoanAccountRunningWaterRecordDao ownerLoanAccountRunningWaterRecordDao;
@Override
public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) {
IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param);
List<OwnerLoanRecordVO> records = ownerLoanRecordStruct.convertList(page.getRecords());
IPage<OwnerLoanRecordVO> returnPage = new Page<>();
returnPage.setPages(page.getPages());
returnPage.setTotal(page.getTotal());
returnPage.setRecords(records);
return returnPage;
}
@Override
public void ownerLoanRecordSubmit(OwnerLoanRecordParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
OwnerBindCardRecord ownerBindCardRecord = ownerBindCardRecordDao.getOwnerBindCardByUserNo(loginUserInfo.getUserNo());
OwnerLoanRecord entity = new OwnerLoanRecord();
LocalDateTime createTime = LocalDateTime.now();
LocalDateTime loanRepaymentTime = createTime.plusDays(param.getExpireDay());
entity.setLoanRepaymentTime(loanRepaymentTime);
entity.setLoanNo(idGenerateSnowFlake.nextId(1L));
entity.setCreateTime(createTime);
entity.setOwnerUserNo(loginUserInfo.getUserNo());
entity.setOwnerUserName(loginUserInfo.getUserName());
entity.setMobile(loginUserInfo.getUserMobile());
entity.setLoanBalance(param.getLoanBalance());
entity.setBorrower(param.getBorrower());
entity.setBorrowerAccount(ownerBindCardRecord.getBankCardNumber());
entity.setLendingParty(param.getLendingParty());
entity.setPayee("收款方写死");
entity.setPayeeAccount("收款方账户写死");
entity.setCreateBy(loginUserInfo.getUserName());
entity.setStatus(OwnerLoanRecordEnum.Status.APPROVE_WAIT.getCode());
ownerLoanRecordDao.saveEntity(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerLoanRecordApprove(CarrierOwnerLoanRecordApproveParam param) {
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, param.getLoanNo()).get();
if (param.getStatus()) {
//同意
ownerLoanRecord.setLoanType(param.getLoanType());
if (OwnerLoanRecordEnum.LoanType.FUND.getCode().equals(param.getLoanType())) {
//资金 TODO 调中信银企直连的产品,从诚联信账户中给鑫祥和执行转账
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo() ,
ownerLoanRecord.getLoanBalance().intValue(), "", "", "");
ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
} else {
// 虚拟币 直接增加 更改状态审批通过
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.APPROVE_PASS.getCode());
}
while (true) {
OwnerLoanAccount ownerLoanAccount = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo,
ownerLoanRecord.getOwnerUserNo()).get();
OwnerLoanAccount entity = new OwnerLoanAccount();
entity.setId(ownerLoanAccount.getId());
entity.setVirtuallyAmount(ownerLoanRecord.getLoanBalance());
entity.setFundingAmount(BigDecimal.ZERO);
entity.setModifiedTime(ownerLoanAccount.getModifiedTime());
Integer flag = ownerLoanAccountDao.updateAccountCAS(entity, LocalDateTime.now(), true);
if (flag == 1) {
//生成借款流水
initOwnerLoanRunningWaterRecord(ownerLoanRecord);
//生成还款记录
initOwnerRepayment(ownerLoanRecord);
break;
}
}
} else {
//拒绝
ownerLoanRecord.setLoanType(param.getLoanType());
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.APPROVE_REFUSE.getCode());
}
//更新借款记录
ownerLoanRecordDao.updateEntityByKey(ownerLoanRecord);
}
@Override
public IPage<OwnerLoanRecordVO> pageOwnerLoanRecordOfOwner(PageOwnerLoanRecordOfOwner param) {
return ownerLoanRecordDao.pageByParam(param);
}
/**
* 生成借款流水
* @param ownerLoanRecord
*/
private void initOwnerLoanRunningWaterRecord(OwnerLoanRecord ownerLoanRecord) {
OwnerLoanAccount ownerLoanAccount;
ownerLoanAccount = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo, ownerLoanRecord.getOwnerUserNo()).get();
ownerLoanRecordDao.updateEntityByKey(ownerLoanRecord);
OwnerLoanAccountRunningWaterRecord record = new OwnerLoanAccountRunningWaterRecord()
.setOwnerUserNo(ownerLoanRecord.getOwnerUserNo())
.setOwnerUserName(ownerLoanRecord.getOwnerUserName())
.setMobile(ownerLoanRecord.getMobile())
.setRunningWaterNo(idGenerateSnowFlake.nextId(2L))
.setLoanNo(ownerLoanRecord.getLoanNo())
.setRunningWaterType(RunningWaterTypeEnum.Status.LOAN.getCode())
.setAlterationBalance(ownerLoanRecord.getLoanBalance())
.setAccountBalance(ownerLoanAccount.getFundingAmount().add(ownerLoanAccount.getVirtuallyAmount()))
.setCreateBy("系统");
ownerLoanAccountRunningWaterRecordDao.saveEntity(record);
}
/**
* 生成还款记录
* @param ownerLoanRecord
*/
private void initOwnerRepayment(OwnerLoanRecord ownerLoanRecord) {
OwnerRepayment ownerRepayment = new OwnerRepayment();
ownerRepayment.setLoanRepaymentTime(ownerLoanRecord.getLoanRepaymentTime());
ownerRepayment.setMobile(ownerLoanRecord.getMobile());
ownerRepayment.setOwnerUserName(ownerLoanRecord.getOwnerUserName());
ownerRepayment.setOwnerUserNo(ownerLoanRecord.getOwnerUserNo());
ownerRepayment.setLoanNo(ownerLoanRecord.getLoanNo());
ownerRepayment.setCreateBy(ownerLoanRecord.getOwnerUserName());
ownerRepayment.setRepaymentBalance(ownerLoanRecord.getLoanBalance());
ownerRepayment.setRepaymentNo(idGenerateSnowFlake.nextId(2L));
ownerRepayment.setPayment(ownerLoanRecord.getBorrower());
ownerRepayment.setPaymentAccount(ownerLoanRecord.getBorrowerAccount());
ownerRepayment.setPayee(ownerRepayment.getPayee());
ownerRepayment.setPayeeAccount(ownerLoanRecord.getPayeeAccount());
ownerRepayment.setPayChannel(OwnerRePaymentEnum.Channel.ORDER.getCode());
ownerRepayment.setRunningWaterOpenNo(ownerLoanRecord.getRunningWaterOpenNo());
ownerRepayment.setMerchantRunningWaterNo(ownerLoanRecord.getMerchantRunningWaterNo());
ownerRepayment.setBeOverdue(OwnerRePaymentEnum.BeOverdue.NO.getCode());
ownerRepayment.setCreateBy("系统");
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_WAIT.getCode());
ownerRepaymentDao.saveEntity(ownerRepayment);
}
}
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerPaymentDao;
import com.clx.performance.model.loan.OwnerPayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerPaymentParam;
import com.clx.performance.service.loan.OwnerPaymentService;
import com.clx.performance.struct.loan.OwnerPaymentStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerPaymentVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Service
@Slf4j
@AllArgsConstructor
public class OwnerPaymentServiceImpl implements OwnerPaymentService {
private final OwnerPaymentDao ownerPaymentDao;
private final OwnerPaymentStruct ownerPaymentStruct;
@Override
public IPage<OwnerPaymentVO> pageOwnerPayment(PageCarrierOwnerPaymentParam param) {
IPage<OwnerPayment> page = ownerPaymentDao.pageOwnerPayment(param);
List<OwnerPaymentVO> records = ownerPaymentStruct.convertList(page.getRecords());
IPage<OwnerPaymentVO> returnPage = new Page<>();
returnPage.setPages(page.getPages());
returnPage.setTotal(page.getTotal());
returnPage.setRecords(records);
return returnPage;
}
}
package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.service.loan.OwnerRepaymentService;
import com.clx.performance.struct.loan.OwnerRepaymentStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
@Service
@Slf4j
@AllArgsConstructor
public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
private final OwnerRepaymentDao ownerRepaymentDao;
private final OwnerRepaymentStruct ownerRepaymentStruct;
@Override
public IPage<OwnerRepaymentVO> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param) {
IPage<OwnerRepayment> page = ownerRepaymentDao.pageOwnerRepayment(param);
List<OwnerRepaymentVO> records = ownerRepaymentStruct.convertList(page.getRecords());
IPage<OwnerRepaymentVO> returnPage = new Page<>();
returnPage.setPages(page.getPages());
returnPage.setTotal(page.getTotal());
returnPage.setRecords(records);
return returnPage;
}
@Override
public IPage<OwnerRepaymentVO> pageOwnerRepaymentOfOwner(PageOwnerRepaymentOfOwner param) {
return ownerRepaymentDao.pageByParam(param);
}
}
...@@ -3,19 +3,12 @@ package com.clx.performance.service.impl.settle; ...@@ -3,19 +3,12 @@ package com.clx.performance.service.impl.settle;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
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;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OwnerAccountDao;
import com.clx.performance.dao.OwnerRunningWaterRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.IdTypeEnum;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.OwnerRunningWaterRecord;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
...@@ -27,7 +20,6 @@ import com.clx.performance.utils.excel.ExcelSheet; ...@@ -27,7 +20,6 @@ import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil; import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO; import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
...@@ -52,9 +44,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -52,9 +44,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDetailStruct settlementOwnerDetailStruct; private final SettlementOwnerDetailStruct settlementOwnerDetailStruct;
private final IdGenerateSnowFlake idGenerateSnowFlake;
private final OwnerRunningWaterRecordDao ownerRunningWaterRecordDao;
private final OwnerAccountDao ownerAccountDao;
private final OrderChildDao orderChildDao; private final OrderChildDao orderChildDao;
...@@ -93,47 +82,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -93,47 +82,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight()); BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
if (ans.compareTo(BigDecimal.ZERO) <= 0) { if (ans.compareTo(BigDecimal.ZERO) <= 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
} else {
/*List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode());
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal subtract = frozen.subtract(takeOut);
if (subtract.compareTo(BigDecimal.ZERO) <= 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
}
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
OwnerAccount account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
//生成扣除流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderId(orderChild.getId());
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(ans);
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(BigDecimal.ZERO);
runningWaterRecord.setAccountBalance(account.getAccountBalance());
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
}*/
} }
// // 开票金额 // // 开票金额
......
...@@ -72,7 +72,6 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -72,7 +72,6 @@ public class SettlementServiceImpl implements SettlementService {
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode()); settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
} else { } else {
//TODO 发送MQ异步
Message message = MessageBuilder.withBody(JSONUtil.parse(orderChild).toString().getBytes()).build(); Message message = MessageBuilder.withBody(JSONUtil.parse(orderChild).toString().getBytes()).build();
rabbitTemplate.send( rabbitTemplate.send(
RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE, RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY, message RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE, RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY, message
......
...@@ -96,8 +96,8 @@ public class NbBankNotifyServiceImpl implements NbBankNotifyService { ...@@ -96,8 +96,8 @@ public class NbBankNotifyServiceImpl implements NbBankNotifyService {
String merSeqNo = data.getString("merSeqNo"); String merSeqNo = data.getString("merSeqNo");
String transSeqNo = data.getString("transSeqNo"); String transSeqNo = data.getString("transSeqNo");
BigDecimal trxAmt = data.getBigDecimal("trxAmt"); Integer trxAmt = data.getBigDecimal("trxAmt").movePointRight(2).intValue();
BigDecimal realTrxAmt = data.getBigDecimal("realTrxAmt"); Integer realTrxAmt = data.getBigDecimal("realTrxAmt").movePointRight(2).intValue();
String transStatus = data.getString("transStatus"); String transStatus = data.getString("transStatus");
String signNo = data.getString("signNo"); String signNo = data.getString("signNo");
......
package com.clx.performance.service.impl.thirdparty.nbbank; package com.clx.performance.service.impl.thirdparty.nbbank;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.service.thirdparty.nbbank.NbBankService; import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService; import com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -26,54 +28,74 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -26,54 +28,74 @@ public class NbBankServiceImpl implements NbBankService {
@Autowired @Autowired
private NbBankThirdpartyService bankThirdpartyService; private NbBankThirdpartyService bankThirdpartyService;
@Autowired
private IdGenerateSnowFlake idGenerateSnowFlake;
/** /**
* 订单支付 * 转账支付
* @return * @param amount 金额分
* 第三方流水号
*/ */
@Override @Override
public NbBankOrderPayResultVO orderPay(Integer payType) { public NbBankOrderPayResultVO orderTransferPay(Integer amount) {
if (payType == 1){ String merSeqNo = idGenerateSnowFlake.nextIdToString(3L);
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, "EFT33021200556315", 1); String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.directBankTransferOrder(merSeqNo, merDtTm, amount);
String transSeqNo = data.getString("transSeqNo"); String transSeqNo = data.getString("transSeqNo");
String signNo = data.getString("signNo"); String signNo = data.getString("signNo");
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO(); NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
result.setAmount(1); result.setAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo); result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo); result.setTransSeqNo(transSeqNo);
result.setSignNo(signNo); result.setSignNo(signNo);
return result; return result;
} }
else if (payType == 2){
String merSeqNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); /**
JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, "EFT33021200556315", 1, * 订单支付
"313332082914","86041110000076809", "黑玫瑰"); * @param loanNo 借款单号
* @param amount 金额分
* @param payAcctOpenBankId 开户行号
* @param payAcctNo 付款账号
* @param payAcctNm 付款户名
*/
@Override
public NbBankOrderPayResultVO orderDirectPay(Long loanNo, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
String merSeqNo = idGenerateSnowFlake.nextIdToString(3L);
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.unionPayDirectOrder(merSeqNo, merDtTm, amount,
payAcctOpenBankId,payAcctNo, payAcctNm);
String transSeqNo = data.getString("transSeqNo"); String transSeqNo = data.getString("transSeqNo");
if (StringUtils.isBlank(transSeqNo)) {
log.info("宁波银行订单支付失败,借款单号{},返回结果:{}", loanNo, data);
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_ORDER_PAY_ERROR);
}
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO(); NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
result.setAmount(1); result.setAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo); result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo); result.setTransSeqNo(transSeqNo);
return result; return result;
} }
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_PAY_TYPE_ERROR);
}
/** /**
* 获取交易状态 * 获取交易结果
* @return * @param orgMerSeqNo 商户流水号 (原)
*/ */
@Override @Override
public NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo) { public NbBankOrderResultVO getResult(String orgMerSeqNo) {
JSONObject data = bankThirdpartyService.queryOrder(merSeqNo); JSONObject data = bankThirdpartyService.queryOrder(orgMerSeqNo);
NbBankOrderPayStatusResultVO result = new NbBankOrderPayStatusResultVO(); NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus"); String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功 if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
...@@ -90,16 +112,92 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -90,16 +112,92 @@ public class NbBankServiceImpl implements NbBankService {
result.setAmount(trxAmt==null? null : trxAmt.movePointLeft(2).intValue()); result.setAmount(trxAmt==null? null : trxAmt.movePointLeft(2).intValue());
result.setRealAmount(trxAmt==null? null : realTrxAmt.movePointLeft(2).intValue()); result.setRealAmount(trxAmt==null? null : realTrxAmt.movePointLeft(2).intValue());
result.setMerSeqNo(merSeqNo); result.setMerSeqNo(orgMerSeqNo);
result.setTransSeqNo(transSeqNo); result.setTransSeqNo(transSeqNo);
result.setSignNo(signNo); result.setSignNo(signNo);
return result; return result;
} }
/**
* 调账
* @param orgMerSeqNo 商户流水号 (原)
* @param amount 金额分
*/
@Override
public NbBankOrderResultVO adjust(String orgMerSeqNo, Integer amount) {
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.fundTransferOrder(orgMerSeqNo, merDtTm, amount,
null, null);
NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
else if (StringUtils.equals(transStatus, "01")){result.setTransStatus(2);} //交易失败
else if (StringUtils.equals(transStatus, "02")){result.setTransStatus(3);} //交易已受理
else if (StringUtils.equals(transStatus, "80")){result.setTransStatus(4);} //订单初始状态
else if (StringUtils.equals(transStatus, "90")){result.setTransStatus(5);} //交易不存在
else if (StringUtils.equals(transStatus, "99")){result.setTransStatus(6);} //交易超时,须发起交易结果查询
String transSeqNo = data.getString("transSeqNo");
result.setAmount(amount);
result.setRealAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(orgMerSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
/**
* 退款
* @param orgMerSeqNo 商户流水号(原)
* @param amount 金额分
* @param orgTransSeqNo 第三方流水号 (原)
*/
@Override
public NbBankOrderResultVO refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo) {
String merSeqNo = idGenerateSnowFlake.nextIdToString(3L);
String merDtTm = LocalDateTimeUtils.formatTime();
JSONObject data = bankThirdpartyService.refund(merSeqNo, merDtTm, amount,
orgMerSeqNo, orgTransSeqNo);
NbBankOrderResultVO result = new NbBankOrderResultVO();
String transStatus = data.getString("transStatus");
if (StringUtils.equals(transStatus, "00")){result.setTransStatus(1);} //交易成功
else if (StringUtils.equals(transStatus, "01")){result.setTransStatus(2);} //交易失败
else if (StringUtils.equals(transStatus, "02")){result.setTransStatus(3);} //交易已受理
else if (StringUtils.equals(transStatus, "80")){result.setTransStatus(4);} //订单初始状态
else if (StringUtils.equals(transStatus, "90")){result.setTransStatus(5);} //交易不存在
else if (StringUtils.equals(transStatus, "99")){result.setTransStatus(6);} //交易超时,须发起交易结果查询
String transSeqNo = data.getString("transSeqNo");
result.setAmount(amount);
result.setRealAmount(amount);
result.setMerDtTm(merDtTm);
result.setMerSeqNo(merSeqNo);
result.setTransSeqNo(transSeqNo);
return result;
}
/**
* 银行回调
* @param merSeqNo 商户流水号
* @param transSeqNo 第三方流水号
* @param trxAmt 订单金额分
* @param realTrxAmt 实收金额分
* @param transStatus 交易状态
* @param signNo 转账编码
*/
@Override @Override
public void orderPayCallback(String merSeqNo, String transSeqNo, public void orderPayCallback(String merSeqNo, String transSeqNo,
BigDecimal trxAmt, BigDecimal realTrxAmt, Integer trxAmt, Integer realTrxAmt,
String transStatus, String transStatus,
String signNo) { String signNo) {
log.info("宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}", log.info("宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}",
......
...@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; ...@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -38,21 +39,21 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -38,21 +39,21 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
@Autowired @Autowired
private NbBankRecordDao nbBankRecordDao; private NbBankRecordDao nbBankRecordDao;
static { @PostConstruct
public void bankInit(){
ClassPathResource classPathResource = new ClassPathResource("bank/config-nbbank.json"); ClassPathResource classPathResource = new ClassPathResource("bank/config-nbbank.json");
InputStream inputStream; InputStream inputStream;
try { try {
inputStream = classPathResource.getInputStream(); inputStream = classPathResource.getInputStream();
boolean initResult = NBOpenSDK.init(inputStream); boolean initResult = NBOpenSDK.init(inputStream);
log.info("NBSDK初始化状态:{}", initResult); log.info("宁波银行SDK初始化, 状态:{}", initResult);
log.info("sdk版本信息:{}", NBOpenSDK.getVersionInfo()); log.info("sdk版本信息:{}", NBOpenSDK.getVersionInfo());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
log.info("宁波银行SDK初始化失败");
} }
} }
/** /**
* 下单 * 下单
* 5.5转账直连下单 * 5.5转账直连下单
...@@ -87,17 +88,17 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -87,17 +88,17 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* amount: 订单金额(分) * amount: 订单金额(分)
*/ */
@Override @Override
public JSONObject directBankTransferOrder(String merSeqNo, String merId, Integer amount) { public JSONObject directBankTransferOrder(String merSeqNo, String merDtTm, Integer amount) {
try { try {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填 jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填 jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填 jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填 jsonObject.put("merDtTm", merDtTm); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填 jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orderDesc", "运输"); //订单详情 必填 jsonObject.put("orderDesc", "散煤运输"); //订单详情 必填
jsonObject.put("productName", "运费"); //商品名称 必填 jsonObject.put("productName", "运费"); //商品名称 必填
jsonObject.put("productId", "001"); //商品编号 必填 jsonObject.put("productId", "001"); //商品编号 必填
jsonObject.put("productNum", "1"); //商品数量 必填 jsonObject.put("productNum", "1"); //商品数量 必填
...@@ -182,18 +183,18 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -182,18 +183,18 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* payAcctNm: 付款户名 * payAcctNm: 付款户名
*/ */
@Override @Override
public JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount, public JSONObject unionPayDirectOrder(String merSeqNo, String merDtTm, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) { String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
try { try {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填 jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", merId); //商户号 必填 jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填 jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填 jsonObject.put("merDtTm", merDtTm); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填 jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orderDesc", "运输"); //订单详情 必填 jsonObject.put("orderDesc", "散煤运输"); //订单详情 必填
jsonObject.put("productName", "运费"); //商品名称 必填 jsonObject.put("productName", "运费"); //商品名称 必填
jsonObject.put("productId", "001"); //商品编号 必填 jsonObject.put("productId", "001"); //商品编号 必填
jsonObject.put("productNum", "1"); //商品数量 必填 jsonObject.put("productNum", "1"); //商品数量 必填
...@@ -336,13 +337,13 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -336,13 +337,13 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
* 99:交易超时,须发起交易结果查询 * 99:交易超时,须发起交易结果查询
*/ */
@Override @Override
public JSONObject queryOrder(String merSeqNo) { public JSONObject queryOrder(String orgMerSeqNo) {
try { try {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填 jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", "EFT33021200556315"); //商户号 必填 jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填 jsonObject.put("merSeqNo", orgMerSeqNo); //商户流水 必填
HashMap<String,String> httpHeader = new HashMap<>(); HashMap<String,String> httpHeader = new HashMap<>();
...@@ -382,6 +383,129 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -382,6 +383,129 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR); throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
} }
/**
* 调账
* 5.10云账簿资金划转
*/
@Override
public JSONObject fundTransferOrder(String orgMerSeqNo, String merDtTm, Integer trxAmt,
String customerId, String payCustomerId) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", orgMerSeqNo); //商户流水 必填
jsonObject.put("merDtTm", merDtTm); //商户交易时间 必填
jsonObject.put("trxAmt", new BigDecimal(trxAmt).movePointLeft(2)); //交易金额
if (StringUtils.isNotBlank(customerId)) {
jsonObject.put("customerId", customerId); //云账簿标识_收款方
}
if (StringUtils.isNotBlank(payCustomerId)) {
jsonObject.put("payCustomerId", payCustomerId); //云账簿标识_付款方
}
// jsonObject.put("notifyAction", 0); //是否通知
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey(nbBankConfig.getAppKey());
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("fundTransferOrder");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("宁波银行, 调账接口(fundTransferOrder), 参数: {}", JSON.toJSONString(request));
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 调账接口(fundTransferOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 调账接口(fundTransferOrder), code:{}, msg:{}", data.getString("errorCode"), data.getString("errorMsg"));
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
return data;
} catch (Exception e) {
e.printStackTrace();
}
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
/**
* 退款
* 5.2退款
* @return
*/
@Override
public JSONObject refund(String merSeqNo, String merDtTm,
Integer amount,
String orgMerSeqNo, String coreSeqNo) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("transId", "IP01"); //交易识别码 必填
jsonObject.put("merId", nbBankConfig.getMerId()); //商户号 必填
jsonObject.put("merSeqNo", merSeqNo); //商户流水 必填
jsonObject.put("merDtTm", LocalDateTimeUtils.formatTime()); //商户时间 必填
jsonObject.put("trxAmt", new BigDecimal(amount).movePointLeft(2)); //订单金额 必填
jsonObject.put("orgMerSeqNo", orgMerSeqNo); //原订单流水号 必填
if (StringUtils.isNotBlank(coreSeqNo)) {
jsonObject.put("coreSeqNo", coreSeqNo); //核心流水号 必填
}
HashMap<String,String> httpHeader = new HashMap<>();
RequestApiData requestApiData = new RequestApiData();
requestApiData.setAppkey(nbBankConfig.getAppKey());
requestApiData.setData(jsonObject);
requestApiData.setProductId("YFT");
requestApiData.setServiceId("refund");
requestApiData.setHttpHeader(httpHeader);
RequestHead requestHead = new RequestHead();
requestHead.setRqsJrnlNo(NBOpenSDK.getRandom());
SDKRequest request = new SDKRequest();
request.setData(requestApiData);
request.setHead(requestHead);
log.info("宁波银行, 退款(refund), 参数: {}", JSON.toJSONString(request));
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 退款(refund), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.REFUND.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 退款失败(refund), code:{}, msg:{}", data.getString("errorCode"), data.getString("errorMsg"));
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
return data;
} catch (Exception e) {
e.printStackTrace();
}
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
@Override @Override
public void recordSave(Integer type, SDKRequest request, SDKResponse response) { public void recordSave(Integer type, SDKRequest request, SDKResponse response) {
...@@ -395,6 +519,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -395,6 +519,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, requestDataJson.getString("merId") , requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -414,6 +539,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -414,6 +539,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, requestDataJson.getString("merId") , requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -424,18 +550,22 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -424,18 +550,22 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
); );
} }
else if (Objects.equals(type, NbBankRecordEnum.Type.QUERY_ORDER.getCode())) { else if (Objects.equals(type, NbBankRecordEnum.Type.QUERY_ORDER.getCode())) {
RequestApiData requestData = (RequestApiData) (request.getData());
JSONObject requestDataJson = (JSONObject) (requestData.getData());
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response)); JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject responseDataJson = responseJson.getJSONObject("data"); JSONObject responseDataJson = responseJson.getJSONObject("data");
recordSave(type recordSave(type
, responseDataJson.getString("merId") , requestDataJson.getString("merId")
, responseDataJson.getString("merSeqNo") , requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
, JSON.toJSONString(response) , JSON.toJSONString(response)
, null , responseDataJson.getString("errorCode")
, null , responseDataJson.getString("errorMsg")
, responseDataJson.getString("transStatus") , responseDataJson.getString("transStatus")
); );
} }
...@@ -446,6 +576,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -446,6 +576,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
recordSave(type recordSave(type
, responseDataJson.getString("merId") , responseDataJson.getString("merId")
, responseDataJson.getString("merSeqNo") , responseDataJson.getString("merSeqNo")
, null
, responseDataJson.getString("transSeqNo") , responseDataJson.getString("transSeqNo")
, responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue() , responseDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request) , JSON.toJSONString(request)
...@@ -455,10 +586,52 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -455,10 +586,52 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
, responseDataJson.getString("transStatus") , responseDataJson.getString("transStatus")
); );
} }
else if (Objects.equals(type, NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.getCode())) {
RequestApiData requestData = (RequestApiData) (request.getData());
JSONObject requestDataJson = (JSONObject) (requestData.getData());
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject responseDataJson = responseJson.getJSONObject("data");
recordSave(type
, requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, responseDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request)
, JSON.toJSONString(response)
, responseDataJson.getString("errorCode")
, responseDataJson.getString("errorMsg")
, responseDataJson.getString("transStatus")
);
}
else if (Objects.equals(type, NbBankRecordEnum.Type.REFUND.getCode())) {
RequestApiData requestData = (RequestApiData) (request.getData());
JSONObject requestDataJson = (JSONObject) (requestData.getData());
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject responseDataJson = responseJson.getJSONObject("data");
recordSave(type
, requestDataJson.getString("merId")
, requestDataJson.getString("merSeqNo")
, requestDataJson.getString("merDtTm")
, requestDataJson.getString("transSeqNo")
, requestDataJson.getBigDecimal("trxAmt").movePointRight(2).intValue()
, JSON.toJSONString(request)
, JSON.toJSONString(response)
, responseDataJson.getString("errorCode")
, responseDataJson.getString("errorMsg")
, responseDataJson.getString("transStatus")
);
}
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
public void recordSave(Integer type, public void recordSave(Integer type,
String merId, String merSeqNo, String transSeqNo, String merId, String merSeqNo, String merDtTm, String transSeqNo,
Integer amount, Integer amount,
String param, String result, String param, String result,
String errorCode, String errorMsg, String errorCode, String errorMsg,
...@@ -468,6 +641,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService { ...@@ -468,6 +641,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
record.setType(type); record.setType(type);
record.setMerId(merId); record.setMerId(merId);
record.setMerSeqNo(merSeqNo); record.setMerSeqNo(merSeqNo);
record.setMerDtTm(LocalDateTimeUtils.parseTime(merDtTm));
record.setTransSeqNo(transSeqNo); record.setTransSeqNo(transSeqNo);
record.setAmount(amount); record.setAmount(amount);
record.setParam(param); record.setParam(param);
......
package com.clx.performance.service.borrower; package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.clx.performance.vo.pc.borrower.BorrowerVO;
import java.util.List; import java.util.List;
......
package com.clx.performance.service.borrower; package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.borrower.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import java.util.List; import java.util.List;
......
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.OwnerLoanAccountApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountApproveVO;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountApproveService {
IPage<OwnerLoanAccountApproveVO> pageOwnerLoanAccountApprove(PageOwnerLoanAccountApproveParam param);
void openOwnerLoanAccountApprove();
void ownerLoanAccountApprove(OwnerLoanAccountApproveParam param);
}
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountRunningWaterRecordService {
IPage<OwnerLoanAccountRunningWaterRecordVO> pageOwnerLoanAccountWaterOfOwner(PageOwnerLoanAccountWaterRecordOfOwnerParam param);
}
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerLoanAccountService {
void openOwnerLoanAccount(Long ownerUserNo, String ownerUserName, String mobile);
IPage<OwnerLoanAccountVO> pageOwnerLoanAccount(PageOwnerLoanAccountParam param);
}
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
/**
* @author kavin
* Date 2024-01-20
* Time 17:05
*/
public interface OwnerLoanRecordService {
IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param);
void ownerLoanRecordSubmit(OwnerLoanRecordParam param);
void ownerLoanRecordApprove(CarrierOwnerLoanRecordApproveParam param);
IPage<OwnerLoanRecordVO> pageOwnerLoanRecordOfOwner(PageOwnerLoanRecordOfOwner param);
}
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerPaymentParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerPaymentVO;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerPaymentService {
IPage<OwnerPaymentVO> pageOwnerPayment(PageCarrierOwnerPaymentParam param);
}
package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
/**
* @author kavin
* Date 2024-01-20
* Time 13:31
*/
public interface OwnerRepaymentService {
IPage<OwnerRepaymentVO> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param);
IPage<OwnerRepaymentVO> pageOwnerRepaymentOfOwner(PageOwnerRepaymentOfOwner param);
}
package com.clx.performance.service.thirdparty.nbbank; package com.clx.performance.service.thirdparty.nbbank;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayStatusResultVO; import com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO;
import java.math.BigDecimal;
/**
* 宁波银行接口
*/
public interface NbBankService { public interface NbBankService {
NbBankOrderPayResultVO orderPay(Integer payType); NbBankOrderPayResultVO orderTransferPay(Integer amount);
NbBankOrderPayResultVO orderDirectPay(Long loanNo,Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm);
NbBankOrderResultVO getResult(String merSeqNo);
NbBankOrderResultVO adjust(String orgMerSeqNo, Integer amount);
NbBankOrderPayStatusResultVO getOrderStatus(String merSeqNo); NbBankOrderResultVO refund(String orgMerSeqNo, Integer amount, String orgTransSeqNo);
void orderPayCallback(String merSeqNo, String transSeqNo, void orderPayCallback(String merSeqNo, String transSeqNo,
BigDecimal trxAmt, BigDecimal realTrxAmt, Integer trxAmt, Integer realTrxAmt,
String transStatus, String transStatus,
String signNo String signNo
); );
......
...@@ -6,12 +6,19 @@ import com.nbopen.api.SDKResponse; ...@@ -6,12 +6,19 @@ import com.nbopen.api.SDKResponse;
public interface NbBankThirdpartyService { public interface NbBankThirdpartyService {
JSONObject directBankTransferOrder(String merSeqNo, String merId, Integer amount); JSONObject directBankTransferOrder(String merSeqNo, String merDtTm, Integer amount);
JSONObject unionPayDirectOrder(String merSeqNo, String merId, Integer amount, JSONObject unionPayDirectOrder(String merSeqNo, String merDtTm, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm); String payAcctOpenBankId, String payAcctNo, String payAcctNm);
JSONObject queryOrder(String merSeqNo); JSONObject queryOrder(String orgMerSeqNo);
JSONObject fundTransferOrder(String orgMerSeqNo, String merDtTm,
Integer trxAmt,
String customerId, String payCustomerId);
JSONObject refund(String merSeqNo, String merDtTm, Integer amount,
String orgMerSeqNo, String coreSeqNo);
void recordSave(Integer type, SDKRequest request, SDKResponse response); void recordSave(Integer type, SDKRequest request, SDKResponse response);
......
package com.clx.performance.sqlProvider.borrower; package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.borrower.PageBorrowerConfigParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
...@@ -25,7 +25,7 @@ public class BorrowerConfigSqlProvider { ...@@ -25,7 +25,7 @@ public class BorrowerConfigSqlProvider {
FROM("borrower_config"); FROM("borrower_config");
WHERE("delete_status = 0"); WHERE("delete_status = 0");
if (StringUtils.isNotBlank(param.getBorrowerName())) {WHERE("borrower_name = #{param.borrowerName}");} if (StringUtils.isNotBlank(param.getBorrowerName())) {WHERE("borrower_name = like CONCAT(#{param.borrowerName},'%')");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");} if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
ORDER_BY("create_time desc"); ORDER_BY("create_time desc");
......
package com.clx.performance.sqlProvider.borrower; package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.borrower.PageBorrowerParam; import com.clx.performance.param.pc.loan.carrier.PageBorrowerParam;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
...@@ -22,7 +22,7 @@ public class BorrowerSqlProvider { ...@@ -22,7 +22,7 @@ public class BorrowerSqlProvider {
FROM("borrower"); FROM("borrower");
WHERE("delete_status = 0"); WHERE("delete_status = 0");
if (StringUtils.isNotBlank(param.getName())) {WHERE("name = #{param.name}");} if (StringUtils.isNotBlank(param.getName())) {WHERE("name = like CONCAT(#{param.name},'%')");}
ORDER_BY("create_time desc"); ORDER_BY("create_time desc");
}}.toString(); }}.toString();
......
package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class OwnerLoanAccountRunningWaterRecordSqlProvider {
public String pageByParam(@Param("page") Page<OwnerLoanAccountRunningWaterRecordVO> page, @Param("param") PageOwnerLoanAccountWaterRecordOfOwnerParam param) {
return new SQL(){{
SELECT(" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, " +
" running_water_no as runningWaterNo, loan_no as loanNo, child_no as childNo, " +
" running_water_type as runningWaterType, alteration_balance as alterationBalance, account_balance as accountBalance, " +
" create_by as createBy, " +
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, " +
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM("owner_loan_account_running_water_record");
WHERE("owner_user_no = #{param.ownerUserNo}");
if (StringUtils.isNotBlank(param.getChildNo())) {WHERE("child_no = #{param.childNo}");}
if (Objects.nonNull(param.getRunningWaterNo())) {WHERE("running_water_no = #{param.runningWaterNo}");}
if (Objects.nonNull(param.getRunningWaterType())) {WHERE("running_water_type = #{param.runningWaterType}");}
ORDER_BY("create_time desc");
}}.toString();
}
}
package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class OwnerLoanAccountSqlProvider {
public String pageByParam(@Param("page") Page<OwnerLoanAccountVO> page, @Param("param") PageOwnerLoanAccountParam param) {
return new SQL(){{
SELECT(" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, " +
" account_type as accountType, funding_amount as fundingAmount, virtually_amount as virtuallyAmount, " +
" funding_arrears as fundingArrears, virtually_arrears as virtuallyArrears, " +
" create_by as createBy, " +
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, " +
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM("owner_loan_account");
if (Objects.nonNull(param.getOwnerUserNo())) {WHERE("owner_user_no = #{param.ownerUserNo}");}
if (StringUtils.isNotBlank(param.getOwnerUserName())) {WHERE("owner_user_name = like CONCAT(#{param.ownerUserName},'%')");}
if (StringUtils.isNotBlank(param.getMobile())) {WHERE("mobile = #{param.mobile}");}
ORDER_BY("create_time desc");
}}.toString();
}
}
package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class OwnerLoanRecordSqlProvider {
public String pageByParam(@Param("page") Page<OwnerLoanRecordVO> page, @Param("param") PageOwnerLoanRecordOfOwner param) {
return new SQL(){{
SELECT(" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, " +
" running_water_open_no as runningWaterOpenNo, " +
" loan_no as loanNo, loan_type as loanType, loan_balance as loanBalance, borrower, borrower_account as borrowerAccount, " +
" lending_party as lendingParty, payment_account as paymentAccount, payee, payee_account as payeeAccount, " +
" status, date_format(approve_time, '%Y-%m-%d %H:%i:%s') as approveTime, approve_by as approveBy, " +
" reject_reason as rejectReason, date_format(loan_repayment_time, '%Y-%m-%d %H:%i:%s') as loanRepaymentTime, " +
" create_by as createBy, " +
"date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, " +
"date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM("owner_loan_record");
WHERE("owner_user_no = #{param.ownerUserNo}");
if (Objects.nonNull(param.getLoanNo())) {WHERE("loan_no = #{param.loanNo}");}
if (StringUtils.isNotBlank(param.getRunningWaterOpenNo())) {WHERE("running_water_open_no = #{param.runningWaterOpenNo}");}
if (Objects.nonNull(param.getLoanType())) {WHERE("loan_type = #{param.loanType}");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
ORDER_BY("create_time desc");
}}.toString();
}
}
package com.clx.performance.sqlProvider.borrower;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.util.Objects;
public class OwnerRepaymentSqlProvider {
public String pageByParam(@Param("page") Page<OwnerRepaymentVO> page, @Param("param") PageOwnerRepaymentOfOwner param) {
return new SQL(){{
SELECT(" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, " +
" running_water_open_no as runningWaterOpenNo, repayment_no as repaymentNo, " +
" repayment_balance as repaymentBalance, payment, payment_account as paymentAccount, " +
" payee, payee_account as payeeAccount, loan_no as loanNo, status, pay_channel as payChannel, " +
" be_overdue as beOverdue, date_format(loan_repayment_time, '%Y-%m-%d %H:%i:%s') as loanRepaymentTime, " +
" date_format(operate_time, '%Y-%m-%d %H:%i:%s') as operateTime, operate_by as operateBy, create_by as createBy, " +
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, " +
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM("owner_repayment");
WHERE("owner_user_no = #{param.ownerUserNo}");
if (StringUtils.isNotBlank(param.getRepaymentNo())) {WHERE("repayment_no = #{param.repaymentNo}");}
if (StringUtils.isNotBlank(param.getMobile())) {WHERE("mobile = #{param.mobile}");}
if (Objects.nonNull(param.getLoanNo())) {WHERE("loan_no = #{param.loanNo}");}
if (Objects.nonNull(param.getStatus())) {WHERE("status = #{param.status}");}
if (Objects.nonNull(param.getBeOverdue())) {WHERE("be_overdue = #{param.beOverdue}");}
ORDER_BY("create_time desc");
}}.toString();
}
}
package com.clx.performance.sqlProvider.loan;
import cn.hutool.core.util.ObjectUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
public class OwnerLoanAccountSqlProvider {
public String getOwnerLoanAccountByOwnerUserId(@Param("param") Long ownerUserNo) {
String sql = new SQL() {{
SELECT("a.id, a.owner_user_no," +
" a.owner_user_name, a.mobile, a.account_type, " +
" a.funding_amount,a.virtually_amount,a.funding_arrears,a.virtually_arrears,a.create_by,date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time");
FROM("owner_loan_account a");
if (ObjectUtil.isNotNull(ownerUserNo)) {
WHERE("a.owner_user_no = #{ownerUserNo}");
}
ORDER_BY("a.create_time desc");
}}.toString();
return sql;
}
}
package com.clx.performance.struct.borrower; package com.clx.performance.struct.borrower;
import com.clx.performance.model.borrower.BorrowerConfig; import com.clx.performance.model.loan.BorrowerConfig;
import com.clx.performance.vo.pc.borrower.BorrowerConfigVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO;
import com.msl.common.utils.DateStructUtil; import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
......
package com.clx.performance.struct.borrower; package com.clx.performance.struct.borrower;
import com.clx.performance.model.borrower.Borrower; import com.clx.performance.model.loan.Borrower;
import com.clx.performance.vo.pc.borrower.BorrowerVO; import com.clx.performance.vo.pc.loan.carrier.BorrowerVO;
import com.msl.common.utils.DateStructUtil; import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
......
package com.clx.performance.struct.loan;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountApproveVO;
import com.msl.common.utils.DateStructUtil;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface OwnerLoanAccountApproveStruct {
List<OwnerLoanAccountApproveVO> convertList(List<OwnerLoanAccountApprove> list);
}
package com.clx.performance.struct.loan;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.msl.common.utils.DateStructUtil;
import org.mapstruct.Mapper;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface OwnerLoanAccountStruct {
OwnerLoanAccountVO convert(OwnerLoanAccount account);
}
package com.clx.performance.struct.loan;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO;
import com.msl.common.utils.DateStructUtil;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface OwnerLoanRecordStruct {
List<OwnerLoanRecordVO> convertList(List<OwnerLoanRecord> list);
}
package com.clx.performance.struct.loan;
import com.clx.performance.model.loan.OwnerPayment;
import com.clx.performance.vo.pc.loan.carrier.OwnerPaymentVO;
import com.msl.common.utils.DateStructUtil;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface OwnerPaymentStruct {
List<OwnerPaymentVO> convertList(List<OwnerPayment> list);
}
package com.clx.performance.struct.loan;
import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO;
import com.msl.common.utils.DateStructUtil;
import org.mapstruct.Mapper;
import java.util.List;
import java.util.Objects;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {Objects.class})
public interface OwnerRepaymentStruct {
List<OwnerRepaymentVO> convertList(List<OwnerRepayment> list);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论