add 添加关联订单号

AiBalanceChangeRecord、AiRebateRecord、AiSampleAmountRecord 这三个类需要到对应的表添加关联订单号的字段
This commit is contained in:
chanbook 2026-01-22 17:33:48 +08:00
parent 6701b8f765
commit 497b3b9c80
9 changed files with 156 additions and 128 deletions

View File

@ -2,12 +2,9 @@ package com.ruoyi.api;
import com.ruoyi.ai.domain.AiSampleAmount; import com.ruoyi.ai.domain.AiSampleAmount;
import com.ruoyi.ai.domain.AiSampleAmountRecord; import com.ruoyi.ai.domain.AiSampleAmountRecord;
import com.ruoyi.ai.domain.AiStatistics;
import com.ruoyi.ai.domain.enums.AiConfigEnum;
import com.ruoyi.ai.mapper.AiSampleAmountMapper; import com.ruoyi.ai.mapper.AiSampleAmountMapper;
import com.ruoyi.ai.service.EmailVerifyService; import com.ruoyi.ai.service.EmailVerifyService;
import com.ruoyi.ai.service.IAiSampleAmountRecordService; import com.ruoyi.ai.service.IAiSampleAmountRecordService;
import com.ruoyi.ai.service.IAiStatisticsService;
import com.ruoyi.ai.service.IAiUserService; import com.ruoyi.ai.service.IAiUserService;
import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.constant.BalanceChangerConstants; import com.ruoyi.common.constant.BalanceChangerConstants;
@ -22,10 +19,8 @@ import com.ruoyi.common.core.domain.model.RegisterAiUserBody;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.IpCountryQueryByApi;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.service.ISysJobService; import com.ruoyi.quartz.service.ISysJobService;
@ -40,7 +35,10 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.UUID;
/** /**
@ -104,8 +102,11 @@ public class AiUserApiController extends BaseController {
// 查询启用状态体验金活动 // 查询启用状态体验金活动
AiSampleAmount aiSampleAmount = aiSampleAmountMapper.getSampleAmount(); AiSampleAmount aiSampleAmount = aiSampleAmountMapper.getSampleAmount();
if (aiSampleAmount != null) { if (aiSampleAmount != null) {
String uuid = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8);
String dateTime = new SimpleDateFormat("yyyyMMdd").format(new Date());
String orderNo = dateTime + uuid;
// 余额变更记录 // 余额变更记录
aiUserService.addUserBalance(aiUser.getId(), aiSampleAmount.getAmount(), BalanceChangerConstants.EXPERIENCE_GOLD_GIFT); aiUserService.addUserBalance(orderNo, aiUser.getId(), aiSampleAmount.getAmount(), BalanceChangerConstants.EXPERIENCE_GOLD_GIFT);
// 新增体验金记录 // 新增体验金记录
AiSampleAmountRecord aiSampleAmountRecord = new AiSampleAmountRecord(); AiSampleAmountRecord aiSampleAmountRecord = new AiSampleAmountRecord();
aiSampleAmountRecord.setUserId(aiUser.getId()); aiSampleAmountRecord.setUserId(aiUser.getId());
@ -218,6 +219,7 @@ public class AiUserApiController extends BaseController {
/** /**
* 查询返佣比例配置 * 查询返佣比例配置
*
* @return * @return
*/ */
@GetMapping("/getRebateConfig") @GetMapping("/getRebateConfig")

View File

@ -1,33 +1,27 @@
package com.ruoyi.web.controller.ai; package com.ruoyi.web.controller.ai;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import com.ruoyi.ai.service.EmailVerifyService;
import com.ruoyi.ai.service.IAiUserService; import com.ruoyi.ai.service.IAiUserService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.BalanceChangerConstants; import com.ruoyi.common.constant.BalanceChangerConstants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.AiUser; import com.ruoyi.common.core.domain.entity.AiUser;
import com.ruoyi.common.core.domain.model.RegisterAiUserBody;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.mail.MessagingException;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* ai-用户信息Controller * ai-用户信息Controller
@ -77,7 +71,6 @@ public class AiUserController extends BaseController {
} }
/** /**
* 新增ai-用户信息 * 新增ai-用户信息
*/ */
@ -123,9 +116,12 @@ public class AiUserController extends BaseController {
aiUser.setUpdateBy(getUsername()); aiUser.setUpdateBy(getUsername());
// 获取原余额 // 获取原余额
AiUser u = aiUserService.selectAiUserById(aiUser.getId()); AiUser u = aiUserService.selectAiUserById(aiUser.getId());
String uuid = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8);
String dateTime = new SimpleDateFormat("yyyyMMdd").format(new Date());
String orderNo = dateTime + uuid;
// 计算变更余额 // 计算变更余额
BigDecimal amount = NumberUtil.sub(aiUser.getBalance(), u.getBalance()); BigDecimal amount = NumberUtil.sub(aiUser.getBalance(), u.getBalance());
aiUserService.addUserBalance(aiUser.getId(), amount, BalanceChangerConstants.SYSTEM_OPERATION); aiUserService.addUserBalance(orderNo, aiUser.getId(), amount, BalanceChangerConstants.SYSTEM_OPERATION);
return toAjax(1); return toAjax(1);
} }
@ -151,8 +147,6 @@ public class AiUserController extends BaseController {
} }
// @GetMapping("/addUserBalance") // @GetMapping("/addUserBalance")
// public AjaxResult addUserBalance(BigDecimal amount) { // public AjaxResult addUserBalance(BigDecimal amount) {
// aiUserService.addUserBalance(SecurityUtils.getAiUserId(), amount, BalanceChangerConstants.RECHARGE); // aiUserService.addUserBalance(SecurityUtils.getAiUserId(), amount, BalanceChangerConstants.RECHARGE);

View File

@ -1,16 +1,14 @@
package com.ruoyi.ai.domain; package com.ruoyi.ai.domain;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/** /**
* 余额使用记录对象 ai_balance_change_record * 余额使用记录对象 ai_balance_change_record
@ -24,13 +22,23 @@ public class AiBalanceChangeRecord extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键ID */ /**
* 主键ID
*/
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 删除标志0代表存在 2代表删除 */ /**
* 删除标志0代表存在 2代表删除
*/
private String delFlag; private String delFlag;
/**
* 关联订单号
*/
@Excel(name = "关联订单号")
private String orderNo;
/** /**
* 用户ID * 用户ID
*/ */
@ -42,19 +50,27 @@ public class AiBalanceChangeRecord extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String uuid; private String uuid;
/** 操作类型0-充值 1-返佣 2-充值赠送 3-体验金赠送 4-体验金回收 5-图生图 6-一键换脸 7-快捷生图 8-快捷生视频 9-退款 10-系统操作 */ /**
* 操作类型0-充值 1-返佣 2-充值赠送 3-体验金赠送 4-体验金回收 5-图生图 6-一键换脸 7-快捷生图 8-快捷生视频 9-退款 10-系统操作
*/
@Excel(name = "操作类型") @Excel(name = "操作类型")
private Integer type; private Integer type;
/** 变更金额 */ /**
* 变更金额
*/
@Excel(name = "变更金额") @Excel(name = "变更金额")
private BigDecimal changeAmount; private BigDecimal changeAmount;
/** 变更后金额 */ /**
* 变更后金额
*/
@Excel(name = "变更后金额") @Excel(name = "变更后金额")
private BigDecimal resultAmount; private BigDecimal resultAmount;
/** 用户昵称 */ /**
* 用户昵称
*/
@TableField(exist = false) @TableField(exist = false)
@Excel(name = "用户昵称") @Excel(name = "用户昵称")
private String nickname; private String nickname;

View File

@ -1,16 +1,15 @@
package com.ruoyi.ai.domain; package com.ruoyi.ai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/** /**
* 返佣记录对象 ai_rebate_record * 返佣记录对象 ai_rebate_record
* *
@ -23,22 +22,38 @@ public class AiRebateRecord extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键ID */ /**
* 主键ID
*/
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 删除标志0代表存在 2代表删除 */ /**
* 关联订单号
*/
@Excel(name = "关联订单号")
private String orderNo;
/**
* 删除标志0代表存在 2代表删除
*/
private String delFlag; private String delFlag;
/** 上级ID */ /**
* 上级ID
*/
@Excel(name = "上级ID") @Excel(name = "上级ID")
private Long superiorId; private Long superiorId;
/** 下级ID */ /**
* 下级ID
*/
@Excel(name = "下级ID") @Excel(name = "下级ID")
private Long subordinateId; private Long subordinateId;
/** 返佣金额 */ /**
* 返佣金额
*/
@Excel(name = "返佣金额") @Excel(name = "返佣金额")
private BigDecimal amount; private BigDecimal amount;

View File

@ -1,18 +1,17 @@
package com.ruoyi.ai.domain; package com.ruoyi.ai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/** /**
* 体验金领取记录对象 ai_sample_amount_record * 体验金领取记录对象 ai_sample_amount_record
* *
@ -25,22 +24,38 @@ public class AiSampleAmountRecord extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键ID */ /**
* 主键ID
*/
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 删除标志0代表存在 2代表删除 */ /**
* 关联订单号
*/
@Excel(name = "关联订单号")
private String orderNo;
/**
* 删除标志0代表存在 2代表删除
*/
private String delFlag; private String delFlag;
/** 用户ID */ /**
* 用户ID
*/
@Excel(name = "用户ID") @Excel(name = "用户ID")
private Long userId; private Long userId;
/** 体验金额 */ /**
* 体验金额
*/
@Excel(name = "体验金额") @Excel(name = "体验金额")
private BigDecimal sampleAmount; private BigDecimal sampleAmount;
/** 回收时间 */ /**
* 回收时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "回收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "回收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date recycleTime; private Date recycleTime;

View File

@ -87,9 +87,9 @@ public interface IAiUserService {
void updateEmail(String email, String code); void updateEmail(String email, String code);
void addUserBalance(Long userId, BigDecimal amount, int recharge); void addUserBalance(String orderNo, Long userId, BigDecimal amount, int recharge);
void addUserBalance(Long userId, BigDecimal amount, int recharge, String remark); void addUserBalance(String orderNo, Long userId, BigDecimal amount, int recharge, String remark);
AiUser getUserByEmail(String email); AiUser getUserByEmail(String email);
@ -101,7 +101,7 @@ public interface IAiUserService {
public void deductSampleAmount(String userId); public void deductSampleAmount(String userId);
void handleRebate(Long userId, BigDecimal rechargeAmount); void handleRebate(String orderNo, Long userId, BigDecimal rechargeAmount);
String getRebateConfig(); String getRebateConfig();

View File

@ -1,25 +1,20 @@
package com.ruoyi.ai.service.impl; package com.ruoyi.ai.service.impl;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ai.domain.AiManager; import com.ruoyi.ai.domain.AiManager;
import com.ruoyi.ai.domain.AiOrder;
import com.ruoyi.ai.domain.AiStatistics; import com.ruoyi.ai.domain.AiStatistics;
import com.ruoyi.ai.mapper.AiOrderMapper;
import com.ruoyi.ai.service.IAiManagerService; import com.ruoyi.ai.service.IAiManagerService;
import com.ruoyi.ai.service.IAiOrderService;
import com.ruoyi.ai.service.IAiStatisticsService; import com.ruoyi.ai.service.IAiStatisticsService;
import com.ruoyi.ai.service.IAiUserService; import com.ruoyi.ai.service.IAiUserService;
import com.ruoyi.common.constant.BalanceChangerConstants; import com.ruoyi.common.constant.BalanceChangerConstants;
import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.AiUser; import com.ruoyi.common.core.domain.entity.AiUser;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
@ -27,14 +22,17 @@ import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.ai.mapper.AiOrderMapper;
import com.ruoyi.ai.domain.AiOrder;
import com.ruoyi.ai.service.IAiOrderService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/** /**
* 订单管理Service业务层处理 * 订单管理Service业务层处理
* *
* @author shi * @author shi
* @date 2025-11-13 * @date 2025-11-13
*/ */
@ -56,7 +54,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
/** /**
* 查询订单管理 * 查询订单管理
* *
* @param id 订单管理主键 * @param id 订单管理主键
* @return 订单管理 * @return 订单管理
*/ */
@ -67,7 +65,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
/** /**
* 查询订单管理列表 * 查询订单管理列表
* *
* @param aiOrder 订单管理 * @param aiOrder 订单管理
* @return 订单管理 * @return 订单管理
*/ */
@ -91,7 +89,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
/** /**
* 新增订单管理 * 新增订单管理
* *
* @param aiOrder 订单管理 * @param aiOrder 订单管理
* @return 结果 * @return 结果
*/ */
@ -105,7 +103,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
/** /**
* 修改订单管理 * 修改订单管理
* *
* @param aiOrder 订单管理 * @param aiOrder 订单管理
* @return 结果 * @return 结果
*/ */
@ -118,30 +116,29 @@ public class AiOrderServiceImpl implements IAiOrderService {
/** /**
* 批量删除订单管理 * 批量删除订单管理
* *
* @param ids 需要删除的订单管理主键 * @param ids 需要删除的订单管理主键
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteAiOrderByIds(Long[] ids) public int deleteAiOrderByIds(Long[] ids) {
{
return aiOrderMapper.deleteAiOrderByIds(ids); return aiOrderMapper.deleteAiOrderByIds(ids);
} }
/** /**
* 删除订单管理信息 * 删除订单管理信息
* *
* @param id 订单管理主键 * @param id 订单管理主键
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteAiOrderById(Long id) public int deleteAiOrderById(Long id) {
{
return aiOrderMapper.deleteAiOrderById(id); return aiOrderMapper.deleteAiOrderById(id);
} }
/** /**
* 生成订单 * 生成订单
*
* @param aiType 对应的AI类型 * @param aiType 对应的AI类型
* @return * @return
*/ */
@ -170,7 +167,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
aiOrder.setSource(aiUser.getSource()); aiOrder.setSource(aiUser.getSource());
aiOrderMapper.insert(aiOrder); aiOrderMapper.insert(aiOrder);
// 执行余额变更 // 执行余额变更
aiUserService.addUserBalance(SecurityUtils.getAiUserId(), NumberUtil.mul(-1, aiManager.getPrice()), getChangerType(aiType)); aiUserService.addUserBalance(orderno, SecurityUtils.getAiUserId(), NumberUtil.mul(-1, aiManager.getPrice()), getChangerType(aiType));
return aiOrder; return aiOrder;
} }
@ -181,7 +178,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
String remark = MessageUtils.message("order.number.generation.failed", aiOrder.getOrderNum()); String remark = MessageUtils.message("order.number.generation.failed", aiOrder.getOrderNum());
aiOrder.setRemark(remark); aiOrder.setRemark(remark);
aiOrderMapper.updateById(aiOrder); aiOrderMapper.updateById(aiOrder);
aiUserService.addUserBalance(SecurityUtils.getAiUserId(), aiOrder.getAmount(), BalanceChangerConstants.REFUND, remark); aiUserService.addUserBalance(aiOrder.getOrderNum(), SecurityUtils.getAiUserId(), aiOrder.getAmount(), BalanceChangerConstants.REFUND, remark);
} }
@Override @Override
@ -191,7 +188,7 @@ public class AiOrderServiceImpl implements IAiOrderService {
aiOrderMapper.updateById(aiOrder); aiOrderMapper.updateById(aiOrder);
AiStatistics aiStatistics = new AiStatistics(); AiStatistics aiStatistics = new AiStatistics();
aiStatistics.setSource(aiOrder.getSource()); aiStatistics.setSource(aiOrder.getSource());
aiStatistics.setGenerateCount(1l); aiStatistics.setGenerateCount(1L);
// 新增生成数量 // 新增生成数量
aiStatisticsService.saveOrUpdateData(aiStatistics); aiStatisticsService.saveOrUpdateData(aiStatistics);
} }

View File

@ -1,29 +1,24 @@
package com.ruoyi.ai.service.impl; package com.ruoyi.ai.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ai.domain.*;
import com.ruoyi.ai.mapper.AiRechargeMapper;
import com.ruoyi.ai.service.*;
import com.ruoyi.common.constant.BalanceChangerConstants;
import com.ruoyi.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ai.domain.*;
import com.ruoyi.ai.domain.enums.AiConfigEnum;
import com.ruoyi.ai.service.*;
import com.ruoyi.common.constant.BalanceChangerConstants;
import com.ruoyi.common.core.domain.entity.AiUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.SysConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.ai.mapper.AiRechargeMapper;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 充值管理Service业务层处理 * 充值管理Service业务层处理
* *
@ -107,12 +102,10 @@ public class AiRechargeServiceImpl implements IAiRechargeService {
aiRecharge.setGiftAmount(amount); aiRecharge.setGiftAmount(amount);
// 新增用户余额 // 新增用户余额
aiUserService.addUserBalance(aiRecharge.getUserId(), amount, BalanceChangerConstants.RECHARGE); aiUserService.addUserBalance(orderNo, aiRecharge.getUserId(), amount, BalanceChangerConstants.RECHARGE);
// 处理返佣 (根据充值金额计算返佣) // 处理返佣 (根据充值金额计算返佣)
aiUserService.handleRebate(aiRecharge.getUserId(), aiRechargeGiftGear.getRechargeAmount()); aiUserService.handleRebate(orderNo, aiRecharge.getUserId(), aiRechargeGiftGear.getRechargeAmount());
// 新增充值统计 // 新增充值统计
AiStatistics aiStatistics = new AiStatistics(); AiStatistics aiStatistics = new AiStatistics();
aiStatistics.setSource(aiRecharge.getSource()); aiStatistics.setSource(aiRecharge.getSource());
@ -120,14 +113,14 @@ public class AiRechargeServiceImpl implements IAiRechargeService {
statisticsService.saveOrUpdateData(aiStatistics); statisticsService.saveOrUpdateData(aiStatistics);
// 处理赠送金额 // 处理赠送金额
if (isFristRecharge && aiRecharge.getGearId() != null) { if (isFristRecharge && aiRecharge.getGearId() != null) {
// 查询活动是否过期 // 查询活动是否过期
boolean isAvailable = aiRechargeGiftService.isActivityAvailable(aiRechargeGiftGear.getRechargeId()); boolean isAvailable = aiRechargeGiftService.isActivityAvailable(aiRechargeGiftGear.getRechargeId());
if (isAvailable) { if (isAvailable) {
aiRecharge.setGiveAmount(aiRechargeGiftGear.getGiveAmount()); aiRecharge.setGiveAmount(aiRechargeGiftGear.getGiveAmount());
// 新增用户赠送余额 // 新增用户赠送余额
aiUserService.addUserBalance(aiRecharge.getUserId(), aiRechargeGiftGear.getGiveAmount(), BalanceChangerConstants.RECHARGE_BONUS); aiUserService.addUserBalance(orderNo, aiRecharge.getUserId(), aiRechargeGiftGear.getGiveAmount(), BalanceChangerConstants.RECHARGE_BONUS);
// 新增充值赠送记录 // 新增充值赠送记录
AiRechargeGiftRecord aiRechargeGiftRecord = new AiRechargeGiftRecord(); AiRechargeGiftRecord aiRechargeGiftRecord = new AiRechargeGiftRecord();
aiRechargeGiftRecord.setOrderNum(orderNo); aiRechargeGiftRecord.setOrderNum(orderNo);

View File

@ -9,20 +9,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ai.domain.*; import com.ruoyi.ai.domain.*;
import com.ruoyi.ai.domain.enums.AiConfigEnum; import com.ruoyi.ai.domain.enums.AiConfigEnum;
import com.ruoyi.ai.mapper.AiRechargeMapper; import com.ruoyi.ai.mapper.AiRechargeMapper;
import com.ruoyi.ai.mapper.AiSampleAmountMapper; import com.ruoyi.ai.mapper.AiUserMapper;
import com.ruoyi.ai.mapper.AiSampleAmountRecordMapper;
import com.ruoyi.ai.service.*; import com.ruoyi.ai.service.*;
import com.ruoyi.common.constant.BalanceChangerConstants; import com.ruoyi.common.constant.BalanceChangerConstants;
import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.entity.AiUser; import com.ruoyi.common.core.domain.entity.AiUser;
import com.ruoyi.ai.mapper.AiUserMapper;
import com.ruoyi.common.core.domain.model.LoginAiUser; import com.ruoyi.common.core.domain.model.LoginAiUser;
import com.ruoyi.common.core.domain.model.LoginAiUserBody; import com.ruoyi.common.core.domain.model.LoginAiUserBody;
import com.ruoyi.common.core.domain.model.RegisterAiUserBody; import com.ruoyi.common.core.domain.model.RegisterAiUserBody;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysConfigMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -30,7 +27,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -70,7 +66,6 @@ public class AiUserServiceImpl implements IAiUserService {
private AiRechargeMapper aiRechargeMapper; private AiRechargeMapper aiRechargeMapper;
/** /**
* 查询ai-用户信息 * 查询ai-用户信息
* *
@ -208,7 +203,7 @@ public class AiUserServiceImpl implements IAiUserService {
// 新增访客统计 // 新增访客统计
AiStatistics aiStatistics = new AiStatistics(); AiStatistics aiStatistics = new AiStatistics();
aiStatistics.setSource(registerAiUserBody.getSource()); aiStatistics.setSource(registerAiUserBody.getSource());
aiStatistics.setAddUserCount(1l); aiStatistics.setAddUserCount(1L);
aiStatisticsService.saveOrUpdateData(aiStatistics); aiStatisticsService.saveOrUpdateData(aiStatistics);
return aiUser; return aiUser;
} }
@ -352,13 +347,13 @@ public class AiUserServiceImpl implements IAiUserService {
} }
@Override @Override
public void addUserBalance(Long userId, BigDecimal amount, int recharge) { public void addUserBalance(String orderNo, Long userId, BigDecimal amount, int recharge) {
addUserBalance(userId, amount, recharge, null); addUserBalance(orderNo, userId, amount, recharge, null);
} }
@Override @Override
@Transactional @Transactional
public void addUserBalance(Long userId, BigDecimal amount, int recharge, String remark) { public void addUserBalance(String orderNo, Long userId, BigDecimal amount, int recharge, String remark) {
// 新增余额使用记录 // 新增余额使用记录
AiUser aiUser = aiUserMapper.selectById(userId); AiUser aiUser = aiUserMapper.selectById(userId);
AiBalanceChangeRecord balanceChangeRecord = new AiBalanceChangeRecord(); AiBalanceChangeRecord balanceChangeRecord = new AiBalanceChangeRecord();
@ -367,6 +362,7 @@ public class AiUserServiceImpl implements IAiUserService {
balanceChangeRecord.setChangeAmount(amount); balanceChangeRecord.setChangeAmount(amount);
balanceChangeRecord.setResultAmount(NumberUtil.add(amount, aiUser.getBalance())); balanceChangeRecord.setResultAmount(NumberUtil.add(amount, aiUser.getBalance()));
balanceChangeRecord.setRemark(remark); balanceChangeRecord.setRemark(remark);
balanceChangeRecord.setOrderNo(orderNo);
balanceChangeRecordService.insertAiBalanceChangeRecord(balanceChangeRecord); balanceChangeRecordService.insertAiBalanceChangeRecord(balanceChangeRecord);
// 修改用户余额 // 修改用户余额
aiUser.setBalance(balanceChangeRecord.getResultAmount()); aiUser.setBalance(balanceChangeRecord.getResultAmount());
@ -396,7 +392,7 @@ public class AiUserServiceImpl implements IAiUserService {
public int updatePassword(AiUser aiUser) { public int updatePassword(AiUser aiUser) {
aiUser.setPassword(SecurityUtils.encryptPassword(aiUser.getNewPassword())); aiUser.setPassword(SecurityUtils.encryptPassword(aiUser.getNewPassword()));
return aiUserMapper.updateById(aiUser); return aiUserMapper.updateById(aiUser);
} }
@Override @Override
@Transactional @Transactional
@ -410,14 +406,14 @@ public class AiUserServiceImpl implements IAiUserService {
// if (deductAmount.compareTo(BigDecimal.ZERO) < 0) { // if (deductAmount.compareTo(BigDecimal.ZERO) < 0) {
// deductAmount = new BigDecimal(0); // deductAmount = new BigDecimal(0);
// } // }
addUserBalance(Long.valueOf(userId), NumberUtil.mul(aiSampleAmountRecord.getSampleAmount(), -1), BalanceChangerConstants.EXPERIENCE_GOLD_RECYCLE); addUserBalance(aiSampleAmountRecord.getOrderNo(), Long.valueOf(userId), NumberUtil.mul(aiSampleAmountRecord.getSampleAmount(), -1), BalanceChangerConstants.EXPERIENCE_GOLD_RECYCLE);
// 修改状态已回收 // 修改状态已回收
aiSampleAmountRecord.setStatus(1); aiSampleAmountRecord.setStatus(1);
aiSampleAmountRecordService.updateAiSampleAmountRecord(aiSampleAmountRecord); aiSampleAmountRecordService.updateAiSampleAmountRecord(aiSampleAmountRecord);
} }
@Override @Override
public void handleRebate(Long userId, BigDecimal amount) { public void handleRebate(String orderNo, Long userId, BigDecimal amount) {
AiUser aiUser = aiUserMapper.selectById(userId); AiUser aiUser = aiUserMapper.selectById(userId);
if (aiUser.getSuperiorId() == null) return; if (aiUser.getSuperiorId() == null) return;
// 查询上级用户 // 查询上级用户
@ -428,7 +424,7 @@ public class AiUserServiceImpl implements IAiUserService {
SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(AiConfigEnum.SYS_INVITE_COMMISSION.getValue()); SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(AiConfigEnum.SYS_INVITE_COMMISSION.getValue());
double decimal = NumberUtil.div(Integer.parseInt(sysConfig.getConfigValue()), 100, 2); double decimal = NumberUtil.div(Integer.parseInt(sysConfig.getConfigValue()), 100, 2);
BigDecimal rebateAmount = NumberUtil.mul(amount, decimal); BigDecimal rebateAmount = NumberUtil.mul(amount, decimal);
addUserBalance(superiorUser.getId(), rebateAmount, BalanceChangerConstants.REBATE); addUserBalance(orderNo, superiorUser.getId(), rebateAmount, BalanceChangerConstants.REBATE);
// 新增返佣记录 // 新增返佣记录
AiRebateRecord rebateRecord = new AiRebateRecord(); AiRebateRecord rebateRecord = new AiRebateRecord();
rebateRecord.setSuperiorId(superiorUser.getId()); rebateRecord.setSuperiorId(superiorUser.getId());