Merge branch 'cc_20250529_franchise_fee' into 'master'

Cc 20250529 franchise fee

See merge request hangzhou/java/custom_zxjp!109
This commit is contained in:
苏竹红
2025-06-09 08:30:02 +00:00
54 changed files with 1578 additions and 160 deletions

View File

@@ -0,0 +1,18 @@
package com.cool.store.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: WangShuo
* @Date: 2025/06/09/11:02
* @Version 1.0
* @注释:
*/
@Data
public class FranchiseFeeStageDateDTO {
private Long shopId;
private Integer xgjCollectionStatus;
private BigDecimal xgjFeesPaid = BigDecimal.ZERO;
}

View File

@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
@Data
@@ -59,4 +60,16 @@ public class FranchiseFeeDO {
@Column(name = "discount_reason")
private String discountReason;
@Column(name = "xgj_collection_status")
@ApiModelProperty("新管家收款状态 0-待缴费 1-部分缴款 2-已完成")
private Integer xgjCollectionStatus;
@Column(name = "xgj_remainder_payable_amount")
@ApiModelProperty("新管家剩余应缴金额")
private BigDecimal xgjRemainderPayableAmount;
@Column(name = "xgj_fees_paid")
@ApiModelProperty("新管家已缴金额")
private BigDecimal xgjFeesPaid;
}

View File

@@ -11,6 +11,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
/**
* @author wxp
* @date 2024-03-27 09:25
@@ -35,7 +37,7 @@ public class LinePayDO implements Serializable {
@ApiModelProperty("支付状态 45:待缴费 50:已缴费 55缴费失败")
private Integer payStatus;
@ApiModelProperty("支付方式 1微信 2银行转账")
@ApiModelProperty("支付方式 1微信 2银行转账 3-线下支付4-线上支付")
private Integer payType;
@ApiModelProperty("付款人姓名")
@@ -87,4 +89,20 @@ public class LinePayDO implements Serializable {
@ApiModelProperty("组合字段:缴费时间+付款截图,数组")
private String combinedField;
@Column(name = "xgj_claim_status")
@ApiModelProperty("新管家收款单状态0-待认领1-已认领")
private Integer xgjClaimStatus;
@Column(name = "payment_receipt_code")
@ApiModelProperty("付款单编码(系统生成)")
private String paymentReceiptCode;
@Column(name = "pay_serial_number")
@ApiModelProperty("交易流水号")
private String paySerialNumber;
@Column(name = "remark")
private String remark;
}

View File

@@ -1,17 +1,27 @@
package com.cool.store.request;
import com.cool.store.entity.LinePayDO;
import com.cool.store.enums.ClaimStatusEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.tika.utils.DateUtils;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
import static com.cool.store.enums.WorkflowSubStageStatusEnum.PAY_DEPOSIT_50;
@Data
public class LinePaySubmitRequest {
private Long id;
@ApiModelProperty("xfsg_user_info.partner_id")
private String partnerId;
@@ -21,7 +31,7 @@ public class LinePaySubmitRequest {
@ApiModelProperty("支付状态 45:待缴费 50:已缴费 55缴费失败")
private Integer payStatus;
@ApiModelProperty("支付方式 1微信 2银行转账")
@ApiModelProperty("支付方式 1微信 2银行转账,3-线上支付,4-线下支持")
private Integer payType;
@ApiModelProperty("付款人姓名/加盟商姓名")
@@ -42,7 +52,6 @@ public class LinePaySubmitRequest {
@ApiModelProperty("支行名称")
private String branchBankName;
//正新缴纳加盟费后续payTimepayPic废弃使用combinedField
@ApiModelProperty("缴纳时间")
private String payTime;
@@ -52,12 +61,54 @@ public class LinePaySubmitRequest {
@ApiModelProperty("承诺书图片")
private String promisePic;
@ApiModelProperty("支付类型 0-缴纳意向金 1-缴纳加盟费 2-装修款")
@ApiModelProperty("支付类型 1-缴纳加盟费")
private Integer payBusinessType;
@ApiModelProperty("铺位id")
private Long shopId;
@ApiModelProperty("缴费金额")
private BigDecimal amount;
//废弃
@ApiModelProperty("组合字段:缴费时间+付款截图,数组")
private String combinedField;
@ApiModelProperty("交易流水号")
private String paySerialNumber;
@ApiModelProperty("备注")
private String remark;
/**
* @Auther: wangshuo
* @Date: 2025/5/30
* @description:加盟费使用
*/
public static LinePayDO convertFranchiseFee(LinePaySubmitRequest request) {
LinePayDO linePayDO = new LinePayDO();
linePayDO.setId(request.getId());
linePayDO.setPartnerId(request.getPartnerId());
linePayDO.setShopId(request.getShopId());
linePayDO.setLineId(request.getLineId());
linePayDO.setPayStatus(PAY_DEPOSIT_50.getCode());
linePayDO.setXgjClaimStatus(ClaimStatusEnum.TO_BE_CLAIMED.getCode());
linePayDO.setPayType(request.getPayType());
linePayDO.setPayUserName(request.getPayUserName());
linePayDO.setPayAccount(request.getPayAccount());
linePayDO.setBankCode(request.getBankCode());
linePayDO.setBankName(request.getBankName());
linePayDO.setBranchBankCode(request.getBranchBankCode());
linePayDO.setBranchBankName(request.getBranchBankName());
try {
linePayDO.setPayTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(request.getPayTime()));
} catch (ParseException e) {
throw new RuntimeException(e);
}
linePayDO.setPayPic(request.getPayPic());
linePayDO.setPaySerialNumber(request.getPaySerialNumber());
linePayDO.setAmount(request.getAmount());
linePayDO.setPayBusinessType(request.getPayBusinessType());
linePayDO.setXgjClaimStatus(0);
linePayDO.setRemark(request.getRemark());
linePayDO.setDeleted(false);
return linePayDO;
}
}

View File

@@ -217,7 +217,7 @@ public class ZxjpApiRequest {
private Integer storeType;
private Long shopId;

View File

@@ -0,0 +1,28 @@
package com.cool.store.request.xgj;
import com.cool.store.dto.region.BigRegionDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author suzhuhong
* @Date 2025/6/4 11:02
* @Version 1.0
*/
@Data
public class FranchiseFeeCallBackRequest {
@NotNull
private Long shopId;
@NotNull
private BigDecimal payableFee;
@NotNull
private BigDecimal paidFees;
@NotNull
private BigDecimal remainingFee;
@NotNull
private Integer paymentStatus;
}

View File

@@ -0,0 +1,66 @@
package com.cool.store.request.xgj;
import com.cool.store.entity.FranchiseFeeDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author suzhuhong
* @Date 2025/6/3 16:52
* @Version 1.0
*/
@Data
public class PushFranchiseFeeRequest {
@ApiModelProperty( "CRM系统门店ID")
private Long shopId;
@ApiModelProperty( "加盟商姓名")
private String partnerName;
@ApiModelProperty( "账单ID")
private Integer billId;
@ApiModelProperty( "加盟费")
private BigDecimal franchiseFee;
@ApiModelProperty( "保证金")
private BigDecimal bond;
@ApiModelProperty( "第一年度管理费")
private BigDecimal firstYearManageFee;
@ApiModelProperty( "第一年度品牌使用费")
private BigDecimal firstYearFee;
@ApiModelProperty( "设计费")
private BigDecimal designFee;
@ApiModelProperty( "应缴费合计金额")
private BigDecimal totalFee;
@ApiModelProperty( "创建时间")
private Date createTime;
public PushFranchiseFeeRequest(){}
public PushFranchiseFeeRequest(Long shopId, String partnerName, FranchiseFeeDO franchiseFeeDO){
this.setShopId(shopId);
this.setPartnerName(partnerName);
this.setBillId(franchiseFeeDO.getId().intValue());
this.setFranchiseFee(new BigDecimal(franchiseFeeDO.getYearFranchiseFee()));
this.setBond(new BigDecimal(franchiseFeeDO.getLoanMargin()));
this.setFirstYearManageFee(new BigDecimal(franchiseFeeDO.getFirstYearManageFee()));
this.setFirstYearFee(new BigDecimal(franchiseFeeDO.getFirstYearFee()));
this.setDesignFee(new BigDecimal(franchiseFeeDO.getPerformanceBond()));
this.setTotalFee(this.getBond()
.add(this.getFranchiseFee())
.add(this.getFirstYearManageFee())
.add(this.getFirstYearFee())
.add(this.getDesignFee()));
this.setCreateTime(franchiseFeeDO.getCreateTime());
}
}

View File

@@ -0,0 +1,24 @@
package com.cool.store.request.xgj;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Author suzhuhong
* @Date 2025/6/4 11:01
* @Version 1.0
*/
@Data
public class ReceiptCallBackRequest {
@NotBlank
private String receiptId;
@Max(1)@Min(0)@NotNull
private Integer claimStatus;
}

View File

@@ -0,0 +1,77 @@
package com.cool.store.request.xgj;
import com.cool.store.entity.FranchiseFeeDO;
import com.cool.store.entity.LinePayDO;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import javax.validation.constraints.DecimalMin;
import java.math.BigDecimal;
/**
* @Author suzhuhong
* @Date 2025/6/4 9:33
* @Version 1.0
*/
@Data
public class ReceiptRequest {
@ApiModelProperty( "CRM系统门店ID")
private Long shopId;
@ApiModelProperty( "账单ID")
private Integer billId;
@ApiModelProperty( "收款单ID")
private String receiptId;
@ApiModelProperty( "付款人")
private String payer1;
@ApiModelProperty("付款金额")
private BigDecimal paymentAmount;
@ApiModelProperty("交易流水号")
private String transactionNumber;
@ApiModelProperty( "开户行")
private String bankName;
@ApiModelProperty( "开户支行")
private String branchBankName;
@ApiModelProperty( "付款账号")
private String payAccount;
@ApiModelProperty( "付款凭证")
private String payPic;
@ApiModelProperty( "付款方式")
private Integer payWay = 0;
@ApiModelProperty( "认领状态")
private Integer claimStatus = 0;
@ApiModelProperty( "删除标识")
private Integer deleted = 0;
public ReceiptRequest() {
}
public ReceiptRequest(Long shopId, Integer billId, LinePayDO payDO){
this.setShopId(shopId);
this.setBillId(billId);
this.setReceiptId(payDO.getPaymentReceiptCode());
this.setPayer1(payDO.getPayUserName());
this.setPayAccount(payDO.getPayAccount());
this.setTransactionNumber(payDO.getPaySerialNumber());
this.setBankName(payDO.getBankName());
this.setBranchBankName(payDO.getBranchBankName());
this.setPaymentAmount(payDO.getAmount());
this.setPayPic(payDO.getPayPic());
this.setClaimStatus(payDO.getXgjClaimStatus());
this.setDeleted(payDO.getDeleted()?1:0);
}
}

View File

@@ -0,0 +1,77 @@
package com.cool.store.response;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author: WangShuo
* @Date: 2025/05/30/16:51
* @Version 1.0
* @注释:
*/
@Data
public class FranchiseFeePayInfoResponse {
private Long id;
private String partnerName;
@ApiModelProperty("xfsg_user_info.partner_id")
private String partnerId;
@ApiModelProperty("line_info.id")
private Long lineId;
@ApiModelProperty("铺位id")
private Long shopId;
@ApiModelProperty("支付方式 1微信 2银行转账,3-线上支付,4-线下支持")
private Integer payType;
@ApiModelProperty("付款人姓名/加盟商姓名")
private String payUserName;
@ApiModelProperty("付款账号")
private String payAccount;
@ApiModelProperty("开户行code")
private String bankCode;
@ApiModelProperty("开户行名称")
private String bankName;
@ApiModelProperty("支行code")
private String branchBankCode;
@ApiModelProperty("支行名称")
private String branchBankName;
@ApiModelProperty("缴纳时间")
private String payTime;
@ApiModelProperty("付款截图")
private String payPic;
@ApiModelProperty("缴费金额")
private BigDecimal amount;
@ApiModelProperty("交易流水号")
private String paySerialNumber;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("提交时间")
private Date createTime;
@ApiModelProperty("认领状态 0-待认领 1-已认领")
private Integer xgjClaimStatus;
@ApiModelProperty("支付状态 45:待缴费 50:已缴费")
private Integer payStatus;
@ApiModelProperty("付款单编号")
private String paymentReceiptCode;
}

View File

@@ -6,12 +6,13 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class FranchiseFeeResponse {
private Long id;
@ApiModelProperty("shopId")
@ApiModelProperty("shopId门店id")
private Long shopId;
@ApiModelProperty("payId")
private Long payId;
@@ -53,6 +54,17 @@ public class FranchiseFeeResponse {
@ApiModelProperty("铺位面积")
private String pointArea;
@ApiModelProperty("收款状态 0-待缴费 1-部分缴款 2-已完成")
private Integer xgjCollectionStatus;
@ApiModelProperty("剩余待缴金额")
private BigDecimal xgjRemainderPayableAmount;
@ApiModelProperty("新管家已缴金额")
private BigDecimal xgjFeesPaid;
@Data
public static class LinePay{
@ApiModelProperty("")
@@ -185,6 +197,9 @@ public class FranchiseFeeResponse {
franchiseFeeResponse.setUpdateTime(franchiseFeeDO.getUpdateTime());
franchiseFeeResponse.setFirstYearManageFee(franchiseFeeDO.getFirstYearManageFee());
franchiseFeeResponse.setDiscountReason(franchiseFeeDO.getDiscountReason());
franchiseFeeResponse.setXgjCollectionStatus(franchiseFeeDO.getXgjCollectionStatus());
franchiseFeeResponse.setXgjRemainderPayableAmount(franchiseFeeDO.getXgjRemainderPayableAmount());
franchiseFeeResponse.setXgjFeesPaid(franchiseFeeDO.getXgjFeesPaid());
return franchiseFeeResponse;
}
}

View File

@@ -0,0 +1,20 @@
package com.cool.store.response;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/6/4 19:06
* @Version 1.0
*/
@Data
public class XgjAccessTokenDTO {
private String access_token;
private String scope;
private String token_type;
private Long expires_in;
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.response.bigdata;
import com.cool.store.constants.CommonConstants;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.ResponseCodeEnum;
import lombok.Data;
import org.slf4j.MDC;
@@ -29,4 +30,8 @@ public class ApiResponse<T> {
public static<T> ApiResponse<T> success(T data) {
return new ApiResponse(ResponseCodeEnum.SUCCESS.getCode(), "ok", data);
}
public static<T> ApiResponse<T> error(ErrorCodeEnum errorCodeEnum) {
return new ApiResponse(errorCodeEnum.getCode(), errorCodeEnum.getMessage(), null);
}
}