|
@@ -3,21 +3,31 @@ package pay.platform.api.system.servcie.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.mybatisflex.core.paginate.Page;
|
|
|
+import com.mybatisflex.core.query.QueryMethods;
|
|
|
import com.mybatisflex.core.query.QueryWrapper;
|
|
|
+import com.mybatisflex.core.util.CollectionUtil;
|
|
|
import com.mybatisflex.core.util.StringUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import pay.platform.api.system.model.query.PayChannelQuery;
|
|
|
import pay.platform.api.system.model.vo.PayChannelVO;
|
|
|
import pay.platform.api.system.servcie.PayChannelService;
|
|
|
+import pay.platform.api.system.servcie.PayOrderService;
|
|
|
import pay.platform.core.common.domain.BasePage;
|
|
|
import pay.platform.core.common.domain.BaseService;
|
|
|
import pay.platform.core.security.util.SecurityUtil;
|
|
|
import pay.platform.domain.PayChannel;
|
|
|
+import pay.platform.domain.PayOrder;
|
|
|
import pay.platform.domain.table.PayChannelTableDef;
|
|
|
+import pay.platform.domain.table.PayOrderTableDef;
|
|
|
import pay.platform.mapper.PayChannelMapper;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Calendar;
|
|
|
import java.util.List;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 通道管理 服务层实现。
|
|
@@ -28,6 +38,8 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class PayChannelServiceImpl extends BaseService<PayChannelMapper, PayChannel> implements PayChannelService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PayOrderService payOrderService;
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -39,12 +51,32 @@ public class PayChannelServiceImpl extends BaseService<PayChannelMapper, PayChan
|
|
|
|
|
|
@Override
|
|
|
public BasePage<PayChannelVO> queryPage(PayChannelQuery query) {
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ var totalQueryWrapper = QueryWrapper.create().from(PayOrderTableDef.PAY_ORDER)
|
|
|
+ .select(QueryMethods.sum(PayOrderTableDef.PAY_ORDER.AMOUNT).as("amount"), PayOrderTableDef.PAY_ORDER.CHANNEL_ID)
|
|
|
+ .where(PayOrderTableDef.PAY_ORDER.YEAR.eq(Calendar.YEAR)
|
|
|
+ .and(PayOrderTableDef.PAY_ORDER.DAY.eq(calendar.get(Calendar.DAY_OF_YEAR)))).groupBy(PayOrderTableDef.PAY_ORDER.CHANNEL_ID);
|
|
|
+ var totalDayOrder = payOrderService.list(totalQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
QueryWrapper queryWrapper = QueryWrapper.create().from(PayChannelTableDef.PAY_CHANNEL).where("1 = 1")
|
|
|
.and(PayChannelTableDef.PAY_CHANNEL.NAME.like(query.getName(), StringUtil.isNotBlank(query.getName())))
|
|
|
.and(PayChannelTableDef.PAY_CHANNEL.STATUS.eq(query.getStatus(), query.getStatus() != null))
|
|
|
.and(PayChannelTableDef.PAY_CHANNEL.AGENT_ID.eq(SecurityUtil.getCurrentUser().getUserid(), StringUtil.isNotBlank(SecurityUtil.getCurrentUser().getUserid())));
|
|
|
Page<PayChannel> page = mapper.paginate(new Page<>(query.getCurrent(), query.getSize()), queryWrapper);
|
|
|
List<PayChannelVO> vos = BeanUtil.copyToList(page.getRecords(), PayChannelVO.class);
|
|
|
+ vos.forEach(vo -> vo.setDayPayAmount(BigDecimal.ZERO));
|
|
|
+
|
|
|
+ if (CollectionUtil.isNotEmpty(totalDayOrder)) {
|
|
|
+ var channelTotalOrder = totalDayOrder.stream().collect(Collectors.toMap(PayOrder::getChannelId, Function.identity()));
|
|
|
+ vos.forEach(vo -> {
|
|
|
+ PayOrder totalOrder = channelTotalOrder.get(vo.getId());
|
|
|
+ if (totalOrder != null) {
|
|
|
+ vo.setDayPayAmount(totalOrder.getAmount());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
return new BasePage<>(page.getPageNumber(), page.getPageSize(), page.getTotalRow(), vos);
|
|
|
}
|
|
|
}
|