From b6d754172702df4cd094195c6ff09fc042e852f4 Mon Sep 17 00:00:00 2001 From: hupeng Date: Sat, 28 Sep 2019 17:40:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=94=AF=E4=BB=98=E7=9B=B8=E5=85=B3=E5=8F=8A?= =?UTF-8?q?=E5=85=B6=E4=BF=AE=E6=94=B9=E7=AE=80=E6=98=93=E6=95=99=E7=A8=8B?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/~$系统运行简易教程.docx | Bin 0 -> 162 bytes doc/商城系统运行简易教程.docx | Bin 22288 -> 22472 bytes .../shop/controller/PayController.java | 104 ++++++++++++++---- .../modular/shop/service/IOrderService.java | 2 + .../shop/service/impl/OrderServiceImpl.java | 46 ++++++++ ruoyi-api/src/main/resources/application.yml | 7 +- 6 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 doc/~$系统运行简易教程.docx diff --git a/doc/~$系统运行简易教程.docx b/doc/~$系统运行简易教程.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb358bbc801a134d767712a9ae2498827b3d4538 GIT binary patch literal 162 gcmZQIGc+)_WFQf+GMF(KG8izJGmxy6M4K2G01@^A82|tP literal 0 HcmV?d00001 diff --git a/doc/商城系统运行简易教程.docx b/doc/商城系统运行简易教程.docx index dee0aced2f063a42ee5016af9f4d114775b6f4f5..b407efd3199499c0dd567c37a4c75f305e46a9e8 100644 GIT binary patch delta 10101 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 delta 9886 zcmaiaWl){XvNaGa1a~Jm!QEYgTX2Wq?k-Po*NuB{3GTXa4ek;oSa99Ae0k5Qd(S<; zzWLErGu^eOr>d)K^>mNaKqpi~Cvd?!A8X?z@+ktooagTxL>`&Fr4LeOq8mr7GxJkR zRDD`xjEi)+bvCkSm^fof->KscJySFRfvD1GyILqK8E<}K?Kq})I)4@VowWm zHB8Q@l*U7IBdWxxUeY2?c7MI`tRWik@y7tF5E$Nt(b!afhtHHc!SuZbLv{kWQUacx za4awdD@aEI1_?vs0*S**mQc2z_jVO zRP={-*=|(5v#Uz77{A3XCTwy9{h3ai=&rm-9?Tq~={zk|hwLV%yA%iQR%C2uvk`)mX6LFqu#vhT zSawhBqxJD@IUUPjiLRvstK)QG)5;xa-y5Nm2&EsB~g~iADJ1=Z1f)V$7%( zv{xJiof#RvD5;sN|*-*o>*LB{K$4brR+?*jB=t_SfVa)406fi%KhIPIp%m z8p7GhTgG=%kU_vR&M;2hCdAi7!LUyV;u$&8Js|za8%B(zvS>`G`pjc1hPR(bUI@7qvl`S%O9v?sXtRYc;)bjgVy}A>i-^a!Jfx-#+ zX6C=%>@wry$;vOOqhLk+g)nI&;ugd$i};ZK+uo)D3}3BNJgHPOj#eMX$pG=({kd#< z=bDB&u%@&4y=YDO@>sl3)2{E$^EkYSZ0HxpA&o=hVcZ(-*4~dsJ~Qw^d^Fjn=H1kI z_*C?{h?Y@az^} zM#b*b#3(A@7IR(TCFU9+*VJJs~22M_pCc77vTh@7z^795T^W+gLl zUZ!u(jv4}pip-qiTOJG?u(Pce>h^YIEk;dNd8@#BoVf!TaExyA=IpB(eOvy*L){fa zaUzn~aH}Y9aA#uFAfa62uXeVNm8W!5>o~SWTo8;@LN&Q|E{aKWy_v79jhof?O3JR0 z?x%WTrG*U=fJK70l{QdN`ov+Y6>CS=%%EvoeTp=n>DB?$WU*N-T4mkJpkgb0hBzOW z-Vv0pOz*WgVhzD($-fI5>EdOi9J|lrzl*EHk z_R=TCeTHGF&7{TJUXV`w7r26%=KRk{77!&x?ns~df1uPq+Fq5w=zw@IM&dflKVn~% ze9dSjKTuEUEElEm83|OsqJdcfwd~94?pzg(DlUv=MSXQq`KzV-7vTR7k4AIEyITE! zeI)vilOwsETpa}53LEO!px}yKMJdoFvM`Fk*ngk!0WiJg_D5{?&x{;`9q1l8#TU5~ ztt~${boPm6wx+oQ;By2+Q5^k34jP^LUTx6Uuh&E0UCcMk?AmhOx2x9iadx;$+r{YR z4tB;i@kB5BIoc9G6bo$RSm4oMWYZ!}h;0_*XNM0L@96PEJNn%JPhS|9q;3U6@Fp4zEqqtExF(;I)*b9`8BemM^W@2d zOzj?ER|jpM`#%x;C2f_O9V$Iwc;<5h-;oO(0N%dg-)F=dS3$}W&jZSG1a}^HiIDs7 z7Om$PNnU!%+2T9U(I)4h0_jxgoyv@zm@Au_{m64v%u5aj1SgN_!fOe>>%qu)N@znHA9CX{a^ z3zHG?`tP~|9b=66SfbQ4Gz{mvEOg{P1AIHG@7c3pKf&@P1bex+jx(}IGp0m}B4Fm7 zXi`Yd6!Qj_7s;Shp%u~Wf1Bh?Xf#9~U%wMX5=DEST%`5I5vrGnjJ{jYqa!Ei%)y*R z+3OR_4P<~X_0vBeH&G^88sw@tt{64&?=K7;OQIkutTJAhsB}@e%=OtY_&{wY3LK>* zKqJINT7K*|+QMM0zR$G~yBbHFWF&=n?#WcF2mkCFhVI-mMm(^I)}C0E7x(nWFbQPL zN+~WE?lbR$X#=9!T(sF3S+?ubHudl|D`u>g_qud`9*<=g&NM$mQF|GYBJ=FAAdS0x z5T;=n7Gf(5J3<+&waXvR96hPH2ez7@shqKy+i{d3gOPJbWqn4T3~@*0o~it)^L6aS zwUwIl!9+Ms+JRVuYqjyN^X!@ayaC1qS#pH^r}Ghw%vP=2s~&_?LiScI~ilc zV+27E>vhSY+2hj+d7Zk(kEX~$eRUSiQo)uQ9t#Jv{RAz|U)TD)3BH$2Qckp7x1~P6 z|FD3PqGkrWW%*8MA>4aE1C@%qP+b!6s{s`Di`QknLy!q`(DaD&Sh8RQgx-x3<%b zle`>S)_|Wc9`DY(9`C_~@#8+ZlKLqw+Gq7WjH?i)?#F|)PWml2-KzICsbR8Wg|Qg^iYnx>%$hcegbR?p zV;14yBA*xF9PIZ3jz>V}su6hu)v8glU^n2m*}*=bHLA4OseebG#PLDWA;aOwJI_1i zAYJAafsT$GwyYvh*P~uKkZ7iokP8~Jrf~zXB3&5FO`1FcAibMr4?pU1^l$H#R+uYK zu7)wVhu(P%)ykhell_}v{tv-q%6bOY!GHPYS2idp3@9ilPe&Is7FTmOH){t=S7tAJ zyJ9`Pc*G%lEK>9Ejua+BH7{l~ee;Ka@n4}{L$mkIr3+tL*-lFLZpz2YUAqC-ay3h% z0Lba(pDmMxpJ9;Q`vmX+Dq4jsm=u}zU^v{dE90!SKUhak34X6ESA94{c509NNIS2>wRA!AxIqWvBS*gJ2P_X%yMjT zVK?O1Z^&b^I{#wBO$iq(owXA;zP-D`t}oOw&7lgGED&Bj@tcaOzw`B+qIFlxjYCvV({T8!cXX%v!RSse2^Ppzp!K^m8m9s)i4u{xH zrl+@<+nWL6E%Z$rlI$1=jJf`r#R;!~K2ViY7ov3fsa&hHn*8E)< zXpBeW!8kR~epi5AVCrgeFz4cN+aXZo@wd@4WbV!Dv7r>)Y505%`Q5+wyKC=v$N1n~ zS~M9m9st&V-f_9y+526%u#@+L6sYxio;f=DwXon@SxHu1{ptzX4PGdHYks`3oH{>b z_#%&h)p&^a3f#*Z1(e^Vi10arua1mfC*}a)(MTD1y-5QS|$agO~B6qtT<$uaMpT1yH=Evaq55V@(#N0dgkS#tyt{gO*{nZ^IH_+qUEruJ$Q%kFGQ4-2Y zoGBUR#h;^Co@Ul>znEctM}z{oC?BVSZ!>r6W^gbbn~Gw44p`~(ZbEvFUW0lxjpFV+ zU>(oC*#l(FnY}@lv}Avlq)Bsn-a!y}1^+EM7a8$3t?O)GP?*n>e!&LWefU1*oUc8LI)(8QQK62V zMrKAIsWTq;^S)Qy2tjJrj8xx29d{9w);MRwn&@pC$f9JqLAg3O!l~(_RL>J^KUOYQ zv6Gh)=ci$II)z@Y-`_ZxTw4h(H36K2cLha$S;gzA(6lPvWqi!md=c-M+wQ!$KE;Nu zmgrNA->NXWs;sSB59c?xH4qFDO{ENE?ii*Ev0tR(V2<(2q?w=wp~5YS*NT}kVGBx@ z+2?uuO4YcA0dB5AEq580_7BNY-%2k(~F{;8o?MQggweN-yFfNZAD%1@xiznM1>{J zo}gbuJf`bXOwg!SK*e-n!!6aR?71DfNEgZlw;}z074fW)%iCLlZC1iwo}noekz7ti z#UZH^I!=cj5iT&aWY~I6CRPKDjDid zSaqOX5IX81yKO(7G^%~FV_uK(gg)riqx0=6Hq^E(4xXW?o{BifNlHo)VuTjuN5lwp zDT1hPm>N+B1j$)n#%#*?iWL;lyEv(}BhZUenx>TweFt<^;+)|U%d!E+TBVeh&!SWn zA3wx+;Z(U!D`|Y;YgS`F3DKI{rNvH$R%M5ymYe*x(<$eQ<@(37QH5PhZ#pUeooaE) z6~2ZpLnH^ei$>)30`gQpX_U$`$ac)bX+Qsy1$Ad;1K|@%4wm@G-|k8nIJ#Y^G@Fzy zbj#J>T-V6{$Seom7E(R{JP|wwwJOG_n7>>vWI@T8x`j%+j3%UC@e7IJ1~L0NmsI#a z*Y>bV)nk9pA?#NSTC}2*=w(~RM^a4ZF_j3@YFM{aaTtmcmk{8JJ0IPQ!BQ2CB$PHJ zeN+Xh!iKy~n9+cygA_gAdOP>{_qE{-+hE3fh+<76$yxTvHxyWbFXHMMqQV$z1>C$2 zb3!az3Jch)I}u9qk;sMgI*#Ah87Yn6n8sbIJO_8z7ME3>U>mcUN4&^-Z@pX?e%z|K zYL3ASlgalQif!7aTrS7!+WQT-B46{uByD^RT5bMJl)a*3$`MIzBjtj=w5SvJ5;)=A zleoA~aZ10FH;48MpkunxNRDh1;xFzf32rui7u^~pmXU6%?JBuKIU_D$SIRA0_;D#N zLq$|yz#=qcX2rSdAYfIsc0u4fV|Ssz=m$Sf4>=!wG-o+$yS2D4%#80!-2)rMr2lZK zh$!i$igof~#)U+9CSSw-*~uv^dyjF>es=dGb>{Tl5M$aXF|e6q;NTk0H}Wa`m$WS0 zBKIi#(uuw??h`%UA8~}L8L3>@7<^`%@Z(ehj?f_X5neQ2%98PTMOJRi!JR+ZsycF_ z)f^6Rais(q%|o54gUFWp8S?>C-c;VOR*;N>F_?YDa^$5!c13t(_e>ooXWX0_MVjDT z3fE-!zHEvQ1wfBRIU`+Y!yiWaU|W41PHwRfbZWG8o{DN?DvJI&pxq^BryK{5> z8=D9vP5{n4LSdc#ld-G*+65d|>&Ed12}9W2(%Qz41+YU{-D$8sKYLkh#PFFuR{Y_M z=KJFrl#H|~9E9oXq?k->S#h)8c3?oGQbi+Xi=29NiC##qHYNt3|4~E(`-kZJ=nuX( zbkV0p3oWRipNHw1+Lj?IBgOo#9HUO#tD{>K{uOv;$L3RRtyVDq9A4;(y-qXYj!i#B zzELpE#xN~gxEm(H5E&K4rQ)i}5N4Z@c;ra1AIp4>>J#!1{fjD^FnRAUN{2!ID9E=TrH~)M<05cRU~a$eLhrdYy0I6WCS@^=bzx-VX7oq zIfcuKEl57Err`@Ait3l1QDge-QDF~nP)7ojA&GEU)WaGQKEf!ZtNIi-U+rm;*q56@ zv%Y8ekz+EglWFWq3Bmf7^ux_Lf;f-HlFEj9ehf0nH{0z168lz*O@X97wTu|fJxyZ4 z`}hx$M|oTAS8-$DNiPVp5$(@{1+w zI?KI^`o)~((r%r#Wp37dX#gPnSSl97jBSsmeB5BPLu#|c&mFfZ^T2pQP{n1aIVkQ zcD*RO#HgLpz@3Lu?(Q~M+mSm<#zkuo47h`{m3SulN)Mjzo#vZtuN-vc0RW|J26!1h zY+Ifk$overH$uqF!B}vy8?S%h?E+@YPUEv2UG5Y&{0g~mCwSej70xOznJw`?e&ZMM6zMp(gjlH?X$CKOkj10rJTM0IlQQYF8e(6%ZGeCfX+GO~r4g_7QV*#hSzg*`(V*=ocXEZ&ZF^$0| z6QW5w^Bfo=I;~%-*fj3(S`D)&XJ*u~>>Ro#xm$<>!a+-sY~%=^oW2pKwClO1VWTb! zzY@eZ3SP44Psywr07D5KJB5vC4Az|2S!cOti*Cxm{S4pmWE1O7NIOnpG7BN!N#;C- zL)TY7Kj3y?Iz4d*rVY2gJepw$d4EWH=lo^AKi^Ju&a;-m1#0`sWh(=xkUT_-8M}3* z2lcmiczTSBE|xclA5OOt0}Bsk>_?wdo%*~dX(7!%@qU)5!v|-|Kv$0fRkRLPtyp%1 z_qnA%44u$zA2-nRePt5p>mt*kPkwJ>hiM|`wE=q}`QJ&!Y-IRo=-P@Xmr=T~vsSjPO}_SDbwbtKh!CP5$gEcBrC65W$ApT`5;Z;10Rj zv@T)JOK;0x7xx%s?X5Jiz*c97Hmb*(#{r1>IU^Y8;XmsW@4*sGCv9jUue7zd)#1li z9?dMgudaFaixOfd1|J;IVrS>F*f%8VDX-NE++5yh-e1Rlk5sd9BPah*ZKzaxnbFWu6x5o{ z?XTE&#RZs+%%Ncmk8)+fm-;VZw*yitij593mzaHtEPooq6$HKYJx@jQW~Vg1CZ0*@(S>GknWu5rIw!##rAxv(eU|c-Sf|=$v|}}<2>%vKMh37B4XLJ` zKd?8=cfn`rpTHAEmsv3|or?MkXh$cE*>bL|HEIuU5a@$0JMutt@0O9Gz{m z{vPs%0UvpA_tu*(w(Fm7kAaE28u6(K%fIzERu~_I;6(7l$hF?C8YSnnopp_K zyH_+4G=pK5U^v{gG&}O%pt6dcwmojvw2!rW(I4k9#^8Fy{ae2KKmkc8j6=BF;cX38LnA9CXYRZ|>1$pT` zo*hl;BqrZHbP4U+-mYor6UoWWbv+f=6jW}jNgs~wFk(B zFVL-_ztVGswt*Hs#~R@(@o1DLhENznl6}6RQT& zyLeku=M4E2q%x6XaI>@hmc2s2AijY5mkTz3oSl(G6NvU5oJ^tCISk+D6p!5sQG_w8 zu%@5nMyOkCLMqag6%N=^{M5yAcKHFE%$=baf z$}+ePzr9N!Y`7Piy*;5K{@>WiN%Bhv1(ugds<>~Yuwns@cxj%o^s%tds7iz z!kP-uw_B-jerjj5%4m*^DiRypnS_pFj)J8_a+?zwYhJXr0NJDKJ7Y3aa*!HWfiixSB2_*!F=M1T=A!S%xonce=iY@(2lW(tPle{3gy>jo0#&5R zpDtPPCS!NjD)TY}Ry3iQ?>jS8N>KR#E3S^^l_Vf#6z-?PN~O>qa08Z z74WlpK$e5XFF}t4^%jXmY?F&yal`VsCH75=b!BlI`1xHwnHV5LM~6>`wnc9bjI8!e zE0hnKrc>Ubhaln`pd*#@8r5l?B`p=UBM+V$Z}Aua^H z8GTk{Gh?i!>z?YCOSPiN0;>^@0OC|=AoRf?$A#{6c}$Lvl4g+Crrg+g?q;K2dnGb- ze$fe&!O5bK!H~%>e8j$B3;Cx4s0kao;=_~45*NtT!jlN#f46VsWWZcI#;_>FZCCDY zIuqzK=%&HqVoD7^9;*aeCCr1nB%1&7Z?DaZYijKf% zVMrQI{GkZmF&Z=8aV@r7>|80u1lMmDpCIgodCr;IqRv0gl3(1C`ci$pG}|v#JZtE& zXt<^{Um*5V&06Uo%x3+i1+2l30DgGp?1D&*NaxGbjuH42!RS}p7IZ%Qs zJIoI`(10or%(@upMU@+7RvyIlMGyu`0W`1h5j3cd4#Ji|NB-N~fr5tm_*cS;gTP-z zV4lU3)J*<0umv(#W9K}{683&gL^4s)*na!}`iCI^+Mvk?7vk?;@T z|3IpMF4U=s{wsa`U$xTbzsXD(ngHaeAp{K#s`@KUK*t(FFl#g*dQCy-RFI{n5DcCq zs6>;B=x 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类 + * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象 + */ @PostMapping(value = "/shop/pay-do-pay") @ApiOperation(value = "开始支付",notes = "开始支付") - public R doPay(@Validated @RequestBody String jsonStr, - WxPayUnifiedOrderRequest orderRequest){ + public R doPay(@Validated @RequestBody String jsonStr){ JSONObject jsonObject = JSON.parseObject(jsonStr); String orderNo = jsonObject.get("order_no").toString(); //1-余额支付 2-微信支付 @@ -87,31 +110,70 @@ public class PayController { orderService.payYue(storeOrder); return R.success("余额支付成功"); }else{ - return R.error(4000,"微信支付开发中"); - //todo 微信支付 -// try { -// //WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); -// orderRequest.setBody("主题"); -// orderRequest.setOutTradeNo("订单号"); -// orderRequest.setTotalFee(1);//元转成分 -// orderRequest.setOpenid("openId"); -// orderRequest.setSpbillCreateIp("userIp"); -// //orderRequest.setTimeStart("yyyyMMddHHmmss"); -// // orderRequest.setTimeExpire("yyyyMMddHHmmss"); -// -// return R.success(wxPayService.createOrder(orderRequest)); -// } catch (Exception e) { -// log.error("微信支付失败!订单号:{},原因:{}", orderNo, e.getMessage()); -// e.printStackTrace(); -// return R.error(4000,"支付失败,请稍后重试!"); -// } + //判断库存 + QueryWrapper wrapperGoods = new QueryWrapper<>(); + wrapperGoods.eq("order_id",storeOrder.getOrderId()); + List orderGoodsList = storeOrderGoodsMapper + .selectList(wrapperGoods); + for (StoreOrderGoods storeGood : orderGoodsList) { + int storeCount = orderService.checkStore(storeGood.getGoodsId(),storeGood.getSpecKey()); + if(storeCount < storeGood.getGoodsNum()){ + return R.error(4000,"库存不足"); + } + } + //System.out.println("11111"); + WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); + StoreMember member = memberService.getById(userId); + orderRequest.setBody("商品购买"); + orderRequest.setOutTradeNo(orderNo); + BigDecimal bigDecimal = new BigDecimal(100); + orderRequest.setTotalFee(bigDecimal.multiply(storeOrder.getOrderAmount()).intValue());//元转成分 + orderRequest.setOpenid(member.getOpenid()); + orderRequest.setSpbillCreateIp("127.0.0.1"); + orderRequest.setNotifyUrl("https://app2.dayouqiantu.cn/shop/notify"); + orderRequest.setTradeType("JSAPI"); + try { + WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest); + System.out.println(orderResult); + return R.success(orderResult); + } catch (WxPayException e) { + return R.error(4000,e.getMessage()); + //e.printStackTrace(); + } } - // return R.success(""); + + } + + @PostMapping(value = "/shop/notify") + @ApiOperation(value = "异步通知",notes = "异步通知") + public String payNotify(@RequestBody String xmlData){ + try { + WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData); + String orderNo = notifyResult.getOutTradeNo(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("deleted",0).eq("pay_status",0).eq("order_sn",orderNo); + StoreOrder storeOrder = orderService.getOne(wrapper); + if(ObjectUtil.isNull(storeOrder)) { + return WxPayNotifyResponse.success("处理成功!"); + } + orderService.notifyHandle(storeOrder); + return WxPayNotifyResponse.success("处理成功!"); + } catch (WxPayException e) { + //System.out.println(e.getMessage()); + log.error(e.getMessage()); + return WxPayNotifyResponse.fail(e.getMessage()); + } + + + // return WxPayNotifyResponse.success("处理成功!"); + } + + } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IOrderService.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IOrderService.java index fd9d6ad..53bcd31 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IOrderService.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/IOrderService.java @@ -40,4 +40,6 @@ public interface IOrderService extends IService { public void payYue(StoreOrder order); + public void notifyHandle(StoreOrder order); + } diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/OrderServiceImpl.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/OrderServiceImpl.java index 4159b23..6f3e43a 100644 --- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/OrderServiceImpl.java +++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/shop/service/impl/OrderServiceImpl.java @@ -482,6 +482,48 @@ public class OrderServiceImpl extends ServiceImpl return storeOrder; } + /** + * 订单处理 + * @param order + */ + @Override + @Transactional + public void notifyHandle(StoreOrder order) { + QueryWrapper wrapperGoods = new QueryWrapper<>(); + wrapperGoods.eq("order_id",order.getOrderId()); + List orderGoodsList = storeOrderGoodsMapper + .selectList(wrapperGoods); + for (StoreOrderGoods storeGood : orderGoodsList) { + //更新库存 + storeSpecGoodsPriceMapper.decCount(storeGood.getGoodsId(), + storeGood.getSpecKey(),storeGood.getGoodsNum()); + //增加商品销量 + storeGoodsMapper.incSaleNum(storeGood.getGoodsId() + ,storeGood.getGoodsNum()); + + } + + //更新订单状态 + StoreOrder storeOrder = new StoreOrder(); + storeOrder.setOrderId(order.getOrderId()); + storeOrder.setPayStatus(1); + storeOrder.setPayMethod(1); + storeOrder.setUserMoney(order.getOrderAmount()); + storeOrder.setPayTime(OrderUtil.getSecondTimestampTwo()); + updateById(storeOrder); + + //增加流水 + StorePointsMoneyLog storePointsMoneyLog = new StorePointsMoneyLog(); + storePointsMoneyLog.setUserId(order.getUserId()); + storePointsMoneyLog.setTitle("购买商品"); + storePointsMoneyLog.setMoneyNumber(order.getOrderAmount()); + storePointsMoneyLog.setType(2); + storePointsMoneyLog.setCreateTime(OrderUtil.getSecondTimestampTwo()); + + storePointsMoneyLogMapper.insert(storePointsMoneyLog); + + } + /** * 余额支付 */ @@ -541,4 +583,8 @@ public class OrderServiceImpl extends ServiceImpl storePointsMoneyLogMapper.insert(storePointsMoneyLog); } + + + + } diff --git a/ruoyi-api/src/main/resources/application.yml b/ruoyi-api/src/main/resources/application.yml index 0448095..8be212a 100644 --- a/ruoyi-api/src/main/resources/application.yml +++ b/ruoyi-api/src/main/resources/application.yml @@ -6,6 +6,9 @@ light-security: - http-method: ANY path: /oauth/access_token expression: "anon()" + - http-method: ANY + path: /shop/notify + expression: "anon()" - http-method: get path: /doc.html expression: "anon()" @@ -150,8 +153,8 @@ wx: subMchId: keyPath: miniapp: - appid: wx604d2ea4702620d2 - secret: 0beb4dad95fbd97cbaf2a0a4dec51575 + appid: + secret: token: aesKey: msgDataFormat: JSON \ No newline at end of file