| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.checkerframework.checker.units.qual.C; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | queryWrapper.like(model.getOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getOnlineOrderid()); |
| | | queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid()); |
| | | queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE); |
| | | queryWrapper.orderByDesc(Goodsorder::getPayDate); |
| | | return queryWrapper; |
| | | } |
| | |
| | | @Override |
| | | public HomeResponse getHome(String memberId){ |
| | | HomeResponse homeResponse = new HomeResponse(); |
| | | String fullPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode() ; |
| | | homeResponse.setParkName(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PROJECT_NAME).getCode()); |
| | | homeResponse.setServerPhone(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.SERVER_PHONE).getCode()); |
| | | homeResponse.setLeaseNoticeUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE_URL).getCode()); |
| | | homeResponse.setLeaseNoticeUrl(fullPath + systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE_URL).getCode()); |
| | | homeResponse.setLeaseNotice(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE).getCode()); |
| | | homeResponse.setDeposit(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode())); |
| | | homeResponse.setTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.TIPS).getCode()); |
| | | homeResponse.setLeaseVideoUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode()); |
| | | homeResponse.setLeaseVideoUrl(fullPath + systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode()); |
| | | homeResponse.setStopServeTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_TIPS).getCode()); |
| | | homeResponse.setIsStopServe(this.checkTemporaryStop()?1:0); |
| | | homeResponse.setIsBusiness(this.checkBusiness()?0:1); |
| | |
| | | .eq("status",Constants.ZERO) |
| | | .orderByDesc("create_date") |
| | | ));; |
| | | if(!Objects.isNull(homeResponse.getAdList())&&homeResponse.getAdList().size()>Constants.ZERO){ |
| | | homeResponse.getAdList().forEach(i->{ |
| | | i.setImgfullurl(fullPath + i.getImgurl()); |
| | | }); |
| | | } |
| | | homeResponse.setRideStatus(-1); |
| | | //查询是否存在 已支付的 押金订单 |
| | | Goodsorder goodsorder = this.goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>() |
| | |
| | | } |
| | | memberRidesResponse.setRideId(memberRides.getId()); |
| | | memberRidesResponse.setRideStartTime(memberRides.getRentDate()); |
| | | memberRidesResponse.setRideStartTimeStr(DateUtil.DateToStr(memberRides.getRentDate(),"HH:mm")); |
| | | memberRidesResponse.setRideEndTime(memberRides.getBackDate()); |
| | | memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(),memberRidesResponse.getRideEndTime())); |
| | | memberRidesResponse.setRideEndTimeStr(DateUtil.DateToStr(memberRides.getBackDate(),"HH:mm")); |
| | | memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRides.getRentDate(),memberRides.getBackDate())); |
| | | memberRidesResponse.setBikeCode(memberRides.getBikeCode()); |
| | | memberRidesResponse.setBasePrice(memberRides.getBasePrice()); |
| | | memberRidesResponse.setBaseTime(memberRides.getBaseTime()); |
| | | memberRidesResponse.setUnitTime(memberRides.getUnitTime()); |
| | | memberRidesResponse.setUnitPrice(memberRides.getUnitPrice()); |
| | | memberRidesResponse.setPriceRole(PricingDetailServiceImpl.getRoleNameByParam( |
| | | memberRidesResponse.getBasePrice(),memberRidesResponse.getBaseTime(), |
| | | memberRidesResponse.getUnitPrice() |
| | | ,memberRidesResponse.getUnitTime())); |
| | | homeResponse.setMemberRidesResponse(memberRidesResponse); |
| | | } |
| | | } |
| | |
| | | public void backGoodsorder(String orderId, BigDecimal money,String reason) { |
| | | LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Goodsorder goodsorder = goodsorderMapper.selectById(orderId); |
| | | if(goodsorder == null){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,订单信息不存在,请刷新页面重试!"); |
| | | } |
| | | if (Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.CLOSE.getKey()){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该订单请结算后再退款~"); |
| | | } |
| | | QueryWrapper<Refund> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Refund::getObjId,orderId) |
| | | .orderByDesc(Refund::getCreateDate) |
| | | .last("limit 1"); |
| | | Refund lastRefund = refundMapper.selectOne(wrapper); |
| | | if (Objects.isNull(lastRefund)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"改订单请结算后在退款"); |
| | | } |
| | | BigDecimal canBalance = lastRefund.getCanBalance(); |
| | | .eq(Refund::getStatus,Constants.TWO) |
| | | .eq(Refund::getIsdeleted,Constants.ZERO) ; |
| | | wrapper.select("sum(money) as money").last(" limit 1"); |
| | | Refund total = refundMapper.selectOne(wrapper); |
| | | BigDecimal refundMoney = total == null?new BigDecimal(0):Constants.formatDecimalNum(total.getMoney()); |
| | | BigDecimal canBalance =Constants.formatDecimalNum(goodsorder.getMoney()).subtract(money); |
| | | if(canBalance.compareTo(money) > Constants.ZERO){ |
| | | RefundDTO refundDTO = new RefundDTO(); |
| | | refundDTO.setOrderId(orderId); |
| | | refundDTO.setCanBalance(lastRefund.getCanBalance().subtract(lastRefund.getMoney())); |
| | | refundDTO.setCanBalance(canBalance); |
| | | refundDTO.setRefundAmount(money); |
| | | refundDTO.setTotalAmount(goodsorder.getMoney()); |
| | | refundDTO.setMemberId(goodsorder.getMemberId()); |
| | | refundDTO.setCreator(principal.getId()); |
| | | refundDTO.setReason(reason); |
| | | refundDTO.setType(Constants.REFUND_TYPE.BACK.getKey()); |
| | | Refund refund = wxMiniUtilService.wxRefund(refundDTO); |
| | | }else { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,退款金额不允许超过"+canBalance); |
| | | } |
| | | } |
| | | |
| | |
| | | QueryWrapper<Refund> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Refund::getObjId,orderId) |
| | | .orderByDesc(Refund::getCreateDate); |
| | | List<Refund> refunds = refundMapper.selectList(wrapper); |
| | | .eq(Refund::getStatus,Constants.TWO) |
| | | .eq(Refund::getIsdeleted,Constants.ZERO) ; |
| | | wrapper.select("sum(money) as money").last(" limit 1"); |
| | | Refund total = refundMapper.selectOne(wrapper); |
| | | GoodsorderCanBanlanceDTO goodsorderCanBanlanceDTO = new GoodsorderCanBanlanceDTO(); |
| | | goodsorderCanBanlanceDTO.setGoodsorderMoney(goodsorder.getMoney()); |
| | | goodsorderCanBanlanceDTO.setCloseMoney(goodsorder.getCloseMoney()); |
| | | if (!CollectionUtils.isEmpty(refunds)){ |
| | | BigDecimal reduce = refunds.stream().map(s -> s.getMoney()).reduce(new BigDecimal("0"), (a, b) -> b.add(a)); |
| | | Refund refund = refunds.stream().findFirst().orElse(null); |
| | | goodsorderCanBanlanceDTO.setHasRefundMoney(reduce); |
| | | goodsorderCanBanlanceDTO.setCanBanlanceMoney(refund.getCanBalance().subtract(refund.getMoney())); |
| | | }else { |
| | | goodsorderCanBanlanceDTO.setHasRefundMoney(new BigDecimal("0")); |
| | | goodsorderCanBanlanceDTO.setCanBanlanceMoney(goodsorder.getMoney()); |
| | | } |
| | | BigDecimal reduce = total!=null?Constants.formatDecimalNum(total.getMoney()):new BigDecimal(0); |
| | | goodsorderCanBanlanceDTO.setHasRefundMoney(reduce); |
| | | goodsorderCanBanlanceDTO.setCanBanlanceMoney(Constants.formatDecimalNum(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney())); |
| | | return goodsorderCanBanlanceDTO; |
| | | } |
| | | |
| | |
| | | goodsorder.setId(Constants.getUUID()); |
| | | goodsorder.setCreateDate(new Date()); |
| | | goodsorder.setIsdeleted(Constants.ZERO); |
| | | goodsorder.setCode(goodsorder.getId()); |
| | | goodsorder.setMemberId(memberId); |
| | | goodsorder.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode())); |
| | | goodsorder.setStatus(Constants.goodsorderStatus.waitPay); |
| | |
| | | request.setBody("支付押金"); |
| | | request.setAttach("createGoodsOrder"); |
| | | request.setOutTradeNo(goodsorder.getId()); |
| | | // request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); |
| | | request.setTotalFee(1); |
| | | request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); |
| | | // request.setTotalFee(1); |
| | | request.setSpbillCreateIp(this.getIpAddr()); |
| | | request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss")); |
| | | request.setOpenid(member.getOpenid()); |
| | |
| | | Date date = new Date(); |
| | | list.forEach(s->{ |
| | | try { |
| | | goodsorder.setEditDate(date); |
| | | goodsorder.setEditor(null); |
| | | s.setEditDate(date); |
| | | s.setEditor(null); |
| | | s.setCloseDate(date); |
| | | |
| | | closeGoodsorder(s,Constants.REFUND_TYPE.PLAT_AUTO.getKey()); |
| | | }catch (BusinessException e){ |
| | | |