Просмотр исходного кода

门店列表打烊门店全局沉底排序(getstorelist按营业状态优先于距离排序)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
qmj 1 день назад
Родитель
Сommit
930e6787cc

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/system/mapper/PosStoreMapper.java

@@ -17,12 +17,12 @@ import java.util.List;
  */
 public interface PosStoreMapper extends BaseMapper<PosStore>
 {
-    //按照距离查询推荐商家
-    @Select("SELECT *,(st_distance(point(longitude,latitude),point(#{longitude},#{latitude}))*111195/1000 ) as juli,(SELECT del_flag FROM info_user WHERE info_user.user_id = pos_store.user_id) as xxzt FROM pos_store WHERE del_flag='0' and off_shelf='0' and area like #{area}  HAVING xxzt=0 ORDER BY juli ASC limit #{page},20")  //查询语句
+    //按照距离查询推荐商家(dayang=打烊标记:state=1 或当前不在营业时段;打烊门店全局沉底,同组内按距离升序)
+    @Select("SELECT *,(st_distance(point(longitude,latitude),point(#{longitude},#{latitude}))*111195/1000 ) as juli,(SELECT del_flag FROM info_user WHERE info_user.user_id = pos_store.user_id) as xxzt,(CASE WHEN pos_store.state = 1 THEN 1 WHEN EXISTS (SELECT 1 FROM operating_hours oh WHERE oh.md_id = pos_store.id AND oh.day_of_week = WEEKDAY(CURDATE()) + 1 AND oh.is_open = 1 AND TIME(oh.start_time) <= CURTIME() AND CURTIME() <= TIME(oh.end_time)) THEN 0 ELSE 1 END) as dayang FROM pos_store WHERE del_flag='0' and off_shelf='0' and area like #{area}  HAVING xxzt=0 ORDER BY dayang ASC, juli ASC limit #{page},20")  //查询语句
     List<PosStore> getmdlist(@Param("longitude")BigDecimal longitude, @Param("latitude")BigDecimal latitude,@Param("page")Integer page,@Param("area")String area,@Param("juli")Integer juli);  //反回结果
 
     //按照分类距离查询分类商家
-    @Select("SELECT *,(st_distance(point(longitude,latitude),point(#{longitude},#{latitude}))*111195/1000 ) as juli,(SELECT del_flag FROM info_user WHERE info_user.user_id = pos_store.user_id) as xxzt FROM pos_store WHERE del_flag='0' and off_shelf='0' and area like #{area} and FIND_IN_SET(#{sort},sort) > 0  HAVING xxzt=0 ORDER BY juli ASC limit #{page},20")  //查询语句
+    @Select("SELECT *,(st_distance(point(longitude,latitude),point(#{longitude},#{latitude}))*111195/1000 ) as juli,(SELECT del_flag FROM info_user WHERE info_user.user_id = pos_store.user_id) as xxzt,(CASE WHEN pos_store.state = 1 THEN 1 WHEN EXISTS (SELECT 1 FROM operating_hours oh WHERE oh.md_id = pos_store.id AND oh.day_of_week = WEEKDAY(CURDATE()) + 1 AND oh.is_open = 1 AND TIME(oh.start_time) <= CURTIME() AND CURTIME() <= TIME(oh.end_time)) THEN 0 ELSE 1 END) as dayang FROM pos_store WHERE del_flag='0' and off_shelf='0' and area like #{area} and FIND_IN_SET(#{sort},sort) > 0  HAVING xxzt=0 ORDER BY dayang ASC, juli ASC limit #{page},20")  //查询语句
     List<PosStore> getdaidiq(@Param("longitude")BigDecimal longitude, @Param("latitude")BigDecimal latitude,@Param("page")Integer page,@Param("area")String area,@Param("juli")Integer juli,@Param("sort")Integer sort);  //反回结果