Sfoglia il codice sorgente

fix 服务端车位排序

zoujiajian 3 anni fa
parent
commit
b5538a824b

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GroupsMapper.java

@@ -2,6 +2,7 @@ package com.cyksj.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.GroupsTrips;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
 /**
@@ -14,4 +15,10 @@ public interface GroupsMapper extends BaseMapper<GroupsTrips> {
 
     @Update("update groups_trips set available_num = available_num + 1 where id = #{groupId} and available_num < num")
     int incrAvailableNum(Long groupId);
+
+    @Update("update groups_trips set is_full_seat = true where id = #{id} and available_num = 0")
+    void tripsFullSeat(@Param("id") Long id);
+
+    @Update("update groups_trips set is_full_seat = false where id = #{id} and available_num > 0")
+    void tripsNoFullSeat(@Param("id") Long id);
 }

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GroupsTrips.java

@@ -89,6 +89,12 @@ public class GroupsTrips {
     @DbField("gt.available_num")
     private Integer availableNum;
 
+    /**
+     * 满座标识,true满座
+     */
+    @DbField("gt.is_full_seat")
+    private Boolean isFullSeat;
+
     /**
      * 状态
      */

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GroupsView.java

@@ -36,6 +36,9 @@ public class GroupsView {
     @DbField("g.available_num")
     private Integer availableNum;
 
+    @DbField("g.is_full_seat")
+    private Boolean isFullSeat;
+
     /**
      * 状态
      */

+ 8 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -785,6 +785,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				log.error("车位异常 groupId:{}", relation.getGroupsId());
 				throw new BusinessRuntimeException("车位异常");
 			}
+			GroupsTrips groupsTrips = groupsMapper.selectOne(Wrappers.lambdaQuery(GroupsTrips.class).eq(GroupsTrips::getId, relation.getGroupsId()).last("limit 1"));
+			if (groupsTrips.getAvailableNum() == 0) {
+				groupsMapper.tripsFullSeat(groupsTrips.getId());
+			}
 		}
 	}
 
@@ -796,6 +800,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			log.error("车位异常 groupId:{}", relation.getGroupsId());
 			throw new BusinessRuntimeException("车位异常");
 		}
+		GroupsTrips groupsTrips = groupsMapper.selectOne(Wrappers.lambdaQuery(GroupsTrips.class).eq(GroupsTrips::getId, relation.getGroupsId()).last("limit 1"));
+		if (groupsTrips.getIsFullSeat()) {
+			groupsMapper.tripsNoFullSeat(groupsTrips.getId());
+		}
 	}
 
 	public void saveTransport(Long addressId, Long orderId) {

+ 2 - 1
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupController.java

@@ -32,7 +32,8 @@ public class GroupController {
     @GetMapping("/get")
     public Result<SearchResult<GroupsView>> get(){
         SearchResult<GroupsView> search = beanSearcher.search(GroupsView.class, MapUtils.flatBuilder(request.getParameterMap())
-                .orderBy(GroupsView::getAvailableNum).desc()
+                .orderBy(GroupsView::getIsFullSeat).asc()
+                .orderBy(GroupsView::getAvailableNum).asc()
                 .orderBy(GroupsView::getId).desc().build()
         );
         search.getDataList().forEach((groupsView)->{