From b9361b8eea2fe2a7f436d0719364191d819ecba2 Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Thu, 17 Mar 2022 10:09:27 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=A7=A3=E5=AF=86?= =?UTF-8?q?=E5=90=8E=E7=9A=84data=E7=9A=84log=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/royalcanin/good/service/OrderService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index ed608463..78f1ac11 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -1,5 +1,6 @@ package net.lab1024.smartadmin.module.system.royalcanin.good.service; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import net.lab1024.smartadmin.common.domain.ResponseDTO; @@ -253,6 +254,10 @@ public class OrderService { JSONObject jsonObject = JSONObject.parseObject(result); String afterDecodeResult = AESUtil.decryptLinux(jsonObject.getString("data"), AESUtil.KEY); com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(afterDecodeResult); + //获取的是接收的数据 + jsonObject.put("data", jsonArray); + result = JSONObject.toJSONString(jsonObject); + for (int i = 0; i < jsonArray.size();i++){ JSONObject jsonObjectResult = (JSONObject)jsonArray.get(i); OrderEntity orderEntity = ordersDao.findByOrderId(jsonObjectResult.getString("orderNumber")); @@ -277,6 +282,7 @@ public class OrderService { } } + //记录服务响应时间 addOperatreFullData(url+"orderMaster/query",queryEntity.toString(),result, startTime,elapsedTime,acceptTime); @@ -338,4 +344,5 @@ public class OrderService { public int updateOrder(String orderNumber){ return ordersDao.updateByOrderNumber(orderNumber); } + } From 57f05da254ad2492ac297c85e342a4f59dabdd34 Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Thu, 17 Mar 2022 15:26:05 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/royalcanin/CouponService.java | 10 ++++++-- .../royalcanin/good/OrderController.java | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java index 9fda9f7b..f0ec9624 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java @@ -56,13 +56,19 @@ public class CouponService { JSONObject jsonObjectResult = JSONObject.parseObject(result); com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObjectResult.getString("data")); com.alibaba.fastjson.JSONArray afterFilterArrary = new JSONArray(); + Date nowDate =SmartDateUtil.parseYMD(SmartDateUtil.formatYMD(new Date())); for(int i = 0;i < jsonArray.size();i ++){ JSONObject jsonResult = (JSONObject)jsonArray.get(i); if(jsonResult.getString("udf2") != null) { + //优惠券有效过期时间 Date compareDate = SmartDateUtil.parseYMD(jsonResult.get("fValidTo").toString()); - if ("H5".equals(jsonResult.getString("udf2"))&&"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1) { + //优惠券有效开始时间 + Date startDate = SmartDateUtil.parseYMD(jsonResult.get("fValidFrom").toString()); + if ("H5".equals(jsonResult.getString("udf2"))&&"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1 + && startDate.compareTo(nowDate) != 1) { afterFilterArrary.add(jsonResult); - }else if ("H5".equals(jsonResult.getString("udf2"))&&!"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1){ + }else if ("H5".equals(jsonResult.getString("udf2"))&&!"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1 + && startDate.compareTo(nowDate) != 1){ for(int g = 0 ;g Date: Thu, 17 Mar 2022 15:42:54 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../royalcanin/good/OrderController.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java index 444ee293..36da1352 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java @@ -13,6 +13,7 @@ import net.lab1024.smartadmin.module.system.alipay.AliPayService; import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity; import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig; import net.lab1024.smartadmin.module.system.royalcanin.CouponService; +import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity; import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress; @@ -137,6 +138,14 @@ public class OrderController { ordersEntity.setCouponName(jsonObjectData.getString("couponName")); ordersEntity.setCouponId(jsonObjectData.getString("couponId")); ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + //通过传优惠券码锁定优惠券 + CouponCosumeEntity couponCosumeEntity = new CouponCosumeEntity(); + couponCosumeEntity.setCouponCode(jsonObjectData.getString("couponCode")); + String result = couponService.couponCosume(couponCosumeEntity); + JSONObject couponJsonResult = JSONObject.parseObject(result); + if(!"0".equals(couponJsonResult.getString("code"))){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); } ordersEntity.setOrderAddress(orderAddress); @@ -247,6 +256,14 @@ public class OrderController { ordersEntity.setCouponName(jsonObjectData.getString("couponName")); ordersEntity.setCouponId(jsonObjectData.getString("couponId")); ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + //通过传优惠券码锁定优惠券 + CouponCosumeEntity couponCosumeEntity = new CouponCosumeEntity(); + couponCosumeEntity.setCouponCode(jsonObjectData.getString("couponCode")); + String result = couponService.couponCosume(couponCosumeEntity); + JSONObject couponJsonResult = JSONObject.parseObject(result); + if(!"0".equals(couponJsonResult.getString("code"))){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); } ordersEntity.setOrderAddress(orderAddress); @@ -356,6 +373,14 @@ public class OrderController { ordersEntity.setCouponName(jsonObjectData.getString("couponName")); ordersEntity.setCouponId(jsonObjectData.getString("couponId")); ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + //通过传优惠券码锁定优惠券 + CouponCosumeEntity couponCosumeEntity = new CouponCosumeEntity(); + couponCosumeEntity.setCouponCode(jsonObjectData.getString("couponCode")); + String result = couponService.couponCosume(couponCosumeEntity); + JSONObject couponJsonResult = JSONObject.parseObject(result); + if(!"0".equals(couponJsonResult.getString("code"))){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); } ordersEntity.setOrderAddress(orderAddress); From f17784ec710f55a589e69ab91e143ef7d166564e Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Thu, 17 Mar 2022 16:07:50 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartadmin/module/system/royalcanin/CouponService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java index 38199cdc..d90507c0 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java @@ -64,8 +64,7 @@ public class CouponService { Date compareDate = SmartDateUtil.parseYMD(jsonResult.get("fValidTo").toString()); //优惠券有效开始时间 Date startDate = SmartDateUtil.parseYMD(jsonResult.get("fValidFrom").toString()); - if ("H5".equals(jsonResult.getString("udf2"))&&"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1 - && startDate.compareTo(nowDate) != 1) { + if ("H5".equals(jsonResult.getString("udf2"))&&"".equals(productCode)) { afterFilterArrary.add(jsonResult); }else if ("H5".equals(jsonResult.getString("udf2"))&&!"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1 && startDate.compareTo(nowDate) != 1){ From 914d64f59724403082183c8ff6e58c6cbde5d8ca Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Fri, 18 Mar 2022 10:35:06 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/royalcanin/CouponService.java | 7 +++--- .../royalcanin/good/OrderController.java | 24 ------------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java index d90507c0..4bc3ae32 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/CouponService.java @@ -7,6 +7,7 @@ import net.lab1024.smartadmin.module.system.royalcanin.coupon.*; import net.lab1024.smartadmin.util.MapRemoveNullUtil; import net.lab1024.smartadmin.util.SmartDateUtil; import net.lab1024.smartadmin.util.SmartHttpUtil; +import net.lab1024.smartadmin.util.SmartStringUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -64,10 +65,10 @@ public class CouponService { Date compareDate = SmartDateUtil.parseYMD(jsonResult.get("fValidTo").toString()); //优惠券有效开始时间 Date startDate = SmartDateUtil.parseYMD(jsonResult.get("fValidFrom").toString()); - if ("H5".equals(jsonResult.getString("udf2"))&&"".equals(productCode)) { + if ("H5".equals(jsonResult.getString("udf2"))&& SmartStringUtil.isBlank(couponGetAllEntity.getProductCodes())) { afterFilterArrary.add(jsonResult); - }else if ("H5".equals(jsonResult.getString("udf2"))&&!"".equals(productCode)&&compareDate.compareTo(currentDate)!=-1 - && startDate.compareTo(nowDate) != 1){ + }else if ("H5".equals(jsonResult.getString("udf2"))&& SmartStringUtil.isNotBlank(couponGetAllEntity.getProductCodes()) &&compareDate.compareTo(currentDate)!=-1 + && startDate.compareTo(nowDate) != 1 && compareDate.compareTo(nowDate) != -1){ for(int g = 0 ;g Date: Fri, 18 Mar 2022 18:57:10 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E9=87=8D=E5=86=99=E4=BA=86=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../royalcanin/good/OrderController.java | 562 +++++++++++++++++- 1 file changed, 558 insertions(+), 4 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java index 1145cac2..c26d854d 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java @@ -29,6 +29,7 @@ import net.lab1024.smartadmin.module.system.wxpay.MyConfig; import net.lab1024.smartadmin.module.system.wxpay.WxpayService; import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity; import net.lab1024.smartadmin.util.GenerateSequenceUtil; +import net.lab1024.smartadmin.util.SmartStringUtil; import net.sf.json.JSONArray; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -61,8 +62,561 @@ public class OrderController { @Autowired private GoodService goodService; - @ApiOperation(value = "微信支付订单", notes = "生成订单") + @PostMapping("royalcanin/generateOrderWX") + public ResponseDTO> generateOrderWX(@RequestBody List ordersEntityList){ + StringBuffer productId = new StringBuffer(); + StringBuffer productName = new StringBuffer(); + Map resultMsg = new HashMap<>(); + String mobile = ""; + int buyCount = 0; + double total_fee = 0 ; + double basePoint = 0 ; + WxPayEntity wxPayEntity = new WxPayEntity(); + JSONArray orderDatilListJson = new JSONArray(); + OrdersEntity ordersEntity = new OrdersEntity(); + OrderAddress orderAddress = new OrderAddress(); + + String memberId = ""; + String couponCode = ""; + try { + //先查订单存在的优惠券 + for (OrdersEntity orders : ordersEntityList){ + if (orders.getCouponCode() != "" && orders.getCouponCode() != null) { + couponCode = orders.getCouponCode(); + } + memberId = orders.getMemberId(); + } + + //根据有没有优惠券来计算商品的总价 + if(SmartStringUtil.isNotEmpty(couponCode)){ + CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); + couponGetAllEntity.setMemberId(memberId); + couponGetAllEntity.setCouponCode(couponCode); + String couponInfo = couponService.couponGetAll(couponGetAllEntity); + JSONObject jsonObject = JSONObject.parseObject(couponInfo); + com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); + if(jsonArray.size() == 0){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + + JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); + if (jsonObjectData.getString("udf2") != null){ + if (!jsonObjectData.getString("udf2").equals("H5")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 + if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ + String[] productCodes = jsonObjectData.getString("productCodes").toString().split(","); + List productMasterList = new ArrayList(); + //用来保存指定类的购物车商品数据 + List ordersList = new ArrayList(); + //保存购物车其它的商品 + List ordersList2 = new ArrayList(); + + for (OrdersEntity orders2 : ordersEntityList){ + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(orders2.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0); + + if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){ + if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ + ordersList.add(orders2); + }else{ + ordersList2.add(orders2); + } + } + } + //得到当前能用优惠券的商品总金额 + Double total_Coupon = 0.0; + //得到其它商品的总金额 + Double total_Other = 0.0; + + if( ordersList != null && ordersList.size() > 0 ) { + //遍历购物车中能用当前优惠券的商品 + for (OrdersEntity entity : ordersList) { + //删除购物车信息 + cartService.cancelProduct(entity.getMemberId(), entity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(entity.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr); + JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject2.getString("productName")); + orderDatilListEntity.setPcs(entity.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject2.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount(); + + basePoint = basePoint + entity.getBasePoint(); + orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName()); + productId.append(entity.getProductCode() + ","); + productName.append(entity.getProductName() + ","); + memberId = entity.getMemberId(); + mobile = entity.getPhoneNumber(); + buyCount = buyCount + entity.getBuyCount(); + } + //校验当前订单金额有没有小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount")); + if(total_Coupon < couponAmount){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); + ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); + ordersEntity.setCouponName(jsonObjectData.getString("couponName")); + ordersEntity.setCouponId(jsonObjectData.getString("couponId")); + ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); + + } + + if( ordersList2 != null && ordersList2.size() > 0 ) { + //遍历购物车的其它商品 + for (OrdersEntity entity2 : ordersList2) { + //删除购物车信息 + cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(entity2.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr); + JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject3.getString("productName")); + orderDatilListEntity.setPcs(entity2.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject3.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount(); + + basePoint = basePoint + entity2.getBasePoint(); + orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName()); + productId.append(entity2.getProductCode() + ","); + productName.append(entity2.getProductName() + ","); + memberId = entity2.getMemberId(); + mobile = entity2.getPhoneNumber(); + buyCount = buyCount + entity2.getBuyCount(); + } + total_fee = total_fee + total_Other; + } + }else{ + for (OrdersEntity ordersEntitys : ordersEntityList) { + //删除购物车信息 + cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject.getString("productName")); + orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); + + basePoint = basePoint + ordersEntitys.getBasePoint(); + orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); + productId.append(ordersEntitys.getProductCode()+","); + productName.append(ordersEntitys.getProductName()+","); + memberId = ordersEntitys.getMemberId(); + if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) { + couponCode = ordersEntitys.getCouponCode(); + } + mobile = ordersEntitys.getPhoneNumber(); + buyCount = buyCount + ordersEntitys.getBuyCount(); + } + + ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); + ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); + ordersEntity.setCouponName(jsonObjectData.getString("couponName")); + ordersEntity.setCouponId(jsonObjectData.getString("couponId")); + ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); + } + }else{ + for (OrdersEntity ordersEntitys : ordersEntityList) { + + //删除购物车信息 + cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject.getString("productName")); + orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); + + basePoint = basePoint + ordersEntitys.getBasePoint(); + orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); + productId.append(ordersEntitys.getProductCode()+","); + productName.append(ordersEntitys.getProductName()+","); + memberId = ordersEntitys.getMemberId(); + mobile = ordersEntitys.getPhoneNumber(); + buyCount = buyCount + ordersEntitys.getBuyCount(); + } + + } + + ordersEntity.setOrderAddress(orderAddress); + ordersEntity.setProductCode(productId.substring(0,productId.length()-1)); + ordersEntity.setProductName(productName.substring(0,productName.length()-1)); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setMemberId(memberId); + ordersEntity.setPhoneNumber(mobile); + ordersEntity.setBuyCount(buyCount); + ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); + ordersEntity.setOrderStatus("0"); + ordersEntity.setBasePoint(basePoint); + ordersEntity.setPayType("3"); + resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson); + if (resultMsg.get("code").equals("1")) { + wxPayEntity.setProduct_id(ordersEntity.getProductCode()); + wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); + wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); + Map returnMap = new HashMap<>(); + returnMap.put("orderNumber", ordersEntity.getOrderNo()); + returnMap.put("orderAmount", ordersEntity.getOrderAmount()); + return ResponseDTO.succData(returnMap, wxpayService.generateQRCode(wxPayEntity)); + }else if (resultMsg.get("code").equals("0")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("3")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("4")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); + } + }catch (Exception e){ + System.out.println(e.getMessage()); + } + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + } + + @ApiOperation(value = "微信支付H5订单", notes = "生成H5订单") + @PostMapping("royalcanin/generateOrderWXH5") + public ResponseDTO> generateOrderWXH5(@RequestBody List ordersEntityList){ + StringBuffer productId = new StringBuffer(); + StringBuffer productName = new StringBuffer(); + Map resultMsg = new HashMap<>(); + String mobile = ""; + int buyCount = 0; + double total_fee = 0 ; + double basePoint = 0 ; + WxPayEntity wxPayEntity = new WxPayEntity(); + JSONArray orderDatilListJson = new JSONArray(); + OrdersEntity ordersEntity = new OrdersEntity(); + OrderAddress orderAddress = new OrderAddress(); + + String memberId = ""; + String couponCode = ""; + try { + //先查订单存在的优惠券 + for (OrdersEntity orders : ordersEntityList){ + if (orders.getCouponCode() != "" && orders.getCouponCode() != null) { + couponCode = orders.getCouponCode(); + } + memberId = orders.getMemberId(); + } + + //根据有没有优惠券来计算商品的总价 + if(SmartStringUtil.isNotEmpty(couponCode)){ + CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); + couponGetAllEntity.setMemberId(memberId); + couponGetAllEntity.setCouponCode(couponCode); + String couponInfo = couponService.couponGetAll(couponGetAllEntity); + JSONObject jsonObject = JSONObject.parseObject(couponInfo); + com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); + if(jsonArray.size() == 0){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + + JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); + if (jsonObjectData.getString("udf2") != null){ + if (!jsonObjectData.getString("udf2").equals("H5")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 + if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ + String[] productCodes = jsonObjectData.getString("productCodes").toString().split(","); + List productMasterList = new ArrayList(); + //用来保存指定类的购物车商品数据 + List ordersList = new ArrayList(); + //保存购物车其它的商品 + List ordersList2 = new ArrayList(); + + for (OrdersEntity orders2 : ordersEntityList){ + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(orders2.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0); + + if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){ + if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ + ordersList.add(orders2); + }else{ + ordersList2.add(orders2); + } + } + } + //得到当前能用优惠券的商品总金额 + Double total_Coupon = 0.0; + //得到其它商品的总金额 + Double total_Other = 0.0; + + if( ordersList != null && ordersList.size() > 0 ) { + //遍历购物车中能用当前优惠券的商品 + for (OrdersEntity entity : ordersList) { + //删除购物车信息 + cartService.cancelProduct(entity.getMemberId(), entity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(entity.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr); + JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject2.getString("productName")); + orderDatilListEntity.setPcs(entity.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject2.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount(); + + basePoint = basePoint + entity.getBasePoint(); + orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName()); + productId.append(entity.getProductCode() + ","); + productName.append(entity.getProductName() + ","); + memberId = entity.getMemberId(); + mobile = entity.getPhoneNumber(); + buyCount = buyCount + entity.getBuyCount(); + } + //校验当前订单金额有没有小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount")); + if(total_Coupon < couponAmount){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); + ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); + ordersEntity.setCouponName(jsonObjectData.getString("couponName")); + ordersEntity.setCouponId(jsonObjectData.getString("couponId")); + ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); + + } + + if( ordersList2 != null && ordersList2.size() > 0 ) { + //遍历购物车的其它商品 + for (OrdersEntity entity2 : ordersList2) { + //删除购物车信息 + cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(entity2.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr); + JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject3.getString("productName")); + orderDatilListEntity.setPcs(entity2.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject3.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount(); + + basePoint = basePoint + entity2.getBasePoint(); + orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName()); + productId.append(entity2.getProductCode() + ","); + productName.append(entity2.getProductName() + ","); + memberId = entity2.getMemberId(); + mobile = entity2.getPhoneNumber(); + buyCount = buyCount + entity2.getBuyCount(); + } + total_fee = total_fee + total_Other; + } + }else{ + for (OrdersEntity ordersEntitys : ordersEntityList) { + //删除购物车信息 + cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject.getString("productName")); + orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); + + basePoint = basePoint + ordersEntitys.getBasePoint(); + orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); + productId.append(ordersEntitys.getProductCode()+","); + productName.append(ordersEntitys.getProductName()+","); + memberId = ordersEntitys.getMemberId(); + if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) { + couponCode = ordersEntitys.getCouponCode(); + } + mobile = ordersEntitys.getPhoneNumber(); + buyCount = buyCount + ordersEntitys.getBuyCount(); + } + + ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); + ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); + ordersEntity.setCouponName(jsonObjectData.getString("couponName")); + ordersEntity.setCouponId(jsonObjectData.getString("couponId")); + ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); + } + }else{ + for (OrdersEntity ordersEntitys : ordersEntityList) { + + //删除购物车信息 + cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject.getString("productName")); + orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + + total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); + + basePoint = basePoint + ordersEntitys.getBasePoint(); + orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); + productId.append(ordersEntitys.getProductCode()+","); + productName.append(ordersEntitys.getProductName()+","); + memberId = ordersEntitys.getMemberId(); + mobile = ordersEntitys.getPhoneNumber(); + buyCount = buyCount + ordersEntitys.getBuyCount(); + } + + } + + ordersEntity.setOrderAddress(orderAddress); + ordersEntity.setProductCode(productId.substring(0,productId.length()-1)); + ordersEntity.setProductName(productName.substring(0,productName.length()-1)); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setMemberId(memberId); + ordersEntity.setPhoneNumber(mobile); + ordersEntity.setBuyCount(buyCount); + ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); + ordersEntity.setOrderStatus("0"); + ordersEntity.setBasePoint(basePoint); + ordersEntity.setPayType("3"); + resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson); + if (resultMsg.get("code").equals("1")) { + wxPayEntity.setProduct_id(ordersEntity.getProductCode()); + wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); + wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); + Map returnMap = new HashMap<>(); + returnMap.put("orderNumber", ordersEntity.getOrderNo()); + returnMap.put("orderAmount", ordersEntity.getOrderAmount()); + return ResponseDTO.succData(returnMap,wxpayService.dounifiedOrder(wxPayEntity)); + }else if (resultMsg.get("code").equals("0")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("3")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("4")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); + } + }catch (Exception e){ + System.out.println(e.getMessage()); + } + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + } + + + //原API + /* @ApiOperation(value = "微信支付订单", notes = "生成订单") @PostMapping("royalcanin/generateOrderWX") public ResponseDTO> generateOrderWX(@RequestBody List ordersEntityList){ StringBuffer productId = new StringBuffer(); @@ -171,10 +725,10 @@ public class OrderController { System.out.println(e.getMessage()); } return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); - } + } */ - @ApiOperation(value = "微信支付H5订单", notes = "生成H5订单") + /* @ApiOperation(value = "微信支付H5订单", notes = "生成H5订单") @PostMapping("royalcanin/generateOrderWXH5") public ResponseDTO> generateOrderWXH5(@RequestBody List ordersEntityList){ StringBuffer productId = new StringBuffer(); @@ -282,7 +836,7 @@ public class OrderController { } return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); } - +*/ @ApiOperation(value = "微信支付JSAPI订单", notes = "生成JSAPI订单") @PostMapping("royalcanin/generateOrderWXJSAPI") public ResponseDTO> generateOrderWXJSAPI(@RequestBody List ordersEntityList,String resp) throws Exception { From a3bd3ced1e139547e24cc9ff379e5b9aa6566b1f Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Sat, 19 Mar 2022 17:58:47 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E9=87=8D=E5=86=99=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E5=AE=9E=E7=8E=B0=E9=80=BB=E8=BE=91=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../royalcanin/good/OrderController.java | 547 +----------------- .../good/constant/OrderResponseCodeConst.java | 1 - .../royalcanin/good/service/OrderService.java | 399 ++++++++++++- 3 files changed, 398 insertions(+), 549 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java index c26d854d..7afbd6ee 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java @@ -13,7 +13,6 @@ import net.lab1024.smartadmin.module.system.alipay.AliPayService; import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity; import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig; import net.lab1024.smartadmin.module.system.royalcanin.CouponService; -import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity; import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress; @@ -65,553 +64,13 @@ public class OrderController { @ApiOperation(value = "微信支付订单", notes = "生成订单") @PostMapping("royalcanin/generateOrderWX") public ResponseDTO> generateOrderWX(@RequestBody List ordersEntityList){ - StringBuffer productId = new StringBuffer(); - StringBuffer productName = new StringBuffer(); - Map resultMsg = new HashMap<>(); - String mobile = ""; - int buyCount = 0; - double total_fee = 0 ; - double basePoint = 0 ; - WxPayEntity wxPayEntity = new WxPayEntity(); - JSONArray orderDatilListJson = new JSONArray(); - OrdersEntity ordersEntity = new OrdersEntity(); - OrderAddress orderAddress = new OrderAddress(); - - String memberId = ""; - String couponCode = ""; - try { - //先查订单存在的优惠券 - for (OrdersEntity orders : ordersEntityList){ - if (orders.getCouponCode() != "" && orders.getCouponCode() != null) { - couponCode = orders.getCouponCode(); - } - memberId = orders.getMemberId(); - } - - //根据有没有优惠券来计算商品的总价 - if(SmartStringUtil.isNotEmpty(couponCode)){ - CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); - couponGetAllEntity.setMemberId(memberId); - couponGetAllEntity.setCouponCode(couponCode); - String couponInfo = couponService.couponGetAll(couponGetAllEntity); - JSONObject jsonObject = JSONObject.parseObject(couponInfo); - com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); - if(jsonArray.size() == 0){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - - JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); - if (jsonObjectData.getString("udf2") != null){ - if (!jsonObjectData.getString("udf2").equals("H5")){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - - //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 - if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ - String[] productCodes = jsonObjectData.getString("productCodes").toString().split(","); - List productMasterList = new ArrayList(); - //用来保存指定类的购物车商品数据 - List ordersList = new ArrayList(); - //保存购物车其它的商品 - List ordersList2 = new ArrayList(); - - for (OrdersEntity orders2 : ordersEntityList){ - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(orders2.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0); - - if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){ - if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ - ordersList.add(orders2); - }else{ - ordersList2.add(orders2); - } - } - } - //得到当前能用优惠券的商品总金额 - Double total_Coupon = 0.0; - //得到其它商品的总金额 - Double total_Other = 0.0; - - if( ordersList != null && ordersList.size() > 0 ) { - //遍历购物车中能用当前优惠券的商品 - for (OrdersEntity entity : ordersList) { - //删除购物车信息 - cartService.cancelProduct(entity.getMemberId(), entity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(entity.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr); - JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject2.getString("productName")); - orderDatilListEntity.setPcs(entity.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject2.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount(); - - basePoint = basePoint + entity.getBasePoint(); - orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName()); - productId.append(entity.getProductCode() + ","); - productName.append(entity.getProductName() + ","); - memberId = entity.getMemberId(); - mobile = entity.getPhoneNumber(); - buyCount = buyCount + entity.getBuyCount(); - } - //校验当前订单金额有没有小于优惠券金额 - if(jsonObjectData.getString("couponAmount") != null ){ - Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount")); - if(total_Coupon < couponAmount){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - - ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); - ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); - ordersEntity.setCouponName(jsonObjectData.getString("couponName")); - ordersEntity.setCouponId(jsonObjectData.getString("couponId")); - ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); - total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); - - } - - if( ordersList2 != null && ordersList2.size() > 0 ) { - //遍历购物车的其它商品 - for (OrdersEntity entity2 : ordersList2) { - //删除购物车信息 - cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(entity2.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr); - JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject3.getString("productName")); - orderDatilListEntity.setPcs(entity2.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject3.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount(); - - basePoint = basePoint + entity2.getBasePoint(); - orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName()); - productId.append(entity2.getProductCode() + ","); - productName.append(entity2.getProductName() + ","); - memberId = entity2.getMemberId(); - mobile = entity2.getPhoneNumber(); - buyCount = buyCount + entity2.getBuyCount(); - } - total_fee = total_fee + total_Other; - } - }else{ - for (OrdersEntity ordersEntitys : ordersEntityList) { - //删除购物车信息 - cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject.getString("productName")); - orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); - - basePoint = basePoint + ordersEntitys.getBasePoint(); - orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); - productId.append(ordersEntitys.getProductCode()+","); - productName.append(ordersEntitys.getProductName()+","); - memberId = ordersEntitys.getMemberId(); - if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) { - couponCode = ordersEntitys.getCouponCode(); - } - mobile = ordersEntitys.getPhoneNumber(); - buyCount = buyCount + ordersEntitys.getBuyCount(); - } - - ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); - ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); - ordersEntity.setCouponName(jsonObjectData.getString("couponName")); - ordersEntity.setCouponId(jsonObjectData.getString("couponId")); - ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); - total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); - } - }else{ - for (OrdersEntity ordersEntitys : ordersEntityList) { - - //删除购物车信息 - cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject.getString("productName")); - orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); - - basePoint = basePoint + ordersEntitys.getBasePoint(); - orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); - productId.append(ordersEntitys.getProductCode()+","); - productName.append(ordersEntitys.getProductName()+","); - memberId = ordersEntitys.getMemberId(); - mobile = ordersEntitys.getPhoneNumber(); - buyCount = buyCount + ordersEntitys.getBuyCount(); - } - - } - - ordersEntity.setOrderAddress(orderAddress); - ordersEntity.setProductCode(productId.substring(0,productId.length()-1)); - ordersEntity.setProductName(productName.substring(0,productName.length()-1)); - ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); - ordersEntity.setMemberId(memberId); - ordersEntity.setPhoneNumber(mobile); - ordersEntity.setBuyCount(buyCount); - ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); - ordersEntity.setOrderStatus("0"); - ordersEntity.setBasePoint(basePoint); - ordersEntity.setPayType("3"); - resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson); - if (resultMsg.get("code").equals("1")) { - wxPayEntity.setProduct_id(ordersEntity.getProductCode()); - wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); - wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); - Map returnMap = new HashMap<>(); - returnMap.put("orderNumber", ordersEntity.getOrderNo()); - returnMap.put("orderAmount", ordersEntity.getOrderAmount()); - return ResponseDTO.succData(returnMap, wxpayService.generateQRCode(wxPayEntity)); - }else if (resultMsg.get("code").equals("0")){ - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); - }else if (resultMsg.get("code").equals("3")){ - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); - }else if (resultMsg.get("code").equals("4")){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); - } - }catch (Exception e){ - System.out.println(e.getMessage()); - } - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + return orderService.createOrderWXInfo(ordersEntityList); } @ApiOperation(value = "微信支付H5订单", notes = "生成H5订单") @PostMapping("royalcanin/generateOrderWXH5") public ResponseDTO> generateOrderWXH5(@RequestBody List ordersEntityList){ - StringBuffer productId = new StringBuffer(); - StringBuffer productName = new StringBuffer(); - Map resultMsg = new HashMap<>(); - String mobile = ""; - int buyCount = 0; - double total_fee = 0 ; - double basePoint = 0 ; - WxPayEntity wxPayEntity = new WxPayEntity(); - JSONArray orderDatilListJson = new JSONArray(); - OrdersEntity ordersEntity = new OrdersEntity(); - OrderAddress orderAddress = new OrderAddress(); - - String memberId = ""; - String couponCode = ""; - try { - //先查订单存在的优惠券 - for (OrdersEntity orders : ordersEntityList){ - if (orders.getCouponCode() != "" && orders.getCouponCode() != null) { - couponCode = orders.getCouponCode(); - } - memberId = orders.getMemberId(); - } - - //根据有没有优惠券来计算商品的总价 - if(SmartStringUtil.isNotEmpty(couponCode)){ - CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); - couponGetAllEntity.setMemberId(memberId); - couponGetAllEntity.setCouponCode(couponCode); - String couponInfo = couponService.couponGetAll(couponGetAllEntity); - JSONObject jsonObject = JSONObject.parseObject(couponInfo); - com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); - if(jsonArray.size() == 0){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - - JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); - if (jsonObjectData.getString("udf2") != null){ - if (!jsonObjectData.getString("udf2").equals("H5")){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - - //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 - if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ - String[] productCodes = jsonObjectData.getString("productCodes").toString().split(","); - List productMasterList = new ArrayList(); - //用来保存指定类的购物车商品数据 - List ordersList = new ArrayList(); - //保存购物车其它的商品 - List ordersList2 = new ArrayList(); - - for (OrdersEntity orders2 : ordersEntityList){ - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(orders2.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0); - - if(SmartStringUtil.isNotBlank(goodsObject.getString("productCode"))){ - if(Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ - ordersList.add(orders2); - }else{ - ordersList2.add(orders2); - } - } - } - //得到当前能用优惠券的商品总金额 - Double total_Coupon = 0.0; - //得到其它商品的总金额 - Double total_Other = 0.0; - - if( ordersList != null && ordersList.size() > 0 ) { - //遍历购物车中能用当前优惠券的商品 - for (OrdersEntity entity : ordersList) { - //删除购物车信息 - cartService.cancelProduct(entity.getMemberId(), entity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(entity.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray2 = JSONObject.parseArray(goodsStr); - JSONObject goodsObject2 = (JSONObject) jsonGoodsArray2.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject2.getString("productName")); - orderDatilListEntity.setPcs(entity.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject2.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject2.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount(); - - basePoint = basePoint + entity.getBasePoint(); - orderAddress.setAddressCityName(entity.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(entity.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(entity.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(entity.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(entity.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(entity.getOrderAddress().getAddressProvinceName()); - productId.append(entity.getProductCode() + ","); - productName.append(entity.getProductName() + ","); - memberId = entity.getMemberId(); - mobile = entity.getPhoneNumber(); - buyCount = buyCount + entity.getBuyCount(); - } - //校验当前订单金额有没有小于优惠券金额 - if(jsonObjectData.getString("couponAmount") != null ){ - Double couponAmount = Double.valueOf(jsonObjectData.getString("couponAmount")); - if(total_Coupon < couponAmount){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - - ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); - ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); - ordersEntity.setCouponName(jsonObjectData.getString("couponName")); - ordersEntity.setCouponId(jsonObjectData.getString("couponId")); - ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); - total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); - - } - - if( ordersList2 != null && ordersList2.size() > 0 ) { - //遍历购物车的其它商品 - for (OrdersEntity entity2 : ordersList2) { - //删除购物车信息 - cartService.cancelProduct(entity2.getMemberId(), entity2.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(entity2.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray3 = JSONObject.parseArray(goodsStr); - JSONObject goodsObject3 = (JSONObject) jsonGoodsArray3.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject3.getString("productName")); - orderDatilListEntity.setPcs(entity2.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject3.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject3.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_Other = total_Other + Double.parseDouble(goodsObject3.getString("ecPrice")) * entity2.getBuyCount(); - - basePoint = basePoint + entity2.getBasePoint(); - orderAddress.setAddressCityName(entity2.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(entity2.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(entity2.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(entity2.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(entity2.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(entity2.getOrderAddress().getAddressProvinceName()); - productId.append(entity2.getProductCode() + ","); - productName.append(entity2.getProductName() + ","); - memberId = entity2.getMemberId(); - mobile = entity2.getPhoneNumber(); - buyCount = buyCount + entity2.getBuyCount(); - } - total_fee = total_fee + total_Other; - } - }else{ - for (OrdersEntity ordersEntitys : ordersEntityList) { - //删除购物车信息 - cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject.getString("productName")); - orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); - - basePoint = basePoint + ordersEntitys.getBasePoint(); - orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); - productId.append(ordersEntitys.getProductCode()+","); - productName.append(ordersEntitys.getProductName()+","); - memberId = ordersEntitys.getMemberId(); - if (ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) { - couponCode = ordersEntitys.getCouponCode(); - } - mobile = ordersEntitys.getPhoneNumber(); - buyCount = buyCount + ordersEntitys.getBuyCount(); - } - - ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); - ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); - ordersEntity.setCouponName(jsonObjectData.getString("couponName")); - ordersEntity.setCouponId(jsonObjectData.getString("couponId")); - ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); - total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); - } - }else{ - for (OrdersEntity ordersEntitys : ordersEntityList) { - - //删除购物车信息 - cartService.cancelProduct(ordersEntitys.getMemberId(), ordersEntity.getProductCode()); - //存储orderDetailList - ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); - productMasterQueryEntity.setProductCode(ordersEntitys.getProductCode()); - String goodsStr = goodService.productQuery(productMasterQueryEntity); - - com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); - JSONObject goodsObject = (JSONObject)jsonGoodsArray.get(0); - OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); - orderDatilListEntity.setProductName(goodsObject.getString("productName")); - orderDatilListEntity.setPcs(ordersEntitys.getBuyCount()); - orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); - orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); - orderDatilListJson.add(orderDatilListEntity); - - total_fee = total_fee + Double.parseDouble(goodsObject.getString("ecPrice")) * ordersEntitys.getBuyCount(); - - basePoint = basePoint + ordersEntitys.getBasePoint(); - orderAddress.setAddressCityName(ordersEntitys.getOrderAddress().getAddressCityName()); - orderAddress.setAddressCountyName(ordersEntitys.getOrderAddress().getAddressCountyName()); - orderAddress.setAddressDetailInfo(ordersEntitys.getOrderAddress().getAddressDetailInfo()); - orderAddress.setAddressPhoneNumber(ordersEntitys.getOrderAddress().getAddressPhoneNumber()); - orderAddress.setAddressUserName(ordersEntitys.getOrderAddress().getAddressUserName()); - orderAddress.setAddressProvinceName(ordersEntitys.getOrderAddress().getAddressProvinceName()); - productId.append(ordersEntitys.getProductCode()+","); - productName.append(ordersEntitys.getProductName()+","); - memberId = ordersEntitys.getMemberId(); - mobile = ordersEntitys.getPhoneNumber(); - buyCount = buyCount + ordersEntitys.getBuyCount(); - } - - } - - ordersEntity.setOrderAddress(orderAddress); - ordersEntity.setProductCode(productId.substring(0,productId.length()-1)); - ordersEntity.setProductName(productName.substring(0,productName.length()-1)); - ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); - ordersEntity.setMemberId(memberId); - ordersEntity.setPhoneNumber(mobile); - ordersEntity.setBuyCount(buyCount); - ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); - ordersEntity.setOrderStatus("0"); - ordersEntity.setBasePoint(basePoint); - ordersEntity.setPayType("3"); - resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson); - if (resultMsg.get("code").equals("1")) { - wxPayEntity.setProduct_id(ordersEntity.getProductCode()); - wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); - wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); - Map returnMap = new HashMap<>(); - returnMap.put("orderNumber", ordersEntity.getOrderNo()); - returnMap.put("orderAmount", ordersEntity.getOrderAmount()); - return ResponseDTO.succData(returnMap,wxpayService.dounifiedOrder(wxPayEntity)); - }else if (resultMsg.get("code").equals("0")){ - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); - }else if (resultMsg.get("code").equals("3")){ - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); - }else if (resultMsg.get("code").equals("4")){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); - } - }catch (Exception e){ - System.out.println(e.getMessage()); - } - return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + return orderService.createOrderWXH5Info(ordersEntityList); } @@ -626,7 +85,7 @@ public class OrderController { int buyCount = 0; double total_fee = 0 ; double basePoint = 0 ; - WxPayEntity wxPayEntity = new WxPayEntity(); + WxPayEntity wxPayEntity = new WxPayEntity();-------- JSONArray orderDatilListJson = new JSONArray(); OrdersEntity ordersEntity = new OrdersEntity(); OrderAddress orderAddress = new OrderAddress(); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/constant/OrderResponseCodeConst.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/constant/OrderResponseCodeConst.java index ee32608c..f6207b40 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/constant/OrderResponseCodeConst.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/constant/OrderResponseCodeConst.java @@ -7,7 +7,6 @@ public class OrderResponseCodeConst extends ResponseCodeConst { public static final OrderResponseCodeConst COUPON_USE_FAIL = new OrderResponseCodeConst(9001, "优惠卷使用失败!"); - public static final OrderResponseCodeConst GENERATE_ORDER_FAIL = new OrderResponseCodeConst(9002, "订单生成失败!"); public static final OrderResponseCodeConst GENERATE_FAIL = new OrderResponseCodeConst(9003, "数据生成失败!"); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 5adf370c..575bdd3d 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -10,6 +10,7 @@ import net.lab1024.smartadmin.module.system.royalcanin.CouponService; import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCancelEntity; import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponCosumeEntity; import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponFetchEntity; +import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity; import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogEntity; import net.lab1024.smartadmin.module.system.royalcanin.domain.RoyalcaninOperateLogService; import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst; @@ -17,13 +18,15 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.dao.OrdersDao; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrdersEntity; +import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQueryEntity; import net.lab1024.smartadmin.module.system.royalcanin.notify.service.NotifyService; import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.AddOrSaveEntity; import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderCouponEntity; +import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderDatilListEntity; import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity; -import net.lab1024.smartadmin.util.AESUtil; -import net.lab1024.smartadmin.util.MapRemoveNullUtil; -import net.lab1024.smartadmin.util.SmartHttpUtil; +import net.lab1024.smartadmin.module.system.wxpay.WxpayService; +import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity; +import net.lab1024.smartadmin.util.*; import net.sf.json.JSONArray; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -32,7 +35,9 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; @Service @@ -41,6 +46,18 @@ public class OrderService { @Autowired private CouponService couponService; + @Autowired + private GoodService goodService; + + @Autowired + private OrderService orderService; + + @Autowired + private CartService cartService; + + @Autowired + private WxpayService wxpayService; + @Autowired private RoyalcaninOperateLogService royalcaninOperateLogService; @@ -54,7 +71,7 @@ public class OrderService { private String url ; @Transactional - public Map generateOrder(OrdersEntity ordersEntity, JSONArray listJson) throws Exception { + public MapgenerateOrder(OrdersEntity ordersEntity, JSONArray listJson) throws Exception { AddOrSaveEntity addOrSaveEntity = new AddOrSaveEntity(); MapresultMap = new HashMap<>(); try { @@ -342,4 +359,378 @@ public class OrderService { return ordersDao.updateByOrderNumber(orderNumber); } + public BigDecimal computeTotal(String couponTypeId, BigDecimal discount, BigDecimal total) { + BigDecimal endTotal = new BigDecimal("0"); + switch (couponTypeId) + { +// case "5" : +// endTotal = (total * (buyCount-1)) + (total * discount); +// break; + case "2": + //total - discount + endTotal = total.subtract(discount); + break; + case "3": + //total *(1 - discount) + endTotal = total.multiply(new BigDecimal("1").subtract(discount)); + break; + case "1" : + //total - discount + endTotal = total.subtract(discount); + break; + case "4" : + //total *(1 - discount) + endTotal = total.multiply(new BigDecimal("1").subtract(discount)); + break; + case "6" : + //total - discount + endTotal = total.subtract(discount); + break; + } + return endTotal; + } + + // + public ResponseDTO> createOrderWXInfo(List ordersEntityList) { + Map resultMsg = new HashMap<>(); + BigDecimal total_fee = new BigDecimal("0"); + WxPayEntity wxPayEntity = new WxPayEntity(); + JSONArray orderDatilListJson = new JSONArray(); + OrdersEntity ordersEntity = new OrdersEntity(); + JSONObject couponJson = null; + + String memberId = null; + String couponCode = null; + try { + //先查订单存在的优惠券 + for (OrdersEntity orders : ordersEntityList){ + if (SmartStringUtil.isNotEmpty(orders.getCouponCode())) { + couponCode = orders.getCouponCode(); + } + memberId = orders.getMemberId(); + } + + //根据有没有优惠券来计算商品的总价 + if(SmartStringUtil.isNotEmpty(couponCode)){ + CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); + couponGetAllEntity.setMemberId(memberId); + couponGetAllEntity.setCouponCode(couponCode); + String couponInfo = couponService.couponGetAll(couponGetAllEntity); + JSONObject jsonObject = JSONObject.parseObject(couponInfo); + com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); + if(jsonArray.size() == 0){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + + JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); + if (jsonObjectData.getString("udf2") != null){ + if (!jsonObjectData.getString("udf2").equals("H5")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + //得到其它商品的总金额 + BigDecimal total_Other = new BigDecimal("0"); + //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 + if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ + // BigDecimal total_Coupon = new BigDecimal("0"); + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, jsonObjectData,total_fee); + //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); + //得到当前能用优惠券的商品总金额 + BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); + + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + if(total_Coupon.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 + addOrdersEntity(jsonObjectData, ordersEntity); + //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); + //得出指定类用完优惠券后的金额 + total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon); + //得出最终实际的支付金额 + total_fee = total_Other.add(total_Coupon); + }else{//通用类优惠券的实际支付逻辑 + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); + orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson"); + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount()); + if(orderAmount.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + if(total_fee.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 + addOrdersEntity(jsonObjectData, ordersEntity); + //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); + total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount())); + } + }else{//没有优惠券的计算总价逻辑 + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + } + + ordersEntity.setMemberId(memberId); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); + ordersEntity.setOrderStatus("0"); + ordersEntity.setPayType("3"); + resultMsg = orderService.generateOrder(ordersEntity, orderDatilListJson); + if (resultMsg.get("code").equals("1")) { + wxPayEntity.setProduct_id(ordersEntity.getProductCode()); + wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); + wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); + Map returnMap = new HashMap<>(); + returnMap.put("orderNumber", ordersEntity.getOrderNo()); + returnMap.put("orderAmount", ordersEntity.getOrderAmount()); + return ResponseDTO.succData(returnMap, wxpayService.generateQRCode(wxPayEntity)); + }else if (resultMsg.get("code").equals("0")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("3")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("4")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); + } + }catch (Exception e){ + System.out.println(e.getMessage()); + } + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + } + + //提交订单生成逻辑 + public ResponseDTO> createOrderWXH5Info(List ordersEntityList) { + Map resultMsg = new HashMap<>(); + BigDecimal total_fee = new BigDecimal("0"); + WxPayEntity wxPayEntity = new WxPayEntity(); + JSONArray orderDatilListJson = new JSONArray(); + OrdersEntity ordersEntity = new OrdersEntity(); + JSONObject couponJson = null; + + String memberId = null; + String couponCode = null; + try { + //先查订单存在的优惠券 + for (OrdersEntity orders : ordersEntityList){ + if (SmartStringUtil.isNotEmpty(orders.getCouponCode())) { + couponCode = orders.getCouponCode(); + } + memberId = orders.getMemberId(); + } + + //根据有没有优惠券来计算商品的总价 + if(SmartStringUtil.isNotEmpty(couponCode)){ + CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity(); + couponGetAllEntity.setMemberId(memberId); + couponGetAllEntity.setCouponCode(couponCode); + String couponInfo = couponService.couponGetAll(couponGetAllEntity); + JSONObject jsonObject = JSONObject.parseObject(couponInfo); + com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); + if(jsonArray.size() == 0){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + + JSONObject jsonObjectData = (JSONObject) jsonArray.get(0); + if (jsonObjectData.getString("udf2") != null){ + if (!jsonObjectData.getString("udf2").equals("H5")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + + //得到其它商品的总金额 + BigDecimal total_Other = new BigDecimal("0"); + //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 + if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ + // BigDecimal total_Coupon = new BigDecimal("0"); + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, jsonObjectData,total_fee); + //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); + //得到当前能用优惠券的商品总金额 + BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); + + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + if(total_Coupon.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 + addOrdersEntity(jsonObjectData, ordersEntity); + //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); + //得出指定类用完优惠券后的金额 + total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon); + //得出最终实际的支付金额 + total_fee = total_Other.add(total_Coupon); + }else{//通用类优惠券的实际支付逻辑 + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); + orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson"); + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount()); + if(orderAmount.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //校验当前订单金额小于优惠券金额 + if(jsonObjectData.getString("couponAmount") != null ){ + BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); + if(total_fee.compareTo(couponAmount) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 + addOrdersEntity(jsonObjectData, ordersEntity); + //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); + total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount())); + } + }else{//没有优惠券的计算总价逻辑 + Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + } + + ordersEntity.setMemberId(memberId); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); + ordersEntity.setOrderStatus("0"); + ordersEntity.setPayType("3"); + resultMsg = generateOrder(ordersEntity, orderDatilListJson); + if (resultMsg.get("code").equals("1")) { + wxPayEntity.setProduct_id(ordersEntity.getProductCode()); + wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); + wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); + Map returnMap = new HashMap<>(); + returnMap.put("orderNumber", ordersEntity.getOrderNo()); + returnMap.put("orderAmount", ordersEntity.getOrderAmount()); + return ResponseDTO.succData(returnMap,wxpayService.dounifiedOrder(wxPayEntity)); + }else if (resultMsg.get("code").equals("0")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("3")){ + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_FAIL_COUPONDED,resultMsg.get("msg")); + }else if (resultMsg.get("code").equals("4")){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL,resultMsg.get("msg")); + } + }catch (Exception e){ + System.out.println(e.getMessage()); + } + return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL,resultMsg.get("msg")); + } + + //计算无优惠券、通用券商品总价等信息 + private Map addOrdersEntityInfo(List ordersEntityList, OrdersEntity ordersEntity, JSONObject couponJson, BigDecimal total_fee) throws Exception { + Map map = new HashMap(); + JSONArray orderDatilListJson = new JSONArray(); + OrderAddress orderAddress = new OrderAddress(); + StringBuffer productId = new StringBuffer(); + StringBuffer productName = new StringBuffer(); + //BigDecimal total_fee = new BigDecimal("0"); + BigDecimal total_Coupon = new BigDecimal("0"); + String[] productCodes = null; + Boolean isExist = false; + double basePoint = 0 ; + String mobile = ""; + int buyCount = 0; + + //判断是否属于指定类 + if(couponJson != null && SmartStringUtil.isNotBlank(couponJson.getString("productCodes"))){ + isExist = true; + productCodes = couponJson.getString("productCodes").toString().split(","); + } + + + for (OrdersEntity order : ordersEntityList) { + //从crm获取商品的json数据信息 + JSONObject goodsObject = gainGoodsObject(order); + //删除购物车信息 + cartService.cancelProduct(order.getMemberId(), order.getProductCode()); + //拼接商品数据信息得到 + splicingOrderDetail(order, goodsObject, orderDatilListJson); + //设置订单地址信息 + addOrderAddress(orderAddress, order); + //筛选能用当前优惠券的商品3 + if(isExist && Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ + //计算商品价格、数量、basepoint相关信息 + total_Coupon = calculationTotal(order, goodsObject, total_Coupon); + }else{ + //计算商品价格、数量、basepoint相关信息 + total_fee = calculationTotal(order, goodsObject, total_fee); + } + buyCount = buyCount + order.getBuyCount(); + basePoint = basePoint + order.getBasePoint(); + productId.append(order.getProductCode() + ","); + productName.append(order.getProductName() + ","); + mobile = order.getPhoneNumber(); + } + + ordersEntity.setOrderAddress(orderAddress); + ordersEntity.setCouponAmount(ordersEntity.getCouponAmount()); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); + ordersEntity.setBuyCount(buyCount); + ordersEntity.setBasePoint(basePoint); + ordersEntity.setPhoneNumber(mobile); + ordersEntity.setProductCode(productId.substring(0, productId.length()-1)); + ordersEntity.setProductName(productName.substring(0, productName.length()-1)); + map.put("ordersEntity", ordersEntity); + map.put("orderDetailJson", orderDatilListJson); + map.put("total_Coupon", "total_Coupon"); + return map; + } + + private JSONObject gainGoodsObject(OrdersEntity appointCoupon) throws Exception { + //存储orderDetailList + ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity(); + productMasterQueryEntity.setProductCode(appointCoupon.getProductCode()); + String goodsStr = goodService.productQuery(productMasterQueryEntity); + com.alibaba.fastjson.JSONArray jsonGoodsArray = JSONObject.parseArray(goodsStr); + JSONObject goodsObject = (JSONObject) jsonGoodsArray.get(0); + return goodsObject; + } + + private void addOrdersEntity(JSONObject jsonObjectData, OrdersEntity ordersEntity) { + ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ? jsonObjectData.getString("discount") : jsonObjectData.getString("couponAmount")); + ordersEntity.setCouponCode(jsonObjectData.getString("couponCode")); + ordersEntity.setCouponName(jsonObjectData.getString("couponName")); + ordersEntity.setCouponId(jsonObjectData.getString("couponId")); + ordersEntity.setCouponTypeId(jsonObjectData.getString("couponTypeId")); + } + + private BigDecimal calculationTotal(OrdersEntity appointCoupon, JSONObject goodsObject, BigDecimal total_other) { + //total_Coupon = total_Coupon + Double.parseDouble(goodsObject2.getString("ecPrice")) * entity.getBuyCount(); + BigDecimal ecPrice = new BigDecimal(goodsObject.getString("ecPrice")); + BigDecimal buyCounts = new BigDecimal(appointCoupon.getBuyCount()); + total_other = total_other.add(ecPrice.multiply(buyCounts)) ; + return total_other; + } + + private void addOrderAddress(OrderAddress orderAddress, OrdersEntity appointCoupon) { + orderAddress.setAddressCityName(appointCoupon.getOrderAddress().getAddressCityName()); + orderAddress.setAddressCountyName(appointCoupon.getOrderAddress().getAddressCountyName()); + orderAddress.setAddressDetailInfo(appointCoupon.getOrderAddress().getAddressDetailInfo()); + orderAddress.setAddressPhoneNumber(appointCoupon.getOrderAddress().getAddressPhoneNumber()); + orderAddress.setAddressUserName(appointCoupon.getOrderAddress().getAddressUserName()); + orderAddress.setAddressProvinceName(appointCoupon.getOrderAddress().getAddressProvinceName()); + } + + private void splicingOrderDetail(OrdersEntity appointCoupon, JSONObject goodsObject, JSONArray orderDatilListJson) { + OrderDatilListEntity orderDatilListEntity = new OrderDatilListEntity(); + orderDatilListEntity.setProductName(goodsObject.getString("productName")); + orderDatilListEntity.setPcs(appointCoupon.getBuyCount()); + orderDatilListEntity.setProductCode(goodsObject.getString("productCode")); + orderDatilListEntity.setEcPrice(goodsObject.getString("ecPrice")); + orderDatilListJson.add(orderDatilListEntity); + } + + } From cf44fb3cb2089cb572a923d62749b2e5943f0245 Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Sun, 20 Mar 2022 17:59:13 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../royalcanin/good/service/OrderService.java | 44 ++++++------------- 1 file changed, 13 insertions(+), 31 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 575bdd3d..63fb97bf 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -429,8 +429,6 @@ public class OrderService { } } - //得到其它商品的总金额 - BigDecimal total_Other = new BigDecimal("0"); //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ // BigDecimal total_Coupon = new BigDecimal("0"); @@ -453,33 +451,26 @@ public class OrderService { //得出指定类用完优惠券后的金额 total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon); //得出最终实际的支付金额 - total_fee = total_Other.add(total_Coupon); + total_fee = new BigDecimal(ordersEntity.getOrderAmount()).add(total_Coupon); }else{//通用类优惠券的实际支付逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); - orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson"); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); - BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount()); - if(orderAmount.compareTo(couponAmount) == -1){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - //校验当前订单金额小于优惠券金额 - if(jsonObjectData.getString("couponAmount") != null ){ - BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); - if(total_fee.compareTo(couponAmount) == -1){ + if(new BigDecimal(ordersEntity.getOrderAmount()).compareTo(couponAmount) == -1){ return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } //设置ordersEntity的参数 addOrdersEntity(jsonObjectData, ordersEntity); //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); - total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount())); + total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), new BigDecimal(ordersEntity.getOrderAmount())); } }else{//没有优惠券的计算总价逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + total_fee = new BigDecimal(ordersEntity.getOrderAmount()); } ordersEntity.setMemberId(memberId); @@ -548,8 +539,6 @@ public class OrderService { } } - //得到其它商品的总金额 - BigDecimal total_Other = new BigDecimal("0"); //根据productCodes来判断优惠券的类型,空的话就是通用券,不是空就是指定类别券 if(SmartStringUtil.isNotBlank(jsonObjectData.getString("productCodes"))){ // BigDecimal total_Coupon = new BigDecimal("0"); @@ -572,33 +561,26 @@ public class OrderService { //得出指定类用完优惠券后的金额 total_Coupon = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), total_Coupon); //得出最终实际的支付金额 - total_fee = total_Other.add(total_Coupon); + total_fee = new BigDecimal(ordersEntity.getOrderAmount()).add(total_Coupon); }else{//通用类优惠券的实际支付逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); //ordersEntity = (OrdersEntity) resultMap.get("ordersEntity"); - orderDatilListJson = (JSONArray) resultMap.get("orderDetailJson"); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); - BigDecimal orderAmount = new BigDecimal(ordersEntity.getOrderAmount()); - if(orderAmount.compareTo(couponAmount) == -1){ - return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); - } - } - //校验当前订单金额小于优惠券金额 - if(jsonObjectData.getString("couponAmount") != null ){ - BigDecimal couponAmount = new BigDecimal(jsonObjectData.getString("couponAmount")); - if(total_fee.compareTo(couponAmount) == -1){ + if(new BigDecimal(ordersEntity.getOrderAmount()).compareTo(couponAmount) == -1){ return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } //设置ordersEntity的参数 addOrdersEntity(jsonObjectData, ordersEntity); //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_fee); - total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()),new BigDecimal(ordersEntity.getOrderAmount())); + total_fee = orderService.computeTotal(ordersEntity.getCouponTypeId(), new BigDecimal(ordersEntity.getCouponAmount()), new BigDecimal(ordersEntity.getOrderAmount())); } }else{//没有优惠券的计算总价逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); + total_fee = new BigDecimal(ordersEntity.getOrderAmount()); } ordersEntity.setMemberId(memberId); @@ -676,15 +658,15 @@ public class OrderService { ordersEntity.setOrderAddress(orderAddress); ordersEntity.setCouponAmount(ordersEntity.getCouponAmount()); - ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); ordersEntity.setBuyCount(buyCount); ordersEntity.setBasePoint(basePoint); ordersEntity.setPhoneNumber(mobile); + ordersEntity.setOrderAmount(StringUtil.toString(total_fee)); ordersEntity.setProductCode(productId.substring(0, productId.length()-1)); ordersEntity.setProductName(productName.substring(0, productName.length()-1)); map.put("ordersEntity", ordersEntity); - map.put("orderDetailJson", orderDatilListJson); - map.put("total_Coupon", "total_Coupon"); + map.put("orderDatilListJson", orderDatilListJson); + map.put("total_Coupon", total_Coupon); return map; } From fd0f0243466a3c9f7a8c006458def65809d6914e Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 21 Mar 2022 15:45:01 +0800 Subject: [PATCH 09/17] Coupon displaying updated --- rc-busness/pages/personal/settlement.vue | 132 +++++++++++------- rc-busness/pages/personal/useraddress.vue | 101 +++----------- rc-busness/pages/productdetails/producted.vue | 26 +++- 3 files changed, 124 insertions(+), 135 deletions(-) diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 5ea680de..368fc431 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -269,7 +269,6 @@ export default { methods: { ...mapMutations(["checkIsLogin"]), discountedSumPrice() { - let total = 0; if(this.curCoupon.productCodes) this.finalAmount = this.qualifiedProductDiscount(); else @@ -282,7 +281,16 @@ export default { let checkResult = true; if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { checkResult = false; - } + } + if(this.curCoupon.minQuantity && this.curCoupon.minQuantity > 0) { + let totalItemNum = 0; + let tmpShoppingCartList = this.arrSort(this.goldmedal); + for(let itemInCart of tmpShoppingCartList) { + totalItemNum += itemInCart.buyCount; + } + if(this.curCoupon.minQuantity > totalItemNum) + checkResult = false; + } if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > this.sumPrice) { checkResult = false; } @@ -304,69 +312,79 @@ export default { qualifiedProductDiscount(){ this.discountedItemIndex = 0; let total = 0; + let totalItemNum = 0; let couponUsed = false; let tmpShoppingCartList = this.arrSort(this.goldmedal); let qualifiedProductAmount = 0; let skipQualifiedProductAmountCalculating = false; - + let checkResult = true; for(let itemInCart of tmpShoppingCartList) { if(this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { qualifiedProductAmount += (itemInCart.productPrice * itemInCart.buyCount); + totalItemNum += itemInCart.buyCount; } } + if(this.curCoupon.minPrice && this.curCoupon.minPrice > qualifiedProductAmount) { + checkResult = false; + } + if(this.curCoupon.minQuantity && this.curCoupon.minQuantity > totalItemNum) { + checkResult = false; + } + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > qualifiedProductAmount) { + checkResult = false; + } for(let itemInCart of tmpShoppingCartList) { - if(this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1 && !couponUsed) { - if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) { - //Check minQuantity - total+=(itemInCart.buyCount * itemInCart.productPrice); - } else if(this.curCoupon.minPrice && this.curCoupon.minPrice > (itemInCart.buyCount * itemInCart.productPrice)) { - //Check minPrice - total+=(itemInCart.buyCount * itemInCart.productPrice); - } else { - //Into coupon discount calculation - switch(this.curCoupon.couponTypeId) { - case 1: //Amount deduct - /* - if(this.curCoupon.couponAmount && this.curCoupon.couponAmount <= (itemInCart.productPrice * itemInCart.buyCount)) { - total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); - this.discountAmount = this.curCoupon.couponAmount; - this.discountedProductCode = itemInCart.productCode; - couponUsed=true; - } else if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > (itemInCart.productPrice * itemInCart.buyCount)) { - total = total + itemInCart.productPrice * itemInCart.buyCount; - this.discountAmount = 0; - this.curCoupon = {couponName:'未能使用该优惠券'}; - } - break; - */ - case 2: //Amount deduct with minPrice restriction - case 6: - if(this.curCoupon.couponAmount && this.curCoupon.couponAmount <= qualifiedProductAmount && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { - total = total + qualifiedProductAmount - this.curCoupon.couponAmount; - this.discountAmount = this.curCoupon.couponAmount; - this.discountedProductCode = itemInCart.productCode; - skipQualifiedProductAmountCalculating = true; - couponUsed=true; - } else if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > qualifiedProductAmount) { - total = total + itemInCart.productPrice * itemInCart.buyCount; - this.discountAmount = 0; - this.curCoupon = {couponName:'未能使用该优惠券'}; - } - break; - case 3: //Limited product % discount - case 4: //% discount + if(this.curCoupon.productCodes && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1 && !couponUsed && checkResult) { + //Into coupon discount calculation + switch(this.curCoupon.couponTypeId) { + case 1: //Amount deduct + /* + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount <= (itemInCart.productPrice * itemInCart.buyCount)) { + total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); + this.discountAmount = this.curCoupon.couponAmount; + this.discountedProductCode = itemInCart.productCode; + couponUsed=true; + } else if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > (itemInCart.productPrice * itemInCart.buyCount)) { + total = total + itemInCart.productPrice * itemInCart.buyCount; + this.discountAmount = 0; + this.curCoupon = {couponName:'未能使用该优惠券'}; + } + break; + */ + case 2: //Amount deduct with minPrice restriction + case 6: + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount <= qualifiedProductAmount && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { + total = total + qualifiedProductAmount - this.curCoupon.couponAmount; + this.discountAmount = this.curCoupon.couponAmount; + this.discountedProductCode = itemInCart.productCode; + skipQualifiedProductAmountCalculating = true; + couponUsed=true; + } else if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > qualifiedProductAmount) { + total = total + itemInCart.productPrice * itemInCart.buyCount; + this.discountAmount = 0; + this.curCoupon = {couponName:'未能使用该优惠券'}; + } + break; + case 3: //Limited product % discount + case 4: //% discount + if(this.curCoupon.discount && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { total = total + (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount ); this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; this.discountedProductCode = itemInCart.productCode; couponUsed=true; - break; - default: - total += itemInCart.productPrice * itemInCart.buyCount; - break; - } - //Into coupon discount calculation end + skipQualifiedProductAmountCalculating = true; + } else if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > qualifiedProductAmount) { + total = total + itemInCart.productPrice * itemInCart.buyCount; + this.discountAmount = 0; + this.curCoupon = {couponName:'未能使用该优惠券'}; + } + break; + default: + total += itemInCart.productPrice * itemInCart.buyCount; + break; } + //Into coupon discount calculation end } else { if(skipQualifiedProductAmountCalculating && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { @@ -375,6 +393,11 @@ export default { } } } + if(!couponUsed) { + this.discountAmount = 0; + this.curCoupon = {couponName:'未能使用该优惠券'}; + total = this.sumPrice; + } return total; }, arrSort(arr) { @@ -436,16 +459,13 @@ export default { let avaliableCouponNum = 0; if (data) { this.drawlist=[]; - //avaliableCouponNum = data.length; - //this.drawlist = data.data; - + /* for(let itemInCart of this.goldmedal) { let tmpIndex=0; for(let myCoupon of data.data) { valDateFromTime=0; valDateToTime=0; dateChecked=true; - /* */ if(myCoupon.fValidFrom) { //Fix ios date issue myCoupon.fValidFrom = myCoupon.fValidFrom.replace(/-/g, '/'); @@ -487,7 +507,11 @@ export default { tmpIndex++; } } - + */ + + avaliableCouponNum = data.length; + this.drawlist = data.data; + if(avaliableCouponNum > 0) { this.curCoupon.couponName = '有 '+avaliableCouponNum+' 张优惠券可以使用'; } diff --git a/rc-busness/pages/personal/useraddress.vue b/rc-busness/pages/personal/useraddress.vue index c0d5bcee..23ae45f3 100644 --- a/rc-busness/pages/personal/useraddress.vue +++ b/rc-busness/pages/personal/useraddress.vue @@ -215,75 +215,16 @@ export default { goldmedal: [ { - ordernumber: "1111111111111111111", + ordernumber: "", orderstype: 1, - usereat: "专属升级奖励", + usereat: "", ordernum: 0, - num: "5kg", - specification: "1", - buttontitle: "立即支付", - userprice: "167.00", - catimage: require("../../assets/image/rc-win.png"), - }, - - { - ordernumber: "1111111111111111111", - - usereat: "每年4次免积分产品试吃", - ordernum: 0, - buttontitle: "再次购买", - catimage: require("../../assets/image/usereat.png"), - orderstype: 2, - userprice: "167.00", - }, - { - ordernumber: "1111111111111111111", - usereat: "尊享订单免邮服务(指点商品)", - ordernum: 0, - buttontitle: "取消订单", - catimage: require("../../assets/image/usercar.png"), - orderstype: 3, - userprice: "167.00", - }, - { - ordernumber: "1111111111111111111", - usereat: "365天专属养宠工具", - ordernum: 1, - catimage: require("../../assets/image/rc-growth.png"), - orderstype: 1, - userprice: "167.00", - }, - { - ordernumber: "1111111111111111111", - usereat: "10年专业团队1v1咨询", - ordernum: 2, - catimage: require("../../assets/image/consult.png"), - orderstype: 2, - userprice: "167.00", - }, - { - ordernumber: "1111111111111111111", - usereat: "行业大咖专业养宠知识", - ordernum: 3, - catimage: require("../../assets/image/rc-book.png"), - orderstype: 3, - userprice: "167.00", - }, - { - ordernumber: "1111111111111111111", - usereat: "爱宠生活定制活动高级养宠宝典", - ordernum: 3, - catimage: require("../../assets/image/userself.png"), - orderstype: 3, - userprice: "167.00", - }, - { - usereat: "每年积分兑换1次价值288元的免费体检及100元医院绝育券", - ordernum: 4, - catimage: require("../../assets/image/rc-health.png"), - orderstype: 3, - userprice: "167.00", - }, + num: "", + specification: "", + buttontitle: "", + userprice: "", + catimage: '', + } ], }; }, @@ -322,6 +263,9 @@ export default { this.receiving=[]; this.pending=[]; for (let i = 0; i < this.goldmedal.length; i++) { + + if(!this.goldmedal[i].orderDetailList) + continue; this.useralllist.push(this.goldmedal[i].orderDetailList[0]); this.alllist.push(this.goldmedal[i].orderDetailList[0]) this.allmessage.push(this.goldmedal[i].orderDetailList[0]) @@ -334,14 +278,16 @@ export default { this.pending.push(this.goldmedal[i].orderDetailList[0]); } } - for (let i = 0; i < this.goldmedal.length; i++) { - this.useralllist[i].orderNumber = this.goldmedal[i].orderNumber; - this.useralllist[i].status = this.goldmedal[i].status; - this.useralllist[i].addressUserName = this.goldmedal[i].addressUserName; - this.useralllist[i].phoneNumber = this.goldmedal[i].addressPhoneNumber; - this.useralllist[i].salesAmount = this.goldmedal[i].salesAmount; - this.useralllist[i].lengthnum=this.goldmedal[i].orderDetailList.length; - this.useralllist[i].paytype=this.goldmedal[i].paytype; + for (let y = 0; y < this.goldmedal.length; y++) { + if(!this.goldmedal[y].orderDetailList) + continue; + this.useralllist[y].orderNumber = this.goldmedal[y].orderNumber; + this.useralllist[y].status = this.goldmedal[y].status; + this.useralllist[y].addressUserName = this.goldmedal[y].addressUserName; + this.useralllist[y].phoneNumber = this.goldmedal[y].addressPhoneNumber; + this.useralllist[y].salesAmount = this.goldmedal[y].salesAmount; + this.useralllist[y].lengthnum=this.goldmedal[y].orderDetailList.length; + this.useralllist[y].paytype=this.goldmedal[y].paytype; } if(this.userstype==1){ this.useralllist=this.obligation @@ -456,10 +402,9 @@ export default { this.activeIndex = index; if(item.title=='待付款'){ list=this.obligation - } - else if(item.title=='待收货'){ + } else if(item.title=='待收货'){ list=this.receiving - }else if(item.title=='待发货'){ + } else if(item.title=='待发货'){ this.useralllist=this.pending list=this.pending } diff --git a/rc-busness/pages/productdetails/producted.vue b/rc-busness/pages/productdetails/producted.vue index 23f54325..9b72952b 100644 --- a/rc-busness/pages/productdetails/producted.vue +++ b/rc-busness/pages/productdetails/producted.vue @@ -109,7 +109,7 @@ @@ -280,7 +280,7 @@ 立即购买 @@ -510,7 +510,27 @@ export default { } ]) }, - + goBuyRxgoods() { + this.checkIsLogin(); + let _self = this; + let memberId = ''; + if (this.$store.state.userInfo && this.$store.state.userInfo.data !== undefined) { + memberId = this.$store.state.userInfo.data.id; + } + _hmt.push([ + '_trackCustomEvent', + 'buy_rxgoods', + { + 'member_id': memberId, // 会员ID,文本类型 + 'product_name': this.curItem.productName, // 商品名称,文本类型 + 'product_id': this.curItem.productCode // 商品ID,文本类型 + } + ]) + + setTimeout(function(){ + window.open(_self.curItem.curGoodUrl, '_blank'); + },1000); + }, //获取用户领取的优惠券 async getconf(memberId, couponId) { let data = await getConfig(memberId, couponId); From 55e070939c985b062f9654151a0099872c64aca3 Mon Sep 17 00:00:00 2001 From: lin <342011128@qq.com> Date: Mon, 21 Mar 2022 15:47:47 +0800 Subject: [PATCH 10/17] upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修改H5的打包错误 --- package-lock.json | 5 +---- smart-admin-h5/package.json | 8 ++++++-- smart-admin-h5/vue.config.js | 5 ++++- smart-admin-web/package-lock.json | 3 +-- smart-admin-web/package.json | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a57e32b..48e341a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,3 @@ { - "name": "smart-admin", - "lockfileVersion": 2, - "requires": true, - "packages": {} + "lockfileVersion": 1 } diff --git a/smart-admin-h5/package.json b/smart-admin-h5/package.json index cd09ecb3..27004afa 100644 --- a/smart-admin-h5/package.json +++ b/smart-admin-h5/package.json @@ -20,6 +20,8 @@ "axios": "^0.19.2", "core-js": "^3.6.5", "fastclick": "^1.0.6", + "joi": "^17.6.0", + "join": "^3.0.0", "js-cookie": "^2.2.1", "lib-flexible": "^0.3.2", "lodash": "^4.17.20", @@ -27,19 +29,21 @@ "nprogress": "^0.2.0", "regenerator-runtime": "^0.13.5", "vant": "^2.11.1", - "vue": "^2.6.12", + "vue": "^3.2.31", "vue-enum": "^1.0.5", + "vue-loader": "^17.0.0", "vue-loading-overlay": "^3.4.2", "vue-router": "^3.4.0", "vuex": "^3.6.0" }, "devDependencies": { - "@sentry/webpack-plugin": "^1.11.1", + "@sentry/webpack-plugin": "^1.18.8", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-router": "~4.5.0", "@vue/cli-plugin-vuex": "~4.5.0", "@vue/cli-service": "~4.5.0", + "@vue/compiler-sfc": "^3.2.31", "babel-eslint": "^10.1.0", "babel-plugin-import": "^1.13.0", "babel-plugin-transform-remove-console": "^6.9.4", diff --git a/smart-admin-h5/vue.config.js b/smart-admin-h5/vue.config.js index a31f3a23..51e5fa10 100644 --- a/smart-admin-h5/vue.config.js +++ b/smart-admin-h5/vue.config.js @@ -11,6 +11,9 @@ const projectConfig = require('./src/config/index.js'); // 生产环境,测试和正式 const isProductionEnv = ['production'].includes(process.env.NODE_ENV); const isProductionAppEnv = ['prod', 'pre'].includes(process.env.VUE_APP_ENV); +const addOptions = { + preserveWhitespace: true +} module.exports = { publicPath: projectConfig.publicPath, @@ -93,7 +96,7 @@ module.exports = { .use('vue-loader') .loader('vue-loader') .tap(options => { - options.compilerOptions.preserveWhitespace = true; + options.compilerOptions = addOptions; return options; }) .end(); diff --git a/smart-admin-web/package-lock.json b/smart-admin-web/package-lock.json index 86b799c5..197e40a8 100644 --- a/smart-admin-web/package-lock.json +++ b/smart-admin-web/package-lock.json @@ -4084,8 +4084,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.11.tgz?cache=0&sync_timestamp=1586450269267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", - "dev": true + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" }, "core-util-is": { "version": "1.0.2", diff --git a/smart-admin-web/package.json b/smart-admin-web/package.json index ee82b487..275dda9f 100644 --- a/smart-admin-web/package.json +++ b/smart-admin-web/package.json @@ -23,7 +23,7 @@ "cropperjs": "^1.2.2", "dayjs": "^1.7.7", "decimal.js": "^10.1.1", - "core-js":"^2.0.0", + "core-js": "^2.0.0", "e-guide-layer": "^0.1.1", "echarts": "^4.0.4", "gq-plus": "^2.1.5", From 30fdd63443a8a391e5b373d79adfa00663b485ec Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Mon, 21 Mar 2022 16:11:23 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/system/royalcanin/good/service/OrderService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 63fb97bf..7eb064e6 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -471,6 +471,7 @@ public class OrderService { }else{//没有优惠券的计算总价逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); total_fee = new BigDecimal(ordersEntity.getOrderAmount()); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); } ordersEntity.setMemberId(memberId); @@ -581,6 +582,7 @@ public class OrderService { }else{//没有优惠券的计算总价逻辑 Map resultMap = addOrdersEntityInfo(ordersEntityList, ordersEntity, couponJson, total_fee); total_fee = new BigDecimal(ordersEntity.getOrderAmount()); + orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); } ordersEntity.setMemberId(memberId); @@ -631,7 +633,6 @@ public class OrderService { productCodes = couponJson.getString("productCodes").toString().split(","); } - for (OrdersEntity order : ordersEntityList) { //从crm获取商品的json数据信息 JSONObject goodsObject = gainGoodsObject(order); From c07b3a5c5a0dabb4f255889e7360d8db302b9762 Mon Sep 17 00:00:00 2001 From: lin <342011128@qq.com> Date: Mon, 21 Mar 2022 16:43:29 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rc-busness/pages/personal/useraddress.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rc-busness/pages/personal/useraddress.vue b/rc-busness/pages/personal/useraddress.vue index 23ae45f3..2daaac97 100644 --- a/rc-busness/pages/personal/useraddress.vue +++ b/rc-busness/pages/personal/useraddress.vue @@ -281,6 +281,9 @@ export default { for (let y = 0; y < this.goldmedal.length; y++) { if(!this.goldmedal[y].orderDetailList) continue; + if(!this.useralllist[y]){ + this.useralllist[y] = {}; + } this.useralllist[y].orderNumber = this.goldmedal[y].orderNumber; this.useralllist[y].status = this.goldmedal[y].status; this.useralllist[y].addressUserName = this.goldmedal[y].addressUserName; From 7f40887829f1e46cd8399ca3cd2b69b83c19749c Mon Sep 17 00:00:00 2001 From: lin <342011128@qq.com> Date: Mon, 21 Mar 2022 17:32:56 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修改折扣1折显示问题 2.修改取消订单请求两次的问题 --- rc-busness/pages/personal/discount.vue | 2 +- rc-busness/pages/personal/settlement.vue | 2 +- rc-busness/pages/personal/useraddress.vue | 12 +++++++----- rc-busness/pages/productdetails/producted.vue | 3 ++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/rc-busness/pages/personal/discount.vue b/rc-busness/pages/personal/discount.vue index f1fb7b69..56e1dd01 100644 --- a/rc-busness/pages/personal/discount.vue +++ b/rc-busness/pages/personal/discount.vue @@ -37,7 +37,7 @@ ¥ - {{ item.couponAmount?item.couponAmount:(parseInt((1-item.discount)*10)+'折') }} + {{ item.couponAmount?item.couponAmount:(parseInt(10 - item.discount*10)+'折') }} {{ item.couponName }} diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 368fc431..e3caa8c6 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -167,7 +167,7 @@ ¥ - {{ item.couponAmount?item.couponAmount:(parseInt((1-item.discount)*10)+'折') }} + {{ item.couponAmount?item.couponAmount:(parseInt(10 - item.discount*10)+'折') }} {{ item.couponName }} diff --git a/rc-busness/pages/personal/useraddress.vue b/rc-busness/pages/personal/useraddress.vue index 2daaac97..dec7612b 100644 --- a/rc-busness/pages/personal/useraddress.vue +++ b/rc-busness/pages/personal/useraddress.vue @@ -356,11 +356,13 @@ export default { type: "warning", message: "取消订单成功", }); - setTimeout(() => { - this.indet(this.userdata); - this.activeIndex=0; - this.useralllist=[]; - }, 500); + /* 这个在全部变量去除的时候 记得加 */ + // setTimeout(() => { + // this.indet(this.userdata); + // this.activeIndex=0; + // this.useralllist=[]; + // console.log('2222'); + // }, 500); } }, diff --git a/rc-busness/pages/productdetails/producted.vue b/rc-busness/pages/productdetails/producted.vue index 9b72952b..345747fc 100644 --- a/rc-busness/pages/productdetails/producted.vue +++ b/rc-busness/pages/productdetails/producted.vue @@ -237,7 +237,8 @@ ¥ - {{ item.couponAmount?item.couponAmount:(parseInt((1-item.discount)*10)+'折') }} + + {{ item.couponAmount?item.couponAmount:(parseInt(10 - item.discount*10)+'折') }} {{ item.couponName }} From 7bb6b8e2d079eef38f1215f7148d7254de9746a8 Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Mon, 21 Mar 2022 18:23:03 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E6=9C=80=E4=BD=8E=E9=87=91=E9=A2=9D=E3=80=81=E6=9C=80?= =?UTF-8?q?=E4=BD=8E=E8=B4=AD=E4=B9=B0=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../royalcanin/good/service/OrderService.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 7eb064e6..1e25037e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -437,6 +437,7 @@ public class OrderService { orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //得到当前能用优惠券的商品总金额 BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); + BigDecimal minCount = (BigDecimal) resultMap.get("minCount"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ @@ -445,6 +446,20 @@ public class OrderService { return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } + + //校验当前指定商品的总数量有没有大于等于minCount + if(jsonObjectData.getString("minCount") != null ){ + if(minCount.compareTo(new BigDecimal(jsonObjectData.getString("minCount"))) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //校验当前指定商品的总购买数量有没有大于等于minPrice + if(jsonObjectData.getString("minPrice") != null ){ + if(total_Coupon.compareTo(new BigDecimal(jsonObjectData.getString("minPrice"))) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 addOrdersEntity(jsonObjectData, ordersEntity); //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); @@ -548,6 +563,7 @@ public class OrderService { orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //得到当前能用优惠券的商品总金额 BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); + BigDecimal minCount = (BigDecimal) resultMap.get("minCount"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ @@ -556,6 +572,19 @@ public class OrderService { return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } + //校验当前指定商品的总数量有没有大于等于minCount + if(jsonObjectData.getString("minCount") != null ){ + if(minCount.compareTo(new BigDecimal(jsonObjectData.getString("minCount"))) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //校验当前指定商品的总购买数量有没有大于等于minPrice + if(jsonObjectData.getString("minPrice") != null ){ + if(total_Coupon.compareTo(new BigDecimal(jsonObjectData.getString("minPrice"))) == -1){ + return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); + } + } + //设置ordersEntity的参数 addOrdersEntity(jsonObjectData, ordersEntity); //total_fee = orderService.couponTotal(ordersEntity.getCouponTypeId(), Double.parseDouble(ordersEntity.getCouponAmount()), total_Coupon); @@ -626,6 +655,7 @@ public class OrderService { double basePoint = 0 ; String mobile = ""; int buyCount = 0; + int minCount = 0; //判断是否属于指定类 if(couponJson != null && SmartStringUtil.isNotBlank(couponJson.getString("productCodes"))){ @@ -646,6 +676,7 @@ public class OrderService { if(isExist && Arrays.asList(productCodes).contains(goodsObject.get("productCode"))){ //计算商品价格、数量、basepoint相关信息 total_Coupon = calculationTotal(order, goodsObject, total_Coupon); + minCount = minCount + order.getBuyCount(); }else{ //计算商品价格、数量、basepoint相关信息 total_fee = calculationTotal(order, goodsObject, total_fee); @@ -668,6 +699,7 @@ public class OrderService { map.put("ordersEntity", ordersEntity); map.put("orderDatilListJson", orderDatilListJson); map.put("total_Coupon", total_Coupon); + map.put("minCount", minCount); return map; } From e8f076477c66995b17fe9bfebaf48925c6658c69 Mon Sep 17 00:00:00 2001 From: "602090531@qq.com" Date: Mon, 21 Mar 2022 18:49:40 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AA=E5=88=B0?= =?UTF-8?q?=E7=94=9F=E6=95=88=E6=97=B6=E9=97=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/royalcanin/good/service/OrderService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 1e25037e..c625d3e5 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -437,7 +437,7 @@ public class OrderService { orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //得到当前能用优惠券的商品总金额 BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); - BigDecimal minCount = (BigDecimal) resultMap.get("minCount"); + int minCount = (int) resultMap.get("minCount"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ @@ -449,7 +449,8 @@ public class OrderService { //校验当前指定商品的总数量有没有大于等于minCount if(jsonObjectData.getString("minCount") != null ){ - if(minCount.compareTo(new BigDecimal(jsonObjectData.getString("minCount"))) == -1){ + int count = Integer.parseInt(jsonObjectData.getString("minCount")); + if(minCount < count ){ return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } @@ -563,7 +564,7 @@ public class OrderService { orderDatilListJson = (JSONArray) resultMap.get("orderDatilListJson"); //得到当前能用优惠券的商品总金额 BigDecimal total_Coupon = (BigDecimal) resultMap.get("total_Coupon"); - BigDecimal minCount = (BigDecimal) resultMap.get("minCount"); + int minCount = (int) resultMap.get("minCount"); //校验当前订单金额小于优惠券金额 if(jsonObjectData.getString("couponAmount") != null ){ @@ -574,7 +575,8 @@ public class OrderService { } //校验当前指定商品的总数量有没有大于等于minCount if(jsonObjectData.getString("minCount") != null ){ - if(minCount.compareTo(new BigDecimal(jsonObjectData.getString("minCount"))) == -1){ + int count = Integer.parseInt(jsonObjectData.getString("minCount")); + if(minCount < count ){ return ResponseDTO.wrap(OrderResponseCodeConst.COUPON_USE_FAIL); } } From 0f7931155aba2eb871e0f1a644a31959a2d5484a Mon Sep 17 00:00:00 2001 From: lin <342011128@qq.com> Date: Mon, 21 Mar 2022 19:08:34 +0800 Subject: [PATCH 16/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修改价格显示问题 2.分化用户数据和添加cookit等静态方法 --- rc-busness/pages/personal/settlement.vue | 26 ++++++++++++---- rc-busness/pages/personal/useraddress.vue | 1 - rc-busness/pages/userlogin/login.vue | 14 ++++++--- rc-busness/plugins/until/until.js | 38 +++++++++++++++++++++++ rc-busness/store/index.js | 12 ++++++- rc-busness/store/modules/login.js | 17 ++++++++++ rc-busness/store/modules/user.js | 18 +++++++++++ 7 files changed, 113 insertions(+), 13 deletions(-) create mode 100644 rc-busness/plugins/until/until.js create mode 100644 rc-busness/store/modules/login.js create mode 100644 rc-busness/store/modules/user.js diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index e3caa8c6..79a6afbc 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -268,7 +268,9 @@ export default { }, methods: { ...mapMutations(["checkIsLogin"]), + /* 计算优惠券价格 */ discountedSumPrice() { + /* 判断是否为商品卷 */ if(this.curCoupon.productCodes) this.finalAmount = this.qualifiedProductDiscount(); else @@ -309,15 +311,17 @@ export default { return this.sumPrice; } }, + /* 计算价格商品折扣 */ qualifiedProductDiscount(){ this.discountedItemIndex = 0; let total = 0; - let totalItemNum = 0; + let totalItemNum = 0; //判断满足优惠券条件的商品数量 let couponUsed = false; - let tmpShoppingCartList = this.arrSort(this.goldmedal); - let qualifiedProductAmount = 0; + let tmpShoppingCartList = this.arrSort(this.goldmedal); //对应的商品 + let qualifiedProductAmount = 0; //满足条件的优惠券商品价格总价 let skipQualifiedProductAmountCalculating = false; - let checkResult = true; + let checkResult = true; //是否可使用 + let selectProduct = []; //满足条件的商品 for(let itemInCart of tmpShoppingCartList) { if(this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { qualifiedProductAmount += (itemInCart.productPrice * itemInCart.buyCount); @@ -334,8 +338,17 @@ export default { checkResult = false; } + + // couponTypeId + // 0-不用折扣 + // 1-狗干粮金额券(50) + // 2-通用金额满减券(50) + // 3-通用折扣券(6折) + // 4-指定干粮折扣券(7折) + // 6-指定干粮金额券(100) for(let itemInCart of tmpShoppingCartList) { if(this.curCoupon.productCodes && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1 && !couponUsed && checkResult) { + console.log(itemInCart,'itemInCart'); //Into coupon discount calculation switch(this.curCoupon.couponTypeId) { case 1: //Amount deduct @@ -369,8 +382,8 @@ export default { case 3: //Limited product % discount case 4: //% discount if(this.curCoupon.discount && this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) { - total = total + (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount ); - this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; + total = total + qualifiedProductAmount * ( 1 - this.curCoupon.discount ); + this.discountAmount = qualifiedProductAmount * this.curCoupon.discount; this.discountedProductCode = itemInCart.productCode; couponUsed=true; skipQualifiedProductAmountCalculating = true; @@ -517,6 +530,7 @@ export default { } } }, + /* 关闭弹出框 计算价格 */ pickCoupon(item){ this.curCoupon = item; this.dialogInfo1 = false; diff --git a/rc-busness/pages/personal/useraddress.vue b/rc-busness/pages/personal/useraddress.vue index dec7612b..1415c2ea 100644 --- a/rc-busness/pages/personal/useraddress.vue +++ b/rc-busness/pages/personal/useraddress.vue @@ -363,7 +363,6 @@ export default { // this.useralllist=[]; // console.log('2222'); // }, 500); - } }, diff --git a/rc-busness/pages/userlogin/login.vue b/rc-busness/pages/userlogin/login.vue index 7d491632..86f3a39a 100644 --- a/rc-busness/pages/userlogin/login.vue +++ b/rc-busness/pages/userlogin/login.vue @@ -143,7 +143,7 @@