CommissionJob.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.fuint.module.schedule;
  2. import com.fuint.common.enums.PayStatusEnum;
  3. import com.fuint.common.service.CommissionLogService;
  4. import com.fuint.common.service.OrderService;
  5. import com.fuint.common.util.DateUtil;
  6. import com.fuint.framework.exception.BusinessCheckException;
  7. import com.fuint.repository.model.MtOrder;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.scheduling.annotation.EnableScheduling;
  10. import org.springframework.scheduling.annotation.Scheduled;
  11. import org.springframework.core.env.Environment;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.stereotype.Component;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.util.*;
  17. /**
  18. * 分销提成计算定时任务
  19. *
  20. * Created by FSQ
  21. * CopyRight https://www.fuint.cn
  22. */
  23. @EnableScheduling
  24. @Component("CommissionJob")
  25. public class CommissionJob {
  26. private Logger logger = LoggerFactory.getLogger(CommissionJob.class);
  27. /**
  28. * 订单服务接口
  29. */
  30. @Autowired
  31. private OrderService orderService;
  32. /**
  33. * 分佣记录服务接口
  34. * */
  35. @Autowired
  36. private CommissionLogService commissionLogService;
  37. /**
  38. * 系统环境变量
  39. * */
  40. @Autowired
  41. private Environment environment;
  42. /**
  43. * 一次最多处理订单数量
  44. **/
  45. private int MAX_ROWS = 10;
  46. /**
  47. * 订单完成后n天可产生佣金
  48. * */
  49. private int OVER_DAY = 7;
  50. @Scheduled(cron = "${commission.job.time}")
  51. @Transactional(rollbackFor = Exception.class)
  52. public void dealOrder() throws BusinessCheckException {
  53. String theSwitch = environment.getProperty("commission.job.switch");
  54. if (theSwitch != null && theSwitch.equals("1")) {
  55. logger.info("CommissionJobStart!!!");
  56. Map<String, Object> param = new HashMap<>();
  57. param.put("PAY_STATUS", PayStatusEnum.SUCCESS.getKey());
  58. Calendar calendar = Calendar.getInstance();
  59. calendar.add(Calendar.DATE, -OVER_DAY);
  60. Date dateTime = calendar.getTime();
  61. String endTime = DateUtil.formatDate(dateTime, "yyyy-MM-dd HH:mm:ss");
  62. List<MtOrder> dataList = orderService.getTobeCommissionOrderList(endTime);
  63. if (dataList.size() > 0) {
  64. int dealNum = 0;
  65. for (MtOrder mtOrder : dataList) {
  66. // 计算订单佣金
  67. if (dealNum <= MAX_ROWS) {
  68. commissionLogService.calculateCommission(mtOrder.getId());
  69. dealNum++;
  70. }
  71. }
  72. }
  73. logger.info("CommissionJobEnd!!!");
  74. }
  75. }
  76. }