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