From dcf2ab195388f3292096bbd421f9ee7e923b7c9e Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Mon, 24 Jan 2022 16:41:26 +0800 Subject: [PATCH 01/11] adding install cart verification --- .../smartadmin/common/domain/ResponseDTO.java | 3 ++ .../royalcanin/good/OrderController.java | 8 +++-- .../royalcanin/good/model/OrdersEntity.java | 2 +- .../module/system/wxpay/MyConfig.java | 22 ++++++++------ .../module/system/wxpay/WxpayService.java | 1 + .../resources/wxpay/pro/apiclient_cert.p12 | Bin 0 -> 2710 bytes .../resources/wxpay/pro/apiclient_cert.pem | 23 ++++++++++++++ .../resources/wxpay/pro/apiclient_key.pem | 28 ++++++++++++++++++ 8 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/apiclient_cert.p12 create mode 100644 smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/apiclient_cert.pem create mode 100644 smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/apiclient_key.pem diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java index 92ec781e..4072e5d0 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java @@ -44,6 +44,7 @@ public class ResponseDTO { this.success = responseCodeConst.isSuccess(); } + private ResponseDTO(ResponseCodeConst responseCodeConst) { this.code = responseCodeConst.getCode(); this.msg = responseCodeConst.getMsg(); @@ -64,6 +65,8 @@ public class ResponseDTO { return new ResponseDTO(ResponseCodeConst.SUCCESS, data, msg); } + + public static ResponseDTO succData(T data) { return new ResponseDTO(ResponseCodeConst.SUCCESS, data); } 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 25731848..7b3b2e4b 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 @@ -54,7 +54,7 @@ public class OrderController { @ApiOperation(value = "微信支付订单", notes = "生成订单") @PostMapping("royalcanin/generateOrderWX") - public ResponseDTO generateOrderWX(@RequestBody List ordersEntityList) throws Exception { + public ResponseDTO> generateOrderWX(@RequestBody List ordersEntityList) throws Exception { StringBuffer productId = new StringBuffer(); StringBuffer productName = new StringBuffer(); String memberId = ""; @@ -112,7 +112,10 @@ public class OrderController { wxPayEntity.setProduct_id(ordersEntity.getProductCode()); wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); - return ResponseDTO.succData(ordersEntity.getOrderNo(),wxpayService.generateQRCode(wxPayEntity)); + Map returnMap = new HashMap<>(); + returnMap.put("orderNumber",ordersEntity.getOrderNo()); + returnMap.put("orderAmount",ordersEntity.getOrderAmount()); + return ResponseDTO.succData(returnMap,wxpayService.generateQRCode(wxPayEntity)); } return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL); } @@ -171,7 +174,6 @@ public class OrderController { ordersEntity.setBuyCount(buyCount); ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); ordersEntity.setOrderStatus("0"); - if(orderService.generateOrder(ordersEntity,orderDatilListJson) == 1){ wxPayEntity.setProduct_id(ordersEntity.getProductCode()); wxPayEntity.setTotal_fee(StringUtil.toString(total_fee)); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/model/OrdersEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/model/OrdersEntity.java index 787d0641..e569a25c 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/model/OrdersEntity.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/model/OrdersEntity.java @@ -41,6 +41,6 @@ public class OrdersEntity { private OrderAddress orderAddress; - private Double basePoint; + private Double basePoint = 0.0; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/MyConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/MyConfig.java index 94d897f6..3f0bcb86 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/MyConfig.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/MyConfig.java @@ -11,8 +11,8 @@ import java.io.*; @Component public class MyConfig implements WXPayConfig { -// private String path ="C:/Users/Administrator/IdeaProjects/smart-admin/smart-admin-service/smart-admin-api/src/main/resources/wxpay/"; - private String path ="/home/royalcanin-dev/cert/"; +// private String path ="C:/Users/Administrator/IdeaProjects/smart-admin/smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/"; + private String path ="/home/royalcanin-dev/cert/pro/"; // public String notify_url = "http://47.96.75.242:10086/smart-admin-api/royalcanin/updateOrderWX"; @@ -34,18 +34,22 @@ public class MyConfig implements WXPayConfig { certStream.close(); } public String getAppID() { - return "wx3c51c14272f63a64"; + return "wxa9a0ae603bbe6ceb"; } - //wxa9a0ae603bbe6ceb + //wx3c51c14272f63a64 - public String getMchID() { - return "1315161001"; +// public String getMchID() { +// return "16717629989"; +// } + public String getMchID() { + return "1523977801"; } -// 16717629989 + //1315161001 + public String getKey() { - return "b69497999e8fd1f8f1f0a9591b24eb72"; + return "indexphpcorecertapicert201903200"; } - //indexphpcorecertapicert201903200 + //b69497999e8fd1f8f1f0a9591b24eb72 public InputStream getCertStream() { ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java index 8351a808..303d6bf2 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java @@ -1,6 +1,7 @@ package net.lab1024.smartadmin.module.system.wxpay; import com.alibaba.fastjson.JSONObject; +import com.aliyun.oss.internal.SignUtils; import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.module.system.royalcanin.MemberAccountService; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity; diff --git a/smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/apiclient_cert.p12 b/smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/apiclient_cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..516e6745ce3aa34b693af615a7a1f40b927796c1 GIT binary patch literal 2710 zcmY+EX*3j!8pmg~jC~2oGS=*kC1e@Ac4Ny@NNG%VqC&=&8Dl7WDU4(nW5`;hgc^e+ zTb4!(Sq4Q}##UVKIrrZ8-Vgutoags{&hznyz{Bo>fM5h3=E=gYM6@Dqa{*a_#dw$< z1P`-5!sZA(g!WIxQjCYR9-(Fs5O6eV|7m~-F&5arKX3wB5Zn;9Fi-SyJraonf!F{E zcu2xm*l{)F*d@=Wjkn%!g`S=}NPiN|s5x`EmYC&X=tNk!eB~8X+j}xira>pm^mm5? zl9!+5t7ML$^yMDnP^uxLwx{ph7J6K|-{5qH2dAiM3$4olZTpE_xLY()Bc+O9=R`9y zXwEGz7ZaT!#o~%vywVp{{xYsMnh`T8VB@mivh13DVJKkKwqeq(+V~pp_Xf)nPB)v) zO#*2Rx+Q7#&!BfOQNgxFY=y$>yN{Q8_yucIX;BXgZ&Ll=Q~VkQg@S;j;`!r~mKib0 z&cp}WfIR`EKdaZ$vFL)<^^Y0CV}_pAPY1K^0qTf3C&!QVf4&^TIo)Ct%Ok8Xza}24 z*f@S%WXLEecH)NXI=XDPD;_*WHm}+izTINsisSmRlOOYd+#SLnm9L6jo=yq!uQVjQ zWTNbhbtmZFu2n|sLsIC>sP*6X*7rafFBWh~G-SEJf#cDl;goKXyeKhqbKH1gOdJTpR`P~I>#W&@fqmcO? z!Ib{chNYY!v*R~NX+6Ek2O}h7kUJ=b06Y96MJx}kl&z38yB_mcJ#BE=0g%v|5H60(PuN4J5 z6Mo>5-hyDGHFoJ~omIbWYz|9dgsJ(r=VlsD%8#h(OgOk#bX`Fnky{IJUb=6 zw+#wm{O6m+sIcGt)3QcIWKZK5a{rg-hc|H;C5^Pt*Evo)^0|*keW4dwA+UO!(~l|L z+XnR!;v?83(?bjl>2Ep7d*(0pD=G^$u1RparjdER*|%-)PxSY}?K=yk+dEw2lxD&C zm!!u}8Mkif*DjSQxOn~48#43DWE6NkGGt03wNwrU=FDaZMIWhAU9Em973YfkYz29E z=a@MrHGH}k@B2GyxHa6v2gL;nKcGc!reSA4zP5h0YOKeTRjro^8Z;4{I}KS z0$o#fCA3I?TMdGT^lqMlN-YMeGMVY-A4Z5uXcjJ?Nb*#KPb1!SwBg`I!SCGo!3SE; z2T6HPM$j5e2|LbOz6Ns>-e4hL;rPUs{@?jsd73WzI`4jcm3-Y> zV9vAW)I6JJEHO04Z_uRko68?cU3U1Zb1 z<*Qe(FX|M2d;hJuQlLmvj!vg+t|(7LmvDJ@?{S!XzF)97+)<~YGr)}kZo@f37Sir~ zJ80#?w&~wD>+0+ZDlfx(oZb3$(BV zuj>tp%>EBuTZ6*dS*tDQjWCw$PTK`r)NPvOw)x(Voy^>+FRU2??4hu+CBe-mFPc zj58f&mSH<{T1UpYYSX)GZry@OE^D65=-?Gh|39r*nEI0Eb|8M=pfT0D7QXz0Mj&ETv_w%YcAJk>#@ zGOn6JAd?MQjs=pS`BwS;-q>p#1JVgvxq&qS8w)36*C( z0mPr$SbgfGT|`|gUe6gV4gm8nz?3@^7-@;}9q%~2T2UN6lhD=XQ=gV=<;Q+`oUClg zJRREiw)aK#g!F!Sw(h->pnQUSb*gP_FDh$va0R8FEW(DUKdog{H0?Gcum~=FMi;6} za~eh+m19`W9#4IoqT!+q{NxF)G8*mtj6i1LRV$!Qy7=>+#RtCtl#%S%uAD; z^h$IT1@o$k2Gpa2#Mbcv~R@A&!U@Xv4IJ}0(c9kv5D#9Yv7Pkzc*&u?)hUt+-)cmIue z*bE16J5C!R`g^5jZm!O$i0EMlQpSw-h);MRxwuQxuYjg8m<$^M|e zrEpo)HU82Tg8fCTbQBSX-Pro#%m}io=-y42h*eRG>)HIN?tzf`uN~QssS7~_ANoa^ z56DX6+)p6)dAO~4T|lPG2+eW7yu2x0^k7CqwP8%91sBTJqqTC zh68*Mst73rI}22q8w?VK0w98C&I#XR=pzsvB^tV#DOqSv1O*IXQ$7>3BEsfn_b Date: Mon, 24 Jan 2022 18:24:58 +0800 Subject: [PATCH 02/11] modify coupon logic ,adding 3 verfiy --- .../royalcanin/good/OrderController.java | 23 +++++++++++++++---- .../system/royalcanin/good/dao/OrdersDao.java | 2 ++ .../royalcanin/good/service/OrderService.java | 4 ++-- .../system/royalcanin/Order/OrderMapper.xml | 6 +++++ 4 files changed, 28 insertions(+), 7 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 7b3b2e4b..83d50853 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 @@ -12,6 +12,8 @@ import net.lab1024.smartadmin.constant.SwaggerTagConst; 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.CouponGetAllEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity; @@ -51,6 +53,9 @@ public class OrderController { @Autowired private CartService cartService; + @Autowired + private CouponService couponService; + @ApiOperation(value = "微信支付订单", notes = "生成订单") @PostMapping("royalcanin/generateOrderWX") @@ -76,10 +81,18 @@ public class OrderController { orderDatilListEntity.setEcPrice(ordersEntitys.getPayAmount()); orderDatilListJson.add(orderDatilListEntity); if(ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) { - ordersEntity.setCouponAmount(ordersEntitys.getCouponAmount()); - ordersEntity.setCouponCode(ordersEntitys.getCouponCode()); - ordersEntity.setCouponName(ordersEntitys.getCouponName()); - ordersEntity.setCouponId(ordersEntitys.getCouponId()); + CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity (); + couponGetAllEntity.setMemberId(ordersEntitys.getMemberId()); + couponGetAllEntity.setCouponCode(ordersEntitys.getCouponCode()); + String couponInfo = couponService.couponGetAll(couponGetAllEntity); + JSONObject jsonObject = JSONObject.parseObject(couponInfo); + com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data")); + JSONObject jsonObjectData = (JSONObject)jsonArray.get(0); + + 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")); total_fee = total_fee + orderService.couponTotal(ordersEntitys.getCouponTypeId(),Double.parseDouble(ordersEntitys.getCouponAmount()),Double.parseDouble(ordersEntitys.getPayAmount()),ordersEntitys.getBuyCount()); }else{ total_fee = total_fee + Double.parseDouble(ordersEntitys.getPayAmount()) * ordersEntitys.getBuyCount() ; @@ -254,7 +267,7 @@ public class OrderController { AliPayEntity aliPayEntity = new AliPayEntity(); ordersEntity.setPayType("2"); ordersEntity.setOrderStatus("0"); - if (orderService.updateOrder(ordersEntity) == 1) { + if (orderService.updateOrder(ordersEntity.getOrderNo()) == 1) { aliPayEntity.setProduct_code(ordersEntity.getProductCode()); aliPayEntity.setTotal_amount(ordersEntity.getOrderAmount()); aliPayEntity.setOut_trade_no(ordersEntity.getOrderNo()); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/dao/OrdersDao.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/dao/OrdersDao.java index 3e94deff..680a6180 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/dao/OrdersDao.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/dao/OrdersDao.java @@ -22,4 +22,6 @@ public interface OrdersDao extends BaseMapper { Integer cancelOrder(String out_trade_no); + int updateByOrderNumber (@Param("orderNumber")String orderNumber); + } 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 d30227cc..604d183e 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 @@ -281,7 +281,7 @@ public class OrderService { } - public int updateOrder(OrderEntity orderEntity){ - return ordersDao.updateById(orderEntity); + public int updateOrder(String orderNumber){ + return ordersDao.updateByOrderNumber(orderNumber); } } diff --git a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/royalcanin/Order/OrderMapper.xml b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/royalcanin/Order/OrderMapper.xml index 7e1c1f13..d1e77563 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/royalcanin/Order/OrderMapper.xml +++ b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/royalcanin/Order/OrderMapper.xml @@ -22,4 +22,10 @@ + + update t_good_orders + set pay_type ='2' + where order_no = #{orderNumber} + + \ No newline at end of file From d6d51f9f5d4953ce577e4e3185d2b0b74029152f Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 24 Jan 2022 20:30:59 +0800 Subject: [PATCH 03/11] Coupon flow refined --- rc-busness/pages/personal/settlement.vue | 27 ++++++++++++++++--- rc-busness/pages/productdetails/producted.vue | 6 ++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 65f1923a..6f7fe256 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -251,7 +251,8 @@ export default { promotion: "¥167.00", payment: "¥0.00 ", }, - discountAmount:0 + discountAmount:0, + discountedItemIndex:undefined, }; }, computed: { @@ -266,6 +267,8 @@ export default { if(this.curCoupon.couponId) { //Coupon Calculation let couponUsed=false; + let tmpCounter = 0 ; + this.discountedItemIndex = 0; for(let itemInCart of this.goldmedal) { if((!this.curCoupon.productCodes || this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) && !couponUsed) { if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) { @@ -280,18 +283,21 @@ export default { case 1: //Amount deduct total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); this.discountAmount = this.curCoupon.couponAmount; + this.discountedItemIndex = tmpCounter; couponUsed=true; break; case 2: //Amount deduct with minPrice restriction case 6: total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; this.discountAmount = this.curCoupon.couponAmount; + this.discountedItemIndex = tmpCounter; couponUsed=true; break; case 3: //Limited product % discount case 4: //% discount total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); + this.discountedItemIndex = tmpCounter; couponUsed=true; break; default: @@ -303,6 +309,7 @@ export default { } else { total += itemInCart.productPrice * itemInCart.buyCount; } + tmpCounter++; } } else { //Normal Calculation @@ -320,6 +327,18 @@ export default { }, methods: { ...mapMutations(["checkIsLogin"]), + wholeOrderDiscount(){ + //TODO + if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) + return this.sumPrice - this.curCoupon.couponAmount; + else + return 0; + } + }, + qualifiedProductDiscount(){ + //TODO + }, async getAddressList() { let memberId = JSON.parse(localStorage.getItem("userInfo")).data.id; let { data } = await memberAddress("getAll", { memberId: memberId }); @@ -370,7 +389,7 @@ export default { if(valDateToTime && curTime > valDateToTime) { dateChecked=false; } - if(dateChecked && myCoupon.status == 0 && (myCoupon.productCodes.indexOf(itemInCart.productCode)>-1 || !myCoupon.productCodes)) { + if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (myCoupon.productCodes.indexOf(itemInCart.productCode)>-1 || !myCoupon.productCodes)) { _self.drawlist.push(myCoupon); } } @@ -459,6 +478,7 @@ export default { return; } let postData = []; + let tmpCounter=0; this.goldmedal.forEach((item) => { let basePoint = (item.basePoint?item.basePoint:0); let oneProduct = { @@ -483,7 +503,7 @@ export default { addressDetailInfo: orderAddress[0].detailAddress, }, }; - if(this.curCoupon.couponId) { + if(this.curCoupon.couponId && tmpCounter == this.discountedItemIndex) { oneProduct.couponId = this.curCoupon.couponId; oneProduct.couponTypeId = this.curCoupon.couponTypeId; oneProduct.couponName = this.curCoupon.couponName; @@ -491,6 +511,7 @@ export default { oneProduct.couponAmount = (this.curCoupon.couponAmount?this.curCoupon.couponAmount:this.curCoupon.discount); } postData.push(oneProduct); + tmpCounter++; }); // let postData = [ // { diff --git a/rc-busness/pages/productdetails/producted.vue b/rc-busness/pages/productdetails/producted.vue index a33cdc17..7e48e997 100644 --- a/rc-busness/pages/productdetails/producted.vue +++ b/rc-busness/pages/productdetails/producted.vue @@ -551,13 +551,13 @@ export default { if(valDateToTime && curTime > valDateToTime) { dateChecked=false; } - if(dateChecked) { + if(dateChecked && item.activityId!=10) { if(!item.productCodes) { menualist.push(item); } else { item.productCodes = item.productCodes.split(","); item.productCodes.forEach((element) => { - if (element == this.curItem.productCode && item.activityId !== 10) { + if (element == this.curItem.productCode) { menualist.push(item); } }); @@ -655,7 +655,7 @@ export default { this.dialogInfo2 = true; return; } else { - this.userdraw(this.usermessage.data.mobile); + //this.userdraw(this.usermessage.data.mobile); this.alldrawlist(this.usermessage.data.id); this.dialogInfo1 = true; } From cd45fca6c019e013784e221ed5b3ac54a6258d82 Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 24 Jan 2022 20:42:51 +0800 Subject: [PATCH 04/11] Order confirm page refined --- rc-busness/pages/personal/settlement.vue | 63 ++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 6f7fe256..9253ca11 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -52,7 +52,7 @@

¥{{ item.productPrice }}

X{{ item.buyCount }}

-

¥{{ item.productPrice }}

+

¥{{ item.productPrice * item.buyCount }}

@@ -295,6 +295,7 @@ export default { break; case 3: //Limited product % discount case 4: //% discount + debugger; total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); this.discountedItemIndex = tmpCounter; @@ -328,16 +329,68 @@ export default { methods: { ...mapMutations(["checkIsLogin"]), wholeOrderDiscount(){ - //TODO + this.discountedItemIndex = 0; if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { - if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) { + this.discountAmount = this.curCoupon.discount; return this.sumPrice - this.curCoupon.couponAmount; - else - return 0; + } else if(this.curCoupon.discount && this.curCoupon.discount>0) { + this.discountAmount = this.sumPrice*this.curCoupon.discount; + return this.sumPrice * (1-this.curCoupon.discount); + } } }, qualifiedProductDiscount(){ //TODO + this.discountedItemIndex = 0; + let tmpCounter = 0 ; + + //Sort items by items amount + + //Sort items by items amount end + + for(let itemInCart of this.goldmedal) { + if((!this.curCoupon.productCodes || 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 + total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); + this.discountAmount = this.curCoupon.couponAmount; + this.discountedItemIndex = tmpCounter; + couponUsed=true; + break; + case 2: //Amount deduct with minPrice restriction + case 6: + total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; + this.discountAmount = this.curCoupon.couponAmount; + this.discountedItemIndex = tmpCounter; + couponUsed=true; + break; + case 3: //Limited product % discount + case 4: //% discount + total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; + this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); + this.discountedItemIndex = tmpCounter; + couponUsed=true; + break; + default: + total += itemInCart.productPrice * itemInCart.buyCount; + break; + } + //Into coupon discount calculation end + } + } else { + total += itemInCart.productPrice * itemInCart.buyCount; + } + tmpCounter++; + } }, async getAddressList() { let memberId = JSON.parse(localStorage.getItem("userInfo")).data.id; From b9c0a1394e3c4cbd01fb6a28436ece3e7bcdcecb Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 24 Jan 2022 22:10:15 +0800 Subject: [PATCH 05/11] Coupon calculation refined --- rc-busness/pages/personal/settlement.vue | 134 +++++++++-------------- 1 file changed, 53 insertions(+), 81 deletions(-) diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 9253ca11..aa9ac2a1 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -93,7 +93,7 @@ {{ discountAmount }} 合计金额: - {{ discountedSumPrice }} + {{ finalAmount }}
提交订单 @@ -252,7 +252,8 @@ export default { payment: "¥0.00 ", }, discountAmount:0, - discountedItemIndex:undefined, + finalAmount:0, + discountedProductCode:undefined, }; }, computed: { @@ -262,94 +263,39 @@ export default { }, 0); }, // 折扣计算 - discountedSumPrice() { - let total = 0; - if(this.curCoupon.couponId) { - //Coupon Calculation - let couponUsed=false; - let tmpCounter = 0 ; - this.discountedItemIndex = 0; - for(let itemInCart of this.goldmedal) { - if((!this.curCoupon.productCodes || 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 - total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); - this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - case 2: //Amount deduct with minPrice restriction - case 6: - total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; - this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - case 3: //Limited product % discount - case 4: //% discount - debugger; - total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; - this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - default: - total += itemInCart.productPrice * itemInCart.buyCount; - break; - } - //Into coupon discount calculation end - } - } else { - total += itemInCart.productPrice * itemInCart.buyCount; - } - tmpCounter++; - } - } else { - //Normal Calculation - total=this.goldmedal.reduce((pre, cur) => { - return pre + cur.buyCount * cur.productPrice; - }, 0); - } - if(this.discountAmount) - this.discountAmount = this.discountAmount.toFixed(2); - if(!total) - total=0; - total = total.toFixed(2); - return total; - }, }, methods: { ...mapMutations(["checkIsLogin"]), + discountedSumPrice() { + let total = 0; + if(this.curCoupon.productCodes) + this.finalAmount = this.qualifiedProductDiscount(); + else + this.finalAmount = this.wholeOrderDiscount(); + this.finalAmount = parseFloat(this.finalAmount).toFixed(2); + this.discountAmount = parseFloat(this.discountAmount).toFixed(2); + }, wholeOrderDiscount(){ this.discountedItemIndex = 0; - if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { + if(this.curCoupon.minPrice && this.curCoupon.minPrice < this.sumPrice) { if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) { - this.discountAmount = this.curCoupon.discount; + this.discountAmount = this.curCoupon.couponAmount; return this.sumPrice - this.curCoupon.couponAmount; } else if(this.curCoupon.discount && this.curCoupon.discount>0) { this.discountAmount = this.sumPrice*this.curCoupon.discount; return this.sumPrice * (1-this.curCoupon.discount); } + } else { + return this.sumPrice; } }, qualifiedProductDiscount(){ - //TODO this.discountedItemIndex = 0; - let tmpCounter = 0 ; - - //Sort items by items amount - - //Sort items by items amount end - - for(let itemInCart of this.goldmedal) { + let total = 0; + let couponUsed = false; + let tmpShoppingCartList = this.arrSort(this.goldmedal); + + for(let itemInCart of tmpShoppingCartList) { if((!this.curCoupon.productCodes || this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) && !couponUsed) { if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) { //Check minQuantity @@ -363,21 +309,21 @@ export default { case 1: //Amount deduct total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; case 2: //Amount deduct with minPrice restriction case 6: total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; case 3: //Limited product % discount case 4: //% discount total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; default: @@ -389,8 +335,21 @@ export default { } else { total += itemInCart.productPrice * itemInCart.buyCount; } - tmpCounter++; } + return total; + }, + arrSort(arr) { + let userarr=[] + let a=[]; + for(let i in arr){ + arr[i].total=arr[i].productPrice*arr[i].buyCount; + if(arr[i].total){ + userarr.push(arr[i]); + } + } + return userarr.sort((n1,n2)=>{ + return n2.total-n1.total; + }); }, async getAddressList() { let memberId = JSON.parse(localStorage.getItem("userInfo")).data.id; @@ -423,9 +382,11 @@ export default { let valDateFromTime=0; let valDateToTime=0; let dateChecked=true; + if (data) { this.drawlist=[]; for(let itemInCart of this.goldmedal) { + let tmpIndex=0; for(let myCoupon of data.data) { valDateFromTime=0; valDateToTime=0; @@ -442,9 +403,18 @@ export default { if(valDateToTime && curTime > valDateToTime) { dateChecked=false; } - if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (myCoupon.productCodes.indexOf(itemInCart.productCode)>-1 || !myCoupon.productCodes)) { + if(myCoupon.minQuantity && myCoupon.minQuantity>itemInCart.buyCount) { + dateChecked=false; + } + if(myCoupon.minPrice && myCoupon.minPrice>this.sumPrice) { + dateChecked=false; + } + + if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (!myCoupon.productCodes || myCoupon.productCodes.indexOf(itemInCart.productCode)>-1)) { + data.data.splice(tmpIndex,1); _self.drawlist.push(myCoupon); } + tmpIndex++; } } } @@ -452,6 +422,7 @@ export default { pickCoupon(item){ this.curCoupon = item; this.dialogInfo1 = false; + this.discountedSumPrice(); }, editAddress(item) { this.dialogAddTitle = "修改收货地址"; @@ -556,7 +527,7 @@ export default { addressDetailInfo: orderAddress[0].detailAddress, }, }; - if(this.curCoupon.couponId && tmpCounter == this.discountedItemIndex) { + if(this.curCoupon.couponId && item.productCode == this.discountedProductCode) { oneProduct.couponId = this.curCoupon.couponId; oneProduct.couponTypeId = this.curCoupon.couponTypeId; oneProduct.couponName = this.curCoupon.couponName; @@ -644,6 +615,7 @@ export default { this.goldmedal = JSON.parse(this.$route.query.list); this.getAddressList(); this.checkIsLogin(); + this.finalAmount = this.sumPrice; // this.addressstype = this.$route.query.stype; // this.orderNumber = this.$route.query.orderNumber; // this.canceldanhao(this.orderNumber); From d19c46277569e4a0fd22855b0954e326a85b932f Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 24 Jan 2022 22:33:08 +0800 Subject: [PATCH 06/11] Coupon bug fixed --- rc-busness/ajax/getData.js | 1 - rc-busness/pages/personal/settlement.vue | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rc-busness/ajax/getData.js b/rc-busness/ajax/getData.js index bbcb5a5e..319db10f 100644 --- a/rc-busness/ajax/getData.js +++ b/rc-busness/ajax/getData.js @@ -91,7 +91,6 @@ export const monitorOrderNotify = (OrderNumber) => { * 删除购物车 */ export const deleteCart = ( productCode) => { - debugger; var data = { productCode } diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index aa9ac2a1..970162fb 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -277,7 +277,11 @@ export default { }, wholeOrderDiscount(){ this.discountedItemIndex = 0; - if(this.curCoupon.minPrice && this.curCoupon.minPrice < this.sumPrice) { + let checkResult = true; + if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { + checkResult = false; + } + if(checkResult) { if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) { this.discountAmount = this.curCoupon.couponAmount; return this.sumPrice - this.curCoupon.couponAmount; From 178b29601ba62e0deb8178001dfdcc739ab326cd Mon Sep 17 00:00:00 2001 From: Vion Date: Mon, 24 Jan 2022 22:35:13 +0800 Subject: [PATCH 07/11] Coupon bug fixed --- rc-busness/pages/personal/settlement.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 970162fb..5bc9a715 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -281,6 +281,9 @@ export default { if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { checkResult = false; } + if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > this.sumPrice) { + checkResult = false; + } if(checkResult) { if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) { this.discountAmount = this.curCoupon.couponAmount; From fde896d43b1b2f97d1dba5bf88bc78ecb2c83eeb Mon Sep 17 00:00:00 2001 From: Vion Date: Tue, 25 Jan 2022 11:11:24 +0800 Subject: [PATCH 08/11] Style update --- rc-busness/pages/personal/settlement.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rc-busness/pages/personal/settlement.less b/rc-busness/pages/personal/settlement.less index fd3cbee5..2a8899e4 100644 --- a/rc-busness/pages/personal/settlement.less +++ b/rc-busness/pages/personal/settlement.less @@ -426,7 +426,7 @@ ul li ol li em strong i { display: flex; justify-content: flex-end; flex-direction: column; - align-items: self-end; + align-items: flex-end; text-align: right; i { font-style: normal; @@ -440,7 +440,7 @@ ul li ol li em strong i { color: #e1001a; font-size: 26px; display:inline-block; - width:5rem; + min-width:6rem; } .discountInfo { From a4e066d2db750591adc9efe5e6b78d9352c3a12d Mon Sep 17 00:00:00 2001 From: Vion Date: Tue, 25 Jan 2022 11:16:52 +0800 Subject: [PATCH 09/11] Displaying name update --- rc-busness/pages/productdetails/productlist.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rc-busness/pages/productdetails/productlist.vue b/rc-busness/pages/productdetails/productlist.vue index 878b0a50..a2bad863 100644 --- a/rc-busness/pages/productdetails/productlist.vue +++ b/rc-busness/pages/productdetails/productlist.vue @@ -110,7 +110,7 @@
- {{ item.categoryName }} + {{ item.name }} {{ item.ecPrice?("¥"+item.ecPrice):'' }}
Date: Tue, 25 Jan 2022 12:25:47 +0800 Subject: [PATCH 10/11] Displaying error fixed --- rc-busness/assets/css/global.less | 2 +- rc-busness/assets/css/search.less | 1 + rc-busness/pages/personal/discount.vue | 2 +- rc-busness/pages/personal/settlement.vue | 2 +- rc-busness/pages/personal/userpay.vue | 6 ++++-- rc-busness/pages/productdetails/producted.vue | 10 ++++++---- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/rc-busness/assets/css/global.less b/rc-busness/assets/css/global.less index c9c0ff25..f34e1a19 100644 --- a/rc-busness/assets/css/global.less +++ b/rc-busness/assets/css/global.less @@ -328,7 +328,7 @@ picture { height: auto; position: fixed; right: 0; - top: 40%; + top: 56vh; background: #FFFFFF; box-shadow: 0 0 10px rgba(0, 0, 0, 0.16); border-radius: .25rem; diff --git a/rc-busness/assets/css/search.less b/rc-busness/assets/css/search.less index bf719986..b9e060be 100644 --- a/rc-busness/assets/css/search.less +++ b/rc-busness/assets/css/search.less @@ -341,6 +341,7 @@ border-radius: 100px; font-size: 18px; color: #333333; font-weight: bold; + margin-top:1rem; } .ts-scrollable{ margin-top: 1rem; diff --git a/rc-busness/pages/personal/discount.vue b/rc-busness/pages/personal/discount.vue index 9bd34dd9..fd34793b 100644 --- a/rc-busness/pages/personal/discount.vue +++ b/rc-busness/pages/personal/discount.vue @@ -34,7 +34,7 @@ ¥ - {{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}} + {{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }}
{{ item.couponName }} diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 5bc9a715..87d3e530 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -167,7 +167,7 @@ ¥ - {{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}} + {{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }} {{ item.couponName }} diff --git a/rc-busness/pages/personal/userpay.vue b/rc-busness/pages/personal/userpay.vue index 156c1b67..b66fdc0e 100644 --- a/rc-busness/pages/personal/userpay.vue +++ b/rc-busness/pages/personal/userpay.vue @@ -64,7 +64,9 @@

您的商品我们正在抓紧打包,请耐心等候!

-
+
+ +

微信扫一扫,识别二维码

加入社群0元试用商品随单发放

@@ -94,7 +96,7 @@ export default { activeIndex: 0, paymentTimer:undefined, isSucess: false, - dialogSuccess: false, + dialogSuccess: true, paytype: "微信", userpaystype: [ { diff --git a/rc-busness/pages/productdetails/producted.vue b/rc-busness/pages/productdetails/producted.vue index 7e48e997..4627a29c 100644 --- a/rc-busness/pages/productdetails/producted.vue +++ b/rc-busness/pages/productdetails/producted.vue @@ -4,7 +4,7 @@
-
+
商品编号:{{ curItem.brandCode }}{{ curItem.productCode }} @@ -224,7 +224,7 @@ ¥ - {{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}} + {{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }}
{{ item.couponName }} @@ -593,6 +593,8 @@ export default { // let userid=JSON.parse(location.getItem('userInfo')); // let mobile=JSON.parse(location.getItem('userInfo')); // console.log(userid,mobile); + let basePoint = item.basePoint; + basePoint = basePoint?basePoint:0; let data = await postCourseId( item.productCode, this.sales_num, @@ -603,7 +605,7 @@ export default { item.ecPrice, item.specifications, item.leftAllotment, - item.basePoint + basePoint ); if (data) { this.productlist = data; From f219facc4c354233d72e0b433c82388fb9fff412 Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Tue, 25 Jan 2022 12:26:27 +0800 Subject: [PATCH 11/11] seeting expire time 365 --- .../main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java index 66658737..de30c88a 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartJWTUtil.java @@ -15,7 +15,7 @@ public class SmartJWTUtil { /** * 过期时间一天 */ - private static final int EXPIRE_SECONDS = 1 * 24 * 3600; + private static final int EXPIRE_SECONDS = 365 * 24 * 3600; /** * jwt加密字段 */ @@ -78,7 +78,7 @@ public class SmartJWTUtil { } public static void main(String[] args) { - String token = SmartJWTUtil.generateToken("884127"); + String token = SmartJWTUtil.generateToken("884159"); System.out.println(token); System.out.println(SmartJWTUtil.decodeToken(token)); }