From 13ac9c42bb22b980567313a9dff51d4a8d639bbc Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 20 十二月 2023 10:58:47 +0800 Subject: [PATCH] 服务商 --- server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java | 24 ++++ server/services/src/main/java/com/doumee/service/business/RefundService.java | 1 server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java | 15 - server/web/src/main/java/com/doumee/api/web/PaymentCallback.java | 5 server/README.md | 21 +-- server/services/src/main/java/com/doumee/service/business/GoodsorderService.java | 2 server/services/src/main/resources/application-dev.yml | 6 server/platform/src/main/java/com/doumee/task/ScheduleTool.java | 7 server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java | 2 server/services/src/main/resources/application-test.yml | 3 server/services/src/main/resources/application-pro.yml | 31 +++- server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 7 + server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 224 ++++++++++++++++++++++++++++-------- server/platform/src/main/resources/application.yml | 2 server/web/src/main/resources/application.yml | 2 15 files changed, 256 insertions(+), 96 deletions(-) diff --git a/server/README.md b/server/README.md index e980c38..60f0249 100644 --- a/server/README.md +++ b/server/README.md @@ -1,25 +1,18 @@ 涓�銆佹墦鍖呮敞鎰忎簨椤癸細 -1銆佹墦鍖卲ro鐜锛屽紑鍚疭cheduleTool瀹氭椂鍣ㄤ换鍔★紝鍛藉悕锛歵ielangtou.jar -2銆佹墦鍖卲roTwo鐜锛屽叧闂璖cheduleTool瀹氭椂鍣ㄤ换鍔★紝鍛藉悕锛歵ielangtou12.jar -3銆佹墦鍖卲roThree鐜锛屽叧闂璖cheduleTool瀹氭椂鍣ㄤ换鍔★紝鍛藉悕锛歵ielangtou13.jar +1銆佹墦鍖呮湇鍔$鎺ュ彛pro鐜锛屽懡鍚嶏細bike_admin_api.jar +3銆佹墦鍖呭鎴风鎺ュ彛pro鐜锛屽懡鍚嶏細bike_h5_api.jar 浜屻�佸惎鍔ㄥ懡浠わ細 1銆佹煡鐪嬪綋鍓嶈繍琛岃繘绋嬶紝ps -ef | grep java 2銆佸叧闂笁涓猨ava杩涚▼锛宬ill -9 xxxx -3銆乯ar瀛樻斁鐩綍 /usr/local/static_resources +3銆乯ar瀛樻斁鐩綍 /usr/local/parks 4銆佸惎鍔ㄥ懡浠わ細 -nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou.jar >/usr/local/static_resources/log.log 2>/usr/local/static_resources/err.log & -nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou12.jar >/usr/local/static_resources/log12.log 2>/usr/local/static_resources/err12.log & -nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou13.jar >/usr/local/static_resources/log13.log 2>/usr/local/static_resources/err13.log & -nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou14.jar >/usr/local/static_resources/log14.log 2>/usr/local/static_resources/err14.log & -nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou15.jar >/usr/local/static_resources/log15.log 2>/usr/local/static_resources/err15.log & -nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou16.jar >/usr/local/static_resources/log16.log 2>/usr/local/static_resources/err16.log & - +nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/parks/bike_admin_api.jar >/usr/local/parks/log.log 2>/usr/local/parks/err.log & +nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/parks/bike_h5_api.jar >/usr/local/parks/log.log 2>/usr/local/parks/err.log & 5銆佸啀娆℃煡鐪嬪綋鍓嶈繍琛岃繘绋嬶紝ps -ef | grep java锛屼笁涓繘绋嬫槸鍚︽甯� 涓夈�佹棩蹇楁煡鐪嬪懡浠わ細 -tail -f /usr/local/static_resources/log.log -tail -f /usr/local/static_resources/log12.log -tail -f /usr/local/static_resources/log13.log +tail -f /usr/local/parks/log.log +tail -f /usr/local/parks/error.log diff --git a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java index b55e675..4f8c93d 100644 --- a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java +++ b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java @@ -70,12 +70,11 @@ * 娓│ * @throws Exception */ - @Scheduled(cron = "0 0 21 * * ? ") + @Scheduled(cron = "0 30 13 * * ? ") public void getYesterdayBill() throws Exception { log.info("=====================寮�濮嬫瘡澶╄嚜鍔ㄧ粨绠�======================="); goodsorderService.autoCloseOrder(); log.info("=====================缁撴潫姣忓ぉ鑷姩缁撶畻======================="); - } /** @@ -117,7 +116,7 @@ String appSecret = wxPayProperties.getAppSecret(); if(wxPayProperties.getExistsSub() ==1){ //濡傛灉鏄湇鍔″晢鏀粯,鍙栧瓙鍟嗘埛淇℃伅 - appId = StringUtils.trimToNull(wxPayProperties.getSubMchId()); + appId = StringUtils.trimToNull(wxPayProperties.getSubAppId()); appSecret =StringUtils.trimToNull(wxPayProperties.getSubAppSecret()); } //鐢熸垚寰俊token @@ -137,7 +136,7 @@ @Scheduled(fixedDelay = 1000L * 60L ) public void autoCancelRefunOrder(){ log.info("=====================寮�濮� 鑷嫊鍙栨秷鏈帹閫侀��娆剧姸鎬佺殑閫�娆惧崟鐘舵��======================="); - refundService.autoCancelRefunOrder();; + goodsorderService.autoCancelRefunOrder();; log.info("=====================缁撴潫 鑷嫊鍙栨秷鏈帹閫侀��娆剧姸鎬佺殑閫�娆惧崟鐘舵��======================="); } diff --git a/server/platform/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml index a70c09f..495699e 100644 --- a/server/platform/src/main/resources/application.yml +++ b/server/platform/src/main/resources/application.yml @@ -9,7 +9,7 @@ # application: # name: parkbike profiles: - active: test + active: pro # JSON杩斿洖閰嶇疆 jackson: # 榛樿鏃跺尯 diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java index 7439fd9..d3fd0bd 100644 --- a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java +++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java @@ -16,6 +16,7 @@ import com.doumee.dao.system.model.SystemDictData; import com.wechat.pay.java.service.refund.model.AmountReq; import com.wechat.pay.java.service.refund.model.CreateRequest; +import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -82,7 +83,9 @@ amountReq.setCurrency("CNY"); request.setAmount(amountReq); try { + log.error("=============="+JSONObject.toJSONString(request)); com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.create(request); + log.error("=============="+JSONObject.toJSONString(response)); if ("SUCCESS".equals(response.getStatus().name()) || "PROCESSING".equals(response.getStatus().name()) ) { return true; @@ -95,6 +98,27 @@ } } + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public com.wechat.pay.java.service.refund.model.Refund isSuucessRefund(String outTradeNo) { + // 鍙戦�侀��娆捐姹� + + QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); + request.setOutRefundNo(outTradeNo); + request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); + try { + log.error("=============="+JSONObject.toJSONString(request)); + com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.queryByOutRefundNo(request); + log.error("=============="+JSONObject.toJSONString(response)); + if ("SUCCESS".equals(response.getStatus().name()) + || "PROCESSING".equals(response.getStatus().name()) ) { + return response; + } + }catch (Exception e){ + e.printStackTrace(); + + } + return null; + } public Refund wxRefundOld(RefundDTO refundDTO) { // 鍙戦�侀��娆捐姹� String refNum = ID.nextGUID(); diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java index 0dced2a..04205a2 100644 --- a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java +++ b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java @@ -38,7 +38,7 @@ private String leaseNotice; - @ApiModelProperty(value = "鎶奸噾鐘舵�侊細0=鏈敮浠樻娂閲戯紱1=宸叉敮浠樻娂閲戯紱") + @ApiModelProperty(value = "鎶奸噾鐘舵�侊細0=鏈敮浠樻娂閲戯紱1=宸叉敮浠樻娂閲�; 2=閫�娆句腑") private Integer depositStatus = 0; @ApiModelProperty(value = "璁㈠崟涓婚敭") diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java index 4724ede..5ea76b3 100644 --- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java +++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java @@ -188,4 +188,6 @@ void goodsOrderSettlement(String memberId); void autoCloseOrder(); + + void autoCancelRefunOrder(); } diff --git a/server/services/src/main/java/com/doumee/service/business/RefundService.java b/server/services/src/main/java/com/doumee/service/business/RefundService.java index 274d923..78bd4d2 100644 --- a/server/services/src/main/java/com/doumee/service/business/RefundService.java +++ b/server/services/src/main/java/com/doumee/service/business/RefundService.java @@ -102,5 +102,4 @@ List<RefundPlatExportVO> findPlatExportPage( Refund pageWrap); - void autoCancelRefunOrder(); } diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java index 566ca83..4b18e96 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java @@ -45,6 +45,7 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension; import com.wechat.pay.java.service.partnerpayments.jsapi.model.*; import com.wechat.pay.java.service.refund.model.RefundNotification; +import com.wechat.pay.java.service.refund.model.Status; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -373,41 +374,55 @@ .eq("member_id",memberId) .eq("status",Constants.goodsorderStatus.pay) .last(" limit 1 ")); - if(!Objects.isNull(goodsorder)&&goodsorder.getStatus().equals(Constants.goodsorderStatus.pay)){ - homeResponse.setDepositStatus(Constants.goodsorderStatus.pay); - homeResponse.setGoodsOrderId(goodsorder.getId()); - //鏌ヨ褰撳墠楠戣鐘舵�� - MemberRides memberRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().lambda() - .eq(MemberRides::getMemberId, memberId) - .eq(MemberRides::getOrdreId,goodsorder.getId()) - .ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey()) - .orderByDesc(MemberRides::getCreateDate) - .last(" limit 1 ")); - if (!Objects.isNull(memberRides)) { - homeResponse.setRideStatus(memberRides.getStatus()); - MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); - BaseParam baseParam = baseParamMapper.selectById(memberRides.getParamId()); - if(!Objects.isNull(baseParam)){ - memberRidesResponse.setBikeType(baseParam.getName()); + homeResponse.setDepositStatus(Constants.ZERO); + if(goodsorder!=null){ + Refund r = this.refundMapper.selectOne(new QueryWrapper<Refund>().lambda() + .eq(Refund::getObjId,goodsorder.getId()) + .eq(Refund::getIsdeleted,Constants.ZERO) + .eq(Refund::getStatus,Constants.ZERO) + .last("limit 1" )); + if(r!=null){ + homeResponse.setDepositStatus(Constants.TWO); + }else{ + homeResponse.setDepositStatus(Constants.ONE); + } + if( goodsorder.getStatus().equals(Constants.goodsorderStatus.pay)){ + homeResponse.setGoodsOrderId(goodsorder.getId()); + //鏌ヨ褰撳墠楠戣鐘舵�� + MemberRides memberRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().lambda() + .eq(MemberRides::getMemberId, memberId) + .eq(MemberRides::getOrdreId,goodsorder.getId()) + .ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey()) + .orderByDesc(MemberRides::getCreateDate) + .last(" limit 1 ")); + if (!Objects.isNull(memberRides)) { + homeResponse.setRideStatus(memberRides.getStatus()); + MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); + BaseParam baseParam = baseParamMapper.selectById(memberRides.getParamId()); + if(!Objects.isNull(baseParam)){ + memberRidesResponse.setBikeType(baseParam.getName()); + } + memberRidesResponse.setRideId(memberRides.getId()); + memberRidesResponse.setRideStartTime(memberRides.getRentDate()); + memberRidesResponse.setRideStartTimeStr(DateUtil.DateToStr(memberRides.getRentDate(),"HH:mm")); + memberRidesResponse.setRideEndTime(memberRides.getBackDate()); + memberRidesResponse.setRideEndTimeStr(DateUtil.DateToStr(memberRides.getBackDate(),"HH:mm")); + memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRides.getRentDate(),memberRides.getBackDate())); + memberRidesResponse.setBikeCode(memberRides.getBikeCode()); + memberRidesResponse.setBasePrice(memberRides.getBasePrice()); + memberRidesResponse.setBaseTime(memberRides.getBaseTime()); + memberRidesResponse.setUnitTime(memberRides.getUnitTime()); + memberRidesResponse.setUnitPrice(memberRides.getUnitPrice()); + memberRidesResponse.setPriceRole(PricingDetailServiceImpl.getRoleNameByParam( + memberRidesResponse.getBasePrice(),memberRidesResponse.getBaseTime(), + memberRidesResponse.getUnitPrice() + ,memberRidesResponse.getUnitTime())); + homeResponse.setMemberRidesResponse(memberRidesResponse); } - memberRidesResponse.setRideId(memberRides.getId()); - memberRidesResponse.setRideStartTime(memberRides.getRentDate()); - memberRidesResponse.setRideStartTimeStr(DateUtil.DateToStr(memberRides.getRentDate(),"HH:mm")); - memberRidesResponse.setRideEndTime(memberRides.getBackDate()); - memberRidesResponse.setRideEndTimeStr(DateUtil.DateToStr(memberRides.getBackDate(),"HH:mm")); - memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRides.getRentDate(),memberRides.getBackDate())); - memberRidesResponse.setBikeCode(memberRides.getBikeCode()); - memberRidesResponse.setBasePrice(memberRides.getBasePrice()); - memberRidesResponse.setBaseTime(memberRides.getBaseTime()); - memberRidesResponse.setUnitTime(memberRides.getUnitTime()); - memberRidesResponse.setUnitPrice(memberRides.getUnitPrice()); - memberRidesResponse.setPriceRole(PricingDetailServiceImpl.getRoleNameByParam( - memberRidesResponse.getBasePrice(),memberRidesResponse.getBaseTime(), - memberRidesResponse.getUnitPrice() - ,memberRidesResponse.getUnitTime())); - homeResponse.setMemberRidesResponse(memberRidesResponse); } } + + return homeResponse; } @@ -504,18 +519,88 @@ memberRides.get(0).setActualPrice(closeMoney); } int refundMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(closeMoney)).intValue();//璁$畻浠锋牸 - RefundDTO refundDTO = new RefundDTO(); - refundDTO.setOrderId(goodsorder.getId()); - refundDTO.setCanBalance(goodsorder.getMoney()); - refundDTO.setRefundAmount(new BigDecimal(refundMoney)); - refundDTO.setTotalAmount(goodsorder.getMoney()); - refundDTO.setMemberId(goodsorder.getMemberId()); - refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName()); - refundDTO.setCreator(goodsorder.getEditor()); - refundDTO.setType(type); - wxMiniUtilService.wxRefund(refundDTO); + if(refundMoney>0){ + RefundDTO refundDTO = new RefundDTO(); + refundDTO.setOrderId(goodsorder.getId()); + refundDTO.setCanBalance(goodsorder.getMoney()); + refundDTO.setRefundAmount(new BigDecimal(refundMoney)); + refundDTO.setTotalAmount(goodsorder.getMoney()); + refundDTO.setMemberId(goodsorder.getMemberId()); + refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName()); + refundDTO.setCreator(goodsorder.getEditor()); + refundDTO.setType(type); + boolean res = wxMiniUtilService.wxRefund(refundDTO); + }else{ + //鏃犻��娆剧粨绠� + closeGoodsorderDoneNoRefund(goodsorder,type,new BigDecimal(0),null); + } } - + public void closeGoodsorderDoneNoRefund(Goodsorder goodsorder,int type,BigDecimal refundMoney,String closeId) { + log.error("========================================"+JSONObject.toJSONString(goodsorder)); + if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){ + return; + } + BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refundMoney)); + //杩涜璁㈠崟缁撶畻涓氬姟澶勭悊 + List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId()); + //榛樿缁撶畻涓烘娂閲戦噾棰� + if (!CollectionUtils.isEmpty(memberRides)){ + //楠戣鎬绘椂闀� + for(MemberRides model :memberRides){ + MemberRides up = new MemberRides(); + up.setId(model.getId()); + up.setActualPrice(model.getActualPrice()); + up.setCloseDate(goodsorder.getEditDate()); + up.setCloseStatus(Constants.ONE); + up.setEditor(goodsorder.getEditor()); + up.setEditDate(goodsorder.getEditDate()); + //鏇存柊楠戣璁板綍鐨勮绠楅噾棰濆拰鐘舵�� + memberRidesJoinMapper.updateById(up); + } + } +// BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney())); + //閫�娆句箰琛� +// int type =Constants.formatIntegerNum(refund.getType()); + Goodsorder update = new Goodsorder(); + update.setId(goodsorder.getId()); + update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); + update.setCloseMoney(closeMoney); + update.setCloseStatus(Constants.ONE); + update.setCloseDate(new Date()); + update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo()); + update.setCloseUserId(goodsorder.getEditor()); + if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ + //濡傛灉鏄己鍒剁粨绠� + update.setCloseType(Constants.ONE); +// LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); +// update.setEditor(principal.getId()); + }else if(Constants.REFUND_TYPE.NORMAL.getKey() == type){ + //濡傛灉鏄嚜琛岀祼绠� + update.setCloseType(Constants.ZERO); + }else{ + //濡傛灉鏄钩鍙拌嚜鍔ㄧ粨绠� + update.setCloseType(Constants.TWO); + } + update.setCloseId(closeId); + //瀛樺偍 娑堣垂浜ゆ槗娴佹按 + Transactions transactions = new Transactions(); + transactions.setId(Constants.getUUID()); + transactions.setMemberId(goodsorder.getMemberId()); + transactions.setCreateDate(new Date()); + transactions.setIsdeleted(Constants.ZERO); + transactions.setOrderId(goodsorder.getId()); + transactions.setMoney(closeMoney); + transactions.setType(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getKey()); + transactions.setDoneDate(new Date()); + transactions.setTitle(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getName()); + transactions.setContent(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getInfo()); + transactions.setBalance(BigDecimal.ZERO); + transactions.setObjId(goodsorder.getId()); + transactions.setObjType(Constants.ONE); + transactionsMapper.insert(transactions); + //淇敼璁㈠崟淇℃伅 + goodsorderMapper.updateById(update); + } /** * 閫�娆炬垚鍔熷洖璋� */ @@ -541,9 +626,12 @@ } refund.setOnlineOrderid(param.getTransactionId()); doRefundTransactions(refund); - + //閫�娆句箰琛� + int type =Constants.formatIntegerNum(refund.getType()); Goodsorder goodsorder = goodsorderMapper.selectById(refund.getObjId()); - if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getCloseStatus()) != Constants.ZERO){ + closeGoodsorderDoneNoRefund(goodsorder,refund.getType(),refund.getMoney(),refund.getId()); + /* log.error("========================================"+JSONObject.toJSONString(goodsorder)); + if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){ return; } //杩涜璁㈠崟缁撶畻涓氬姟澶勭悊 @@ -563,21 +651,20 @@ memberRidesJoinMapper.updateById(up); } } - BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney())); - //閫�娆句箰琛� - int type =Constants.formatIntegerNum(refund.getType()); + Goodsorder update = new Goodsorder(); update.setId(goodsorder.getId()); update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); update.setCloseMoney(closeMoney); + update.setCloseStatus(Constants.ONE); update.setCloseDate(new Date()); update.setCloseInfo(Constants.REFUND_TYPE.get(refund.getType()).getInfo()); update.setCloseUserId(goodsorder.getEditor()); if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ //濡傛灉鏄己鍒剁粨绠� update.setCloseType(Constants.ONE); - LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); - update.setEditor(principal.getId()); +// LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); +// update.setEditor(principal.getId()); }else if(Constants.REFUND_TYPE.NORMAL.getKey() == type){ //濡傛灉鏄嚜琛岀祼绠� update.setCloseType(Constants.ZERO); @@ -603,7 +690,7 @@ transactions.setObjType(Constants.ONE); transactionsMapper.insert(transactions); //淇敼璁㈠崟淇℃伅 - goodsorderMapper.updateById(update); + goodsorderMapper.updateById(update);*/ } private void doRefundTransactions(Refund refund ) { @@ -999,10 +1086,43 @@ } + @Override + public void autoCancelRefunOrder(){ + Date date = new Date(System.currentTimeMillis()-5*60L*1000L); + List<Refund> list = refundMapper.selectList(new QueryWrapper<Refund>().lambda() + .eq(Refund::getStatus,Constants.ZERO) + .lt(Refund::getCreateDate,date)); + if(list !=null && list.size()>0){ + List<String> cancelIds = new ArrayList<>(); + for(Refund r:list){ + com.wechat.pay.java.service.refund.model.Refund res =wxMiniUtilService.isSuucessRefund(r.getId()); + if(res !=null){ + //濡傛灉閫�娆炬垚鍔� + RefundNotification param = new RefundNotification(); + param.setRefundStatus(Status.SUCCESS); + param.setOutRefundNo(r.getId()); + param.setTransactionId(res.getTransactionId()); + //鎵ц鍏抽棴璁㈠崟涓氬姟 + closeGoodsorderDone(param); + }else{ + //鏀惧叆鍙栨秷闆嗗悎涓� + cancelIds.add(r.getId()); + } + } + if(cancelIds.size()>0){ + refundMapper.update(null, new UpdateWrapper<Refund>().lambda() + .in(Refund::getId,cancelIds) + .set(Refund::getStatus,Constants.ONE) + .set(Refund::getEditDate,new Date()) + .set(Refund::getInfo,"瓒呮椂鏈洖璋冿紝鑷姩鍙栨秷") + ); + } + } + } @Override public void autoCloseOrder( ) { - Goodsorder goodsorder = new Goodsorder(); + Goodsorder goodsorder = new Goodsorder(); goodsorder.setIsdeleted(Constants.ZERO); goodsorder.setStatus(Constants.goodsorderStatus.pay); List<Goodsorder> list = findList(goodsorder); diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index c9419f4..e6471a7 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -2,6 +2,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -25,6 +26,7 @@ import com.doumee.dao.business.web.response.HomeResponse; import com.doumee.dao.business.web.response.UserResponse; import com.doumee.service.business.MemberService; +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -46,6 +48,7 @@ * @date 2023/09/27 18:06 */ @Service +@Slf4j public class MemberServiceImpl implements MemberService { @Autowired @@ -57,6 +60,7 @@ memberMapper.insert(member); return member.getId(); } + @Override public String createManageMember(Member member) { @@ -315,9 +319,11 @@ */ @Override public AccountResponse wxLogin(String code) { + log.error("================================"+code+ JSONObject.toJSONString( WxMiniConfig.wxMaService.getWxMaConfig())); try { //鑾峰彇寰俊鏁忔劅鏁版嵁 WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); + log.error("================================"+ JSONObject.toJSONString(session)); String openId = session.getOpenid(); String unionId = session.getUnionid(); if (StringUtils.isBlank(openId)) { @@ -349,6 +355,7 @@ accountResponse.setUserResponse(userResponse); return accountResponse; } catch (WxErrorException e) { + log.error(e.getMessage()); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�"); } } diff --git a/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java index 628e153..0c322f5 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java @@ -4,6 +4,7 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; +import com.doumee.core.wx.WxMiniUtilService; import com.doumee.dao.business.RefundMapper; import com.doumee.dao.business.TransactionsMapper; import com.doumee.dao.business.join.RefundJoinMapper; @@ -18,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.wechat.pay.java.service.refund.model.RefundNotification; +import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,6 +46,7 @@ private RefundJoinMapper refundJoinMapper; @Autowired private TransactionsMapper transactionsMapper; + @Override public String create(Refund refund) { @@ -123,17 +126,7 @@ } return PageData.from(refundIPage); } - @Override - public void autoCancelRefunOrder(){ - Date date = new Date(System.currentTimeMillis()-5*60L*1000L); - refundMapper.update(null, new UpdateWrapper<Refund>().lambda() - .eq(Refund::getStatus,Constants.ZERO) - .lt(Refund::getCreateDate,date) - .set(Refund::getStatus,Constants.ONE) - .set(Refund::getEditDate,new Date()) - .set(Refund::getInfo,"瓒呮椂鏈洖璋冿紝鑷姩鍙栨秷") - ); - } + @Override public List<RefundPlatExportVO> findPlatExportPage( Refund pageWrap) { pageWrap.setTypeList(new ArrayList<>()); diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml index 980bff6..77fa08a 100644 --- a/server/services/src/main/resources/application-dev.yml +++ b/server/services/src/main/resources/application-dev.yml @@ -43,6 +43,7 @@ ########################寰俊鏀粯鐩稿叧閰嶇疆######################## wx: pay: + #鏈嶅姟鍟�---------start------- appId: wx48fd8faa35cc8277 mchId: 1661770902 apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT @@ -53,12 +54,15 @@ keyPath: D://apiclient_cert.p12 privateCertPath: D://apiclient_cert.pem privateKeyPath: D://apiclient_key.pem + #鏈嶅姟鍟�-------------end--- existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 + #瀛愬晢鎴�------------start---- subAppId: wxcd2b89fd2ff065f8 - subAppSecret: 49c4a52f9ad87ba98307972664fe33b3 + subAppSecret: 3336812504c830b1c3c5243f9ece407a subMchId: 1661772003 subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS + #瀛愬晢鎴�------------end---- # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM typeId: gybike ########################mqtt鐩稿叧閰嶇疆######################## diff --git a/server/services/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml index c92867d..5132499 100644 --- a/server/services/src/main/resources/application-pro.yml +++ b/server/services/src/main/resources/application-pro.yml @@ -1,6 +1,3 @@ -# WEB鏈嶅姟鍣ㄩ厤缃� -server: - port: 10012 spring: # 鏁版嵁婧愰厤缃� @@ -42,16 +39,32 @@ # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧� redirect-uri: / - ########################寰俊鏀粯鐩稿叧閰嶇疆######################## wx: pay: - appId: wxcd2b89fd2ff065f8 + #鏈嶅姟鍟�---------start------- + appId: wx48fd8faa35cc8277 + mchId: 1661770902 + apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT + serialNumer: 368B835A194384FD583B83B77977B84127D2F655 + notifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/wxPayNotify + refundNotifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/wxRefundNotify + # notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify + keyPath: /usr/local/parks/cert/apiclient_cert.p12 + privateCertPath: /usr/local/parks/cert/apiclient_cert.pem + privateKeyPath: /usr/local/parks/cert/apiclient_key.pem + #鏈嶅姟鍟�-------------end--- + existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 - mchId: 1229817002 - mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM - notifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/api/wxPayNotify - keyPath: /usr/local/apiclient_cert.p12 + #瀛愬晢鎴�------------start---- + subAppId: wxf493d72d7e5ffe76 + subAppSecret: a347bce54fd2f77a5272cc32b51264b0 + subMchId: 1662894737 + subMchKey: twTtOZJ28eqEvyMkv0WTJmhpgqaM9mmT + #瀛愬晢鎴�------------end---- + # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM + typeId: gybike + ########################mqtt鐩稿叧閰嶇疆######################## mqtt: host: tcp://39.100.125.239:1883 diff --git a/server/services/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml index cf74de8..6aeafde 100644 --- a/server/services/src/main/resources/application-test.yml +++ b/server/services/src/main/resources/application-test.yml @@ -49,13 +49,14 @@ serialNumer: 368B835A194384FD583B83B77977B84127D2F655 notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify +# refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/api/wxRefundNotify keyPath: /usr/local/apiclient_cert.p12 privateCertPath: /usr/local/apiclient_cert.pem privateKeyPath: /usr/local/apiclient_key.pem existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 subAppId: wxcd2b89fd2ff065f8 - subAppSecret: 49c4a52f9ad87ba98307972664fe33b3 + subAppSecret: 3336812504c830b1c3c5243f9ece407a subMchId: 1661772003 subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS typeId: gybike diff --git a/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java index 3358405..1c3de12 100644 --- a/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java +++ b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java @@ -13,6 +13,8 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import com.wechat.pay.java.service.refund.model.RefundNotification; import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.mgt.DefaultSecurityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; @@ -109,7 +111,10 @@ } @PostMapping("/api/wxRefundNotify") public ApiResponse wxRefundNotify(HttpServletRequest request) { + log.error("寰俊閫�娆惧洖璋冪粨鏋滃紑濮�===========" ); try { + DefaultSecurityManager securityManager = new DefaultSecurityManager(); + SecurityUtils.setSecurityManager(securityManager); ServletInputStream inputStream = request.getInputStream(); StringBuffer stringBuffer = new StringBuffer(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); diff --git a/server/web/src/main/resources/application.yml b/server/web/src/main/resources/application.yml index ea1f0e8..8d85f9d 100644 --- a/server/web/src/main/resources/application.yml +++ b/server/web/src/main/resources/application.yml @@ -9,7 +9,7 @@ # application: # name: parkbike profiles: - active: test + active: pro # JSON杩斿洖閰嶇疆 jackson: # 榛樿鏃跺尯 -- Gitblit v1.9.3