package com.ruoyi.order.service.impl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.md5.MD5Utils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.IteratorUtils;
import com.ruoyi.common.utils.SnowflakeIdWorker;
import com.ruoyi.goods.domain.PmsComment;
import com.ruoyi.goods.domain.PmsSku;
import com.ruoyi.goods.service.IPmsCommentService;
import com.ruoyi.goods.service.IPmsGoodsService;
import com.ruoyi.goods.service.IPmsSkuService;
import com.ruoyi.integral.domain.CustomerPoint;
import com.ruoyi.integral.service.CustomerPointService;
import com.ruoyi.integral.service.PointSetingService;
import com.ruoyi.marketing.domain.Marketing;
import com.ruoyi.marketing.domain.RedEnvelopeCode;
import com.ruoyi.marketing.domain.TrySkuApply;
import com.ruoyi.marketing.service.*;
import com.ruoyi.member.domain.UmsMember;
import com.ruoyi.member.domain.UmsMemberAddress;
import com.ruoyi.member.service.IUmsMemberService;
import com.ruoyi.member.service.SmsService;
import com.ruoyi.order.domain.*;
import com.ruoyi.order.service.*;
import com.ruoyi.order.vo.*;
import com.ruoyi.store.domain.TStoreInfo;
import com.ruoyi.store.service.ITStoreCommentService;
import com.ruoyi.store.service.ITStoreInfoService;
import com.ruoyi.util.CommonConstant;
import com.ruoyi.util.PageHelper;
import com.ruoyi.util.ThreadTask;
import org.apache.commons.lang.ArrayUtils;
import org.apache.poi.hssf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* Created by 魔金商城 on 17/11/7.
* 订单服务接口
*/
@Service
public class OrderServiceApiImpl implements OrderServiceApi {
/**
* 订单状态map
*/
private static final Map<String, String> statusMap = new HashMap<>();
static {
statusMap.put("1", "待付款");
statusMap.put("2", "待发货");
statusMap.put("3", "待收货");
statusMap.put("4", "已完成");
statusMap.put("5", "已取消");
statusMap.put("6", "退款通过");
statusMap.put("7", "退货通过");
}
/**
* 调试日志
*/
private Logger logger = LoggerFactory.getLogger(OrderServiceApiImpl.class);
/**
* 注入结算服务接口
*/
@Autowired
private SettlementService settlementService;
/**
* 注入序号生成器
*/
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
/**
* 注入单品服务接口
*/
@Autowired
private IPmsSkuService skuService;
/**
* 注入订单服务接口
*/
@Autowired
private IOmsOrderService orderService;
/**
* 注入积分设置服务接口
*/
@Autowired
private PointSetingService pointSetingService;
/**
* 注入用户积分服务接口
*/
@Autowired
private CustomerPointService customerPointService;
/**
* 注入购物车服务接口
*/
@Autowired
private IOmsShoppingCartService shoppingCartService;
/**
* 注入购物车聚合服务
*/
@Autowired
private ShoppingCartServiceApi shoppingCartServiceApi;
/**
* 注入优惠券服务接口
*/
@Autowired
private CouponService couponService;
/**
* 订单操作日志服务接口
*/
@Autowired
private IOmsOrderOperationLogService orderOperatonLogService;
/**
* 注入单品评分服务接口
*/
@Autowired
private IPmsCommentService commentService;
/**
* 注入店铺评分服务接口
*/
@Autowired
private ITStoreCommentService storeCommentService;
/**
* 注入会员抢购纪录
*/
@Autowired
private CustomerPanicRecordService customerPanicRecordService;
/**
* 注入会员服务接口
*/
@Autowired
private IUmsMemberService customerService;
/**
* 注入店铺服务接口
*/
@Autowired
private ITStoreInfoService storeInfoService;
/**
* 注入红包服务接口
*/
@Autowired
private RedEnvelopeService redEnvelopeService;
/**
* 试用申请服务接口
*/
@Autowired
private TrySkuApplyService trySkuApplyService;
/**
* 注入退单聚合服务接口
*/
@Autowired
private BackOrderServiceApi backOrderServiceApi;
/**
* 注入订单设置服务
*/
@Autowired
private IOmsOrderSettingService orderSettingService;
/**
* 注入佣金记录服务
*/
@Autowired
private IOmsCommissionRecordsService commissionRecordService;
/**
* 注入众筹服务接口
*/
@Resource(name = "crowdFundingService")
private MarketingService crowdFundingService;
/**
* 注入促销查询服务
*/
@Autowired
private MarketingQueryService marketingQueryService;
/**
* 社区团购服务器接口TODO
*/
// @Autowired
// private CommunityBuyService communityBuyService;
/**
* 注入退单服务接口
*/
@Autowired
private IOmsBackOrderService backOrderService;
/**
* 注入短信服务接口
*/
@Autowired
private SmsService smsService;
/**
* 注入物流公司服务接口
*/
@Autowired
private IOmsLogisticsCompanyService logisticsCompanyService;
/**
* 注入账单记录服务接口
*/
@Autowired
private IOmsBillingRecordsService billingRecordService;
/**
* 注入商品服务接口
*/
@Autowired
private IPmsGoodsService spuService;
@Transactional
@Override
public SubmitOrderResponse submitOrder(SubmitOrderParams submitOrderParams) {
if (Objects.isNull(submitOrderParams)) {
logger.debug("submitOrder fail due to params is empty....");
return SubmitOrderResponse.buildFail("R-0000011");
}
logger.debug("submitOrder and submitOrderParams :{}", submitOrderParams);
// 获得订单的每个店铺的结算信息
OrderSettlement orderSettlement = settlementService.orderSettlement(OrderSettlementRequest.build(submitOrderParams.getIds(), submitOrderParams.getSkuInfo(), submitOrderParams.getIsGroup(), submitOrderParams.getGroupId(), submitOrderParams.getAddressId(), submitOrderParams.getCrowdfundingId(), submitOrderParams.getCrowdfundingType(), submitOrderParams.getCrowdfundingMoney()).addCustomerId(submitOrderParams.getCustomerId()));
// 订单中没有单品信息
if (!orderSettlement.validateSkus()) {
logger.error("submitOrder fail due to order has no goods....");
throw new ServiceException("R-000006");
}
//店铺状态异常,没有开店或者已过有效期
if (orderSettlement.getStoreSettlements().stream().anyMatch(storeSettlement -> !storeInfoService.isEffective(storeSettlement.getStoreId()))) {
logger.error("submitOrder fail due to have store that is not effective....");
throw new ServiceException("R-000018");
}
// 没有收货地址(众筹的无回报支持不需要收货地址)
if (!orderSettlement.validateCustomerAddress() && !submitOrderParams.isNoRetrun()) {
logger.error("submitOrder fail due to has no address...");
throw new ServiceException("R-000007");
}
//如果存在实购数量小于最小起订数量的单�
没有合适的资源?快使用搜索试试~ 我知道了~
基于RuoYi(若依)的移动商城payshop

共2470个文件
java:1290个
vue:350个
js:303个


温馨提示
RuoYi(若依)是一个优秀的基于Spring Boot 和多平台的应用框架,payshop是基于RuoYi的优秀的移动商城系统。
资源详情
资源评论
资源推荐
收起资源包目录





































































































共 2470 条
- 1
- 2
- 3
- 4
- 5
- 6
- 25

















jnagri
- 粉丝: 8
- 资源: 30
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论2