xiaoyong931011
2023-04-03 c56372c3c3320a92af9b8fcd7e31ac29139f98ba
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -14,10 +14,7 @@
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;
@@ -103,18 +100,36 @@
            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(
                DataDictionaryEnum.BUY_TIMES.getType(), DataDictionaryEnum.BUY_TIMES.getCode());
        Integer buyTimes = Integer.parseInt(buyTimesDic.getValue());
        DateTime date = DateUtil.date();
        DateTime date = DateUtil.offsetHour(DateUtil.date(), -1);
//        DateTime date = DateUtil.date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        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();
@@ -127,6 +142,7 @@
        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());
@@ -146,7 +162,7 @@
                orderItem.setOrderId(orderInfo.getId());
                orderItem.setPrice(sku.getPresentPrice());
                orderItem.setGoodsId(sku.getGoodsId());
                orderItem.setGoodsName(sku.getGoodsName());
                orderItem.setGoodsName(goods.getGoodsName());
                orderItem.setSkuId(sku.getId());
                orderItem.setStyleName(sku.getStyleName());
                orderItem.setSkuName(sku.getSkuName());
@@ -158,7 +174,7 @@
                sku.setSkuVolume(sku.getSkuVolume() + 1);
                mallGoodsSkuMapper.updateById(sku);
                if (addOrderDto.getType() == 1) {
                if (1 == addOrderDto.getType() ) {
                    mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
                }
                mallOrderItemMapper.insert(orderItem);
@@ -449,18 +465,18 @@
        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);
@@ -468,20 +484,20 @@
            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;
    }
@@ -501,22 +517,22 @@
        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());
    }
@@ -650,13 +666,30 @@
        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());
@@ -684,4 +717,31 @@
        }
    }
    @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);
    }
}