fix
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
type AgentService struct {
|
||||
config config.Config
|
||||
OrderModel model.OrderModel
|
||||
AgentModel model.AgentModel
|
||||
AgentAuditModel model.AgentAuditModel
|
||||
AgentClosureModel model.AgentClosureModel
|
||||
@@ -30,7 +31,7 @@ type AgentService struct {
|
||||
AgentWithdrawalModel model.AgentWithdrawalModel
|
||||
}
|
||||
|
||||
func NewAgentService(c config.Config, agentModel model.AgentModel, agentAuditModel model.AgentAuditModel,
|
||||
func NewAgentService(c config.Config, orderModel model.OrderModel, agentModel model.AgentModel, agentAuditModel model.AgentAuditModel,
|
||||
agentClosureModel model.AgentClosureModel, agentCommissionModel model.AgentCommissionModel,
|
||||
agentCommissionDeductionModel model.AgentCommissionDeductionModel, agentWalletModel model.AgentWalletModel, agentLinkModel model.AgentLinkModel, agentOrderModel model.AgentOrderModel, agentRewardsModel model.AgentRewardsModel,
|
||||
agentMembershipConfigModel model.AgentMembershipConfigModel,
|
||||
@@ -41,6 +42,7 @@ func NewAgentService(c config.Config, agentModel model.AgentModel, agentAuditMod
|
||||
|
||||
return &AgentService{
|
||||
config: c,
|
||||
OrderModel: orderModel,
|
||||
AgentModel: agentModel,
|
||||
AgentAuditModel: agentAuditModel,
|
||||
AgentClosureModel: agentClosureModel,
|
||||
@@ -271,6 +273,10 @@ func (l *AgentService) CommissionCost(ctx context.Context, descendantId int64, A
|
||||
// 拥有则查看该上级设定的成本
|
||||
agentMembershipUserConfigModel, findAgentMembershipUserConfigModelErr := l.AgentMembershipUserConfigModel.FindOneByAgentIdProductId(ctx, AncestorId, productID)
|
||||
if findAgentMembershipUserConfigModelErr != nil {
|
||||
// 如果上级没有配置该产品的定价规则,则跳过成本计算
|
||||
if errors.Is(findAgentMembershipUserConfigModelErr, model.ErrNotFound) {
|
||||
return 0, nil
|
||||
}
|
||||
return 0, findAgentMembershipUserConfigModelErr
|
||||
}
|
||||
|
||||
@@ -301,6 +307,10 @@ func (l *AgentService) CommissionPricing(ctx context.Context, descendantId int64
|
||||
// 拥有则查看该上级设定的成本
|
||||
agentMembershipUserConfigModel, findAgentMembershipUserConfigModelErr := l.AgentMembershipUserConfigModel.FindOneByAgentIdProductId(ctx, AncestorId, productID)
|
||||
if findAgentMembershipUserConfigModelErr != nil {
|
||||
// 如果上级没有配置该产品的定价规则,则跳过成本计算
|
||||
if errors.Is(findAgentMembershipUserConfigModelErr, model.ErrNotFound) {
|
||||
return 0, nil
|
||||
}
|
||||
return 0, findAgentMembershipUserConfigModelErr
|
||||
}
|
||||
|
||||
@@ -522,3 +532,57 @@ func (l *AgentService) GiveWithdrawReward(ctx context.Context, agentID int64, wi
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CheckAgentProcessStatus 检查代理处理事务是否已成功
|
||||
func (l *AgentService) CheckAgentProcessStatus(ctx context.Context, orderID int64) (bool, error) {
|
||||
// 检查是否存在代理订单记录
|
||||
_, err := l.AgentOrderModel.FindOneByOrderId(ctx, orderID)
|
||||
if err != nil {
|
||||
if errors.Is(err, model.ErrNotFound) {
|
||||
// 没有代理订单记录,说明不是代理推广订单
|
||||
return true, nil
|
||||
}
|
||||
return false, err
|
||||
}
|
||||
|
||||
// 检查是否存在代理佣金记录
|
||||
// 使用SelectBuilder查询该订单的佣金记录
|
||||
selectBuilder := l.AgentCommissionModel.SelectBuilder()
|
||||
selectBuilder = selectBuilder.Where("order_id = ?", orderID)
|
||||
selectBuilder = selectBuilder.Where("del_state = ?", 0) // 未删除
|
||||
|
||||
commissions, err := l.AgentCommissionModel.FindAll(ctx, selectBuilder, "")
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// 如果存在佣金记录,说明代理处理已成功
|
||||
return len(commissions) > 0, nil
|
||||
}
|
||||
|
||||
// RetryAgentProcess 重新执行代理处理事务
|
||||
func (l *AgentService) RetryAgentProcess(ctx context.Context, orderID int64) error {
|
||||
// 首先检查订单是否存在
|
||||
order, err := l.OrderModel.FindOne(ctx, orderID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 检查订单状态是否为已支付
|
||||
if order.Status != "paid" {
|
||||
return errors.New("订单状态不是已支付,无法执行代理处理")
|
||||
}
|
||||
|
||||
// 检查代理处理是否已经成功
|
||||
alreadyProcessed, err := l.CheckAgentProcessStatus(ctx, orderID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if alreadyProcessed {
|
||||
return errors.New("代理处理已经成功,无需重新执行")
|
||||
}
|
||||
|
||||
// 执行代理处理
|
||||
return l.AgentProcess(ctx, order)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user