From 02020d31a5e9fdd1c6c970a0272cf0b88b9ac60b Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Wed, 3 Sep 2025 17:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E5=BA=93=E4=BF=AE=E6=94=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/library/LibraryProduct.java | 9 ++- .../controller/LibraryProductController.java | 52 ++++++++++++ .../service/LibraryProductService.java | 15 +++- .../service/impl/LibraryProductImpl.java | 80 +++++++++++++++++++ sql/shop/dev/20250903_dml.sql | 3 + 5 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/library/controller/LibraryProductController.java create mode 100644 sql/shop/dev/20250903_dml.sql diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java index 0c6ee417..d75b8d10 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java @@ -1,8 +1,6 @@ package com.suisung.mall.common.modules.library; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -27,9 +25,11 @@ public class LibraryProduct implements Serializable { private Long id; @ApiModelProperty(value = "商品名", position = 2, example = "小米12 Pro") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String name; @ApiModelProperty(value = "条形码/Barcode", position = 3, example = "6923450657713") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String barcode; @ApiModelProperty(value = "商品分类", position = 4, example = "手机") @@ -42,6 +42,7 @@ public class LibraryProduct implements Serializable { private String keywords; @ApiModelProperty(value = "封面图主图", position = 7, example = "/media/images/product/1001.jpg") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String thumb; @ApiModelProperty(value = "排序值,越小越前面", position = 8, example = "50") @@ -54,8 +55,10 @@ public class LibraryProduct implements Serializable { private Integer status; @ApiModelProperty(value = "创建时间", position = 11, example = "2023-01-01 12:00:00") + @TableField(value = "created_at") private Date createdAt; @ApiModelProperty(value = "更新时间", position = 12, example = "2023-01-02 15:30:00") + @TableField(value = "updated_at") private Date updatedAt; } \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/controller/LibraryProductController.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/controller/LibraryProductController.java new file mode 100644 index 00000000..cfb356c9 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/controller/LibraryProductController.java @@ -0,0 +1,52 @@ +package com.suisung.mall.shop.library.controller; + +import cn.hutool.json.JSONArray; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.library.LibraryProduct; +import com.suisung.mall.common.pojo.dto.LibraryProductDTO; +import com.suisung.mall.shop.library.service.LibraryProductService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "图库管理") +@RestController +@RequestMapping("/admin/shop/libraryProduct") +public class LibraryProductController { + @Autowired + private LibraryProductService libraryProductService; + + /** + * 分页列表查询 + * @param + * @param pageNum + * @param pageSize + * @return + */ + @ApiOperation(value = "列表查询-图库数据", notes = "列表查询") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public Page list(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + return libraryProductService.findLibraryProductPage(pageNum, pageSize); + } + + /** + * 批量保存 + * @param + * @return + */ + @ApiOperation(value = "批量修改", notes = "批量修改") + @RequestMapping(value = "/saveBatch", method = RequestMethod.PUT) + public CommonResult saveBatch(@RequestBody JSONArray jsonLibraryProduct) { + Gson gson = new Gson(); + String json = gson.toJson(jsonLibraryProduct); + List libraryProducts= gson.fromJson(json,new TypeToken>(){}.getType()); + return libraryProductService.updateBatchLibraryProductDTO(libraryProducts); + } +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java index 976f1dfd..8b06c877 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java @@ -8,11 +8,15 @@ package com.suisung.mall.shop.library.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.library.LibraryProduct; import com.suisung.mall.common.pojo.dto.LibraryProductDTO; +import com.suisung.mall.core.web.service.IBaseService; import java.util.List; -public interface LibraryProductService { +public interface LibraryProductService extends IBaseService { /** * 匹配商品 @@ -25,4 +29,13 @@ public interface LibraryProductService { * @return */ List matchLibraryProducts(String barcode, String productName, List keywords); + + + /** + * 查询 + * @return + */ + Page findLibraryProductPage(Integer pageNum, Integer pageSize); + + CommonResult updateBatchLibraryProductDTO(List products); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java index b070392d..102a3997 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java @@ -10,16 +10,26 @@ package com.suisung.mall.shop.library.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.domain.UserDto; +import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.modules.library.LibraryProduct; import com.suisung.mall.common.pojo.dto.LibraryProductDTO; +import com.suisung.mall.common.utils.ContextUtil; +import com.suisung.mall.core.consts.ConstantRedis; +import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.library.mapper.LibraryProductMapper; import com.suisung.mall.shop.library.service.LibraryProductService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -32,6 +42,8 @@ public class LibraryProductImpl extends BaseServiceImpl findLibraryProductPage(Integer pageNum, Integer pageSize) { + String barcode= getParameter("barcode"); + String name= getParameter("name"); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StringUtils.isNotEmpty(barcode)){ + queryWrapper.like("barcode", barcode); + } + if(StringUtils.isNotEmpty(name)){ + queryWrapper.like("name", name); + } + String barcodeEmty= getParameter("barcodeEmty"); + if(StringUtils.isNotEmpty(barcodeEmty)){ + if(barcodeEmty.equals("yes")){ + queryWrapper.eq("barcode",""); + } + if(barcodeEmty.equals("no")){ + queryWrapper.ne("barcode",""); + } + } + + queryWrapper.orderByDesc("updated_at"); + Page page= this.lists(queryWrapper,pageNum, pageSize); + + List libraryProductList= page.getRecords(); + libraryProductList.forEach(libraryProduct->{ + libraryProduct.setThumb(staticDomain+libraryProduct.getThumb()); + }); + page.setRecords(libraryProductList); + return page; + } + + /** + * 修改名称或者条形码 + * @param products + * @return + */ + @Override + @Transactional(rollbackFor = ApiException.class) + public CommonResult updateBatchLibraryProductDTO(List products) { + List updateProductList = new ArrayList<>(); + UserDto userDto=ContextUtil.getCurrentUser(); + assert userDto != null; + if(userDto.getRole_id()!=9){ + throw new ApiException("权限不足"); + } + List updateTableIds=new ArrayList<>(); + products.forEach(product->{ + if (null==product.getId()){ + throw new ApiException("id is null"); + } + LibraryProduct libraryProduct=new LibraryProduct(); + libraryProduct.setId(product.getId()); + libraryProduct.setName(product.getName()); + libraryProduct.setBarcode(product.getBarcode()); + updateProductList.add(libraryProduct); + updateTableIds.add(ConstantRedis.Cache_NameSpace+"library_product:"+product.getId()); + }); + boolean result=this.updateBatchById(updateProductList,updateProductList.size()); + if(result){ + redisService.del(updateTableIds); + return CommonResult.success("保存成功"); + } + return CommonResult.failed("保存失败"); + } + + } diff --git a/sql/shop/dev/20250903_dml.sql b/sql/shop/dev/20250903_dml.sql new file mode 100644 index 00000000..1a293eef --- /dev/null +++ b/sql/shop/dev/20250903_dml.sql @@ -0,0 +1,3 @@ +INSERT INTO `admin_base_protocol` (`ctl`, `met`, `db`, `rights_id`, `log`, `path`,`comment`) VALUES ('/admin/shop/libraryProduct/list', 'index', 'master', '', '0', '/admin/shop/libraryProduct/list','图库查询'); + +INSERT INTO `admin_base_protocol` (`ctl`, `met`, `db`, `rights_id`, `log`, `path`,`comment`) VALUES ('/admin/shop/libraryProduct/saveBatch', 'index', 'master', '', '0', '/admin/shop/libraryProduct/saveBatch','图库修改'); \ No newline at end of file