BuyService.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.bofeng.service;
  2. import com.baomidou.mybatisplus.toolkit.IdWorker;
  3. import com.bofeng.dao.BuyMapper;
  4. import com.bofeng.dao.JmTuangouDao;
  5. import com.bofeng.entity.Buy;
  6. import com.bofeng.entity.JmTuangou;
  7. import org.joda.time.DateTime;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Propagation;
  11. import org.springframework.transaction.annotation.Transactional;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. @Service
  15. @Transactional(readOnly = true)
  16. public class BuyService {
  17. @Autowired
  18. private BuyMapper buyMapper;
  19. @Autowired
  20. private JmTuangouDao jmTuangouDao;
  21. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  22. public int buyGroup(Buy buy) {
  23. Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId());
  24. JmTuangou roleType = jmTuangouDao.getSelectOneRoleId(buy.getJmId());
  25. if (buy1 != null) {
  26. JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy1.getJmId());
  27. Buy buy2 = buyMapper.selectById(buy1.getBuyId());
  28. if (roleType.getRoleType() != 1) {
  29. if (jmTuangou.getTgMaxNum().intValue() >= jmTuangou.getCurrentNum().intValue() - buy2.getBuyCount().intValue() + buy.getBuyCount().intValue()) {
  30. buy.setBuyId(buy1.getBuyId());
  31. return buyMapper.updateById(buy);
  32. } else {
  33. return 3;//不允许更改团购数量
  34. }
  35. } else {
  36. buy.setBuyId(buy1.getBuyId());
  37. return buyMapper.updateById(buy);
  38. }
  39. }
  40. //1 是指挥部
  41. if (roleType.getRoleType() != 1) {
  42. //第一次购买团购数量大于最大上限数量不允许
  43. JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy.getJmId());
  44. if (jmTuangou.getTgMaxNum().intValue() < jmTuangou.getCurrentNum().intValue() + buy.getBuyCount().intValue()) {
  45. return 3;
  46. }
  47. }
  48. buy.setBuyId(IdWorker.getId());
  49. buy.setUserCreate(buy.getUserId());
  50. buy.setTimeCreate(new DateTime());
  51. buy.setBuyStatus(1);//在团
  52. return buyMapper.insert(buy);
  53. }
  54. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  55. public List<JmTuangou> group(Long userId) {
  56. updateStatus();
  57. return buyMapper.group(userId);
  58. }
  59. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  60. public List<Buy> MyGroup(Long userId) {
  61. updateStatus();
  62. return buyMapper.MyGroup(userId);
  63. }
  64. public Buy queryGroup(Long buyId) {
  65. return buyMapper.selectById(buyId);
  66. }
  67. public JmTuangou selectGroup(Long userId, Long jmId) {
  68. return buyMapper.selectGroup(userId, jmId);
  69. }
  70. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  71. public int buyBack(Buy buy) {
  72. //在该套餐截止日期之前 并且是在团状态的才能撤单
  73. JmTuangou jmTuangou = buyMapper.selectGroup(buy.getUserId(), buy.getJmId());
  74. if (jmTuangou.getTgEndTime().getTime() > new DateTime().getMillis() && jmTuangou.getTgStatus() == 1) {
  75. Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId());
  76. buy.setBuyId(buy1.getBuyId());
  77. buy.setBuyStatus(2);//撤单
  78. return buyMapper.updateById(buy);
  79. }
  80. //不允许更改
  81. return 2;
  82. }
  83. public Buy status(Buy buy) {
  84. return buyMapper.status(buy.getJmId(), buy.getUserId());
  85. }
  86. //截止日期状态的更改
  87. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  88. public int updateStatus() {
  89. List<JmTuangou> jmTuangous = jmTuangouDao.selectAll();
  90. if (jmTuangous != null && jmTuangous.size() > 0) {
  91. for (JmTuangou list : jmTuangous) {
  92. //判断是指挥部还是管理员
  93. if (list.getRoleType()==1) {
  94. if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
  95. jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
  96. }
  97. } else {
  98. // 团购数量 最小起订量
  99. Buy buy = buyMapper.selectCountNum(list.getJmId());
  100. //已经到截止时间
  101. if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
  102. if (buy != null) { //最小起订量
  103. if (list.getTgMinNum().longValue() > buy.getCount().longValue()) {
  104. jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
  105. } else {
  106. jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
  107. }
  108. } else {
  109. jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
  110. }
  111. } else {
  112. //团购数量已经过了最大起订量的 就直接发货
  113. if (buy != null) {
  114. if (list.getTgMaxNum().intValue() == buy.getCount().intValue()) {
  115. jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
  116. }
  117. }
  118. }
  119. }
  120. }
  121. }
  122. return 1;
  123. }
  124. }