From 834e3231b9ca0e5a5f43f55ce2675ace9e90dd4e Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 16 九月 2025 16:21:00 +0800
Subject: [PATCH] yys  支付与发货管理接口开发

---
 src/main/resources/mapper/sales/PaymentShippingMapper.xml                     |   19 +++
 src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java                       |   83 +++++++++++++
 src/main/java/com/ruoyi/sales/service/PaymentShippingService.java             |   22 +++
 src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java       |   70 +++++++++++
 src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java |    4 
 src/main/java/com/ruoyi/common/utils/OrderUtils.java                          |   55 +++++++++
 src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java               |   23 +++
 src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java    |   29 ++++
 8 files changed, 305 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/utils/OrderUtils.java b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
new file mode 100644
index 0000000..42c154d
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -0,0 +1,55 @@
+package com.ruoyi.common.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 15:31
+ */
+public class OrderUtils {
+
+
+    /**
+     * 鏌ヨ褰撳ぉ锛堝熀浜巆reateTime瀛楁锛夌殑璁板綍鏁伴噺
+     * @param mapper 瀹炰綋绫诲搴旂殑BaseMapper
+     * @param <T> 瀹炰綋绫绘硾鍨�
+     * @return 褰撳ぉ璁板綍鏁伴噺
+     */
+    public static <T> String countTodayByCreateTime(BaseMapper<T> mapper,String preFix) {
+        // 鑾峰彇褰撳ぉ寮�濮嬫椂闂达紙00:00:00锛�
+        LocalDateTime todayStart = LocalDateTime.of(
+                LocalDateTime.now().toLocalDate(),
+                LocalTime.MIN
+        );
+        // 鑾峰彇褰撳ぉ缁撴潫鏃堕棿锛�23:59:59.999锛�
+        LocalDateTime todayEnd = LocalDateTime.of(
+                LocalDateTime.now().toLocalDate(),
+                LocalTime.MAX
+        );
+
+        // 杞崲涓篋ate绫诲瀷锛堝鏋滃疄浣撶被涓璫reateTime鏄疞ocalDateTime鍙洿鎺ヤ娇鐢級
+        Date startDate = Date.from(todayStart.atZone(ZoneId.systemDefault()).toInstant());
+        Date endDate = Date.from(todayEnd.atZone(ZoneId.systemDefault()).toInstant());
+
+        // 鏋勫缓鏌ヨ鏉′欢
+        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ge("create_time", startDate)  // 澶т簬绛変簬褰撳ぉ寮�濮�
+                .lt("create_time", endDate);   // 灏忎簬褰撳ぉ缁撴潫锛堥伩鍏嶆绉掔簿搴﹂棶棰橈級
+
+        // 鎵ц鏌ヨ
+        Long aLong = mapper.selectCount(queryWrapper);
+        // 鎷兼帴璁㈠崟缂栧彿 preFix + 鏃堕棿锛坹yyyMMdd锛� + 璁㈠崟鏁伴噺(001)
+        return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1));}
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java b/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java
new file mode 100644
index 0000000..c67d438
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.mapper.PaymentShippingMapper;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import com.ruoyi.sales.service.PaymentShippingService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:02
+ */
+@RestController
+@RequestMapping("/paymentShipping")
+@Api(tags = "鏀粯涓庡彂璐х鐞�")
+public class PaymentShippingController extends BaseController {
+
+    @Autowired
+    private PaymentShippingService paymentShippingService;
+
+    @Autowired
+    private PaymentShippingMapper paymentShippingMapper;
+
+    @GetMapping("/listPage")
+    @ApiOperation("鍒嗛〉鏌ヨ鏀粯涓庡彂璐т俊鎭�")
+    public AjaxResult listPage(Page page, PaymentShipping paymentShipping) {
+        IPage<PaymentShipping> listPage = paymentShippingService.listPage(page, paymentShipping);
+        return AjaxResult.success(listPage);
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("娣诲姞鏀粯涓庡彂璐т俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult add(@RequestBody PaymentShipping paymentShipping) {
+        String ord = OrderUtils.countTodayByCreateTime(paymentShippingMapper, "ORD");
+        paymentShipping.setOrderNo(ord);
+        boolean save = paymentShippingService.save(paymentShipping);
+        return save ? success() : error();
+    }
+
+    @PostMapping("/update")
+    @ApiOperation("淇敼鏀粯涓庡彂璐т俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult update(@RequestBody PaymentShipping paymentShipping) {
+        boolean update = paymentShippingService.updateById(paymentShipping);
+        return update ? success() : error();
+    }
+
+    @DeleteMapping("/delete")
+    @ApiOperation("鍒犻櫎鏀粯涓庡彂璐т俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult delete(@RequestBody List<Long> ids){
+        if (CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        }
+        return AjaxResult.success(paymentShippingService.removeByIds(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java b/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java
index 1ef4955..7d40587 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java
@@ -10,6 +10,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -36,6 +37,7 @@
 
     @PostMapping("/add")
     @ApiOperation("娣诲姞涓氬姟鍛樹俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult add(@RequestBody SalespersonManagement salespersonManagement) {
         boolean save = salespersonManagementService.save(salespersonManagement);
         return save ? AjaxResult.success() : AjaxResult.error();
@@ -43,6 +45,7 @@
 
     @PostMapping("/update")
     @ApiOperation("淇敼涓氬姟鍛樹俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult update(@RequestBody SalespersonManagement salespersonManagement) {
         boolean update = salespersonManagementService.updateById(salespersonManagement);
         return update ? AjaxResult.success() : AjaxResult.error();
@@ -50,6 +53,7 @@
 
     @DeleteMapping("/delete")
     @ApiOperation("鍒犻櫎涓氬姟鍛樹俊鎭�")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult delete(@RequestBody List<Long> ids) {
         if (ids == null || ids.isEmpty()) {
             return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
diff --git a/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java b/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java
new file mode 100644
index 0000000..df9bde4
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:00
+ */
+public interface PaymentShippingMapper extends BaseMapper<PaymentShipping> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param page
+     * @param paymentShipping
+     * @return
+     */
+    IPage<PaymentShipping> listPage(Page page,@Param("req") PaymentShipping paymentShipping);
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java b/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java
new file mode 100644
index 0000000..17a691c
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java
@@ -0,0 +1,83 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 13:56
+ */
+@TableName(value = "payment_shipping")
+@Data
+@ApiModel
+public class PaymentShipping {
+
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "璁㈠崟鍙�")
+    private String orderNo;
+
+    @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+    private String customer;
+
+    @ApiModelProperty(value = "璁㈠崟閲戦")
+    private String orderAmount;
+
+    @ApiModelProperty(value = "宸蹭粯娆鹃噾棰�")
+    private String paidAmount;
+
+    @ApiModelProperty(value = "浠樻鏂瑰紡")
+    private String paymentMethod;
+
+    @ApiModelProperty(value = "浠樻鐘舵��")
+    private String paymentStatus;
+
+    @ApiModelProperty(value = "鍙戣揣鐘舵��")
+    private String shippingStatus;
+
+    @ApiModelProperty(value = "鍙戣揣鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date shippingDate;
+
+    @ApiModelProperty(value = "鐗╂祦鍗曞彿")
+    private String trackingNo;
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java b/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java
new file mode 100644
index 0000000..31848ae
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.sales.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sales.pojo.PaymentShipping;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:01
+ */
+public interface PaymentShippingService extends IService<PaymentShipping> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param page
+     * @param paymentShipping
+     * @return
+     */
+    IPage<PaymentShipping> listPage(Page page, PaymentShipping paymentShipping);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java
new file mode 100644
index 0000000..067022a
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sales.mapper.PaymentShippingMapper;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import com.ruoyi.sales.service.PaymentShippingService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:01
+ */
+@Service
+@Slf4j
+public class PaymentShippingServiceImpl extends ServiceImpl<PaymentShippingMapper, PaymentShipping> implements PaymentShippingService {
+
+    @Autowired
+    private PaymentShippingMapper paymentShippingMapper;
+
+    @Override
+    public IPage<PaymentShipping> listPage(Page page, PaymentShipping paymentShipping) {
+        IPage<PaymentShipping> listPage = paymentShippingMapper.listPage(page, paymentShipping);
+        return listPage;
+    }
+}
diff --git a/src/main/resources/mapper/sales/PaymentShippingMapper.xml b/src/main/resources/mapper/sales/PaymentShippingMapper.xml
new file mode 100644
index 0000000..749c8ba
--- /dev/null
+++ b/src/main/resources/mapper/sales/PaymentShippingMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.PaymentShippingMapper">
+
+    <select id="listPage" resultType="com.ruoyi.sales.pojo.PaymentShipping">
+        select * from payment_shipping
+        <where>
+            <if test="req.orderNo != null and req.orderNo != ''">
+                and order_no like concat('%',#{req.orderNo},'%')
+            </if>
+            <if test="req.paymentStatus != null and req.paymentStatus != ''">
+                and payment_status = #{req.paymentStatus}
+            </if>
+            <if test="req.shippingStatus != null and req.shippingStatus != ''">
+                and shipping_status = #{req.shippingStatus}
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3