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()); JmTuangou roleType = jmTuangouDao.getSelectOneRoleId(buy.getJmId()); if (buy1 != null) { JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy1.getJmId()); Buy buy2 = buyMapper.selectById(buy1.getBuyId()); if (roleType.getRoleType() != 1) { if (jmTuangou.getTgMaxNum().intValue() >= jmTuangou.getCurrentNum().intValue() - buy2.getBuyCount().intValue() + buy.getBuyCount().intValue()) { //个人限额(指挥部的限额 和 管理员的限额) if (roleType.getTgItemNum().intValue() != 0 && roleType.getTgItemNum().intValue() < buy.getBuyCount().intValue()) { return 4; } buy.setBuyId(buy1.getBuyId()); return buyMapper.updateById(buy); } else { return 3;//不允许更改团购数量 } } else { //指挥部的更改 //个人限额(指挥部的限额 和 管理员的限额) if (roleType.getTgItemNum().intValue() != 0 && roleType.getTgItemNum().intValue() < buy.getBuyCount().intValue()) { return 4; } buy.setBuyId(buy1.getBuyId()); return buyMapper.updateById(buy); } } //1 是指挥部 if (roleType.getRoleType() != 1) { //第一次购买团购数量大于最大上限数量不允许 JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy.getJmId()); if (jmTuangou.getTgMaxNum().intValue() < jmTuangou.getCurrentNum().intValue() + buy.getBuyCount().intValue()) { return 3; } } //个人限额(指挥部的限额 和 管理员的限额) if (roleType.getTgItemNum().intValue() != 0 && roleType.getTgItemNum().intValue() < buy.getBuyCount().intValue()) { return 4; } 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(), buy.getUserId()); } //截止日期状态的更改 @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.getRoleType() == 1) { if (list.getTgEndTime().getTime() < new DateTime().getMillis()) { jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货 } } else { // 团购数量 最小起订量 Buy buy = buyMapper.selectCountNum(list.getJmId()); //已经到截止时间 if (list.getTgEndTime().getTime() < new DateTime().getMillis()) { if (buy != null) { //最小起订量 if (list.getTgMinNum().longValue() > buy.getCount().longValue()) { jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消 } else { jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货 } } else { jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消 } } /*else { //团购数量已经过了最大起订量的 就直接发货 if (buy != null) { if (list.getTgMaxNum().intValue() == buy.getCount().intValue()) { jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货 } } }*/ } } } return 1; } }