浏览代码

小票显示修改

zcb 4 年之前
父节点
当前提交
47e9df30d3

+ 2 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -1041,10 +1041,10 @@ public class OrderController {
 
         BigDecimal tax = new BigDecimal(0);
         for(OrderGoodsEntity orderGoodsEntity : goodsList){
-            BigDecimal marketPrice = orderGoodsEntity.getMarketPrice();
+            BigDecimal retailPrice = orderGoodsEntity.getRetailPrice();
             BigDecimal goodsRate = orderGoodsEntity.getGoodsRate();
             Integer number = orderGoodsEntity.getNumber();
-            BigDecimal goodsTax = marketPrice.divide(new BigDecimal(1).add(goodsRate),2,RoundingMode.HALF_DOWN).multiply(goodsRate).multiply(new BigDecimal(number)).setScale(0,RoundingMode.HALF_DOWN);
+            BigDecimal goodsTax = retailPrice.divide(new BigDecimal(1).add(goodsRate),2,RoundingMode.HALF_DOWN).multiply(goodsRate).multiply(new BigDecimal(number)).setScale(0,RoundingMode.HALF_DOWN);
             orderGoodsEntity.setTax(goodsTax);
             tax = tax.add(goodsTax);
         }

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

@@ -65,6 +65,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.net.InetAddress;
 import java.net.URLDecoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -399,8 +400,7 @@ public class OrderServiceImpl implements OrderService {
             Goods goods = new Goods(orderGoods.getGoodsName(), uprice.toString(),
                                     orderGoods.getGoodsRate().multiply(orderGoods.getMarketPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString(),
                                     orderGoods.getNumber().toString(),
-                                    orderGoods.getRetailPrice().multiply(new BigDecimal(orderGoods.getNumber()))
-                                              .setScale(2, BigDecimal.ROUND_HALF_UP).toString());
+                                    orderGoods.getActualPaymentAmount().toString());
             goodsList.add(goods);
         }
 
@@ -493,7 +493,7 @@ public class OrderServiceImpl implements OrderService {
         if (Dict.payFlag.item_cash.getItem().equals(order.getPayFlag())) {
             order.setPayStatus(Integer.parseInt(Dict.payStatus.item_4.getItem()));
         }else{
-            order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
+            order.setPayStatus(Integer.parseInt(Dict.payStatus.item_4.getItem()));
             OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
             OrderRefundEntity orderRefund = new OrderRefundEntity();
             orderRefund.setRefundId(result.getRefund_id());
@@ -520,7 +520,7 @@ public class OrderServiceImpl implements OrderService {
                 orderRefundDao.save(orderRefund);//退款记录
             }
         }
-        orderDao.update(order);//修改为退款中
+        orderDao.update(order);//
         // TODO: 2019/6/13 定时任务查询退款成功后释放库存、优惠券
         /*// 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
@@ -531,7 +531,7 @@ public class OrderServiceImpl implements OrderService {
         if (!needUpdateStock) {
             return;
         }
-        // 更新库存
+        // 更新库存 TODO
         updateStock(order, "管理后台订单退款");*/
 //        updateStock(order, "管理后台订单退款");
 
@@ -589,7 +589,7 @@ public class OrderServiceImpl implements OrderService {
         }
         // 更新库存
         updateStock(order, "管理后台订单退款");*/
-//        updateStock(order, "管理后台订单退款");
+        updateStock(order, "收银端退款");
 
 //        queryStorePromRealUpdateIsScan(order);
     }
@@ -1678,7 +1678,7 @@ public class OrderServiceImpl implements OrderService {
      */
     @Override
     @Transactional
-    public Map offlineRetailSubmit(Map param, SysUserEntity user) {
+    public synchronized Map offlineRetailSubmit(Map param, SysUserEntity user) {
         // 解析订单数据 List
         List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList");
         // 解析用户信息 LinkedHashMap
@@ -1695,9 +1695,6 @@ public class OrderServiceImpl implements OrderService {
 //            e.printStackTrace();
         }
 
-
-
-
         Map resultObj = Maps.newHashMap();
 
 
@@ -1802,8 +1799,7 @@ public class OrderServiceImpl implements OrderService {
 
 
                     if(goodsDto.get("retailPrice") instanceof Double){
-                    goodsEntity.setRetailPrice(new BigDecimal((Double)goodsDto.get("retailPrice"))); // 单价
-
+                        goodsEntity.setRetailPrice(new BigDecimal((Double)goodsDto.get("retailPrice"))); // 单价
                     }else if(goodsDto.get("retailPrice") instanceof Integer){
                         goodsEntity.setRetailPrice(new BigDecimal((Integer)goodsDto.get("retailPrice")));
                     }else if(goodsDto.get("retailPrice") instanceof Float){
@@ -1838,16 +1834,15 @@ public class OrderServiceImpl implements OrderService {
                     }
                     totalTax = totalTax.add(tax).setScale(2,BigDecimal.ROUND_HALF_DOWN); // 计算总的税额
 
-                    if(goodsDto.get("actualPaymentAmount") instanceof Double){
-                        goodsEntity.setStoreRetailPrice(new BigDecimal((Double)goodsDto.get("actualPaymentAmount")));
-                    }else if(goodsDto.get("actualPaymentAmount") instanceof Integer){
-                        goodsEntity.setStoreRetailPrice(new BigDecimal((Integer)goodsDto.get("actualPaymentAmount")));
-                    }else if(goodsDto.get("actualPaymentAmount") instanceof Float){
-                        goodsEntity.setStoreRetailPrice(new BigDecimal((Float)goodsDto.get("actualPaymentAmount")));
+                    if(goodsDto.get("retailPrice") instanceof Double){
+                        goodsEntity.setStoreRetailPrice(new BigDecimal((Double)goodsDto.get("retailPrice"))); // 单价
+                    }else if(goodsDto.get("retailPrice") instanceof Integer){
+                        goodsEntity.setStoreRetailPrice(new BigDecimal((Integer)goodsDto.get("retailPrice")));
+                    }else if(goodsDto.get("retailPrice") instanceof Float){
+                        goodsEntity.setStoreRetailPrice(new BigDecimal((Float)goodsDto.get("retailPrice")));
                     }
 
 
-
 //                    goodsEntity.setStoreRetailPrice(productInfo.getRetailPrice());
                     // 借用这个字段来存储购买数
                     goodsEntity.setGoodsNumber(sellVolume);
@@ -1963,14 +1958,14 @@ public class OrderServiceImpl implements OrderService {
 
             // 判断是微信的支付码还是支付宝的支付码
             if (parCode.startsWith("28")) {
-            // 支付宝支付
-            AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
+                // 支付宝支付
+                AliPay(user, parCode , order, processRecordEntity, orderWXPayRecordCurrent, store);
 
             }else{
             // 微信支付
                 try {
                     wxPay(user, parCode, resultObj, order, processRecordEntity, orderWXPayRecordCurrent, store);
-                } catch (ParseException e) {
+                } catch (Exception e) {
                     throw e;
                 }
 
@@ -1991,10 +1986,7 @@ public class OrderServiceImpl implements OrderService {
             orderProcessRecordDao.save(processRecordEntity);
 
 
-            // 生成取票码
-            PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
-            pickUpCodeEntity.setOrderSn(order.getOrder_sn());
-            pickUpCodeService.save(pickUpCodeEntity);
+
 
             // 生成销售记录
             SaleRecordEntity saleRecordEntity = new SaleRecordEntity();
@@ -2045,6 +2037,11 @@ public class OrderServiceImpl implements OrderService {
             consumptionRecords.setCreateTime(new Date());
             memberConsumptionRecordsDao.save(consumptionRecords);
 
+            // 生成取票码
+            PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
+            pickUpCodeEntity.setOrderSn(order.getOrder_sn());
+            pickUpCodeService.save(pickUpCodeEntity);
+
             resultObj.put("code",pickUpCodeEntity.getPickUpCodeSn()); // 系统中累加
 
             resultObj.put("time",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -2053,17 +2050,14 @@ public class OrderServiceImpl implements OrderService {
             // 通知WebSocket
             WebSocketServer.sendMessage(sessionId,order.getOrder_sn(),order.getStore_id()
                     +"");
+
+            return resultObj;
         } catch (Exception e) {
             e.printStackTrace();
             resultObj.put("errno", 400);
             resultObj.put("errmsg", "订单异常------"+e.getMessage());
             throw new RuntimeException(e);
         }
-
-
-
-
-        return resultObj;
     }
 
 //    private BigDecimal getDisCountAmout(List<GoodsEntity> goodsEntities) {
@@ -2259,11 +2253,18 @@ public class OrderServiceImpl implements OrderService {
     }
 
     private void wxPay(SysUserEntity user, String parCode, Map resultObj, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws ParseException {
-        R r;
+        String ip = "127.0.0.1";
+        R r = null;
+        try {
+            InetAddress ia = InetAddress.getLocalHost();
+            ip = ia.getHostAddress();
+        } catch (Exception var17) {
+            var17.printStackTrace();
+        }
         WechatMicropayApiResult wechatMicropayApiResult = WechatUtil
                 .wxMicropay(store.getMerchName() + "-" + store.getStoreName(), order.getOrderBizType(), null,
-                        orderWXPayRecordCurrent.getOutTradeNoWX(), 0.01d/*order.getActual_price().doubleValue()*/,
-                        "127.0.0.1", parCode);
+                        orderWXPayRecordCurrent.getOutTradeNoWX(), order.getActual_price().doubleValue(),
+                        ip, parCode);
         orderWXPayRecordService.updateRecord(orderWXPayRecordCurrent.getId(), wechatMicropayApiResult);
 
 
@@ -2297,6 +2298,11 @@ public class OrderServiceImpl implements OrderService {
                     }
                 }
             }
+            this.LOGGER.info("wechatMicropayApiResult.getTransaction_id()" + wechatMicropayApiResult.getTransaction_id());
+            Map orderRaram = Maps.newHashMap();
+            orderRaram.put("payTransactionId", wechatMicropayApiResult.getTransaction_id());
+            orderRaram.put("orderId", order.getId());
+            this.orderDao.updateOrderInfo(orderRaram);
             this.confirmPay(order.getId(), Dict.payFlag.item_weixin.getItem(), orderWXPayRecordCurrent.getOutTradeNoWX());
 
             // 设置支付单完成时间
@@ -2322,7 +2328,7 @@ public class OrderServiceImpl implements OrderService {
                     e.printStackTrace();
                 }
                 if(times >= 20){
-                    throw new RuntimeException("超过30s未支付,订单下单失败");
+                    throw new RuntimeException("超过20s未支付,订单下单失败");
                 }
                 times++;
             }

+ 3 - 3
kmall-admin/src/main/java/com/kmall/admin/websocket/WebSocketServer.java

@@ -151,7 +151,7 @@ public class WebSocketServer {
 
                 String info = JSONObject.toJSONString(data);
                 session.getBasicRemote().sendText(info);
-                logger.info("发送条形码给前端,内容:" + info);
+//                logger.info("发送条形码给前端,内容:" + info);
             }else{
                 if("broadcast".equalsIgnoreCase(message)){
                     Map<String,Object> dataParam = new HashMap<>();
@@ -160,7 +160,7 @@ public class WebSocketServer {
                     data.put("pickUpCodeList", pickUpList);
                     String info = JSONObject.toJSONString(data);
                     session.getBasicRemote().sendText(info);
-                    logger.info("发送条形码给前端,内容:" + info);
+//                    logger.info("发送条形码给前端,内容:" + info);
                 }else {
                     // 根据订单id查询条形码,返回给前端页面
                     PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(message);
@@ -169,7 +169,7 @@ public class WebSocketServer {
                     data.put("pickUpCodeList", pickUpList);
                     String info = JSONObject.toJSONString(data);
                     session.getBasicRemote().sendText(info);
-                    logger.info("发送条形码给前端,内容:" + info);
+//                    logger.info("发送条形码给前端,内容:" + info);
                 }
             }
 

+ 11 - 5
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -211,7 +211,7 @@ function calculateGoodsByMysy(goodsDetails,type){
     if(mysy){
         var buyNum = mysy.buyNum;
         if(type == "add"){
-            
+
             // 证明是买一送一,并且达到买一送一的条件
             if(buyNum == 1 && vm.boughtNum.get(goodsDetails.prodBarcode)){
                 // 设置赠品的单价
@@ -251,7 +251,7 @@ function calculateGoodsByMysy(goodsDetails,type){
             var boughtNum = goodsDetails.sellVolume;
             // 减一后,不满足买一送一条件,重新计算金额
             // 如果不等于0,要减去价格
-            
+
             var remainder = 0;
             if(boughtNum > buyNum+1){
                 remainder = buyNum - (boughtNum % (buyNum+1))  ;
@@ -322,9 +322,9 @@ function calculateGoodsByMysy(goodsDetails,type){
         }
     }
 
-    
-    
-    
+
+
+
     // 判断当前商品是否为赠品
     // isSend(vm.mysy,goodsDetails,"买一送一");
     // 判断购物车里面是否有商品为赠品
@@ -663,6 +663,12 @@ let vm = new Vue({
                     console.log(goods);
                     console.log(vm.totalPrice);
 
+                    if(vm.freeBardcode.get(goods.prodBarcode) || vm.freeBardcode.get(goods.prodBarcode) == 0){
+                        var nnum = (((goods.retailPrice * goods.sellVolume) - goods.actualPaymentAmount)/goods.retailPrice);
+                        vm.freeBardcode.set(goods.prodBarcode, nnum);
+                    }
+
+
                     vm.totalPrice = vm.totalPrice - (goods.retailPrice * goods.sellVolume);
                     vm.discountedPrice = vm.discountedPrice - goods.discountedPrice;
                     vm.actualPrice = vm.actualPrice - goods.actualPaymentAmount;