Răsfoiți Sursa

商家端预约管理

liude 1 an în urmă
părinte
comite
dcef98d5e1

+ 11 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/ReservationClient.java

@@ -3,6 +3,7 @@ package com.chelvc.cloud.vehicle.client;
 import java.util.List;
 
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
+import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
@@ -87,4 +88,14 @@ public interface ReservationClient {
      */
     @GetMapping("/reservation/getDetail")
     ReservationDTO getDetail(@RequestParam("id") Long id);
+
+
+    /**
+     * 商家端分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    @GetMapping("/reservation/getMerchantList")
+    Pagination<MerchantReservationDTO> getMerchantReservationPaging(@SpringQueryMap ReservationPagingParam param);
 }

+ 2 - 1
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/dto/MerchantReservationDTO.java

@@ -8,6 +8,7 @@ import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 商家端预约记录信息
@@ -47,5 +48,5 @@ public class MerchantReservationDTO implements Serializable {
     /**
      *购买的商品详细
      */
-    private OrderItemDTO goodItem;
+    private List<OrderItemDTO> goodItem;
 }

+ 9 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/param/ReservationPagingParam.java

@@ -8,6 +8,7 @@ import lombok.experimental.SuperBuilder;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 预约信息参数
@@ -30,5 +31,13 @@ public class ReservationPagingParam implements Serializable {
      * 状态
      */
     private String status;
+    /**
+     * 预约时间
+     */
+    private Date date;
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
 
 }

+ 14 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/ReservationController.java

@@ -3,6 +3,7 @@ package com.chelvc.cloud.vehicle.server.controller;
 import java.util.List;
 
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
+import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
@@ -107,4 +108,17 @@ public class ReservationController {
     public ReservationDTO getDetail(@RequestParam("id") Long id) {
         return reservationService.getDetail(id);
     }
+
+
+
+    /**
+     * 商家端分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    @GetMapping("/reservation/getMerchantList")
+    public Pagination<MerchantReservationDTO> getMerchantReservationPaging(ReservationPagingParam param) {
+        return reservationService.getMerchantReservationPaging(param);
+    }
 }

+ 20 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/ReservationMapper.java

@@ -1,6 +1,11 @@
 package com.chelvc.cloud.vehicle.server.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
+import com.chelvc.cloud.vehicle.client.dto.OrderItemDTO;
+import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
 import com.chelvc.cloud.vehicle.server.entity.Reservation;
 import org.apache.ibatis.annotations.Mapper;
@@ -31,4 +36,19 @@ public interface ReservationMapper extends BaseMapper<Reservation> {
      */
     void updateReservationsStatus(@Param("id")Long id,@Param("status")String status);
 
+    /**
+     * 分页查询商家端预约信息
+     * @param page 分页信息
+     * @param param 参数
+     * @return
+     */
+    Page<MerchantReservationDTO> getMerchantReservationPaging(IPage<ReservationPagingParam> page, @Param("param")ReservationPagingParam param);
+
+    /**
+     * 查询预约的商品列表
+     * @param orderId 订单 id
+     * @return
+     */
+    List<OrderItemDTO> getReservationRetail(Long orderId);
+
 }

+ 13 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/ReservationService.java

@@ -2,6 +2,7 @@ package com.chelvc.cloud.vehicle.server.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
+import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
@@ -72,4 +73,16 @@ public interface ReservationService extends IService<Reservation> {
     ReservationDTO getDetail(Long id);
 
 
+
+    /**
+     * 商家端分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    Pagination<MerchantReservationDTO> getMerchantReservationPaging(ReservationPagingParam param);
+
+
+
+
 }

+ 10 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantAuthServiceImpl.java

@@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.user.client.UserClient;
 import com.chelvc.cloud.user.client.model.Scope;
 import com.chelvc.cloud.vehicle.client.dto.MerchantAuthDTO;
+import com.chelvc.cloud.vehicle.client.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.client.param.MerchantAuthModifyParam;
 import com.chelvc.cloud.vehicle.client.param.MerchantAuthPagingParam;
 import com.chelvc.cloud.vehicle.client.param.MerchantModifyParam;
 import com.chelvc.cloud.vehicle.server.copier.MerchantAuthCopier;
 import com.chelvc.cloud.vehicle.server.dao.MerchantAuthMapper;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.MerchantAuth;
 import com.chelvc.cloud.vehicle.server.service.MerchantAuthService;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
@@ -20,6 +22,7 @@ import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -67,7 +70,13 @@ public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, Mer
         param1.setMainBusiness(param.getMainBusiness());
         param1.setAncillaryBusiness(param.getAncillaryBusiness());
         param1.setBanners(param.getStoreInnerImage());
-        this.merchantService.addMerchant(param1);
+        MerchantDTO merchant = this.merchantService.getMerchantByUserId(userId);
+        if (ObjectUtils.isEmpty(merchant)){
+            this.merchantService.addMerchant(param1);
+        }else{
+            this.merchantService.updateMerchant(merchant.getId(),param1);
+        }
+
         return merchantAuth.getId();
     }
 

+ 17 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java

@@ -1,5 +1,6 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.user.client.UserClient;
@@ -7,7 +8,9 @@ import com.chelvc.cloud.user.client.dto.UserDTO;
 import com.chelvc.cloud.user.client.model.Scope;
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.client.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
+import com.chelvc.cloud.vehicle.client.param.LocationQueryPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
@@ -163,4 +166,18 @@ public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reser
         }
         return reservationDTO;
     }
+
+    public Pagination<MerchantReservationDTO> getMerchantReservationPaging(ReservationPagingParam param){
+        IPage<ReservationPagingParam> iPage = new Page<>();
+        iPage.setCurrent(param.getPaging().getNumber());
+        iPage.setSize(param.getPaging().getSize());
+        Page<MerchantReservationDTO> list = this.baseMapper.getMerchantReservationPaging(iPage,param);
+        if (CollectionUtils.isEmpty(list.getRecords())){
+            return DatabaseContextHolder.pagination(list);
+        }
+        list.getRecords().forEach(item ->{
+            item.setGoodItem(this.baseMapper.getReservationRetail(item.getOrderId()));
+        });
+        return DatabaseContextHolder.pagination(list);
+    }
 }

+ 55 - 0
vehicle-server/src/main/resources/mapper/ReservationMapper.xml

@@ -27,6 +27,22 @@
         </association>
     </resultMap>
 
+
+    <resultMap id="RESULT_MAP" type="com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="appoint_time" property="appointTime" jdbcType="TIMESTAMP"/>
+        <result column="status" property="status" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="order_id" property="orderId" jdbcType="BIGINT"/>
+        <association property="goodItem" javaType="com.chelvc.cloud.vehicle.client.dto.OrderItemDTO">
+            <result column="goods_id" property="goodsId" jdbcType="BIGINT"/>
+            <result column="goods_name" property="goodsName" jdbcType="VARCHAR"/>
+            <result column="goods_pic" property="goodsPic" jdbcType="VARCHAR"/>
+            <result column="goods_quantity" property="goodsQuantity" jdbcType="INTEGER"/>
+            <result column="goods_price" property="goodsPrice" jdbcType="DOUBLE"/>
+        </association>
+    </resultMap>
+
     <select id="listUserReservations" resultMap="RESERVATION_RESULT_MAP">
         select rn.id,rn.user_id,rn.merchant_id,rn.mobile,rn.appoint_time,rn.status, mt.name, mt.logo, mt.score,
         mt.sale, mt.address,rn.goods_id,rn.goods_name,rn.order_id
@@ -46,4 +62,43 @@
     <update id="updateReservationsStatus">
         update reservation set status = #{status} where id = #{id}
     </update>
+
+
+    <select id="getMerchantReservationPaging" resultMap="RESULT_MAP">
+        SELECT
+        re.id,
+        od.id order_id,
+        re.create_time,
+        re.appoint_time,
+        od.pay_amount,
+        re.status
+        FROM
+        reservation re
+        LEFT JOIN oms_order od ON re.order_id = od.id
+        WHERE 1 = 1
+        <if test="param.merchantId != null">
+           and re.merchant_id = #{param.merchantId}
+        </if>
+        <if test="param.status != null">
+            and re.status = #{param.status}
+        </if>
+        order by re.appoint_time asc
+    </select>
+
+
+    <select id="getReservationRetail" resultType="com.chelvc.cloud.vehicle.client.dto.OrderItemDTO">
+        SELECT
+            goods_id,
+            goods_pic,
+            goods_name,
+            goods_price,
+            goods_quantity
+        FROM
+            oms_order_item
+        WHERE
+            order_id = #{orderId}
+    </select>
+
+
+
 </mapper>