package com.bofeng.service; import com.baomidou.mybatisplus.toolkit.IdWorker; import com.bofeng.dao.BuyMapper; import com.bofeng.dao.JmTuangouDao; import com.bofeng.entity.Buy; import com.bofeng.entity.JmTuangou; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @Service @Transactional(readOnly = true) public class BuyService { @Autowired private BuyMapper buyMapper; @Autowired private JmTuangouDao jmTuangouDao; @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public int buyGroup(Buy buy) { Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId()); if (buy1 != null) { buy.setBuyId(buy1.getBuyId()); return buyMapper.updateById(buy); } buy.setBuyId(IdWorker.getId()); buy.setUserCreate(buy.getUserId()); buy.setTimeCreate(new DateTime()); buy.setBuyStatus(1);//在团 return buyMapper.insert(buy); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public List group(Long userId) { updateStatus(); return buyMapper.group(userId); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public List MyGroup(Long userId) { updateStatus(); return buyMapper.MyGroup(userId); } public Buy queryGroup(Long buyId) { return buyMapper.selectById(buyId); } public JmTuangou selectGroup(Long userId, Long jmId) { return buyMapper.selectGroup(userId, jmId); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public int buyBack(Buy buy) { //在该套餐截止日期之前 并且是在团状态的才能撤单 JmTuangou jmTuangou = buyMapper.selectGroup(buy.getUserId(), buy.getJmId()); if (jmTuangou.getTgEndTime().getTime() > new DateTime().getMillis() && jmTuangou.getTgStatus() == 1) { Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId()); buy.setBuyId(buy1.getBuyId()); buy.setBuyStatus(2);//撤单 return buyMapper.updateById(buy); } //不允许更改 return 2; } public Buy status(Buy buy) { return buyMapper.status(buy.getJmId()); } //截止日期状态的更改 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public int updateStatus() { List jmTuangous = jmTuangouDao.selectAll(); if (jmTuangous != null && jmTuangous.size() > 0) { //已经到截止时间 for (JmTuangou list : jmTuangous) if (list.getTgEndTime().getTime() < new DateTime().getMillis()) { // 团购数量 最小起订量 List buys = buyMapper.selectCountNum(list.getJmId()); if (buys != null && buys.size() > 0) { for (Buy v : buys) { //最小起订量 if (v.getCount().intValue() < list.getTgMinNum().intValue()) { jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消 } else { jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货 } } } else { jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消 } } } return 1; } }