Преглед на файлове

新增企业时生成缴费单信息

marxjaw преди 3 месеца
родител
ревизия
8e6c1c69e3

+ 18 - 1
yt-common/src/main/java/com/ytpm/middle/model/YtFinancePayment.java

@@ -2,11 +2,15 @@ package com.ytpm.middle.model;
 
 import com.ytpm.general.BaseParam;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * @author Marx
  * @date 2025/8/6 11:36
@@ -17,5 +21,18 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @ApiModel("缴费单信息")
 public class YtFinancePayment extends BaseParam {
-
+    @ApiModelProperty("缴费单ID")
+    private String paymentId;
+    @ApiModelProperty("缴费单编号")
+    private String paymentNo;
+    @ApiModelProperty("缴费类型")
+    private Integer paymentType;
+    @ApiModelProperty("总金额")
+    private BigDecimal totalAmount;
+    @ApiModelProperty("缴费单状态")
+    private int paymentStatus;
+    @ApiModelProperty("缴费用户")
+    private String userId;
+    @ApiModelProperty("完成缴费时间")
+    private Date finishTime;
 }

+ 38 - 0
yt-common/src/main/java/com/ytpm/middle/model/YtFinancePaymentRecord.java

@@ -0,0 +1,38 @@
+package com.ytpm.middle.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author Marx
+ * @date 2025/8/6 13:59
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("缴费单明细记录")
+public class YtFinancePaymentRecord {
+    @ApiModelProperty("缴费记录ID")
+    private String recordId;
+    @ApiModelProperty("用户ID")
+    private String userId;
+    @ApiModelProperty("缴费单ID")
+    private String paymentId;
+    @ApiModelProperty("缴费项ID")
+    private String itemId;
+    @ApiModelProperty("应收金额")
+    private BigDecimal shouldAmount;
+    @ApiModelProperty("收款金额")
+    private BigDecimal receiveAmount;
+    @ApiModelProperty("收款时间")
+    private Date receiveTime;
+    @ApiModelProperty("缴费状态")
+    private int chargeStatus;
+}

+ 2 - 0
yt-common/src/main/java/com/ytpm/middle/model/YtMiddleEnterprise.java

@@ -49,4 +49,6 @@ public class YtMiddleEnterprise extends BaseParam {
      */
     @ApiModelProperty("taku公钥")
     private String takuPublicKey;
+    @ApiModelProperty("是否加急")
+    private int hasFast;
 }

+ 2 - 0
yt-common/src/main/java/com/ytpm/middle/param/AgentForm.java

@@ -49,4 +49,6 @@ public class AgentForm extends AgentBaseInfoParam {
     /** 企业类型 1-直营 2-分销 */
     @ApiModelProperty("企业类型 1-直营 2-分销")
     private Integer enterpriseType;
+    @ApiModelProperty("是否加急")
+    private int hasFast;
 }

+ 12 - 0
yt-middle/middle-platform/src/main/java/com/ytpm/middle/dao/FinanceMapper.java

@@ -1,6 +1,8 @@
 package com.ytpm.middle.dao;
 
+import com.ytpm.middle.model.YtFinancePayment;
 import com.ytpm.middle.model.YtFinancePaymentItem;
+import com.ytpm.middle.model.YtFinancePaymentRecord;
 import com.ytpm.middle.param.PaymentItemParam;
 import com.ytpm.middle.view.PaymentItemVO;
 import org.apache.ibatis.annotations.Mapper;
@@ -29,4 +31,14 @@ public interface FinanceMapper {
      * 查询缴费项目
      */
     YtFinancePaymentItem selectItemOne(@Param("itemId") String itemId);
+
+    /**
+     * 新增缴费记录
+     */
+    void addPaymentRecord(YtFinancePaymentRecord record);
+
+    /**
+     * 新增缴费单
+     */
+    void addPayment(YtFinancePayment payment);
 }

+ 54 - 1
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/AgentServiceImpl.java

@@ -2,6 +2,7 @@ package com.ytpm.middle.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
@@ -13,6 +14,9 @@ import com.ytpm.handle.CustomerException;
 import com.ytpm.middle.dao.AgentMapper;
 import com.ytpm.middle.dao.AppMapper;
 import com.ytpm.middle.dao.EnterpriseMapper;
+import com.ytpm.middle.dao.FinanceMapper;
+import com.ytpm.middle.model.YtFinancePayment;
+import com.ytpm.middle.model.YtFinancePaymentRecord;
 import com.ytpm.middle.model.YtMiddleEnterprise;
 import com.ytpm.middle.param.AgentBaseInfoParam;
 import com.ytpm.middle.param.AgentForm;
@@ -31,6 +35,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +57,8 @@ public class AgentServiceImpl implements AgentService {
     private RedisUtil redisUtil;
     @Resource
     private AppMapper appMapper;
+    @Resource
+    private FinanceMapper financeMapper;
 
     @Value("${tencent.sms.registryTemplateId}")
     private String registryTemplateId;
@@ -93,10 +100,56 @@ public class AgentServiceImpl implements AgentService {
         generateLoginAccount(form,accountId);
         addEnterprise(form,accountId);
         //根据企业类型创建缴费单
-
+        generatePayment(form,accountId);
         return Result.resultOk(RepMessage.ADD_SUCCESS);
     }
 
+    /**
+     * 生成企业缴费单信息
+     * 1、默认生成流量费 1200
+     * 2、默认生成软著费用 400
+     */
+    private void generatePayment(AgentForm form, String accountId) {
+        String paymentId = IDUtil.generateFlowID("bill_");
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        //缴费单生产未缴费记录
+        YtFinancePaymentRecord record = new YtFinancePaymentRecord();
+        //加急或普通软著费
+        record.setPaymentId(paymentId);
+        record.setUserId(accountId);
+        record.setItemId(form.getHasFast()==1?"7c9607f7727911f0b74d525400b5f38e":"6d4c2561727911f0b74d525400b5f38e");
+        record.setShouldAmount(new BigDecimal(form.getHasFast()==1?1000:400));
+        record.setRecordId(IdUtil.fastSimpleUUID());
+        financeMapper.addPaymentRecord(record);
+        totalAmount = totalAmount.add(record.getShouldAmount());
+        //1200流量费
+        record = new YtFinancePaymentRecord();
+        record.setPaymentId(paymentId);
+        record.setUserId(accountId);
+        record.setItemId("34b6eb3f727911f0b74d525400b5f38e");
+        record.setShouldAmount(new BigDecimal(1200));
+        record.setRecordId(IdUtil.fastSimpleUUID());
+        financeMapper.addPaymentRecord(record);
+        totalAmount = totalAmount.add(record.getShouldAmount());
+        //一万定金
+        record = new YtFinancePaymentRecord();
+        record.setPaymentId(paymentId);
+        record.setUserId(accountId);
+        record.setItemId("26bc4fa9727911f0b74d525400b5f38e");
+        record.setShouldAmount(new BigDecimal(10000));
+        record.setRecordId(IdUtil.fastSimpleUUID());
+        financeMapper.addPaymentRecord(record);
+        totalAmount = totalAmount.add(record.getShouldAmount());
+        //生成缴费单
+        YtFinancePayment payment = new YtFinancePayment();
+        payment.setPaymentId(paymentId);
+        payment.setPaymentNo(redisUtil.generateOrderNo("payment_"));
+        payment.setTotalAmount(totalAmount);
+        payment.setUserId(accountId);
+        payment.setDefaultParam(form.getCreateUserId());
+        financeMapper.addPayment(payment);
+    }
+
     /**
      * 修改代理商
      */

+ 42 - 0
yt-middle/middle-platform/src/main/resources/mapper/FinanceMapper.xml

@@ -7,6 +7,48 @@
         values
             (#{itemId},#{itemName},#{itemAmount},#{unit},#{count},#{createTime},#{createUserId},#{available});
     </insert>
+    <insert id="addPaymentRecord">
+        insert into yt_finance_payment_record
+        (
+         record_id,
+         user_id,
+         payment_id,
+         item_id,
+         should_amount
+        )
+        values
+        (
+         #{recordId},
+         #{userId},
+         #{paymentId},
+         #{itemId},
+         #{shouldAmount}
+        )
+    </insert>
+    <insert id="addPayment">
+        insert into yt_finance_payment
+        (
+         payment_id,
+         payment_no,
+         payment_type,
+         total_amount,
+         user_id,
+         create_time,
+         create_user_id,
+         available
+        )
+        values
+        (
+         #{paymentId},
+         #{paymentNo},
+         #{paymentType},
+         #{totalAmount},
+         #{userId},
+         #{createTime},
+         #{createUserId},
+         #{available}
+        )
+    </insert>
     <update id="updateItem">
         update yt_finance_payment_item
         <set>