|
@@ -2,7 +2,10 @@ package com.fuint.common.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.fuint.common.dto.SettlementDto;
|
|
|
+import com.fuint.common.dto.SettlementOrderDto;
|
|
|
import com.fuint.common.dto.UserOrderDto;
|
|
|
+import com.fuint.common.enums.PayStatusEnum;
|
|
|
import com.fuint.common.enums.SettleStatusEnum;
|
|
|
import com.fuint.common.enums.StatusEnum;
|
|
|
import com.fuint.common.param.OrderListParam;
|
|
@@ -13,6 +16,7 @@ import com.fuint.framework.annoation.OperationServiceLog;
|
|
|
import com.fuint.framework.exception.BusinessCheckException;
|
|
|
import com.fuint.framework.pagination.PaginationRequest;
|
|
|
import com.fuint.framework.pagination.PaginationResponse;
|
|
|
+import com.fuint.module.backendApi.request.SettlementRequest;
|
|
|
import com.fuint.repository.mapper.MtSettlementMapper;
|
|
|
import com.fuint.repository.mapper.MtSettlementOrderMapper;
|
|
|
import com.fuint.repository.model.MtBanner;
|
|
@@ -22,6 +26,7 @@ import com.fuint.repository.model.MtSettlementOrder;
|
|
|
import com.github.pagehelper.Page;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.PageImpl;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
@@ -96,16 +101,19 @@ public class SettlementServiceImpl implements SettlementService {
|
|
|
/**
|
|
|
* 提交结算
|
|
|
*
|
|
|
- * @param mtSettlement
|
|
|
+ * @param requestParam
|
|
|
* @throws BusinessCheckException
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@OperationServiceLog(description = "发起结算")
|
|
|
- public Boolean submitSettlement(MtSettlement mtSettlement) throws BusinessCheckException {
|
|
|
+ public Boolean submitSettlement(SettlementRequest requestParam) throws BusinessCheckException {
|
|
|
OrderListParam orderParam = new OrderListParam();
|
|
|
- orderParam.setMerchantId(mtSettlement.getMerchantId());
|
|
|
- orderParam.setStoreId(mtSettlement.getStoreId());
|
|
|
+ orderParam.setMerchantId(requestParam.getMerchantId());
|
|
|
+ orderParam.setStoreId(requestParam.getStoreId());
|
|
|
+ orderParam.setPayStatus(PayStatusEnum.SUCCESS.getKey());
|
|
|
+ orderParam.setStartTime(requestParam.getStartTime());
|
|
|
+ orderParam.setEndTime(requestParam.getEndTime());
|
|
|
orderParam.setPage(1);
|
|
|
orderParam.setPageSize(100000);
|
|
|
|
|
@@ -119,22 +127,28 @@ public class SettlementServiceImpl implements SettlementService {
|
|
|
totalOrderAmount = totalOrderAmount.add(orderDto.getPayAmount());
|
|
|
}
|
|
|
}
|
|
|
+ MtSettlement mtSettlement = new MtSettlement();
|
|
|
+ mtSettlement.setMerchantId(requestParam.getMerchantId());
|
|
|
+ mtSettlement.setStoreId(requestParam.getStoreId());
|
|
|
mtSettlement.setSettlementNo(CommonUtil.createSettlementNo());
|
|
|
mtSettlement.setAmount(amount);
|
|
|
mtSettlement.setTotalOrderAmount(totalOrderAmount);
|
|
|
mtSettlement.setStatus(StatusEnum.ENABLED.getKey());
|
|
|
+ mtSettlement.setOperator(requestParam.getOperator());
|
|
|
mtSettlement.setCreateTime(new Date());
|
|
|
mtSettlement.setUpdateTime(new Date());
|
|
|
mtSettlementMapper.insert(mtSettlement);
|
|
|
if (orderList != null && orderList.size() > 0) {
|
|
|
for (UserOrderDto orderDto : orderList) {
|
|
|
MtSettlementOrder mtSettlementOrder = new MtSettlementOrder();
|
|
|
- mtSettlementOrder.setId(mtSettlement.getId());
|
|
|
+ mtSettlementOrder.setSettlementId(mtSettlement.getId());
|
|
|
mtSettlementOrder.setOrderId(orderDto.getId());
|
|
|
mtSettlementOrder.setCreateTime(new Date());
|
|
|
mtSettlementOrder.setUpdateTime(new Date());
|
|
|
mtSettlement.setStatus(StatusEnum.ENABLED.getKey());
|
|
|
+ mtSettlementOrder.setOperator(mtSettlement.getOperator());
|
|
|
mtSettlementOrderMapper.insert(mtSettlementOrder);
|
|
|
+ // 把订单设置为已结算
|
|
|
MtOrder mtOrder = orderService.getById(orderDto.getId());
|
|
|
mtOrder.setSettleStatus(SettleStatusEnum.COMPLETE.getKey());
|
|
|
orderService.updateOrder(mtOrder);
|
|
@@ -143,14 +157,75 @@ public class SettlementServiceImpl implements SettlementService {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 结算确认
|
|
|
+ *
|
|
|
+ * @param settlementId
|
|
|
+ * @param operator
|
|
|
+ * @throws BusinessCheckException
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @OperationServiceLog(description = "结算确认")
|
|
|
+ public Boolean doConfirm(Integer settlementId, String operator) throws BusinessCheckException {
|
|
|
+ MtSettlement mtSettlement = mtSettlementMapper.selectById(settlementId);
|
|
|
+ if (mtSettlement == null) {
|
|
|
+ throw new BusinessCheckException("结算数据不存在");
|
|
|
+ }
|
|
|
+ mtSettlement.setStatus(SettleStatusEnum.COMPLETE.getKey());
|
|
|
+ mtSettlement.setPayStatus(PayStatusEnum.SUCCESS.getKey());
|
|
|
+ mtSettlement.setUpdateTime(new Date());
|
|
|
+ mtSettlement.setOperator(operator);
|
|
|
+ mtSettlementMapper.updateById(mtSettlement);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取结算详情
|
|
|
*
|
|
|
* @param settlementId
|
|
|
+ * @param page
|
|
|
+ * @param pageSize
|
|
|
* @return
|
|
|
* */
|
|
|
@Override
|
|
|
- public MtSettlement getSettlementInfo(Integer settlementId) {
|
|
|
- return mtSettlementMapper.selectById(settlementId);
|
|
|
+ public SettlementDto getSettlementInfo(Integer settlementId, Integer page, Integer pageSize) throws BusinessCheckException {
|
|
|
+ MtSettlement mtSettlement = mtSettlementMapper.selectById(settlementId);
|
|
|
+ if (mtSettlement == null) {
|
|
|
+ throw new BusinessCheckException("结算单不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ SettlementDto settlementDto = new SettlementDto();
|
|
|
+ BeanUtils.copyProperties(mtSettlement, settlementDto);
|
|
|
+
|
|
|
+ Page<MtBanner> pageHelper = PageHelper.startPage(page, pageSize);
|
|
|
+ LambdaQueryWrapper<MtSettlementOrder> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
|
|
+ lambdaQueryWrapper.ne(MtSettlementOrder::getStatus, StatusEnum.DISABLE.getKey());
|
|
|
+ lambdaQueryWrapper.eq(MtSettlementOrder::getSettlementId, settlementId);
|
|
|
+ lambdaQueryWrapper.orderByDesc(MtSettlementOrder::getId);
|
|
|
+ List<MtSettlementOrder> dataList = mtSettlementOrderMapper.selectList(lambdaQueryWrapper);
|
|
|
+
|
|
|
+ PageRequest pageRequest = PageRequest.of(page, pageSize);
|
|
|
+ PageImpl pageImpl = new PageImpl(dataList, pageRequest, pageHelper.getTotal());
|
|
|
+ PaginationResponse<SettlementOrderDto> paginationResponse = new PaginationResponse(pageImpl, SettlementOrderDto.class);
|
|
|
+ paginationResponse.setTotalPages(pageHelper.getPages());
|
|
|
+ paginationResponse.setTotalElements(pageHelper.getTotal());
|
|
|
+
|
|
|
+ List<SettlementOrderDto> orderList = new ArrayList<>();
|
|
|
+ if (dataList != null && dataList.size() > 0) {
|
|
|
+ for (MtSettlementOrder mtSettlementOrder : dataList) {
|
|
|
+ SettlementOrderDto settlementOrderDto = new SettlementOrderDto();
|
|
|
+ BeanUtils.copyProperties(mtSettlementOrder, settlementOrderDto);
|
|
|
+ UserOrderDto orderDto = orderService.getOrderById(settlementOrderDto.getOrderId());
|
|
|
+ if (orderDto != null) {
|
|
|
+ settlementOrderDto.setOrderInfo(orderDto);
|
|
|
+ }
|
|
|
+ orderList.add(settlementOrderDto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ paginationResponse.setContent(orderList);
|
|
|
+
|
|
|
+ settlementDto.setOrderList(paginationResponse);
|
|
|
+ return settlementDto;
|
|
|
}
|
|
|
}
|