server/platform/src/main/resources/application.yml
@@ -9,7 +9,7 @@ # application: # name: parkbike profiles: active: dev active: test # JSON返回配置 jackson: # 默认时区 server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java
@@ -153,5 +153,8 @@ @ApiModelProperty(value = "骑行时长") @TableField(exist = false) private Integer rideTime; @ApiModelProperty(value = "排序码(升序)", example = "1") @TableField(exist = false) private Integer sortnum; } server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -483,7 +483,7 @@ BigDecimal closeMoney = new BigDecimal(0.00); if (!CollectionUtils.isEmpty(memberRides)){ //骑行总时长 closeMoney = getCloseMoneyByRides(memberRides,true).getAmount(); closeMoney = getCloseMoneyByRides(memberRides,true,goodsorder.getMoney()).getAmount(); //实际结算价格,记录在最高车型记录上 memberRides.get(0).setActualPrice(closeMoney); for(MemberRides model :memberRides){ @@ -552,18 +552,22 @@ goodsorderMapper.updateById(update); } private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose) { private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose,BigDecimal yjMoney) { RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); BigDecimal closeMoney = new BigDecimal(0.00); int durationSum = 0; MemberRides topRides =memberRides.get(0); //取最高车型计算方案结算订单 for(MemberRides rides : memberRides){ if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前订单有未完成的骑行,无法强制结算"); } durationSum += Constants.formatIntegerNum(rides.getDuration());//累计骑行(计费)时长 if(Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())){ topRides = rides; } } MemberRides topRides =memberRides.get(0); // MemberRides topRides =memberRides.get(0); if(durationSum > 0 && topRides != null){ int baseTime =Constants.formatIntegerNum(topRides.getBaseTime()); closeMoney = Constants.formatDecimalNum(topRides.getBasePrice()); @@ -577,6 +581,10 @@ } } } //如果订单价格封顶了,取订单 价格 if(Constants.compareBigdecimal(closeMoney, yjMoney) ==1){ closeMoney = yjMoney; } ridesDetailResponse.setDuration(durationSum); ridesDetailResponse.setAmount(closeMoney); ridesDetailResponse.setBikeType(topRides.getParamName()); @@ -588,7 +596,9 @@ MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>(); wrapper.eq(MemberRides::getOrdreId,id); wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey()); wrapper.selectAll(MemberRides.class).selectAs(BaseParam::getName, MemberRides::getParamName); wrapper.selectAll(MemberRides.class) .selectAs(BaseParam::getSortnum, MemberRides::getSortnum) .selectAs(BaseParam::getName, MemberRides::getParamName); wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId); wrapper.orderByDesc(BaseParam::getSortnum); //取最高车型作为计价方案 @@ -731,6 +741,7 @@ List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>() .selectAll(MemberRides.class) .selectAs(BaseParam::getName,MemberRides::getParamName) .selectAs(BaseParam::getSortnum,MemberRides::getSortnum) .leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId) .eq(MemberRides::getOrdreId,id) .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()) @@ -769,7 +780,7 @@ return memberRidesResponse; }).collect(Collectors.toList()); //累计和预算结算金额 RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false);; RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false,goodsorder.getMoney()); if(Constants.formatIntegerNum(goodsorder.getStatus())!= Constants.goodsorderStatus.pay){ //如果非已支付但未结算,使用订单金额 ridesDetailResponse.setAmount(goodsorder.getCloseMoney()); server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -603,6 +603,35 @@ update.setId(memberRides.getId()); //(更新请求开锁中的锁头关联的骑行记录) memberRidesMapper.updateById( update); }else if(locks.getStatus() == Constants.LockStatus.closed ){ //如果是关锁业务,判断触发还车 if(StringUtils.isNotBlank(locks.getBikeCode())){ MemberRides mbikes = new MemberRides(); mbikes.setBackLockId(locks.getCode()); mbikes.setBackSiteId(locks.getSiteId()); mbikes.setBikeCode(locks.getBikeCode()); mqttCloseBikeEventDo(mbikes); /* if(StringUtils.isBlank(locks.getBikeCode()) ||StringUtils.isBlank(locks.getCode()) ||StringUtils.isBlank(bikes.getSiteId())){ 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, locks.getBikeCode()); wrapper.lambda().in(MemberRides::getStatus, statusList); wrapper.lambda().eq(MemberRides::getIsdeleted, Constants.ZERO); //根据车辆编码查询骑行中的骑行记录信息,如果有进行还车操作 List<MemberRides> list = memberRidesMapper.selectList(wrapper); // MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("limit 1")); if(list!=null){ //进行 for(MemberRides memberRides : list){ dealMemberRidesBack(memberRides,bikes); } }*/ } } return 0; } @@ -780,9 +809,13 @@ locks.setStatus(bikes.getStatus()); //处理锁头数据 mqttLockInfoEvent(locks); //免费骑行时长查询,数据字典配置 mqttCloseBikeEventDo(bikes); return 0; } private void mqttCloseBikeEventDo(MemberRides bikes) { if(StringUtils.isBlank(bikes.getBikeCode()) ||StringUtils.isBlank(bikes.getBackLockId())||StringUtils.isBlank(bikes.getBackSiteId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"还车上报参数错误!"); throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"还车上报参数错误!"); } QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); List<Integer> statusList = new ArrayList<>(); @@ -792,12 +825,14 @@ wrapper.lambda().in(MemberRides::getStatus, statusList); wrapper.lambda().eq(MemberRides::getIsdeleted, Constants.ZERO); //根据车辆编码查询骑行中的骑行记录信息,如果有进行还车操作 MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("limit 1")); if(memberRides!=null){ List<MemberRides> list = memberRidesMapper.selectList(wrapper); // MemberRides memberRides = memberRidesMapper.selectOne(wrapper.last("limit 1")); if(list!=null){ //进行 dealMemberRidesBack(memberRides,bikes); for(MemberRides memberRides : list){ dealMemberRidesBack(memberRides,bikes); } } return 0; } private void dealMemberRidesBack(MemberRides memberRides,MemberRides param) { server/services/src/main/resources/application-test.yml
@@ -57,7 +57,7 @@ host: tcp://175.27.187.84:1883 username: doumee1 password: doumee@168 version: 002 version: 005 tencent: map: