From 91ec2fe7b1087b18f40bba6ffda07ad601d562ed Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 22 Dec 2022 10:48:15 +0800
Subject: [PATCH] 20221222

---
 src/main/resources/mapper/modules/MallGoodsMapper.xml                           |   12 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java       |   35 ++++++--
 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html          |    7 -
 src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java                          |    7 -
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |  108 +++-----------------------
 src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html       |    4 
 src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java                    |    3 
 src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java              |   28 +++++++
 8 files changed, 88 insertions(+), 116 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java
index b0cbafa..ee66ed0 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/StarRatingEnum.java
@@ -63,6 +63,34 @@
         return  code;
     }
 
+    /**
+     * 获取商品可以设置的最小价格
+     * @return
+     */
+    public Integer getMinValue(){
+        Integer totalMinvalue = 0;
+        for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){
+            if(starRatingEnum.minValue < totalMinvalue){
+                totalMinvalue = starRatingEnum.minValue;
+            }
+        }
+        return totalMinvalue;
+    }
+
+    /**
+     * 获取商品可以设置的最大价格
+     * @return
+     */
+    public Integer getMaxValue(){
+        Integer totalMaxValue = 0;
+        for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){
+            if(starRatingEnum.maxValue > totalMaxValue){
+                totalMaxValue = starRatingEnum.maxValue;
+            }
+        }
+        return totalMaxValue;
+    }
+
     public static void main(String[] args) {
         String s = StarRatingEnum.NORMAL.belongStarRating(String.valueOf(100));
         System.out.println(s);
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
index bc70f3a..5258765 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddOrderDto.java
@@ -19,10 +19,6 @@
     @ApiModelProperty(value = "商品ID", example = "1")
     private Long goodsId;
 
-    @NotNull(message = "参数不能为空")
-    @ApiModelProperty(value = "地址ID", example = "1")
-    private Long addressId;
-
     @ApiModelProperty(value = "门店ID", example = "1")
     private Long shopId;
 
@@ -37,8 +33,5 @@
 
     @ApiModelProperty(value = "配送方式 1:快递寄送2:到店自提")
     private Integer deliverType;
-
-    @ApiModelProperty(value = "商品明细")
-    private List<AddOrderItemDto> items;
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java
index 93b29a8..9be0b2b 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsQueryDto.java
@@ -40,4 +40,7 @@
 
     @ApiModelProperty(value = "1-付费商品 2-积分商品")
     private Integer goodsType;
+
+    @ApiModelProperty(value = " 1 :普通 | 2:一星 3:二星| 4:三星")
+    private Integer starRating;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
index 824441e..fde6ad8 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
@@ -112,15 +112,22 @@
         //新增商品
         MallGoods mallGoods = MallGoodsConversion.INSTANCE.dtoToEntity(addMallGoodsDto);
         mallGoods.setIsSale(MallGoods.ISSALE_STATUS_DISABLED);
-        //根据商品原价获取商品星级
-        String originalPrice = mallGoods.getOriginalPrice();
-        String starRating = StarRatingEnum.NORMAL.belongStarRating(originalPrice);
+        //根据商品现价获取商品星级
+        String presentPrice = mallGoods.getPresentPrice();
+
+        Integer minValue = StarRatingEnum.NORMAL.getMinValue();
+        Integer maxValue = StarRatingEnum.NORMAL.getMaxValue();
+        if(new BigDecimal(presentPrice).compareTo(new BigDecimal(minValue)) < 0
+        || new BigDecimal(presentPrice).compareTo(new BigDecimal(maxValue)) > 0){
+            return new FebsResponse().fail().message("商品现价不能小于"+ minValue + "不能大于" + maxValue);
+        }
+        String starRating = StarRatingEnum.NORMAL.belongStarRating(presentPrice);
         mallGoods.setStarRating(starRating);
-        //根据商品原价获取商品补贴金额
+        //根据商品现价获取商品补贴金额
         DataDictionaryCustom subsidyPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SUBSIDY_PERCENT.getType()
                 , DataDictionaryEnum.SUBSIDY_PERCENT.getCode());
         BigDecimal subsidyPercent = new BigDecimal(subsidyPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
-        BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(originalPrice)).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(presentPrice)).setScale(2, BigDecimal.ROUND_DOWN);
         mallGoods.setSubsidyAmount(subsidyAmount);
 //        if (mallGoods.getHasCarriage() == 2) {
 //            mallGoods.setCarriage(BigDecimal.ZERO);
@@ -356,15 +363,23 @@
 //        if (mallGoods.getHasCarriage() == 2) {
 //            mallGoods.setCarriage(BigDecimal.ZERO);
 //        }
-        //根据商品原价获取商品星级
-        String originalPrice = mallGoods.getOriginalPrice();
-        String starRating = StarRatingEnum.NORMAL.belongStarRating(originalPrice);
+
+        //根据商品现价获取商品星级
+        String presentPrice = mallGoods.getPresentPrice();
+
+        Integer minValue = StarRatingEnum.NORMAL.getMinValue();
+        Integer maxValue = StarRatingEnum.NORMAL.getMaxValue();
+        if(new BigDecimal(presentPrice).compareTo(new BigDecimal(minValue)) < 0
+                || new BigDecimal(presentPrice).compareTo(new BigDecimal(maxValue)) > 0){
+            return new FebsResponse().fail().message("商品现价不能小于"+ minValue + "不能大于" + maxValue);
+        }
+        String starRating = StarRatingEnum.NORMAL.belongStarRating(presentPrice);
         mallGoods.setStarRating(starRating);
-        //根据商品原价获取商品补贴金额
+        //根据商品现价获取商品补贴金额
         DataDictionaryCustom subsidyPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SUBSIDY_PERCENT.getType()
                 , DataDictionaryEnum.SUBSIDY_PERCENT.getCode());
         BigDecimal subsidyPercent = new BigDecimal(subsidyPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
-        BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(originalPrice)).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal subsidyAmount = subsidyPercent.multiply(new BigDecimal(presentPrice)).setScale(2, BigDecimal.ROUND_DOWN);
         mallGoods.setSubsidyAmount(subsidyAmount);
 
         mallGoodsMapper.updateById(mallGoods);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 040638a..7574237 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -99,6 +99,9 @@
         if(memberLevelCode < goodsStarCode){
             throw new FebsException("会员等级不够");
         }
+        if (MallGoods.ISSALE_STATUS_DISABLED.equals(goods.getIsSale())) {
+            throw new FebsException(goods.getGoodsName() + "已下架");
+        }
         /**
          * 会员一天最多下单次数
          */
@@ -114,102 +117,32 @@
             throw new FebsException("会员今日已无法购买");
         }
 
-//        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
-//        if (address == null) {
-//            throw new FebsException("地址不存在");
-//        }
-
         String orderNo = MallUtils.getOrderNum();
         MallOrderInfo orderInfo = new MallOrderInfo();
         orderInfo.setOrderNo(orderNo);
         orderInfo.setOrderTime(new Date());
         orderInfo.setMemberId(member.getId());
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
-//        orderInfo.setName(address.getName());
-//        orderInfo.setAddress(address.getArea() + address.getAddress());
-//        orderInfo.setPhone(address.getPhone());
-//        orderInfo.setLatitude(address.getLatitude());
-//        orderInfo.setLongitude(address.getLongitude());
         orderInfo.setRemark(addOrderDto.getRemark());
         orderInfo.setOrderType(addOrderDto.getOrderType());
         //补贴金额
         orderInfo.setSubsidyAmount(goods.getSubsidyAmount());
-        if (CollUtil.isEmpty(addOrderDto.getItems())) {
-            throw new FebsException("参数错误");
-        }
-
-//        int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType();
-//        if(2 == deliverType){
-//            if(ObjectUtil.isEmpty(addOrderDto.getShopId())){
-//                throw new FebsException("请选择门店");
-//            }
-//            Long shopId = addOrderDto.getShopId();
-//            MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId);
-//            if(ObjectUtil.isEmpty(mallShopApply)){
-//                throw new FebsException("请选择门店");
-//            }
-//            if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){
-//                throw new FebsException("请选择门店");
-//            }
-//            orderInfo.setShopId(shopId);
-//        }
 
         this.baseMapper.insert(orderInfo);
-        BigDecimal total = BigDecimal.ZERO;
-        BigDecimal carriage = BigDecimal.ZERO;
-        for (AddOrderItemDto item : addOrderDto.getItems()) {
-            MallOrderItem orderItem = new MallOrderItem();
-
-            // 积分商品提交订单
-            if (addOrderDto.getOrderType() == 2) {
-                MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
-                if (mallGoods.getStock() < item.getCnt()) {
-                    throw new FebsException(mallGoods.getGoodsName() + "库存不足");
-                }
-
-                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
-                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
-                }
-
-                BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
-                orderItem.setAmount(amount);
-                orderItem.setCnt(item.getCnt());
-                orderItem.setOrderId(orderInfo.getId());
-                orderItem.setPrice(mallGoods.getScore());
-                orderItem.setGoodsId(mallGoods.getId());
-                orderItem.setGoodsName(mallGoods.getGoodsName());
-                orderItem.setStyleName(mallGoods.getGoodsName());
-                orderItem.setSkuName(mallGoods.getGoodsName());
-                orderItem.setSkuImage(mallGoods.getThumb());
-
-                total = total.add(amount);
-            } else {
-                MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+        List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goods.getId());
+        for (MallGoodsSku sku : mallGoodsSkus) {
+                MallOrderItem orderItem = new MallOrderItem();
                 if (sku == null) {
                     throw new FebsException("购买商品或sku不存在");
                 }
 
-                if (sku.getStock() < item.getCnt()) {
+                if (sku.getStock() < 1) {
                     throw new FebsException(sku.getSkuName() + "库存不足");
                 }
 
-                MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
-
-                // 零撸专区购买
-                if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
-                    List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
-                    if (CollUtil.isNotEmpty(items)) {
-                        throw new FebsException("无法重复领取同一个商品");
-                    }
-                }
-
-                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
-                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
-                }
-
-                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(1));
                 orderItem.setAmount(amount);
-                orderItem.setCnt(item.getCnt());
+                orderItem.setCnt(1);
                 orderItem.setOrderId(orderInfo.getId());
                 orderItem.setPrice(sku.getPresentPrice());
                 orderItem.setGoodsId(sku.getGoodsId());
@@ -218,31 +151,20 @@
                 orderItem.setStyleName(sku.getStyleName());
                 orderItem.setSkuName(sku.getSkuName());
                 orderItem.setSkuImage(sku.getSkuImage());
-                orderItem.setIsNormal(mallGoods.getIsNormal());
+                orderItem.setIsNormal(goods.getIsNormal());
                 orderItem.setCostPrice(sku.getCostPrice());
 
-                total = total.add(amount);
-                carriage = carriage.add(mallGoods.getCarriage());
-
-                sku.setStock(sku.getStock() - item.getCnt());
-                sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
+                sku.setStock(sku.getStock() - 1);
+                sku.setSkuVolume(sku.getSkuVolume() + 1);
                 mallGoodsSkuMapper.updateById(sku);
 
                 if (addOrderDto.getType() == 1) {
                     mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
                 }
-            }
-            mallOrderItemMapper.insert(orderItem);
+                mallOrderItemMapper.insert(orderItem);
         }
-
-        orderInfo.setAmount(total);
-//        if(2 == deliverType){
-//            orderInfo.setDeliverType(2);
-//            orderInfo.setCarriage(BigDecimal.ZERO);
-//        }else{
-//            orderInfo.setDeliverType(1);
-//            orderInfo.setCarriage(carriage);
-//        }
+        BigDecimal presentPrice = new BigDecimal(goods.getPresentPrice()).setScale(2,BigDecimal.ROUND_DOWN);
+        orderInfo.setAmount(presentPrice);
         this.baseMapper.updateById(orderInfo);
 
         agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index c3357cf..1acc218 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -96,6 +96,18 @@
                     <if test="record.goodsType == 3">
                         and a.present_price = 0
                     </if>
+                    <if test="record.starRating == 1">
+                        and a.star_rating = '普通'
+                    </if>
+                    <if test="record.starRating == 2">
+                        and a.star_rating = '一星'
+                    </if>
+                    <if test="record.starRating == 3">
+                        and a.star_rating = '二星'
+                    </if>
+                    <if test="record.starRating == 4">
+                        and a.star_rating = '三星'
+                    </if>
                     <if test="record.categoryId != null and record.categoryId != ''">
                         and (c.id = #{record.categoryId} or c.parent_id=#{record.categoryId})
                     </if>
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
index e171377..d9d36f6 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
@@ -14,8 +14,8 @@
                                 <div class="layui-tab-content">
                                     <div class="layui-tab-item layui-show">
                                         <blockquote class="layui-elem-quote blue-border">基本信息设置</blockquote>
-                                        <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算补贴金额,按商品原价的5%计算</div>
-                                        <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算星级等级,按商品原价设置</div>
+                                        <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算补贴金额,按商品现价计算</div>
+                                        <div class="layui-form-mid layui-word-aux">商品新增后,会自动计算星级等级,按商品现价设置</div>
                                         <div class="layui-row layui-col-space10 layui-form-item">
                                             <div class="layui-col-lg6">
                                                 <label class="layui-form-label febs-form-item-require">商品名称:</label>
@@ -181,7 +181,6 @@
                                                 <label class="layui-form-label febs-form-item-require">现价:</label>
                                                 <div class="layui-input-block">
                                                     <input type="text" name="presentPrice" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
-                                                    <div class="layui-form-mid layui-word-aux">现价设置为0进入零撸专区</div>
                                                 </div>
                                             </div>
                                         </div>
@@ -212,7 +211,7 @@
                                         <div class="layui-col-lg6">
                                             <label class="layui-form-label">开启多规格:</label>
                                             <div class="layui-input-block">
-                                                <input type="radio" name="isSku" value="1" title="是" lay-filter="isSku" />
+<!--                                                <input type="radio" name="isSku" value="1" title="是" lay-filter="isSku" />-->
                                                 <input type="radio" name="isSku" value="2" title="否" lay-filter="isSku" checked />
                                             </div>
                                         </div>
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
index 3dc6801..72a594c 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
@@ -235,8 +235,8 @@
                                         <div class="layui-col-lg6">
                                             <label class="layui-form-label">开启多规格:</label>
                                             <div class="layui-input-block">
-                                                <input type="radio" name="isSku" value="1" title="是"
-                                                       lay-filter="isSku"/>
+<!--                                                <input type="radio" name="isSku" value="1" title="是"-->
+<!--                                                       lay-filter="isSku"/>-->
                                                 <input type="radio" name="isSku" value="2" title="否" lay-filter="isSku"
                                                        checked/>
                                             </div>

--
Gitblit v1.9.1