|  |  |  | 
|---|
|  |  |  | import cc.mrbird.febs.mall.entity.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.mapper.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.ApiShopApplyVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderDetailVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderListVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderRefundVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.*; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.model.AgreementPayDto; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.model.AgreementSignDto; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.model.UnipayDto; | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new FebsException(goods.getGoodsName() + "已下架"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 存在未支付的订单无法下单 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | Integer orderIng = this.baseMapper.selectOrderInfoByStatusAndMemberId(OrderStatusEnum.FINISH.getValue(), mallMember.getId()); | 
|---|
|  |  |  | if(1 <= orderIng){ | 
|---|
|  |  |  | throw new FebsException("请先完成未完成的订单"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 会员一天最多下单次数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | DataDictionaryCustom buyTimesDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
|---|
|  |  |  | 
|---|
|  |  |  | String yyyyMMdd = sdf.format(date); | 
|---|
|  |  |  | Integer times = this.baseMapper.selectCountByCreateTimeAndMemberId(yyyyMMdd,member.getId()); | 
|---|
|  |  |  | if(buyTimes <= times){ | 
|---|
|  |  |  | throw new FebsException("会员今日已无法购买"); | 
|---|
|  |  |  | throw new FebsException("今日任务完成,明天再来"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DataDictionaryCustom allBuyTimesDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
|---|
|  |  |  | DataDictionaryEnum.ALL_BUY_TIMES.getType(), DataDictionaryEnum.ALL_BUY_TIMES.getCode()); | 
|---|
|  |  |  | Integer allBuyTimes = Integer.parseInt(allBuyTimesDic.getValue()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer allBuyTimesNow = this.baseMapper.selectCountByCreateTime(yyyyMMdd); | 
|---|
|  |  |  | if(allBuyTimes <= allBuyTimesNow){ | 
|---|
|  |  |  | throw new FebsException("今日任务完成,明天再来"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String orderNo = MallUtils.getOrderNum(); | 
|---|
|  |  |  | 
|---|
|  |  |  | orderInfo.setOrderType(addOrderDto.getOrderType()); | 
|---|
|  |  |  | //补贴金额 | 
|---|
|  |  |  | orderInfo.setSubsidyAmount(goods.getSubsidyAmount()); | 
|---|
|  |  |  | orderInfo.setCommentState(MallOrderInfo.COMMENT_STATE_NO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.baseMapper.insert(orderInfo); | 
|---|
|  |  |  | List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goods.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer deliverType = (ObjectUtil.isEmpty(orderInfo.getDeliverType()) ? new Integer(0):orderInfo.getDeliverType()); | 
|---|
|  |  |  | if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue() && 2 != deliverType) { | 
|---|
|  |  |  | MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | orderDetailVo.setExpressNo(expressInfo.getExpressNo()); | 
|---|
|  |  |  | orderDetailVo.setExpressCom(expressInfo.getExpressCom()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        Integer deliverType = (ObjectUtil.isEmpty(orderInfo.getDeliverType()) ? new Integer(0):orderInfo.getDeliverType()); | 
|---|
|  |  |  | //        if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue() && 2 != deliverType) { | 
|---|
|  |  |  | //            MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | //            orderDetailVo.setExpressNo(expressInfo.getExpressNo()); | 
|---|
|  |  |  | //            orderDetailVo.setExpressCom(expressInfo.getExpressCom()); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) { | 
|---|
|  |  |  | MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | OrderRefundVo orderRefundVo = MallOrderRefundConversion.INSTANCE.entityToVo(orderRefund); | 
|---|
|  |  |  | orderDetailVo.setOrderRefund(orderRefundVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) { | 
|---|
|  |  |  | //            MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | //            OrderRefundVo orderRefundVo = MallOrderRefundConversion.INSTANCE.entityToVo(orderRefund); | 
|---|
|  |  |  | //            orderDetailVo.setOrderRefund(orderRefundVo); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (OrderStatusEnum.WAIT_PAY.getValue() == orderInfo.getStatus()) { | 
|---|
|  |  |  | Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 15); | 
|---|
|  |  |  | 
|---|
|  |  |  | long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false); | 
|---|
|  |  |  | orderDetailVo.setRemainTime(remainTime); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(2 == deliverType){ | 
|---|
|  |  |  | MallShopApply mallShopApply = mallShopApplyMapper.selectById(orderInfo.getShopId()); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(mallShopApply)){ | 
|---|
|  |  |  | ApiShopApplyVo apiShopApplyVo = new ApiShopApplyVo(); | 
|---|
|  |  |  | apiShopApplyVo.setName(mallShopApply.getName()); | 
|---|
|  |  |  | apiShopApplyVo.setPhone(mallShopApply.getPhone()); | 
|---|
|  |  |  | apiShopApplyVo.setSaleArea(mallShopApply.getSaleArea()); | 
|---|
|  |  |  | apiShopApplyVo.setLatitude(mallShopApply.getLatitude()); | 
|---|
|  |  |  | apiShopApplyVo.setLongitude(mallShopApply.getLongitude()); | 
|---|
|  |  |  | apiShopApplyVo.setShopName(mallShopApply.getShopName()); | 
|---|
|  |  |  | apiShopApplyVo.setAddress(mallShopApply.getAddress()); | 
|---|
|  |  |  | orderDetailVo.setApiShopApplyVo(apiShopApplyVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if(2 == deliverType){ | 
|---|
|  |  |  | //            MallShopApply mallShopApply = mallShopApplyMapper.selectById(orderInfo.getShopId()); | 
|---|
|  |  |  | //            if(ObjectUtil.isNotEmpty(mallShopApply)){ | 
|---|
|  |  |  | //                ApiShopApplyVo apiShopApplyVo = new ApiShopApplyVo(); | 
|---|
|  |  |  | //                apiShopApplyVo.setName(mallShopApply.getName()); | 
|---|
|  |  |  | //                apiShopApplyVo.setPhone(mallShopApply.getPhone()); | 
|---|
|  |  |  | //                apiShopApplyVo.setSaleArea(mallShopApply.getSaleArea()); | 
|---|
|  |  |  | //                apiShopApplyVo.setLatitude(mallShopApply.getLatitude()); | 
|---|
|  |  |  | //                apiShopApplyVo.setLongitude(mallShopApply.getLongitude()); | 
|---|
|  |  |  | //                apiShopApplyVo.setShopName(mallShopApply.getShopName()); | 
|---|
|  |  |  | //                apiShopApplyVo.setAddress(mallShopApply.getAddress()); | 
|---|
|  |  |  | //                orderDetailVo.setApiShopApplyVo(apiShopApplyVo); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | return orderDetailVo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); | 
|---|
|  |  |  | orderInfo.setReceivingTime(new Date()); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过支付流水记录,返回下单金额 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | MallMoneyFlow payFlow = mallMoneyFlowMapper.selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn( | 
|---|
|  |  |  | member.getId(), | 
|---|
|  |  |  | orderInfo.getOrderNo(), | 
|---|
|  |  |  | MallMoneyFlowTypeEnum.PAY.getCode(), | 
|---|
|  |  |  | MallMoneyFlow.STATUS_SUCCESS, | 
|---|
|  |  |  | MallMoneyFlow.IS_RETURN_N); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(payFlow)){ | 
|---|
|  |  |  | memberWalletService.addBalance(payFlow.getAmount().negate(),payFlow.getRtMemberId()); | 
|---|
|  |  |  | payFlow.setIsReturn(MallMoneyFlow.IS_RETURN_Y); | 
|---|
|  |  |  | mallMoneyFlowMapper.updateById(payFlow); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //产生补贴流水记录 | 
|---|
|  |  |  | agentProducer.sendDirectRewardMsg(orderInfo.getId()); | 
|---|
|  |  |  | //        /** | 
|---|
|  |  |  | //         * 通过支付流水记录,返回下单金额 | 
|---|
|  |  |  | //         */ | 
|---|
|  |  |  | //        MallMoneyFlow payFlow = mallMoneyFlowMapper.selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn( | 
|---|
|  |  |  | //                member.getId(), | 
|---|
|  |  |  | //                orderInfo.getOrderNo(), | 
|---|
|  |  |  | //                MallMoneyFlowTypeEnum.PAY.getCode(), | 
|---|
|  |  |  | //                MallMoneyFlow.STATUS_SUCCESS, | 
|---|
|  |  |  | //                MallMoneyFlow.IS_RETURN_N); | 
|---|
|  |  |  | //        if(ObjectUtil.isNotEmpty(payFlow)){ | 
|---|
|  |  |  | //            memberWalletService.addBalance(payFlow.getAmount().negate(),payFlow.getRtMemberId()); | 
|---|
|  |  |  | //            payFlow.setIsReturn(MallMoneyFlow.IS_RETURN_Y); | 
|---|
|  |  |  | //            mallMoneyFlowMapper.updateById(payFlow); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        //产生补贴流水记录 | 
|---|
|  |  |  | //        agentProducer.sendDirectRewardMsg(orderInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setCommentState(MallOrderInfo.COMMENT_STATE_YES); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过支付流水记录,返回下单金额 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | MallMoneyFlow payFlow = mallMoneyFlowMapper.selectOneByMemberIdAndOrderNoAndTypeAndStatusAndIsReturn( | 
|---|
|  |  |  | member.getId(), | 
|---|
|  |  |  | orderInfo.getOrderNo(), | 
|---|
|  |  |  | MallMoneyFlowTypeEnum.PAY.getCode(), | 
|---|
|  |  |  | MallMoneyFlow.STATUS_SUCCESS, | 
|---|
|  |  |  | MallMoneyFlow.IS_RETURN_N); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(payFlow)){ | 
|---|
|  |  |  | memberWalletService.addBalance(payFlow.getAmount().negate(),payFlow.getRtMemberId()); | 
|---|
|  |  |  | payFlow.setIsReturn(MallMoneyFlow.IS_RETURN_Y); | 
|---|
|  |  |  | mallMoneyFlowMapper.updateById(payFlow); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //产生补贴流水记录 | 
|---|
|  |  |  | agentProducer.sendDirectRewardMsg(orderInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ApiAddCommentDto> apiAddCommentDtos = addCommentDtos.getApiAddCommentDtos(); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(apiAddCommentDtos)){ | 
|---|
|  |  |  | for(ApiAddCommentDto apiAddCommentDto : apiAddCommentDtos){ | 
|---|
|  |  |  | Long skuId = apiAddCommentDto.getSkuId(); | 
|---|
|  |  |  | MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId); | 
|---|
|  |  |  | Long goodsId = apiAddCommentDto.getGoodsId(); | 
|---|
|  |  |  | List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goodsId); | 
|---|
|  |  |  | MallGoodsSku mallGoodsSku = mallGoodsSkus.get(0); | 
|---|
|  |  |  | MallGoods mallGoods = mallGoodsMapper.selectById(goodsId); | 
|---|
|  |  |  | MallGoodsComment mallGoodsComment = MallGoodsCommentConversion.INSTANCE.dtoToEntity(apiAddCommentDto); | 
|---|
|  |  |  | mallGoodsComment.setMemberId(member.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public FebsResponse subsidyAmountInfo() { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | ApiMallSubsidyAmountInfoVo apiMallSubsidyAmountInfoVo = new ApiMallSubsidyAmountInfoVo(); | 
|---|
|  |  |  | DateTime today = DateUtil.date(); | 
|---|
|  |  |  | DateTime yesterday = DateUtil.yesterday(); | 
|---|
|  |  |  | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | 
|---|
|  |  |  | String yyyyMMddToday = sdf.format(today); | 
|---|
|  |  |  | String yyyyMMddYesterday = sdf.format(yesterday); | 
|---|
|  |  |  | //今日补贴 | 
|---|
|  |  |  | BigDecimal todayAmount = this.baseMapper.selectTodayAmountByCreateTimeAndMemberId(yyyyMMddToday,member.getId()); | 
|---|
|  |  |  | apiMallSubsidyAmountInfoVo.setTodayAmount(todayAmount); | 
|---|
|  |  |  | //累计接单 | 
|---|
|  |  |  | Integer todayTotalCnt = this.baseMapper.selectCountByCreateTimeAndMemberId(null,member.getId()); | 
|---|
|  |  |  | apiMallSubsidyAmountInfoVo.setTodayTotalCnt(todayTotalCnt); | 
|---|
|  |  |  | //昨日补贴 | 
|---|
|  |  |  | BigDecimal yesterdayAmount = this.baseMapper.selectTodayAmountByCreateTimeAndMemberId(yyyyMMddYesterday,member.getId()); | 
|---|
|  |  |  | apiMallSubsidyAmountInfoVo.setYesterdayAmount(yesterdayAmount); | 
|---|
|  |  |  | //昨日累计接单 | 
|---|
|  |  |  | Integer totalYesterdayCnt = this.baseMapper.selectCountByCreateTimeAndMemberId(yyyyMMddYesterday,member.getId()); | 
|---|
|  |  |  | apiMallSubsidyAmountInfoVo.setTotalYesterdayCnt(totalYesterdayCnt); | 
|---|
|  |  |  | //获得总额 | 
|---|
|  |  |  | BigDecimal totalAmount = this.baseMapper.selectTodayAmountByCreateTimeAndMemberId(null,member.getId()); | 
|---|
|  |  |  | apiMallSubsidyAmountInfoVo.setTotalAmount(totalAmount); | 
|---|
|  |  |  | return new FebsResponse().success().data(apiMallSubsidyAmountInfoVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|