|  |  |  | 
|---|
|  |  |  | import com.doumee.dao.business.model.MemberRides; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.GoodsorderExportVO; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.GoodsorderTotalDataVO; | 
|---|
|  |  |  | import com.doumee.dao.business.web.request.BikeRepairDTO; | 
|---|
|  |  |  | import com.doumee.dao.business.web.request.GoodsorderCanBanlanceDTO; | 
|---|
|  |  |  | import com.doumee.dao.business.web.request.MemberRidesQuery; | 
|---|
|  |  |  | import com.doumee.dao.business.web.request.RefundDTO; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void closeGoodsorder( Goodsorder goodsorder ,int type ) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId()); | 
|---|
|  |  |  | //默认结算为押金金额 | 
|---|
|  |  |  | BigDecimal closeMoney = new BigDecimal(0.00); | 
|---|
|  |  |  | 
|---|
|  |  |  | if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ | 
|---|
|  |  |  | //如果是强制结算 | 
|---|
|  |  |  | update.setCloseType(Constants.ONE); | 
|---|
|  |  |  | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|---|
|  |  |  | update.setEditor(principal.getId()); | 
|---|
|  |  |  | }else  if(Constants.REFUND_TYPE.NORMAL.getKey() == type){ | 
|---|
|  |  |  | //如果是自行結算 | 
|---|
|  |  |  | update.setCloseType(Constants.ZERO); | 
|---|
|  |  |  | 
|---|
|  |  |  | refundDTO.setTotalAmount(goodsorder.getMoney()); | 
|---|
|  |  |  | refundDTO.setMemberId(goodsorder.getMemberId()); | 
|---|
|  |  |  | refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName()); | 
|---|
|  |  |  | refundDTO.setCreator(update.getEditor()); | 
|---|
|  |  |  | refundDTO.setType(type); | 
|---|
|  |  |  | Refund refund = wxMiniUtilService.wxRefund(refundDTO); | 
|---|
|  |  |  | update.setCloseId(refund.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | BigDecimal refundMoney = total == null?new BigDecimal(0):Constants.formatDecimalNum(total.getMoney()); | 
|---|
|  |  |  | //可退剩余 单位元 | 
|---|
|  |  |  | BigDecimal canBalance =Constants.translateMoney(Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refundMoney)); | 
|---|
|  |  |  | if(canBalance.compareTo(money) > Constants.ZERO){ | 
|---|
|  |  |  | if(canBalance.compareTo(money) >= Constants.ZERO){ | 
|---|
|  |  |  | RefundDTO refundDTO = new RefundDTO(); | 
|---|
|  |  |  | refundDTO.setOrderId(orderId); | 
|---|
|  |  |  | refundDTO.setCanBalance(canBalance); | 
|---|
|  |  |  | 
|---|
|  |  |  | BigDecimal reduce =  total!=null?Constants.formatDecimalNum(total.getMoney()):new BigDecimal(0); | 
|---|
|  |  |  | goodsorderCanBanlanceDTO.setHasRefundMoney(Constants.translateMoney(reduce)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal subtract = Constants.translateMoney(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getCloseMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney()); | 
|---|
|  |  |  | BigDecimal subtract = Constants.translateMoney(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney()); | 
|---|
|  |  |  | goodsorderCanBanlanceDTO.setCanBanlanceMoney(subtract.compareTo(new BigDecimal("0")) > 0 ? subtract : new BigDecimal("0")); | 
|---|
|  |  |  | return goodsorderCanBanlanceDTO; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.DATA_EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MemberRides> memberRides = memberRidesJoinMapper.selectList(new QueryWrapper<MemberRides>() | 
|---|
|  |  |  | .lambda().eq(MemberRides::getOrdreId,id).orderByDesc(MemberRides::getCreateDate)); | 
|---|
|  |  |  | List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>() | 
|---|
|  |  |  | .selectAll(MemberRides.class) | 
|---|
|  |  |  | .selectAs(BaseParam::getName,MemberRides::getParamName) | 
|---|
|  |  |  | .leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId) | 
|---|
|  |  |  | .eq(MemberRides::getOrdreId,id) | 
|---|
|  |  |  | .orderByDesc(MemberRides::getCreateDate)); | 
|---|
|  |  |  | if (!CollectionUtils.isEmpty(memberRides)){ | 
|---|
|  |  |  | //预计结算价格和计算时长 | 
|---|
|  |  |  | int freeTime = 0; | 
|---|