xiaoyong931011
2022-12-23 78bbc1dae1bb20acb51fd454adf53b3ab5ae97b3
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;
@@ -99,6 +96,17 @@
        if(memberLevelCode < goodsStarCode){
            throw new FebsException("会员等级不够");
        }
        if (MallGoods.ISSALE_STATUS_DISABLED.equals(goods.getIsSale())) {
            throw new FebsException(goods.getGoodsName() + "已下架");
        }
        /**
         * 存在未支付的订单无法下单
         */
        Integer orderIng = this.baseMapper.selectOrderInfoByStatusAndMemberId(OrderStatusEnum.FINISH.getValue(), mallMember.getId());
        if(1 <= orderIng){
            throw new FebsException("请先完成未完成的订单");
        }
        /**
         * 会员一天最多下单次数
         */
@@ -114,135 +122,54 @@
            throw new FebsException("会员今日已无法购买");
        }
//        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
//        if (address == null) {
//            throw new FebsException("地址不存在");
//        }
        String orderNo = MallUtils.getOrderNum();
        MallOrderInfo orderInfo = new MallOrderInfo();
        orderInfo.setOrderNo(orderNo);
        orderInfo.setOrderTime(new Date());
        orderInfo.setMemberId(member.getId());
        orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
//        orderInfo.setName(address.getName());
//        orderInfo.setAddress(address.getArea() + address.getAddress());
//        orderInfo.setPhone(address.getPhone());
//        orderInfo.setLatitude(address.getLatitude());
//        orderInfo.setLongitude(address.getLongitude());
        orderInfo.setRemark(addOrderDto.getRemark());
        orderInfo.setOrderType(addOrderDto.getOrderType());
        //补贴金额
        orderInfo.setSubsidyAmount(goods.getSubsidyAmount());
        if (CollUtil.isEmpty(addOrderDto.getItems())) {
            throw new FebsException("参数错误");
        }
//        int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType();
//        if(2 == deliverType){
//            if(ObjectUtil.isEmpty(addOrderDto.getShopId())){
//                throw new FebsException("请选择门店");
//            }
//            Long shopId = addOrderDto.getShopId();
//            MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId);
//            if(ObjectUtil.isEmpty(mallShopApply)){
//                throw new FebsException("请选择门店");
//            }
//            if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){
//                throw new FebsException("请选择门店");
//            }
//            orderInfo.setShopId(shopId);
//        }
        this.baseMapper.insert(orderInfo);
        BigDecimal total = BigDecimal.ZERO;
        BigDecimal carriage = BigDecimal.ZERO;
        for (AddOrderItemDto item : addOrderDto.getItems()) {
            MallOrderItem orderItem = new MallOrderItem();
            // 积分商品提交订单
            if (addOrderDto.getOrderType() == 2) {
                MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
                if (mallGoods.getStock() < item.getCnt()) {
                    throw new FebsException(mallGoods.getGoodsName() + "库存不足");
                }
                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
                }
                BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
                orderItem.setAmount(amount);
                orderItem.setCnt(item.getCnt());
                orderItem.setOrderId(orderInfo.getId());
                orderItem.setPrice(mallGoods.getScore());
                orderItem.setGoodsId(mallGoods.getId());
                orderItem.setGoodsName(mallGoods.getGoodsName());
                orderItem.setStyleName(mallGoods.getGoodsName());
                orderItem.setSkuName(mallGoods.getGoodsName());
                orderItem.setSkuImage(mallGoods.getThumb());
                total = total.add(amount);
            } else {
                MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
        List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goods.getId());
        for (MallGoodsSku sku : mallGoodsSkus) {
                MallOrderItem orderItem = new MallOrderItem();
                if (sku == null) {
                    throw new FebsException("购买商品或sku不存在");
                }
                if (sku.getStock() < item.getCnt()) {
                if (sku.getStock() < 1) {
                    throw new FebsException(sku.getSkuName() + "库存不足");
                }
                MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
                // 零撸专区购买
                if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
                    List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
                    if (CollUtil.isNotEmpty(items)) {
                        throw new FebsException("无法重复领取同一个商品");
                    }
                }
                if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                    throw new FebsException(mallGoods.getGoodsName() + "已下架");
                }
                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(1));
                orderItem.setAmount(amount);
                orderItem.setCnt(item.getCnt());
                orderItem.setCnt(1);
                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());
                orderItem.setSkuImage(sku.getSkuImage());
                orderItem.setIsNormal(mallGoods.getIsNormal());
                orderItem.setIsNormal(goods.getIsNormal());
                orderItem.setCostPrice(sku.getCostPrice());
                total = total.add(amount);
                carriage = carriage.add(mallGoods.getCarriage());
                sku.setStock(sku.getStock() - item.getCnt());
                sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
                sku.setStock(sku.getStock() - 1);
                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);
                mallOrderItemMapper.insert(orderItem);
        }
        orderInfo.setAmount(total);
//        if(2 == deliverType){
//            orderInfo.setDeliverType(2);
//            orderInfo.setCarriage(BigDecimal.ZERO);
//        }else{
//            orderInfo.setDeliverType(1);
//            orderInfo.setCarriage(carriage);
//        }
        BigDecimal presentPrice = new BigDecimal(goods.getPresentPrice()).setScale(2,BigDecimal.ROUND_DOWN);
        orderInfo.setAmount(presentPrice);
        this.baseMapper.updateById(orderInfo);
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
@@ -762,4 +689,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(yyyyMMddToday,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);
    }
}