From d800ed8f4f9c3a6dbd1b9833afc36a6a768495b9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 13 十月 2023 12:03:15 +0800
Subject: [PATCH] Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/parkBike into dev

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |   92 +++++++++++++++++++++++++++++++--------------
 1 files changed, 63 insertions(+), 29 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 cb8a72b..f2cab9a 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
@@ -25,9 +25,12 @@
 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.system.SystemDictDataMapper;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.DeviceService;
 import com.doumee.service.business.GoodsorderService;
 import com.doumee.service.business.MemberRidesService;
+import com.doumee.service.system.SystemDictDataService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
@@ -38,9 +41,8 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鐢ㄦ埛楠戣璁板綍琛⊿ervice瀹炵幇
@@ -78,6 +80,10 @@
     @Autowired
     private GoodsorderService goodsorderService;
 
+
+
+    @Autowired
+    private SystemDictDataMapper systemDictDataMapper;
 
     @Override
     public String create(MemberRides memberRides) {
@@ -168,7 +174,7 @@
 
         MPJLambdaWrapper<MemberRides> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId);
-        queryWrapper.eq(MemberRides::getMemberId, id);
+        queryWrapper.eq(MemberRides::getId, id);
         queryWrapper.selectAll(MemberRides.class);
         queryWrapper.selectAs(BaseParam::getName,MemberRidesDTO::getBikeType) ;
         queryWrapper.last("limit 1");
@@ -211,13 +217,17 @@
         queryWrapper.le(model.getRentDateEnd()!=null, MemberRides::getRentDate,model.getRentDateEnd());
         queryWrapper.eq(model.getCloseStatus()!=null,MemberRides::getCloseStatus, model.getCloseStatus());
         queryWrapper.eq(model.getGoodsorderId()!=null,MemberRides::getOrdreId, model.getGoodsorderId());
-        queryWrapper.selectAs(Member::getOpenid,MemberRidesDTO::getOpenid)
+        queryWrapper
+                .selectAs(MemberRides::getId,MemberRidesDTO::getId)
+                .selectAs(Member::getOpenid,MemberRidesDTO::getOpenid)
                 .selectAs(MemberRides::getBikeCode,MemberRidesDTO::getBikeCode)
                 .selectAs(MemberRides::getCloseStatus,MemberRidesDTO::getCloseStatus)
                 .selectAs(MemberRides::getStatus,MemberRidesDTO::getStatus)
                 .selectAs(BaseParam::getName,MemberRidesDTO::getBikeType)
                 .selectAs(MemberRides::getDuration,MemberRidesDTO::getDuration)
                 .selectAs(MemberRides::getRentDate,MemberRidesDTO::getRentDate)
+                .selectAs(MemberRides::getRentLockId,MemberRidesDTO::getRentLockId)
+                .selectAs(MemberRides::getRentSiteId,MemberRidesDTO::getRentSiteId)
                 .selectAs(MemberRides::getBackDate,MemberRidesDTO::getBackDate);
         return queryWrapper;
     }
@@ -243,7 +253,7 @@
     @Override
     public  void updateDuration(MemberRides memberRides){
         LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        if(StringUtils.isBlank(memberRides.getMemberId())
+        if(StringUtils.isBlank(memberRides.getId())
                 ||StringUtils.isBlank(memberRides.getBackReason())
                 || memberRides.getDuration() == null){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -304,10 +314,9 @@
      */
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public   void forceBack(MemberRides memberRides){
+    public void forceBack(MemberRides memberRides){
         LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-         if(StringUtils.isBlank(memberRides.getMemberId())
-                ||StringUtils.isBlank(memberRides.getBackReason())){
+         if(StringUtils.isBlank(memberRides.getBackReason())){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         MemberRides model = findJoinById(memberRides.getId());
@@ -317,6 +326,12 @@
         if(Constants.formatIntegerNum(model.getStatus()) != Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey() ){
             throw  new BusinessException( ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鍙兘閽堝鏈繕杞﹁締杩涜寮哄埗杩樿溅鎿嶄綔锛�" );
         }
+        QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(SystemDictData::getLabel, Arrays.asList(Constants.FORCE_BACK_SITE,Constants.FORCE_BACK_LOCK));
+        List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper);
+        Map<String, SystemDictData> collect = systemDictData.stream().collect(Collectors.toMap(s -> s.getLabel(), s -> s));
+
         MemberRides update = new MemberRides();
         update.setId(model.getId());
         update.setEditDate(new Date());
@@ -326,6 +341,9 @@
         update.setBackReason(memberRides.getBackReason());
         update.setBackUserid(user.getId());
         update.setBackType(Constants.ONE);
+        update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());
+        update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode());
+        update.setBackLockId(collect.get(Constants.FORCE_BACK_LOCK).getCode());
         //璁$畻楠戣璁¤垂鏃堕暱
         update.setDuration(DateUtil.betweenMin(model.getRentDate(), update.getBackDate()));
         memberRidesMapper.updateById(update);
@@ -333,6 +351,21 @@
         String beforeContent = JSONObject.toJSONString(model);
         //淇敼鍚�
         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());
@@ -409,21 +442,6 @@
             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);
         }
@@ -470,6 +488,10 @@
         Holidays holidays = new Holidays();
         holidays.setHoliday(nowDate);
         holidays.setIsdeleted(Constants.ZERO);
+        memberRides.setBikeCode(bike.getCode());
+        bike.setLastRentDate(new Date());
+        bike.setStatus(Constants.ONE);
+        bikesMapper.updateById(bike);
         //妫�鏌ユ槸鍚﹁妭鍋囨棩
         if(holidaysMapper.selectCount(new QueryWrapper<>(holidays)) >0){
             //濡傛灉鏄妭鍋囨棩
@@ -565,7 +587,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) {
@@ -620,7 +643,7 @@
     @Override
     public  int mqttCloseBikeEvent(MemberRides bikes){
         //鍏嶈垂楠戣鏃堕暱鏌ヨ锛屾暟鎹瓧鍏搁厤缃�
-        if(StringUtils.isBlank(bikes.getBikeCode()) ||StringUtils.isBlank(bikes.getRentLockId())){
+        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<>();
@@ -633,13 +656,10 @@
             //杩涜
             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());
@@ -657,6 +677,20 @@
         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