|
@@ -3,30 +3,46 @@ package com.zanxiang.game.back.serve.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.github.sd4324530.jtuple.Tuple2;
|
|
|
import com.github.sd4324530.jtuple.Tuple3;
|
|
|
import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
|
|
|
import com.zanxiang.game.back.serve.dao.mapper.GameOceanengineAppOrderLogMapper;
|
|
|
import com.zanxiang.game.back.serve.oceanengine.MiniGameCallback;
|
|
|
+import com.zanxiang.game.back.serve.pojo.dto.GameOceanengineAppOrderLogDTO;
|
|
|
import com.zanxiang.game.back.serve.pojo.entity.*;
|
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackUnitEnum;
|
|
|
+import com.zanxiang.game.back.serve.pojo.vo.*;
|
|
|
+import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineAppOrderLogVO;
|
|
|
+import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineAppOrderLogVO;
|
|
|
import com.zanxiang.game.back.serve.service.*;
|
|
|
import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
|
|
|
+import com.zanxiang.game.back.serve.utils.OrderUtil;
|
|
|
+import com.zanxiang.game.module.base.ServerInfo;
|
|
|
+import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
|
|
|
+import com.zanxiang.game.module.base.rpc.IAgentRpc;
|
|
|
+import com.zanxiang.module.util.bean.BeanUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class GameOceanengineAppOrderLogServiceImpl extends ServiceImpl<GameOceanengineAppOrderLogMapper, GameOceanengineAppOrderLog>
|
|
|
-implements IGameOceanengineAppOrderLogService {
|
|
|
+ implements IGameOceanengineAppOrderLogService {
|
|
|
|
|
|
@Autowired
|
|
|
private IGameBackPolicyService gameBackPolicyService;
|
|
@@ -36,6 +52,8 @@ implements IGameOceanengineAppOrderLogService {
|
|
|
private IGameOceanengineAppBackLogService gameOceanengineAppBackLogService;
|
|
|
@Autowired
|
|
|
private IGameOceanengineAppOrderSplitLogService gameOceanengineAppOrderSplitLogService;
|
|
|
+ @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
|
|
|
+ private IAgentRpc agentRpc;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -164,6 +182,71 @@ implements IGameOceanengineAppOrderLogService {
|
|
|
return Tuple2.with(backStatus, errMsg);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public IPage<GameOceanengineAppOrderLogVO> oceanengineAppOrderLogList(GameOceanengineAppOrderLogDTO dto) {
|
|
|
+ IPage<GameOceanengineAppOrderLog> page = page(dto.toPage(), new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getUserId()), GameOceanengineAppOrderLog::getUserId, dto.getUserId())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getMac()), GameOceanengineAppOrderLog::getMac, dto.getMac())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getImei()), GameOceanengineAppOrderLog::getImei, dto.getImei())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getOaid()), GameOceanengineAppOrderLog::getOaid, dto.getOaid())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getAndroidId()), GameOceanengineAppOrderLog::getAndroidId, dto.getAndroidId())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getIdfa()), GameOceanengineAppOrderLog::getIdfa, dto.getIdfa())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getCaid()), GameOceanengineAppOrderLog::getCaid, dto.getCaid())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameOceanengineAppOrderLog::getAgentKey, dto.getAgentKey())
|
|
|
+ .ge(dto.getRegTimeBegin() != null, GameOceanengineAppOrderLog::getRegTime, dto.getRegTimeBegin() == null ? null : LocalDateTime.of(dto.getRegTimeBegin(), LocalTime.MIDNIGHT))
|
|
|
+ .le(dto.getRegTimeEnd() != null, GameOceanengineAppOrderLog::getRegTime, dto.getRegTimeEnd() == null ? null : LocalDateTime.of(dto.getRegTimeEnd(), LocalTime.MAX))
|
|
|
+ .eq(null != dto.getGameId(), GameOceanengineAppOrderLog::getGameId, dto.getGameId())
|
|
|
+ .eq(null != dto.getAccountId(), GameOceanengineAppOrderLog::getAccountId, dto.getAccountId())
|
|
|
+ .eq(StringUtils.isNotBlank(dto.getOrderNo()), GameOceanengineAppOrderLog::getOrderNo, dto.getOrderNo())
|
|
|
+ .eq(null != dto.getBackStatus(), GameOceanengineAppOrderLog::getBackStatus, dto.getBackStatus())
|
|
|
+ .eq(dto.getIsFirstOrder() != null, GameOceanengineAppOrderLog::getIsFirstOrder, dto.getIsFirstOrder())
|
|
|
+ .eq(null != dto.getOrderStatus(), GameOceanengineAppOrderLog::getOrderStatus, dto.getOrderStatus())
|
|
|
+ .like(StringUtils.isNotBlank(dto.getRoleName()), GameOceanengineAppOrderLog::getRoleName, dto.getRoleName())
|
|
|
+ .apply(dto.getRegPayIntervalTimeMin() != null, "if(pay_time is not null, TIMESTAMPDIFF(minute, reg_time, pay_time), null) >= {0}", dto.getRegPayIntervalTimeMin())
|
|
|
+ .apply(dto.getRegPayIntervalTimeMax() != null, "if(pay_time is not null, TIMESTAMPDIFF(minute, reg_time, pay_time), null) <= {0}", dto.getRegPayIntervalTimeMax())
|
|
|
+ .orderByDesc(GameOceanengineAppOrderLog::getCreateTime)
|
|
|
+ );
|
|
|
+ IPage<GameOceanengineAppOrderLogVO> result = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
|
|
|
+ if (CollectionUtils.isEmpty(page.getRecords())) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ result.setRecords(toVOBatch(page.getRecords()));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<GameOceanengineAppOrderLogVO> toVOBatch(List<GameOceanengineAppOrderLog> logList) {
|
|
|
+ if (CollectionUtils.isEmpty(logList)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ List<GameOceanengineAppOrderSplitLogVO> orderSplitList = gameOceanengineAppOrderSplitLogService.listByOrderNo(logList.stream().map(GameOceanengineAppOrderLog::getOrderNo).collect(Collectors.toSet()));
|
|
|
+ Set<String> agentKeys = logList.stream().map(GameOceanengineAppOrderLog::getAgentKey).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
|
|
|
+ Map<String, AgentRpcVO> agentMap = CollectionUtils.isEmpty(agentKeys) ? Collections.emptyMap() : agentRpc.getByAgentKeys(new ArrayList<>(agentKeys))
|
|
|
+ .getData().stream().collect(Collectors.toMap(AgentRpcVO::getAgentKey, Function.identity()));
|
|
|
+ return logList.stream().map(log -> {
|
|
|
+ GameOceanengineAppOrderLogVO vo = toVOSimple(log);
|
|
|
+ if (StringUtils.isNotBlank(log.getAgentKey())) {
|
|
|
+ AgentRpcVO agent = agentMap.get(log.getAgentKey());
|
|
|
+ if (agent != null) {
|
|
|
+ vo.setAgentName(agent.getAgentName());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ List<GameOceanengineAppOrderSplitLogVO> splitList = orderSplitList.stream().filter(obj -> obj.getOrderNo().equals(log.getOrderNo())).collect(Collectors.toList());
|
|
|
+ vo.setSplitOrderList(splitList);
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private GameOceanengineAppOrderLogVO toVOSimple(GameOceanengineAppOrderLog log) {
|
|
|
+ if (log == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ GameOceanengineAppOrderLogVO vo = BeanUtil.copy(log, GameOceanengineAppOrderLogVO.class);
|
|
|
+ vo.setRegPayIntervalTime(OrderUtil.regPayIntervalTime(log.getPayTime(), log.getRegTime()));
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
private GameOceanengineAppUserLog userLog(GameOceanengineAppOrderLog orderLog) {
|
|
|
return gameOceanengineAppUserLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppUserLog>()
|
|
|
.eq(GameOceanengineAppUserLog::getGameId, orderLog.getGameId())
|