From 4c8535b9f263a3b398832b7a588abbdd5ebe38f4 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 29 六月 2026 13:51:50 +0800
Subject: [PATCH] 功能开发

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |   81 +++++++++++++++++++++++++++++++++-------
 1 files changed, 67 insertions(+), 14 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index 9967282..e6eecdd 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -9,6 +9,7 @@
 import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.core.track.RideActiveCache;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -35,6 +36,7 @@
 import com.doumee.service.business.MemberRidesService;
 import com.doumee.service.system.SystemDictDataService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -55,6 +57,7 @@
  * @author 姹熻箘韫�
  * @date 2023/09/27 18:06
  */
+@Slf4j
 @Service
 public class MemberRidesServiceImpl implements MemberRidesService {
 
@@ -93,6 +96,9 @@
 
     @Autowired
     private SystemDictDataMapper systemDictDataMapper;
+    /** 鐢佃溅娲昏穬璁㈠崟缂撳瓨(platform 鍚庡彴寮哄埗杩樿溅鏃跺垹) */
+    @Autowired
+    private RideActiveCache rideActiveCache;
 
     @Override
     public String create(MemberRides memberRides) {
@@ -398,7 +404,7 @@
             }
         }else{
             //濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
-            bike =   sendCloseElecBikeRequest(memberRides.getBikeCode(),Constants.ONE);
+            bike  = sendCloseElecBikeRequest(model.getOrdreId(),memberRides.getBikeCode());
         }
         logInfo = bike!=null?bike.getForceBackInfo():null;
         Integer freeRentTime = Integer.valueOf(collect.get(Constants.FREE_RENT_TIME).getCode());
@@ -407,6 +413,12 @@
         update.setDuration( rideTime > freeRentTime  ? rideTime : 0 );
         //update.setDuration( freeRentTime > 0 ? rideTime - freeRentTime : rideTime);
         memberRidesMapper.updateById(update);
+        // 寮哄埗杩樿溅鈫掑凡杩樿溅:鍒犻櫎娲昏穬璁㈠崟缂撳瓨(鐢佃溅鎵嶆湁杞ㄨ抗;鑷杞� key 涓嶅瓨鍦�,鍒犻櫎涓� no-op 鏃犲)
+        try {
+            rideActiveCache.remove(model.getBikeCode());
+        } catch (Exception e) {
+            log.warn("鍒犻櫎娲昏穬璁㈠崟缂撳瓨澶辫触 bikeCode={}", model.getBikeCode(), e);
+        }
         //淇敼鍓�
         String beforeContent = JSONObject.toJSONString(model);
         //淇敼鍚�
@@ -438,7 +450,7 @@
     /**
      *  濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
      */
-    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+    private Bikes sendCloseElecBikeRequest(String goodOrderId,String bikeCode) {
         Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
                 .eq(Bikes::getType,Constants.ONE)
                 .eq(Bikes::getIsdeleted,Constants.ZERO)
@@ -448,30 +460,62 @@
             return null;
         }
         bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
-        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+        if(StringUtils.isNotBlank(bike.getDeviceSn())) {
             try {
                 //璇锋眰鍦板潃
-                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
                 JSONObject param = new JSONObject();
-                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
-                param.put("type",type);//0寮�閿� 1鍏抽攣
-                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+                param.put("id", goodOrderId);
+                String res = HttpsUtil.postJsonString(url, param.toJSONString());
                 JSONObject json = JSONObject.parseObject(res);
-                if(json.get("code").equals("200")){
+                if (json.get("code").equals("200")) {
                     //鍙戣捣鎸囦护鎴愬姛
                     bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
-                }else{
-                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+                } else {
+                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�" + json.get("msg"));
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }else{
             bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
         }
-        bikesMapper.updateById(bike);
         return bike;
     }
+//    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+//        Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
+//                .eq(Bikes::getType,Constants.ONE)
+//                .eq(Bikes::getIsdeleted,Constants.ZERO)
+//                .eq(Bikes::getCode,bikeCode)
+//        );
+//        if(bike == null){
+//            return null;
+//        }
+//        bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
+//        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+//            try {
+//                //璇锋眰鍦板潃
+//                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+//                JSONObject param = new JSONObject();
+//                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
+//                param.put("type",type);//0寮�閿� 1鍏抽攣
+//                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+//                JSONObject json = JSONObject.parseObject(res);
+//                if(json.get("code").equals("200")){
+//                    //鍙戣捣鎸囦护鎴愬姛
+//                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
+//                }else{
+//                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+//                }
+//            }catch (Exception e){
+//                e.printStackTrace();
+//            }
+//        }else{
+//            bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
+//        }
+//        bikesMapper.updateById(bike);
+//        return bike;
+//    }
 
     public static void main(String[] args) {
         String url = "http://localhost:10025/jtt808/device/8500";
@@ -497,6 +541,7 @@
             Goodsorder goodsorder = goodsorderService.findOneByWrapper(new QueryWrapper<Goodsorder>()
                     .eq("isdeleted", Constants.ZERO)
                     .eq("status", Constants.goodsorderStatus.pay)
+                    .eq("type", Constants.ZERO)
                     .eq("member_id", memberId)
                     .orderByDesc("create_date")
                     .last("limit 1"));
@@ -708,8 +753,9 @@
         }
         Integer bikeType = Constants.ZERO;
         //鏍规嵁鍓嶇紑鍖哄垎鏄惁涓虹數杞︿簩缁寸爜
-        if(code.startsWith(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.ELECTRICITY_PREFIX).getCode())){
+        if(code.startsWith(Constants.EBIKE_PREFIX)){
             bikeType = Constants.ONE;
+            code = code.replaceFirst(Constants.EBIKE_PREFIX,"");
         }
         MemberRidesResponse memberRidesResponse = new MemberRidesResponse();
         Bikes bike= new Bikes();
@@ -759,6 +805,9 @@
             if(Objects.isNull(bike)){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"璇锋壂鎻忔纭殑杞﹁締鐮侊細銆愭湭鏌ヨ鍒拌溅杈嗕俊鎭��");
             }
+            if(!Constants.equalsInteger(bike.getStatus(),Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヨ溅杈嗗凡琚攣瀹氬�熺敤锛岃灏濊瘯鏇存崲鍏朵粬杞﹁締锛�");
+            }
             if(StringUtils.isBlank(bike.getParamId())){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"杞﹁締绫诲瀷寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
             }
@@ -768,9 +817,11 @@
         if(Objects.isNull(baseParam)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"褰撳墠杞﹁締绫诲瀷鏃犳硶绉熻祦锛岃鑱旂郴绠$悊鍛橈紒");
         }
+        memberRidesResponse.setBikeCode(bike.getCode());
+        memberRidesResponse.setBikeType(baseParam.getName());
+        memberRidesResponse.setRidesType(bikeType);
         MemberRides memberRides = new MemberRides();
         this.dealMemberRidesData(baseParam.getId(),memberRides);
-        memberRidesResponse.setBikeCode(memberRides.getBikeCode());
         memberRidesResponse.setBasePrice(memberRides.getBasePrice());
         memberRidesResponse.setBaseTime(memberRides.getBaseTime());
         memberRidesResponse.setUnitTime(memberRides.getUnitTime());
@@ -779,6 +830,8 @@
                 memberRidesResponse.getBasePrice(),memberRidesResponse.getBaseTime(),
                 memberRidesResponse.getUnitPrice()
                 ,memberRidesResponse.getUnitTime()));
+        //鏌ヨ褰撳墠鐨勯獞琛屽椁�
+        memberRidesResponse.setDiscountMember(goodsorderService.getUseDiscount(memberId,Constants.ZERO,bikeType));
         return memberRidesResponse;
     }
 

--
Gitblit v1.9.3