diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/AiUserApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/AiUserApiController.java index 3d6cc81..7bdcea8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/AiUserApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/AiUserApiController.java @@ -2,12 +2,9 @@ package com.ruoyi.api; import com.ruoyi.ai.domain.AiSampleAmount; 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.service.EmailVerifyService; import com.ruoyi.ai.service.IAiSampleAmountRecordService; -import com.ruoyi.ai.service.IAiStatisticsService; import com.ruoyi.ai.service.IAiUserService; import com.ruoyi.common.annotation.Anonymous; 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.job.TaskException; import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.IpCountryQueryByApi; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.service.ISysJobService; @@ -40,7 +35,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.mail.MessagingException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.Map; +import java.util.UUID; /** @@ -104,8 +102,11 @@ public class AiUserApiController extends BaseController { // 查询启用状态体验金活动 AiSampleAmount aiSampleAmount = aiSampleAmountMapper.getSampleAmount(); 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.setUserId(aiUser.getId()); @@ -218,6 +219,7 @@ public class AiUserApiController extends BaseController { /** * 查询返佣比例配置 + * * @return */ @GetMapping("/getRebateConfig") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ai/AiUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ai/AiUserController.java index d0785f0..3dd3c4f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ai/AiUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ai/AiUserController.java @@ -1,33 +1,27 @@ package com.ruoyi.web.controller.ai; import cn.hutool.core.util.NumberUtil; -import com.ruoyi.ai.service.EmailVerifyService; import com.ruoyi.ai.service.IAiUserService; -import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.BalanceChangerConstants; -import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; 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.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 io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.mail.MessagingException; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.UUID; /** * ai-用户信息Controller @@ -77,7 +71,6 @@ public class AiUserController extends BaseController { } - /** * 新增ai-用户信息 */ @@ -123,9 +116,12 @@ public class AiUserController extends BaseController { aiUser.setUpdateBy(getUsername()); // 获取原余额 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()); - aiUserService.addUserBalance(aiUser.getId(), amount, BalanceChangerConstants.SYSTEM_OPERATION); + aiUserService.addUserBalance(orderNo, aiUser.getId(), amount, BalanceChangerConstants.SYSTEM_OPERATION); return toAjax(1); } @@ -151,8 +147,6 @@ public class AiUserController extends BaseController { } - - // @GetMapping("/addUserBalance") // public AjaxResult addUserBalance(BigDecimal amount) { // aiUserService.addUserBalance(SecurityUtils.getAiUserId(), amount, BalanceChangerConstants.RECHARGE); diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiBalanceChangeRecord.java b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiBalanceChangeRecord.java index 1eaa495..989672f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiBalanceChangeRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiBalanceChangeRecord.java @@ -1,16 +1,14 @@ package com.ruoyi.ai.domain; -import java.math.BigDecimal; - 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 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 lombok.Data; + +import java.math.BigDecimal; /** * 余额使用记录对象 ai_balance_change_record @@ -24,13 +22,23 @@ public class AiBalanceChangeRecord extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键ID */ + /** + * 主键ID + */ @TableId(type = IdType.AUTO) private Long id; - /** 删除标志(0代表存在 2代表删除) */ + /** + * 删除标志(0代表存在 2代表删除) + */ private String delFlag; + /** + * 关联订单号 + */ + @Excel(name = "关联订单号") + private String orderNo; + /** * 用户ID */ @@ -42,19 +50,27 @@ public class AiBalanceChangeRecord extends BaseEntity { @TableField(exist = false) 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 = "操作类型") private Integer type; - /** 变更金额 */ + /** + * 变更金额 + */ @Excel(name = "变更金额") private BigDecimal changeAmount; - /** 变更后金额 */ + /** + * 变更后金额 + */ @Excel(name = "变更后金额") private BigDecimal resultAmount; - /** 用户昵称 */ + /** + * 用户昵称 + */ @TableField(exist = false) @Excel(name = "用户昵称") private String nickname; diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiRebateRecord.java b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiRebateRecord.java index 4b2f905..d729041 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiRebateRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiRebateRecord.java @@ -1,16 +1,15 @@ 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 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 * @@ -23,22 +22,38 @@ public class AiRebateRecord extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键ID */ + /** + * 主键ID + */ @TableId(type = IdType.AUTO) private Long id; - /** 删除标志(0代表存在 2代表删除) */ + /** + * 关联订单号 + */ + @Excel(name = "关联订单号") + private String orderNo; + + /** + * 删除标志(0代表存在 2代表删除) + */ private String delFlag; - /** 上级ID */ + /** + * 上级ID + */ @Excel(name = "上级ID") private Long superiorId; - /** 下级ID */ + /** + * 下级ID + */ @Excel(name = "下级ID") private Long subordinateId; - /** 返佣金额 */ + /** + * 返佣金额 + */ @Excel(name = "返佣金额") private BigDecimal amount; diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiSampleAmountRecord.java b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiSampleAmountRecord.java index 7fb0f99..64a8541 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiSampleAmountRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/domain/AiSampleAmountRecord.java @@ -1,18 +1,17 @@ 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.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 * @@ -25,22 +24,38 @@ public class AiSampleAmountRecord extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键ID */ + /** + * 主键ID + */ @TableId(type = IdType.AUTO) private Long id; - /** 删除标志(0代表存在 2代表删除) */ + /** + * 关联订单号 + */ + @Excel(name = "关联订单号") + private String orderNo; + + /** + * 删除标志(0代表存在 2代表删除) + */ private String delFlag; - /** 用户ID */ + /** + * 用户ID + */ @Excel(name = "用户ID") private Long userId; - /** 体验金额 */ + /** + * 体验金额 + */ @Excel(name = "体验金额") private BigDecimal sampleAmount; - /** 回收时间 */ + /** + * 回收时间 + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "回收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date recycleTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/service/IAiUserService.java b/ruoyi-system/src/main/java/com/ruoyi/ai/service/IAiUserService.java index 7ff4540..12ebaed 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/service/IAiUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/service/IAiUserService.java @@ -87,9 +87,9 @@ public interface IAiUserService { 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); @@ -101,7 +101,7 @@ public interface IAiUserService { public void deductSampleAmount(String userId); - void handleRebate(Long userId, BigDecimal rechargeAmount); + void handleRebate(String orderNo, Long userId, BigDecimal rechargeAmount); String getRebateConfig(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiOrderServiceImpl.java index 48b23a3..9074639 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiOrderServiceImpl.java @@ -1,25 +1,20 @@ 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 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.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ai.domain.AiManager; +import com.ruoyi.ai.domain.AiOrder; import com.ruoyi.ai.domain.AiStatistics; +import com.ruoyi.ai.mapper.AiOrderMapper; import com.ruoyi.ai.service.IAiManagerService; +import com.ruoyi.ai.service.IAiOrderService; import com.ruoyi.ai.service.IAiStatisticsService; import com.ruoyi.ai.service.IAiUserService; import com.ruoyi.common.constant.BalanceChangerConstants; 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.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; @@ -27,14 +22,17 @@ import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; 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 java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + /** * 订单管理Service业务层处理 - * + * * @author shi * @date 2025-11-13 */ @@ -56,7 +54,7 @@ public class AiOrderServiceImpl implements IAiOrderService { /** * 查询订单管理 - * + * * @param id 订单管理主键 * @return 订单管理 */ @@ -67,7 +65,7 @@ public class AiOrderServiceImpl implements IAiOrderService { /** * 查询订单管理列表 - * + * * @param aiOrder 订单管理 * @return 订单管理 */ @@ -91,7 +89,7 @@ public class AiOrderServiceImpl implements IAiOrderService { /** * 新增订单管理 - * + * * @param aiOrder 订单管理 * @return 结果 */ @@ -105,7 +103,7 @@ public class AiOrderServiceImpl implements IAiOrderService { /** * 修改订单管理 - * + * * @param aiOrder 订单管理 * @return 结果 */ @@ -118,30 +116,29 @@ public class AiOrderServiceImpl implements IAiOrderService { /** * 批量删除订单管理 - * + * * @param ids 需要删除的订单管理主键 * @return 结果 */ @Override - public int deleteAiOrderByIds(Long[] ids) - { + public int deleteAiOrderByIds(Long[] ids) { return aiOrderMapper.deleteAiOrderByIds(ids); } /** * 删除订单管理信息 - * + * * @param id 订单管理主键 * @return 结果 */ @Override - public int deleteAiOrderById(Long id) - { + public int deleteAiOrderById(Long id) { return aiOrderMapper.deleteAiOrderById(id); } /** * 生成订单 + * * @param aiType 对应的AI类型 * @return */ @@ -170,7 +167,7 @@ public class AiOrderServiceImpl implements IAiOrderService { aiOrder.setSource(aiUser.getSource()); 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; } @@ -181,7 +178,7 @@ public class AiOrderServiceImpl implements IAiOrderService { String remark = MessageUtils.message("order.number.generation.failed", aiOrder.getOrderNum()); aiOrder.setRemark(remark); aiOrderMapper.updateById(aiOrder); - aiUserService.addUserBalance(SecurityUtils.getAiUserId(), aiOrder.getAmount(), BalanceChangerConstants.REFUND, remark); + aiUserService.addUserBalance(aiOrder.getOrderNum(), SecurityUtils.getAiUserId(), aiOrder.getAmount(), BalanceChangerConstants.REFUND, remark); } @Override @@ -191,7 +188,7 @@ public class AiOrderServiceImpl implements IAiOrderService { aiOrderMapper.updateById(aiOrder); AiStatistics aiStatistics = new AiStatistics(); aiStatistics.setSource(aiOrder.getSource()); - aiStatistics.setGenerateCount(1l); + aiStatistics.setGenerateCount(1L); // 新增生成数量 aiStatisticsService.saveOrUpdateData(aiStatistics); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiRechargeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiRechargeServiceImpl.java index 19dd73c..725c8b5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiRechargeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiRechargeServiceImpl.java @@ -1,29 +1,24 @@ 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.util.Date; 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业务层处理 * @@ -107,12 +102,10 @@ public class AiRechargeServiceImpl implements IAiRechargeService { 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.setSource(aiRecharge.getSource()); @@ -120,14 +113,14 @@ public class AiRechargeServiceImpl implements IAiRechargeService { statisticsService.saveOrUpdateData(aiStatistics); - // 处理赠送金额 + // 处理赠送金额 if (isFristRecharge && aiRecharge.getGearId() != null) { // 查询活动是否过期 boolean isAvailable = aiRechargeGiftService.isActivityAvailable(aiRechargeGiftGear.getRechargeId()); if (isAvailable) { 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.setOrderNum(orderNo); diff --git a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiUserServiceImpl.java index e101b88..e394ea3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/ai/service/impl/AiUserServiceImpl.java @@ -9,20 +9,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.ai.domain.*; import com.ruoyi.ai.domain.enums.AiConfigEnum; import com.ruoyi.ai.mapper.AiRechargeMapper; -import com.ruoyi.ai.mapper.AiSampleAmountMapper; -import com.ruoyi.ai.mapper.AiSampleAmountRecordMapper; +import com.ruoyi.ai.mapper.AiUserMapper; import com.ruoyi.ai.service.*; import com.ruoyi.common.constant.BalanceChangerConstants; import com.ruoyi.common.constant.HttpStatus; 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.LoginAiUserBody; import com.ruoyi.common.core.domain.model.RegisterAiUserBody; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.ip.IpUtils; -import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.mapper.SysConfigMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -30,7 +27,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -70,7 +66,6 @@ public class AiUserServiceImpl implements IAiUserService { private AiRechargeMapper aiRechargeMapper; - /** * 查询ai-用户信息 * @@ -208,7 +203,7 @@ public class AiUserServiceImpl implements IAiUserService { // 新增访客统计 AiStatistics aiStatistics = new AiStatistics(); aiStatistics.setSource(registerAiUserBody.getSource()); - aiStatistics.setAddUserCount(1l); + aiStatistics.setAddUserCount(1L); aiStatisticsService.saveOrUpdateData(aiStatistics); return aiUser; } @@ -352,13 +347,13 @@ public class AiUserServiceImpl implements IAiUserService { } @Override - public void addUserBalance(Long userId, BigDecimal amount, int recharge) { - addUserBalance(userId, amount, recharge, null); + public void addUserBalance(String orderNo, Long userId, BigDecimal amount, int recharge) { + addUserBalance(orderNo, userId, amount, recharge, null); } @Override @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); AiBalanceChangeRecord balanceChangeRecord = new AiBalanceChangeRecord(); @@ -367,6 +362,7 @@ public class AiUserServiceImpl implements IAiUserService { balanceChangeRecord.setChangeAmount(amount); balanceChangeRecord.setResultAmount(NumberUtil.add(amount, aiUser.getBalance())); balanceChangeRecord.setRemark(remark); + balanceChangeRecord.setOrderNo(orderNo); balanceChangeRecordService.insertAiBalanceChangeRecord(balanceChangeRecord); // 修改用户余额 aiUser.setBalance(balanceChangeRecord.getResultAmount()); @@ -396,7 +392,7 @@ public class AiUserServiceImpl implements IAiUserService { public int updatePassword(AiUser aiUser) { aiUser.setPassword(SecurityUtils.encryptPassword(aiUser.getNewPassword())); return aiUserMapper.updateById(aiUser); - } + } @Override @Transactional @@ -410,14 +406,14 @@ public class AiUserServiceImpl implements IAiUserService { // if (deductAmount.compareTo(BigDecimal.ZERO) < 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); aiSampleAmountRecordService.updateAiSampleAmountRecord(aiSampleAmountRecord); } @Override - public void handleRebate(Long userId, BigDecimal amount) { + public void handleRebate(String orderNo, Long userId, BigDecimal amount) { AiUser aiUser = aiUserMapper.selectById(userId); if (aiUser.getSuperiorId() == null) return; // 查询上级用户 @@ -428,7 +424,7 @@ public class AiUserServiceImpl implements IAiUserService { SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(AiConfigEnum.SYS_INVITE_COMMISSION.getValue()); double decimal = NumberUtil.div(Integer.parseInt(sysConfig.getConfigValue()), 100, 2); BigDecimal rebateAmount = NumberUtil.mul(amount, decimal); - addUserBalance(superiorUser.getId(), rebateAmount, BalanceChangerConstants.REBATE); + addUserBalance(orderNo, superiorUser.getId(), rebateAmount, BalanceChangerConstants.REBATE); // 新增返佣记录 AiRebateRecord rebateRecord = new AiRebateRecord(); rebateRecord.setSuperiorId(superiorUser.getId());