1
0
Quellcode durchsuchen

收银页新增可选择不使用积分抵扣开关

lhm vor 3 Jahren
Ursprung
Commit
916b6d924e

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceVO.java

@@ -15,6 +15,8 @@ public class CalculateOrderDiscountPriceVO {
 
     private String memberCode;
 
+    private Boolean useScore;
+
     private List<GoodsDetailsDto> goodsList;
 
     public CalculateOrderDiscountPriceVO() {
@@ -50,11 +52,20 @@ public class CalculateOrderDiscountPriceVO {
         this.goodsList = goodsList;
     }
 
+    public Boolean getUseScore() {
+        return useScore;
+    }
+
+    public void setUseScore(Boolean useScore) {
+        this.useScore = useScore;
+    }
+
     @Override
     public String toString() {
         return "CalculateOrderDiscountPriceVO{" +
                 "storeId='" + storeId + '\'' +
                 ", memberCode='" + memberCode + '\'' +
+                ", useScore='" + useScore + '\'' +
                 ", goodsList=" + goodsList +
                 '}';
     }

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

@@ -4641,77 +4641,82 @@ public class OrderServiceImpl implements OrderService {
         calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(0);
         calculateOrderDiscountPriceResponseVO.setDeductionScore(0);
 
-        // 计算完活动优惠后,计算积分抵扣。(活动与积分抵扣不互斥)
-        if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
-            String memberInfoByCodeResponseJson;
-            Response<Object> response;
-            try {
-                // 查询会员信息
-                if (memberCode.trim().length() == 11) {
-                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":\"" + memberCode + "\"}");
-                } else {
-                    memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":\"" + memberCode + "\"}");
-                }
-                response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() {
-                });
-                if (Objects.isNull(response)) {
-                    LOGGER.error("请求会员系统出现异常!error:{}", memberInfoByCodeResponseJson);
-                    if (ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getCode().equals(response.getCode())) {
-                        JedisUtil.del(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
-                        throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getDesc()));
+        // 根据收银端开关选择是否适用积分抵扣。
+        boolean useScore = Objects.isNull(calculateOrderDiscountPriceVo.getUseScore()) || calculateOrderDiscountPriceVo.getUseScore();
+        if (useScore) {
+            // 计算完活动优惠后,计算积分抵扣。(活动与积分抵扣不互斥)
+            if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                String memberInfoByCodeResponseJson;
+                Response<Object> response;
+                try {
+                    // 查询会员信息
+                    if (memberCode.trim().length() == 11) {
+                        memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":\"" + memberCode + "\"}");
+                    } else {
+                        memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":\"" + memberCode + "\"}");
                     }
-                    throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, memberInfoByCodeResponseJson));
-                }
-            } catch (Exception e) {
-                LOGGER.error("请求会员系统失败或处理响应失败!", e);
-                throw new ServiceException(e);
-            }
-            BigDecimal afterDiscountPrice;
-            if (response.getSuccess()) {
-                MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
-                assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
-                // 查询会员表
-                calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId());
-                calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone());
-                calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(memberInfoDTO.getScore());
-                calculateOrderDiscountPriceResponseVO.setLevelName(memberInfoDTO.getLevelName());
-                UserEntity userEntity = userService.queryByOpenId(memberInfoDTO.getOpenId());
-                String openId = memberInfoDTO.getOpenId();
-                if (Objects.isNull(userEntity)) {
-                    userEntity = new UserEntity();
-                    userEntity.setOpenId(openId);
-                    userEntity.setMemberCode(memberCode);
-                    userEntity.setMobile(openId);
-                    userService.save(userEntity);
-                } else {
-                    userEntity.setOpenId(openId);
-                    userEntity.setMobile(openId);
-                    userEntity.setMemberCode(memberCode);
-                    userService.update(userEntity);
+                    response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() {
+                    });
+                    if (Objects.isNull(response)) {
+                        LOGGER.error("请求会员系统出现异常!error:{}", memberInfoByCodeResponseJson);
+                        if (ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getCode().equals(response.getCode())) {
+                            JedisUtil.del(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
+                            throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, ErrorCodeConstants.MemberSysErrorCodeEnum.CODE_401.getDesc()));
+                        }
+                        throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, memberInfoByCodeResponseJson));
+                    }
+                } catch (Exception e) {
+                    LOGGER.error("请求会员系统失败或处理响应失败!", e);
+                    throw new ServiceException(e);
                 }
-                Integer score = memberInfoDTO.getScore();
-                if (Objects.nonNull(score) && score > 0) {
-                    // 有积分
-                    afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, openId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
-                    LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", openId, score, afterDiscountPrice, orderTotalPrice);
-                    calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
-                    calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
-                    calculateOrderDiscountPriceResponseVO.setBeforeScore(score);
-                    // 订单完成后再添加积分消费记录,以及同步积分信息
-                    return calculateOrderDiscountPriceResponseVO;
+                BigDecimal afterDiscountPrice;
+                if (response.getSuccess()) {
+                    MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
+                    assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
+                    // 查询会员表
+                    calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId());
+                    calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone());
+                    calculateOrderDiscountPriceResponseVO.setMemberCurrentAvailableScore(memberInfoDTO.getScore());
+                    calculateOrderDiscountPriceResponseVO.setLevelName(memberInfoDTO.getLevelName());
+                    UserEntity userEntity = userService.queryByOpenId(memberInfoDTO.getOpenId());
+                    String openId = memberInfoDTO.getOpenId();
+                    if (Objects.isNull(userEntity)) {
+                        userEntity = new UserEntity();
+                        userEntity.setOpenId(openId);
+                        userEntity.setMemberCode(memberCode);
+                        userEntity.setMobile(openId);
+                        userService.save(userEntity);
+                    } else {
+                        userEntity.setOpenId(openId);
+                        userEntity.setMobile(openId);
+                        userEntity.setMemberCode(memberCode);
+                        userService.update(userEntity);
+                    }
+                    Integer score = memberInfoDTO.getScore();
+                    if (Objects.nonNull(score) && score > 0) {
+                        // 有积分
+                        afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, memberCode, openId, calculateOrderDiscountPriceResponseVO, goodsDetailsDtos, promotionSkuList, mkActivitiesEntityList);
+                        LOGGER.info("会员【{}】,当前积分:{},积分抵扣后的订单金额:{},积分抵扣前的订单金额:{}", openId, score, afterDiscountPrice, orderTotalPrice);
+                        calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
+                        calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
+                        calculateOrderDiscountPriceResponseVO.setBeforeScore(score);
+                        // 订单完成后再添加积分消费记录,以及同步积分信息
+                        return calculateOrderDiscountPriceResponseVO;
+                    } else {
+                        LOGGER.error("会员【{}】积分为0,积分抵扣失败!", openId);
+                        return calculateOrderDiscountPriceResponseVO;
+                    }
                 } else {
-                    LOGGER.error("会员【{}】积分为0,积分抵扣失败!", openId);
-                    return calculateOrderDiscountPriceResponseVO;
+                    LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson);
+                    throw new ServiceException(String.format("会员码:%s,错误码:%s,错误信息:%s", memberCode, response.getErrorCode(), response.getErrorMessage()));
                 }
-            } else {
-                LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson);
-                throw new ServiceException(String.format("会员码:%s,错误码:%s,错误信息:%s", memberCode, response.getErrorCode(), response.getErrorMessage()));
             }
         }
         calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
         orderTotalPrice = BigDecimal.ZERO;
         for (GoodsDetailsDto goodsDetailsDto : goodsDetailsDtos) {
-            orderTotalPrice = orderTotalPrice.add(goodsDetailsDto.getActualPaymentAmount());
+            orderTotalPrice = orderTotalPrice.add(goodsDetailsDto.getActualPaymentAmount()
+                    .multiply(BigDecimal.valueOf(goodsDetailsDto.getSellVolume())));
         }
         calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(orderTotalPrice);
         return calculateOrderDiscountPriceResponseVO;

+ 4 - 0
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -316,6 +316,10 @@
                                             <label for="customPhone" class="control-label">会员码:</label>
                                             <input autocomplete="off" type="text" ref="couponBarCode" size="60%" id="couponBarCode" @on-enter="calculateOrderPriceSubmit" />
                                         </div>
+                                        <div style="margin-top: 30px">
+                                            <label class="control-label" >是否适用积分进行抵扣:</label>
+                                            <i-switch v-model="switch1" />
+                                        </div>
                                     </div>
                                     <div class="modal-footer">
                                         <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>

+ 27 - 24
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -20,7 +20,7 @@ window.onbeforeunload = function(){
 function debounce(fn,delay){
     var timer=null
     return function(){
-        console.log(timer);
+        // console.log(timer);
         if(timer){
             clearTimeout(timer)
         }
@@ -33,7 +33,7 @@ function calculateGoodsPrice(r){
     var rMap = r.map;
     var barCode = r.goodsDetails.prodBarcode;
     var brand = r.goodsDetails.brand;
-    console.log(rMap);
+    // console.log(rMap);
 
     /*if(rMap.yhq){
         for(var i in rMap.yhq){
@@ -258,7 +258,7 @@ function calculateGoodsByMysy(goodsDetails,type){
                 // goodsDetails.activity = "买"+buyNum+"送1";
                 // 清除该商品买一送一条件
                 vm.boughtNum.delete(goodsDetails.prodBarcode);
-                console.log(vm.boughtNum);
+                // console.log(vm.boughtNum);
             }else{
                 // 如果不相等,已经购买数量+1
                 vm.boughtNum.set(goodsDetails.prodBarcode , boughtNum+1);
@@ -484,7 +484,7 @@ function calculateGoodsByZhjsp(r){
             }
         });
     }
-    console.log(vm.compareCombinationPrice);
+    // console.log(vm.compareCombinationPrice);
 }
 
 const delay = (function () {
@@ -622,7 +622,9 @@ let vm = new Vue({
         // 是否点击了加号或减号和操作新扫描商品的标识
         clickFlag: false,
         // 是否点击了计算活动价格
-        calActivityFlag: false
+        calActivityFlag: false,
+        // 是否适用积分进行抵扣
+        switch1: true
     },
     watch: {
         prodBarcode (){
@@ -684,7 +686,7 @@ let vm = new Vue({
         },
         queryInveResponse:function(){
             $.get("../order/queryInveResponse/"+vm.orderSn1, function(r){
-                console.log(r.resultMessage);
+                // console.log(r.resultMessage);
                 let resultString = "";
                 if(r.resultMessage != null && r.resultMessage.length > 0){
                     for(let i = 0 ; i < r.resultMessage.length; i ++){
@@ -698,9 +700,9 @@ let vm = new Vue({
             vm.storeId = sessionStorage.getItem("storeId");
             var thisGoods = {};
             var overflowLi = this.$refs.overflowLi;
-            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            // console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
             let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
-            console.log("scanSellVolume===>" + scanSellVolume);
+            // console.log("scanSellVolume===>" + scanSellVolume);
             $.get("../goods/details/"+vm.prodBarcode+"/"+vm.storeId+"/"+vm.prodBarcode+"/"+scanSellVolume, function (r) {
                 if (r.code == 0) {
                     if(r.goodsDetails.length>1) {
@@ -735,7 +737,7 @@ let vm = new Vue({
                             handle(r.goodsDetails,"add");
                             vm.openSku = false;
                             var data = Object.assign({}, JSON.parse(JSON.stringify(r.goodsDetails)));
-                            console.log("商品详情===>" + JSON.stringify(data));
+                            // console.log("商品详情===>" + JSON.stringify(data));
                             vm.calGoodsList.push(data);
                             //此时必须异步执行滚动条滑动至底部
                             setTimeout(()=>{
@@ -751,9 +753,9 @@ let vm = new Vue({
         saveOld:function(){
             vm.storeId = sessionStorage.getItem("storeId");
             var overflowLi = this.$refs.overflowLi;
-            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            // console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
             let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
-            console.log("scanSellVolume===>" + scanSellVolume);
+            // console.log("scanSellVolume===>" + scanSellVolume);
                 $.get("../goods/detailsOld/"+vm.prodBarcode+"/"+vm.storeId+"/"+scanSellVolume, function (r) {
                     if (r.code == 0) {
                         r.goodsDetails.sellVolume = 1;
@@ -763,7 +765,7 @@ let vm = new Vue({
                         handle(r.goodsDetails,"add");
                         vm.openSku = false;
                         var data = Object.assign({}, JSON.parse(JSON.stringify(r.goodsDetails)));
-                        console.log("商品详情=1=>" + JSON.stringify(data));
+                        // console.log("商品详情=1=>" + JSON.stringify(data));
                         vm.calGoodsList.push(data);
                         //此时必须异步执行滚动条滑动至底部
                         setTimeout(()=>{
@@ -838,7 +840,7 @@ let vm = new Vue({
 
         },
         selectItem:function(value) {
-            console.log(value);
+            // console.log(value);
         },
         deleteItem:function(value){
             vm.calActivityFlag = false;
@@ -923,7 +925,7 @@ let vm = new Vue({
                 alert("购物车中没有商品");
                 return;
             }
-            console.log(vm.pendingOrderMap.size);
+            // console.log(vm.pendingOrderMap.size);
             if(vm.pendingOrderMap.size >= 3){
                 alert("订单挂起最多支持3单");
                 return;
@@ -969,7 +971,7 @@ let vm = new Vue({
                 return ;
             }
             var pendingObject = vm.pendingOrderMap.get(key);
-            console.log(pendingObject);
+            // console.log(pendingObject);
             vm.goodsList = pendingObject.goodsList;
             vm.totalPrice = pendingObject.totalPrice;
             vm.totalCount = pendingObject.totalCount;
@@ -990,7 +992,7 @@ let vm = new Vue({
                 return;
             }
 
-            console.log("vm.clickFlag==>" + vm.clickFlag);
+            // console.log("vm.clickFlag==>" + vm.clickFlag);
             if (vm.clickFlag && !vm.calActivityFlag) {
                 // 提示点击
                 alert("请先计算活动优惠价!");
@@ -1297,9 +1299,9 @@ let vm = new Vue({
                     success: function (r) {
                         if (r.ticket != null) {
                             // printArea(r.ticket);
-                            console.log("核销打印前,订单号: " + vm.currentOrderNo);
+                            // console.log("核销打印前,订单号: " + vm.currentOrderNo);
                             var content = getPrintContentOrder(r.ticket, printArea);
-                            console.log("核销打印后,小票码: " + vm.pickUpCode + ",订单号: " + r.ticket.ticketHead.orderId);
+                            // console.log("核销打印后,小票码: " + vm.pickUpCode + ",订单号: " + r.ticket.ticketHead.orderId);
 
                         }else{
                             alert("打印小票失败");
@@ -2068,7 +2070,7 @@ function toPayOrder(payCode){
                  'addrUser':addrUser,
                  'status':status,
                 };
-    console.log(JSON.stringify(param));
+    // console.log(JSON.stringify(param));
     vm.parCode = "";
     $.ajax({
         type: "POST",
@@ -2076,7 +2078,7 @@ function toPayOrder(payCode){
         contentType: "application/json",
         data: JSON.stringify(param),
         success: function (r) {
-            console.log(r);
+            // console.log(r);
             if (r.code == 0) {
                 if (r.resultObj != null) {
                     $(".form-group input[type=text]").each(function(){
@@ -2084,7 +2086,7 @@ function toPayOrder(payCode){
                     })
                     // 打印小票码小票
                     var content = getPrintContent(r.resultObj);
-                    console.log(content);
+                    // console.log(content);
                     printArea2(content);
                     vm.goodsList = [];
                     vm.customname = '' ;
@@ -2131,8 +2133,8 @@ function toRefund(){
 calScanSellVolume = function (prodBarcode) {
     let goodsList = vm.goodsList;
 
-    console.log("prodBarcode typeof===>" + typeof prodBarcode);
-    console.log("prodBarcode===>" + prodBarcode);
+    // console.log("prodBarcode typeof===>" + typeof prodBarcode);
+    // console.log("prodBarcode===>" + prodBarcode);
     if (goodsList === null || goodsList.length === 0) {
         return 2;
     }
@@ -2154,9 +2156,10 @@ calculateOrderPrice = function() {
     let param = {
         'storeId': sessionStorage.getItem("storeId"),
         'memberCode': vm.$refs.couponBarCode.value,
+        'useScore': vm.switch1,
         'goodsList' : vm.goodsList
     };
-    // console.log("请求参数===>" + JSON.stringify(param));
+    console.log("请求参数===>" + JSON.stringify(param));
 
     $.ajax({
         type: "POST",