From 04f33d32c28830004917c356d57f1a2714f2be0e Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Wed, 02 Jul 2025 23:17:02 +0800
Subject: [PATCH] 补充订单、退单用户操作信息

---
 oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java          |   54 +++++++++
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java                  |   63 ++++++++++
 oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml                          |   40 ++++++
 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java       |    4 
 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java |   30 +++++
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java            |   22 +++
 oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java          |   59 +++++++++
 oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml                                |    4 
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java |   80 +++++++++++++
 9 files changed, 352 insertions(+), 4 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java
new file mode 100644
index 0000000..107c4e7
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java
@@ -0,0 +1,63 @@
+package com.oying.modules.sh.domain;
+
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import java.sql.Timestamp;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+* @description /
+* @author lixin
+* @date 2025-07-02
+**/
+@Data
+@TableName("sh_order_return_operation_log")
+public class OrderReturnOperationLog implements Serializable {
+
+    @TableId(value = "log_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long logId;
+
+    @NotBlank
+    @ApiModelProperty(value = "订单号")
+    private String returnNum;
+
+    @NotBlank
+    @ApiModelProperty(value = "用户账号")
+    private String username;
+
+    @NotBlank
+    @ApiModelProperty(value = "用户类型(骑手、消费者、商家、平台)")
+    private String userType;
+
+    @NotNull
+    @ApiModelProperty(value = "用户操作")
+    private Integer operation;
+
+    @NotBlank
+    @ApiModelProperty(value = "用户操作描述")
+    private String operationDescribe;
+
+    @NotBlank
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @NotNull
+    @ApiModelProperty(value = "操作时的订单快照")
+    private String snapshotData;
+
+    @NotNull
+    @ApiModelProperty(value = "操作时间")
+    private Timestamp operationTime;
+
+    public void copy(OrderReturnOperationLog source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
index 1b3517c..26b92d1 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java
@@ -18,8 +18,8 @@
     @ApiModelProperty(value = "每页数据量", example = "10")
     private Integer size = 10;
 
-    @ApiModelProperty(value = "用户id")
-    private Long userId;
+    @ApiModelProperty(value = "用户账号")
+    private String username;
 
     @ApiModelProperty(value = "用户类型")
     private String userType;
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java
new file mode 100644
index 0000000..572a792
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java
@@ -0,0 +1,30 @@
+package com.oying.modules.sh.domain.dto;
+
+import lombok.Data;
+import java.sql.Timestamp;
+import java.util.List;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @author lixin
+* @date 2025-07-02
+**/
+@Data
+public class OrderReturnOperationLogQueryCriteria{
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer page = 1;
+
+    @ApiModelProperty(value = "每页数据量", example = "10")
+    private Integer size = 10;
+
+    @ApiModelProperty(value = "订单号")
+    private String returnNum;
+
+    @ApiModelProperty(value = "用户账号")
+    private String username;
+
+    @ApiModelProperty(value = "用户类型(骑手、消费者、商家、平台)")
+    private String userType;
+    private List<Timestamp> operationTime;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java
new file mode 100644
index 0000000..9a9ffd8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java
@@ -0,0 +1,22 @@
+package com.oying.modules.sh.mapper;
+
+import com.oying.modules.sh.domain.OrderReturnOperationLog;
+import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+/**
+* @author lixin
+* @date 2025-07-02
+**/
+@Mapper
+public interface OrderReturnOperationLogMapper extends BaseMapper<OrderReturnOperationLog> {
+
+    IPage<OrderReturnOperationLog> findAll(@Param("criteria") OrderReturnOperationLogQueryCriteria criteria, Page<Object> page);
+
+    List<OrderReturnOperationLog> findAll(@Param("criteria") OrderReturnOperationLogQueryCriteria criteria);
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java
new file mode 100644
index 0000000..3a9072f
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java
@@ -0,0 +1,54 @@
+package com.oying.modules.sh.rest;
+
+import com.oying.annotation.Log;
+import com.oying.modules.sh.domain.OrderReturnOperationLog;
+import com.oying.modules.sh.service.OrderReturnOperationLogService;
+import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.utils.PageResult;
+
+/**
+* @author lixin
+* @date 2025-07-02
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "退订用户操作管理")
+@RequestMapping("/api/orderReturnOperationLog")
+public class OrderReturnOperationLogController {
+
+    private final OrderReturnOperationLogService orderReturnOperationLogService;
+
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('orderReturnOperationLog:list')")
+    public void exportOrderReturnOperationLog(HttpServletResponse response, OrderReturnOperationLogQueryCriteria criteria) throws IOException {
+        orderReturnOperationLogService.download(orderReturnOperationLogService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @ApiOperation("查询退订用户操作管理")
+    @PreAuthorize("@el.check('orderReturnOperationLog:list')")
+    public ResponseEntity<PageResult<OrderReturnOperationLog>> queryOrderReturnOperationLog(OrderReturnOperationLogQueryCriteria criteria){
+        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
+        return new ResponseEntity<>(orderReturnOperationLogService.queryAll(criteria,page),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增退订用户操作管理")
+    @ApiOperation("新增退订用户操作管理")
+    @PreAuthorize("@el.check('orderReturnOperationLog:add')")
+    public ResponseEntity<Object> createOrderReturnOperationLog(@Validated @RequestBody OrderReturnOperationLog resources){
+        orderReturnOperationLogService.create(resources);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java
new file mode 100644
index 0000000..3b2f4fa
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java
@@ -0,0 +1,59 @@
+package com.oying.modules.sh.service;
+
+import com.oying.modules.sh.domain.OrderReturnOperationLog;
+import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务接口
+* @author lixin
+* @date 2025-07-02
+**/
+public interface OrderReturnOperationLogService extends IService<OrderReturnOperationLog> {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param page 分页参数
+    * @return PageResult
+    */
+    PageResult<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria, Page<Object> page);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<OrderReturnOperationLogDto>
+    */
+    List<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria);
+
+    /**
+    * 创建
+    * @param resources /
+    */
+    void create(OrderReturnOperationLog resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(OrderReturnOperationLog resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(List<Long> ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<OrderReturnOperationLog> all, HttpServletResponse response) throws IOException;
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java
new file mode 100644
index 0000000..813fca8
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java
@@ -0,0 +1,80 @@
+package com.oying.modules.sh.service.impl;
+
+import com.oying.modules.sh.domain.OrderReturnOperationLog;
+import com.oying.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.sh.service.OrderReturnOperationLogService;
+import com.oying.modules.sh.domain.dto.OrderReturnOperationLogQueryCriteria;
+import com.oying.modules.sh.mapper.OrderReturnOperationLogMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.oying.utils.PageUtil;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import com.oying.utils.PageResult;
+
+/**
+* @description 服务实现
+* @author lixin
+* @date 2025-07-02
+**/
+@Service
+@RequiredArgsConstructor
+public class OrderReturnOperationLogServiceImpl extends ServiceImpl<OrderReturnOperationLogMapper, OrderReturnOperationLog> implements OrderReturnOperationLogService {
+
+    private final OrderReturnOperationLogMapper orderReturnOperationLogMapper;
+
+    @Override
+    public PageResult<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria, Page<Object> page){
+        return PageUtil.toPage(orderReturnOperationLogMapper.findAll(criteria, page));
+    }
+
+    @Override
+    public List<OrderReturnOperationLog> queryAll(OrderReturnOperationLogQueryCriteria criteria){
+        return orderReturnOperationLogMapper.findAll(criteria);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(OrderReturnOperationLog resources) {
+        orderReturnOperationLogMapper.insert(resources);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(OrderReturnOperationLog resources) {
+        OrderReturnOperationLog orderReturnOperationLog = getById(resources.getLogId());
+        orderReturnOperationLog.copy(resources);
+        orderReturnOperationLogMapper.updateById(orderReturnOperationLog);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteAll(List<Long> ids) {
+        orderReturnOperationLogMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void download(List<OrderReturnOperationLog> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (OrderReturnOperationLog orderReturnOperationLog : all) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("订单号", orderReturnOperationLog.getReturnNum());
+            map.put("用户账号", orderReturnOperationLog.getUsername());
+            map.put("用户类型(骑手、消费者、商家、平台)", orderReturnOperationLog.getUserType());
+            map.put("用户操作", orderReturnOperationLog.getOperation());
+            map.put("用户操作描述", orderReturnOperationLog.getOperationDescribe());
+            map.put("备注", orderReturnOperationLog.getRemark());
+            map.put("操作时的订单快照", orderReturnOperationLog.getSnapshotData());
+            map.put("操作时间", orderReturnOperationLog.getOperationTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}
diff --git a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
index a72896c..f5dd43c 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
@@ -22,8 +22,8 @@
         <include refid="Base_Column_List"/>
         from sh_order_operation_log
         <where>
-            <if test="criteria.userId != null">
-                and user_id = #{criteria.userId}
+            <if test="criteria.username != null">
+                and username like concat('%',#{criteria.username},'%')
             </if>
             <if test="criteria.userType != null">
                 and user_type = #{criteria.userType}
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
new file mode 100644
index 0000000..e4e8859
--- /dev/null
+++ b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
@@ -0,0 +1,40 @@
+<?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.oying.modules.sh.mapper.OrderReturnOperationLogMapper">
+    <resultMap id="BaseResultMap" type="com.oying.modules.sh.domain.OrderReturnOperationLog">
+        <id column="log_id" property="logId"/>
+        <result column="return_num" property="returnNum"/>
+        <result column="username" property="username"/>
+        <result column="user_type" property="userType"/>
+        <result column="operation" property="operation"/>
+        <result column="operation_describe" property="operationDescribe"/>
+        <result column="remark" property="remark"/>
+        <result column="snapshot_data" property="snapshotData"/>
+        <result column="operation_time" property="operationTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        log_id, return_num, username, user_type, operation, operation_describe, remark, snapshot_data, operation_time
+    </sql>
+
+    <select id="findAll" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from sh_order_return_operation_log
+        <where>
+            <if test="criteria.returnNum != null">
+                and return_num = #{criteria.returnNum}
+            </if>
+            <if test="criteria.username != null">
+                and username like concat('%',#{criteria.username},'%')
+            </if>
+            <if test="criteria.userType != null">
+                and user_type = #{criteria.userType}
+            </if>
+            <if test="criteria.operationTime != null and criteria.operationTime.size() > 0">
+                AND operation_time BETWEEN #{criteria.operationTime[0]} AND #{criteria.operationTime[1]}
+            </if>
+        </where>
+        order by log_id desc
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3