This commit is contained in:
wuchunlei
2025-06-04 17:12:00 +08:00
parent 6852c64984
commit 5cc6f4f255
12 changed files with 212 additions and 57 deletions

View File

@@ -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;
}

View File

@@ -36,6 +36,9 @@ public class AiVipLog implements Serializable {
//结束时间
private Date endTime;
//0有效1失效
private Integer state;
@TableLogic
private Integer delFlag;

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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;
}
}
}

View File

@@ -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);