aiVip
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.peanut.modules.common.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -40,5 +41,12 @@ public class AiBuyConfig implements Serializable {
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
@TableField(exist = false)
|
||||
private boolean canUpgrade;
|
||||
@TableField(exist = false)
|
||||
private String upgradeCount;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal upgradeFee;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -36,6 +36,9 @@ public class AiVipLog implements Serializable {
|
||||
//结束时间
|
||||
private Date endTime;
|
||||
|
||||
//0有效1失效
|
||||
private Integer state;
|
||||
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
|
||||
@@ -217,6 +217,8 @@ public class BuyOrder implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private VipBuyConfigEntity vipBuyConfigEntity;
|
||||
@TableField(exist = false)
|
||||
private AiBuyConfig aiBuyConfig;
|
||||
@TableField(exist = false)
|
||||
private BookEntity bookEntity;
|
||||
@TableField(exist = false)
|
||||
private String trainingClassIdentity;
|
||||
|
||||
@@ -2,13 +2,14 @@ package com.peanut.modules.common.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.peanut.modules.common.entity.AiVipLog;
|
||||
import com.peanut.modules.common.entity.BuyOrder;
|
||||
|
||||
public interface AiVipLogService extends IService<AiVipLog> {
|
||||
|
||||
void openAiVip(int aiBuyConfigId);
|
||||
void openAiVip(BuyOrder buyOrder);
|
||||
|
||||
boolean isAiVip();
|
||||
|
||||
void userCount();
|
||||
boolean userCount();
|
||||
|
||||
}
|
||||
|
||||
@@ -9,13 +9,12 @@ import com.peanut.modules.common.dao.AiBuyConfigDao;
|
||||
import com.peanut.modules.common.dao.AiVipLogDao;
|
||||
import com.peanut.modules.common.entity.AiBuyConfig;
|
||||
import com.peanut.modules.common.entity.AiVipLog;
|
||||
import com.peanut.modules.common.entity.BuyOrder;
|
||||
import com.peanut.modules.common.service.AiVipLogService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service("commonAiVipLogService")
|
||||
@@ -25,58 +24,60 @@ public class AiVipLogServiceImpl extends ServiceImpl<AiVipLogDao, AiVipLog> impl
|
||||
private AiBuyConfigDao aiBuyConfigDao;
|
||||
|
||||
@Override
|
||||
public void openAiVip(int aiBuyConfigId) {
|
||||
AiBuyConfig config = aiBuyConfigDao.selectById(aiBuyConfigId);
|
||||
public void openAiVip(BuyOrder buyOrder) {
|
||||
AiBuyConfig config = aiBuyConfigDao.selectById(buyOrder.getAiBuyConfigId());
|
||||
if (config != null) {
|
||||
AiVipLog aiVipLog = new AiVipLog();
|
||||
aiVipLog.setUserId(ShiroUtils.getUId());
|
||||
//1月度2季度
|
||||
aiVipLog.setType(config.getType());
|
||||
aiVipLog.setCount(config.getCount());
|
||||
aiVipLog.setSurplusCount(config.getCount());
|
||||
Date date = new Date();
|
||||
aiVipLog.setStartTime(date);
|
||||
if (config.getType()==1){
|
||||
aiVipLog.setEndTime(DateUtils.addDateMonths(date,1));
|
||||
}else {
|
||||
aiVipLog.setEndTime(DateUtils.addDateMonths(date,3));
|
||||
if ("aiVip".equals(buyOrder.getOrderType())){
|
||||
AiVipLog aiVipLog = new AiVipLog();
|
||||
aiVipLog.setUserId(ShiroUtils.getUId());
|
||||
//1月度2季度
|
||||
aiVipLog.setType(config.getType());
|
||||
aiVipLog.setCount(config.getCount());
|
||||
aiVipLog.setSurplusCount(config.getCount());
|
||||
Date date = new Date();
|
||||
aiVipLog.setStartTime(date);
|
||||
if (config.getType()==1){
|
||||
aiVipLog.setEndTime(DateUtils.addDateMonths(date,1));
|
||||
}else {
|
||||
aiVipLog.setEndTime(DateUtils.addDateMonths(date,3));
|
||||
}
|
||||
this.save(aiVipLog);
|
||||
}else if ("upgradeAiVip".equals(buyOrder.getOrderType())){
|
||||
AiVipLog aiVipLog = this.getOne(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId,ShiroUtils.getUId())
|
||||
.eq(AiVipLog::getState,0));
|
||||
if (aiVipLog!=null){
|
||||
aiVipLog.setSurplusCount(config.getCount()-aiVipLog.getCount()+aiVipLog.getSurplusCount());
|
||||
aiVipLog.setCount(config.getCount());
|
||||
this.updateById(aiVipLog);
|
||||
}
|
||||
}
|
||||
this.save(aiVipLog);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAiVip() {
|
||||
List<AiVipLog> aiVipLogs = this.list(new LambdaQueryWrapper<AiVipLog>()
|
||||
AiVipLog aiVipLog = this.getOne(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId,ShiroUtils.getUId())
|
||||
.orderByAsc(AiVipLog::getStartTime));
|
||||
for (AiVipLog aiVipLog:aiVipLogs){
|
||||
if (aiVipLog.getSurplusCount()>0&&new Date().getTime()<aiVipLog.getEndTime().getTime()){
|
||||
return true;
|
||||
}
|
||||
.eq(AiVipLog::getState,0));
|
||||
if (aiVipLog.getSurplusCount()>0&&new Date().getTime()<aiVipLog.getEndTime().getTime()){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userCount() {
|
||||
List<AiVipLog> aiVipLogs = this.list(new LambdaQueryWrapper<AiVipLog>()
|
||||
public boolean userCount() {
|
||||
AiVipLog aiVipLog = this.getOne(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId,ShiroUtils.getUId())
|
||||
.orderByAsc(AiVipLog::getStartTime));
|
||||
boolean flag = false;
|
||||
for (AiVipLog aiVipLog:aiVipLogs){
|
||||
if (aiVipLog.getSurplusCount()>0&&new Date().getTime()<aiVipLog.getEndTime().getTime()){
|
||||
aiVipLog.setSurplusCount(aiVipLog.getSurplusCount()-1);
|
||||
this.updateById(aiVipLog);
|
||||
flag = true;
|
||||
}
|
||||
if (aiVipLog.getSurplusCount()==0||aiVipLog.getEndTime().getTime()<new Date().getTime()){
|
||||
this.removeById(aiVipLog);
|
||||
}
|
||||
if (flag){
|
||||
break;
|
||||
}
|
||||
.eq(AiVipLog::getState,0));
|
||||
if (aiVipLog.getSurplusCount()>0&&new Date().getTime()<aiVipLog.getEndTime().getTime()){
|
||||
aiVipLog.setSurplusCount(aiVipLog.getSurplusCount()-1);
|
||||
this.updateById(aiVipLog);
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,8 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
@Autowired
|
||||
private VipBuyConfigDao vipBuyConfigDao;
|
||||
@Autowired
|
||||
private AiBuyConfigDao aiBuyConfigDao;
|
||||
@Autowired
|
||||
private ShopProductCourseDao shopProductCourseDao;
|
||||
|
||||
@Override
|
||||
@@ -90,6 +92,9 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
if (b.getVipBuyConfigId()!=0){
|
||||
b.setVipBuyConfigEntity(vipBuyConfigDao.selectById(b.getVipBuyConfigId()));
|
||||
}
|
||||
if (b.getAiBuyConfigId()!=0){
|
||||
b.setAiBuyConfig(aiBuyConfigDao.selectById(b.getAiBuyConfigId()));
|
||||
}
|
||||
//组装商品
|
||||
List<BuyOrderProduct> buyOrderProducts = buyOrderProductDao.selectList(
|
||||
new LambdaQueryWrapper<BuyOrderProduct>().eq(BuyOrderProduct::getOrderId, b.getOrderId()));
|
||||
@@ -138,9 +143,12 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
|
||||
if (buyOrder.getProductId()!=null){
|
||||
buyOrder.setBookBuyConfigEntity(bookBuyConfigDao.selectById(buyOrder.getProductId()));
|
||||
}
|
||||
if (buyOrder.getVipBuyConfigId()!=null){
|
||||
if (buyOrder.getVipBuyConfigId()!=null&&buyOrder.getAiBuyConfigId()!=0){
|
||||
buyOrder.setVipBuyConfigEntity(vipBuyConfigDao.selectById(buyOrder.getVipBuyConfigId()));
|
||||
}
|
||||
if (buyOrder.getAiBuyConfigId()!=null&&buyOrder.getAiBuyConfigId()!=0){
|
||||
buyOrder.setAiBuyConfig(aiBuyConfigDao.selectById(buyOrder.getAiBuyConfigId()));
|
||||
}
|
||||
//添加商品信息
|
||||
MPJLambdaWrapper<BuyOrderProduct> buyOrderProductWrapper = new MPJLambdaWrapper<>();
|
||||
buyOrderProductWrapper.leftJoin(BuyOrder.class,BuyOrder::getOrderId,BuyOrderProduct::getOrderId);
|
||||
|
||||
Reference in New Issue
Block a user