|
@@ -2,7 +2,10 @@ package com.zanxiang.game.data.serve.service.impl;
|
|
|
|
|
|
import com.zanxiang.erp.security.util.SecurityUtil;
|
|
|
import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailListDTO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailTotalDTO;
|
|
|
import com.zanxiang.game.data.serve.pojo.entity.AdsOrderDetail;
|
|
|
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailTotalVO;
|
|
|
import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailVO;
|
|
|
import com.zanxiang.game.data.serve.service.IAdsOrderDetailService;
|
|
|
import com.zanxiang.game.data.serve.utils.Page;
|
|
@@ -11,8 +14,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.nutz.dao.Cnd;
|
|
|
import org.nutz.dao.Dao;
|
|
|
+import org.nutz.dao.Sqls;
|
|
|
import org.nutz.dao.pager.Pager;
|
|
|
-import org.nutz.dao.util.cri.Exps;
|
|
|
+import org.nutz.dao.sql.Criteria;
|
|
|
+import org.nutz.dao.sql.Sql;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -28,79 +33,190 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
|
|
|
|
|
|
@Override
|
|
|
public Page<AdsOrderDetailVO> listOfPage(AdsOrderDetailListDTO dto) {
|
|
|
- if (StringUtils.isBlank(dto.getZxPitcherId()) && !SecurityUtil.isManager()) {
|
|
|
+ if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
|
|
|
// 只有管理员才能查看全部数据
|
|
|
- dto.setZxPitcherId(SecurityUtil.getUserId().toString());
|
|
|
+ dto.setPitcherId(SecurityUtil.getUserId().toString());
|
|
|
}
|
|
|
Pager pager = dto.toPage();
|
|
|
- Cnd cnd = Cnd.where("1", "=", "1");
|
|
|
- if (dto.getBeginOrderTime() != null) {
|
|
|
- cnd.and(AdsOrderDetail::getOrderCreateTime, ">=", dto.getBeginOrderTime());
|
|
|
+ Criteria cri = Cnd.cri();
|
|
|
+ if (StringUtils.isNotBlank(dto.getSourceSystem())) {
|
|
|
+ cri.where().andEquals("source_system", dto.getSourceSystem());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getOrderId())) {
|
|
|
+ cri.where().andEquals("order_id", dto.getOrderId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getCpOrderId())) {
|
|
|
+ cri.where().andEquals("cp_order_id", dto.getCpOrderId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getMerchantOrderNo())) {
|
|
|
+ cri.where().andEquals("merchant_order_no", dto.getMerchantOrderNo());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getUserId())) {
|
|
|
+ cri.where().andEquals("game_user_id", dto.getUserId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getUsername())) {
|
|
|
+ cri.where().andEquals("username", dto.getUsername());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getServerName())) {
|
|
|
+ cri.where().andEquals("server_name", dto.getServerName());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getGameId())) {
|
|
|
+ cri.where().andEquals("order_game_id", dto.getGameId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getChannelId())) {
|
|
|
+ cri.where().andEquals("agent_id", dto.getChannelId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getAccountId())) {
|
|
|
+ cri.where().andEquals("account_id", dto.getAccountId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getPitcherId())) {
|
|
|
+ cri.where().andEquals("zx_pitcher_id", dto.getPitcherId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getDeviceSystem())) {
|
|
|
+ cri.where().andEquals("os", dto.getDeviceSystem());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getProductName())) {
|
|
|
+ cri.where().andEquals("product_name", dto.getProductName());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getPayWay())) {
|
|
|
+ cri.where().andEquals("payway", dto.getPayWay());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getMerchantNo())) {
|
|
|
+ cri.where().andEquals("pay_account_id", dto.getMerchantNo());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getStatus())) {
|
|
|
+ cri.where().andEquals("order_status", dto.getStatus());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getCpStatus())) {
|
|
|
+ cri.where().andEquals("cp_status", dto.getCpStatus());
|
|
|
}
|
|
|
- if (dto.getEndOrderTime() != null) {
|
|
|
- cnd.and(AdsOrderDetail::getOrderCreateTime, "<=", dto.getEndOrderTime());
|
|
|
+ if (StringUtils.isNotBlank(dto.getIsFirstRecharge())) {
|
|
|
+ cri.where().andEquals("is_first_recharge", dto.getIsFirstRecharge());
|
|
|
}
|
|
|
+ if (dto.getBeginDate() != null && dto.getEndDate() != null) {
|
|
|
+ //下单时间,订单创建时间
|
|
|
+ cri.where().andBetween("day", dto.getBeginDate(), dto.getEndDate());
|
|
|
+ }
|
|
|
+ if (dto.getRegTimeStart() != null && dto.getRegTimeEnd() != null) {
|
|
|
+ //玩家注册时间
|
|
|
+ cri.where().andBetween("reg_time", dto.getRegTimeStart(), dto.getRegTimeEnd());
|
|
|
+ }
|
|
|
+ if (dto.getPayTimeStart() != null && dto.getPayTimeEnd() != null) {
|
|
|
+ //支付时间,订单充值时间
|
|
|
+ cri.where().andBetween("pay_time", dto.getPayTimeStart(), dto.getPayTimeEnd());
|
|
|
+ }
|
|
|
+ if (dto.getRegPayIntervalTimeMin() != null) {
|
|
|
+ cri.where().andGTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMin());
|
|
|
+ }
|
|
|
+ if (dto.getRegPayIntervalTimeMax() != null) {
|
|
|
+ cri.where().andLTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMax());
|
|
|
+ }
|
|
|
+ //默认排序方式
|
|
|
+ if (StringUtils.isBlank(dto.getSortType())) {
|
|
|
+ dto.setSortType(OrderByEnum.DESC.getOrderType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(dto.getSortFiled())) {
|
|
|
+ cri.getOrderBy().orderBy("day", dto.getSortType());
|
|
|
+ cri.getOrderBy().orderBy("order_create_time", dto.getSortType());
|
|
|
+ } else {
|
|
|
+ cri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
|
|
|
+ }
|
|
|
+ List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cri, pager).stream().map(this::toVO).collect(Collectors.toList());
|
|
|
+ pager.setRecordCount(dao.count(AdsOrderDetail.class, cri));
|
|
|
+ return new Page<>(records, pager);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AdsOrderDetailTotalVO orderTotal(AdsOrderDetailTotalDTO dto) {
|
|
|
+ if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
|
|
|
+ // 只有管理员才能查看全部数据
|
|
|
+ dto.setPitcherId(SecurityUtil.getUserId().toString());
|
|
|
+ }
|
|
|
+ Criteria cri = Cnd.cri();
|
|
|
if (StringUtils.isNotBlank(dto.getSourceSystem())) {
|
|
|
- cnd.and(AdsOrderDetail::getSourceSystem, "=", dto.getSourceSystem());
|
|
|
+ cri.where().andEquals("source_system", dto.getSourceSystem());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getOrderId())) {
|
|
|
- cnd.and(AdsOrderDetail::getOrderId, "=", dto.getOrderId());
|
|
|
+ cri.where().andEquals("order_id", dto.getOrderId());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getCpOrderId())) {
|
|
|
- cnd.and(AdsOrderDetail::getCpOrderId, "=", dto.getCpOrderId());
|
|
|
+ cri.where().andEquals("cp_order_id", dto.getCpOrderId());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getMerchantOrderNo())) {
|
|
|
- cnd.and(AdsOrderDetail::getMerchantOrderNo, "=", dto.getMerchantOrderNo());
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(dto.getZxPitcherId())) {
|
|
|
- cnd.and(AdsOrderDetail::getZxPitcherId, "=", dto.getZxPitcherId());
|
|
|
+ cri.where().andEquals("merchant_order_no", dto.getMerchantOrderNo());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getGameUserId())) {
|
|
|
- cnd.and(AdsOrderDetail::getGameUserId, "=", dto.getGameUserId());
|
|
|
+ if (StringUtils.isNotBlank(dto.getUserId())) {
|
|
|
+ cri.where().andEquals("game_user_id", dto.getUserId());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getUsername())) {
|
|
|
- cnd.and(AdsOrderDetail::getUsername, "like", "%" + dto.getUsername() + "%");
|
|
|
- }
|
|
|
- if (StringUtils.isNotBlank(dto.getParentId())) {
|
|
|
- cnd.and(AdsOrderDetail::getParentId, "=", dto.getParentId());
|
|
|
+ cri.where().andEquals("username", dto.getUsername());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getOrderGameId())) {
|
|
|
- cnd.and(AdsOrderDetail::getOrderGameId, "=", dto.getOrderGameId());
|
|
|
+ if (StringUtils.isNotBlank(dto.getServerName())) {
|
|
|
+ cri.where().andEquals("server_name", dto.getServerName());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getGameId())) {
|
|
|
- cnd.and(AdsOrderDetail::getGameId, "=", dto.getGameId());
|
|
|
+ cri.where().andEquals("order_game_id", dto.getGameId());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(dto.getChannelId())) {
|
|
|
+ cri.where().andEquals("agent_id", dto.getChannelId());
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(dto.getAccountId())) {
|
|
|
- cnd.and(AdsOrderDetail::getAccountId, "=", dto.getAccountId());
|
|
|
+ cri.where().andEquals("account_id", dto.getAccountId());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getAgentId())) {
|
|
|
- cnd.and(AdsOrderDetail::getAgentId, "=", dto.getAgentId());
|
|
|
+ if (StringUtils.isNotBlank(dto.getPitcherId())) {
|
|
|
+ cri.where().andEquals("zx_pitcher_id", dto.getPitcherId());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getOs())) {
|
|
|
- cnd.and(AdsOrderDetail::getOs, "=", dto.getOs());
|
|
|
+ if (StringUtils.isNotBlank(dto.getDeviceSystem())) {
|
|
|
+ cri.where().andEquals("os", dto.getDeviceSystem());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getOrderStatus())) {
|
|
|
- cnd.and(AdsOrderDetail::getOrderStatus, "=", dto.getOrderStatus());
|
|
|
+ if (StringUtils.isNotBlank(dto.getProductName())) {
|
|
|
+ cri.where().andEquals("product_name", dto.getProductName());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getPayway())) {
|
|
|
- cnd.and(AdsOrderDetail::getPayway, "=", dto.getPayway());
|
|
|
+ if (StringUtils.isNotBlank(dto.getPayWay())) {
|
|
|
+ cri.where().andEquals("payway", dto.getPayWay());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getRoleId())) {
|
|
|
- cnd.and(AdsOrderDetail::getRoleId, "=", dto.getRoleId());
|
|
|
+ if (StringUtils.isNotBlank(dto.getMerchantNo())) {
|
|
|
+ cri.where().andEquals("pay_account_id", dto.getMerchantNo());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(dto.getRoleName())) {
|
|
|
- cnd.and(AdsOrderDetail::getRoleName, "=", dto.getRoleName());
|
|
|
+ if (StringUtils.isNotBlank(dto.getStatus())) {
|
|
|
+ cri.where().andEquals("order_status", dto.getStatus());
|
|
|
}
|
|
|
- if (dto.getBeginRegTime() != null) {
|
|
|
- cnd.and(AdsOrderDetail::getRegTime, ">=", dto.getBeginRegTime());
|
|
|
+ if (StringUtils.isNotBlank(dto.getCpStatus())) {
|
|
|
+ cri.where().andEquals("cp_status", dto.getCpStatus());
|
|
|
}
|
|
|
- if (dto.getEndRegTime() != null) {
|
|
|
- cnd.and(AdsOrderDetail::getRegTime, "<=", dto.getEndRegTime());
|
|
|
+ if (StringUtils.isNotBlank(dto.getIsFirstRecharge())) {
|
|
|
+ cri.where().andEquals("is_first_recharge", dto.getIsFirstRecharge());
|
|
|
}
|
|
|
- cnd.orderBy(dto.getSortFiled(), dto.getSortType());
|
|
|
- List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cnd, pager).stream().map(this::toVO).collect(Collectors.toList());
|
|
|
- pager.setRecordCount(dao.count(AdsOrderDetail.class, cnd));
|
|
|
- return new Page<>(records, pager);
|
|
|
+ if (dto.getBeginDate() != null && dto.getEndDate() != null) {
|
|
|
+ //下单时间,订单创建时间
|
|
|
+ cri.where().andBetween("day", dto.getBeginDate(), dto.getEndDate());
|
|
|
+ }
|
|
|
+ if (dto.getRegTimeStart() != null && dto.getRegTimeEnd() != null) {
|
|
|
+ //玩家注册时间
|
|
|
+ cri.where().andBetween("reg_time", dto.getRegTimeStart(), dto.getRegTimeEnd());
|
|
|
+ }
|
|
|
+ if (dto.getPayTimeStart() != null && dto.getPayTimeEnd() != null) {
|
|
|
+ //支付时间,订单充值时间
|
|
|
+ cri.where().andBetween("pay_time", dto.getPayTimeStart(), dto.getPayTimeEnd());
|
|
|
+ }
|
|
|
+ if (dto.getRegPayIntervalTimeMin() != null) {
|
|
|
+ cri.where().andGTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMin());
|
|
|
+ }
|
|
|
+ if (dto.getRegPayIntervalTimeMax() != null) {
|
|
|
+ cri.where().andLTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMax());
|
|
|
+ }
|
|
|
+ Sql sql = Sqls.create("""
|
|
|
+ SELECT
|
|
|
+ IFNULL(SUM(amount), 0) as amount,
|
|
|
+ IFNULL(SUM(real_amount), 0) as real_amount
|
|
|
+ FROM
|
|
|
+ game_ads.ads_order_detail
|
|
|
+ """ + cri);
|
|
|
+ sql.setCallback(Sqls.callback.entity());
|
|
|
+ sql.setEntity(dao.getEntity(AdsOrderDetailTotalVO.class));
|
|
|
+ dao.execute(sql);
|
|
|
+
|
|
|
+ return sql.getObject(AdsOrderDetailTotalVO.class);
|
|
|
}
|
|
|
|
|
|
private AdsOrderDetailVO toVO(AdsOrderDetail gameOrder) {
|