| | |
| | | import com.doumee.dao.business.model.Goodsorder; |
| | | import com.doumee.dao.business.model.Member; |
| | | 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.response.*; |
| | | import com.doumee.dao.business.join.MemberRidesJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | |
| | | |
| | | @Autowired |
| | | private MemberRidesJoinMapper memberRidesJoinMapper; |
| | | |
| | | @Autowired |
| | | private AdMapper adMapper; |
| | | |
| | | @Autowired |
| | | private TransactionsMapper transactionsMapper; |
| | | |
| | | @Autowired |
| | | PricingRuleService pricingRuleService; |
| | |
| | | QueryWrapper<Goodsorder> wrapper = new QueryWrapper<>(goodsorder); |
| | | return goodsorderMapper.selectList(wrapper); |
| | | } |
| | | @Override |
| | | public List<GoodsorderExportVO> findExportNotBikPage(Goodsorder model){ |
| | | List<GoodsorderExportVO> list = new ArrayList<>(); |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(model); |
| | | |
| | | List<Goodsorder> goodsorderList = goodsorderJoinMapper.selectJoinList(Goodsorder.class,queryWrapper); |
| | | if(goodsorderList!=null){ |
| | | for(Goodsorder order : goodsorderList){ |
| | | GoodsorderExportVO vo = new GoodsorderExportVO(); |
| | | vo.setId(order.getId()); |
| | | vo.setOpenid(order.getMemberName()); |
| | | vo.setPayDate(order.getPayDate()); |
| | | vo.setCloseDate(order.getCloseDate()); |
| | | vo.setCloseDate(order.getCloseDate()); |
| | | vo.setCloseMoney(Constants.formatDecimalNum(order.getCloseMoney()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); |
| | | vo.setRefundDate(order.getRefundDate()); |
| | | vo.setRefundMoney(Constants.formatDecimalNum(order.getRefundMoney()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP)); |
| | | list.add(vo); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | private MPJLambdaWrapper<Goodsorder> initQueryParamByModel(Goodsorder model) { |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(model); |
| | | //只查询支付成功的 |
| | | model.setPayStatus(Constants.ONE); |
| | | queryWrapper.selectAll(Goodsorder.class); |
| | | queryWrapper.selectAs(Member::getOpenid, Goodsorder::getMemberOpenid); |
| | | queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId); |
| | | queryWrapper.select("select max(r.done_date) from refund r where t1.obj_id=t.id and r.status=2 ) as refund_date"); |
| | | queryWrapper.select("select sum(r.money) from refund r where t1.obj_id=t.id and r.status=2) as refund_money"); |
| | | //时间段筛选 |
| | | queryWrapper.ge(model.getStartDate()!=null, Goodsorder::getPayDate, model.getStartDate()); |
| | | queryWrapper.le(model.getEndDate()!=null, Goodsorder::getPayDate, model.getEndDate()); |
| | | queryWrapper.eq(model.getPayStatus() !=null,Goodsorder::getPayStatus,model.getPayStatus()); |
| | | queryWrapper.eq(model.getCode() !=null,Goodsorder::getCode,model.getCode()); |
| | | queryWrapper.eq(model.getStatus() !=null,Goodsorder::getStatus,model.getStatus()); |
| | | queryWrapper.eq(model.getOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getOnlineOrderid()); |
| | | queryWrapper.like(model.getMemberOpenid() !=null,Member::getOpenid,model.getMemberOpenid()); |
| | | queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.orderByDesc(Goodsorder::getPayDate); |
| | | return queryWrapper; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<Goodsorder> findPage(PageWrap<Goodsorder> pageWrap) { |
| | | IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | |
| | | if (pageWrap.getModel().getCode() != null) { |
| | | queryWrapper.like(Goodsorder::getCode, pageWrap.getModel().getCode()); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getStatus() != null) { |
| | | queryWrapper.eq(Goodsorder::getStatus, pageWrap.getModel().getStatus()); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getOnlineOrderid() != null) { |
| | | queryWrapper.eq(Goodsorder::getOnlineOrderid, pageWrap.getModel().getOnlineOrderid()); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getPayDate() != null) { |
| | | queryWrapper.ge(Goodsorder::getPayDate, Utils.Date.getStart(pageWrap.getModel().getPayDate())); |
| | | queryWrapper.le(Goodsorder::getPayDate, Utils.Date.getEnd(pageWrap.getModel().getPayDate())); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc(Goodsorder::getCreateDate); |
| | | queryWrapper.selectAll(Goodsorder.class) |
| | | .selectAs(Member::getName,Goodsorder::getMemberName) |
| | | .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()),Member::getName,pageWrap.getModel().getMemberName()); |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel()); |
| | | return PageData.from(goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class,queryWrapper)); |
| | | } |
| | | |
| | |
| | | homeResponse.setTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.TIPS).getCode()); |
| | | homeResponse.setLeaseVideoUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode()); |
| | | homeResponse.setPricingRules(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PRICING_RULE).getCode()); |
| | | homeResponse.setStopServeTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_TIPS).getCode()); |
| | | homeResponse.setIsStopServe(Constants.ZERO); |
| | | homeResponse.setAdList(adMapper.selectList(new QueryWrapper<Ad>() |
| | | .eq("isdeleted",Constants.ZERO) |
| | | .eq("status",Constants.ZERO) |
| | | .orderByDesc("create_date") |
| | | )); |
| | | if(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.IS_STOP_SERVE).getCode().equals(Constants.ONE)){ |
| | | String stopServeStartTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_STARTTIME).getCode(); |
| | | String stopServeEndTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_ENDTIME).getCode(); |
| | | //查询当前时间是否在停止中 |
| | | long s = DateUtil.StringToDate(stopServeStartTime).getTime(); |
| | | long e = DateUtil.StringToDate(stopServeEndTime).getTime(); |
| | | if(e>System.currentTimeMillis()&&s<=System.currentTimeMillis()){ |
| | | homeResponse.setIsStopServe(Constants.ONE); |
| | | } |
| | | } |
| | | //查询是否存在 已支付的 押金订单 |
| | | Integer status = this.goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>() |
| | | .eq("member_id",memberId) |
| | |
| | | } |
| | | return homeResponse; |
| | | } |
| | | @Autowired |
| | | private TransactionsMapper transactionsMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public GoodsorderTotalDataVO getTotalData(Goodsorder param){ |
| | | |
| | | GoodsorderTotalDataVO model = new GoodsorderTotalDataVO(); |
| | | model.setPayMoney(new BigDecimal(0.00)); |
| | | model.setRefundMoney(new BigDecimal(0.00)); |
| | | model.setClosedMoney(new BigDecimal(0.00)); |
| | | model.setUnClosedMoney(new BigDecimal(0.00)); |
| | | model.setClosedNum(0); |
| | | model.setUnClosedNum(0); |
| | | model.setPayNum(0); |
| | | model.setRefundNum(0); |
| | | QueryWrapper<Goodsorder> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.lambda().ge(param.getStartDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getStartDate())); |
| | | queryWrapper.lambda().le(param.getEndDate() !=null,Goodsorder::getPayDate,DateUtil.getShortDateStr(param.getEndDate())); |
| | | queryWrapper.lambda().eq(Goodsorder::getPayStatus, Constants.ONE);//已支付 |
| | | queryWrapper.lambda().eq(Goodsorder::getIsdeleted, Constants.ZERO); |
| | | queryWrapper.lambda().groupBy(Goodsorder::getStatus); |
| | | queryWrapper.select( "count(id) as count_num" |
| | | ,"sum(money) as money" ); |
| | | //按订单状态分组统计 |
| | | List<Goodsorder> detailList = goodsorderMapper.selectList(queryWrapper); |
| | | for(Goodsorder goodsorder : detailList){ |
| | | if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.CLOSE.getKey()){ |
| | | //已结算 |
| | | model.setClosedNum(model.getClosedNum()+goodsorder.getCountNum()); |
| | | model.setClosedMoney(model.getClosedMoney().add(Constants.formatDecimalNum(goodsorder.getCloseMoney()))); |
| | | |
| | | model.setPayNum(model.getPayNum()+goodsorder.getCountNum()); |
| | | model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney()))); |
| | | }else if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){ |
| | | //已支付未结算 |
| | | model.setUnClosedNum(model.getUnClosedNum()+goodsorder.getCountNum()); |
| | | model.setUnClosedMoney(model.getUnClosedMoney().add(Constants.formatDecimalNum(goodsorder.getMoney()))); |
| | | |
| | | model.setPayNum(model.getPayNum()+goodsorder.getCountNum()); |
| | | model.setPayMoney(model.getPayMoney().add(Constants.formatDecimalNum(goodsorder.getMoney()))); |
| | | } |
| | | } |
| | | QueryWrapper<Refund> queryWrapper2 = new QueryWrapper<>(); |
| | | queryWrapper2.lambda().ge(param.getStartDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getStartDate())); |
| | | queryWrapper2.lambda().le(param.getEndDate() !=null,Refund::getDoneDate,DateUtil.getShortDateStr(param.getEndDate())); |
| | | queryWrapper2.lambda().eq(Refund::getIsdeleted, Constants.ZERO); |
| | | queryWrapper2.select( "count(id) as count_num" |
| | | ,"sum(money) as money" ); |
| | | //统计退款数据 |
| | | Refund refund = refundMapper.selectOne(queryWrapper2.last("limit 1")); |
| | | if(refund !=null){ |
| | | model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum())); |
| | | model.setRefundMoney( Constants.formatDecimalNum(refund.getMoney())); |
| | | } |
| | | return model; |
| | | } |
| | | @Override |
| | | public RidesDetailResponse getRidesDetailResponse(String id) { |
| | | |
| | | QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(MemberRides::getOrdreId,id); |
| | | List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); |
| | | if (!CollectionUtils.isEmpty(memberRides)){ |
| | | boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus())); |
| | | if (exitUnBack){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前订单有未完成的骑行,无法强制结算"); |
| | | } |
| | | |
| | | PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides); |
| | | RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); |
| | | List<MemberRidesResponse> collect = memberRides.stream().map(s -> { |
| | |
| | | if(goodsorderMapper.selectCount(new QueryWrapper<>(qry))>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"已支付过定金,无法重复该操作"); |
| | | } |
| | | //是否处于小程序停止服务时间内 |
| | | if(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.IS_STOP_SERVE).getCode().equals(Constants.ONE)){ |
| | | String stopServeStartTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_STARTTIME).getCode(); |
| | | String stopServeEndTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_ENDTIME).getCode(); |
| | | //查询当前时间是否在停止中 |
| | | long s = DateUtil.StringToDate(stopServeStartTime).getTime(); |
| | | long e = DateUtil.StringToDate(stopServeEndTime).getTime(); |
| | | if(e>System.currentTimeMillis()&&s<=System.currentTimeMillis()){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前小程序停止服务,请注意查看公告"); |
| | | } |
| | | } |
| | | //是否处于营业时间 |
| | | String businessStartTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.BUSINESS_STARTTIME).getCode(); |
| | | String businessEndTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.BUSINESS_ENDTIME).getCode(); |
| | | String nowTime = DateUtil.getDate(new Date(),"HH:mm"); |
| | | if(Integer.valueOf(nowTime.replace(":",""))<= Integer.valueOf(businessStartTime.replace(":","")) |
| | | ||Integer.valueOf(nowTime.replace(":","")) > Integer.valueOf(businessEndTime.replace(":",""))){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前时间暂未营业服务,请注意查看营业时间"); |
| | | } |
| | | Goodsorder goodsorder = new Goodsorder(); |
| | | goodsorder.setId(Constants.getUUID()); |
| | | goodsorder.setCreateDate(new Date()); |