xin
2025-07-02 04f33d32c28830004917c356d57f1a2714f2be0e
补充订单、退单用户操作信息
7 files added
2 files modified
356 ■■■■■ changed files
oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java 63 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderOperationLogQueryCriteria.java 4 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java 30 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java 54 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java 59 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java 80 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml 4 ●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml 40 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnOperationLog.java
New file
@@ -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));
    }
}
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;
oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnOperationLogQueryCriteria.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnOperationLogMapper.java
New file
@@ -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);
}
oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnOperationLogController.java
New file
@@ -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);
    }
}
oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnOperationLogService.java
New file
@@ -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;
}
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnOperationLogServiceImpl.java
New file
@@ -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);
    }
}
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}
oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
New file
@@ -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>