20 changed files with 246 additions and 7 deletions
@ -0,0 +1,108 @@ |
|||
package com.qs.serve.modules.pay.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.qs.serve.common.model.AmountDTO; |
|||
import com.qs.serve.common.util.AuthContextUtils; |
|||
import com.qs.serve.common.util.CollectionUtil; |
|||
import com.qs.serve.modules.pay.entity.PayPaymentItem; |
|||
import com.qs.serve.modules.pay.mapper.PayPaymentItemMapper; |
|||
import com.qs.serve.modules.tbs.entity.TbsActivity; |
|||
import com.qs.serve.modules.tbs.entity.TbsActivityCenter; |
|||
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; |
|||
import com.qs.serve.modules.tbs.entity.TbsActivitySubject; |
|||
import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService; |
|||
import com.qs.serve.modules.tbs.service.TbsActivityCenterService; |
|||
import com.qs.serve.modules.tbs.service.TbsActivityService; |
|||
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2023/11/2 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class PayApplicationService { |
|||
|
|||
private final PayPaymentItemMapper payPaymentItemMapper; |
|||
private final TbsActivityService tbsActivityService; |
|||
private final TbsActivityCenterService tbsActivityCenterService; |
|||
private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService; |
|||
|
|||
/** |
|||
* 先把统计金额更新到活动字段 |
|||
*/ |
|||
public void syncTotalPayToActivity(){ |
|||
AuthContextUtils.setTenant("001"); |
|||
final BigDecimal N100 = new BigDecimal("100"); |
|||
final BigDecimal N10000 = new BigDecimal("10000"); |
|||
//查找新增未同步的activityId
|
|||
List<String> activityStringIds = payPaymentItemMapper.selectNoSyncActivityIds(); |
|||
if(CollectionUtil.isEmpty(activityStringIds)){ |
|||
log.warn("syncTotalPayToActivity() --- activityIds长度为0 "); |
|||
return; |
|||
} |
|||
List<Long> activityIds = activityStringIds.stream().map(Long::parseLong).collect(Collectors.toList()); |
|||
//获取activity统计支付金额
|
|||
List<AmountDTO> amountDTOList = payPaymentItemMapper.selectActivityTotal(activityStringIds); |
|||
//更新到activity
|
|||
List<TbsActivity> activityList = amountDTOList.stream().map(a->{ |
|||
TbsActivity activity = new TbsActivity(); |
|||
activity.setId(Long.parseLong(a.getId())); |
|||
activity.setPayAmount(a.getAmount()); |
|||
return activity; |
|||
}).collect(Collectors.toList()); |
|||
tbsActivityService.updateBatchById(activityList); |
|||
|
|||
Map<Long,List<TbsActivityCenter>> activityCenterMap = tbsActivityCenterService.listByActivityMap(activityIds); |
|||
|
|||
//更新到tbs_activity_subject
|
|||
//Map<Long,List<TbsActivitySubject>> activitySubjectMap = tbsActivitySubjectService.listByActivityMap(activityIds);
|
|||
|
|||
Map<Long,List<TbsActivityCenterGoods>> activityCenterGoodsMap = tbsActivityCenterGoodsService.listByActivityMap(activityIds); |
|||
|
|||
for (AmountDTO amountDTO : amountDTOList) { |
|||
Long activityId = Long.parseLong(amountDTO.getId()); |
|||
BigDecimal totalAmount = amountDTO.getAmount(); |
|||
|
|||
//更新到tbs_activity_center
|
|||
List<TbsActivityCenter> activityCenterList = activityCenterMap.get(activityId); |
|||
List<TbsActivityCenter> activityCenterUpdateList = activityCenterList.stream().map(param->{ |
|||
BigDecimal payAmount = param.getCenterRate().multiply(totalAmount).divide(N100, RoundingMode.DOWN); |
|||
TbsActivityCenter obj = new TbsActivityCenter(); |
|||
obj.setId(param.getId()); |
|||
obj.setPayAmount(payAmount); |
|||
return obj; |
|||
}).collect(Collectors.toList()); |
|||
tbsActivityCenterService.updateBatchById(activityCenterUpdateList); |
|||
|
|||
//更新到tbs_activity_center_goods
|
|||
List<TbsActivityCenterGoods> activityCenterGoodsList = activityCenterGoodsMap.get(activityId); |
|||
List<TbsActivityCenterGoods> activityCenterGoodsUpdateList = activityCenterGoodsList.stream().map(param->{ |
|||
BigDecimal payAmount = param.getCenterRate() |
|||
.multiply(param.getCenterGoodsRate()) |
|||
.multiply(totalAmount) |
|||
.divide(N10000, RoundingMode.DOWN); |
|||
TbsActivityCenterGoods obj = new TbsActivityCenterGoods(); |
|||
obj.setId(param.getId()); |
|||
obj.setPayAmount(payAmount); |
|||
return obj; |
|||
}).collect(Collectors.toList()); |
|||
tbsActivityCenterGoodsService.updateBatchById(activityCenterGoodsUpdateList); |
|||
|
|||
} |
|||
|
|||
payPaymentItemMapper.updateSyncFlag(activityStringIds); |
|||
|
|||
} |
|||
|
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.qs.serve.task.controller; |
|||
|
|||
import com.qs.serve.common.model.dto.R; |
|||
import com.qs.serve.modules.pay.service.impl.PayApplicationService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2023/11/2 |
|||
*/ |
|||
@Slf4j |
|||
@AllArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/task/pay") |
|||
public class TaskPayController { |
|||
|
|||
PayApplicationService applicationService; |
|||
|
|||
@RequestMapping("test") |
|||
public R<?> task(){ |
|||
applicationService.syncTotalPayToActivity(); |
|||
return R.ok(); |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue