xin
2025-05-30 9f4747457755bbb147984b348d3ecf2790b04fe1
Merge remote-tracking branch 'origin/feature-leomon' into xin

# Conflicts:
# .idea/vcs.xml
28 files added
2 files modified
1559 ■■■■■ changed files
.idea/vcs.xml 4 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/AppRun.java 1 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderBuyer.java 50 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderLeave.java 50 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderSeller.java 50 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/MessageSystem.java 42 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java 18 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderLeaveQueryCriteria.java 18 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerQueryCriteria.java 18 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemQueryCriteria.java 18 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderBuyerMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderLeaveMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemMapper.java 22 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderBuyerController.java 107 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderLeaveController.java 192 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java 108 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java 105 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderBuyerService.java 63 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderLeaveService.java 69 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java 62 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/MessageSystemService.java 64 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderBuyerServiceImpl.java 83 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderLeaveServiceImpl.java 89 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java 84 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemServiceImpl.java 79 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/message/MessageOrderBuyerMapper.xml 25 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/message/MessageOrderLeaveMapper.xml 25 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml 25 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/message/MessageSystemMapper.xml 22 ●●●●● patch | view | raw | blame | history
.idea/vcs.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
  </component>
</project>
</project>
oying-system/src/main/java/com/oying/AppRun.java
@@ -5,6 +5,7 @@
import lombok.extern.slf4j.Slf4j;
import com.oying.annotation.rest.AnonymousGetMapping;
import com.oying.utils.SpringBeanHolder;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderBuyer.java
New file
@@ -0,0 +1,50 @@
package com.oying.modules.message.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 李萌
* @date 2025-05-20
**/
@Data
@TableName("message_order_buyer")
public class MessageOrderBuyer implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键,自增 用户id")
    private Integer id;
    @NotNull
    @ApiModelProperty(value = "订单ID")
    private Integer orderId;
    @NotBlank
    @ApiModelProperty(value = "消息类型(订单状态变化、订单送达)")
    private String messageType;
    @NotBlank
    @ApiModelProperty(value = "消息内容")
    private String messageContent;
    @NotBlank
    @ApiModelProperty(value = "跳转链接")
    private String link;
    @ApiModelProperty(value = "创建时间")
    private Timestamp createTime;
    public void copy(MessageOrderBuyer source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderLeave.java
New file
@@ -0,0 +1,50 @@
package com.oying.modules.message.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 李萌
* @date 2025-05-20
**/
@Data
@TableName("message_order_leave")
public class MessageOrderLeave implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键,自增")
    private Integer id;
    @NotNull
    @ApiModelProperty(value = "订单ID")
    private Integer orderId;
    @NotBlank
    @ApiModelProperty(value = "顾客评价内容")
    private String customerReview="顾客尚未评价";
    @NotBlank
    @ApiModelProperty(value = "商家回复内容")
    private String sellerReply="商家尚未回复";
    @NotBlank
    @ApiModelProperty(value = "跳转链接")
    private String link="https://example.com/default-link";
    @ApiModelProperty(value = "创建时间")
    private Timestamp createTime;
    public void copy(MessageOrderLeave source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
oying-system/src/main/java/com/oying/modules/message/domain/MessageOrderSeller.java
New file
@@ -0,0 +1,50 @@
package com.oying.modules.message.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 李萌
* @date 2025-05-20
**/
@Data
@TableName("message_order_seller")
public class MessageOrderSeller implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "id")
    private Integer id;
    @NotNull
    @ApiModelProperty(value = "orderId")
    private Integer orderId;
    @NotBlank
    @ApiModelProperty(value = "messageType")
    private String messageType;
    @NotBlank
    @ApiModelProperty(value = "messageContent")
    private String messageContent;
    @NotBlank
    @ApiModelProperty(value = "link")
    private String link;
    @ApiModelProperty(value = "createTime")
    private Timestamp createTime;
    public void copy(MessageOrderSeller source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
oying-system/src/main/java/com/oying/modules/message/domain/MessageSystem.java
New file
@@ -0,0 +1,42 @@
package com.oying.modules.message.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.rmi.CORBA.Tie;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/**
 * @description /
 * @author 李萌
 * @date 2025-05-20
 **/
@Data
@TableName("message_system")
public class MessageSystem implements Serializable {
    //使用数据库的自增策略来生成id
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "id")
    private Integer id;
    @NotNull
    @ApiModelProperty(value = "系统维护开始时间")
    private Timestamp startTime;
    @NotNull
    @ApiModelProperty(value = "系统维护截至时间")
    private Timestamp endTime;
    public void copy(MessageSystem source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderBuyerQueryCriteria.java
New file
@@ -0,0 +1,18 @@
package com.oying.modules.message.domain.dto;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 李萌
* @date 2025-05-20
**/
@Data
public class MessageOrderBuyerQueryCriteria{
    @ApiModelProperty(value = "页码", example = "1")
    private Integer page = 1;
    @ApiModelProperty(value = "每页数据量", example = "10")
    private Integer size = 10;
}
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderLeaveQueryCriteria.java
New file
@@ -0,0 +1,18 @@
package com.oying.modules.message.domain.dto;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 李萌
* @date 2025-05-20
**/
@Data
public class MessageOrderLeaveQueryCriteria{
    @ApiModelProperty(value = "页码", example = "1")
    private Integer page = 1;
    @ApiModelProperty(value = "每页数据量", example = "10")
    private Integer size = 10;
}
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerQueryCriteria.java
New file
@@ -0,0 +1,18 @@
package com.oying.modules.message.domain.dto;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 李萌
* @date 2025-05-20
**/
@Data
public class MessageOrderSellerQueryCriteria{
    @ApiModelProperty(value = "页码", example = "1")
    private Integer page = 1;
    @ApiModelProperty(value = "每页数据量", example = "10")
    private Integer size = 10;
}
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageSystemQueryCriteria.java
New file
@@ -0,0 +1,18 @@
package com.oying.modules.message.domain.dto;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/**
 * @author 李萌
 * @date 2025-05-20
 **/
@Data
public class MessageSystemQueryCriteria{
    @ApiModelProperty(value = "页码", example = "1")
    private Integer page = 1;
    @ApiModelProperty(value = "每页数据量", example = "10")
    private Integer size = 10;
}
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderBuyerMapper.java
New file
@@ -0,0 +1,22 @@
package com.oying.modules.message.mapper;
import com.oying.modules.message.domain.MessageOrderBuyer;
import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
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 李萌
* @date 2025-05-20
**/
@Mapper
public interface MessageOrderBuyerMapper extends BaseMapper<MessageOrderBuyer> {
    IPage<MessageOrderBuyer> findAll(@Param("criteria") MessageOrderBuyerQueryCriteria criteria, Page<Object> page);
    List<MessageOrderBuyer> findAll(@Param("criteria") MessageOrderBuyerQueryCriteria criteria);
}
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderLeaveMapper.java
New file
@@ -0,0 +1,22 @@
package com.oying.modules.message.mapper;
import com.oying.modules.message.domain.MessageOrderLeave;
import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
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 李萌
* @date 2025-05-20
**/
@Mapper
public interface MessageOrderLeaveMapper extends BaseMapper<MessageOrderLeave> {
    IPage<MessageOrderLeave> findAll(@Param("criteria") MessageOrderLeaveQueryCriteria criteria, Page<Object> page);
    List<MessageOrderLeave> findAll(@Param("criteria") MessageOrderLeaveQueryCriteria criteria);
}
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
New file
@@ -0,0 +1,22 @@
package com.oying.modules.message.mapper;
import com.oying.modules.message.domain.MessageOrderSeller;
import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
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 李萌
* @date 2025-05-20
**/
@Mapper
public interface MessageOrderSellerMapper extends BaseMapper<MessageOrderSeller> {
    IPage<MessageOrderSeller> findAll(@Param("criteria") MessageOrderSellerQueryCriteria criteria, Page<Object> page);
    List<MessageOrderSeller> findAll(@Param("criteria") MessageOrderSellerQueryCriteria criteria);
}
oying-system/src/main/java/com/oying/modules/message/mapper/MessageSystemMapper.java
New file
@@ -0,0 +1,22 @@
package com.oying.modules.message.mapper;
import com.oying.modules.message.domain.MessageSystem;
import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
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 李萌
 * @date 2025-05-20
 **/
@Mapper
public interface MessageSystemMapper extends BaseMapper<MessageSystem> {
    IPage<MessageSystem> findAll(@Param("criteria") MessageSystemQueryCriteria criteria, Page<Object> page);
    List<MessageSystem> findAll(@Param("criteria") MessageSystemQueryCriteria criteria);
}
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderBuyerController.java
New file
@@ -0,0 +1,107 @@
package com.oying.modules.message.rest;
import com.oying.annotation.Log;
import com.oying.modules.message.domain.MessageOrderBuyer;
import com.oying.modules.message.service.MessageOrderBuyerService;
import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
import lombok.RequiredArgsConstructor;
import java.util.List;
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 李萌
* @date 2025-05-20
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "买家端订单消息通知")
@RequestMapping("/api/message/messageOrderBuyer")
public class MessageOrderBuyerController {
    private final MessageOrderBuyerService messageOrderBuyerService;
//    @ApiOperation("导出数据")
//    @GetMapping(value = "/download")
//    @PreAuthorize("@el.check('messageOrderBuyer:list')")
//    public void exportMessageOrderBuyer(HttpServletResponse response, MessageOrderBuyerQueryCriteria criteria) throws IOException {
//        messageOrderBuyerService.download(messageOrderBuyerService.queryAll(criteria), response);
//    }
    @GetMapping
    @ApiOperation("查询买家端订单消息通知")
    @PreAuthorize("@el.check('messageOrderBuyer:list')")
    public ResponseEntity<PageResult<MessageOrderBuyer>> queryMessageOrderBuyer(MessageOrderBuyerQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(messageOrderBuyerService.queryAll(criteria,page),HttpStatus.OK);
    }
//    @PostMapping
//    @Log("新增买家端订单消息通知")
//    @ApiOperation("新增买家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderBuyer:add')")
//    public ResponseEntity<Object> createMessageOrderBuyer(@Validated @RequestBody MessageOrderBuyer resources){
//        messageOrderBuyerService.create(resources);
//        return new ResponseEntity<>(HttpStatus.CREATED);
//    }
//
//    @PutMapping
//    @Log("修改买家端订单消息通知")
//    @ApiOperation("修改买家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderBuyer:edit')")
//    public ResponseEntity<Object> updateMessageOrderBuyer(@Validated @RequestBody MessageOrderBuyer resources){
//        messageOrderBuyerService.update(resources);
//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
//    }
//
//    @DeleteMapping
//    @Log("删除买家端订单消息通知")
//    @ApiOperation("删除买家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderBuyer:del')")
//    public ResponseEntity<Object> deleteMessageOrderBuyer(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
//        messageOrderBuyerService.deleteAll(ids);
//        return new ResponseEntity<>(HttpStatus.OK);
//    }
    //订单状态变化通知
    @GetMapping("/status/{order_id}")
    @ApiOperation("查询一条订单状态变化通知")
    public ResponseEntity<String> getMessageOrderBuyer(@PathVariable Integer order_id) {
        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
        String message = messageOrderBuyer.getMessageType();
        return new ResponseEntity<>(message, HttpStatus.OK);
    }
    //订单送达通知
    @GetMapping("/deliver/{order_id}")
    @ApiOperation("查询一条订单送达通知")
    public ResponseEntity<String> getMessageOrderBuyerDeliver(@PathVariable Integer order_id) {
        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
        String message = messageOrderBuyer.getMessageType();
        //如果MessageType为订单送达,则返回message——content
        if (message.equals("订单送达")) {
            String messageContent = messageOrderBuyer.getMessageContent();
            return new ResponseEntity<>(messageContent, HttpStatus.OK);
        }else{
            //返回没送达
            return new ResponseEntity<>("没送达", HttpStatus.OK);
        }
    }
    //实现点击跳转到订单详情
    @GetMapping("/link/{order_id}")
    @ApiOperation("点击跳转到订单详情")
    public ResponseEntity<String> getMessageOrderBuyerLink(@PathVariable Integer order_id) {
        MessageOrderBuyer messageOrderBuyer = messageOrderBuyerService.findByOrderId(order_id);
        String link = messageOrderBuyer.getLink();
        return new ResponseEntity<>(link, HttpStatus.OK);
    }
}
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderLeaveController.java
New file
@@ -0,0 +1,192 @@
package com.oying.modules.message.rest;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.annotation.Log;
import com.oying.modules.message.domain.MessageOrderLeave;
import com.oying.modules.message.service.MessageOrderLeaveService;
import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
import lombok.RequiredArgsConstructor;
import java.sql.Timestamp;
import java.util.List;
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 李萌
* @date 2025-05-20
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "消息留言")
@RequestMapping("/api/message/messageOrderLeave")
public class MessageOrderLeaveController {
    private final MessageOrderLeaveService messageOrderLeaveService;
//    @ApiOperation("导出数据")
//    @GetMapping(value = "/download")
//    @PreAuthorize("@el.check('messageOrderLeave:list')")
//    public void exportMessageOrderLeave(HttpServletResponse response, MessageOrderLeaveQueryCriteria criteria) throws IOException {
//        messageOrderLeaveService.download(messageOrderLeaveService.queryAll(criteria), response);
//    }
    @GetMapping
    @ApiOperation("查询消息留言")
    @PreAuthorize("@el.check('messageOrderLeave:list')")
    public ResponseEntity<PageResult<MessageOrderLeave>> queryMessageOrderLeave(MessageOrderLeaveQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(messageOrderLeaveService.queryAll(criteria,page),HttpStatus.OK);
    }
//    @PostMapping
//    @Log("新增消息留言")
//    @ApiOperation("新增消息留言")
//    @PreAuthorize("@el.check('messageOrderLeave:add')")
//    public ResponseEntity<Object> createMessageOrderLeave(@Validated @RequestBody MessageOrderLeave resources){
//        messageOrderLeaveService.create(resources);
//        return new ResponseEntity<>(HttpStatus.CREATED);
//    }
//    @PutMapping
//    @Log("修改消息留言")
//    @ApiOperation("修改消息留言")
//    @PreAuthorize("@el.check('messageOrderLeave:edit')")
//    public ResponseEntity<Object> updateMessageOrderLeave(@Validated @RequestBody MessageOrderLeave resources){
//        messageOrderLeaveService.update(resources);
//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
//    }
//    @DeleteMapping
//    @Log("删除消息留言")
//    @ApiOperation("删除消息留言")
//    @PreAuthorize("@el.check('messageOrderLeave:del')")
//    public ResponseEntity<Object> deleteMessageOrderLeave(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
//        messageOrderLeaveService.deleteAll(ids);
//        return new ResponseEntity<>(HttpStatus.OK);
//    }
    //顾客点击订单,传回订单id,根据订单id生成一条 消息留言
//    @PutMapping("/customer/{order_id}")
//    @ApiOperation("顾客点击订单,传回订单id,根据订单id生成一条 留言,此时顾客可以留言")
//    public ResponseEntity<Object> createMessageOrderLeave(@PathVariable("order_id") Integer id,@RequestParam String customerReview) {
//        //创建对象
//        MessageOrderLeave messageOrderLeave = new MessageOrderLeave();
//        messageOrderLeave.setOrderId(id);
//        //如果customerReview为空,默认为“用户未留言”
//        messageOrderLeave.setCustomerReview(customerReview);
//        //设置创建时间为当前时间
//        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
//        //若表中order_id订单还没存在则调用update留言
//
//
//        if(messageOrderLeaveService.findByOrderId(id)==null){
//            messageOrderLeaveService.updateById(messageOrderLeave);
//            return new ResponseEntity<>(HttpStatus.CREATED);
//        } else {
//            // 已存在则不保存,返回 OK 表示成功但无新资源创建
//            return new ResponseEntity<>(HttpStatus.OK);
//        }
//
//    }
    @PutMapping("/customer/{order_id}")
    @ApiOperation("顾客点击订单,传回订单id,根据订单id更新一条留言")
    public ResponseEntity<Object> updateMessageOrderLeaveCustomer(@PathVariable("order_id") Integer id, @RequestBody MessageOrderLeave messageOrderLeave1) {
        // 根据 order_id 查找留言信息
        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
        // 如果留言信息不存在,返回 404 Not Found
        if (messageOrderLeave == null) {
            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
        }
        // 设置顾客评价内容
        if (messageOrderLeave1.getCustomerReview() != null && !messageOrderLeave1.getCustomerReview().trim().isEmpty()) {
            messageOrderLeave.setCustomerReview(messageOrderLeave1.getCustomerReview());
        } else {
            messageOrderLeave.setCustomerReview("用户未留言");
        }
        // 更新最后一次操作的时间
        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
        // 调用服务层更新数据
        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
        // 如果更新失败,返回 500 Internal Server Error
        if (!updated) {
            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
        }
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
    //商家对订单id进行回复
//    @PutMapping("/seller/{order_id}")
//    @ApiOperation("商家对订单id进行回复")
//    public ResponseEntity<Object> updateMessageOrderLeave(@PathVariable("order_id") Integer id, @RequestParam String sellerReply) {
//        // 检查 sellerReply 是否为空
//        if (sellerReply == null || sellerReply.trim().isEmpty()) {
//            return new ResponseEntity<>("sellerReply is required", HttpStatus.BAD_REQUEST);
//        }
//
//        // 根据 order_id 查找留言信息
//        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
//
//        // 如果没有找到对应的留言信息,返回 404 Not Found
//        if (messageOrderLeave == null) {
//            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
//        }
//
//        // 设置商家回复内容
//        messageOrderLeave.setSellerReply(sellerReply);
//        // 更新最后一次操作的时间
//        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
//
//        // 调用服务层更新数据
//        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
//
//        // 如果更新失败,返回 500 Internal Server Error
//        if (!updated) {
//            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
//        }
//
//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
//    }
    //商家对订单id进行回复 订单id必须唯一限制 否则会报错
    @PutMapping("/seller/{order_id}")
    @ApiOperation("商家对订单id进行回复")
    public ResponseEntity<Object> updateMessageOrderLeaveSeller(@PathVariable("order_id") Integer id, @RequestBody MessageOrderLeave messageOrderLeave1) {
        // 根据 order_id 查找留言信息
        MessageOrderLeave messageOrderLeave = messageOrderLeaveService.findByOrderId(id);
        // 如果没有找到对应的留言信息,返回 404 Not Found
        if (messageOrderLeave == null) {
            return new ResponseEntity<>("Message order leave not found for order ID: " + id, HttpStatus.NOT_FOUND);
        }
        // 设置商家回复内容
        messageOrderLeave.setSellerReply(messageOrderLeave1.getSellerReply());
        // 更新最后一次操作的时间
        messageOrderLeave.setCreateTime(new Timestamp(System.currentTimeMillis()));
        // 调用服务层更新数据
        boolean updated = messageOrderLeaveService.updateById(messageOrderLeave);
        // 如果更新失败,返回 500 Internal Server Error
        if (!updated) {
            return new ResponseEntity<>("Failed to update message order leave", HttpStatus.INTERNAL_SERVER_ERROR);
        }
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
}
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
New file
@@ -0,0 +1,108 @@
package com.oying.modules.message.rest;
import com.oying.annotation.Log;
import com.oying.modules.message.domain.MessageOrderSeller;
import com.oying.modules.message.domain.MessageOrderSeller;
import com.oying.modules.message.service.MessageOrderSellerService;
import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
import lombok.RequiredArgsConstructor;
import java.util.List;
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 李萌
* @date 2025-05-20
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "卖家端订单消息通知")
@RequestMapping("/api/message/messageOrderSeller")
public class MessageOrderSellerController {
    private final MessageOrderSellerService messageOrderSellerService;
//    @ApiOperation("导出数据")
//    @GetMapping(value = "/download")
//    @PreAuthorize("@el.check('messageOrderSeller:list')")
//    public void exportMessageOrderSeller(HttpServletResponse response, MessageOrderSellerQueryCriteria criteria) throws IOException {
//        messageOrderSellerService.download(messageOrderSellerService.queryAll(criteria), response);
//    }
    @GetMapping
    @ApiOperation("查询卖家端订单消息通知")
    @PreAuthorize("@el.check('messageOrderSeller:list')")
    public ResponseEntity<PageResult<MessageOrderSeller>> queryMessageOrderSeller(MessageOrderSellerQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(messageOrderSellerService.queryAll(criteria,page),HttpStatus.OK);
    }
//    @PostMapping
//    @Log("新增卖家端订单消息通知")
//    @ApiOperation("新增卖家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderSeller:add')")
//    public ResponseEntity<Object> createMessageOrderSeller(@Validated @RequestBody MessageOrderSeller resources){
//        messageOrderSellerService.create(resources);
//        return new ResponseEntity<>(HttpStatus.CREATED);
//    }
//
//    @PutMapping
//    @Log("修改卖家端订单消息通知")
//    @ApiOperation("修改卖家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderSeller:edit')")
//    public ResponseEntity<Object> updateMessageOrderSeller(@Validated @RequestBody MessageOrderSeller resources){
//        messageOrderSellerService.update(resources);
//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
//    }
//
//    @DeleteMapping
//    @Log("删除卖家端订单消息通知")
//    @ApiOperation("删除卖家端订单消息通知")
//    @PreAuthorize("@el.check('messageOrderSeller:del')")
//    public ResponseEntity<Object> deleteMessageOrderSeller(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
//        messageOrderSellerService.deleteAll(ids);
//        return new ResponseEntity<>(HttpStatus.OK);
//    }
    //订单状态变化通知
    @GetMapping("/status/{order_id}")
    @ApiOperation("查询一条订单状态变化通知")
    public ResponseEntity<String> getMessageOrderSeller(@PathVariable Integer order_id) {
        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
        String message = messageOrderSeller.getMessageType();
        return new ResponseEntity<>(message, HttpStatus.OK);
    }
    //订单送达通知
    @GetMapping("/deliver/{order_id}")
    @ApiOperation("查询一条订单送达通知")
    public ResponseEntity<String> getMessageOrderSellerDeliver(@PathVariable Integer order_id) {
        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
        String message = messageOrderSeller.getMessageType();
        //如果MessageType为订单送达,则返回message——content
        if (message.equals("买家下单")) {
            String messageContent = messageOrderSeller.getMessageContent();
            return new ResponseEntity<>(messageContent, HttpStatus.OK);
        }else{
            //返回没送达
            return new ResponseEntity<>("买家没下单", HttpStatus.OK);
        }
    }
    //实现点击跳转到订单详情
    @GetMapping("/link/{order_id}")
    @ApiOperation("点击跳转到订单详情")
    public ResponseEntity<String> getMessageOrderSellerLink(@PathVariable Integer order_id) {
        MessageOrderSeller messageOrderSeller = messageOrderSellerService.findByOrderId(order_id);
        String link = messageOrderSeller.getLink();
        return new ResponseEntity<>(link, HttpStatus.OK);
    }
}
oying-system/src/main/java/com/oying/modules/message/rest/MessageSystemController.java
New file
@@ -0,0 +1,105 @@
package com.oying.modules.message.rest;
import com.oying.annotation.Log;
import com.oying.modules.message.domain.MessageSystem;
import com.oying.modules.message.service.MessageSystemService;
import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
import lombok.RequiredArgsConstructor;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import org.springframework.format.annotation.DateTimeFormat;
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 李萌
 * @date 2025-05-20
 **/
@RestController
@RequiredArgsConstructor
@Api(tags = "消息_系统")
@RequestMapping("/api/message/messageSystem")
public class MessageSystemController {
    private final MessageSystemService messageSystemService;
//    @ApiOperation("导出数据")
//    @GetMapping(value = "/download")
//    @PreAuthorize("@el.check('messageSystem:list')")
//    public void exportMessageSystem(HttpServletResponse response, MessageSystemQueryCriteria criteria) throws IOException {
//        messageSystemService.download(messageSystemService.queryAll(criteria), response);
//    }
    @GetMapping
    @ApiOperation("查询消息_系统")
    @PreAuthorize("@el.check('messageSystem:list')")
    public ResponseEntity<PageResult<MessageSystem>> queryMessageSystem(MessageSystemQueryCriteria criteria){
        Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize());
        return new ResponseEntity<>(messageSystemService.queryAll(criteria,page),HttpStatus.OK);
    }
//    @PostMapping
//    @Log("新增消息_系统")
//    @ApiOperation("新增消息_系统")
//    @PreAuthorize("@el.check('messageSystem:add')")
//    public ResponseEntity<Object> createMessageSystem(@Validated @RequestBody MessageSystem resources){
//        messageSystemService.create(resources);
//        return new ResponseEntity<>(HttpStatus.CREATED);
//    }
//    @PutMapping
//    @Log("修改消息_系统")
//    @ApiOperation("修改消息_系统")
//    @PreAuthorize("@el.check('messageSystem:edit')")
//    public ResponseEntity<Object> updateMessageSystem(@Validated @RequestBody MessageSystem resources){
//        messageSystemService.update(resources);
//        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
//    }
//    @DeleteMapping
//    @Log("删除消息_系统")
//    @ApiOperation("删除消息_系统")
//    @PreAuthorize("@el.check('messageSystem:del')")
//    public ResponseEntity<Object> deleteMessageSystem(@ApiParam(value = "传ID数组[]") @RequestBody List<Integer> ids) {
//        messageSystemService.deleteAll(ids);
//        return new ResponseEntity<>(HttpStatus.OK);
//    }
    //查询一条系统消息
    @GetMapping("/{id}")
    @ApiOperation("查询一条系统消息")
    public ResponseEntity<MessageSystem> getMessageSystem(@PathVariable Integer id){
        MessageSystem messageSystem = messageSystemService.getById(id);
        return new ResponseEntity<>(messageSystem,HttpStatus.OK);
    }
    //插入一条系统消息 带两个参数start与end
    @PostMapping()
    @ApiOperation("插入一条系统消息")
    public ResponseEntity<Object> insertMessageSystem(
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
        // 创建 MessageSystem 对象
        MessageSystem messageSystem = new MessageSystem();
        messageSystem.setStartTime(new Timestamp(start.getTime()));
        messageSystem.setEndTime(new Timestamp(end.getTime()));
        // 调用服务层保存数据
        messageSystemService.save(messageSystem);
        return new ResponseEntity<>(HttpStatus.OK);
    }
}
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderBuyerService.java
New file
@@ -0,0 +1,63 @@
package com.oying.modules.message.service;
import com.oying.modules.message.domain.MessageOrderBuyer;
import com.oying.modules.message.domain.MessageOrderLeave;
import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
import java.util.Map;
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 李萌
* @date 2025-05-20
**/
public interface MessageOrderBuyerService extends IService<MessageOrderBuyer> {
    /**
    * 查询数据分页
    * @param criteria 条件
    * @param page 分页参数
    * @return PageResult
    */
    PageResult<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria, Page<Object> page);
    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<MessageOrderBuyerDto>
    */
    List<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria);
    /**
    * 创建
    * @param resources /
    */
    void create(MessageOrderBuyer resources);
    /**
    * 编辑
    * @param resources /
    */
    void update(MessageOrderBuyer resources);
    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(List<Integer> ids);
    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<MessageOrderBuyer> all, HttpServletResponse response) throws IOException;
    public MessageOrderBuyer findByOrderId(Integer orderId) ;
}
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderLeaveService.java
New file
@@ -0,0 +1,69 @@
package com.oying.modules.message.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.modules.message.domain.MessageOrderLeave;
import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
import java.util.Map;
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 李萌
* @date 2025-05-20
**/
public interface MessageOrderLeaveService extends IService<MessageOrderLeave> {
    /**
    * 查询数据分页
    * @param criteria 条件
    * @param page 分页参数
    * @return PageResult
    */
    PageResult<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria, Page<Object> page);
    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<MessageOrderLeaveDto>
    */
    List<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria);
    /**
    * 创建
    * @param resources /
    */
    void create(MessageOrderLeave resources);
    /**
    * 编辑
    * @param resources /
    */
//    void update(MessageOrderLeave resources);
    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(List<Integer> ids);
    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<MessageOrderLeave> all, HttpServletResponse response) throws IOException;
    /**
     * 根据订单ID查找留言信息
     * @param orderId 订单ID
     * @return 匹配的留言记录,若不存在则返回 null
     */
    public MessageOrderLeave findByOrderId(Integer orderId) ;
}
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
New file
@@ -0,0 +1,62 @@
package com.oying.modules.message.service;
import com.oying.modules.message.domain.MessageOrderBuyer;
import com.oying.modules.message.domain.MessageOrderSeller;
import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
import java.util.Map;
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 李萌
* @date 2025-05-20
**/
public interface MessageOrderSellerService extends IService<MessageOrderSeller> {
    /**
    * 查询数据分页
    * @param criteria 条件
    * @param page 分页参数
    * @return PageResult
    */
    PageResult<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria, Page<Object> page);
    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<MessageOrderSellerDto>
    */
    List<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria);
    /**
    * 创建
    * @param resources /
    */
    void create(MessageOrderSeller resources);
    /**
    * 编辑
    * @param resources /
    */
    void update(MessageOrderSeller resources);
    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(List<Integer> ids);
    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<MessageOrderSeller> all, HttpServletResponse response) throws IOException;
    public MessageOrderSeller findByOrderId(Integer orderId) ;
}
oying-system/src/main/java/com/oying/modules/message/service/MessageSystemService.java
New file
@@ -0,0 +1,64 @@
package com.oying.modules.message.service;
import com.oying.modules.message.domain.MessageSystem;
import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
import java.util.Date;
import java.util.Map;
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 李萌
 * @date 2025-05-20
 **/
public interface MessageSystemService extends IService<MessageSystem> {
    /**
     * 查询数据分页
     * @param criteria 条件
     * @param page 分页参数
     * @return PageResult
     */
    PageResult<MessageSystem> queryAll(MessageSystemQueryCriteria criteria, Page<Object> page);
    /**
     * 查询所有数据不分页
     * @param criteria 条件参数
     * @return List<MessageSystemDto>
     */
    List<MessageSystem> queryAll(MessageSystemQueryCriteria criteria);
    /**
     * 创建
     * @param resources /
     */
    void create(MessageSystem resources);
    /**
     * 编辑
     * @param resources /
     */
    void update(MessageSystem resources);
    /**
     * 多选删除
     * @param ids /
     */
    void deleteAll(List<Integer> ids);
    /**
     * 导出数据
     * @param all 待导出的数据
     * @param response /
     * @throws IOException /
     */
    void download(List<MessageSystem> all, HttpServletResponse response) throws IOException;
}
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderBuyerServiceImpl.java
New file
@@ -0,0 +1,83 @@
package com.oying.modules.message.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.modules.message.domain.MessageOrderBuyer;
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.message.service.MessageOrderBuyerService;
import com.oying.modules.message.domain.dto.MessageOrderBuyerQueryCriteria;
import com.oying.modules.message.mapper.MessageOrderBuyerMapper;
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 李萌
* @date 2025-05-20
**/
@Service
@RequiredArgsConstructor
public class MessageOrderBuyerServiceImpl extends ServiceImpl<MessageOrderBuyerMapper, MessageOrderBuyer> implements MessageOrderBuyerService {
    private final MessageOrderBuyerMapper messageOrderBuyerMapper;
    @Override
    public PageResult<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria, Page<Object> page){
        return PageUtil.toPage(messageOrderBuyerMapper.findAll(criteria, page));
    }
    @Override
    public List<MessageOrderBuyer> queryAll(MessageOrderBuyerQueryCriteria criteria){
        return messageOrderBuyerMapper.findAll(criteria);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(MessageOrderBuyer resources) {
        messageOrderBuyerMapper.insert(resources);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(MessageOrderBuyer resources) {
        MessageOrderBuyer messageOrderBuyer = getById(resources.getId());
        messageOrderBuyer.copy(resources);
        messageOrderBuyerMapper.updateById(messageOrderBuyer);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Integer> ids) {
        messageOrderBuyerMapper.deleteBatchIds(ids);
    }
    @Override
    public void download(List<MessageOrderBuyer> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (MessageOrderBuyer messageOrderBuyer : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("订单ID", messageOrderBuyer.getOrderId());
            map.put("消息类型(订单状态变化、订单送达)", messageOrderBuyer.getMessageType());
            map.put("消息内容", messageOrderBuyer.getMessageContent());
            map.put("跳转链接", messageOrderBuyer.getLink());
            map.put("创建时间", messageOrderBuyer.getCreateTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
    @Override
    public MessageOrderBuyer findByOrderId(Integer orderId) {
        return baseMapper.selectOne(new QueryWrapper<MessageOrderBuyer>().eq("order_id", orderId));
    }
}
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderLeaveServiceImpl.java
New file
@@ -0,0 +1,89 @@
package com.oying.modules.message.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.modules.message.domain.MessageOrderLeave;
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.message.service.MessageOrderLeaveService;
import com.oying.modules.message.domain.dto.MessageOrderLeaveQueryCriteria;
import com.oying.modules.message.mapper.MessageOrderLeaveMapper;
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 李萌
* @date 2025-05-20
**/
@Service
@RequiredArgsConstructor
public class MessageOrderLeaveServiceImpl extends ServiceImpl<MessageOrderLeaveMapper, MessageOrderLeave> implements MessageOrderLeaveService {
    private final MessageOrderLeaveMapper messageOrderLeaveMapper;
    @Override
    public PageResult<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria, Page<Object> page){
        return PageUtil.toPage(messageOrderLeaveMapper.findAll(criteria, page));
    }
    @Override
    public List<MessageOrderLeave> queryAll(MessageOrderLeaveQueryCriteria criteria){
        return messageOrderLeaveMapper.findAll(criteria);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(MessageOrderLeave resources) {
        messageOrderLeaveMapper.insert(resources);
    }
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public void update(MessageOrderLeave resources) {
//        MessageOrderLeave messageOrderLeave = getById(resources.getId());
//        messageOrderLeave.copy(resources);
//        messageOrderLeaveMapper.updateById(messageOrderLeave);
//    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Integer> ids) {
        messageOrderLeaveMapper.deleteBatchIds(ids);
    }
    @Override
    public void download(List<MessageOrderLeave> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (MessageOrderLeave messageOrderLeave : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("订单ID", messageOrderLeave.getOrderId());
            map.put("顾客评价内容", messageOrderLeave.getCustomerReview());
            map.put("商家回复内容", messageOrderLeave.getSellerReply());
            map.put("跳转链接", messageOrderLeave.getLink());
            map.put("创建时间", messageOrderLeave.getCreateTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
    /**
     * 根据订单ID查找留言信息
     * @param orderId 订单ID
     * @return 匹配的留言记录,若不存在则返回 null
     */
    public MessageOrderLeave findByOrderId(Integer orderId) {
        return baseMapper.selectOne(new QueryWrapper<MessageOrderLeave>()
                .eq("order_id", orderId));
    }
}
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
New file
@@ -0,0 +1,84 @@
package com.oying.modules.message.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.modules.message.domain.MessageOrderBuyer;
import com.oying.modules.message.domain.MessageOrderSeller;
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.message.service.MessageOrderSellerService;
import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria;
import com.oying.modules.message.mapper.MessageOrderSellerMapper;
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 李萌
* @date 2025-05-20
**/
@Service
@RequiredArgsConstructor
public class MessageOrderSellerServiceImpl extends ServiceImpl<MessageOrderSellerMapper, MessageOrderSeller> implements MessageOrderSellerService {
    private final MessageOrderSellerMapper messageOrderSellerMapper;
    @Override
    public PageResult<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria, Page<Object> page){
        return PageUtil.toPage(messageOrderSellerMapper.findAll(criteria, page));
    }
    @Override
    public List<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria){
        return messageOrderSellerMapper.findAll(criteria);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(MessageOrderSeller resources) {
        messageOrderSellerMapper.insert(resources);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(MessageOrderSeller resources) {
        MessageOrderSeller messageOrderSeller = getById(resources.getId());
        messageOrderSeller.copy(resources);
        messageOrderSellerMapper.updateById(messageOrderSeller);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Integer> ids) {
        messageOrderSellerMapper.deleteBatchIds(ids);
    }
    @Override
    public void download(List<MessageOrderSeller> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (MessageOrderSeller messageOrderSeller : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put(" orderId",  messageOrderSeller.getOrderId());
            map.put(" messageType",  messageOrderSeller.getMessageType());
            map.put(" messageContent",  messageOrderSeller.getMessageContent());
            map.put(" link",  messageOrderSeller.getLink());
            map.put(" createTime",  messageOrderSeller.getCreateTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
    @Override
    public MessageOrderSeller findByOrderId(Integer orderId) {
        return baseMapper.selectOne(new QueryWrapper<MessageOrderSeller>().eq("order_id", orderId));
    }
}
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageSystemServiceImpl.java
New file
@@ -0,0 +1,79 @@
package com.oying.modules.message.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.oying.modules.message.domain.MessageOrderLeave;
import com.oying.modules.message.domain.MessageSystem;
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.message.service.MessageSystemService;
import com.oying.modules.message.domain.dto.MessageSystemQueryCriteria;
import com.oying.modules.message.mapper.MessageSystemMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.oying.utils.PageUtil;
import java.util.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.oying.utils.PageResult;
/**
 * @description 服务实现
 * @author 李萌
 * @date 2025-05-20
 **/
@Service
@RequiredArgsConstructor
public class MessageSystemServiceImpl extends ServiceImpl<MessageSystemMapper, MessageSystem> implements MessageSystemService {
    private final MessageSystemMapper messageSystemMapper;
    @Override
    public PageResult<MessageSystem> queryAll(MessageSystemQueryCriteria criteria, Page<Object> page){
        return PageUtil.toPage(messageSystemMapper.findAll(criteria, page));
    }
    @Override
    public List<MessageSystem> queryAll(MessageSystemQueryCriteria criteria){
        return messageSystemMapper.findAll(criteria);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(MessageSystem resources) {
        messageSystemMapper.insert(resources);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(MessageSystem resources) {
        MessageSystem messageSystem = getById(resources.getId());
        messageSystem.copy(resources);
        messageSystemMapper.updateById(messageSystem);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Integer> ids) {
        messageSystemMapper.deleteBatchIds(ids);
    }
    @Override
    public void download(List<MessageSystem> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (MessageSystem messageSystem : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("系统维护开始时间", messageSystem.getStartTime());
            map.put("系统维护截至时间", messageSystem.getEndTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
}
oying-system/src/main/resources/mapper/message/MessageOrderBuyerMapper.xml
New file
@@ -0,0 +1,25 @@
<?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.message.mapper.MessageOrderBuyerMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderBuyer">
        <id column="id" property="id"/>
        <result column="order_id" property="orderId"/>
        <result column="message_type" property="messageType"/>
        <result column="message_content" property="messageContent"/>
        <result column="link" property="link"/>
        <result column="create_time" property="createTime"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, order_id, message_type, message_content, link, create_time
    </sql>
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from message_order_buyer
        <where>
        </where>
        order by id desc
    </select>
</mapper>
oying-system/src/main/resources/mapper/message/MessageOrderLeaveMapper.xml
New file
@@ -0,0 +1,25 @@
<?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.message.mapper.MessageOrderLeaveMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderLeave">
        <id column="id" property="id"/>
        <result column="order_id" property="orderId"/>
        <result column="customer_review" property="customerReview"/>
        <result column="seller_reply" property="sellerReply"/>
        <result column="link" property="link"/>
        <result column="create_time" property="createTime"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, order_id, customer_review, seller_reply, link, create_time
    </sql>
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from message_order_leave
        <where>
        </where>
        order by id desc
    </select>
</mapper>
oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
New file
@@ -0,0 +1,25 @@
<?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.message.mapper.MessageOrderSellerMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageOrderSeller">
        <id column="id" property="id"/>
        <result column="order_id" property="orderId"/>
        <result column="message_type" property="messageType"/>
        <result column="message_content" property="messageContent"/>
        <result column="link" property="link"/>
        <result column="create_time" property="createTime"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, order_id, message_type, message_content, link, create_time
    </sql>
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from message_order_seller
        <where>
        </where>
        order by id desc
    </select>
</mapper>
oying-system/src/main/resources/mapper/message/MessageSystemMapper.xml
New file
@@ -0,0 +1,22 @@
<?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.message.mapper.MessageSystemMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.message.domain.MessageSystem">
        <id column="id" property="id"/>
        <result column="start_time" property="startTime"/>
        <result column="end_time" property="endTime"/>
    </resultMap>
    <sql id="Base_Column_List">
        id, start_time, end_time
    </sql>
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from message_system
        <where>
        </where>
        order by id desc
    </select>
</mapper>