From d392e7b4cd684d9968e498a3f37cc493a0a36f5f Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 4 Nov 2022 09:12:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/UnifiedExceptionHandler.java | 13 +- .../base/controller/JslApiController.java | 18 +++ .../bms/controller/BmsChannelController.java | 103 +++++++++++++++ .../controller/BmsChannelPointController.java | 119 ++++++++++++++++++ .../bms/controller/BmsFactoryController.java | 4 + .../BmsSupplierChannelController.java | 113 +++++++++++++++++ .../bms/controller/BmsSupplierController.java | 33 +---- .../serve/modules/bms/entity/BmsChannel.java | 72 +++++++++++ .../modules/bms/entity/BmsChannelPoint.java | 80 ++++++++++++ .../bms/entity/BmsSupplierChannel.java | 83 ++++++++++++ .../bms/entity/vo/BmsSupplierTreeVo.java | 12 ++ .../modules/bms/mapper/BmsChannelMapper.java | 14 +++ .../bms/mapper/BmsChannelPointMapper.java | 14 +++ .../bms/mapper/BmsSupplierChannelMapper.java | 17 +++ .../bms/service/BmsChannelPointService.java | 14 +++ .../bms/service/BmsChannelService.java | 14 +++ .../service/BmsSupplierChannelService.java | 19 +++ .../impl/BmsChannelPointServiceImpl.java | 22 ++++ .../service/impl/BmsChannelServiceImpl.java | 22 ++++ .../impl/BmsSupplierChannelServiceImpl.java | 28 +++++ .../modules/goods/common/GoodsConst.java | 1 + .../controller/GoodsCategoryController.java | 52 +++++--- .../goods/controller/GoodsSkuController.java | 38 +++--- .../controller/GoodsSpecValueController.java | 5 +- .../goods/controller/GoodsSpuController.java | 27 ++-- .../modules/goods/entity/GoodsCategory.java | 9 ++ .../serve/modules/goods/entity/GoodsSku.java | 2 +- .../modules/goods/entity/GoodsSpecValue.java | 1 + .../serve/modules/goods/entity/GoodsSpu.java | 15 ++- .../goods/entity/bo/GoodsCategoryBo.java | 36 ++++++ .../goods/entity/bo/GoodsCategoryLevelBo.java | 33 +++++ .../goods/entity/bo/GoodsCategoryTreeVo.java | 2 + .../modules/goods/entity/bo/GoodsSkuBo.java | 3 +- .../modules/goods/entity/bo/GoodsSpuBo.java | 63 ++++++++++ .../modules/goods/entity/vo/GoodSkuVo.java | 6 + .../goods/service/GoodsCategoryService.java | 5 + .../goods/service/GoodsSpuService.java | 3 + .../impl/GoodsCategoryServiceImpl.java | 77 ++++++++++++ .../service/impl/GoodsSkuServiceImpl.java | 2 +- .../service/impl/GoodsSpuServiceImpl.java | 16 ++- .../mapper/bms/BmsSupplierChannelMapper.xml | 61 +++++++++ .../mapper/bms/BmsSupplierMapper.xml | 10 ++ .../resources/mapper/bms/GoodsSpuMapper.xml | 85 +++++++++++++ 43 files changed, 1283 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java create mode 100644 src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java create mode 100644 src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierChannel.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierChannelMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsSupplierChannelService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierChannelServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryBo.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryLevelBo.java create mode 100644 src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuBo.java create mode 100644 src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml create mode 100644 src/main/resources/mapper/bms/GoodsSpuMapper.xml diff --git a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java b/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java index 770547c9..312544d2 100644 --- a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java +++ b/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java @@ -83,17 +83,22 @@ public class UnifiedExceptionHandler { return R.error(); } + + @ExceptionHandler(value = DuplicateKeyException.class) + @ResponseBody + public R handleDuplicateKeyException(DuplicateKeyException e) { + e.printStackTrace(); + return R.error("限制重复数据,请联系管理员"); + } + @ExceptionHandler({ - DuplicateKeyException.class, SQLIntegrityConstraintViolationException.class, }) @ResponseBody public R handleSqlIntegrityException(Exception e) { String msg = e.getMessage(); e.printStackTrace(); - String[] tmps = msg.split("\\n"); - String msg2 = tmps.length>1?tmps[1]:null; - return new R(500,"数据库拦截"+(msg2==null?"":" : "+msg2)); + return new R(500,"数据库拦截,请联系管理员"); } /** diff --git a/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java b/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java index ab99403a..ef0dad79 100644 --- a/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java +++ b/src/main/java/com/qs/serve/modules/base/controller/JslApiController.java @@ -9,9 +9,12 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.ValidateTools; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.BmsSupplierService; +import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; +import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.bo.SysUserBatchBo; import com.qs.serve.modules.sys.entity.bo.SysUserBo; @@ -44,6 +47,7 @@ public class JslApiController { private SysRoleService sysRoleService; private BmsSupplierService bmsSupplierService; private SysUserSalesService sysUserSalesService; + private GoodsSpuService goodsSpuService; /** * 客户档案 @@ -101,4 +105,18 @@ public class JslApiController { return R.ok(); } + + /** + * (批量)编辑口味品类SPU,建议每次小于50条 + * @param param + * @return + */ + @PostMapping("/saveBatchTasteSpu") + @SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.INSERT) + @PreAuthorize("hasRole('goods:spu:insert')") + public R saveBatchTasteSpu(@RequestBody GoodsSpuBatchTasteBo param){ + ValidateTools.valid(param.getTasteProducts()); + return R.ok(goodsSpuService.saveBatchTasteSpu(param)); + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java new file mode 100644 index 00000000..b2d39708 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java @@ -0,0 +1,103 @@ +package com.qs.serve.modules.bms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.bms.entity.BmsChannel; +import com.qs.serve.modules.bms.service.BmsChannelService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 基础档案 渠道 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bms/channel") +public class BmsChannelController { + + private BmsChannelService bmsChannelService; + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + @PreAuthorize("hasRole('bms:channel:query')") + public R> getPage(BmsChannel param){ + PageUtil.startPage(); + LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); + List list = bmsChannelService.list(channelWrapper); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.BASE, title = "渠道", biz = BizType.QUERY) + @PreAuthorize("hasRole('bms:channel:query')") + public R getById(@PathVariable("id") String id){ + BmsChannel bmsChannel = bmsChannelService.getById(id); + return R.ok(bmsChannel); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.BASE, title = "渠道", biz = BizType.UPDATE) + @PreAuthorize("hasRole('bms:channel:update')") + public R updateById(@RequestBody @Valid BmsChannel param){ + boolean result = bmsChannelService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.BASE, title = "渠道", biz = BizType.INSERT) + @PreAuthorize("hasRole('bms:channel:insert')") + public R save(@RequestBody @Valid BmsChannel param){ + boolean result = bmsChannelService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param id + * @return + */ + @DeleteMapping("/deleteById/{id}") + @SysLog(module = SystemModule.BASE, title = "渠道", biz = BizType.DELETE) + @PreAuthorize("hasRole('bms:channel:delete')") + public R deleteById(@PathVariable("id") Long id){ + boolean result = bmsChannelService.removeById(id); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java new file mode 100644 index 00000000..d891640b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java @@ -0,0 +1,119 @@ +package com.qs.serve.modules.bms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.bms.entity.BmsChannel; +import com.qs.serve.modules.bms.service.BmsChannelService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.bms.entity.BmsChannelPoint; +import com.qs.serve.modules.bms.service.BmsChannelPointService; + +import javax.validation.Valid; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 基础档案 渠道站点 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bms/channelPoint") +public class BmsChannelPointController { + + private BmsChannelPointService bmsChannelPointService; + private BmsChannelService bmsChannelService; + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + @PreAuthorize("hasRole('bms:channelPoint:query')") + public R> getPage(BmsChannelPoint param){ + PageUtil.startPage(); + LambdaQueryWrapper channelPointWrapper = new LambdaQueryWrapper<>(param); + List list = bmsChannelPointService.list(channelPointWrapper); + if(list.size()>0){ + List channelIds = list.stream().map(BmsChannelPoint::getChannelId).distinct().collect(Collectors.toList()); + List channels = bmsChannelService.listByIds(channelIds); + for (BmsChannelPoint channelPoint : list) { + for (BmsChannel channel : channels) { + if(channelPoint.getChannelId().equals(channel.getId())){ + channelPoint.setChannelName(channel.getChannelName()); + break; + } + } + } + } + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.BASE, title = "渠道站点", biz = BizType.QUERY) + @PreAuthorize("hasRole('bms:channelPoint:query')") + public R getById(@PathVariable("id") String id){ + BmsChannelPoint bmsChannelPoint = bmsChannelPointService.getById(id); + BmsChannel channel = bmsChannelService.getById(bmsChannelPoint.getChannelId()); + bmsChannelPoint.setChannelName(channel.getChannelName()); + return R.ok(bmsChannelPoint); + } + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.BASE, title = "渠道站点", biz = BizType.UPDATE) + @PreAuthorize("hasRole('bms:channelPoint:update')") + public R updateById(@RequestBody @Valid BmsChannelPoint param){ + boolean result = bmsChannelPointService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.BASE, title = "渠道站点", biz = BizType.INSERT) + @PreAuthorize("hasRole('bms:channelPoint:insert')") + public R save(@RequestBody @Valid BmsChannelPoint param){ + boolean result = bmsChannelPointService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param id + * @return + */ + @DeleteMapping("/deleteById/{id}") + @SysLog(module = SystemModule.BASE, title = "渠道站点", biz = BizType.DELETE) + @PreAuthorize("hasRole('bms:channelPoint:delete')") + public R deleteById(@PathVariable("id") Long id){ + boolean result = bmsChannelPointService.removeById(id); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java index 448dfe91..abf9b530 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java @@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.goods.service.GoodsSpecValueService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -30,6 +31,7 @@ import java.util.List; public class BmsFactoryController { private BmsFactoryService bmsFactoryService; + private GoodsSpecValueService goodsSpecValueService; /** * 翻页 @@ -67,6 +69,8 @@ public class BmsFactoryController { @SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.UPDATE) @PreAuthorize("hasRole('bms:factory:update')") public R updateById(@RequestBody @Valid BmsFactory param){ + param.setCode(null); + param.setName(null); boolean result = bmsFactoryService.updateById(param); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java new file mode 100644 index 00000000..ea03a5b0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierChannelController.java @@ -0,0 +1,113 @@ +package com.qs.serve.modules.bms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.bms.entity.BmsChannel; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsChannelService; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.bms.entity.BmsSupplierChannel; +import com.qs.serve.modules.bms.service.BmsSupplierChannelService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 基础档案 客户渠道关系 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bms/supplierChannel") +public class BmsSupplierChannelController { + + private BmsSupplierChannelService bmsSupplierChannelService; + private BmsChannelService bmsChannelService; + private BmsSupplierService bmsSupplierService; + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + @PreAuthorize("hasRole('bms:supplierChannel:query')") + public R> getPage(BmsSupplierChannel param){ + PageUtil.startPage(); + List list = bmsSupplierChannelService.selectSupplierChannelList(param); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.QUERY) + @PreAuthorize("hasRole('bms:supplierChannel:query')") + public R getById(@PathVariable("id") String id){ + BmsSupplierChannel bmsSupplierChannel = bmsSupplierChannelService.getById(id); + BmsChannel channel = bmsChannelService.getById(bmsSupplierChannel.getChannelId()); + bmsSupplierChannel.setChannelName(channel.getChannelName()); + BmsSupplier supplier = bmsSupplierService.getById(bmsSupplierChannel.getSupplierId().toString()); + bmsSupplierChannel.setSupplierCode(supplier.getCode()); + bmsSupplierChannel.setSupplierName(supplier.getName()); + return R.ok(bmsSupplierChannel); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.UPDATE) + @PreAuthorize("hasRole('bms:supplierChannel:update')") + public R updateById(@RequestBody @Valid BmsSupplierChannel param){ + boolean result = bmsSupplierChannelService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.INSERT) + @PreAuthorize("hasRole('bms:supplierChannel:insert')") + public R save(@RequestBody @Valid BmsSupplierChannel param){ + boolean result = bmsSupplierChannelService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param id + * @return + */ + @DeleteMapping("/deleteById/{id}") + @SysLog(module = SystemModule.BASE, title = "客户渠道关系", biz = BizType.DELETE) + @PreAuthorize("hasRole('bms:supplierChannel:delete')") + public R deleteById(@PathVariable("id") Long id){ + boolean result = bmsSupplierChannelService.removeById(id); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index 565df0bc..f09f04df 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -19,7 +19,6 @@ import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2; import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; -import com.qs.serve.modules.sys.entity.dto.SysUserVo; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -83,11 +82,11 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:query')") public R> getPage(BmsSupplier param){ PageUtil.startPage(); - LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); - if(CollectionUtil.isNotEmpty(param.getRegionIds())){ - supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); - } - List list = bmsSupplierService.list(supplierWrapper); +// LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); +// if(CollectionUtil.isNotEmpty(param.getRegionIds())){ +// supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); +// } + List list = bmsSupplierService.selectSupplierList(param); initSupplierList(list); initParentList(list); return R.byPageHelperList(list); @@ -101,28 +100,8 @@ public class BmsSupplierController { @GetMapping("/tree") @PreAuthorize("hasRole('bms:supplier:query')") public R> getTree(BmsSupplier param){ - LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); - if(CollectionUtil.isNotEmpty(param.getRegionIds())){ - supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); - } - List list = bmsSupplierService.list(supplierWrapper); + List list = bmsSupplierService.selectSupplierList(param); initSupplierList(list); - for (BmsSupplier supplier : list) { - String regionId = supplier.getRegionLast(); - if(regionId!=null&&!regionId.equals("0")){ - BmsRegion bmsRegion2 = bmsRegionService.getById(regionId); - if(bmsRegion2!=null){ - supplier.setRegionLabel(bmsRegion2.getName()); - } - } - String region2Id = supplier.getRegion2Last(); - if(region2Id!=null&&!region2Id.equals("0")){ - BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(regionId); - if(bmsRegion2!=null){ - supplier.setRegion2Label(bmsRegion2.getName()); - } - } - } List list2 = list.stream().map(supplier->{ BmsSupplierTreeVo treeNode = CopierUtil.copy(supplier,new BmsSupplierTreeVo()); treeNode.setId(supplier.getId()); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java new file mode 100644 index 00000000..16e349e7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java @@ -0,0 +1,72 @@ +package com.qs.serve.modules.bms.entity; + +import java.time.LocalDateTime; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 渠道 实体类 + * @author YenHex + * @since 2022-11-03 + */ +@Data +@TableName("bms_channel") +public class BmsChannel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 渠道名称 */ + @NotBlank(message = "渠道名称不能为空") + @Length(max = 30,message = "渠道名称长度不能超过30字") + private String channelName; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java new file mode 100644 index 00000000..4ad98305 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java @@ -0,0 +1,80 @@ +package com.qs.serve.modules.bms.entity; + +import java.time.LocalDateTime; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 渠道站点 实体类 + * @author YenHex + * @since 2022-11-03 + */ +@Data +@TableName("bms_channel_point") +public class BmsChannelPoint implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 渠道名称 */ + @NotNull(message = "渠道名称不能为空") + private Long channelId; + + /** 站点名称 */ + @NotBlank(message = "站点名称不能为空") + @Length(max = 30,message = "站点名称长度不能超过30字") + private String pointName; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 渠道名称 */ + @TableField(exist = false) + private String channelName; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierChannel.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierChannel.java new file mode 100644 index 00000000..866778ac --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierChannel.java @@ -0,0 +1,83 @@ +package com.qs.serve.modules.bms.entity; + +import java.time.LocalDateTime; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 客户渠道关系 实体类 + * @author YenHex + * @since 2022-11-03 + */ +@Data +@TableName("bms_supplier_channel") +public class BmsSupplierChannel implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 渠道id */ + @NotNull(message = "渠道id不能为空") + private Long channelId; + + /** 客户id */ + @NotNull(message = "客户id不能为空") + private Long supplierId; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 渠道名称 */ + @TableField(exist = false) + private String channelName; + + /** 客户名称 */ + @TableField(exist = false) + private String supplierName; + + /** 客户编码 */ + @TableField(exist = false) + private String supplierCode; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java index 4ea0e54a..b3c8885b 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierTreeVo.java @@ -65,6 +65,18 @@ public class BmsSupplierTreeVo extends TreeNode { @NotBlank(message = "客户编码不能为空") private String belong; + /** 行政一级区域ID */ + private String region2First; + /** 行政二级区域ID */ + private String region2Second; + /** 行政三级区域ID */ + private String region2Third; + + /** 行政最子级区域ID */ + private String region2Last; + + /** 行政标题 */ + private String region2Label; } diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java new file mode 100644 index 00000000..f4c74f5e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsChannel; + +/** + * 渠道 Mapper + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsChannelMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java new file mode 100644 index 00000000..1e66b0c6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsChannelPoint; + +/** + * 渠道站点 Mapper + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsChannelPointMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierChannelMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierChannelMapper.java new file mode 100644 index 00000000..0076ac2c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierChannelMapper.java @@ -0,0 +1,17 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsSupplierChannel; +import org.apache.ibatis.annotations.Param; +import java.util.List; +/** + * 客户渠道关系 Mapper + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsSupplierChannelMapper extends BaseMapper { + + List selectSupplierChannelList(@Param("query") BmsSupplierChannel supplierChannel); + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java new file mode 100644 index 00000000..b905d62b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bms.entity.BmsChannelPoint; + +/** + * 渠道站点 服务接口 + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsChannelPointService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java new file mode 100644 index 00000000..44dcbd37 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bms.entity.BmsChannel; + +/** + * 渠道 服务接口 + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsChannelService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierChannelService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierChannelService.java new file mode 100644 index 00000000..f01b2d2c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierChannelService.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.bms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bms.entity.BmsSupplierChannel; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 客户渠道关系 服务接口 + * @author YenHex + * @date 2022-11-03 + */ +public interface BmsSupplierChannelService extends IService { + + List selectSupplierChannelList(BmsSupplierChannel supplierChannel); + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java new file mode 100644 index 00000000..9d642a1d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsChannelPoint; +import com.qs.serve.modules.bms.service.BmsChannelPointService; +import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; + +/** + * 渠道站点 服务实现类 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsChannelPointServiceImpl extends ServiceImpl implements BmsChannelPointService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java new file mode 100644 index 00000000..fbd27c60 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsChannel; +import com.qs.serve.modules.bms.service.BmsChannelService; +import com.qs.serve.modules.bms.mapper.BmsChannelMapper; + +/** + * 渠道 服务实现类 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsChannelServiceImpl extends ServiceImpl implements BmsChannelService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierChannelServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierChannelServiceImpl.java new file mode 100644 index 00000000..5b5d23bd --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierChannelServiceImpl.java @@ -0,0 +1,28 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsSupplierChannel; +import com.qs.serve.modules.bms.service.BmsSupplierChannelService; +import com.qs.serve.modules.bms.mapper.BmsSupplierChannelMapper; + +import java.util.List; + +/** + * 客户渠道关系 服务实现类 + * @author YenHex + * @since 2022-11-03 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsSupplierChannelServiceImpl extends ServiceImpl implements BmsSupplierChannelService { + + @Override + public List selectSupplierChannelList(BmsSupplierChannel supplierChannel) { + return baseMapper.selectSupplierChannelList(supplierChannel); + } +} + diff --git a/src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java b/src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java index 7e36ce92..b8cca768 100644 --- a/src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java +++ b/src/main/java/com/qs/serve/modules/goods/common/GoodsConst.java @@ -10,5 +10,6 @@ public class GoodsConst { * 规格数量 */ public static final Integer SPEC_COUNT = 3; + public static final Integer CATE_MAX_LEVEL = 3; } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java index 0f87bcdc..20fb397c 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java @@ -9,6 +9,8 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.TreeUtil; +import com.qs.serve.modules.goods.entity.bo.GoodsCategoryBo; +import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryTreeVo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -36,28 +38,31 @@ public class GoodsCategoryController { private GoodsCategoryService goodsCategoryService; /** - *列表 + * 翻页查询 * @param param * @return */ - @GetMapping("/list") - public R> getList(GoodsCategory param){ + @GetMapping("/page") + @PreAuthorize("hasRole('goods:category:query')") + public R> getPage(GoodsCategory param){ + PageUtil.startPage(); LambdaQueryWrapper categoryWrapper = new LambdaQueryWrapper<>(param); List list = goodsCategoryService.list(categoryWrapper); - return R.ok(list); + return R.byPageHelperList(list); } /** - * 翻页查询 + * 查询 * @param param * @return */ - @GetMapping("/page") - public R> getPage(GoodsCategory param){ + @GetMapping("/list") + @PreAuthorize("hasRole('goods:category:query')") + public R> getList(GoodsCategory param){ PageUtil.startPage(); LambdaQueryWrapper categoryWrapper = new LambdaQueryWrapper<>(param); List list = goodsCategoryService.list(categoryWrapper); - return R.byPageHelperList(list); + return R.ok(list); } /** @@ -91,22 +96,37 @@ public class GoodsCategoryController { @PreAuthorize("hasRole('goods:category:query')") public R getById(@PathVariable("id") String id){ GoodsCategory goodsCategory = goodsCategoryService.getById(id); + if(!goodsCategory.getParentId().equals(0L)){ + goodsCategory.setParentInfo(goodsCategoryService.getById(goodsCategory.getParentId())); + } return R.ok(goodsCategory); } - - /** - * 根据ID更新 + * 根据ID更新基本信息 * @param param * @return */ @PostMapping("/updateById") @SysLog(module = SystemModule.GOODS, title = "分类", biz = BizType.UPDATE) @PreAuthorize("hasRole('goods:category:update')") - public R updateById(@RequestBody @Valid GoodsCategory param){ - boolean result = goodsCategoryService.updateById(param); - return R.isTrue(result); + public R updateById(@RequestBody @Valid GoodsCategoryBo param){ + GoodsCategory category = CopierUtil.copy(param,new GoodsCategory()); + goodsCategoryService.updateById(category); + return R.ok(); + } + + /** + * 迁移leve + * @param param + * @return + */ + @PostMapping("/updateLevel") + @SysLog(module = SystemModule.GOODS, title = "分类", biz = BizType.UPDATE) + @PreAuthorize("hasRole('goods:category:update')") + public R updateById(@RequestBody @Valid GoodsCategoryLevelBo param){ + goodsCategoryService.modifyLevel(param); + return R.ok(); } /** @@ -118,8 +138,8 @@ public class GoodsCategoryController { @SysLog(module = SystemModule.GOODS, title = "分类", biz = BizType.INSERT) @PreAuthorize("hasRole('goods:category:insert')") public R save(@RequestBody @Valid GoodsCategory param){ - boolean result = goodsCategoryService.save(param); - return R.isTrue(result); + goodsCategoryService.add(param); + return R.ok(); } /** diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java index a2cccf5a..c9021d9d 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java @@ -10,6 +10,7 @@ import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; +import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,20 +38,7 @@ public class GoodsSkuController { private GoodsSkuSpecValueService goodsSkuSpecValueService; /** - * 翻页 - * @param param - * @return - */ - //@GetMapping("/page") - @PreAuthorize("hasRole('goods:sku:query')") - public R> getPage(GoodsSku param){ - PageUtil.startPage(); - List list = goodsSkuService.selectSkuVo(param); - return R.byPageHelperList(list); - } - - /** - * 列表 + * 列表(传入spuId获取spu规格列表) * @param param * @return */ @@ -58,6 +46,10 @@ public class GoodsSkuController { @PreAuthorize("hasRole('goods:sku:query')") public R> getList(GoodsSku param){ List list = goodsSkuService.selectSkuVo(param); + for (GoodSkuVo goodSkuVo : list) { + List skuSpecValueVos = goodsSkuSpecValueService.listSpecValueBySkuId(goodSkuVo.getId()); + goodSkuVo.setSpecValueList(skuSpecValueVos); + } return R.ok(list); } @@ -82,7 +74,23 @@ public class GoodsSkuController { @PostMapping("/update") @SysLog(module = SystemModule.GOODS, title = "sku", biz = BizType.UPDATE) @PreAuthorize("hasRole('goods:sku:update')") - public R update(@RequestBody @Valid GoodsSkuBo param){ + public R update(@RequestBody GoodsSkuBo param){ + if(param.getSkuId()==null){ + return R.error(); + } + goodsSkuService.editSku(param); + return R.ok(); + } + + /** + * 编辑 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.GOODS, title = "sku", biz = BizType.UPDATE) + @PreAuthorize("hasRole('goods:sku:update')") + public R save(@RequestBody GoodsSkuBo param){ goodsSkuService.editSku(param); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java index 474d0249..2c1093da 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpecValueController.java @@ -101,8 +101,6 @@ public class GoodsSpecValueController { return R.ok(goodsSpecValue); } - - /** * 规格值 ID更新 * @param param @@ -125,6 +123,9 @@ public class GoodsSpecValueController { @SysLog(module = SystemModule.GOODS, title = "规格值", biz = BizType.INSERT) @PreAuthorize("hasRole('goods:specValue:insert')") public R save(@RequestBody @Valid GoodsSpecValue param){ + if(param.getSpecId().equals(3L)){ + return R.error("产地规格不支持新增"); + } boolean result = goodsSpecValueService.save(param); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index 0b435272..b8be3276 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -12,6 +12,7 @@ import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; import com.qs.serve.modules.goods.entity.GoodsSpuSpec; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; +import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; @@ -77,7 +78,7 @@ public class GoodsSpuController { * @param param * @return */ - @PostMapping("/edit") + //@PostMapping("/edit") @SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.UPDATE) @PreAuthorize("hasRole('goods:spu:update')") public R updateById(@RequestBody @Valid GoodsSpuEditBo param){ @@ -114,29 +115,35 @@ public class GoodsSpuController { } /** - * 编辑口味品类SPU + * 保存 口味品类SPU * @param param * @return */ @PostMapping("/saveTasteSpu") @SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.INSERT) @PreAuthorize("hasRole('goods:spu:insert')") - public R saveBatchTasteSpu(@RequestBody GoodsSpuTasteBo param){ - return R.ok(goodsSpuService.editTasteBo(param)); + public R saveTasteSpu(@RequestBody @Valid GoodsSpuBo param){ + param.setId(null); + goodsSpuService.editTasteSpu(param); + return R.ok(); } /** - * (批量)编辑口味品类SPU,建议每次小于50条 + * 编辑 口味品类SPU * @param param * @return */ - @PostMapping("/saveBatchTasteSpu") + @PostMapping("/updTasteSpu") @SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.INSERT) - @PreAuthorize("hasRole('goods:spu:insert')") - public R saveBatchTasteSpu(@RequestBody GoodsSpuBatchTasteBo param){ - ValidateTools.valid(param.getTasteProducts()); - return R.ok(goodsSpuService.saveBatchTasteSpu(param)); + @PreAuthorize("hasRole('goods:spu:update')") + public R updTasteSpu(@RequestBody @Valid GoodsSpuBo param){ + if(param.getId()==null){ + return R.error(); + } + goodsSpuService.editTasteSpu(param); + return R.ok(); } + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java index 93bb1153..453da4d0 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java @@ -42,6 +42,12 @@ public class GoodsCategory implements Serializable { @Length(max = 16,message = "名称长度不能超过16字") private String name; + /** 排序 */ + private Integer level; + + /** 排序 */ + private String levelPath; + /** 描述 */ @Length(max = 255,message = "描述长度不能超过255字") private String description; @@ -83,5 +89,8 @@ public class GoodsCategory implements Serializable { @TableField(fill = FieldFill.UPDATE) private String updateBy; + @TableField(exist = false) + private Object parentInfo; + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java index 388e45bb..7fb75fa6 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java @@ -117,7 +117,7 @@ public class GoodsSku implements Serializable { @TableField(exist = false) private List selectSkuIds; - /** 是否上架(1是 0否) */ + /** 查询:是否上架(1是 0否) */ @TableField(exist = false) private Integer querySpuShelf; } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpecValue.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpecValue.java index 71f9d845..71fb8832 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpecValue.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpecValue.java @@ -68,5 +68,6 @@ public class GoodsSpecValue implements Serializable { @TableField(exist = false) private String specName; + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 6e7043bd..972e9079 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java @@ -74,9 +74,6 @@ public class GoodsSpu implements Serializable { /** 销量 */ private Integer saleNum; - /** 0统一规格;1多规格 */ - @Length(max = 2,message = "0统一规格;1多规格长度不能超过2字") - private String specType; /** 产品口味(非sku规格值) */ private String tasteValue; @@ -109,5 +106,17 @@ public class GoodsSpu implements Serializable { @JsonProperty private String delFlag; + /** 一级类目:品牌名称 */ + @TableField(exist = false) + private String cateFirstLabel; + + /** 二级类目:类目名称 */ + @TableField(exist = false) + private String cateSecondLabel; + + /** 三级类目:系列名称 */ + @TableField(exist = false) + private String cateThirdLabel; + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryBo.java new file mode 100644 index 00000000..5e50f4f9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryBo.java @@ -0,0 +1,36 @@ +package com.qs.serve.modules.goods.entity.bo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @author YenHex + * @since 2022/11/3 + */ +@Data +public class GoodsCategoryBo { + + /** PK */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 名称 */ + @Length(max = 16,message = "名称长度不能超过16字") + private String name; + + /** 描述 */ + @Length(max = 255,message = "描述长度不能超过255字") + private String description; + + /** 图片 */ + @Length(max = 255,message = "图片长度不能超过255字") + private String picUrl; + + /** 排序 */ + private Integer sort; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryLevelBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryLevelBo.java new file mode 100644 index 00000000..aeb102cd --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryLevelBo.java @@ -0,0 +1,33 @@ +package com.qs.serve.modules.goods.entity.bo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 分类 实体类 + * @author YenHex + * @since 2022-10-09 + */ +@Data +public class GoodsCategoryLevelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** PK */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 父分类编号 */ + private Long parentId; + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java index 56cb64fc..59e81660 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java @@ -46,4 +46,6 @@ public class GoodsCategoryTreeVo extends TreeNode { /** 排序 */ private Integer sort; + /** 等级 */ + private Integer level; } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java index 03b87877..a4459454 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java @@ -25,8 +25,9 @@ public class GoodsSkuBo implements Serializable { private static final long serialVersionUID = 1L; + private Long skuId; + /** sku编码 */ - @Length(max = 32,message = "sku编码长度不能超过32字") private String skuCode; /** 商品Id */ diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuBo.java new file mode 100644 index 00000000..984504e6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSpuBo.java @@ -0,0 +1,63 @@ +package com.qs.serve.modules.goods.entity.bo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; +import lombok.Data; +import org.apache.ibatis.type.JdbcType; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 口味品类 + * @author YenHex + * @since 2022/10/10 + */ +@Data +public class GoodsSpuBo { + + /** PK */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 商品编码 */ + private String spuCode; + + /** 商品名字 */ + private String name; + + /** 品牌id */ + private Long brandId; + + /** 系列id */ + private Long seriesId; + + /** 最后一级分类 */ + private String categoryId; + + /** 商品图片 */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] picUrls; + + /** 是否上架(1是 0否) */ + //private Integer shelf; + + /** 排序字段 */ + @NotNull(message = "排序字段不能为空") + private Integer sort; + + /** 销量 */ + //private Integer saleNum; + + /** 0统一规格;1多规格 */ + //@Length(max = 2,message = "0统一规格;1多规格长度不能超过2字") + //private String specType; + + /** 产品口味(非sku规格值) */ + private String tasteValue; + +} diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java index adac3f99..92ce1560 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java @@ -1,8 +1,11 @@ package com.qs.serve.modules.goods.entity.vo; import com.qs.serve.modules.goods.entity.GoodsSku; +import com.qs.serve.modules.goods.entity.GoodsSpecValue; import lombok.Data; +import java.util.List; + /** * @author YenHex * @since 2022/10/20 @@ -19,4 +22,7 @@ public class GoodSkuVo extends GoodsSku { /** 是否上架(1是 0否) */ private Integer shelf; + /** 规格值信息 */ + private List specValueList; + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java index b9a7e995..36aa0d52 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsCategoryService.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.goods.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.goods.entity.GoodsCategory; +import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; /** * 分类 服务接口 @@ -12,5 +13,9 @@ public interface GoodsCategoryService extends IService { GoodsCategory getByCode(String code); + void add(GoodsCategory category); + + void modifyLevel(GoodsCategoryLevelBo category); + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java index 57391015..07ac508e 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.goods.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; +import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.vo.GoodSkuBatchResult; @@ -25,6 +26,8 @@ public interface GoodsSpuService extends IService { void edit(GoodsSpuEditBo spuEditBo); + void editTasteSpu(GoodsSpuBo param); + GoodSkuBatchResult editTasteBo(GoodsSpuTasteBo tasteProduct); } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java index 6f195822..fdc005ca 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java @@ -2,6 +2,12 @@ package com.qs.serve.modules.goods.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.modules.goods.common.GoodsConst; +import com.qs.serve.modules.goods.entity.GoodsSpu; +import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -9,6 +15,9 @@ import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; +import java.util.ArrayList; +import java.util.List; + /** * 分类 服务实现类 * @author YenHex @@ -26,5 +35,73 @@ public class GoodsCategoryServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsCategory::getParentId,category.getId()); + List childCategories = this.list(lqw); + for (GoodsCategory childCategory : childCategories) { + childCategory.setLevelPath(category.getLevelPath()+"_"+childCategory.getId()); + } + if(CollectionUtil.isNotEmpty(childCategories)){ + this.updateBatchById(childCategories); + } + } + //更新商品树 + updateSpuCategory(category,parent,oldParent); + } + } + + } + + /** + * todo 更新商品树 + * @param category + * @param parent + * @param oldParent + */ + private void updateSpuCategory(GoodsCategory category,GoodsCategory parent,GoodsCategory oldParent){ + if(parent.getLevel()==2){ + + } + } + + private void updateLevel(GoodsCategory parent,GoodsCategory category){ + if(parent.getLevel()>= GoodsConst.CATE_MAX_LEVEL){ + Assert.throwEx("最高支持3级类目"); + } + category.setLevel(parent.getLevel()+1); + this.save(category); + category.setLevelPath(parent.getLevelPath()+"_"+category.getId().toString()); + this.updateById(category); + } + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java index 2022dc99..b75d9637 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java @@ -58,7 +58,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl im @Override @Transactional(rollbackFor = Exception.class) public void editSku(GoodsSkuBo goodSkuVo) { - GoodsSku dbGoodSku = this.getByCode(goodSkuVo.getSkuCode()); + GoodsSku dbGoodSku = this.getById(goodSkuVo.getSkuId()); GoodsSku goodsSku = CopierUtil.copy(goodSkuVo,new GoodsSku()); if(dbGoodSku!=null){ if(goodsSku.getSpuId()!=null&&goodsSku.getSpuId().equals(dbGoodSku.getSpuId())){ diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java index 5736f2ce..04dda5c5 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java @@ -8,6 +8,7 @@ import com.qs.serve.modules.bms.entity.BmsFactory; import com.qs.serve.modules.bms.service.BmsFactoryService; import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; +import com.qs.serve.modules.goods.entity.bo.GoodsSpuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuEditBo; import com.qs.serve.modules.goods.entity.bo.GoodsSpuTasteBo; import com.qs.serve.modules.goods.entity.vo.*; @@ -98,7 +99,17 @@ public class GoodsSpuServiceImpl extends ServiceImpl im } } - + @Override + public void editTasteSpu(GoodsSpuBo param) { + GoodsSpu spu = CopierUtil.copy(param,new GoodsSpu()); + if(param.getId()!=null){ + spu.setSpuCode(null); + } + GoodsCategory category = goodsCategoryService.getById(param.getCategoryId()); + relateCate(spu,category); + this.saveOrUpdate(spu); + insertSpuSpec(spu.getId()); + } @Override public List saveBatchTasteSpu(GoodsSpuBatchTasteBo batchTasteBo) { @@ -149,7 +160,6 @@ public class GoodsSpuServiceImpl extends ServiceImpl im if(goodsSeries!=null){ spu.setSeriesId(goodsSeries.getId()); } - spu.setSpecType("1"); spu.setTasteValue(tasteProduct.getProductTasteValue()); if(spu.getId()==null){ this.save(spu); @@ -254,7 +264,7 @@ public class GoodsSpuServiceImpl extends ServiceImpl im spuSpec3.setSpecId(3L); spuSpec3.setSort(1); spuSpecList.add(spuSpec3); - goodsSpuSpecService.saveBatch(spuSpecList); + goodsSpuSpecService.saveOrUpdateBatch(spuSpecList); } } diff --git a/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml b/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml new file mode 100644 index 00000000..f4fe1422 --- /dev/null +++ b/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + bms_supplier_channel.`id`, + bms_supplier_channel.`channel_id`, + bms_supplier_channel.`supplier_id`, + bms_supplier_channel.`create_time`, + bms_supplier_channel.`update_time`, + bms_supplier_channel.`tenant_id`, + bms_supplier_channel.`del_flag`, + bms_supplier_channel.`create_by`, + bms_supplier_channel.`update_by` + + + + diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 4e4eac67..95dac674 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -11,6 +11,11 @@ + + + + + @@ -38,6 +43,11 @@ bms_supplier.`region_first`, bms_supplier.`region_second`, bms_supplier.`region_third`, + bms_supplier.`region_last`, + bms_supplier.`region2_first`, + bms_supplier.`region2_second`, + bms_supplier.`region2_third`, + bms_supplier.`region2_last`, bms_supplier.`address`, bms_supplier.`name`, bms_supplier.`code`, diff --git a/src/main/resources/mapper/bms/GoodsSpuMapper.xml b/src/main/resources/mapper/bms/GoodsSpuMapper.xml new file mode 100644 index 00000000..7b7b941c --- /dev/null +++ b/src/main/resources/mapper/bms/GoodsSpuMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + goods_spu.`id`, + goods_spu.`spu_code`, + goods_spu.`name`, + goods_spu.`brand_id`, + goods_spu.`series_id`, + goods_spu.`category_first`, + goods_spu.`category_second`, + goods_spu.`category_third`, + goods_spu.`category_last`, + goods_spu.`pic_urls`, + goods_spu.`shelf`, + goods_spu.`sort`, + goods_spu.`sale_num`, + goods_spu.`spec_type`, + goods_spu.`taste_value`, + goods_spu.`create_time`, + goods_spu.`update_time`, + goods_spu.`create_by`, + goods_spu.`update_by`, + goods_spu.`tenant_id`, + goods_spu.`del_flag` + + + +