From 37affc558d4cda2d178dcc06524f71ca3ede2376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 11 Feb 2025 16:40:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A8=A1=E5=9D=97=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/controller/ProductController.java | 22 ++--- .../controller/ShopProdUnitController.java | 9 +- .../product/service/ShopProdUnitService.java | 5 +- .../java/com/czg/core/page/PageDomain.java | 88 ++++++------------- .../java/com/czg/core/page/PageQuery.java | 5 +- .../java/com/czg/core/page/TableSupport.java | 37 +++----- .../com/czg/core/service/IBaseService.java | 44 +--------- .../core/service/impl/BaseServiceImpl.java | 4 +- .../service/impl/ShopProdUnitServiceImpl.java | 56 ++++-------- 9 files changed, 85 insertions(+), 185 deletions(-) diff --git a/cash-api/product-server/src/main/java/com/czg/controller/ProductController.java b/cash-api/product-server/src/main/java/com/czg/controller/ProductController.java index fdba41aa..87409dec 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/ProductController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/ProductController.java @@ -21,11 +21,11 @@ import java.util.Map; /** -* 商品 -* -* @author Tankaikai tankaikai@aliyun.com -* @since 1.0 2025-02-10 -*/ + * 商品 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 1.0 2025-02-10 + */ @AllArgsConstructor @RestController @RequestMapping("/prod/product") @@ -35,7 +35,7 @@ public class ProductController { @GetMapping("page") @LogOperation("分页") @SaAdminCheckPermission("prod:product:all") - public CzgResult> page(@RequestParam Map params){ + public CzgResult> page(@RequestParam Map params) { Page data = productService.pageAs(null, null, ProductDTO.class); return CzgResult.success(data); } @@ -43,7 +43,7 @@ public class ProductController { @GetMapping("list") @LogOperation("列表") @SaAdminCheckPermission("prod:product:all") - public CzgResult> list(@RequestParam Map params){ + public CzgResult> list(@RequestParam Map params) { List data = null; return CzgResult.success(data); @@ -52,7 +52,7 @@ public class ProductController { @GetMapping("{id}") @LogOperation("信息") @SaAdminCheckPermission("prod:product:all") - public CzgResult get(@PathVariable("id") Long id){ + public CzgResult get(@PathVariable("id") Long id) { ProductDTO data = null; return CzgResult.success(data); @@ -61,7 +61,7 @@ public class ProductController { @PostMapping @LogOperation("保存") @SaAdminCheckPermission("prod:product:all") - public CzgResult save(@RequestBody ProductDTO dto){ + public CzgResult save(@RequestBody ProductDTO dto) { //效验数据 ValidatorUtil.validateEntity(dto, InsertGroup.class, DefaultGroup.class); @@ -73,7 +73,7 @@ public class ProductController { @PutMapping @LogOperation("修改") @SaAdminCheckPermission("prod:product:all") - public CzgResult update(@RequestBody ProductDTO dto){ + public CzgResult update(@RequestBody ProductDTO dto) { //效验数据 ValidatorUtil.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); @@ -85,7 +85,7 @@ public class ProductController { @DeleteMapping @LogOperation("删除") @SaAdminCheckPermission("prod:product:all") - public CzgResult delete(@RequestBody Long[] ids){ + public CzgResult delete(@RequestBody Long[] ids) { //效验数据 Assert.notNull(ids, "{}不能为空", "id"); AssertUtil.isArrayEmpty(ids, "请求id数组不能为空"); diff --git a/cash-api/product-server/src/main/java/com/czg/controller/ShopProdUnitController.java b/cash-api/product-server/src/main/java/com/czg/controller/ShopProdUnitController.java index 42c76d71..a509531f 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/ShopProdUnitController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/ShopProdUnitController.java @@ -15,7 +15,6 @@ import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; /** @@ -33,16 +32,16 @@ public class ShopProdUnitController { @GetMapping("page") @LogOperation("分页") @SaAdminCheckPermission("prod:unit:all") - public CzgResult> page(@RequestParam Map params) { - Page data = shopProdUnitService.page(params); + public CzgResult> page(@RequestParam ShopProdUnitDTO param) { + Page data = shopProdUnitService.page(param); return CzgResult.success(data); } @GetMapping("list") @LogOperation("列表") @SaAdminCheckPermission("prod:unit:all") - public CzgResult> list(@RequestParam Map params) { - List data = shopProdUnitService.list(params); + public CzgResult> list(@RequestParam ShopProdUnitDTO param) { + List data = shopProdUnitService.list(param); return CzgResult.success(data); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopProdUnitService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopProdUnitService.java index 1c7560ab..63907397 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopProdUnitService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ShopProdUnitService.java @@ -6,7 +6,6 @@ import com.czg.product.entity.ShopProdUnit; import com.mybatisflex.core.paginate.Page; import java.util.List; -import java.util.Map; /** * 商品单位Service接口 @@ -16,9 +15,9 @@ import java.util.Map; */ public interface ShopProdUnitService extends IBaseService { - Page page(Map params); + Page page(ShopProdUnitDTO param); - List list(Map params); + List list(ShopProdUnitDTO param); ShopProdUnitDTO get(Long id); diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageDomain.java b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageDomain.java index 2b9060bc..0d25541a 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageDomain.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageDomain.java @@ -1,95 +1,65 @@ package com.czg.core.page; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import io.micrometer.common.util.StringUtils; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; /** * 分页数据 * * @author cashier */ +@Data public class PageDomain { /** * 当前记录起始索引 */ - private Integer pageNum; + private Integer page; /** * 每页显示记录数 */ - private Integer pageSize; + private Integer size; /** - * 排序列 + * 排序列,多个用逗号隔开 */ - private String orderByColumn; + private String orderField; /** - * 排序的方向desc或者asc + * 排序方式,多个用逗号分隔,asc:升序,desc:降序 */ - private String isAsc = "asc"; + private String order; /** - * 分页参数合理化 + * 组合后的排序规则 */ - private Boolean reasonable = true; + private String orderBy; + public String getOrderBy() { - if (StrUtil.isEmpty(orderByColumn)) { + if (StrUtil.isEmpty(orderField)) { return ""; } - return StrUtil.toUnderlineCase(orderByColumn) + " " + isAsc; - } - - public Integer getPageNum() { - return pageNum; - } - - public void setPageNum(Integer pageNum) { - this.pageNum = pageNum; - } - - public Integer getPageSize() { - return pageSize; - } - - public void setPageSize(Integer pageSize) { - this.pageSize = pageSize; - } - - public String getOrderByColumn() { - return orderByColumn; - } - - public void setOrderByColumn(String orderByColumn) { - this.orderByColumn = orderByColumn; - } - - public String getIsAsc() { - return isAsc; - } - - public void setIsAsc(String isAsc) { - if (StringUtils.isNotEmpty(isAsc)) { - // 兼容前端排序类型 - if ("ascending".equals(isAsc)) { - isAsc = "asc"; - } else if ("descending".equals(isAsc)) { - isAsc = "desc"; - } - this.isAsc = isAsc; + if (StrUtil.isEmpty(orderBy)) { + return ""; } - } - - public Boolean getReasonable() { - if (reasonable == null) { - return Boolean.TRUE; + String[] orderFields = orderField.split(","); + String[] orders = orderBy.split(","); + if (orderFields.length != orders.length) { + return ""; } - return reasonable; + List orderBy = new ArrayList<>(); + for (int i = 0; i < orderFields.length; i++) { + String orderField = orderFields[i]; + String order = orders[i]; + orderBy.add(StrUtil.toUnderlineCase(orderField) + " " + order); + } + return CollUtil.join(orderBy, ","); } - public void setReasonable(Boolean reasonable) { - this.reasonable = reasonable; - } } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageQuery.java b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageQuery.java index 56c0f0a6..29bc9018 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageQuery.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/PageQuery.java @@ -61,10 +61,11 @@ public class PageQuery implements Serializable { /** * 构造分页查询参数 + * + * @param * @return - * @param */ - public static Page build() { + public static Page build() { Integer pageNum = Convert.toInt(TableSupport.getHttpServletRequest().getParameter(PAGE_NUM), DEFAULT_PAGE_NUM); Integer pageSize = Convert.toInt(TableSupport.getHttpServletRequest().getParameter(PAGE_SIZE), DEFAULT_PAGE_SIZE); if (pageNum <= 0) { diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/TableSupport.java b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/TableSupport.java index 0a590ed4..6ad69ed8 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/core/page/TableSupport.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/core/page/TableSupport.java @@ -11,58 +11,49 @@ import org.springframework.web.context.request.ServletRequestAttributes; * * @author Cashier */ -public class TableSupport -{ +public class TableSupport { /** * 当前记录起始索引 */ - public static final String PAGE_NUM = "pageNum"; + public static final String PAGE = "page"; /** * 每页显示记录数 */ - public static final String PAGE_SIZE = "pageSize"; + public static final String SIZE = "size"; /** - * 排序列 + * 排序字段,多个用逗号分隔 */ - public static final String ORDER_BY_COLUMN = "orderByColumn"; + public static final String ORDER_FIELD = "orderField"; /** - * 排序的方向 "desc" 或者 "asc". + * 排序方式,多个用逗号分隔,asc:升序,desc:降序 */ - public static final String IS_ASC = "isAsc"; + public static final String ORDER = "order"; - /** - * 分页参数合理化 - */ - public static final String REASONABLE = "reasonable"; /** * 封装分页对象 */ - public static PageDomain getPageDomain() - { + public static PageDomain getPageDomain() { PageDomain pageDomain = new PageDomain(); - pageDomain.setPageNum(Convert.toInt(getHttpServletRequest().getParameter(PAGE_NUM), 1)); - pageDomain.setPageSize(Convert.toInt(getHttpServletRequest().getParameter(PAGE_SIZE), 10)); - pageDomain.setOrderByColumn(getHttpServletRequest().getParameter(ORDER_BY_COLUMN)); - pageDomain.setIsAsc(getHttpServletRequest().getParameter(IS_ASC)); - pageDomain.setReasonable(Convert.toBool(getHttpServletRequest().getParameter(REASONABLE))); + pageDomain.setPage(Convert.toInt(getHttpServletRequest().getParameter(PAGE), 1)); + pageDomain.setPage(Convert.toInt(getHttpServletRequest().getParameter(SIZE), 10)); + pageDomain.setOrderField(getHttpServletRequest().getParameter(ORDER_FIELD)); + pageDomain.setOrder(getHttpServletRequest().getParameter(ORDER)); return pageDomain; } - public static PageDomain buildPageRequest() - { + public static PageDomain buildPageRequest() { return getPageDomain(); } public static HttpServletRequest getHttpServletRequest() { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); - if(requestAttributes == null){ + if (requestAttributes == null) { return null; } - return ((ServletRequestAttributes) requestAttributes).getRequest(); } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/core/service/IBaseService.java b/cash-common/cash-common-tools/src/main/java/com/czg/core/service/IBaseService.java index 5b5a888f..e92ea26f 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/core/service/IBaseService.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/core/service/IBaseService.java @@ -1,54 +1,12 @@ package com.czg.core.service; -import com.mybatisflex.core.BaseMapper; -import com.mybatisflex.core.row.Db; import com.mybatisflex.core.service.IService; -import com.mybatisflex.core.util.ClassUtil; -import com.mybatisflex.core.util.SqlUtil; - -import java.util.Collection; /** * 自定义的服务基类接口 * - * @author dataprince数据小王子 + * @author Cashier */ public interface IBaseService extends IService { - /** - *

带主键保存实体类对象数据,适用于中间表有联合主键场合但是不通过主键生成器生成主键值,而是程序自己提供主键值。 - * - * @param entity 实体类对象 - * @return 受影响的行数 - * @apiNote 默认调用的是 {@link BaseMapper#insertSelectiveWithPk(Object)} 方法,忽略实体类 - * {@code null} 属性的数据,使数据库配置的默认值生效。 - */ - default int saveWithPk(T entity) { - return getMapper().insertSelectiveWithPk(entity); - } - /** - *

带主键批量保存实体类对象数据,适用于中间表有联合主键场合但是不通过主键生成器生成主键值,而是程序自己提供主键值,例如sys_role_menu。 - * - * @param entities 实体类对象 - * @return {@code true} 保存成功,{@code false} 保存失败。 - * @apiNote 默认调用的是 {@link BaseMapper#insertSelectiveWithPk(Object)} 方法,忽略实体类 - * {@code null} 属性的数据,使数据库配置的默认值生效。 - */ - default boolean saveBatchWithPk(Collection entities) { - return saveBatchWithPk(entities, DEFAULT_BATCH_SIZE); - } - - /** - *

带主键批量保存实体类对象数据,适用于中间表有联合主键场合但是不通过主键生成器生成主键值,而是程序自己提供主键值,例如sys_role_menu。 - * - * @param entities 实体类对象 - * @param batchSize 每次保存切分的数量 - * @return {@code true} 保存成功,{@code false} 保存失败。 - * @apiNote 默认调用的是 {@link BaseMapper#insertSelectiveWithPk(Object)} 方法,忽略实体类 - * {@code null} 属性的数据,使数据库配置的默认值生效。 - */ - default boolean saveBatchWithPk(Collection entities, int batchSize) { - Class> usefulClass = (Class>) ClassUtil.getUsefulClass(getMapper().getClass()); - return SqlUtil.toBool(Db.executeBatch(entities, batchSize, usefulClass, BaseMapper::insertSelectiveWithPk)); - } } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/core/service/impl/BaseServiceImpl.java b/cash-common/cash-common-tools/src/main/java/com/czg/core/service/impl/BaseServiceImpl.java index d4002679..1f695544 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/core/service/impl/BaseServiceImpl.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/core/service/impl/BaseServiceImpl.java @@ -12,7 +12,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl; /** * 自定义的服务基类接口实现 * - * @author dataprince数据小王子 + * @author Cashier */ public class BaseServiceImpl, T> extends ServiceImpl implements IBaseService { @@ -20,7 +20,7 @@ public class BaseServiceImpl, T> extends ServiceImpl implements ShopProdUnitService { - @Override - public QueryWrapper query() { - return super.query().from(SHOP_PROD_UNIT); - } - - private QueryWrapper buildQueryWrapper(Map params) { - QueryWrapper queryWrapper = super.buildBaseQueryWrapper(); - ShopProdUnit param = BeanUtil.toBean(params, ShopProdUnit.class); + private QueryWrapper buildQueryWrapper(ShopProdUnitDTO param) { + QueryWrapper queryWrapper = super.buildPageQueryWrapper(); if (StrUtil.isEmpty(param.getName())) { - queryWrapper.and(SHOP_PROD_UNIT.NAME.like(param.getName())); + queryWrapper.like(ShopProdUnit::getName, param.getName()); } Long shopId = StpKit.ADMIN.getLoginIdAsLong(); - queryWrapper.and(SHOP_PROD_UNIT.SHOP_ID.eq(shopId)); - queryWrapper.orderBy(SHOP_PROD_UNIT.ID.desc()); + queryWrapper.eq(ShopProdUnit::getShopId, shopId); + queryWrapper.orderBy(ShopProdUnit::getId, false); return queryWrapper; } @Override - public Page page(Map params) { - QueryWrapper queryWrapper = buildQueryWrapper(params); - Page page = super.pageAs(PageQuery.build(), queryWrapper, ShopProdUnitDTO.class); - return page; + public Page page(ShopProdUnitDTO param) { + QueryWrapper queryWrapper = buildQueryWrapper(param); + return super.pageAs(PageQuery.build(), queryWrapper, ShopProdUnitDTO.class); } @Override - public List list(Map params) { - QueryWrapper queryWrapper = buildQueryWrapper(params); + public List list(ShopProdUnitDTO param) { + QueryWrapper queryWrapper = buildQueryWrapper(param); return super.listAs(queryWrapper, ShopProdUnitDTO.class); } @Override public ShopProdUnitDTO get(Long id) { Long shopId = StpKit.ADMIN.getLoginIdAsLong(); - ShopProdUnitDTO data = super.getOneAs(query().where(SHOP_PROD_UNIT.ID.eq(id).and(SHOP_PROD_UNIT.SHOP_ID.eq(shopId))), ShopProdUnitDTO.class); - return data; + return super.getOneAs(query().eq(ShopProdUnit::getId, id).eq(ShopProdUnit::getShopId, shopId), ShopProdUnitDTO.class); } @Override public boolean save(ShopProdUnitDTO dto) { Long shopId = StpKit.ADMIN.getLoginIdAsLong(); - long count = QueryChain.of(ShopProdUnit.class).where(ShopProdUnit::getName).eq(dto.getName()).and(ShopProdUnit::getShopId).eq(shopId).count(); - if(count > 0){ + boolean exists = super.exists(query().eq(ShopProdUnit::getName, dto.getName()).eq(ShopProdUnit::getShopId, shopId)); + if (exists) { throw new CzgException("单位名称已存在"); } ShopProdUnit entity = BeanUtil.copyProperties(dto, ShopProdUnit.class); @@ -91,12 +79,8 @@ public class ShopProdUnitServiceImpl extends BaseServiceImpl 0){ + boolean exists = super.exists(query().eq(ShopProdUnit::getName, dto.getName()).eq(ShopProdUnit::getShopId, shopId).ne(ShopProdUnit::getId, dto.getId())); + if (exists) { throw new CzgException("单位名称已存在"); } ShopProdUnit entity = BeanUtil.copyProperties(dto, ShopProdUnit.class); @@ -106,22 +90,20 @@ public class ShopProdUnitServiceImpl extends BaseServiceImpl