From 7ae2f66ea45e22febd68f2ab3ba4410158d407fc Mon Sep 17 00:00:00 2001 From: ddyd <2073699128@qq.com> Date: Wed, 27 Aug 2025 12:43:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=B3=BB=E7=BB=9F=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E7=BB=93=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/controller/AttrController.java | 27 ++++++++++ .../service/ProductAttrValueService.java | 4 ++ .../product/service/impl/AttrServiceImpl.java | 2 +- .../impl/ProductAttrValueServiceImpl.java | 24 +++++++++ .../bookmall/ware/BookWareApplication.java | 5 +- .../ware/config/WareMyBatisConfig.java | 22 +++++++++ .../ware/controller/PurchaseController.java | 12 +++-- .../ware/feign/ProductFeignService.java | 8 +++ .../ware/service/PurchaseService.java | 3 ++ .../service/impl/PurchaseServiceImpl.java | 49 ++++++++++++++++++- .../bookstore/bookmall/ware/vo/MergeVo.java | 7 +++ book-ware/src/main/resources/application.yml | 2 + .../common}/constant/ProductConstant.java | 2 +- .../common/constant/WareConstant.java | 49 +++++++++++++++++++ .../src/views/modules/product/attrupdate.vue | 19 ++++--- .../src/views/modules/product/spuinfo.vue | 7 ++- 16 files changed, 224 insertions(+), 18 deletions(-) create mode 100644 book-ware/src/main/java/com/bookstore/bookmall/ware/config/WareMyBatisConfig.java create mode 100644 book-ware/src/main/java/com/bookstore/bookmall/ware/feign/ProductFeignService.java rename {book-product/src/main/java/com/bookstore/bookmall/product => mall-common/src/main/java/com/bookstore/common}/constant/ProductConstant.java (85%) create mode 100644 mall-common/src/main/java/com/bookstore/common/constant/WareConstant.java diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java index 2bc3d28..54043bc 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java @@ -1,9 +1,12 @@ package com.bookstore.bookmall.product.controller; import java.util.Arrays; +import java.util.List; import java.util.Map; +import com.bookstore.bookmall.product.entity.ProductAttrValueEntity; +import com.bookstore.bookmall.product.service.ProductAttrValueService; import com.bookstore.bookmall.product.vo.AttrRespVo; import com.bookstore.bookmall.product.vo.AttrVo; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +31,20 @@ import com.bookstore.common.utils.R; public class AttrController { @Autowired private AttrService attrService; + @Autowired + private ProductAttrValueService productAttrValueService; + + + + //GET /product/attr/base/listforspu/{spuId} + @GetMapping("/base/listforspu/{spuId}") + public R baseAttrlistforspu(@PathVariable("spuId") Long spuId) { + + List attrValueEntityList = productAttrValueService.baseAttrlistforspu(spuId); + + return R.ok().put("data", attrValueEntityList); + } + // /product/attr/base/list/{catelogId} @GetMapping("/{attrType}/list/{catelogId}") @@ -77,6 +94,16 @@ public class AttrController { } + //POST /product/attr/update/19 + @RequestMapping("/update/{spuId}") + //@RequiresPermissions("product:attr:update") + public R updateSpuAttr(@RequestBody List entities, + @PathVariable("spuId") Long spuId){ + productAttrValueService.updateSpuAttr(spuId,entities); + + return R.ok(); + } + /** * 修改 */ diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/ProductAttrValueService.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/ProductAttrValueService.java index ff3681a..a6ec57c 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/ProductAttrValueService.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/ProductAttrValueService.java @@ -19,5 +19,9 @@ public interface ProductAttrValueService extends IService params); void saveProductAttr(List collect); + + List baseAttrlistforspu(Long spuId); + + void updateSpuAttr(Long spuId, List entities); } diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java index d19a6e8..55e21d3 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java @@ -1,7 +1,7 @@ package com.bookstore.bookmall.product.service.impl; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.bookstore.bookmall.product.constant.ProductConstant; +import com.bookstore.common.constant.ProductConstant; import com.bookstore.bookmall.product.dao.AttrAttrgroupRelationDao; import com.bookstore.bookmall.product.dao.AttrGroupDao; import com.bookstore.bookmall.product.dao.CategoryDao; diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/ProductAttrValueServiceImpl.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/ProductAttrValueServiceImpl.java index 5b20a6e..48eb89b 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/ProductAttrValueServiceImpl.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/ProductAttrValueServiceImpl.java @@ -1,9 +1,12 @@ package com.bookstore.bookmall.product.service.impl; +import com.alibaba.nacos.shaded.io.grpc.Grpc; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,6 +16,7 @@ import com.bookstore.common.utils.Query; import com.bookstore.bookmall.product.dao.ProductAttrValueDao; import com.bookstore.bookmall.product.entity.ProductAttrValueEntity; import com.bookstore.bookmall.product.service.ProductAttrValueService; +import org.springframework.transaction.annotation.Transactional; @Service("productAttrValueService") @@ -33,4 +37,24 @@ public class ProductAttrValueServiceImpl extends ServiceImpl baseAttrlistforspu(Long spuId) { + List entities = this.baseMapper.selectList( + new QueryWrapper().eq("spu_id", spuId)); + + return entities; + } + + @Transactional + @Override + public void updateSpuAttr(Long spuId, List entities) { + //1、删除这个spu之前对应的所有属性 + this.baseMapper.delete(new QueryWrapper().eq("spu_id", spuId)); + List collect = entities.stream().map((item) -> { + item.setSpuId(spuId); + return item; + }).collect(Collectors.toList()); + this.saveBatch(collect); + } + } \ No newline at end of file diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/BookWareApplication.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/BookWareApplication.java index 8651065..2ad05f0 100644 --- a/book-ware/src/main/java/com/bookstore/bookmall/ware/BookWareApplication.java +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/BookWareApplication.java @@ -4,11 +4,12 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.transaction.annotation.EnableTransactionManagement; -@EnableTransactionManagement -@MapperScan("com.bookstore.bookmall.ware.dao") + +@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class BookWareApplication { diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/config/WareMyBatisConfig.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/config/WareMyBatisConfig.java new file mode 100644 index 0000000..bc8a1fa --- /dev/null +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/config/WareMyBatisConfig.java @@ -0,0 +1,22 @@ +package com.bookstore.bookmall.ware.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@EnableTransactionManagement +@MapperScan("com.bookstore.bookmall.ware.dao") +@Configuration +public class WareMyBatisConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加 + // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType + return interceptor; + } +} diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/controller/PurchaseController.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/controller/PurchaseController.java index d4c856e..334a94f 100644 --- a/book-ware/src/main/java/com/bookstore/bookmall/ware/controller/PurchaseController.java +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/controller/PurchaseController.java @@ -1,9 +1,11 @@ package com.bookstore.bookmall.ware.controller; import java.util.Arrays; +import java.util.Date; import java.util.Map; +import com.bookstore.bookmall.ware.vo.MergeVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -29,12 +31,12 @@ public class PurchaseController { //合并采购需求 // /ware/purchase/merge - @PostMapping("/ware/purchase/merge") + @PostMapping("/merge") //@RequiresPermissions("ware:purchase:list") - public R unreceivelist(@RequestParam Map params){ - PageUtils page = purchaseService.queryPageUnreceivePurchase(params); + public R merge(@RequestBody MergeVo mergeVo){ + purchaseService.mergePurchase(mergeVo); - return R.ok().put("page", page); + return R.ok(); } //查询采购单 @@ -76,6 +78,8 @@ public class PurchaseController { @RequestMapping("/save") //@RequiresPermissions("ware:purchase:save") public R save(@RequestBody PurchaseEntity purchase){ + purchase.setCreateTime(new Date()); + purchase.setUpdateTime(new Date()); purchaseService.save(purchase); return R.ok(); diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/feign/ProductFeignService.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/feign/ProductFeignService.java new file mode 100644 index 0000000..7aea882 --- /dev/null +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/feign/ProductFeignService.java @@ -0,0 +1,8 @@ +package com.bookstore.bookmall.ware.feign; + + +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient("book-product") +public class ProductFeignService { +} diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/service/PurchaseService.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/service/PurchaseService.java index 11a5d44..ac6d639 100644 --- a/book-ware/src/main/java/com/bookstore/bookmall/ware/service/PurchaseService.java +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/service/PurchaseService.java @@ -1,6 +1,7 @@ package com.bookstore.bookmall.ware.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bookstore.bookmall.ware.vo.MergeVo; import com.bookstore.common.utils.PageUtils; import com.bookstore.bookmall.ware.entity.PurchaseEntity; @@ -18,5 +19,7 @@ public interface PurchaseService extends IService { PageUtils queryPage(Map params); PageUtils queryPageUnreceivePurchase(Map params); + + void mergePurchase(MergeVo mergeVo); } diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/service/impl/PurchaseServiceImpl.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/service/impl/PurchaseServiceImpl.java index a782498..32a74d6 100644 --- a/book-ware/src/main/java/com/bookstore/bookmall/ware/service/impl/PurchaseServiceImpl.java +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/service/impl/PurchaseServiceImpl.java @@ -1,7 +1,17 @@ package com.bookstore.bookmall.ware.service.impl; +import com.bookstore.bookmall.ware.entity.PurchaseDetailEntity; +import com.bookstore.bookmall.ware.service.PurchaseDetailService; +import com.bookstore.bookmall.ware.vo.MergeVo; +import com.bookstore.common.constant.WareConstant; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,12 +21,14 @@ import com.bookstore.common.utils.Query; import com.bookstore.bookmall.ware.dao.PurchaseDao; import com.bookstore.bookmall.ware.entity.PurchaseEntity; import com.bookstore.bookmall.ware.service.PurchaseService; +import org.springframework.transaction.annotation.Transactional; @Service("purchaseService") public class PurchaseServiceImpl extends ServiceImpl implements PurchaseService { - + @Autowired + PurchaseDetailService purchaseDetailService; @Override @@ -43,4 +55,39 @@ public class PurchaseServiceImpl extends ServiceImpl items = mergeVo.getItems(); + Long finalPurchaseId = purchaseId; + List collect = items.stream().map(item -> { + PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity(); + purchaseDetailEntity.setId(item); + purchaseDetailEntity.setPurchaseId(finalPurchaseId); + purchaseDetailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode()); + return purchaseDetailEntity; + }).collect(Collectors.toList()); + + purchaseDetailService.updateBatchById(collect); + + PurchaseEntity purchaseEntity = new PurchaseEntity(); + purchaseEntity.setId(purchaseId); + purchaseEntity.setUpdateTime(new Date()); + this.updateById(purchaseEntity); + + } + } \ No newline at end of file diff --git a/book-ware/src/main/java/com/bookstore/bookmall/ware/vo/MergeVo.java b/book-ware/src/main/java/com/bookstore/bookmall/ware/vo/MergeVo.java index 5b303ac..33fd550 100644 --- a/book-ware/src/main/java/com/bookstore/bookmall/ware/vo/MergeVo.java +++ b/book-ware/src/main/java/com/bookstore/bookmall/ware/vo/MergeVo.java @@ -1,5 +1,12 @@ package com.bookstore.bookmall.ware.vo; +import lombok.Data; + +import java.util.List; + +@Data public class MergeVo { + private Long purchaseId; + private List items; } diff --git a/book-ware/src/main/resources/application.yml b/book-ware/src/main/resources/application.yml index 739061c..4dc80dd 100644 --- a/book-ware/src/main/resources/application.yml +++ b/book-ware/src/main/resources/application.yml @@ -10,6 +10,8 @@ spring: server-addr: 127.0.0.1:8848 application: name: mall-ware + jackson: + date-format: yyyy-MM-dd HH:mm:ss mybatis-plus: config-locations: classpath*:/mapper/**/*.xml #classpath*中的*指的是不止引用自己路径的mapper,依赖的jar包也扫描 diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/constant/ProductConstant.java b/mall-common/src/main/java/com/bookstore/common/constant/ProductConstant.java similarity index 85% rename from book-product/src/main/java/com/bookstore/bookmall/product/constant/ProductConstant.java rename to mall-common/src/main/java/com/bookstore/common/constant/ProductConstant.java index 31b67f3..b0fdf65 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/constant/ProductConstant.java +++ b/mall-common/src/main/java/com/bookstore/common/constant/ProductConstant.java @@ -1,4 +1,4 @@ -package com.bookstore.bookmall.product.constant; +package com.bookstore.common.constant; public class ProductConstant { public enum AttrEnum{ diff --git a/mall-common/src/main/java/com/bookstore/common/constant/WareConstant.java b/mall-common/src/main/java/com/bookstore/common/constant/WareConstant.java new file mode 100644 index 0000000..8b3d30b --- /dev/null +++ b/mall-common/src/main/java/com/bookstore/common/constant/WareConstant.java @@ -0,0 +1,49 @@ +package com.bookstore.common.constant; + + +public class WareConstant { + public enum PurchaseStatusEnum{ + CREATED(0, "新建"), ASSIGNED(1,"已分配"), + RECEIVE(2, "已领取"),FINISH(3, "已完成"), + HASERROR(4, "异常"); + + private int code; + private String msg; + + PurchaseStatusEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + public int getCode() { + return code; + } + public String getMsg() { + return msg; + } + + } + + + public enum PurchaseDetailStatusEnum{ + CREATED(0, "新建"), ASSIGNED(1,"已分配"), + BUYING(2, "正在采购"),FINISH(3, "已完成"), + HASERROR(4, "采购失败"); + + private int code; + private String msg; + + PurchaseDetailStatusEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + public int getCode() { + return code; + } + public String getMsg() { + return msg; + } + + } +} diff --git a/renren-fast-vue/src/views/modules/product/attrupdate.vue b/renren-fast-vue/src/views/modules/product/attrupdate.vue index 8d6b25f..8a33569 100644 --- a/renren-fast-vue/src/views/modules/product/attrupdate.vue +++ b/renren-fast-vue/src/views/modules/product/attrupdate.vue @@ -103,15 +103,18 @@ export default { params: this.$http.adornParams({}) }).then(({ data }) => { //先对表单的baseAttrs进行初始化 + console.log("这是response的data.data", data); + console.log("这是response的spuattrmap", this.spuAttrsMap); data.data.forEach(item => { let attrArray = []; item.attrs.forEach(attr => { - let v = ""; - if (_this.spuAttrsMap["" + attr.attrId]) { - v = _this.spuAttrsMap["" + attr.attrId].attrValue.split(";"); - if (v.length == 1) { - v = v[0] + ""; - } + let v = attr.valueType == 1 ? [] : ""; + if (this.spuAttrsMap["" + attr.attrId]) { + let attrValue = this.spuAttrsMap["" + attr.attrId].attrValue; + v = attrValue ? attrValue.split(";") : []; + if (attr.valueType == 0 && v.length == 1) { + v = v[0] + ""; + } } attrArray.push({ attrId: attr.attrId, @@ -125,6 +128,8 @@ export default { this.dataResp.baseAttrs.push(attrArray); }); this.dataResp.attrGroups = data.data; + console.log("这是baseattr",this.dataResp.baseAttrs); + console.log("这是attrGroup",this.dataResp.attrGroups); }); }, submitSpuAttrs() { @@ -187,5 +192,3 @@ export default { } }; - - \ No newline at end of file diff --git a/renren-fast-vue/src/views/modules/product/spuinfo.vue b/renren-fast-vue/src/views/modules/product/spuinfo.vue index 72d6b04..5bfa8ab 100644 --- a/renren-fast-vue/src/views/modules/product/spuinfo.vue +++ b/renren-fast-vue/src/views/modules/product/spuinfo.vue @@ -95,6 +95,7 @@ export default { }, attrUpdateShow(row) { console.log(row); + console.log("spuId:", row.id, "catalogId:", row.catalogId); this.$router.push({ path: "/product-attrupdate", query: { spuId: row.id, catalogId: row.catalogId } @@ -150,6 +151,10 @@ export default { }, beforeDestroy() { PubSub.unsubscribe(this.dataSub); - } + }, + // 在 AttrUpdate.vue 中 + + + };