diff --git a/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java index 9d2ba5d5..49a003cb 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/common/service/impl/BaseServiceImpl.java @@ -1,6 +1,7 @@ package xiaozhi.common.service.impl; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -18,6 +19,7 @@ import com.baomidou.mybatisplus.core.enums.SqlMethod; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; import com.baomidou.mybatisplus.core.toolkit.StringUtils; @@ -92,6 +94,59 @@ public abstract class BaseServiceImpl, T> implements Bas return page; } + /** + * 获取分页对象 + * @see xiaozhi.common.constant.Constant + * params.put(Constant.PAGE, "1"); + * params.put(Constant.LIMIT, "10"); + * params.put(Constant.ORDER_FIELD, List.of("model_type", "sort")); + * params.put(Constant.ORDER, "asc"); + * + * @param params 分页查询参数 + */ + protected IPage getPage(Map params) { + // 分页参数 + long curPage = 1; + long limit = 10; + + if (params.get(Constant.PAGE) != null) { + curPage = Long.parseLong((String) params.get(Constant.PAGE)); + } + + if (params.get(Constant.LIMIT) != null) { + limit = Long.parseLong((String) params.get(Constant.LIMIT)); + } + + // 分页对象 + Page page = new Page<>(curPage, limit); + + // 分页参数 + params.put(Constant.PAGE, page); + + // 排序字段 + Object orderField = params.get(Constant.ORDER_FIELD); + + List orderFields = new ArrayList<>(); + + if (orderField instanceof String) { + orderFields.add((String) orderField); + } else if (orderField instanceof List) { + orderFields.addAll( (List) orderField); + } + String order = (String) params.get(Constant.ORDER); + + // 有排序字段则排序,默认降序 + if (CollectionUtils.isNotEmpty(orderFields)) { + if (StringUtils.isNotBlank(order) && Constant.ASC.equalsIgnoreCase(order)) { + return page.addOrder(OrderItem.ascs(orderFields.toArray(new String[orderFields.size()]))); + } else { + return page.addOrder(OrderItem.descs(orderFields.toArray(new String[orderFields.size()]))); + } + } + + return page; + } + protected PageData getPageData(List list, long total, Class target) { List targetList = ConvertUtils.sourceToTarget(list, target); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/controller/ModelProviderController.java b/main/manager-api/src/main/java/xiaozhi/modules/model/controller/ModelProviderController.java index b296c240..64e14cb3 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/controller/ModelProviderController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/controller/ModelProviderController.java @@ -1,11 +1,21 @@ package xiaozhi.modules.model.controller; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.AllArgsConstructor; +import java.util.List; + import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; import xiaozhi.common.annotation.UpdateGroup; import xiaozhi.common.page.PageData; import xiaozhi.common.utils.Result; @@ -31,7 +41,7 @@ public class ModelProviderController { } @PostMapping - @Operation(summary = "获取模型供应器列表") + @Operation(summary = "新增模型供应器") @RequiresPermissions("sys:role:superAdmin") public Result add(@RequestBody @Validated ModelProviderDTO modelProviderDTO) { ModelProviderDTO resp = modelProviderService.add(modelProviderDTO); @@ -39,18 +49,19 @@ public class ModelProviderController { } @PutMapping - @Operation(summary = "获取模型供应器列表") + @Operation(summary = "修改模型供应器") @RequiresPermissions("sys:role:superAdmin") public Result edit(@RequestBody @Validated(UpdateGroup.class) ModelProviderDTO modelProviderDTO) { ModelProviderDTO resp = modelProviderService.edit(modelProviderDTO); return new Result().ok(resp); } - @DeleteMapping("/{id}") - @Operation(summary = "获取模型供应器列表") + @PostMapping("/delete") + @Operation(summary = "删除模型供应器") @RequiresPermissions("sys:role:superAdmin") - public Result delete(@PathVariable String id) { - modelProviderService.delete(id); + @Parameter(name = "ids", description = "ID数组", required = true) + public Result delete(@RequestBody List ids) { + modelProviderService.delete(ids); return new Result<>(); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/entity/ModelProviderEntity.java b/main/manager-api/src/main/java/xiaozhi/modules/model/entity/ModelProviderEntity.java index 62e84f67..0509e09c 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/entity/ModelProviderEntity.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/entity/ModelProviderEntity.java @@ -30,7 +30,7 @@ public class ModelProviderEntity { private String name; @Schema(description = "供应器字段列表(JSON格式)") - @TableField(typeHandler = JacksonTypeHandler.class) +// @TableField(typeHandler = JacksonTypeHandler.class) private String fields; @Schema(description = "排序") diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/service/ModelProviderService.java b/main/manager-api/src/main/java/xiaozhi/modules/model/service/ModelProviderService.java index fbb009fd..d41766f6 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/service/ModelProviderService.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/service/ModelProviderService.java @@ -17,6 +17,8 @@ public interface ModelProviderService { void delete(String id); + void delete(List id); + PageData getListPage(ModelProviderDTO modelProviderDTO, String page, String limit); List getList(String modelType, String provideCode); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java index 90f69f32..3ea21367 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/model/service/impl/ModelProviderServiceImpl.java @@ -5,12 +5,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import cn.hutool.json.JSONArray; import lombok.AllArgsConstructor; import xiaozhi.common.constant.Constant; import xiaozhi.common.exception.RenException; @@ -41,49 +42,61 @@ public class ModelProviderServiceImpl extends BaseServiceImpl getListPage(ModelProviderDTO modelProviderEntity, String page, String limit) { + public PageData getListPage(ModelProviderDTO modelProviderDTO, String page, String limit) { Map params = new HashMap(); params.put(Constant.PAGE, page); params.put(Constant.LIMIT, limit); + params.put(Constant.ORDER_FIELD, List.of("model_type", "sort")); + params.put(Constant.ORDER, "asc"); - IPage pageParam = getPage(params, "model_type", true); + IPage pageParam = getPage(params); QueryWrapper wrapper = new QueryWrapper(); - if (StringUtils.isNotBlank(modelProviderEntity.getModelType())) { - wrapper.eq("model_type", modelProviderEntity.getModelType()); + if (StringUtils.isNotBlank(modelProviderDTO.getModelType())) { + wrapper.eq("model_type", modelProviderDTO.getModelType()); } - if (StringUtils.isNotBlank(modelProviderEntity.getName())) { - wrapper.like("name", "%" + modelProviderEntity.getName() + "%"); + if (StringUtils.isNotBlank(modelProviderDTO.getName())) { + wrapper.like("name", "%" + modelProviderDTO.getName() + "%"); } return getPageData(modelProviderDao.selectPage(pageParam, wrapper), ModelProviderDTO.class); } - @Override - public ModelProviderDTO add(ModelProviderDTO modelProviderEntity) { - UserDetail user = SecurityUser.getUser(); - modelProviderEntity.setCreator(user.getId()); - modelProviderEntity.setUpdater(user.getId()); - modelProviderEntity.setCreateDate(new Date()); - modelProviderEntity.setUpdateDate(new Date()); - if (modelProviderDao.insert(ConvertUtils.sourceToTarget(modelProviderEntity, ModelProviderEntity.class)) == 0) { - throw new RenException("新增数据失败"); - } - - return ConvertUtils.sourceToTarget(modelProviderEntity, ModelProviderDTO.class); + public static void main(String[] args) { + String jsonString = "\"[]\""; + JSONArray jsonArray = new JSONArray(jsonString); + System.out.println("字符串转 JSONArray: " + jsonArray.toString()); } @Override - public ModelProviderDTO edit(ModelProviderDTO modelProviderEntity) { + public ModelProviderDTO add(ModelProviderDTO modelProviderDTO) { UserDetail user = SecurityUser.getUser(); - modelProviderEntity.setUpdater(user.getId()); - modelProviderEntity.setUpdateDate(new Date()); - if (modelProviderDao.updateById(ConvertUtils.sourceToTarget(modelProviderEntity, ModelProviderEntity.class)) == 0) { + modelProviderDTO.setCreator(user.getId()); + modelProviderDTO.setUpdater(user.getId()); + modelProviderDTO.setCreateDate(new Date()); + modelProviderDTO.setUpdateDate(new Date()); + // 去除Fields左右的双引号 + + modelProviderDTO.setFields(modelProviderDTO.getFields()); + ModelProviderEntity entity = ConvertUtils.sourceToTarget(modelProviderDTO, ModelProviderEntity.class); + if (modelProviderDao.insert(entity) == 0) { + throw new RenException("新增数据失败"); + } + + return ConvertUtils.sourceToTarget(modelProviderDTO, ModelProviderDTO.class); + } + + @Override + public ModelProviderDTO edit(ModelProviderDTO modelProviderDTO) { + UserDetail user = SecurityUser.getUser(); + modelProviderDTO.setUpdater(user.getId()); + modelProviderDTO.setUpdateDate(new Date()); + if (modelProviderDao.updateById(ConvertUtils.sourceToTarget(modelProviderDTO, ModelProviderEntity.class)) == 0) { throw new RenException("修改数据失败"); } - return ConvertUtils.sourceToTarget(modelProviderEntity, ModelProviderDTO.class); + return ConvertUtils.sourceToTarget(modelProviderDTO, ModelProviderDTO.class); } @Override @@ -93,6 +106,13 @@ public class ModelProviderServiceImpl extends BaseServiceImpl ids) { + if (modelProviderDao.deleteBatchIds(ids) == 0) { + throw new RenException("删除数据失败"); + } + } + @Override public List getList(String modelType, String providerCode) { QueryWrapper queryWrapper = new QueryWrapper<>();