From 18cf2f252338e52fb531cd2ca1cc49e39bf6efe0 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 19 二月 2025 18:50:50 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |  149 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 143 insertions(+), 6 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 3dff2f5..9967282 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
@@ -27,6 +27,7 @@
 import com.doumee.dao.business.web.response.BikeLogDTO;
 import com.doumee.dao.business.web.response.MemberRidesDTO;
 import com.doumee.dao.business.web.response.MemberRidesDetailResponse;
+import com.doumee.dao.business.web.response.MemberRidesResponse;
 import com.doumee.dao.system.SystemDictDataMapper;
 import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.DeviceService;
@@ -509,7 +510,7 @@
             //鍒ゆ柇鏄惁澶勪簬钀ヤ笟鏃堕棿
             goodsorderService.checkBusiness();
             //鏌ヨ鏄惁澶勪簬楠戣涓�
-            if (memberRidesMapper.selectCount(new QueryWrapper<MemberRides>().eq("member_id", memberId).in("status", 0, 1)) > Constants.ZERO) {
+            if (memberRidesMapper.selectCount(new QueryWrapper<MemberRides>().eq("member_id", memberId).in("status", 0, 1, 4)) > Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀛樺湪楠戣涓溅杈嗭紝鏃犳硶鎵爜");
             }
             String[] codes = code.split("/");
@@ -519,10 +520,6 @@
                     .eq(Locks::getIsdeleted, Constants.ZERO)
                     .last("limit 1"));
             if (Objects.isNull(locks)) {
-//            locks =new Locks();
-//            locks.setCode(codes[1]);
-//            locks.setSiteId(codes[0]);
-//            deviceService.getLockInfo(locks);
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鎵爜鏃犳晥锛岃绔欑偣閿佸ご鏆備笉鏀寔鍊熷嚭涓氬姟鍝︼紒");
             }
             //鏌ヨ閿佸ご鏄惁瀛樺湪杞﹁締 浠ュ強鏄惁姝e父
@@ -573,7 +570,6 @@
         }finally {
             cacheOpenLock.remove(code);
         }
-
     }
 
     private boolean isValidePricingType(Locks locks,MemberRides memberRides ) {
@@ -638,6 +634,54 @@
         return true;
     }
 
+
+    public void dealMemberRidesData(String paramId,MemberRides memberRides){
+        Date date =new Date();
+        QueryWrapper<PricingParam> param = new QueryWrapper<>();
+        param.lambda().eq(PricingParam::getStatus,Constants.ZERO);
+        param.lambda().eq(PricingParam::getIsdeleted,Constants.ZERO);
+        param.lambda().le(PricingParam::getStartDate,date);
+        param.lambda().ge(PricingParam::getEndDate,date);
+        param.lambda().last(" limit 1" ) ;
+        param.lambda().orderByAsc(PricingParam::getSortnum);
+        //鏌ヨ浼樺厛绾ф渶楂橈紙鎺掑簭鐮佹渶灏忕殑锛夊彲鐢ㄩ厤浠锋柟妗�
+        PricingParam pp = pricingParamMapper.selectOne(param);
+        if(pp == null){
+            //濡傛灉杞﹁締鏈缃厤浠锋柟妗堬紝鎻愮ず寮�閿佸け璐ワ紒
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 璇ヨ溅鍨嬫殏鏃朵笉鑳藉�熻溅鎿嶄綔鍝︼紝璇锋洿鎹㈠叾浠栬溅鍨嬮噸璇曞摝锛�");
+        }
+        QueryWrapper<PricingDetail> detail = new QueryWrapper<>();
+        detail.lambda().eq(PricingDetail::getBikeTypeId,paramId);
+        detail.lambda().eq(PricingDetail::getPricePramId,pp.getId());
+        detail.lambda().eq(PricingDetail::getIsdeleted,Constants.ZERO);
+        detail.lambda().last(" limit 1" ) ;
+        //鏌ヨ浼樺厛绾ф渶楂橈紙鎺掑簭鐮佹渶灏忕殑锛夊彲鐢ㄩ厤浠锋柟妗�
+        PricingDetail pricingDetail = pricingDetailMapper.selectOne(detail);
+        if(pricingDetail == null){
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 璇ヨ溅鍨嬫殏鏃朵笉鑳藉�熻溅鎿嶄綔鍝︼紝璇锋洿鎹㈠叾浠栬溅鍨嬮噸璇曞摝~");
+        }
+        String nowDate = DateUtil.getDateLong(date);
+        Holidays holidays = new Holidays();
+        holidays.setHoliday(nowDate);
+        holidays.setIsdeleted(Constants.ZERO);
+        //妫�鏌ユ槸鍚﹁妭鍋囨棩
+        if(holidaysMapper.selectCount(new QueryWrapper<>(holidays)) >0){
+            //濡傛灉鏄妭鍋囨棩
+            memberRides.setBasePrice(pricingDetail.getHolidayBasePrice());
+            memberRides.setBaseTime(pricingDetail.getHolidayBaseTime());
+            memberRides.setUnitPrice(pricingDetail.getHolidayUnitPrice());
+            memberRides.setUnitTime(pricingDetail.getHolidayUnitTime());
+            memberRides.setIsHoliday(Constants.ONE);
+        }else{
+            //濡傛灉鏄伐浣滄棩
+            memberRides.setBasePrice(pricingDetail.getBasePrice());
+            memberRides.setBaseTime(pricingDetail.getBaseTime());
+            memberRides.setUnitPrice(pricingDetail.getUnitPrice());
+            memberRides.setUnitTime(pricingDetail.getUnitTime());
+            memberRides.setIsHoliday(Constants.ZERO);
+        }
+    }
+
     @Override
     public MemberRidesDetailResponse refreshLock(String id){
         MemberRides memberRides = memberRidesMapper.selectById(id);
@@ -649,6 +693,99 @@
         return memberRidesDetailResponse;
     }
 
+
+    /**
+     * 鑾峰彇杞﹁締杞﹀瀷绛夋暟鎹俊鎭�
+     */
+    @Override
+    public MemberRidesResponse getBikeChargingRule(String code,String memberId){
+        if(StringUtils.isBlank(code)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇锋壂鎻忔纭殑杞﹁締鐮�");
+        }
+        //鏌ヨ鏄惁澶勪簬楠戣涓�
+        if (memberRidesMapper.selectCount(new QueryWrapper<MemberRides>().eq("member_id", memberId).in("status", 0, 1 ,4 )) > Constants.ZERO) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀛樺湪楠戣涓溅杈嗭紝鏃犳硶鎵爜");
+        }
+        Integer bikeType = Constants.ZERO;
+        //鏍规嵁鍓嶇紑鍖哄垎鏄惁涓虹數杞︿簩缁寸爜
+        if(code.startsWith(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.ELECTRICITY_PREFIX).getCode())){
+            bikeType = Constants.ONE;
+        }
+        MemberRidesResponse memberRidesResponse = new MemberRidesResponse();
+        Bikes bike= new Bikes();
+        if(Constants.equalsInteger(bikeType,Constants.ZERO)){
+            if(StringUtils.isBlank(code) ||  code.split("/").length != 2){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ョ珯鐐圭紪鍙蜂笉瀛樺湪锛岃灏濊瘯鏇存崲杞﹁締锛�");
+            }
+            //鍒ゆ柇鏄惁澶勪簬钀ヤ笟鏃堕棿
+            goodsorderService.checkBusiness();
+            String[] codes = code.split("/");
+
+            Locks locks = locksMapper.selectOne(new QueryWrapper<Locks>()
+                    .lambda().eq(Locks::getCode, codes[1])
+                    .eq(Locks::getSiteId, codes[0])
+                    .eq(Locks::getIsdeleted, Constants.ZERO)
+                    .last("limit 1"));
+            if (Objects.isNull(locks)) {
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鎵爜鏃犳晥锛岃绔欑偣閿佸ご鏆備笉鏀寔鍊熷嚭涓氬姟鍝︼紒");
+            }
+            //鏌ヨ閿佸ご鏄惁瀛樺湪杞﹁締 浠ュ強鏄惁姝e父
+            if (Constants.formatIntegerNum(locks.getStatus())!=Constants.ZERO) {
+                locks =new Locks();
+                locks.setCode(Constants.formatIntegerFromStr(codes[1]));
+                locks.setSiteId(codes[0]);
+                deviceService.getLockInfo(locks);
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "褰撳墠杞﹁締鏆傛椂鏃犳硶浣跨敤锛岃绋嶅悗閲嶈瘯鎴栨洿鎹㈠叾瀹冭溅杈唦");
+            }
+            if (StringUtils.isBlank(locks.getBikeCode())) {
+                locks =new Locks();
+                locks.setCode(Constants.formatIntegerFromStr(codes[1]));
+                locks.setSiteId(codes[0]);
+                locks.setId(codes[1]);
+                deviceService.getLockInfo(locks);
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠杞﹁締鏆傛椂鏃犳硶浣跨敤锛岃绋嶅悗閲嶈瘯鎴栨洿鎹㈠叾瀹冭溅杈嗭紒");
+            }
+            bike.setLockId(locks.getCode());
+            bike.setSiteId(locks.getSiteId());
+            //鏌ヨ杞﹁締淇℃伅
+            bike = bikesMapper.selectOne(new QueryWrapper<>(bike).last("limit 1"));
+            if(bike == null && StringUtils.isBlank(bike.getParamId())){
+                //濡傛灉杞﹁締绫诲瀷鏄┖
+                throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 璇ヨ溅鍨嬫殏鏃朵笉鑳藉�熻溅鎿嶄綔鍝︼紝璇锋洿鎹㈠叾浠栬溅鍨嬮噸璇曪紒");
+            }
+        }else{
+            //鏌ヨ杞﹁締绫诲瀷
+            bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda().eq(Bikes::getCode,code).eq(Bikes::getIsdeleted,Constants.ZERO).last(" limit 1 "));
+            if(Objects.isNull(bike)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"璇锋壂鎻忔纭殑杞﹁締鐮侊細銆愭湭鏌ヨ鍒拌溅杈嗕俊鎭��");
+            }
+            if(StringUtils.isBlank(bike.getParamId())){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"杞﹁締绫诲瀷寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
+            }
+            memberRidesResponse.setVoltageStatus(goodsorderService.getVoltageStatus(bike));
+        }
+        BaseParam baseParam = baseParamMapper.selectById(bike.getParamId());
+        if(Objects.isNull(baseParam)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"褰撳墠杞﹁締绫诲瀷鏃犳硶绉熻祦锛岃鑱旂郴绠$悊鍛橈紒");
+        }
+        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());
+        memberRidesResponse.setUnitPrice(memberRides.getUnitPrice());
+        memberRidesResponse.setPriceRole(PricingDetailServiceImpl.getRoleNameByParam(
+                memberRidesResponse.getBasePrice(),memberRidesResponse.getBaseTime(),
+                memberRidesResponse.getUnitPrice()
+                ,memberRidesResponse.getUnitTime()));
+        return memberRidesResponse;
+    }
+
+
+
+
+
     /**
      * 閿佸ご淇℃伅涓婃姤
      * @param locks

--
Gitblit v1.9.3