Ver código fonte

用户端近期下单接口开发

wangzhijun 1 semana atrás
pai
commit
0485cdaa6e

+ 13 - 5
nightFragrance-massage/src/main/java/com/ylx/order/controller/CustomerOrderController.java

@@ -5,6 +5,7 @@ import com.ylx.common.core.domain.R;
 import com.ylx.order.domain.dto.*;
 import com.ylx.order.domain.vo.OrderDateQueryVo;
 import com.ylx.order.domain.vo.OrderDetailVO;
+import com.ylx.order.domain.vo.RecentMerchantVO;
 import com.ylx.order.service.TOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,14 +38,14 @@ public class CustomerOrderController {
     @ApiOperation("根据日期范围等条件查询订单")
     @PostMapping("/queryByDate")
     public R<Page<OrderDateQueryVo>> queryOrderByDate(@Validated @RequestBody OrderDateQueryDTO dto) {
-        Page<OrderDateQueryVo> page = orderService.queryOrderList(dto);
+        Page<OrderDateQueryVo> page = this.orderService.queryOrderList(dto);
         return R.ok(page);
     }
 
     @ApiOperation("逻辑删除订单(移入回收站)")
     @PostMapping("/delete")
     public R<?> deleteOrder(@Validated @RequestBody OrderDeleteDTO dto) {
-        orderService.logicDeleteOrder(dto.getId());
+        this.orderService.logicDeleteOrder(dto.getId());
         return R.ok("删除成功");
     }
 
@@ -53,22 +54,29 @@ public class CustomerOrderController {
     @GetMapping("/detail/{orderId}")
     public R<OrderDetailVO> getOrderDetailById(
             @PathVariable @ApiParam(value = "订单ID", required = true, example = "1") Long orderId) {
-        return R.ok(orderService.getOrderDetailById(orderId));
+        return R.ok(this.orderService.getOrderDetailById(orderId));
     }
 
     @ApiOperation("用户取消订单")
     @PostMapping("/cancel")
     public R<?> cancelOrder(@RequestBody @Validated OrderCancleDTO dto) {
         // 调用服务层取消订单,返回影响行数或订单信息
-        int result = orderService.cancelOrder(dto);
+        int result = this.orderService.cancelOrder(dto);
         return result > 0 ? R.ok("订单已取消") : R.fail("订单取消失败");
     }
 
     @ApiOperation("客户端是否可以预约当前时段")
     @PostMapping("/booking/check")
     public R<Boolean> bookingCheck(@RequestBody @Validated BookingCheckDTO dto) {
-        Boolean result = orderService.bookingCheck(dto);
+        Boolean result = this.orderService.bookingCheck(dto);
         return R.ok(result);
     }
 
+    @ApiOperation("获取近期下单商户列表")
+    @PostMapping("/recent/merchants")
+    public R<Page<RecentMerchantVO>> getRecentMerchants(@RequestBody RecentOrderQueryDTO dto) {
+        Page<RecentMerchantVO> pageData = this.orderService.getRecentMerchants(dto);
+        return R.ok(pageData);
+    }
+
 }

+ 21 - 0
nightFragrance-massage/src/main/java/com/ylx/order/domain/dto/RecentOrderQueryDTO.java

@@ -0,0 +1,21 @@
+package com.ylx.order.domain.dto;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.order.domain.vo.RecentMerchantVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("用户近期下单DTO")
+public class RecentOrderQueryDTO extends Page<RecentMerchantVO> {
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("近期的天数")
+    private Integer days;
+
+}

+ 20 - 0
nightFragrance-massage/src/main/java/com/ylx/order/domain/vo/RecentMerchantVO.java

@@ -0,0 +1,20 @@
+package com.ylx.order.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("最近下单的商户VO")
+public class RecentMerchantVO {
+
+    @ApiModelProperty("商户ID")
+    private Long merchantId;
+
+    @ApiModelProperty("商户昵称")
+    private String merchantNickName;
+
+    @ApiModelProperty("商户头像")
+    private String merchantAvatar;
+
+}

+ 6 - 2
nightFragrance-massage/src/main/java/com/ylx/order/mapper/TOrderMapper.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.massage.domain.vo.HomeBlock;
 import com.ylx.order.domain.TOrder;
 import com.ylx.order.domain.dto.OrderDateQueryDTO;
+import com.ylx.order.domain.dto.RecentOrderQueryDTO;
+import com.ylx.order.domain.vo.RecentMerchantVO;
 import com.ylx.order.domain.vo.merchant.OrderPageVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -25,7 +27,7 @@ import java.util.List;
 @Mapper
 public interface TOrderMapper extends BaseMapper<TOrder> {
 
-    Page<TOrder> getAll(Page<TOrder>page, @Param("param") TOrder param);
+    Page<TOrder> getAll(Page<TOrder> page, @Param("param") TOrder param);
 
     Integer getOrderNum(@Param("jsid") String jsid, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
@@ -38,7 +40,7 @@ public interface TOrderMapper extends BaseMapper<TOrder> {
     List<HomeBlock> getBlock(@Param("start") Date start, @Param("end") Date end, @Param("deptId") String deptId);
 
     //执行存储过程 大于48小时 订单状态更新为 已结算  自动分账  订单总金额*佣金比例划入用户余额
-    void callAutoAccount(@Param("hCount")int hCount, @Param("percent")BigDecimal percent);
+    void callAutoAccount(@Param("hCount") int hCount, @Param("percent") BigDecimal percent);
 
     List<TOrder> getAll(@Param("param") TOrder param);
 
@@ -55,4 +57,6 @@ public interface TOrderMapper extends BaseMapper<TOrder> {
                                                 @Param("merchantId") Long merchantId,
                                                 @Param("categoryId") Long categoryId,
                                                 @Param("currentTime") LocalDateTime currentTime);
+
+    Page<RecentMerchantVO> getRecentMerchants(Page<RecentMerchantVO> page, @Param("dto") RecentOrderQueryDTO dto);
 }

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/order/service/TOrderService.java

@@ -12,6 +12,7 @@ import com.ylx.massage.domain.vo.TechnicianAvailabilityVo;
 import com.ylx.order.domain.dto.*;
 import com.ylx.order.domain.vo.OrderDateQueryVo;
 import com.ylx.order.domain.vo.OrderDetailVO;
+import com.ylx.order.domain.vo.RecentMerchantVO;
 import com.ylx.order.domain.vo.merchant.MerchantCancelOrderDTO;
 import com.ylx.order.domain.vo.merchant.OrderCustomerPhoneVO;
 import com.ylx.order.domain.vo.merchant.OrderPageVO;
@@ -210,4 +211,6 @@ public interface TOrderService extends IService<TOrder> {
     void finishService(MerchantOrderOperateDTO dto);
 
     void merchantArriveSign(MerchantOrderOperateDTO dto);
+
+    Page<RecentMerchantVO> getRecentMerchants(RecentOrderQueryDTO dto);
 }

+ 16 - 0
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/TOrderServiceImpl.java

@@ -33,6 +33,7 @@ import com.ylx.order.domain.dto.*;
 import com.ylx.order.domain.vo.OrderDateQueryVo;
 import com.ylx.order.domain.vo.OrderDetailVO;
 import com.ylx.order.domain.vo.OrderStatusFlowVO;
+import com.ylx.order.domain.vo.RecentMerchantVO;
 import com.ylx.order.domain.vo.merchant.MerchantCancelOrderDTO;
 import com.ylx.order.domain.vo.merchant.OrderCustomerPhoneVO;
 import com.ylx.order.domain.vo.merchant.OrderPageVO;
@@ -1197,6 +1198,21 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         }
     }
 
+    @Override
+    public Page<RecentMerchantVO> getRecentMerchants(RecentOrderQueryDTO dto) {
+
+        // 1. 获取当前登录用户
+        WxLoginUser wxLoginUser = this.getCurrentWxLoginUser();
+        Long userId = Long.parseLong(wxLoginUser.getId());
+        dto.setUserId(userId);
+
+        // 2. 构建分页对象
+        Page<RecentMerchantVO> page = new Page<>(dto.getCurrent(), dto.getSize());
+        page = this.baseMapper.getRecentMerchants(page, dto);
+
+        return page;
+    }
+
     private void fillCurrentAfterSaleInfo(IAfterSaleDisplay vo, Long orderId) {
         LambdaQueryWrapper<AfterSalesService> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(AfterSalesService::getOrderId, orderId).orderByDesc(AfterSalesService::getCreateTime).last("LIMIT 1");

+ 16 - 0
nightFragrance-massage/src/main/resources/mapper/order/TOrderMapper.xml

@@ -415,5 +415,21 @@
         <!-- 排除当前时间,只查历史单 -->
         AND o.create_time &lt; #{currentTime}
     </select>
+    <select id="getRecentMerchants" resultType="com.ylx.order.domain.vo.RecentMerchantVO">
+        SELECT
+            merchant_id AS merchantId,
+            merchant_nick_name AS merchantNickName,
+            merchant_avatar AS merchantAvatar
+        FROM
+            t_order
+        WHERE
+            user_id = #{dto.userId}
+          AND is_delete = 0
+          AND completed_time >= DATE_SUB(NOW(), INTERVAL #{dto.days} DAY)
+        GROUP BY
+            merchant_id, merchant_nick_name, merchant_avatar
+        ORDER BY
+            MAX(create_time) DESC
+    </select>
 
 </mapper>