jiaosong
2023-11-03 8bf400b67418a4a81185a4a302fdbdfce2cdf018
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -449,14 +449,26 @@
                .eq(Locks::getIsdeleted, Constants.ZERO)
                .last("limit 1"));
        if (Objects.isNull(locks)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "扫码无效,未查询到锁头信息");
//            locks =new Locks();
//            locks.setCode(codes[1]);
//            locks.setSiteId(codes[0]);
//            deviceService.getLockInfo(locks);
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "扫码无效,该站点锁头暂不支持借出业务哦!");
        }
        //查询锁头是否存在车辆 以及是否正常
        if (Constants.formatIntegerNum(locks.getStatus())!=Constants.ZERO) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "当前扫码锁头状态错误,无法进行开锁");
            locks =new Locks();
            locks.setCode(codes[1]);
            locks.setSiteId(codes[0]);
            deviceService.getLockInfo(locks);
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "当前扫码锁头状态错误,已尝试更新锁头状态,请稍后重试!");
        }
        if (StringUtils.isBlank(locks.getBikeCode())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "当前扫码锁头无车辆信息,无法进行开锁");
            locks =new Locks();
            locks.setCode(codes[1]);
            locks.setSiteId(codes[0]);
            deviceService.getLockInfo(locks);
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "当前扫码锁头无车辆信息,已尝试更新锁头状态,请稍后重试!");
        }
        MemberRides memberRides = new MemberRides();
        //根据车型查询计价方案
@@ -572,7 +584,7 @@
        //车辆记录
        Bikes bikes = dealBikesByParam(model);
        //状态,0闭合, 1打开,2运行中, 3异常
        if(model.getStatus() == Constants.LockStatus.open){
        if(locks.getStatus() == Constants.LockStatus.open){
            //如果是开锁业务,判断是否有开锁中的信息
            MemberRides memberRides = new MemberRides();
            memberRides.setStatus(Constants.MEMBER_RIDES_STATUS.LOCKING.getKey());
@@ -633,12 +645,15 @@
        if(bikes != null ) {
            if ( !StringUtils.equals(model.getBikeCode(), bikes.getCode())){
                //如果绑定车辆信息发生编号,更换绑定关系
                String type =getBileTypeByCode(model.getBikeCode());
                UpdateWrapper<Bikes> updateWrapper = new UpdateWrapper<>();
                updateWrapper.lambda().eq(Bikes::getId, bikes.getId());
                updateWrapper.lambda().set(Bikes::getCode,model.getBikeCode());
                updateWrapper.lambda().set(Bikes::getParamId,getBileTypeByCode(model.getBikeCode()));
                updateWrapper.lambda().set(Bikes::getParamId,type);
                //更新自行站点锁头绑定自行车信息
                bikesMapper.update(null,updateWrapper);
                bikes.setCode(model.getBikeCode());
                bikes.setParamId(model.getBikeType());
            }
        }else{
            bikes = new Bikes();
@@ -699,6 +714,7 @@
            sites.setStatus(Constants.ZERO);
            sites.setEditDate(date);
            sites.setLockNum(1);
            sites.setLastLinkDate(date);
            //新增锁头
            sitesMapper.insert(sites);
        }
@@ -739,6 +755,8 @@
            updateWrapper.lambda().set(Locks::getEditDate, new Date() );
            updateWrapper.lambda().set(Locks::getIsdeleted, Constants.ZERO);
            locksMapper.update(null,updateWrapper);
            model.setStatus(locks.getStatus());
            model.setBikeCode(locks.getBikeCode());
        }
        model.setSites(sites);
        return  model;
@@ -752,13 +770,24 @@
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public  int mqttCloseBikeEvent(MemberRides bikes){
        Locks locks  = new Locks();
        locks.setSiteId(bikes.getBackSiteId());
        locks.setCode(bikes.getBackLockId());
        locks.setBikeCode(bikes.getBikeCode());
        locks.setInfo(bikes.getBackCommondId());
        locks.setStatus(bikes.getStatus());
        //处理锁头数据
         mqttLockInfoEvent(locks);
        //免费骑行时长查询,数据字典配置
        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<>();
        List<Integer> statusList = new ArrayList<>();
        statusList.add(Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey());
        statusList.add(Constants.MEMBER_RIDES_STATUS.LOCKING.getKey());
        wrapper.lambda().eq(MemberRides::getBikeCode, bikes.getBikeCode());
        wrapper.lambda().eq(MemberRides::getStatus, Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey());
        wrapper.lambda().in(MemberRides::getStatus, statusList);
        wrapper.lambda().eq(MemberRides::getIsdeleted, Constants.ZERO);
        //根据车辆编码查询骑行中的骑行记录信息,如果有进行还车操作
        MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("limit  1"));