From 67bc9382c5c15799ed7936af325736bc9b32dc82 Mon Sep 17 00:00:00 2001 From: Timi Date: Fri, 7 Aug 2026 11:49:17 +0800 Subject: [PATCH] add store sort api --- .../gao/controller/GaoStoreController.java | 9 +++++++ .../modules/gao/mapper/GaoStoreMapper.java | 5 ++++ .../modules/gao/service/GaoStoreService.java | 6 +++++ .../implement/GaoStoreServiceImplement.java | 26 ++++++++++++++++++- .../mapper/timi-server/GaoStoreMapper.xml | 17 ++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoStoreController.java b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoStoreController.java index 86f6229..008bc8b 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoStoreController.java +++ b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoStoreController.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; +import java.util.List; /// GAO 门店接口 /// @@ -80,6 +81,14 @@ public class GaoStoreController { service.delete(id); } + @AOPLog + @RequestRateLimit + @RequireGaoPermission(GaoPermissionCode.STORE_UPDATE) + @PostMapping("/sort") + public void sort(@RequestBody List idList) { + service.sort(idList); + } + @AOPLog @RequestRateLimit @IgnoreGlobalReturn diff --git a/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoStoreMapper.java b/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoStoreMapper.java index 36eaf89..0dcb790 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoStoreMapper.java +++ b/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoStoreMapper.java @@ -4,6 +4,9 @@ import com.imyeyu.api.modules.gao.entity.GaoStore; import com.imyeyu.spring.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.Collection; +import java.util.List; + /// /// GAO 门店 Mapper /// @@ -11,6 +14,8 @@ import org.apache.ibatis.annotations.Param; /// @since 2026-08-06 public interface GaoStoreMapper extends BaseMapper { + List selectByIdList(@Param("idList") Collection idList); + /// 查询用户所属的可用门店 /// /// @param userId 用户 ID diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/GaoStoreService.java b/src/main/java/com/imyeyu/api/modules/gao/service/GaoStoreService.java index 5036e71..3529698 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/GaoStoreService.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/GaoStoreService.java @@ -5,6 +5,7 @@ import com.imyeyu.spring.bean.Page; import com.imyeyu.spring.service.BaseService; import java.io.IOException; +import java.util.List; /// /// GAO 门店服务 @@ -24,4 +25,9 @@ public interface GaoStoreService extends BaseService { /// @param page 分页查询条件 /// @return xlsx 文件字节 byte[] export(Page page) throws IOException; + + /// 按客户端提交的顺序更新排序 + /// + /// @param idList 门店 ID 列表 + void sort(List idList); } diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoStoreServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoStoreServiceImplement.java index 9d66219..ca70e60 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoStoreServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoStoreServiceImplement.java @@ -1,6 +1,7 @@ package com.imyeyu.api.modules.gao.service.implement; import com.fasterxml.jackson.databind.ObjectMapper; +import com.imyeyu.api.config.dbsource.TimiServerDBConfig; import com.imyeyu.api.modules.gao.entity.GaoStore; import com.imyeyu.api.modules.gao.mapper.GaoStoreMapper; import com.imyeyu.api.modules.gao.service.GaoStoreService; @@ -16,9 +17,14 @@ import com.imyeyu.spring.service.AbstractEntityService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.io.IOException; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /// /// GAO 门店服务实现 @@ -89,7 +95,6 @@ public class GaoStoreServiceImplement extends AbstractEntityService idList) { + if (TimiJava.isEmpty(idList)) { + return; + } + + List storeList = mapper.selectByIdList(new LinkedHashSet<>(idList)); + Map storeMap = storeList.stream().collect(Collectors.toMap(GaoStore::getId, Function.identity())); + for (int i = 0; i < idList.size(); i++) { + GaoStore store = storeMap.get(idList.get(i)); + if (store == null) { + continue; + } + store.setSort(i); + mapper.update(store); + } + } + private void checkUnique(GaoStore store) { GaoStore codeExample = new GaoStore(); codeExample.setCode(store.getCode()); diff --git a/src/main/resources/mapper/timi-server/GaoStoreMapper.xml b/src/main/resources/mapper/timi-server/GaoStoreMapper.xml index b30c92e..1bf3891 100644 --- a/src/main/resources/mapper/timi-server/GaoStoreMapper.xml +++ b/src/main/resources/mapper/timi-server/GaoStoreMapper.xml @@ -1,6 +1,23 @@ +