DistributeServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.cyksj.service.distribute.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.cyksj.common.constant.TaskTypeEnum;
  4. import com.cyksj.common.exception.BusinessRuntimeException;
  5. import com.cyksj.mapper.GoodsDonMapper;
  6. import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
  7. import com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper;
  8. import com.cyksj.mapper.manage.distribute.UserPlatDistributeRateMapper;
  9. import com.cyksj.mapper.market.task.TaskTypeMapper;
  10. import com.cyksj.model.entity.*;
  11. import com.cyksj.model.request.UserDistributeReq;
  12. import com.cyksj.service.distribute.DistributeService;
  13. import com.cyksj.service.market.task.TaskService;
  14. import lombok.RequiredArgsConstructor;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.dao.DuplicateKeyException;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. /*
  20. *项目名: netflix
  21. *文件名: DistributeServiceImpl
  22. *创建者: JavaZou
  23. *创建时间:2022/11/14 12:21
  24. */
  25. @Service
  26. @RequiredArgsConstructor
  27. @Slf4j
  28. public class DistributeServiceImpl implements DistributeService {
  29. private final UserDistributeMapper userDistributeMapper;
  30. private final UserPlatDistributeRateMapper userPlatDistributeRateMapper;
  31. private final GoodsDonMapper goodsDonMapper;
  32. private final TaskService taskService;
  33. private final TaskTypeMapper taskTypeMapper;
  34. private final UserDistributeSharedMapper userDistributeSharedMapper;
  35. @Override
  36. @Transactional(rollbackFor = Throwable.class)
  37. public void insertDistribute(UserDistributeReq userDistributeReq) {
  38. UserDistribute exists = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeReq.getUserId()).eq(UserDistribute::getDeleted, true).last("limit 1"));
  39. if (exists != null) {
  40. throw BusinessRuntimeException.getInstance("该推广者已添加");
  41. }
  42. UserDistribute userDistribute = new UserDistribute();
  43. userDistribute.setUserId(userDistributeReq.getUserId());
  44. userDistribute.setRemark(userDistributeReq.getRemark());
  45. userDistributeMapper.insert(userDistribute);
  46. for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
  47. if (rate.getRate() <0 || rate.getRate() > 100) {
  48. throw new BusinessRuntimeException("比例错误");
  49. }
  50. GoodsDon goodsDon = goodsDonMapper.selectById(rate.getGoodsId());
  51. if (goodsDon == null || !goodsDon.getDeleted() || goodsDon.getType() == 3) {
  52. throw new BusinessRuntimeException("平台错误");
  53. }
  54. rate.setDistributeId(userDistribute.getId());
  55. userPlatDistributeRateMapper.insert(rate);
  56. }
  57. }
  58. @Override
  59. public void editDistribute(UserDistributeReq userDistributeReq) {
  60. if (userDistributeReq.getId() == null || userDistributeReq.getId() < 1) {
  61. throw BusinessRuntimeException.getInstance("id错误");
  62. }
  63. UserDistribute userDistribute = new UserDistribute();
  64. userDistribute.setId(userDistributeReq.getId());
  65. userDistribute.setRemark(userDistributeReq.getRemark());
  66. userDistributeMapper.updateById(userDistribute);
  67. for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
  68. if (rate.getRate() <0 || rate.getRate() > 100) {
  69. throw new BusinessRuntimeException("比例错误");
  70. }
  71. GoodsDon goodsDon = goodsDonMapper.selectById(rate.getGoodsId());
  72. if (goodsDon == null || !goodsDon.getDeleted() || goodsDon.getType() == 3) {
  73. throw new BusinessRuntimeException("平台错误");
  74. }
  75. rate.setDistributeId(userDistribute.getId());
  76. userPlatDistributeRateMapper.updateById(rate);
  77. }
  78. }
  79. @Override
  80. public void saveDistributionInvitation(Long sharedId, Long userId) {
  81. UserDistributeShared userDistributeShared = new UserDistributeShared();
  82. userDistributeShared.setSharedId(sharedId);
  83. //存在分销
  84. userDistributeShared.setUserId(userId);
  85. try {
  86. userDistributeSharedMapper.insert(userDistributeShared);
  87. TaskType taskType = taskTypeMapper.selectOne(Wrappers.lambdaQuery(TaskType.class)
  88. .eq(TaskType::getName, TaskTypeEnum.share.getDesc()).last("limit 1"));
  89. taskService.completeTask(taskType, sharedId);
  90. } catch (DuplicateKeyException e) {
  91. log.info("分销被邀请人重复插入");
  92. }
  93. }
  94. }