Parcourir la source

买一送一活动修改

zcb il y a 4 ans
Parent
commit
47c3d0962f

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/PickUpCodeDao.java

@@ -19,4 +19,11 @@ public interface PickUpCodeDao extends BaseDao<PickUpCodeEntity> {
      * @return
      */
     public String queryPickUpCodeStatus(@Param("orderSn") String orderSn);
+
+    /**
+     * 查询最大的取货码
+     * @param nowTime
+     * @return
+     */
+    String queryMaxPickUpCode(@Param("nowTime") String nowTime);
 }

+ 18 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/MkActivitiesGetOneFreeGoodsEntity.java

@@ -44,6 +44,7 @@ public class MkActivitiesGetOneFreeGoodsEntity implements Serializable {
      * 商品编码
      */
     private String goodsSn;
+    private Integer buyNum;
     /**
      * 条形码
      */
@@ -56,6 +57,7 @@ public class MkActivitiesGetOneFreeGoodsEntity implements Serializable {
      * 商品系列
      */
     private String productSeries;
+    private Integer sendNum;
     /**
      * 赠品条码
      */
@@ -289,4 +291,20 @@ public class MkActivitiesGetOneFreeGoodsEntity implements Serializable {
     public Date getUpdateTime() {
         return updateTime;
     }
+
+    public Integer getBuyNum() {
+        return buyNum;
+    }
+
+    public void setBuyNum(Integer buyNum) {
+        this.buyNum = buyNum;
+    }
+
+    public Integer getSendNum() {
+        return sendNum;
+    }
+
+    public void setSendNum(Integer sendNum) {
+        this.sendNum = sendNum;
+    }
 }

+ 7 - 8
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -1206,10 +1206,6 @@ public class GoodsServiceImpl implements GoodsService {
          * 优先级:临时促销 》买一送一=满赠 》 组合价=日常活动 》 打折=满减 》 优惠券
          */
 
-
-
-
-
         /**
          * 组合价的做法就是将参与组合的条码带到收银端
          * 现根据营销活动id跟条形码,查询有哪些参与该条码组合的商品
@@ -1297,11 +1293,14 @@ public class GoodsServiceImpl implements GoodsService {
             Long mkaId = mkaIdMap.get("mysy");
             MkActivitiesGetOneFreeGoodsEntity getOneFreeGoodsEntity = getOneFreeGoodsService.queryByCodeOrBrand(mkaId,prodBarcode,brandName);
             if(getOneFreeGoodsEntity != null){
-                Map<String,String> getOneFreeMap = new HashMap<>();
-                //                  购买商品条码                          赠品条码
-                getOneFreeMap.put( getOneFreeGoodsEntity.getBarcode(),getOneFreeGoodsEntity.getGiftBarcode());
+                // 买x送1  所以需要定义的是 买的条码 买的数量   送的条码  送的数量
+
+
+//                Map<String,String> getOneFreeMap = new HashMap<>();
+//                //                  购买商品条码                          赠品条码
+//                getOneFreeMap.put( getOneFreeGoodsEntity.getBarcode(),getOneFreeGoodsEntity.getGiftBarcode());
 
-                skuActivitiesMap.put("mysy",getOneFreeMap);
+                skuActivitiesMap.put("mysy",getOneFreeGoodsEntity);
 
             }
         }

+ 2 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -403,7 +403,7 @@ public class OrderServiceImpl implements OrderService {
         cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
         cashInfo.setFreight(
                 new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
-        cashInfo.setPaymentMode("微信支付");
+        cashInfo.setPaymentMode("支付宝支付");
 
         // 海关清单
         CusListing cusListing = new CusListing();
@@ -1945,7 +1945,7 @@ public class OrderServiceImpl implements OrderService {
             // 微信支付
 //            wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
             // 支付宝支付
-            AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
+//            AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
             OrderEntity orderEntity = queryObject(order.getId());
 //            orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));
 //            orderEntity.setPayStatus(Integer.parseInt(Dict.payStatus.item_2.getItem()));

+ 15 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/PickUpCodeServiceImpl.java

@@ -12,6 +12,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * 取货码信息表Service实现类
@@ -44,10 +45,23 @@ public class PickUpCodeServiceImpl implements PickUpCodeService {
     @Override
     public int save(PickUpCodeEntity pickUpCode) {
 
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String nowTime = format.format(new Date());
+
+        String pickUpCodeSn = pickUpCodeDao.queryMaxPickUpCode(nowTime);
+        if(pickUpCodeSn == null){
+            pickUpCodeSn = "000001";
+        }else{
+            AtomicInteger integer = new AtomicInteger(Integer.valueOf(pickUpCodeSn));
+            int i = integer.incrementAndGet();
+            pickUpCodeSn= String.format("%06d", i);
+        }
+
+
         //生成一个 5 位的随机字符串
         String randomCode = RandomStringUtils.randomAlphanumeric(5).toUpperCase();
         //K: 跨境电商 , Y:一般贸易
-        pickUpCode.setPickUpCodeSn("K-"+randomCode);
+        pickUpCode.setPickUpCodeSn(pickUpCodeSn);
         //  pickUpCode.setPickUpCodeSn("Y-");
         pickUpCode.setPickUpCodeStatus("0");
         if (pickUpCode.getPickUpCodeCreatetime()==null){

+ 3 - 1
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -209,7 +209,9 @@
             mall_goods a
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
-        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId}
+        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId
+        and r.stock_num > 0
+        limit 1
     </select>
 
     <select id="queryObjectByProdBarcode" resultType="com.kmall.admin.entity.GoodsEntity">

+ 14 - 0
kmall-admin/src/main/resources/mybatis/mapper/MkActivitiesGetOneFreeGoodsDao.xml

@@ -11,9 +11,11 @@
         <result property="activityPrice" column="activity_price"/>
         <result property="shopSn" column="shop_sn"/>
         <result property="goodsSn" column="goods_sn"/>
+        <result property="buyNum" column="buy_num"/>
         <result property="barcode" column="barcode"/>
         <result property="productBrand" column="product_brand"/>
         <result property="productSeries" column="product_series"/>
+        <result property="sendNum" column="send_num"/>
         <result property="giftBarcode" column="gift_barcode"/>
         <result property="mkaId" column="mka_id"/>
         <result property="createTime" column="create_time"/>
@@ -31,9 +33,11 @@
 			`activity_price`,
 			`shop_sn`,
 			`goods_sn`,
+			`buy_num`,
 			`barcode`,
 			`product_brand`,
 			`product_series`,
+			`send_num`,
 			`gift_barcode`,
 			`mka_id`,
 			`create_time`,
@@ -53,9 +57,11 @@
     		`activity_price`,
     		`shop_sn`,
     		`goods_sn`,
+    		`buy_num`,
     		`barcode`,
     		`product_brand`,
     		`product_series`,
+    		`send_num`,
     		`gift_barcode`,
     		`mka_id`,
     		`create_time`,
@@ -108,9 +114,11 @@
 			`activity_price`,
 			`shop_sn`,
 			`goods_sn`,
+			`buy_num`,
 			`barcode`,
 			`product_brand`,
 			`product_series`,
+			`send_num`,
 			`gift_barcode`,
 			`mka_id`,
 			`create_time`,
@@ -124,9 +132,11 @@
 			#{activityPrice},
 			#{shopSn},
 			#{goodsSn},
+			#{buyNum},
 			#{barcode},
 			#{productBrand},
 			#{productSeries},
+			#{sendNum},
 			#{giftBarcode},
 			#{mkaId},
 			#{createTime},
@@ -145,6 +155,8 @@
 			<if test="shopSn != null">`shop_sn` = #{shopSn}, </if>
 			<if test="goodsSn != null">`goods_sn` = #{goodsSn}, </if>
 			<if test="barcode != null">`barcode` = #{barcode}, </if>
+			<if test="buyNum != null"> `buy_num` = #{buyNum}, </if>
+			<if test="sendNum != null">`send_num` = #{sendNum}, </if>
 			<if test="productBrand != null">`product_brand` = #{productBrand}, </if>
 			<if test="productSeries != null">`product_series` = #{productSeries}, </if>
 			<if test="giftBarcode != null">`gift_barcode` = #{giftBarcode}, </if>
@@ -178,9 +190,11 @@
 			activity_price,
 			shop_sn,
 			goods_sn,
+			buy_num,
 			barcode,
 			product_brand,
 			product_series,
+			send_num,
 			gift_barcode,
 			mka_id,
 			create_time,

+ 7 - 1
kmall-admin/src/main/resources/mybatis/mapper/PickUpCodeDao.xml

@@ -70,7 +70,7 @@
                 order by ${sidx} ${order}
             </when>
 			<otherwise>
-                order by pick_up_code_createtime desc
+                order by pick_up_code_status, pick_up_code_createtime desc
 			</otherwise>
         </choose>
 		<if test="offset != null and limit != null">
@@ -141,4 +141,10 @@
 		</foreach>
 	</delete>
 
+
+	<select id="queryMaxPickUpCode" resultType="java.lang.String">
+		select pick_up_code_sn from mall_pick_up_code where pick_up_code_createtime &gt; #{nowTime} order by pick_up_code_sn desc limit 1
+	</select>
+
+
 </mapper>

+ 6 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiesgetonefreegoods.html

@@ -47,6 +47,9 @@
             <Form-item label="商品编码" prop="goodsSn">
                 <i-input v-model="mkActivitiesGetOneFreeGoods.goodsSn" placeholder="商品编码"/>
             </Form-item>
+            <Form-item label="购买数量" prop="buyNum">
+                <i-input v-model="mkActivitiesGetOneFreeGoods.buyNum" placeholder="购买数量"/>
+            </Form-item>
             <Form-item label="条形码" prop="barcode">
                 <i-input v-model="mkActivitiesGetOneFreeGoods.barcode" placeholder="条形码"/>
             </Form-item>
@@ -56,6 +59,9 @@
             <Form-item label="赠品条码" prop="giftBarcode">
                 <i-input v-model="mkActivitiesGetOneFreeGoods.giftBarcode" placeholder="赠品条码"/>
             </Form-item>
+            <Form-item label="赠送数量" prop="sendNum">
+                <i-input v-model="mkActivitiesGetOneFreeGoods.sendNum" placeholder="赠送数量"/>
+            </Form-item>
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
                 <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>

+ 3 - 1
kmall-admin/src/main/webapp/js/mk/mkactivitiesgetonefreegoods.js

@@ -26,8 +26,10 @@ $(function () {
 			{label: '产品中文名', name: 'productName', index: 'product_name', width: 80, align: 'center'},
 			{label: '商品编码', name: 'goodsSn', index: 'goods_sn', width: 80, align: 'center'},
 			{label: '条形码', name: 'barcode', index: 'barcode', width: 80, align: 'center'},
+			{label: '购买数量', name: 'buyNum', index: 'buyNum', width: 80, align: 'center'},
 			{label: '商品品牌', name: 'productBrand', index: 'product_brand', width: 80, align: 'center'},
-			{label: '赠品条码', name: 'giftBarcode', index: 'gift_barcode', width: 80, align: 'center'}],
+			{label: '赠品条码', name: 'giftBarcode', index: 'gift_barcode', width: 80, align: 'center'},
+			{label: '赠送数量', name: 'sendNum', index: 'sendNum', width: 80, align: 'center'}],
 		viewrecords: true,
 		postData: {'mkaId': vm.mkaId},
         height: 550,

+ 63 - 14
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -33,6 +33,13 @@ function calculateGoodsPrice(r){
         }
     }
     if(rMap.mysy){
+        // 买的条码,  买的数量,送的条码,送的数量
+        var mysy = {
+            buyNum:rMap.mysy.buyNum,
+            giftBarcode:rMap.mysy.giftBarcode,
+            sendNum:rMap.mysy.sendNum
+        };
+        vm.newMysy.set(rMap.mysy.barcode , mysy);
         vm.mysy.push(rMap.mysy[barCode]);
     }
 
@@ -145,10 +152,47 @@ function fullGift(goodsDetails,key){
 
 // 买一送一
 function calculateGoodsByMysy(goodsDetails){
+    console.log(vm.newMysy);
+    var mysy = vm.newMysy.get(goodsDetails.prodBarcode);
+    if(mysy){
+        var buyNum = mysy.buyNum;
+        // 证明是买一送一,并且达到买一送一的条件
+        if(buyNum == 1 && vm.boughtNum.get(goodsDetails.prodBarcode)){
+            // 设置赠品的单价
+            goodsDetails.discountedPrice = goodsDetails.retailPrice;
+            goodsDetails.actualPaymentAmount = 0;
+            goodsDetails.activity = "买1送1";
+
+            // 清除该商品买一送一条件
+            vm.boughtNum.delete(goodsDetails.proBarcode);
+        }
+        // 如果不是买一送一,而是买n送n,先获取购物车已有该类型商品数量
+        var boughtNum = vm.boughtNum.get(goodsDetails.prodBarcode);
+        // 如果没有,置为1
+        if(!boughtNum){
+            vm.boughtNum.set(goodsDetails.prodBarcode , 1);
+            return ;
+        }
+        // 走到这里,证明购买过该类型商品,且数量不是买一送一的
+        // 如果相等,证明达到送的条件
+        if(buyNum === boughtNum){
+            goodsDetails.discountedPrice = goodsDetails.retailPrice;
+            goodsDetails.actualPaymentAmount = 0;
+            goodsDetails.activity = "买"+buyNum+"送1";
+            // 清除该商品买一送一条件
+            vm.boughtNum.delete(goodsDetails.proBarcode);
+        }else{
+            // 如果不相等,已经购买数量+1
+            vm.boughtNum.set(goodsDetails.prodBarcode , boughtNum+1);
+        }
+
+
+    }
+
     // 判断当前商品是否为赠品
-    isSend(vm.mysy,goodsDetails,"买一送一");
+    // isSend(vm.mysy,goodsDetails,"买一送一");
     // 判断购物车里面是否有商品为赠品
-    shopCartContain(vm.mysy,goodsDetails,"买一送一");
+    // shopCartContain(vm.mysy,goodsDetails,"买一送一");
 
 }
 
@@ -332,6 +376,8 @@ let vm = new Vue({
         },
         // 买一送一
         mysy: [],
+        newMysy: new Map(),
+        boughtNum: new Map(),
         // 组合价
         zhjsp: new Map(),
         combinationPrice: new Map(), // 组合价商品的组合价
@@ -546,6 +592,8 @@ let vm = new Vue({
             vm.actualPrice = 0;
             // 买一送一
             vm.mysy = [];
+            vm.newMysy = new Map();
+            vm.boughtNum = new Map();
             // 组合价
             vm.zhjsp = new Map();
             vm.combinationPrice = new Map(); // 组合价商品的组合价
@@ -734,7 +782,7 @@ let vm = new Vue({
                     type: "POST",
                     url: "../order/orderRefund",
                     contentType: "application/json",
-                    data: JSON.stringify({'id':vm.currentOrderNo,'sessionId':vm.sessionId}),
+                    data: JSON.stringify({'orderId':vm.currentOrderNo,'sessionId':vm.sessionId}),
                     success: function (r) {
                         if (r.code == 0) {
                             alert("退款成功")
@@ -1003,16 +1051,16 @@ function getPrintContentOrder(ticket) {
     content += "<tr>";
     content += "<td style=\"width: 40%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
     content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
-    content += "<td style=\"width: 16%;text-align: right;font-size: 10px;font-weight: bold;\">税费</td>";
-    content += "<td style=\"width: 10%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
-    content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
+    // content += "<td style=\"width: 16%;text-align: right;font-size: 10px;font-weight: bold;\">税费</td>";
+    content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
+    content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
     content += "</tr>";
     content += "</table>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
     content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
     for (var i=0;i< ticket.goods.length;i++){
         content += "<tr>";
-        content += "<td style=\"width: 50%;text-align: left;font-size: 8px;padding-top: 8px;\">";
+        content += "<td style=\"width: 40%;text-align: left;font-size: 8px;padding-top: 8px;\">";
         content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
         content += "<tr>";
         content += "<td style=\"text-align: left;font-size: 8px;vertical-align:top;\">#</td>";
@@ -1021,9 +1069,9 @@ function getPrintContentOrder(ticket) {
         content += "</table>";
         content += "</td>";
         content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
-        content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].taxation + "</td>";
+        // content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].taxation + "</td>";
         content += "<td style=\"width: 15%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
-        content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "</td>";
+        content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "</td>";
         content += "</tr>";
 
     }
@@ -1058,7 +1106,8 @@ function getPrintContentOrder(ticket) {
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += "<span style=\"float: left;width: 50%;text-align: left;\">支付渠道:</span>";
-    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.paymentMode + "</span>";
+    // 后期改成从系统中取
+    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + "支付宝支付" + "</span>";
     content += "</div>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
     //海关清单信息
@@ -1078,20 +1127,20 @@ function getPrintContentOrder(ticket) {
     content += "收货人电话:" + ticket.cusListing.consigneeTel;
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
-    content += "始发地:" + ticket.cusListing.deliveryAddress;
+    content += "始发地: 仓库地址 : 广东省深圳市南山区前海保税港区W104"  ;
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += "交货地:" + ticket.cusListing.deliveryAddress;
     content += "</div>";
     content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
     content += "<div style=\"width: 100%;\">";
-    content += ticket.ticketFoot.summary;
+    // content += ticket.ticketFoot.summary;
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
-    content += "客服电话:" + ticket.ticketFoot.serviceTel;
+    // content += "客服电话:" + ticket.ticketFoot.serviceTel;
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
-    content += "网址:" + ticket.ticketFoot.url1;
+    // content += "网址:" + ticket.ticketFoot.url1;
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += ticket.ticketFoot.welcome;