From a9946887264b2ac185257215adbc4d9df331ccc6 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 20 Mar 2022 22:31:48 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=8F=91=E5=B8=83=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=202=E3=80=81=E9=80=9A=E7=94=A8=E7=B1=BB?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xjs/mall/RemoteCouponFeign.java | 34 + .../src/main/java/com/xjs/mall/other}/R.java | 20 +- .../java/com/xjs/mall}/to/MemberPrice.java | 17 +- .../java/com/xjs/mall}/to/SkuReductionTo.java | 14 +- .../java/com/xjs/mall}/to/SpuBoundTo.java | 2 +- .../core/constant/ServiceNameConstants.java | 20 +- ruoyi-ui/package.json | 1 + ruoyi-ui/src/api/mall/product/attr-group.js | 8 + ruoyi-ui/src/api/mall/product/brand.js | 9 + ruoyi-ui/src/api/mall/product/spu-info.js | 10 + .../src/components/OssUpload/multiUpload.vue | 63 +- ruoyi-ui/src/main.js | 3 + .../views/components/mall/brand-select.vue | 73 ++ .../components/mall/category-cascader.vue | 36 +- .../src/views/mall/product/maintain/spu.vue | 89 ++ .../views/mall/product/maintain/spuadd.vue | 799 ++++++++++++++++++ .../views/mall/product/maintain/spuinfo.vue | 153 ++++ .../main/java/com/xjs/config/JsonConfig.java | 15 +- .../coupon/controller/CouponController.java | 2 +- .../controller/CouponHistoryController.java | 2 +- .../CouponSpuCategoryRelationController.java | 2 +- .../CouponSpuRelationController.java | 2 +- .../coupon/controller/HomeAdvController.java | 2 +- .../controller/HomeSubjectController.java | 2 +- .../controller/HomeSubjectSpuController.java | 2 +- .../controller/MemberPriceController.java | 2 +- .../SeckillPromotionController.java | 2 +- .../controller/SeckillSessionController.java | 2 +- .../SeckillSkuNoticeController.java | 2 +- .../SeckillSkuRelationController.java | 2 +- .../SkuFullReductionController.java | 29 +- .../controller/SkuLadderController.java | 2 +- .../controller/SpuBoundsController.java | 25 +- .../service/SkuFullReductionService.java | 7 + .../impl/SkuFullReductionServiceImpl.java | 67 +- .../GrowthChangeHistoryController.java | 2 +- .../IntegrationChangeHistoryController.java | 2 +- .../MemberCollectSpuController.java | 2 +- .../MemberCollectSubjectController.java | 2 +- .../member/controller/MemberController.java | 2 +- .../controller/MemberLevelController.java | 2 +- .../controller/MemberLoginLogController.java | 2 +- .../MemberReceiveAddressController.java | 2 +- .../MemberStatisticsInfoController.java | 2 +- .../order/controller/OrderController.java | 2 +- .../order/controller/OrderItemController.java | 2 +- .../OrderOperateHistoryController.java | 2 +- .../OrderReturnApplyController.java | 2 +- .../OrderReturnReasonController.java | 2 +- .../controller/OrderSettingController.java | 2 +- .../controller/PaymentInfoController.java | 2 +- .../controller/RefundInfoController.java | 2 +- .../product/controller/AttrController.java | 2 +- .../controller/AttrGroupController.java | 12 +- .../product/controller/BrandController.java | 2 +- .../CategoryBrandRelationController.java | 2 +- .../controller/CategoryController.java | 3 +- .../controller/CommentReplayController.java | 2 +- .../ProductAttrValueController.java | 2 +- .../controller/SkuImagesController.java | 2 +- .../product/controller/SkuInfoController.java | 21 +- .../SkuSaleAttrValueController.java | 2 +- .../controller/SpuCommentController.java | 2 +- .../controller/SpuImagesController.java | 2 +- .../product/controller/SpuInfoController.java | 47 +- .../controller/SpuInfoDescController.java | 2 +- .../mall/product/entity/CategoryEntity.java | 4 +- .../product/entity/SpuInfoDescEntity.java | 8 +- .../product/service/AttrGroupService.java | 4 +- .../service/ProductAttrValueService.java | 11 +- .../mall/product/service/SkuInfoService.java | 6 + .../product/service/SpuImagesService.java | 10 +- .../product/service/SpuInfoDescService.java | 8 +- .../mall/product/service/SpuInfoService.java | 18 +- .../service/impl/AttrGroupServiceImpl.java | 22 + .../impl/ProductAttrValueServiceImpl.java | 43 +- .../service/impl/SkuInfoServiceImpl.java | 17 +- .../service/impl/SpuImagesServiceImpl.java | 29 +- .../service/impl/SpuInfoDescServiceImpl.java | 17 +- .../service/impl/SpuInfoServiceImpl.java | 151 +++- .../mall/product/vo/AttrGroupWithAttrsVo.java | 40 + .../com/xjs/mall/product/vo/spu/Attr.java | 29 + .../xjs/mall/product/vo/spu/BaseAttrs.java | 26 + .../com/xjs/mall/product/vo/spu/Bounds.java | 20 + .../com/xjs/mall/product/vo/spu/Images.java | 24 + .../com/xjs/mall/product/vo/spu/Skus.java | 86 ++ .../xjs/mall/product/vo/spu/SpuSaveVo.java | 80 ++ .../ware/controller/PurchaseController.java | 2 +- .../controller/PurchaseDetailController.java | 4 +- .../ware/controller/WareInfoController.java | 2 +- .../controller/WareOrderTaskController.java | 2 +- .../WareOrderTaskDetailController.java | 2 +- .../ware/controller/WareSkuController.java | 2 +- 93 files changed, 2099 insertions(+), 225 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteCouponFeign.java rename {xjs-business/xjs-business-common/src/main/java/com/xjs/utils => ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/other}/R.java (81%) rename {xjs-business/xjs-business-common/src/main/java/com/xjs => ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall}/to/MemberPrice.java (51%) rename {xjs-business/xjs-business-common/src/main/java/com/xjs => ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall}/to/SkuReductionTo.java (68%) rename {xjs-business/xjs-business-common/src/main/java/com/xjs => ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall}/to/SpuBoundTo.java (87%) create mode 100644 ruoyi-ui/src/api/mall/product/spu-info.js create mode 100644 ruoyi-ui/src/views/components/mall/brand-select.vue create mode 100644 ruoyi-ui/src/views/mall/product/maintain/spu.vue create mode 100644 ruoyi-ui/src/views/mall/product/maintain/spuadd.vue create mode 100644 ruoyi-ui/src/views/mall/product/maintain/spuinfo.vue create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/AttrGroupWithAttrsVo.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/Attr.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/BaseAttrs.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/Bounds.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/Images.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/Skus.java create mode 100644 xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/vo/spu/SpuSaveVo.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteCouponFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteCouponFeign.java new file mode 100644 index 00000000..7a1b50e0 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/RemoteCouponFeign.java @@ -0,0 +1,34 @@ +package com.xjs.mall; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.xjs.mall.other.R; +import com.xjs.mall.to.SkuReductionTo; +import com.xjs.mall.to.SpuBoundTo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 远程调用优惠服务接口feign + * @author xiejs + * @since 2022-03-20 + */ +@FeignClient(contextId = "remoteCouponFeign", + value = ServiceNameConstants.MALL_COUPON_SERVICE) +public interface RemoteCouponFeign { + + + /** + * 保存spu优惠信息接口 + */ + @PostMapping("/coupon/spubounds/save") + R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo); + + /** + * 保存满减、会员价信息接口 + * @param skuReductionTo 满减信息 + * @return R + */ + @PostMapping("/coupon/skufullreduction/saveinfo") + R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo); +} diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/utils/R.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/other/R.java similarity index 81% rename from xjs-business/xjs-business-common/src/main/java/com/xjs/utils/R.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/other/R.java index 93c53db2..7cf8b1a4 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/utils/R.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/other/R.java @@ -6,9 +6,9 @@ * 版权所有,侵权必究! */ -package com.xjs.utils; +package com.xjs.mall.other; -import org.apache.http.HttpStatus; +import com.ruoyi.common.core.constant.HttpStatus; import java.util.HashMap; import java.util.Map; @@ -20,20 +20,20 @@ import java.util.Map; */ public class R extends HashMap { private static final long serialVersionUID = 1L; - + public R() { put("code", 0); put("msg", "success"); } - + public static R error() { - return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员"); + return error(HttpStatus.ERROR, "未知异常,请联系管理员"); } - + public static R error(String msg) { - return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg); + return error(HttpStatus.ERROR, msg); } - + public static R error(int code, String msg) { R r = new R(); r.put("code", code); @@ -46,13 +46,13 @@ public class R extends HashMap { r.put("msg", msg); return r; } - + public static R ok(Map map) { R r = new R(); r.putAll(map); return r; } - + public static R ok() { return new R(); } diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/MemberPrice.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/MemberPrice.java similarity index 51% rename from xjs-business/xjs-business-common/src/main/java/com/xjs/to/MemberPrice.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/MemberPrice.java index 5bbfd1d1..216ff8e3 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/MemberPrice.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/MemberPrice.java @@ -1,21 +1,26 @@ -package com.xjs.to; +package com.xjs.mall.to; import lombok.Data; import java.math.BigDecimal; /** - * Auto-generated: 2019-11-26 10:50:34 - * - * @author bejson.com (i@bejson.com) - * @website http://www.bejson.com/java2pojo/ + * 会员价vo + * @author xiejs + * @since 2022-03-20 13:51:55 */ @Data public class MemberPrice { private Long id; + /** + * 会员名称 + */ private String name; + /** + * 会员价格 + */ private BigDecimal price; -} \ No newline at end of file +} diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/SkuReductionTo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SkuReductionTo.java similarity index 68% rename from xjs-business/xjs-business-common/src/main/java/com/xjs/to/SkuReductionTo.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SkuReductionTo.java index 46f06b95..78005d5c 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/SkuReductionTo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SkuReductionTo.java @@ -1,4 +1,4 @@ -package com.xjs.to; +package com.xjs.mall.to; import lombok.Data; @@ -9,10 +9,22 @@ import java.util.List; public class SkuReductionTo { private Long skuId; + /** + * 满多少件打折 + */ private int fullCount; + /** + * 折扣 + */ private BigDecimal discount; private int countStatus; + /** + * 满多少钱减 + */ private BigDecimal fullPrice; + /** + * 减多少 + */ private BigDecimal reducePrice; private int priceStatus; private List memberPrice; diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/SpuBoundTo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SpuBoundTo.java similarity index 87% rename from xjs-business/xjs-business-common/src/main/java/com/xjs/to/SpuBoundTo.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SpuBoundTo.java index 8e1397f1..4c476474 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/to/SpuBoundTo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/mall/to/SpuBoundTo.java @@ -1,4 +1,4 @@ -package com.xjs.to; +package com.xjs.mall.to; import lombok.Data; diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java index 97c0acf3..cc88e31e 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java @@ -2,11 +2,10 @@ package com.ruoyi.common.core.constant; /** * 服务名称 - * + * * @author ruoyi */ -public class ServiceNameConstants -{ +public class ServiceNameConstants { /** * 认证服务的serviceid */ @@ -25,27 +24,28 @@ public class ServiceNameConstants /** * 第三方api业务服务的serviceid */ - public static final String BUSINESS_OPENAPI_SERVICE= "xjs-openapi" ; + public static final String BUSINESS_OPENAPI_SERVICE = "xjs-openapi"; /** * 预警服务的serviceid */ - public static final String BUSINESS_WARNING_SERVICE= "xjs-warning" ; + public static final String BUSINESS_WARNING_SERVICE = "xjs-warning"; /** * 日志服务的serviceid */ - public static final String BUSINESS_LOG_SERVICE= "xjs-log" ; + public static final String BUSINESS_LOG_SERVICE = "xjs-log"; /** * 爬虫服务的serviceid */ - public static final String BUSINESS_WEBMAGIC_SERVICE= "xjs-webmagic" ; - - - + public static final String BUSINESS_WEBMAGIC_SERVICE = "xjs-webmagic"; + /** + * 优惠服务的serviceid + */ + public static final String MALL_COUPON_SERVICE = "xjs-mall-coupon"; } diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index e80eeccb..29485f76 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -50,6 +50,7 @@ "js-cookie": "3.0.1", "jsencrypt": "3.2.1", "nprogress": "0.2.0", + "pubsub-js": "^1.9.4", "quill": "1.3.7", "screenfull": "5.0.2", "sortablejs": "1.10.2", diff --git a/ruoyi-ui/src/api/mall/product/attr-group.js b/ruoyi-ui/src/api/mall/product/attr-group.js index ec2edfed..3179dd5d 100644 --- a/ruoyi-ui/src/api/mall/product/attr-group.js +++ b/ruoyi-ui/src/api/mall/product/attr-group.js @@ -70,6 +70,14 @@ export function addRelation(ids) { }) } +// 根据分类id获取分类属性 +export function getAttrGroupWithAttrs(catelogId) { + return request({ + url: `/mall-product/product/attrgroup/${catelogId}/withattr`, + method: 'get', + }) +} + diff --git a/ruoyi-ui/src/api/mall/product/brand.js b/ruoyi-ui/src/api/mall/product/brand.js index 79e500e7..4d5268a1 100644 --- a/ruoyi-ui/src/api/mall/product/brand.js +++ b/ruoyi-ui/src/api/mall/product/brand.js @@ -44,5 +44,14 @@ export function delBrand(ids) { }) } +// 根据分类id找到品牌 +export function catelogList(catId) { + return request({ + url: '/mall-product/product/categorybrandrelation/brands/list', + method: 'get', + params:catId + }) +} + diff --git a/ruoyi-ui/src/api/mall/product/spu-info.js b/ruoyi-ui/src/api/mall/product/spu-info.js new file mode 100644 index 00000000..fd32c650 --- /dev/null +++ b/ruoyi-ui/src/api/mall/product/spu-info.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 保存spu关联的所有信息 +export function saveSpuInfo(data) { + return request({ + url: '/mall-product/product/spuinfo/save', + method: 'post', + data: data + }) +} diff --git a/ruoyi-ui/src/components/OssUpload/multiUpload.vue b/ruoyi-ui/src/components/OssUpload/multiUpload.vue index 28ff917d..296fedb9 100644 --- a/ruoyi-ui/src/components/OssUpload/multiUpload.vue +++ b/ruoyi-ui/src/components/OssUpload/multiUpload.vue @@ -9,7 +9,9 @@ :on-remove="handleRemove" :on-success="handleUploadSuccess" :on-preview="handlePreview" + :before-remove="removeImg" :limit="maxCount" + accept="image/*" :on-exceed="handleExceed" > @@ -20,7 +22,7 @@ diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index e91ccca0..0f08d54b 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -37,6 +37,8 @@ import DictTag from '@/components/DictTag' import VueMeta from 'vue-meta' // 字典数据组件 import DictData from '@/components/DictData' +// 消息发布订阅组件 +import PubSub from 'pubsub-js' // 全局方法挂载 Vue.prototype.getDicts = getDicts @@ -48,6 +50,7 @@ Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree +Vue.prototype.PubSub = PubSub //组件发布订阅消息 // 全局组件挂载 Vue.component('DictTag', DictTag) diff --git a/ruoyi-ui/src/views/components/mall/brand-select.vue b/ruoyi-ui/src/views/components/mall/brand-select.vue new file mode 100644 index 00000000..6360ac56 --- /dev/null +++ b/ruoyi-ui/src/views/components/mall/brand-select.vue @@ -0,0 +1,73 @@ + + + + diff --git a/ruoyi-ui/src/views/components/mall/category-cascader.vue b/ruoyi-ui/src/views/components/mall/category-cascader.vue index 9f43c905..de910aa3 100644 --- a/ruoyi-ui/src/views/components/mall/category-cascader.vue +++ b/ruoyi-ui/src/views/components/mall/category-cascader.vue @@ -1,12 +1,12 @@