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