diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java index 1697f493..d8a0706c 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java @@ -34,7 +34,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.io.IOException; import java.io.InputStream; @@ -993,11 +992,11 @@ public class ProductModelController extends ControllerBase{ /** * 保存资料排序 - * @param ids 排序后的id列表 + * @param request 请求参数 */ @PostMapping("/saveFileSort") - public ApiResult saveFileSort(@Valid @RequestBody @NotEmpty List ids) { - productModelFileService.saveSort(ids); + public ApiResult saveFileSort(@Valid @RequestBody SortSaveRequest request) { + productModelFileService.saveSort(request); return ApiResult.success(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java index 3f7108f2..e5307452 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java @@ -41,7 +41,7 @@ public interface IProductModelFileService extends IService { List getListForSort(Integer modelId); - void saveSort(List ids); + void saveSort(SortSaveRequest request); void copyItems(Integer oldId, Integer newId); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java index d9e342c8..9812e739 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java @@ -7,6 +7,8 @@ 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.nflg.mobilebroken.common.constant.PublishState; +import com.nflg.mobilebroken.common.constant.STATE; +import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.vo.FileDefaultConfigItemVO; import com.nflg.mobilebroken.common.pojo.vo.FileDefaultConfigVO; @@ -203,13 +205,22 @@ public class ProductModelFileServiceImpl extends ServiceImpl ids) { - List datas = new ArrayList<>(); - for (int i = 0; i < ids.size(); i++) { - datas.add(new ProductModelFile() - .setId(ids.get(i)) - .setSort(i + 1) - ); + public void saveSort(SortSaveRequest request) { + List datas = lambdaQuery() + .select(ProductModelFile::getId, ProductModelFile::getSort) + .in(ProductModelFile::getId, request.getId(), request.getPreviousId(), request.getNextId()) + .list(); + ProductModelFile current = datas.stream().filter(data -> data.getId().equals(request.getId())).findFirst().orElseThrow( + () -> new NflgException(STATE.BusinessError, "无效的数据") + ); + ProductModelFile previous = datas.stream().filter(data -> data.getId().equals(request.getPreviousId())).findFirst().orElse(null); + ProductModelFile next = datas.stream().filter(data -> data.getId().equals(request.getNextId())).findFirst().orElse(null); + if (Objects.isNull(previous)) { + current.setSort(next.getSort() / 2); + } else if (Objects.isNull(next)) { + current.setSort(previous.getSort() * 2); + } else { + current.setSort((previous.getSort() + next.getSort()) / 2); } updateBatchById(datas); }