From b1c1c20ef382dd2be0f6bdf81f5d2913e749faef Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 12 十月 2023 11:12:02 +0800
Subject: [PATCH] 整理接口
---
server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java | 8
server/platform/src/main/java/com/doumee/task/ScheduleTool.java | 19 -
server/services/src/main/java/com/doumee/core/constants/Constants.java | 70 ++++++++
server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java | 5
server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java | 2
server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java | 3
server/services/src/main/java/com/doumee/service/business/GoodsorderService.java | 6
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 335 +++++++++++++++++------------------------
server/services/src/main/java/com/doumee/dao/business/join/MemberRidesJoinMapper.java | 7
9 files changed, 233 insertions(+), 222 deletions(-)
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
index 77aa567..a74c621 100644
--- a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -3,6 +3,7 @@
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.Constants;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
@@ -127,7 +128,7 @@
@PostMapping("/closerGoodsorder")
@RequiresPermissions("business:goodsorder:query")
public ApiResponse closerGoodsorder(@RequestParam String id){
- goodsorderService.closerGoodsorder(id);
+ goodsorderService.forceCloseGoodsorder(id);
return ApiResponse.success(null);
}
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 fe11644..71b740e 100644
--- a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -3,10 +3,12 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.service.business.GoodsorderService;
import com.doumee.service.business.WxBillService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@@ -24,6 +26,7 @@
*/
@Component
@EnableScheduling
+@Slf4j
public class ScheduleTool {
@@ -50,19 +53,11 @@
* 娓│
* @throws Exception
*/
-// @Scheduled(fixedDelay = 1000*60)
+ @Scheduled(cron = "0 0 21 * * ? ")
public void getYesterdayBill() throws Exception {
-
- Goodsorder goodsorder = new Goodsorder();
- goodsorder.setIsdeleted(Constants.ZERO);
- goodsorder.setStatus(Constants.goodsorderStatus.pay);
- List<Goodsorder> list = goodsorderService.findList(goodsorder);
- if (!CollectionUtils.isEmpty(list)){
- list.forEach(s->{
- goodsorderService.closerGoodsorder(s.getId());
- });
-
- }
+ log.info("=====================寮�濮嬫瘡澶╄嚜鍔ㄧ粨绠�=======================");
+ goodsorderService.autoCloseOrder();
+ log.info("=====================缁撴潫姣忓ぉ鑷姩缁撶畻=======================");
}
}
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index ce5bfa8..fceeb10 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -25,6 +25,7 @@
public static final String SYSTEM ="SYSTEM" ;
public static final String DINGDING ="DINGDING" ;
public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ;
+ public static final String FREE_RENT_TIME ="FREE_RENT_TIME" ;
public static final String IMG_DIR = "IMG_DIR";
public static final String FILE_DIR ="FILE_DIR" ;
public static final String PRIVATE_KEY = "PRIVATE_KEY";
@@ -57,13 +58,63 @@
int waitPay =0;
int pay =1;
}
- public interface transactionsType{
- int deposit =0;
- int consumption =1;
+ public enum TRANSACTIONS_TYPE{
+ //浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆�"
+ DEPOSIT(0,"绉熻溅鎶奸噾", "绉熻溅鎶奸噾"),
- int refund =2;
- int platformRefund = 3;
+ CONSUMPTION(1,"缁撶畻瀹為檯娑堣垂", "缁撶畻瀹為檯娑堣垂"),
+
+ REFUND(2,"缁撶畻閫�娆�", "缁撶畻閫�娆�"),
+
+ PLATFORMREFUND(3,"骞冲彴閫�娆�", "骞冲彴閫�娆�")
+
+ ;
+ String name;
+
+ Integer key;
+
+ String info;
+
+ TRANSACTIONS_TYPE(Integer key, String name, String info) {
+ this.name = name;
+ this.key = key;
+ this.info = info;
+ }
+ public static TRANSACTIONS_TYPE get(int key) {
+ TRANSACTIONS_TYPE[] values = TRANSACTIONS_TYPE.values();
+ for (TRANSACTIONS_TYPE object : values) {
+ if (object.key == key) {
+ return object;
+ }
+ }
+ return null;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getKey() {
+ return key;
+ }
+
+ public void setKey(Integer key) {
+ this.key = key;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
}
+
public static String getUUID(){
return UUID.randomUUID().toString().replace("-","");
@@ -270,6 +321,15 @@
this.info = info;
}
+ public static REFUND_TYPE get(int key) {
+ REFUND_TYPE[] values = REFUND_TYPE.values();
+ for (REFUND_TYPE object : values) {
+ if (object.key == key) {
+ return object;
+ }
+ }
+ return null;
+ }
public String getName() {
return name;
}
diff --git a/server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java b/server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java
index 452ad7c..aae9670 100644
--- a/server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java
+++ b/server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java
@@ -20,13 +20,14 @@
//鎺ユ敹娑堟伅鍥炶皟
@Override
public void connectionLost(Throwable cause) {
+
+ // 杩炴帴涓㈠け鍚庯紝涓�鑸湪杩欓噷闈㈣繘琛岄噸杩�
+ System.out.println("杩炴帴鏂紑锛岄噸杩炰腑");
try {
MqttClientInit.refreshClient();
} catch (MqttException e) {
throw new RuntimeException(e);
}
- // 杩炴帴涓㈠け鍚庯紝涓�鑸湪杩欓噷闈㈣繘琛岄噸杩�
- System.out.println("杩炴帴鏂紑锛屽彲浠ュ仛閲嶈繛");
}
@Override
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 c8cbce4..e472eb2 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
@@ -52,6 +52,7 @@
if ("SUCCESS".equals(response.getReturnCode()) && "SUCCESS".equals(response.getResultCode())) {
//瀛樺偍閫�娆捐褰� 涓� 娴佹按璁板綍
Refund refund = new Refund();
+ refund.setId(Constants.getUUID());
refund.setCreateDate(new Date());
refund.setMemberId(refundDTO.getMemberId());
refund.setMoney(refundDTO.getRefundAmount());
@@ -65,17 +66,18 @@
refundMapper.insert(refund);
//瀛樺偍浜ゆ槗娴佹按琛�
Transactions transactions = new Transactions();
+ transactions.setId(Constants.getUUID());
transactions.setMemberId(refundDTO.getMemberId());
transactions.setCreateDate(new Date());
transactions.setIsdeleted(Constants.ZERO);
transactions.setOrderId(refundDTO.getOrderId());
transactions.setMoney(refundDTO.getRefundAmount());
- transactions.setType(refundDTO.getType()==Constants.transactionsType.refund?Constants.transactionsType.platformRefund:Constants.transactionsType.refund);
+ transactions.setType(refundDTO.getType()==Constants.TRANSACTIONS_TYPE.REFUND.getKey()?Constants.TRANSACTIONS_TYPE.PLATFORMREFUND.getKey():Constants.REFUND_TYPE.BACK.getKey());
transactions.setPreOrderid(refundDTO.getOrderId());
transactions.setOnlineOrderid(refNum);
transactions.setDoneDate(new Date());
- transactions.setTitle("閫�娆�");
- transactions.setContent(refundDTO.getType()==Constants.transactionsType.refund?"骞冲彴閫�娆�":"缁撶畻閫�娆�");
+ transactions.setTitle(Constants.TRANSACTIONS_TYPE.get(transactions.getType()).getName());
+ transactions.setContent(Constants.TRANSACTIONS_TYPE.get(transactions.getType()).getInfo());
transactions.setBalance(BigDecimal.ZERO);
transactions.setObjId(refund.getId());
transactions.setObjType(Constants.ONE);
diff --git a/server/services/src/main/java/com/doumee/dao/business/join/MemberRidesJoinMapper.java b/server/services/src/main/java/com/doumee/dao/business/join/MemberRidesJoinMapper.java
index 8837a7e..5b585bf 100644
--- a/server/services/src/main/java/com/doumee/dao/business/join/MemberRidesJoinMapper.java
+++ b/server/services/src/main/java/com/doumee/dao/business/join/MemberRidesJoinMapper.java
@@ -1,12 +1,13 @@
package com.doumee.dao.business.join;
+import com.doumee.dao.business.model.ActionLog;
import com.doumee.dao.business.model.MemberRides;
import com.github.yulichang.base.mapper.MPJJoinMapper;
-import org.springframework.stereotype.Repository;
/**
- * @author T14
+ * @author 姹熻箘韫�
+ * @date 2023/09/27 18:06
*/
-@Repository
public interface MemberRidesJoinMapper extends MPJJoinMapper<MemberRides> {
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 2727a63..7591719 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -102,7 +102,7 @@
@ApiModelProperty(value = "缁撶畻鎿嶄綔浜虹紪鐮侊紙鍏宠仈system_user)")
private String closeUserId;
- @ApiModelProperty(value = "缁撶畻绫诲瀷 0鑷姩缁撶畻 1骞冲彴浜哄伐缁撶畻 2绯荤粺鑷姩缁撶畻")
+ @ApiModelProperty(value = "缁撶畻绫诲瀷 0鐢ㄦ埛鑷缁撶畻 1骞冲彴浜哄伐寮哄埗缁撶畻 2绯荤粺鑷姩缁撶畻")
private Integer closeType;
@ApiModelProperty(value = "鐢ㄦ埛openid" )
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 3906278..96bceda 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
@@ -144,8 +144,8 @@
* @param id
* @return
*/
- void closerGoodsorder(String id);
-
+ void closeGoodsorder(Goodsorder order,int type );
+ void forceCloseGoodsorder(String orderId);
/**
* 閫�娆�
@@ -184,4 +184,6 @@
List<GoodsorderExportVO> findExportAccountDetailPage(Goodsorder model);
void goodsOrderSettlement(String orderId);
+
+ void autoCloseOrder();
}
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 74bd926..72449ee 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
@@ -74,8 +74,6 @@
@Autowired
private SystemDictDataBiz systemDictDataBiz;
- @Autowired
- private MemberRidesMapper memberRidesMapper;
@Autowired
private MemberMapper memberMapper;
@@ -259,7 +257,7 @@
homeResponse.setRideStatus(-1);
if(homeResponse.getDepositStatus()==Constants.goodsorderStatus.pay) {
//鏌ヨ褰撳墠楠戣鐘舵��
- MemberRides memberRides = memberRidesMapper.selectOne(new QueryWrapper<MemberRides>().eq("member_id", memberId)
+ MemberRides memberRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().eq("member_id", memberId)
.orderByDesc(" create_date ")
.last(" limit 1 "));
if (!Objects.isNull(memberRides)) {
@@ -327,141 +325,134 @@
goodsorderDetailDTO.setModel(goodsorder);//璁㈠崟瀵硅薄
return goodsorderDetailDTO;
}
-
+ @Override
+ public void forceCloseGoodsorder(String orderId) {
+ //鏌ヨ璁㈠崟 淇℃伅
+// int freeTime = 0;
+// try {
+// freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
+// }catch (Exception e){
+//
+// }
+ if(StringUtils.isBlank(orderId)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST );
+ }
+ Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
+ if(goodsorder == null ){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY );
+ }
+ if(Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey() ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ鍗曞綋鍓嶇姸鎬佷笉鏀寔缁撶畻鎿嶄綔锛岃灏濊瘯鍒锋柊鍒楄〃閲嶈瘯锛�" );
+ }
+ //璁㈠崟缁撶畻
+ Date date = new Date();
+ goodsorder.setEditDate(date);
+ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ goodsorder.setEditor(user.getId());
+ closeGoodsorder( goodsorder,Constants.REFUND_TYPE.PLAT_FORCE.getKey());
+ }
@Transactional(rollbackFor = {Exception.class,BusinessException.class})
@Override
- public void closerGoodsorder(String orderId) {
+ public void closeGoodsorder( Goodsorder goodsorder ,int type ) {
-
- LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
- QueryWrapper<MemberRides> wrapper = new QueryWrapper<>();
- wrapper.lambda()
- .eq(MemberRides::getOrdreId,orderId);
- List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper);
+ MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
+ wrapper.eq(MemberRides::getOrdreId,goodsorder.getId());
+ wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
+ wrapper.orderByDesc(BaseParam::getSortnum);//鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗�
+ //鏌ヨ鎵�鏈夐獞琛岃褰�
+ List<MemberRides> memberRides = memberRidesJoinMapper.selectList(wrapper);
+ //榛樿缁撶畻涓烘娂閲戦噾棰�
+ BigDecimal closeMoney = new BigDecimal(0.00);
if (!CollectionUtils.isEmpty(memberRides)){
- boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus()));
- if (exitUnBack){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+ //楠戣鎬绘椂闀�
+ int durationSum = 0;
+ for(MemberRides rides : memberRides){
+ if ( Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+ }
+ durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
}
-
- PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides);
- RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
- List<MemberRidesResponse> collect = memberRides.stream().map(s -> {
- MemberRidesResponse memberRidesResponse = new MemberRidesResponse();
- memberRidesResponse.setRideStartTime(s.getRentDate());
- memberRidesResponse.setRideEndTime(s.getBackDate());
- memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime()));
- memberRidesResponse.setDuration(s.getDuration());
- memberRidesResponse.setBikeType(s.getParamName());
- memberRidesResponse.setBikeCode(s.getBikeCode());
- memberRidesResponse.setBasePrice(s.getBasePrice());
- memberRidesResponse.setBaseTime(s.getBaseTime());
- memberRidesResponse.setUnitPrice(s.getUnitTime());
- memberRidesResponse.setUnitTime(s.getUnitTime());
- return memberRidesResponse;
- }).collect(Collectors.toList());
-
- Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum();
- if (durationSum > pricingRule.getMemberRides().getBaseTime()){
- BigDecimal bigDecimal = new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime()));
- BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice();
- BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice()
- .multiply(bigDecimal.divide(pricingRule.getMemberRides().getUnitPrice(),BigDecimal.ROUND_UP));
- ridesDetailResponse.setAmount(basePrice.add(multiply));
- }else {
- ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice());
+ //鍙栨渶楂樿溅鍨嬭绠楁柟妗堢粨绠楄鍗�
+ MemberRides topRides = memberRides.get(0);
+ if(durationSum > 0){
+ int baseTime =Constants.formatIntegerNum(topRides.getBaseTime());
+ closeMoney = Constants.formatDecimalNum(topRides.getBasePrice());
+ //濡傛灉鏄竴鍙d环鏂瑰紡锛屼环鏍肩洿鎺ヤ负涓�鍙d环baseMoney,濡傛灉涓嶆槸璁$畻姝e父浠锋牸
+ if(baseTime != -1){//涓嶆槸涓�鍙d环
+ if(durationSum > baseTime && Constants.formatIntegerNum(topRides.getUnitTime())>0){
+ //濡傛灉瓒呭嚭浜嗚捣姝ヤ环鏍硷紝璁$畻瓒呭嚭浠锋牸
+ BigDecimal unit = new BigDecimal(durationSum-baseTime).divide(new BigDecimal(topRides.getUnitTime()), 0, BigDecimal.ROUND_UP);
+ //璁$畻閲戦绱瓒呭嚭閮ㄩ棬浠锋牸锛堣秴鍑烘椂闂村崟浣�*瓒呭嚭鍗曚綅鏃堕棿浠锋牸锛�
+ closeMoney = closeMoney.add(unit.multiply(Constants.formatDecimalNum(topRides.getUnitPrice())));
+ }
+ }
}
- ridesDetailResponse.setBikeType(pricingRule.getBikeType());
- ridesDetailResponse.setDuration(durationSum);
- ridesDetailResponse.setMemberRidesResponseList(collect);
-
- if(goodsorder.getMoney().compareTo(ridesDetailResponse.getAmount())>Constants.ZERO){
-
- RefundDTO refundDTO = new RefundDTO();
- refundDTO.setOrderId(orderId);
- refundDTO.setCanBalance(goodsorder.getMoney());
- refundDTO.setRefundAmount(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount()));
- refundDTO.setTotalAmount(goodsorder.getMoney());
- refundDTO.setMemberId(goodsorder.getMemberId());
- refundDTO.setReason("骞冲彴寮哄埗缁撶畻閫�娆�");
- refundDTO.setType(Constants.REFUND_TYPE.PLAT_AUTO.getKey());
- Refund refund = wxMiniUtilService.wxRefund(refundDTO);
-
- //瀛樺偍 娑堣垂浜ゆ槗娴佹按
- Transactions transactions = new Transactions();
- transactions.setMemberId(goodsorder.getMemberId());
- transactions.setCreateDate(new Date());
- transactions.setIsdeleted(Constants.ZERO);
- transactions.setOrderId(orderId);
- transactions.setMoney(goodsorder.getMoney().compareTo(ridesDetailResponse.getAmount())<=Constants.ZERO?goodsorder.getMoney():ridesDetailResponse.getAmount());
- transactions.setType(Constants.transactionsType.consumption);
- transactions.setDoneDate(new Date());
- transactions.setTitle("娑堣垂缁撶畻");
- transactions.setContent("缁撶畻瀹為檯娑堣垂");
- transactions.setBalance(BigDecimal.ZERO);
- transactions.setObjId(orderId);
- transactions.setObjType(Constants.ONE);
- transactionsMapper.insert(transactions);
-
- Goodsorder update = new Goodsorder();
- update.setId(goodsorder.getId());
- update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
- update.setCloseMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount()));
- update.setCloseId(refund.getId());
- update.setCloseDate(refund.getDoneDate());
- update.setCloseInfo(refund.getInfo());
- update.setCloseUserId(principal.getId());
- update.setCloseType(Constants.ONE);
- goodsorderMapper.updateById(update);
+ //瀹為檯缁撶畻浠锋牸锛岃褰曞湪鏈�楂樿溅鍨嬭褰曚笂
+ topRides.setActualPrice(closeMoney);
+ 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);
}
- }else {
-
+ }
+ Goodsorder update = new Goodsorder();
+ update.setId(goodsorder.getId());
+ update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
+ update.setCloseMoney(goodsorder.getMoney());
+ update.setCloseDate(goodsorder.getEndDate());
+ update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo());
+ update.setCloseUserId(goodsorder.getEditor());
+ if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){
+ //濡傛灉鏄己鍒剁粨绠�
+ update.setCloseType(Constants.ONE);
+ }else if(Constants.REFUND_TYPE.NORMAL.getKey() == type){
+ //濡傛灉鏄嚜琛岀祼绠�
+ update.setCloseType(Constants.ZERO);
+ }else{
+ //濡傛灉鏄钩鍙拌嚜鍔ㄧ粨绠�
+ update.setCloseType(Constants.TWO);
+ }
+ int refundMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(closeMoney)).intValue();//璁$畻浠锋牸
+ if(refundMoney > 0){
+ //濡傛灉鏈夐��娆撅紝鐢宠寰俊閫�娆撅紝璁板綍閫�娆句氦鏄撴祦姘�
RefundDTO refundDTO = new RefundDTO();
- refundDTO.setOrderId(orderId);
+ refundDTO.setOrderId(goodsorder.getId());
refundDTO.setCanBalance(goodsorder.getMoney());
- refundDTO.setRefundAmount(goodsorder.getMoney());
+ refundDTO.setRefundAmount(new BigDecimal(refundMoney));
refundDTO.setTotalAmount(goodsorder.getMoney());
refundDTO.setMemberId(goodsorder.getMemberId());
- refundDTO.setReason("骞冲彴寮哄埗缁撶畻閫�娆�");
- refundDTO.setType(Constants.REFUND_TYPE.PLAT_FORCE.getKey());
+ refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName());
+ refundDTO.setType(type);
Refund refund = wxMiniUtilService.wxRefund(refundDTO);
-
+ update.setCloseId(refund.getId());
//瀛樺偍 娑堣垂浜ゆ槗娴佹按
Transactions transactions = new Transactions();
+ transactions.setId(Constants.getUUID());
transactions.setMemberId(goodsorder.getMemberId());
transactions.setCreateDate(new Date());
transactions.setIsdeleted(Constants.ZERO);
- transactions.setOrderId(orderId);
+ transactions.setOrderId(goodsorder.getId());
transactions.setMoney(goodsorder.getMoney());
- transactions.setType(Constants.transactionsType.consumption);
+ transactions.setType(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getKey());
transactions.setDoneDate(new Date());
- transactions.setTitle("娑堣垂缁撶畻");
- transactions.setContent("缁撶畻瀹為檯娑堣垂");
+ transactions.setTitle(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getName());
+ transactions.setContent(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getInfo());
transactions.setBalance(BigDecimal.ZERO);
- transactions.setObjId(orderId);
+ transactions.setObjId(goodsorder.getId());
transactions.setObjType(Constants.ONE);
transactionsMapper.insert(transactions);
-
- Goodsorder update = new Goodsorder();
- update.setId(goodsorder.getId());
- update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
- update.setCloseMoney(goodsorder.getMoney());
- update.setCloseId(refund.getId());
- update.setCloseDate(refund.getDoneDate());
- update.setCloseInfo(refund.getInfo());
- update.setCloseUserId(principal.getId());
- update.setCloseType(Constants.ONE);
- goodsorderMapper.updateById(update);
-
}
-
-
+ //淇敼璁㈠崟淇℃伅
+ goodsorderMapper.updateById(update);
}
-
@Override
public void backGoodsorder(String orderId, BigDecimal money,String reason) {
-
LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
QueryWrapper<Refund> wrapper = new QueryWrapper<>();
@@ -570,7 +561,7 @@
QueryWrapper<MemberRides> wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(MemberRides::getOrdreId,id);
- List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper);
+ List<MemberRides> memberRides = memberRidesJoinMapper.selectList(wrapper);
if (!CollectionUtils.isEmpty(memberRides)){
PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides);
RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
@@ -688,86 +679,44 @@
@Override
- @Transactional(rollbackFor = {Exception.class,BusinessException.class})
- public void goodsOrderSettlement(String orderId) {
- Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
- QueryWrapper<MemberRides> wrapper = new QueryWrapper<>();
- wrapper.lambda().eq(MemberRides::getOrdreId,orderId);
- List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper);
- if (!CollectionUtils.isEmpty(memberRides)){
- boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus()));
- if (exitUnBack){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
- }
- PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides);
- RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
- List<MemberRidesResponse> collect = memberRides.stream().map(s -> {
- MemberRidesResponse memberRidesResponse = new MemberRidesResponse();
- memberRidesResponse.setRideStartTime(s.getRentDate());
- memberRidesResponse.setRideEndTime(s.getBackDate());
- memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime()));
- memberRidesResponse.setDuration(s.getDuration());
- memberRidesResponse.setBikeType(s.getParamName());
- memberRidesResponse.setBikeCode(s.getBikeCode());
- memberRidesResponse.setBasePrice(s.getBasePrice());
- memberRidesResponse.setBaseTime(s.getBaseTime());
- memberRidesResponse.setUnitPrice(s.getUnitTime());
- memberRidesResponse.setUnitTime(s.getUnitTime());
- return memberRidesResponse;
- }).collect(Collectors.toList());
+ public void autoCloseOrder( ) {
+ Goodsorder goodsorder = new Goodsorder();
+ goodsorder.setIsdeleted(Constants.ZERO);
+ goodsorder.setStatus(Constants.goodsorderStatus.pay);
+ List<Goodsorder> list = findList(goodsorder);
+ if (!CollectionUtils.isEmpty(list)){
+ Date date = new Date();
+ list.forEach(s->{
+ try {
+ goodsorder.setEditDate(date);
+ goodsorder.setEditor(null);
+ closeGoodsorder(s,Constants.REFUND_TYPE.PLAT_AUTO.getKey());
+ }catch (BusinessException e){
- Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum();
- if (durationSum > pricingRule.getMemberRides().getBaseTime()){
- BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice();
- BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice().multiply(new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime())).divide(new BigDecimal(pricingRule.getMemberRides().getUnitTime())).setScale(0,BigDecimal.ROUND_CEILING));
- ridesDetailResponse.setAmount(basePrice.add(multiply));
- }else {
- ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice());
- }
- ridesDetailResponse.setBikeType(pricingRule.getBikeType());
- ridesDetailResponse.setDuration(durationSum);
- ridesDetailResponse.setMemberRidesResponseList(collect);
- Refund refund = new Refund();
+ }catch (Exception e){
- //鑻ユ秷璐归噾棰� 澶т簬 璁㈠崟鎶奸噾锛屽垯涓嶈繘琛岄��娆句笟鍔�
- if(goodsorder.getMoney().compareTo(ridesDetailResponse.getAmount())>Constants.ZERO){
- RefundDTO refundDTO = new RefundDTO();
- refundDTO.setOrderId(orderId);
- refundDTO.setCanBalance(goodsorder.getMoney());
- refundDTO.setRefundAmount(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount()));
- refundDTO.setTotalAmount(goodsorder.getMoney());
- refundDTO.setMemberId(goodsorder.getMemberId());
- refundDTO.setReason("鐢ㄦ埛涓诲姩閫�娆�");
- refundDTO.setType(Constants.REFUND_TYPE.NORMAL.getKey());
- refund = wxMiniUtilService.wxRefund(refundDTO);
- }
-
- //瀛樺偍 娑堣垂 浜ゆ槗娴佹按
- Transactions transactions = new Transactions();
- transactions.setMemberId(goodsorder.getMemberId());
- transactions.setCreateDate(new Date());
- transactions.setIsdeleted(Constants.ZERO);
- transactions.setOrderId(orderId);
- transactions.setMoney(goodsorder.getMoney().compareTo(ridesDetailResponse.getAmount())<=Constants.ZERO?goodsorder.getMoney():ridesDetailResponse.getAmount());
- transactions.setType(Constants.transactionsType.consumption);
- transactions.setDoneDate(new Date());
- transactions.setTitle("娑堣垂缁撶畻");
- transactions.setContent("缁撶畻瀹為檯娑堣垂");
- transactions.setBalance(BigDecimal.ZERO);
- transactions.setObjId(orderId);
- transactions.setObjType(Constants.ONE);
- transactionsMapper.insert(transactions);
-
- Goodsorder update = new Goodsorder();
- update.setId(goodsorder.getId());
- update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
- update.setCloseMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount()));
- update.setCloseId(!Objects.isNull(refund)?refund.getId():null);
- update.setCloseDate(!Objects.isNull(refund)?refund.getDoneDate():null);
- update.setCloseInfo(!Objects.isNull(refund)?refund.getInfo():null);
- update.setCloseType(Constants.ONE);
- goodsorderMapper.updateById(update);
+ }
+ });
}
+
+ }
+ @Override
+ public void goodsOrderSettlement(String orderId) {
+ if(StringUtils.isBlank(orderId)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST );
+ }
+ Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
+ if(goodsorder == null ){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY );
+ }
+ if(Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey() ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ鍗曞綋鍓嶇姸鎬佷笉鏀寔缁撶畻鎿嶄綔锛岃灏濊瘯鍒锋柊鍒楄〃閲嶈瘯锛�" );
+ }
+ //璁㈠崟缁撶畻
+ Date date = new Date();
+ goodsorder.setEditDate(date);
+ goodsorder.setEditor(null);
+ closeGoodsorder( goodsorder,Constants.REFUND_TYPE.NORMAL.getKey());
}
@@ -790,12 +739,12 @@
transactions.setIsdeleted(Constants.ZERO);
transactions.setOrderId(goodsorder.getId());
transactions.setMoney(goodsorder.getMoney());
- transactions.setType(Constants.transactionsType.deposit);
+ transactions.setType(Constants.TRANSACTIONS_TYPE.DEPOSIT.getKey());
transactions.setPreOrderid(goodsorder.getPreOrderid());
transactions.setOnlineOrderid(goodsorder.getOnlineOrderid());
transactions.setDoneDate(new Date());
- transactions.setTitle("鏀粯");
- transactions.setContent("鎶奸噾鏀粯");
+ transactions.setTitle(Constants.TRANSACTIONS_TYPE.DEPOSIT.getName());
+ transactions.setContent(Constants.TRANSACTIONS_TYPE.DEPOSIT.getInfo());
transactions.setBalance(goodsorder.getMoney());
transactions.setObjId(goodsorder.getId());
transactions.setObjType(Constants.ZERO);
--
Gitblit v1.9.3