From bcffc7b5e9ece6061192c815af12e3981ff2dbb2 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 28 May 2022 20:09:43 +0800
Subject: [PATCH] add yunfei

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java       |    8 ++++
 src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java                       |    3 +
 src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java                         |    4 ++
 src/main/resources/mapper/modules/MallOrderItemMapper.xml                       |    6 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   14 ++++++
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                       |    1 
 src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java                      |    4 ++
 src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java                    |    6 +++
 src/main/resources/mapper/modules/MallGoodsMapper.xml                           |    2 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java               |    5 ++
 src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java                           |    3 +
 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html          |   24 ++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java                   |    4 ++
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java                     |    2 +
 src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java                         |    3 +
 15 files changed, 88 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
index 92732ec..1e8dde8 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
@@ -76,4 +76,8 @@
 
     private Integer goodsType;
 
+    private Integer hasCarriage;
+
+    private BigDecimal carriage;
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
index 4967861..92bc374 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
@@ -80,4 +80,8 @@
     private Integer goodsType;
 
     private List<Long> delSkuId;
+
+    private Integer hasCarriage;
+
+    private BigDecimal carriage;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
index b4da1ea..d543d9b 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
@@ -104,4 +104,8 @@
     @TableField(exist = false)
     private String orderNo;
 
+    private Integer hasCarriage;
+
+    private BigDecimal carriage;
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
index 777df59..1950daa 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -78,4 +78,6 @@
      * 订单类型 1-普通订单 2-积分订单
      */
     private Integer orderType;
+
+    private BigDecimal carriage;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
index 58d0e92..eb07282 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java
@@ -2,6 +2,11 @@
 
 import cc.mrbird.febs.mall.entity.MallOrderItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface MallOrderItemMapper extends BaseMapper<MallOrderItem> {
+
+    List<MallOrderItem> selectItemByGoodsIdUnCancel(@Param("goodsId") Long goodsId);
 }
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 5ed4b73..ea09b5f 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
@@ -109,6 +109,10 @@
         //新增商品
         MallGoods mallGoods = MallGoodsConversion.INSTANCE.dtoToEntity(addMallGoodsDto);
         mallGoods.setIsSale(MallGoods.ISSALE_STATUS_DISABLED);
+
+        if (mallGoods.getHasCarriage() == 2) {
+            mallGoods.setCarriage(BigDecimal.ZERO);
+        }
         mallGoodsMapper.insert(mallGoods);
 
         String thumbs = addMallGoodsDto.getThumbs();
@@ -337,6 +341,10 @@
         }
 
         BeanUtil.copyProperties(mallGoodsUpdateDto, mallGoods);
+        if (mallGoods.getHasCarriage() == 2) {
+            mallGoods.setCarriage(BigDecimal.ZERO);
+        }
+
         mallGoodsMapper.updateById(mallGoods);
 
         mallGoodsImagesMapper.deleteByGoodsId(mallGoodsUpdateDto.getId());
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 a21cfb8..f8c4036 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
@@ -90,6 +90,7 @@
 
         this.baseMapper.insert(orderInfo);
         BigDecimal total = BigDecimal.ZERO;
+        BigDecimal carriage = BigDecimal.ZERO;
         for (AddOrderItemDto item : addOrderDto.getItems()) {
             MallOrderItem orderItem = new MallOrderItem();
 
@@ -127,6 +128,15 @@
                 }
 
                 MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+
+                // 零撸专区购买
+                if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
+                    List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId());
+                    if (CollUtil.isNotEmpty(items)) {
+                        throw new FebsException("无法重复领取同一个商品");
+                    }
+                }
+
                 if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                     throw new FebsException(mallGoods.getGoodsName() + "已下架");
                 }
@@ -146,6 +156,7 @@
                 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());
@@ -159,6 +170,7 @@
         }
 
         orderInfo.setAmount(total);
+        orderInfo.setCarriage(carriage);
         this.baseMapper.updateById(orderInfo);
 
         agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
@@ -297,7 +309,7 @@
             throw new FebsException("支付密码错误");
         }
 
-        memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), field);
+        memberWalletService.reduce(orderInfo.getAmount().add(orderInfo.getCarriage()), mallMember.getId(), field);
         return orderInfo.getOrderNo();
     }
 
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
index 1a00506..2f50b16 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsDetailsVo.java
@@ -51,6 +51,12 @@
     @ApiModelProperty(value = "积分")
     private BigDecimal score;
 
+    @ApiModelProperty(value = "是否有运费")
+    private Integer hasCarriage;
+
+    @ApiModelProperty(value = "运费")
+    private BigDecimal carriage;
+
     @ApiModelProperty(value = "轮播图")
     private List<String> images;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java
index 002318c..bc3d4d4 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallGoodsListVo.java
@@ -37,4 +37,7 @@
 
     @ApiModelProperty(value = "积分")
     private BigDecimal score;
+
+    @ApiModelProperty(value = "是否有运费 1-是 2-包邮")
+    private Integer hasCarriage;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
index 954534b..85130e9 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -63,6 +63,9 @@
     @ApiModelProperty(value = "剩余时间")
     private Long remainTime;
 
+    @ApiModelProperty(value = "运费")
+    private BigDecimal carriage;
+
     public Integer getPayMethodType() {
         if (this.payMethod == null) {
             return 0;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
index ddfb13e..3e0531e 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -36,4 +36,7 @@
 
     @ApiModelProperty(value = "订单类型 1-普通订单 2-积分订单")
     private Integer orderType;
+
+    @ApiModelProperty(value = "运费")
+    private BigDecimal carriage;
 }
diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index 3b68816..e332809 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -18,6 +18,8 @@
         <result property="stock" column="stock" />
         <result property="score" column="score" />
         <result property="goodsType" column="goods_type" />
+        <result property="hasCarriage" column="has_carriage" />
+        <result property="carriage" column="carriage" />
         <collection property="styles" ofType="cc.mrbird.febs.mall.entity.MallGoodsStyle">
             <id property="id" column="style_id" />
             <result property="name" column="style_name" />
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 4a1e626..449790c 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -96,6 +96,7 @@
         <result column="longitude" property="longitude" />
         <result column="latitude" property="latitude" />
         <result column="order_type" property="orderType" />
+        <result column="carriage" property="carriage" />
         <result column="remark" property="remark" />
         <result column="del_flag" property="delFlag" />
         <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem">
diff --git a/src/main/resources/mapper/modules/MallOrderItemMapper.xml b/src/main/resources/mapper/modules/MallOrderItemMapper.xml
index ca78766..18159ef 100644
--- a/src/main/resources/mapper/modules/MallOrderItemMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderItemMapper.xml
@@ -2,4 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderItemMapper">
 
+    <select id="selectItemByGoodsIdUnCancel" resultType="cc.mrbird.febs.mall.entity.MallOrderItem">
+        select a.* from mall_order_item a
+            inner join mall_order_info b on a.order_id=b.ID and b.status in (1,2,3,4)
+        where a.goods_id=#{goodsId}
+    </select>
+
 </mapper>
\ No newline at end of file
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 ff0bfa9..7924ed4 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
@@ -163,6 +163,7 @@
                                                 <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>
@@ -171,6 +172,21 @@
                                             <label class="layui-form-label febs-form-item-require">成本价:</label>
                                             <div class="layui-input-block">
                                                 <input type="text" name="costPrice" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
+                                            </div>
+                                        </div>
+
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">设置运费:</label>
+                                            <div class="layui-input-block">
+                                                <input type="radio" name="hasCarriage" value="1" title="开启" lay-filter="hasCarriage" />
+                                                <input type="radio" name="hasCarriage" value="2" title="关闭" lay-filter="hasCarriage" checked />
+                                            </div>
+                                        </div>
+
+                                        <div class="layui-form-item carriage-input febs-hide">
+                                            <label class="layui-form-label">运费:</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="carriage" placeholder="" autocomplete="off" class="layui-input">
                                             </div>
                                         </div>
 
@@ -375,6 +391,14 @@
             }
         });
 
+        form.on('radio(hasCarriage)', function(data){
+            if (data.value == 2) {
+                $('.carriage-input').hide();
+            } else {
+                $('.carriage-input').show();
+            }
+        });
+
         function addTableDate(data) {
             var hasData = table.cache['multiSku'];
 

--
Gitblit v1.9.1