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);
|
||||
|
||||
53
src/main/java/com/peanut/modules/job/task/AiVipTask.java
Normal file
53
src/main/java/com/peanut/modules/job/task/AiVipTask.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.peanut.modules.job.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.peanut.config.DelayQueueConfig;
|
||||
import com.peanut.modules.common.entity.AiVipLog;
|
||||
import com.peanut.modules.common.service.AiVipLogService;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.springframework.amqp.core.MessagePostProcessor;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component("aiVipTask")
|
||||
public class AiVipTask implements ITask{
|
||||
|
||||
@Autowired
|
||||
private AiVipLogService aiVipLogService;
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Override
|
||||
public void run(String params) {
|
||||
List<AiVipLog> aiVipLogs = aiVipLogService.list(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getState,0));
|
||||
for (AiVipLog aiVipLog : aiVipLogs) {
|
||||
if (aiVipLog.getEndTime().getTime()<new Date().getTime()){
|
||||
aiVipLog.setState(1);
|
||||
aiVipLogService.updateById(aiVipLog);
|
||||
}else if (DateUtil.isSameDay(DateUtils.addDays(new Date(),1), aiVipLog.getEndTime())){
|
||||
rabbitTemplate.convertAndSend(
|
||||
DelayQueueConfig.COMMON_EXCHANGE,
|
||||
DelayQueueConfig.COMMON_ROUTING_KEY,
|
||||
"aiVipExpire"+","+aiVipLog.getId(),
|
||||
messagePostProcessor(aiVipLog.getEndTime().getTime()-new Date().getTime())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private MessagePostProcessor messagePostProcessor(long date) {
|
||||
return message -> {
|
||||
message.getMessageProperties().setDelay((int)date);
|
||||
return message;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.peanut.config.DelayQueueConfig;
|
||||
import com.peanut.modules.common.dao.*;
|
||||
import com.peanut.modules.common.entity.*;
|
||||
import com.peanut.modules.common.service.ClassEntityService;
|
||||
import com.peanut.modules.common.service.ClassExamService;
|
||||
import com.peanut.modules.common.service.CouponHistoryService;
|
||||
import com.peanut.modules.common.service.UserVipService;
|
||||
import com.peanut.modules.common.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -41,6 +38,8 @@ public class CommonConsumer {
|
||||
private CourseCatalogueDao courseCatalogueDao;
|
||||
@Autowired
|
||||
private UserVipService userVipService;
|
||||
@Autowired
|
||||
private AiVipLogService aiVipLogService;
|
||||
|
||||
@RabbitListener(queues = DelayQueueConfig.COMMON_QUEUE)
|
||||
public void commonConsumer(String typeAndParam) {
|
||||
@@ -102,6 +101,14 @@ public class CommonConsumer {
|
||||
couponHistoryService.updateById(couponHistory);
|
||||
}
|
||||
}
|
||||
//aiVip过期
|
||||
if ("aiVipExpire".equals(typeAndParams[0])){
|
||||
AiVipLog aiVipLog = aiVipLogService.getById(typeAndParams[1]);
|
||||
if (aiVipLog != null&&aiVipLog.getState()==0) {
|
||||
aiVipLog.setState(1);
|
||||
aiVipLogService.updateById(aiVipLog);
|
||||
}
|
||||
}
|
||||
}catch (Exception e) {
|
||||
log.error("mq通用队列消费异常",e.getMessage()+"-"+typeAndParam);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
@@ -209,7 +211,7 @@ public class AliPayServiceImpl implements AliPayService {
|
||||
userCoinJf(order);
|
||||
}
|
||||
//开通aivip
|
||||
aiVipLogService.openAiVip(order.getAiBuyConfigId());
|
||||
aiVipLogService.openAiVip(order);
|
||||
}
|
||||
|
||||
if("point".equals(subject)){
|
||||
@@ -338,8 +340,8 @@ public class AliPayServiceImpl implements AliPayService {
|
||||
}
|
||||
log.error(">>>>>>>>>>验签失败 params = {}", params.toString());
|
||||
return "fail";
|
||||
|
||||
} catch (Exception e) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
log.error(">>>>>>>>>>订单回调异常: 订单号 = {}, msg = {}", params.toString(), e.getMessage());
|
||||
return "fail";
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
|
||||
userCoinJf(order);
|
||||
}
|
||||
//开通aivip
|
||||
aiVipLogService.openAiVip(order.getAiBuyConfigId());
|
||||
aiVipLogService.openAiVip(order);
|
||||
}
|
||||
|
||||
// 1.根据订单id获取订单信息
|
||||
|
||||
@@ -2,13 +2,18 @@ package com.peanut.modules.taihumed.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.peanut.common.utils.R;
|
||||
import com.peanut.common.utils.ShiroUtils;
|
||||
import com.peanut.modules.common.entity.AiBuyConfig;
|
||||
import com.peanut.modules.common.entity.AiVipLog;
|
||||
import com.peanut.modules.common.service.AiBuyConfigService;
|
||||
import com.peanut.modules.common.service.AiVipLogService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@@ -18,12 +23,41 @@ public class AiBuyConfigController {
|
||||
|
||||
@Autowired
|
||||
private AiBuyConfigService aiBuyConfigService;
|
||||
@Autowired
|
||||
private AiVipLogService aiVipLogService;
|
||||
|
||||
//ai会员配置列表
|
||||
@RequestMapping("/getAiBuyConfigList")
|
||||
public R getAiBuyConfigList(){
|
||||
List<AiBuyConfig> list = aiBuyConfigService.list(new LambdaQueryWrapper<AiBuyConfig>()
|
||||
.orderByAsc(AiBuyConfig::getFee));
|
||||
//是否会员
|
||||
AiVipLog aiVipLog = aiVipLogService.getOne(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId,ShiroUtils.getUId())
|
||||
.eq(AiVipLog::getState,0));
|
||||
//不是会员全部返回
|
||||
if (aiVipLog==null){
|
||||
for (AiBuyConfig aiBuyConfig:list){
|
||||
aiBuyConfig.setCanUpgrade(true);
|
||||
}
|
||||
}else {
|
||||
AiBuyConfig config = aiBuyConfigService.getOne(new LambdaQueryWrapper<AiBuyConfig>()
|
||||
.eq(AiBuyConfig::getType,aiVipLog.getType())
|
||||
.eq(AiBuyConfig::getCount,aiVipLog.getCount()));
|
||||
//是会员判断能否升级
|
||||
for (AiBuyConfig aiBuyConfig:list){
|
||||
List<AiVipLog> aiVipLogs = aiVipLogService.list(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId, ShiroUtils.getUId())
|
||||
.eq(AiVipLog::getState, 0)
|
||||
.eq(AiVipLog::getType, aiBuyConfig.getType())
|
||||
.lt(AiVipLog::getCount, aiBuyConfig.getCount()));
|
||||
if (aiVipLogs.size()>0){
|
||||
aiBuyConfig.setCanUpgrade(true);
|
||||
aiBuyConfig.setUpgradeFee(aiBuyConfig.getFee().subtract(config.getFee()));
|
||||
aiBuyConfig.setUpgradeCount(new BigDecimal(aiBuyConfig.getCount()).subtract(new BigDecimal(config.getCount()))+"");
|
||||
}
|
||||
}
|
||||
}
|
||||
return R.ok().put("list",list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,17 +2,14 @@ package com.peanut.modules.taihumed.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.peanut.common.utils.R;
|
||||
import com.peanut.common.utils.ShiroUtils;
|
||||
import com.peanut.config.Constants;
|
||||
import com.peanut.config.DelayQueueConfig;
|
||||
import com.peanut.modules.book.service.TransactionDetailsService;
|
||||
import com.peanut.modules.common.entity.BuyOrder;
|
||||
import com.peanut.modules.common.entity.MyUserEntity;
|
||||
import com.peanut.modules.common.service.AiVipLogService;
|
||||
import com.peanut.modules.common.service.BuyOrderService;
|
||||
import com.peanut.modules.common.service.JfTransactionDetailsService;
|
||||
import com.peanut.modules.common.service.MyUserService;
|
||||
import com.peanut.modules.common.entity.*;
|
||||
import com.peanut.modules.common.service.*;
|
||||
import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo;
|
||||
import com.peanut.modules.pay.weChatPay.service.WxpayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,6 +22,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@RestController("taihumedAiVip")
|
||||
@@ -44,7 +43,45 @@ public class AiVipController {
|
||||
@Autowired
|
||||
private WxpayService wxpayService;
|
||||
@Autowired
|
||||
private AiChatContentService aiChatContentService;
|
||||
@Autowired
|
||||
private AiVipLogService aiVipLogService;
|
||||
@Autowired
|
||||
private AiBuyConfigService aiBuyConfigService;
|
||||
|
||||
//用户开通aivip信息
|
||||
@RequestMapping("/getUserAiVip")
|
||||
public R getUserAiVip(){
|
||||
int freeCount = 0;
|
||||
int flag = 0;//不是vip
|
||||
AiVipLog aiVipLog = aiVipLogService.getOne(new LambdaQueryWrapper<AiVipLog>()
|
||||
.eq(AiVipLog::getUserId,ShiroUtils.getUId())
|
||||
.eq(AiVipLog::getState,0));
|
||||
if (aiVipLog!=null){
|
||||
List<AiBuyConfig> aiBuyConfig = aiBuyConfigService.list(new LambdaQueryWrapper<AiBuyConfig>()
|
||||
.eq(AiBuyConfig::getType,aiVipLog.getType())
|
||||
.orderByDesc(AiBuyConfig::getCount));
|
||||
//能否升级
|
||||
if (aiBuyConfig.size() > 0){
|
||||
if (aiVipLog.getCount()<aiBuyConfig.get(0).getCount()){
|
||||
flag = 1;//是vip可升级
|
||||
}else if (aiVipLog.getCount()==aiBuyConfig.get(0).getCount()){
|
||||
flag = 2;//是vip不可升级
|
||||
}
|
||||
}
|
||||
}else {
|
||||
List<AiChatContent> quankeContentList = aiChatContentService.list(new LambdaQueryWrapper<AiChatContent>()
|
||||
.eq(AiChatContent::getUserId,ShiroUtils.getUId())
|
||||
.like(AiChatContent::getChatAssistantName,"全科")
|
||||
.orderByAsc(AiChatContent::getCreateTime)
|
||||
.groupBy(AiChatContent::getChatId));
|
||||
freeCount = 3-quankeContentList.size();
|
||||
|
||||
}
|
||||
return R.ok().put("aiVipLog",aiVipLog)
|
||||
.put("flag",flag)
|
||||
.put("freeCount",freeCount);
|
||||
}
|
||||
|
||||
//aivip下单
|
||||
@RequestMapping("/placeAiVipOrder")
|
||||
@@ -52,7 +89,6 @@ public class AiVipController {
|
||||
public R placeVipOrder(@RequestBody BuyOrder buyOrder){
|
||||
int uid = ShiroUtils.getUId();
|
||||
buyOrder.setOrderStatus("0");
|
||||
buyOrder.setOrderType("aiVip");
|
||||
String timeId = IdWorker.getTimeId().substring(0, 32);
|
||||
buyOrder.setOrderSn(timeId);
|
||||
buyOrder.setUserId(uid);
|
||||
@@ -73,7 +109,7 @@ public class AiVipController {
|
||||
jfTransactionDetailsService.recordJfTransaction(buyOrder, user, buyOrder.getJfDeduction());
|
||||
}
|
||||
//开通用户aiVip
|
||||
aiVipLogService.openAiVip(buyOrder.getAiBuyConfigId());
|
||||
aiVipLogService.openAiVip(buyOrder);
|
||||
} else {
|
||||
rabbitTemplate.convertAndSend(
|
||||
DelayQueueConfig.ORDER_TO_BE_PAY_EXCHANGE,
|
||||
|
||||
Reference in New Issue
Block a user