|
@@ -1,24 +1,35 @@
|
|
|
package com.zanxiang.manage.service.Impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.zanxiang.common.utils.bean.BeanUtils;
|
|
|
import com.zanxiang.manage.domain.dto.GameDTO;
|
|
|
import com.zanxiang.manage.domain.dto.GameUserRoleDTO;
|
|
|
+import com.zanxiang.manage.domain.params.OrderParam;
|
|
|
import com.zanxiang.manage.domain.params.UserOrderListParam;
|
|
|
import com.zanxiang.manage.domain.vo.GameCategoryVO;
|
|
|
+import com.zanxiang.manage.domain.vo.OrderListVO;
|
|
|
+import com.zanxiang.manage.domain.vo.OrderVO;
|
|
|
import com.zanxiang.manage.domain.vo.UserOrderListVO;
|
|
|
-import com.zanxiang.manage.service.GameCategoryService;
|
|
|
-import com.zanxiang.manage.service.GameService;
|
|
|
-import com.zanxiang.manage.service.GameUserRoleService;
|
|
|
-import com.zanxiang.manage.service.OrderService;
|
|
|
+import com.zanxiang.manage.service.*;
|
|
|
import com.zanxiang.mybatis.entity.Order;
|
|
|
import com.zanxiang.mybatis.mapper.OrderMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
/**
|
|
|
* @author : lingfeng
|
|
|
* @time : 2022-07-05
|
|
@@ -37,6 +48,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@Autowired
|
|
|
private GameCategoryService gameCategoryService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PromoChannelService promoChannelService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取用户下单记录
|
|
|
*
|
|
@@ -81,4 +95,84 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
orderListVO.setGameName(gameDTO.getName());
|
|
|
return orderListVO;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单列表查询
|
|
|
+ *
|
|
|
+ * @param param : 查询参数
|
|
|
+ * @return : 返回订单列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public OrderListVO orderList(OrderParam param) {
|
|
|
+ //渠道列表
|
|
|
+ List<Long> agentIdList;
|
|
|
+ if (param.getChannelId() == null) {
|
|
|
+ agentIdList = promoChannelService.listByAccountOrPitcherId(param.getAccountId(), param.getPitcherId());
|
|
|
+ } else {
|
|
|
+ agentIdList = Collections.singletonList(param.getChannelId());
|
|
|
+ }
|
|
|
+ //根据条件, 匹配渠道
|
|
|
+ if (agentIdList != null && agentIdList.isEmpty()) {
|
|
|
+ return new OrderListVO(param.toPage().getSize());
|
|
|
+ }
|
|
|
+ IPage<OrderVO> page = page(param.toPage(), getListWrapper(param, agentIdList, "*")).convert(this::orderToVo);
|
|
|
+ if (page.getTotal() == 0) {
|
|
|
+ return new OrderListVO(param.toPage().getSize());
|
|
|
+ }
|
|
|
+ //统计:订单金额与实付金额
|
|
|
+ Order total = super.getOne(getListWrapper(param, agentIdList, "IFNULL(SUM(order_amount),0) orderAmount, IFNULL(SUM(real_amount),0) realAmount"));
|
|
|
+ HashMap<String, BigDecimal> totalData = new HashMap<>();
|
|
|
+ if (total == null) {
|
|
|
+ totalData.put("totalOrderAmount", new BigDecimal("0.00"));
|
|
|
+ totalData.put("totalRealAmount", new BigDecimal("0.00"));
|
|
|
+ } else {
|
|
|
+ totalData.put("totalOrderAmount", total.getAmount());
|
|
|
+ totalData.put("totalRealAmount", total.getRealAmount());
|
|
|
+ }
|
|
|
+ OrderListVO orderListVO = new OrderListVO();
|
|
|
+ orderListVO.setTotal(page.getTotal());
|
|
|
+ orderListVO.setSize(page.getSize());
|
|
|
+ orderListVO.setCurrent(page.getCurrent());
|
|
|
+ orderListVO.setPages(page.getPages());
|
|
|
+ orderListVO.setData(page.getRecords());
|
|
|
+ orderListVO.setTotalData(totalData);
|
|
|
+ return orderListVO;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, String select) {
|
|
|
+ return new QueryWrapper<Order>().select(select).lambda()
|
|
|
+ .eq(Strings.isNotBlank(param.getOrderId()), Order::getId, param.getOrderId())
|
|
|
+ .eq(Strings.isNotBlank(param.getCpOrderId()), Order::getCpOrderId, param.getCpOrderId())
|
|
|
+ .eq(Strings.isNotBlank(param.getMerchantOrderNo()), Order::getMerchantOrderNo, param.getMerchantOrderNo())
|
|
|
+ .eq(Strings.isNotBlank(param.getUserId()), Order::getUserId, param.getUserId())
|
|
|
+ .eq(Strings.isNotBlank(param.getUsername()), Order::getUsername, param.getUsername())
|
|
|
+ .eq(Strings.isNotBlank(param.getRoleName()), Order::getRoleName, param.getRoleName())
|
|
|
+ .ge(param.getRegTimeStart() != null, Order::getRegTime, param.getRegTimeStart() == null ? null : LocalDateTime.of(param.getRegTimeStart(), LocalTime.MIN))
|
|
|
+ .le(param.getRegTimeEnd() != null, Order::getRegTime, param.getRegTimeEnd() == null ? null : LocalDateTime.of(param.getRegTimeEnd(), LocalTime.MAX))
|
|
|
+ .eq(param.getCpId() != null, Order::getCpId, param.getCpId())
|
|
|
+ .eq(param.getRegGameId() != null, Order::getRegGameId, param.getRegGameId())
|
|
|
+ .eq(param.getGameId() != null, Order::getGameId, param.getGameId())
|
|
|
+ .in(CollectionUtils.isNotEmpty(agentIdList), Order::getAgentId, agentIdList)
|
|
|
+ .eq(Strings.isNotBlank(param.getDeviceSystem()), Order::getDeviceSystem, param.getDeviceSystem())
|
|
|
+ .eq(param.getIsSwitch() != null, Order::getIsSwitch, param.getIsSwitch())
|
|
|
+ .eq(Strings.isNotBlank(param.getProductName()), Order::getProductName, param.getProductName())
|
|
|
+ .eq(Strings.isNotBlank(param.getPayWayId()), Order::getPayWayId, param.getPayWayId())
|
|
|
+ .eq(Strings.isNotBlank(param.getMerchantNo()), Order::getMerchantNo, param.getMerchantNo())
|
|
|
+ .eq(param.getStatus() != null, Order::getStatus, param.getStatus())
|
|
|
+ .eq(param.getCpStatus() != null, Order::getCpStatus, param.getCpStatus())
|
|
|
+ .eq(param.getIsFirstRecharge() != null, Order::getIsFirstRecharge, param.getIsFirstRecharge())
|
|
|
+ .eq(param.getCallBackStatus() != null, Order::getCallBackStatus, param.getCallBackStatus())
|
|
|
+ .ge(param.getBeginDate() != null, Order::getCreateTime, param.getBeginDate() == null ? null : LocalDateTime.of(param.getBeginDate(), LocalTime.MIN))
|
|
|
+ .le(param.getEndDate() != null, Order::getCreateTime, param.getEndDate() == null ? null : LocalDateTime.of(param.getEndDate(), LocalTime.MAX))
|
|
|
+ .orderByDesc(Order::getCreateTime);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private OrderVO orderToVo(Order order) {
|
|
|
+ if (Objects.isNull(order)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return BeanUtils.copy(order, OrderVO.class);
|
|
|
+ }
|
|
|
}
|