.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>