123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- package com.caimei.modules.hehe.service;
- import com.caimei.modules.bulkpurchase.dao.OrderInvoiceDao;
- import com.caimei.modules.bulkpurchase.service.OrderInvoiceService;
- import com.caimei.modules.hehe.dao.CmHeheUserDao;
- import com.caimei.modules.hehe.dao.HeHeNewOrderDao;
- import com.caimei.modules.order.dao.*;
- import com.caimei.modules.order.entity.*;
- import com.caimei.modules.order.service.CmReceiptOrderRelationService;
- import com.caimei.modules.order.service.OrderUserInfoService;
- import com.caimei.modules.order.utils.NewOrderStatus;
- import com.caimei.modules.product.dao.CmPromotionDao;
- import com.caimei.modules.product.dao.ProductDao;
- import com.caimei.modules.product.entity.OrderProductLadderPrice;
- import com.caimei.modules.user.dao.CmUserDao;
- import com.caimei.modules.user.dao.NewCmClubDao;
- import com.caimei.modules.user.dao.NewCmShopDao;
- import com.caimei.modules.user.entity.CmUser;
- import com.caimei.modules.user.service.CmUserBalanceRecordService;
- import com.caimei.modules.user.service.CmUserService;
- import com.caimei.utils.AppKeys;
- import com.caimei.utils.AppUtils;
- import com.caimei.utils.SysConfig;
- import com.thinkgem.jeesite.common.persistence.Page;
- import com.thinkgem.jeesite.common.service.CrudService;
- import com.thinkgem.jeesite.common.utils.StringUtils;
- import org.apache.commons.collections.CollectionUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.stream.IntStream;
- /**
- * Description
- *
- * @author : plf
- * @date : 2021/4/27
- */
- @Service
- @Transactional(readOnly = false)
- public class HeHeNewOrderService extends CrudService<HeHeNewOrderDao, NewOrder> {
- @Autowired
- private HeHeNewOrderDao heHeNewOrderDao;
- @Resource
- private NewOrderProductDao newOrderProductDao;
- @Resource
- private OrderInvoiceService orderInvoiceService;
- @Resource
- private OrderUserInfoService orderUserInfoService;
- @Resource
- private NewShopOrderDao newShopOrderDao;
- @Resource
- private NewCmClubDao newCmClubDao;
- @Resource
- private LogisticsBatchDao logisticsBatchDao;
- @Resource
- private LogisticsRecordDao logisticsRecordDao;
- @Resource
- private LogisticsInformationDao logisticsInformationDao;
- @Resource
- private OrderInvoiceDao orderInvoiceDao;
- @Resource
- private NewOrderConfigDao newOrderConfigDao;
- @Resource
- private ProductDao productDao;
- @Resource
- private NewCmShopDao newCmShopDao;
- @Resource
- private CmUserDao cmUserDao;
- @Resource
- private CmUserService cmUserService;
- @Resource
- private CmReturnedPurchaseProductDao cmReturnedPurchaseProductDao;
- @Resource
- private CmDiscernReceiptDao cmDiscernReceiptDao;
- @Resource
- private CmUserBalanceRecordService cmUserBalanceRecordService;
- @Resource
- private CmReturnedPurchaseDao cmReturnedPurchaseDao;
- @Resource
- private CmPayShopRecordDao cmPayShopRecordDao;
- @Resource
- private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
- @Autowired
- private CmReceiptOrderRelationService cmReceiptOrderRelationService;
- @Autowired
- private CmPromotionDao cmPromotionDao;
- @Autowired
- private CmHeheUserDao cmHeheUserDao;
- @Override
- public NewOrder get(String id) {
- NewOrder newOrder = super.get(id);
- CmUser user = cmUserDao.get(newOrder.getUserID().toString());
- if (user != null) {
- //查询用户余额,机构名
- newOrder.setBuyer(user.getName());
- Double ableUserMoney = user.getAbleUserMoney() == null ? 0d : user.getAbleUserMoney();
- newOrder.setAbleUserMoney(ableUserMoney);
- }
- List<Integer> l = new ArrayList<>();
- l.add(newOrder.getOrderID());
- List<Integer> orderIds = cmDiscernReceiptDao.findRebateOrderID(l);
- if (orderIds.contains(newOrder.getOrderID()))
- newOrder.setRebateOrder("1");
- else
- newOrder.setRebateOrder("0");
- if (null != newOrder) {
- //获取订单客户
- OrderUserInfo orderUserInfo = orderUserInfoService.findByOrderID(newOrder.getOrderID());
- if (null != orderUserInfo) {
- newOrder.setBpOrderUserinfo(orderUserInfo);
- }
- //获取订单商品
- List<NewOrderProduct> list = new ArrayList<>();
- List<NewShopOrder> shopOrders = newShopOrderDao.findListByOrderID(newOrder.getOrderID());
- if (CollectionUtils.isNotEmpty(shopOrders)) {
- for (NewShopOrder shopOrder : shopOrders) {
- List<NewOrderProduct> pList = newOrderProductDao.findListByShopOrderID(shopOrder.getShopOrderID());
- pList.forEach(orderProduct -> {
- if (orderProduct.getLadderPriceFlag() == 1) {
- // 查询订单商品阶梯价格
- List<OrderProductLadderPrice> ladderPriceList = newOrderProductDao.findladderPriceList(orderProduct.getOrderProductID());
- if (null != ladderPriceList && ladderPriceList.size() > 0) {
- IntStream.range(0, ladderPriceList.size()).forEach(i -> {
- if (i == ladderPriceList.size() - 1) {
- ladderPriceList.get(i).setBuyNumRangeShow("≥" + ladderPriceList.get(i).getBuyNum());
- } else {
- String buyNumRangeShow = ladderPriceList.get(i).getBuyNum() + "~" + (ladderPriceList.get(i + 1).getBuyNum() - 1);
- ladderPriceList.get(i).setBuyNumRangeShow(buyNumRangeShow);
- }
- });
- orderProduct.setOrderProductLadderPriceList(ladderPriceList);
- }
- }
- //分销者名称
- if (orderProduct.getHeUserId() != null && orderProduct.getHeUserId() > 0) {
- String name = heHeNewOrderDao.findHeUser(orderProduct.getHeUserId());
- orderProduct.setHeUserName(name);
- }
- });
- list.addAll(pList);
- shopOrder.setNewOrderProducts(pList);
- if (pList.stream().anyMatch(p -> p.getProductID() == 999))
- shopOrder.setPostFeeCos("1");
- pList.forEach(item -> {
- if (NewOrderStatus.hasReturn(newOrder.getStatus())) {
- Integer returningNum = newOrderProductDao.getReturningNum(item.getOrderProductID());
- Integer returnedNum = newOrderProductDao.getReturnedNum(item.getOrderProductID());
- item.setReturningNum(returningNum);
- item.setReturnedNum(returnedNum);
- }
- /**确认收货信息*/
- if (NewOrderStatus.hasReceived(newOrder.getStatus())) {
- Integer receivedNum = newOrderProductDao.getReceivedNum(item.getOrderProductID());
- item.setReceivedNum(receivedNum);
- }
- String domain = SysConfig.getStringConfig("crm.server.domain");
- item.setProductImage(AppUtils.getProductImageURL(item.getProductImage(), AppKeys.ORIGINAL_PICTURE, domain));
- if (item != null && item.getOrderPromotionsId() != null && item.getOrderPromotionsId() > 0) {
- item.setProductPromotion(cmPromotionDao.findOrderPromotions(item.getOrderPromotionsId()));
- }
- });
- Double payed = cmPayShopRecordDao.sumByShopOrderID(shopOrder.getShopOrderID());
- shopOrder.setPayed(payed);
- }
- newOrder.setNewShopOrders(shopOrders);
- }
- if (CollectionUtils.isNotEmpty(list)) {
- newOrder.setOrderProduct(list);
- double freight = 0D;
- double totalAddedValueTax = 0D;
- for (NewOrderProduct op : list) {
- if (op.getProductID().intValue() == 999) { //邮费商品
- freight += op.getPrice();
- }
- totalAddedValueTax += op.getTotalAddedValueTax();
- }
- if ("1".equals(newOrder.getFreePostFlag())) newOrder.setFreight(freight);
- newOrder.setTotalAddedValueTax(totalAddedValueTax);
- }
- shopOrders.sort((so1, so2) -> {
- //给子订单排序 邮费排在最后 其余的按shopOrderID asc
- if ("1".equals(so1.getPostFeeCos())) return 1;
- return so1.getShopOrderID() - so2.getShopOrderID();
- });
- }
- return newOrder;
- }
- public Page<NewOrder> findPage(Page<NewOrder> page, NewOrder entity) {
- Page<NewOrder> pageResult = super.findPage(page, entity);
- List<NewOrder> results = pageResult.getList();
- List<Integer> oId = results.stream().map(NewOrder::getOrderID).collect(Collectors.toList());
- //看看这些订单有哪些是返佣订单 返回他们的orderID
- List<Integer> orderIds = null;
- if (CollectionUtils.isNotEmpty(oId)) {
- orderIds = cmDiscernReceiptDao.findRebateOrderID(results.stream().map(NewOrder::getOrderID).collect(Collectors.toList()));
- }
- //从查询到的订单列表中 找到正在退款中的订单集合
- List<Integer> orderIdsInReturn = null;
- List<Integer> orderIdsInApplyReturn = null;//查询可以申请退款的订单ID
- if (CollectionUtils.isNotEmpty(oId)) {
- orderIdsInReturn = cmReturnedPurchaseDao.findOrderIDInReturnPurchase(oId);
- orderIdsInApplyReturn = cmReturnedPurchaseDao.findOrderIDsInApplyReturnFlag(oId);
- }
- for (NewOrder order : results) {
- order.setAbleUserMoney(0d);
- if ((orderIds != null && orderIds.contains(order.getOrderID())) || "1".equals(order.getRebateFlag())) {
- order.setRebateOrder("1");
- } else {
- order.setRebateOrder("0");
- List<Integer> ids = cmReceiptOrderRelationDao.toAudit(order.getOrderID());
- if (ids != null && ids.size() > 0) {
- order.setToAudit("1");
- }
- }
- if (orderIdsInReturn != null && orderIdsInReturn.contains(order.getOrderID())) {
- order.setReturnedPurchaseStatus("1");
- } else {
- order.setReturnedPurchaseStatus("0");
- }
- if (orderIdsInApplyReturn != null && orderIdsInApplyReturn.contains(order.getOrderID())) {
- order.setApplyReturnedPurchaseFlag("0");
- } else {
- order.setApplyReturnedPurchaseFlag("1");
- }
- List<NewShopOrder> shopOrders = order.getNewShopOrders();
- if (shopOrders != null && shopOrders.size() == 1) {
- order.setShopName(shopOrders.get(0).getShopName());
- }
- int count = 0;
- for (NewShopOrder shopOrder : order.getNewShopOrders()) {
- shopOrder.setOrderID(order.getOrderID());
- shopOrder.setOrderNo(order.getOrderNo());
- shopOrder.setOrderType(Integer.parseInt(order.getOrderType()));
- shopOrder.setReceiver(order.getReceiver());
- shopOrder.setOrderSource(order.getOrderSource());
- shopOrder.setOrderTime(order.getOrderTime());
- shopOrder.setBuyer(order.getBuyer());
- if (shopOrder.getShopID() != 998) {
- count++;
- }
- Integer shopOrderID = shopOrder.getShopOrderID();//子订单ID
- //通过子订单ID查询子订单信息
- NewShopOrder newShopOrder = newShopOrderDao.get(String.valueOf(shopOrderID));
- if (null != newShopOrder) {
- shopOrder.setFee(newShopOrder.getFee());
- shopOrder.setShouldPayProduct(newShopOrder.getShouldPayProduct());
- List<NewOrderProduct> pList = newOrderProductDao.findListByShopOrderID(shopOrderID);
- pList.forEach(orderProduct -> {
- //充值定金商品
- if (6060 == orderProduct.getProductID()) {
- order.setRechargeGoods(1);
- }
- });
- } else {
- shopOrder.setFee(0d);
- shopOrder.setShouldPayProduct(0d);
- }
- }
- //一个子订单只有一个商品时,不可拆分
- if (order.getProductCount() == null) {
- order.setProductCount(1);
- }
- if (order.getProductCount() <= count) {
- order.setSplitFlag("0");
- }
- //是否抹平支付过(抹平最多只允许存在一次)
- CmDiscernReceipt cmDiscernReceipt = cmDiscernReceiptDao.findSmoothoutInfo(order.getOrderID().toString());
- if (null != cmDiscernReceipt) {
- order.setAssociationType(cmDiscernReceipt.getAssociationType());
- String confirmType = cmDiscernReceipt.getConfirmType();
- order.setConfirmType(confirmType);
- // 是否是一比款收了多个订单
- if (StringUtils.equals(confirmType, "1") || StringUtils.equals(confirmType, "2") || StringUtils.equals(confirmType, "3")) {
- List<CmReceiptOrderRelation> byReceiptList = cmReceiptOrderRelationService.findByReceiptID(cmDiscernReceipt.getId());
- if (CollectionUtils.isNotEmpty(byReceiptList) && byReceiptList.size() > 1) {
- order.setReceiptOrderFlag(true);
- }
- }
- }
- // 订单已收款才会出现抹平或者多收退余额,(已收再退款或者撤销退款订单即使存在抹平也需要当未抹平重新计算付款)
- // 抹平明细
- String receiptStatus = order.getReceiptStatus();
- if (StringUtils.equals("3", receiptStatus)) {
- if (null != cmDiscernReceipt) {
- String confirmType = cmDiscernReceipt.getConfirmType();
- order.setConfirmType(confirmType);
- double associateAmount = cmDiscernReceiptDao.getAssociateAmount(String.valueOf(order.getOrderID()));
- order.setOrderReceivedAmount(associateAmount);
- //大额退余额
- if (StringUtils.equals("3", confirmType)) {
- String id = cmDiscernReceipt.getId();
- double returnBalanceAmount = cmDiscernReceiptDao.getReturnBalanceAmount(id);
- order.setReturnBalanceAmount(returnBalanceAmount);
- }
- }
- }
- }
- return pageResult;
- }
- }
|