BuyService.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. if (buy1 != null) {
  25. JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy1.getJmId());
  26. Buy buy2 = buyMapper.selectById(buy1.getBuyId());
  27. if (jmTuangou.getTgMaxNum().intValue() >= jmTuangou.getCurrentNum().intValue() - buy2.getBuyCount().intValue() + buy.getBuyCount().intValue()) {
  28. buy.setBuyId(buy1.getBuyId());
  29. return buyMapper.updateById(buy);
  30. } else {
  31. return 3;//不允许更改团购数量
  32. }
  33. }
  34. //第一次购买团购数量大于最大上限数量不允许
  35. JmTuangou jmTuangou = jmTuangouDao.selectById(buy.getJmId());
  36. if (jmTuangou.getTgMaxNum().intValue() < jmTuangou.getCurrentNum().intValue() + buy.getBuyCount().intValue()) {
  37. return 3;
  38. }
  39. buy.setBuyId(IdWorker.getId());
  40. buy.setUserCreate(buy.getUserId());
  41. buy.setTimeCreate(new DateTime());
  42. buy.setBuyStatus(1);//在团
  43. return buyMapper.insert(buy);
  44. }
  45. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  46. public List<JmTuangou> group(Long userId) {
  47. updateStatus();
  48. return buyMapper.group(userId);
  49. }
  50. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  51. public List<Buy> MyGroup(Long userId) {
  52. updateStatus();
  53. return buyMapper.MyGroup(userId);
  54. }
  55. public Buy queryGroup(Long buyId) {
  56. return buyMapper.selectById(buyId);
  57. }
  58. public JmTuangou selectGroup(Long userId, Long jmId) {
  59. return buyMapper.selectGroup(userId, jmId);
  60. }
  61. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  62. public int buyBack(Buy buy) {
  63. //在该套餐截止日期之前 并且是在团状态的才能撤单
  64. JmTuangou jmTuangou = buyMapper.selectGroup(buy.getUserId(), buy.getJmId());
  65. if (jmTuangou.getTgEndTime().getTime() > new DateTime().getMillis() && jmTuangou.getTgStatus() == 1) {
  66. Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId());
  67. buy.setBuyId(buy1.getBuyId());
  68. buy.setBuyStatus(2);//撤单
  69. return buyMapper.updateById(buy);
  70. }
  71. //不允许更改
  72. return 2;
  73. }
  74. public Buy status(Buy buy) {
  75. return buyMapper.status(buy.getJmId(), buy.getUserId());
  76. }
  77. //截止日期状态的更改
  78. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  79. public int updateStatus() {
  80. List<JmTuangou> jmTuangous = jmTuangouDao.selectAll();
  81. if (jmTuangous != null && jmTuangous.size() > 0) {
  82. for (JmTuangou list : jmTuangous) {
  83. // 团购数量 最小起订量
  84. Buy buy = buyMapper.selectCountNum(list.getJmId());
  85. //已经到截止时间
  86. if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
  87. if (buy != null) { //最小起订量
  88. if (list.getTgMinNum().intValue() > buy.getCount().intValue()) {
  89. jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
  90. } else {
  91. jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
  92. }
  93. } else {
  94. jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
  95. }
  96. } else {
  97. //团购数量已经过了最大起订量的 就直接发货
  98. if (buy != null) {
  99. if (list.getTgMaxNum().intValue() == buy.getCount().intValue()) {
  100. jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
  101. }
  102. }
  103. }
  104. }
  105. }
  106. return 1;
  107. }
  108. }