From c49f540e8d63958c37cde739b874d6fa0a5b92d4 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期一, 16 十月 2023 15:56:15 +0800
Subject: [PATCH] #获取可退款信息

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 18 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 a5b5d32..1a2b104 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
@@ -352,6 +352,20 @@
         //淇敼鍚�
         String after = JSONObject.toJSONString(update);
 
+        //鎻掑叆铏氭嫙閿佸ご鍜岀珯鐐逛笂-------
+        Bikes bike = new Bikes();
+        bike.setIsdeleted(Constants.ZERO);
+        bike.setCode(model.getBikeCode());
+        bike.setSiteId(update.getBackSiteId());
+        bike.setLockId(update.getBackLockId());
+        if(bikesMapper.selectCount(new QueryWrapper<>(bike)) == 0){
+            bike.setId(Constants.getUUID());
+            bike.setParamId(model.getParamId());
+            bike.setLastBackDate(model.getRentDate());
+            bike.setStatus(Constants.ZERO);
+            bike.setInfo("寮哄埗杩樿溅缁戝畾");
+            bikesMapper.insert(bike);
+        }
 
         ActionLog log = new ActionLog();
         log.setId(Constants.getUUID());
@@ -424,24 +438,10 @@
             memberRides.setRentSiteId(locks.getSiteId());
             memberRides.setRentLockId(locks.getId());
             memberRides.setOrdreId(goodsorder.getId());
+            memberRides.setRentDate(new Date());
             memberRides.setBalance(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()));
             memberRides.setStatus(Constants.MEMBER_RIDES_STATUS.LOCKING.getKey());
             memberRides.setCloseStatus(Constants.ZERO);
-
-            //涓存椂浣跨敤
-            Bikes bikes = bikesMapper.selectById(locks.getBikeCode());
-            if (Objects.isNull(bikes)) {
-                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌鑷杞︿俊鎭�");
-            }
-            memberRides.setBikeCode(bikes.getId());
-            memberRides.setParamId(bikes.getParamId());
-            memberRides.setRentSiteId(locks.getSiteId());
-            memberRides.setRentLockId(locks.getId());
-            memberRides.setRentDate(new Date());
-            memberRides.setBasePrice(new BigDecimal(3990L));
-            memberRides.setBaseTime(1800);
-            memberRides.setUnitTime(600);
-            memberRides.setUnitPrice(new BigDecimal(1000L));
 
             memberRidesMapper.insert(memberRides);
             BeanUtils.copyProperties(memberRides, memberRidesDetailResponse);
@@ -477,7 +477,8 @@
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 璇ヨ溅鍨嬫殏鏃朵笉鑳藉�熻溅鎿嶄綔鍝︼紝璇锋洿鎹㈠叾浠栬溅鍨嬮噸璇曞摝锛�");
         }
         QueryWrapper<PricingDetail> detail = new QueryWrapper<>();
-        detail.lambda().eq(PricingDetail::getPricePramId,bike.getParamId());
+        detail.lambda().eq(PricingDetail::getBikeTypeId,bike.getParamId());
+        detail.lambda().eq(PricingDetail::getPricePramId,pp.getId());
         detail.lambda().eq(PricingDetail::getIsdeleted,Constants.ZERO);
         detail.lambda().last(" limit 1" ) ;
         //鏌ヨ浼樺厛绾ф渶楂橈紙鎺掑簭鐮佹渶灏忕殑锛夊彲鐢ㄩ厤浠锋柟妗�
@@ -489,6 +490,11 @@
         Holidays holidays = new Holidays();
         holidays.setHoliday(nowDate);
         holidays.setIsdeleted(Constants.ZERO);
+        memberRides.setBikeCode(bike.getCode());
+        memberRides.setParamId(bike.getParamId());
+        bike.setLastRentDate(new Date());
+        bike.setStatus(Constants.ONE);
+        bikesMapper.updateById(bike);
         //妫�鏌ユ槸鍚﹁妭鍋囨棩
         if(holidaysMapper.selectCount(new QueryWrapper<>(holidays)) >0){
             //濡傛灉鏄妭鍋囨棩
@@ -527,6 +533,9 @@
      */
     @Override
     public  int mqttLockInfoEvent(Locks locks){
+        if(StringUtils.isBlank(locks.getId()) ||StringUtils.isBlank(locks.getSiteId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"閿佸ご淇℃伅涓婃姤鍙傛暟閿欒锛�");
+        }
         //鍒ゆ柇妫�鏌ュ鐞嗙珯鐐归攣澶翠俊鎭�
         Locks model = dealLockAndSite(locks);
         //杞﹁締璁板綍
@@ -543,7 +552,6 @@
             if(memberRides == null){
                 return 0;
             }
-
             //锛堟洿鏂拌姹傚紑閿佷腑鐨勯攣澶村叧鑱旂殑楠戣璁板綍锛�
             memberRidesMapper.updateById( memberRides);
         }
@@ -582,7 +590,8 @@
 
     //TODO-----JP------------鏍规嵁杞﹁締code鍒嗘瀽杞﹁締绫诲瀷锛屽緟纭鏂规-------------------
     private String getBileTypeByCode(String bikeCode) {
-        return null;
+        int temp=1+(int)(Math.random()*(8));
+        return temp+"";
     }
 
     private Locks dealLockAndSite(Locks locks) {
@@ -629,9 +638,63 @@
         return  model;
     }
 
+    /**
+     * 杩樿溅璁㈤槄娑堟伅涓氬姟澶勭悊
+     * @param bikes
+     * @return
+     */
     @Override
     public  int mqttCloseBikeEvent(MemberRides bikes){
+        //鍏嶈垂楠戣鏃堕暱鏌ヨ锛屾暟鎹瓧鍏搁厤缃�
+        if(StringUtils.isBlank(bikes.getBikeCode()) ||StringUtils.isBlank(bikes.getBackLockId())||StringUtils.isBlank(bikes.getBackSiteId())){
+          throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"杩樿溅涓婃姤鍙傛暟閿欒锛�");
+        }
+        QueryWrapper<MemberRides> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(MemberRides::getBikeCode, bikes.getBikeCode());
+        wrapper.lambda().eq(MemberRides::getStatus, Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey());
+        wrapper.lambda().eq(MemberRides::getIsdeleted, Constants.ZERO);
+        //鏍规嵁杞﹁締缂栫爜鏌ヨ楠戣涓殑楠戣璁板綍淇℃伅锛屽鏋滄湁杩涜杩樿溅鎿嶄綔
+        MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("last 1"));
+        if(memberRides!=null){
+            //杩涜
+            dealMemberRidesBack(memberRides,bikes);
+        }
         return  0;
+    }
 
+    private void dealMemberRidesBack(MemberRides memberRides,MemberRides param) {
+        int freeTime = 0;
+        try {
+            freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
+        }catch (Exception e){
+        }
+        Date date = new Date();
+        MemberRides update = new MemberRides();
+        update.setEditDate(date);
+        update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());
+        update.setBackDate(date);
+        update.setBackLockId(param.getBackLockId());
+        update.setBackSiteId(param.getBackSiteId());
+        update.setBackCommondId(param.getBackCommondId());
+        int duration =DateUtil.betweenMin(memberRides.getRentDate(),date)-freeTime;
+        update.setDuration(duration>0?duration:0);
+        update.setBackType(Constants.ONE);
+        update.setBackInfo("鐢ㄦ埛姝e父杩樿溅");
+
+        Bikes bikes = new Bikes();
+        bikes.setSiteId(memberRides.getBackSiteId());
+        bikes.setLockId(memberRides.getBackLockId());
+//        bikes.setCode(memberRides.getBikeCode());
+        bikes = bikesMapper.selectById(new QueryWrapper<>(bikes).last("limit 1"));
+        if(bikes != null ) {
+            UpdateWrapper<Bikes> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(Bikes::getId, bikes.getId());
+            updateWrapper.lambda().set(Bikes::getEditDate,new Date());
+            updateWrapper.lambda().set(Bikes::getLastBackDate,new Date());
+            //鏇存柊鑷杞︽渶鍚庤繕杞︽椂闂�
+            bikesMapper.updateById(bikes);
+        }
+        //鏇存柊杩樿溅璁板綍涓哄凡杩樿溅
+        memberRidesMapper.updateById(update);
     }
 }

--
Gitblit v1.9.3