From 9d9e3e3f45406bb1a08981b159b50deb0d102e57 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 20 十二月 2023 10:58:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devPartner' into devPartner
---
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 176 insertions(+), 54 deletions(-)
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..eeef052 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;
@@ -246,6 +247,7 @@
List<GoodsorderExportVO> goodsorderList = null;
if(Constants.formatIntegerNum(model.getType())==Constants.ZERO){
MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(model);
+ queryWrapper.orderByAsc(Goodsorder::getPayDate);
goodsorderList = goodsorderJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper);
}else{
@@ -269,7 +271,7 @@
queryWrapper.le( Refund::getDoneDate, Utils.Date.getEnd(model.getEndDate()));
}
queryWrapper.eq(Refund::getStatus,Constants.TWO);//閫�娆惧畬鎴�
- queryWrapper.orderByAsc(Refund::getDoneDate);
+ queryWrapper.orderByAsc(Refund::getDoneDate);;
goodsorderList = refundJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper);
}
if (!CollectionUtils.isEmpty(goodsorderList)){
@@ -305,7 +307,7 @@
queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid());
queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE);
- queryWrapper.orderByDesc(Goodsorder::getPayDate);
+
return queryWrapper;
}
@@ -314,6 +316,7 @@
public PageData<Goodsorder> findPage(PageWrap<Goodsorder> pageWrap) {
IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel());
+ queryWrapper.orderByDesc(Goodsorder::getPayDate);
queryWrapper.select("(select er.status from member_rides er where er.ordre_id=t.id order by er.create_date desc limit 1) as memberRidesStatus");
if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ZERO)){
queryWrapper.ne(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey());
@@ -373,41 +376,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 +521,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 +628,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 +653,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 +692,7 @@
transactions.setObjType(Constants.ONE);
transactionsMapper.insert(transactions);
//淇敼璁㈠崟淇℃伅
- goodsorderMapper.updateById(update);
+ goodsorderMapper.updateById(update);*/
}
private void doRefundTransactions(Refund refund ) {
@@ -999,10 +1088,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);
--
Gitblit v1.9.3