@@ -3,7 +3,7 @@ module code.fnuoos.com/EggPlanet/egg_system_rules.git | |||||
go 1.19 | go 1.19 | ||||
// go.mod文件中 | // go.mod文件中 | ||||
// replace code.fnuoos.com/EggPlanet/egg_models.git => E:/company/Egg/egg_models | |||||
replace code.fnuoos.com/EggPlanet/egg_models.git => E:/company/Egg/egg_models | |||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 | code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 | ||||
@@ -21,6 +21,7 @@ require ( | |||||
) | ) | ||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be // indirect | |||||
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect | github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect | ||||
github.com/alibabacloud-go/debug v1.0.1 // indirect | github.com/alibabacloud-go/debug v1.0.1 // indirect | ||||
github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect | github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect | ||||
@@ -2,6 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT | |||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241128102555-fc839292d728 h1:BHW0yPeka1RRS4pIcZKwiatVg9U4mE8iiTl1+YCk1vQ= | code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241128102555-fc839292d728 h1:BHW0yPeka1RRS4pIcZKwiatVg9U4mE8iiTl1+YCk1vQ= | ||||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241128102555-fc839292d728/go.mod h1:+bDK4gfBq4LEkhh6K/A46+0urH/sgxDxnjIjlxb9HI8= | code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241128102555-fc839292d728/go.mod h1:+bDK4gfBq4LEkhh6K/A46+0urH/sgxDxnjIjlxb9HI8= | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be h1:zuleX5JnIGQpt6wDAmCFs++lLgOmE6kWo3xkJnjrSck= | |||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be/go.mod h1:Yuc7XnUQ15eaC0ZobcJG7XwkVTttVqp52OTanXhI1Qk= | |||||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 h1:dqvWJqlJi0WXCwTxbWPLvSOsKPjP+iEDBVgLcAl9nOE= | code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 h1:dqvWJqlJi0WXCwTxbWPLvSOsKPjP+iEDBVgLcAl9nOE= | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5/go.mod h1:TTcCnFn/LhBGapnutpezlW+GXkLRNPMWkziOoCsXQqY= | code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5/go.mod h1:TTcCnFn/LhBGapnutpezlW+GXkLRNPMWkziOoCsXQqY= | ||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= | filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= | ||||
@@ -0,0 +1,92 @@ | |||||
package egg_energy | |||||
import ( | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | |||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | |||||
"fmt" | |||||
"github.com/shopspring/decimal" | |||||
"math/rand" | |||||
"time" | |||||
"xorm.io/xorm" | |||||
) | |||||
// ActivityCoinAutoExchangeEggPersonEnergy 个人蛋蛋积分【开始】兑换成个人蛋蛋能量 | |||||
func ActivityCoinAutoExchangeEggPersonEnergy(engine *xorm.Engine, req md.EggEnergyStructForAutoExchangeGreenEnergy) (err error) { | |||||
//1、判断当前是否可以执行 | |||||
now := time.Now() | |||||
endTimeValue, _ := egg_system_rules.StringToTime(req.EndExchangeTime) | |||||
if endTimeValue.After(now) { | |||||
time.Sleep(time.Microsecond * time.Duration(rand.Intn(5))) //TODO::随机休眠5s不等 | |||||
} | |||||
//2、查询sign 记录 | |||||
eggSignInDb := implement.NewEggSignInDb(engine) | |||||
sign, err := eggSignInDb.EggSignInGet(req.SignId) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if sign.IsCompleted == 1 { | |||||
//TODO::已完成的直接pass | |||||
return | |||||
} | |||||
//3、增加用户对应蛋蛋能量数量 | |||||
startTime, _ := egg_system_rules.StringToTime(sign.StartTime) | |||||
endTime, _ := egg_system_rules.StringToTime(sign.EndTime) | |||||
seconds := endTime.Sub(startTime).Seconds() | |||||
secondsValue := decimal.NewFromFloat(seconds) | |||||
eggEnergyNumsForPersonValue, _ := decimal.NewFromString(sign.EstimatePerSecondPersonEggEnergyValue) | |||||
eggEnergyNumsForTeamValue, _ := decimal.NewFromString(sign.EstimatePerSecondTeamEggEnergyValue) | |||||
amountForPerson, _ := eggEnergyNumsForPersonValue.Mul(secondsValue).Float64() | |||||
amountForTeam, _ := eggEnergyNumsForTeamValue.Mul(secondsValue).Float64() | |||||
session := engine.NewSession() | |||||
defer func() { | |||||
session.Close() | |||||
if err := recover(); err != nil { | |||||
_ = zhios_order_relate_logx.Error(err) | |||||
} | |||||
}() | |||||
session.Begin() | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "add", | |||||
Title: enum.PersonEggGetByEnergyEggPointCoin.String(), | |||||
TransferType: int(enum.PersonEggGetByEnergyEggPointCoin), | |||||
CoinId: req.PersonEggEnergyCoinId, | |||||
Uid: req.Uid, | |||||
Amount: amountForPerson, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggEnergy:::::err111:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "add", | |||||
Title: enum.PersonEggGetByEnergyEggPointCoin.String(), | |||||
TransferType: int(enum.PersonEggGetByEnergyEggPointCoin), | |||||
CoinId: req.PersonEggEnergyCoinId, | |||||
Uid: req.Uid, | |||||
Amount: amountForTeam, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggEnergy:::::err222:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
//3、修改sign记录 | |||||
sign.IsCompleted = 1 | |||||
_, err = eggSignInDb.EggSignInUpdateBySession(session, sign.Id, sign, "is_completed") | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggEnergy:::::err333:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
return session.Commit() | |||||
} |
@@ -1,76 +0,0 @@ | |||||
package egg_energy | |||||
import ( | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | |||||
enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/enum" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/svc" | |||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | |||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | |||||
"fmt" | |||||
"xorm.io/xorm" | |||||
) | |||||
// ActivityCoinAutoExchangeEggPersonEnergy 个人蛋蛋积分【开始】兑换成个人蛋蛋能量 | |||||
func ActivityCoinAutoExchangeEggPersonEnergy(engine *xorm.Engine, req md.EggEnergyStructForAutoExchangeGreenEnergy, ch *rabbit.Channel) (err error) { | |||||
session := engine.NewSession() | |||||
defer func() { | |||||
session.Close() | |||||
if err := recover(); err != nil { | |||||
_ = zhios_order_relate_logx.Error(err) | |||||
} | |||||
}() | |||||
session.Begin() | |||||
eggEnergyCoreData, cb, err := svc.GetEggEnergyCoreData(engine) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if cb != nil { | |||||
defer cb() // 释放锁 | |||||
} | |||||
//1、计算涨价公式 | |||||
err1, calcPriceIncreaseFormulaResp := CalcPriceIncreaseFormula(req.AutoExchangeNumsAmount, eggEnergyCoreData) | |||||
if err1 != nil { | |||||
_ = session.Rollback() | |||||
return err1 | |||||
} | |||||
//2、更改动态数据 | |||||
err = DealAvailableEggEnergyCoin(session, int(enum2.PersonalActivePointRedemption), eggEnergyCoreData, md.DealAvailableEggEnergyCoinReq{ | |||||
Amount: calcPriceIncreaseFormulaResp.GetEggEnergyNums, | |||||
AmountFee: "", | |||||
BeforePrice: calcPriceIncreaseFormulaResp.BeforePrice, | |||||
AfterPrice: calcPriceIncreaseFormulaResp.AfterPrice, | |||||
BeforePlanetTotalValue: calcPriceIncreaseFormulaResp.BeforePlanetTotalValue, | |||||
AfterPlanetTotalValue: calcPriceIncreaseFormulaResp.AfterPlanetTotalValue, | |||||
BeforeEnergyTotalNums: calcPriceIncreaseFormulaResp.BeforeEnergyTotalNums, | |||||
AfterEnergyTotalNums: calcPriceIncreaseFormulaResp.AfterEnergyTotalNums, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggPersonEnergy:::::err111:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
//3、增加用户对应蛋蛋能量数量 | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "add", | |||||
Title: enum.PersonEggGetByEnergyEggPointCoin.String(), | |||||
TransferType: int(enum.PersonEggGetByEnergyEggPointCoin), | |||||
CoinId: req.EnergyCoinId, | |||||
Uid: req.Uid, | |||||
Amount: egg_system_rules.StrToFloat64(calcPriceIncreaseFormulaResp.GetEggEnergyNums), | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggPersonEnergy:::::err222:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
return session.Commit() | |||||
} |
@@ -1,76 +0,0 @@ | |||||
package egg_energy | |||||
import ( | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | |||||
enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/enum" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/svc" | |||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | |||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | |||||
"fmt" | |||||
"xorm.io/xorm" | |||||
) | |||||
// ActivityCoinAutoExchangeEggTeamEnergy 团队蛋蛋积分【开始】兑换成团队蛋蛋能量 | |||||
func ActivityCoinAutoExchangeEggTeamEnergy(engine *xorm.Engine, req md.EggEnergyStructForAutoExchangeGreenEnergy, ch *rabbit.Channel) (err error) { | |||||
session := engine.NewSession() | |||||
defer func() { | |||||
session.Close() | |||||
if err := recover(); err != nil { | |||||
_ = zhios_order_relate_logx.Error(err) | |||||
} | |||||
}() | |||||
session.Begin() | |||||
eggEnergyCoreData, cb, err := svc.GetEggEnergyCoreData(engine) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if cb != nil { | |||||
defer cb() // 释放锁 | |||||
} | |||||
//1、计算涨价公式 | |||||
err1, calcPriceIncreaseFormulaResp := CalcPriceIncreaseFormula(req.AutoExchangeNumsAmount, eggEnergyCoreData) | |||||
if err1 != nil { | |||||
_ = session.Rollback() | |||||
return err1 | |||||
} | |||||
//2、更改动态数据 | |||||
err = DealAvailableEggEnergyCoin(session, int(enum2.TeamActivePointRedemption), eggEnergyCoreData, md.DealAvailableEggEnergyCoinReq{ | |||||
Amount: calcPriceIncreaseFormulaResp.GetEggEnergyNums, | |||||
AmountFee: "", | |||||
BeforePrice: calcPriceIncreaseFormulaResp.BeforePrice, | |||||
AfterPrice: calcPriceIncreaseFormulaResp.AfterPrice, | |||||
BeforePlanetTotalValue: calcPriceIncreaseFormulaResp.BeforePlanetTotalValue, | |||||
AfterPlanetTotalValue: calcPriceIncreaseFormulaResp.AfterPlanetTotalValue, | |||||
BeforeEnergyTotalNums: calcPriceIncreaseFormulaResp.BeforeEnergyTotalNums, | |||||
AfterEnergyTotalNums: calcPriceIncreaseFormulaResp.AfterEnergyTotalNums, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggTeamEnergy:::::err111:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
//3、增加用户对应蛋蛋能量数量 | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "add", | |||||
Title: enum.TeamEggGetByEnergyEggPointCoin.String(), | |||||
TransferType: int(enum.TeamEggGetByEnergyEggPointCoin), | |||||
CoinId: req.EnergyCoinId, | |||||
Uid: req.Uid, | |||||
Amount: egg_system_rules.StrToFloat64(calcPriceIncreaseFormulaResp.GetEggEnergyNums), | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinAutoExchangeEggTeamEnergy:::::err222:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
return session.Commit() | |||||
} |
@@ -1,6 +1,7 @@ | |||||
package egg_energy | package egg_energy | ||||
import ( | import ( | ||||
db "code.fnuoos.com/EggPlanet/egg_models.git/src" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | "code.fnuoos.com/EggPlanet/egg_models.git/src/model" | ||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | ||||
@@ -81,49 +82,74 @@ func ActivityCoinReadyExchangeEggEnergy(engine *xorm.Engine, uid int64, ch *rabb | |||||
return errors.New("当前活跃值无法发起挖掘~") | return errors.New("当前活跃值无法发起挖掘~") | ||||
} | } | ||||
//session := engine.NewSession() | |||||
//defer func() { | |||||
// session.Close() | |||||
// if err := recover(); err != nil { | |||||
// _ = zhios_order_relate_logx.Error(err) | |||||
// } | |||||
//}() | |||||
//session.Begin() | |||||
now := time.Now() | |||||
//4、计算能兑换的个人活跃积分数量 | //4、计算能兑换的个人活跃积分数量 | ||||
var autoExchangeNumsByPersonAmountValue, autoExchangeNumsByTeamAmountValue string | |||||
var autoExchangeNumsByPersonAmount, autoExchangeNumsByTeamAmount decimal.Decimal | |||||
if egg_system_rules.StrToFloat64(personUserVirtualAmount.Amount) >= autoExchangeNumsByPerson { | if egg_system_rules.StrToFloat64(personUserVirtualAmount.Amount) >= autoExchangeNumsByPerson { | ||||
autoExchangeNumsByPersonValue, _ := decimal.NewFromString(personUserVirtualAmount.Amount) | autoExchangeNumsByPersonValue, _ := decimal.NewFromString(personUserVirtualAmount.Amount) | ||||
autoExchangeRateByPersonValue, _ := decimal.NewFromString(exchangeRulesStruct.AutoExchangeRateByPerson) | autoExchangeRateByPersonValue, _ := decimal.NewFromString(exchangeRulesStruct.AutoExchangeRateByPerson) | ||||
autoExchangeNumsByPersonAmount := autoExchangeNumsByPersonValue.Mul(autoExchangeRateByPersonValue).Div(personActivePointsCoinExchangeRatioValue).String() //个人活跃积分数量*兑换百分比/兑换比例(与金额) | |||||
//TODO::推入rabbitmq 异步处理 | |||||
ch.Publish(md2.EggEnergyExchange, md2.EggEnergyStructForStartExchangeGreenEnergy{ | |||||
Uid: uid, | |||||
Amount: autoExchangeNumsByPersonValue.Mul(autoExchangeRateByPersonValue).String(), | |||||
PointCoinId: coin1.Id, | |||||
EnergyCoinId: eggEnergyBasicSetting.PersonEggEnergyCoinId, | |||||
AutoExchangeNumsAmount: autoExchangeNumsByPersonAmount, | |||||
StartExchangeTime: now.Format("2006-01-02 15:04:05"), | |||||
EndExchangeTime: now.Add(time.Hour * time.Duration(egg_system_rules.StrToInt64(videoRewardSystem.EachRoundHour))).Format("2006-01-02 15:04:05"), | |||||
}, md2.EggEnergyRoutKeyForStartExchangeGreenEnergyToPerson) | |||||
autoExchangeNumsByPersonAmountValue = autoExchangeNumsByPersonValue.Mul(autoExchangeRateByPersonValue).Div(decimal.NewFromInt(100)).String() | |||||
autoExchangeNumsByPersonAmount = autoExchangeNumsByPersonValue.Mul(autoExchangeRateByPersonValue).Div(decimal.NewFromInt(100)).Div(personActivePointsCoinExchangeRatioValue) //个人活跃积分数量*兑换百分比/兑换比例(与金额) | |||||
} | } | ||||
//5、计算能兑换的团队活跃积分数量 | //5、计算能兑换的团队活跃积分数量 | ||||
if egg_system_rules.StrToFloat64(teamUserVirtualAmount.Amount) >= autoExchangeNumsByTeam { | if egg_system_rules.StrToFloat64(teamUserVirtualAmount.Amount) >= autoExchangeNumsByTeam { | ||||
autoExchangeNumsByTeamValue, _ := decimal.NewFromString(teamUserVirtualAmount.Amount) | autoExchangeNumsByTeamValue, _ := decimal.NewFromString(teamUserVirtualAmount.Amount) | ||||
autoExchangeRateByTeamValue, _ := decimal.NewFromString(exchangeRulesStruct.AutoExchangeRateByTeam) | autoExchangeRateByTeamValue, _ := decimal.NewFromString(exchangeRulesStruct.AutoExchangeRateByTeam) | ||||
autoExchangeNumsByTeamAmount := autoExchangeNumsByTeamValue.Mul(autoExchangeRateByTeamValue).Div(teamActivePointsCoinExchangeRatioValue).String() //团队活跃积分数量*兑换百分比/兑换比例(与金额) | |||||
//TODO::推入rabbitmq 异步处理 | |||||
ch.Publish(md2.EggEnergyExchange, md2.EggEnergyStructForStartExchangeGreenEnergy{ | |||||
Uid: uid, | |||||
Amount: autoExchangeNumsByTeamValue.Mul(autoExchangeRateByTeamValue).String(), | |||||
PointCoinId: coin2.Id, | |||||
EnergyCoinId: eggEnergyBasicSetting.TeamEggEnergyCoinId, | |||||
AutoExchangeNumsAmount: autoExchangeNumsByTeamAmount, | |||||
StartExchangeTime: now.Format("2006-01-02 15:04:05"), | |||||
EndExchangeTime: now.Add(time.Hour * time.Duration(egg_system_rules.StrToInt64(videoRewardSystem.EachRoundHour))).Format("2006-01-02 15:04:05"), | |||||
}, md2.EggEnergyRoutKeyForStartExchangeGreenEnergyToTeam) | |||||
autoExchangeNumsByTeamAmountValue = autoExchangeNumsByTeamValue.Mul(autoExchangeRateByTeamValue).Div(decimal.NewFromInt(100)).String() | |||||
autoExchangeNumsByTeamAmount = autoExchangeNumsByTeamValue.Mul(autoExchangeRateByTeamValue).Div(decimal.NewFromInt(100)).Div(teamActivePointsCoinExchangeRatioValue) //团队活跃积分数量*兑换百分比/兑换比例(与金额) | |||||
} | |||||
//6、插入签到记录 | |||||
now := time.Now() | |||||
eggSignInDb := implement.NewEggSignInDb(db.Db) | |||||
var sign = &model.EggSignIn{ | |||||
Uid: uid, | |||||
StartTime: now.Format("2006-01-02 15:04:05"), | |||||
EndTime: now.Add(time.Hour * time.Duration(egg_system_rules.StrToInt64(videoRewardSystem.EachRoundHour))).Format("2006-01-02 15:04:05"), | |||||
TotalPersonEggPoints: autoExchangeNumsByPersonAmountValue, | |||||
TotalTeamEggPoints: autoExchangeNumsByTeamAmountValue, | |||||
EstimatePerSecondPersonEggEnergyValue: "", | |||||
EstimatePerSecondTeamEggEnergyValue: "", | |||||
TotalPersonEggPointsAmountValue: autoExchangeNumsByPersonAmount.String(), | |||||
TotalTeamEggPointsAmountValue: autoExchangeNumsByTeamAmount.String(), | |||||
IsCompleted: 0, | |||||
} | |||||
_, err = eggSignInDb.EggSignInInsert(sign) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
//7、新增 `egg_energy_user_activity` 记录 | |||||
var m model.EggEnergyUserActivity | |||||
has, err := engine.Where("uid =? and date =?", uid, now.Format("2006-01-02")).Get(&m) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if !has { | |||||
eggEnergyUserActivityDb := implement.NewEggEnergyUserActivityDb(db.Db) | |||||
insertAffected, err1 := eggEnergyUserActivityDb.EggEnergyUserActivityInsert(&model.EggEnergyUserActivity{ | |||||
Uid: uid, | |||||
Date: now.Format("2006-01-02"), | |||||
}) | |||||
if err1 != nil { | |||||
return err1 | |||||
} | |||||
if insertAffected <= 0 { | |||||
return errors.New("插入活跃记录失败") | |||||
} | |||||
} | } | ||||
//TODO::推入rabbitmq 异步处理 | |||||
ch.Publish(md2.EggEnergyExchange, md2.EggEnergyStructForStartExchangeGreenEnergy{ | |||||
Uid: uid, | |||||
SignId: sign.Id, | |||||
PersonEggEnergyCoinId: eggEnergyBasicSetting.PersonEggEnergyCoinId, | |||||
TeamEggEnergyCoinId: eggEnergyBasicSetting.TeamEggEnergyCoinId, | |||||
PersonPointCoinId: coin1.Id, | |||||
PersonEnergyCoinId: eggEnergyBasicSetting.PersonEggEnergyCoinId, | |||||
TeamPointCoinId: coin2.Id, | |||||
TeamEnergyCoinId: eggEnergyBasicSetting.TeamEggEnergyCoinId, | |||||
}, md2.EggEnergyRoutKeyForStartExchangeGreenEnergy) | |||||
return | return | ||||
} | } |
@@ -1,19 +1,23 @@ | |||||
package egg_energy | package egg_energy | ||||
import ( | import ( | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | "code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | ||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | ||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | ||||
enum2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/enum" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | ||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/svc" | |||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | ||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | ||||
"fmt" | "fmt" | ||||
"github.com/shopspring/decimal" | |||||
"xorm.io/xorm" | "xorm.io/xorm" | ||||
) | ) | ||||
// ActivityCoinStartExchangeEggPersonEnergy 个人蛋蛋积分【开始】兑换成个人蛋蛋能量 | |||||
func ActivityCoinStartExchangeEggPersonEnergy(engine *xorm.Engine, req md.EggEnergyStructForStartExchangeGreenEnergy, ch *rabbit.Channel) (err error) { | |||||
// ActivityCoinStartExchangeEggEnergy 蛋蛋积分【开始】兑换成蛋蛋能量 | |||||
func ActivityCoinStartExchangeEggEnergy(engine *xorm.Engine, req md.EggEnergyStructForStartExchangeGreenEnergy, ch *rabbit.Channel) (err error) { | |||||
session := engine.NewSession() | session := engine.NewSession() | ||||
defer func() { | defer func() { | ||||
session.Close() | session.Close() | ||||
@@ -23,29 +27,127 @@ func ActivityCoinStartExchangeEggPersonEnergy(engine *xorm.Engine, req md.EggEne | |||||
}() | }() | ||||
session.Begin() | session.Begin() | ||||
//1、扣除用户对应蛋蛋活跃积分数量 | |||||
//1、查询sign 记录 | |||||
eggSignInDb := implement.NewEggSignInDb(engine) | |||||
sign, err := eggSignInDb.EggSignInGet(req.SignId) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
//2、扣除用户对应蛋蛋活跃积分数量 | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | ||||
Kind: "sub", | Kind: "sub", | ||||
Title: enum.EggPointCoinToExchangeToPersonEggEnergy.String(), | Title: enum.EggPointCoinToExchangeToPersonEggEnergy.String(), | ||||
TransferType: int(enum.EggPointCoinToExchangeToPersonEggEnergy), | TransferType: int(enum.EggPointCoinToExchangeToPersonEggEnergy), | ||||
CoinId: req.PointCoinId, | |||||
CoinId: req.PersonPointCoinId, | |||||
Uid: req.Uid, | |||||
Amount: egg_system_rules.StrToFloat64(sign.TotalPersonEggPoints), | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::err111:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "sub", | |||||
Title: enum.EggPointCoinToExchangeToTeamEggEnergy.String(), | |||||
TransferType: int(enum.EggPointCoinToExchangeToTeamEggEnergy), | |||||
CoinId: req.TeamEnergyCoinId, | |||||
Uid: req.Uid, | Uid: req.Uid, | ||||
Amount: egg_system_rules.StrToFloat64(req.Amount), | |||||
Amount: egg_system_rules.StrToFloat64(sign.TotalTeamEggPoints), | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
fmt.Println("ActivityCoinStartExchangeEggPersonEnergy:::::err111:::", err) | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::er222:::", err) | |||||
_ = session.Rollback() | _ = session.Rollback() | ||||
return | return | ||||
} | } | ||||
//3、进行兑换购买 | |||||
eggEnergyCoreData, cb, err := svc.GetEggEnergyCoreData(engine) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if cb != nil { | |||||
defer cb() // 释放锁 | |||||
} | |||||
//3.1、计算涨价公式 | |||||
err1, calcPriceIncreaseFormulaRespForPerson := CalcPriceIncreaseFormula(sign.TotalPersonEggPointsAmountValue, eggEnergyCoreData) | |||||
if err1 != nil { | |||||
_ = session.Rollback() | |||||
return err1 | |||||
} | |||||
err1, calcPriceIncreaseFormulaRespForTeam := CalcPriceIncreaseFormula(sign.TotalPersonEggPointsAmountValue, eggEnergyCoreData) | |||||
if err1 != nil { | |||||
_ = session.Rollback() | |||||
return err1 | |||||
} | |||||
//3.2、更改动态数据 | |||||
err = DealAvailableEggEnergyCoin(session, int(enum2.PersonalActivePointRedemption), eggEnergyCoreData, md.DealAvailableEggEnergyCoinReq{ | |||||
Amount: calcPriceIncreaseFormulaRespForPerson.GetEggEnergyNums, | |||||
AmountFee: "", | |||||
BeforePrice: calcPriceIncreaseFormulaRespForPerson.BeforePrice, | |||||
AfterPrice: calcPriceIncreaseFormulaRespForPerson.AfterPrice, | |||||
BeforePlanetTotalValue: calcPriceIncreaseFormulaRespForPerson.BeforePlanetTotalValue, | |||||
AfterPlanetTotalValue: calcPriceIncreaseFormulaRespForPerson.AfterPlanetTotalValue, | |||||
BeforeEnergyTotalNums: calcPriceIncreaseFormulaRespForPerson.BeforeEnergyTotalNums, | |||||
AfterEnergyTotalNums: calcPriceIncreaseFormulaRespForPerson.AfterEnergyTotalNums, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::er333:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
err = DealAvailableEggEnergyCoin(session, int(enum2.TeamActivePointRedemption), eggEnergyCoreData, md.DealAvailableEggEnergyCoinReq{ | |||||
Amount: calcPriceIncreaseFormulaRespForTeam.GetEggEnergyNums, | |||||
AmountFee: "", | |||||
BeforePrice: calcPriceIncreaseFormulaRespForTeam.BeforePrice, | |||||
AfterPrice: calcPriceIncreaseFormulaRespForTeam.AfterPrice, | |||||
BeforePlanetTotalValue: calcPriceIncreaseFormulaRespForTeam.BeforePlanetTotalValue, | |||||
AfterPlanetTotalValue: calcPriceIncreaseFormulaRespForTeam.AfterPlanetTotalValue, | |||||
BeforeEnergyTotalNums: calcPriceIncreaseFormulaRespForTeam.BeforeEnergyTotalNums, | |||||
AfterEnergyTotalNums: calcPriceIncreaseFormulaRespForTeam.AfterEnergyTotalNums, | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::err444:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
//4、修改sign记录 | |||||
startTime, _ := egg_system_rules.StringToTime(sign.StartTime) | |||||
endTime, _ := egg_system_rules.StringToTime(sign.EndTime) | |||||
seconds := endTime.Sub(startTime).Seconds() | |||||
secondsValue := decimal.NewFromFloat(seconds) | |||||
eggEnergyNumsForPersonValue, _ := decimal.NewFromString(calcPriceIncreaseFormulaRespForPerson.GetEggEnergyNums) | |||||
eggEnergyNumsForTeamValue, _ := decimal.NewFromString(calcPriceIncreaseFormulaRespForTeam.GetEggEnergyNums) | |||||
sign.EstimatePerSecondPersonEggEnergyValue = eggEnergyNumsForPersonValue.Div(secondsValue).String() | |||||
sign.EstimatePerSecondTeamEggEnergyValue = eggEnergyNumsForTeamValue.Div(secondsValue).String() | |||||
_, err = eggSignInDb.EggSignInUpdateBySession(session, sign.Id, sign, "estimate_per_second_person_egg_energy_value", "estimate_per_second_team_egg_energy_value") | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::err555:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
err = session.Commit() | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggEnergy:::::err666:::", err) | |||||
_ = session.Rollback() | |||||
return err | |||||
} | |||||
//TODO::推入rabbitmq 异步处理 | //TODO::推入rabbitmq 异步处理 | ||||
ch.Publish(md.EggEnergyExchange, md.EggEnergyStructForAutoExchangeGreenEnergy{ | ch.Publish(md.EggEnergyExchange, md.EggEnergyStructForAutoExchangeGreenEnergy{ | ||||
Uid: req.Uid, | |||||
EnergyCoinId: req.EnergyCoinId, | |||||
AutoExchangeNumsAmount: req.AutoExchangeNumsAmount, | |||||
StartExchangeTime: req.StartExchangeTime, | |||||
EndExchangeTime: req.EndExchangeTime, | |||||
}, md.EggEnergyRoutKeyForAutoExchangeGreenEnergyToPerson) | |||||
return session.Commit() | |||||
Uid: req.Uid, | |||||
SignId: sign.Id, | |||||
PersonEggEnergyCoinId: req.PersonEnergyCoinId, | |||||
TeamEggEnergyCoinId: req.TeamEggEnergyCoinId, | |||||
StartExchangeTime: sign.StartTime, | |||||
EndExchangeTime: sign.EndTime, | |||||
}, md.EggEnergyRoutKeyForAutoExchangeGreenEnergy) | |||||
return | |||||
} | } |
@@ -1,51 +0,0 @@ | |||||
package egg_energy | |||||
import ( | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | |||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | |||||
"fmt" | |||||
"xorm.io/xorm" | |||||
) | |||||
// ActivityCoinStartExchangeEggTeamEnergy 团队蛋蛋积分【开始】兑换成团队蛋蛋能量 | |||||
func ActivityCoinStartExchangeEggTeamEnergy(engine *xorm.Engine, req md.EggEnergyStructForStartExchangeGreenEnergy, ch *rabbit.Channel) (err error) { | |||||
session := engine.NewSession() | |||||
defer func() { | |||||
session.Close() | |||||
if err := recover(); err != nil { | |||||
_ = zhios_order_relate_logx.Error(err) | |||||
} | |||||
}() | |||||
session.Begin() | |||||
//1、扣除用户对应蛋蛋活跃积分数量 | |||||
err = rule.DealUserVirtualCoin(session, md2.DealUserVirtualCoinReq{ | |||||
Kind: "sub", | |||||
Title: enum.EggPointCoinToExchangeToTeamEggEnergy.String(), | |||||
TransferType: int(enum.EggPointCoinToExchangeToTeamEggEnergy), | |||||
CoinId: req.PointCoinId, | |||||
Uid: req.Uid, | |||||
Amount: egg_system_rules.StrToFloat64(req.Amount), | |||||
}) | |||||
if err != nil { | |||||
fmt.Println("ActivityCoinStartExchangeEggTeamEnergy:::::err111:::", err) | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
//TODO::推入rabbitmq 异步处理 | |||||
ch.Publish(md.EggEnergyExchange, md.EggEnergyStructForAutoExchangeGreenEnergy{ | |||||
Uid: req.Uid, | |||||
EnergyCoinId: req.EnergyCoinId, | |||||
AutoExchangeNumsAmount: req.AutoExchangeNumsAmount, | |||||
StartExchangeTime: req.StartExchangeTime, | |||||
EndExchangeTime: req.EndExchangeTime, | |||||
}, md.EggEnergyRoutKeyForAutoExchangeGreenEnergyToTeam) | |||||
return session.Commit() | |||||
} |
@@ -9,11 +9,14 @@ import ( | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | ||||
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils" | ||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/cache" | "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/cache" | ||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/es" | |||||
zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/logx" | ||||
es2 "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | ||||
"encoding/json" | "encoding/json" | ||||
"errors" | "errors" | ||||
"fmt" | "fmt" | ||||
"github.com/olivere/elastic/v7" | |||||
"github.com/shopspring/decimal" | "github.com/shopspring/decimal" | ||||
"strings" | "strings" | ||||
"time" | "time" | ||||
@@ -21,7 +24,10 @@ import ( | |||||
) | ) | ||||
// SettlementGiveActivityCoin 结算观看激励广告得到蛋蛋积分 | // SettlementGiveActivityCoin 结算观看激励广告得到蛋蛋积分 | ||||
func SettlementGiveActivityCoin(engine *xorm.Engine, uid int64, ch *rabbit.Channel) (err error) { | |||||
func SettlementGiveActivityCoin(engine *xorm.Engine, user model.User, ch *rabbit.Channel) (err error) { | |||||
uid := user.Id | |||||
now := time.Now() | |||||
//1、查找 `egg_energy_basic_setting` 基础设置 | //1、查找 `egg_energy_basic_setting` 基础设置 | ||||
eggEnergyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(engine) | eggEnergyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(engine) | ||||
eggEnergyBasicSetting, err := eggEnergyBasicSettingDb.EggEnergyBasicSettingGetOneByParams(map[string]interface{}{ | eggEnergyBasicSetting, err := eggEnergyBasicSettingDb.EggEnergyBasicSettingGetOneByParams(map[string]interface{}{ | ||||
@@ -45,6 +51,7 @@ func SettlementGiveActivityCoin(engine *xorm.Engine, uid int64, ch *rabbit.Chann | |||||
err = errors.New("视屏奖励机制设置未完全!") | err = errors.New("视屏奖励机制设置未完全!") | ||||
return | return | ||||
} | } | ||||
var rewardSystem []*md2.RewardSystemStruct | var rewardSystem []*md2.RewardSystemStruct | ||||
err = json.Unmarshal([]byte(eggEnergyBasicSetting.RewardSystem), &rewardSystem) | err = json.Unmarshal([]byte(eggEnergyBasicSetting.RewardSystem), &rewardSystem) | ||||
if err != nil { | if err != nil { | ||||
@@ -54,7 +61,38 @@ func SettlementGiveActivityCoin(engine *xorm.Engine, uid int64, ch *rabbit.Chann | |||||
err = errors.New("未设置奖励机制!") | err = errors.New("未设置奖励机制!") | ||||
return | return | ||||
} | } | ||||
rewardValue := egg_system_rules.StrToFloat64(videoRewardSystem.RewardValue) //奖励多少个活跃积分 | |||||
rewardValue := egg_system_rules.StrToFloat64(videoRewardSystem.RewardValue) //TODO::奖励多少个活跃积分(根据ecpm, 新用户机制, 蛋蛋分机制) | |||||
var newUserRewardRules *md2.NewUserRewardRules | |||||
err = json.Unmarshal([]byte(eggEnergyBasicSetting.NewUserIncentiveRules), &newUserRewardRules) | |||||
if err != nil { | |||||
return | |||||
} | |||||
userCreateAt := egg_system_rules.String2Time(user.CreateAt) | |||||
if int(now.Sub(userCreateAt).Hours()/24) <= newUserRewardRules.ContinueDays { | |||||
rewardValue *= newUserRewardRules.RewardCoefficient | |||||
} | |||||
score := 60.00 | |||||
esIndex := es.GetLatestEffectiveIndexFromAlias(now) | |||||
esIndexName := md.EggEnergyUserEggScoreEsAlias + "_" + esIndex | |||||
results, err1 := es2.FirstDoc(esIndexName, esIndex+"_"+egg_system_rules.Int64ToStr(user.Id)) | |||||
if err1 != nil { | |||||
if !elastic.IsNotFound(err1) { | |||||
return err1 | |||||
} | |||||
} | |||||
if !elastic.IsNotFound(err1) { | |||||
var doc md.EggEnergyUserEggScoreEs | |||||
err = json.Unmarshal(results.Source, &doc) | |||||
if err != nil { | |||||
return | |||||
} | |||||
score = doc.ScoreValue | |||||
} | |||||
if score > 60 { | |||||
//TODO::按照蛋蛋分比重× | |||||
} | |||||
var rewardSystemMap = map[int]*md2.RewardSystemStruct{} | var rewardSystemMap = map[int]*md2.RewardSystemStruct{} | ||||
for _, v := range rewardSystem { | for _, v := range rewardSystem { | ||||
rewardSystemMap[v.Level] = v | rewardSystemMap[v.Level] = v | ||||
@@ -2,7 +2,6 @@ package egg_energy | |||||
import ( | import ( | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||||
zhios_order_relate_utils "code.fnuoos.com/EggPlanet/egg_models.git/utils" | zhios_order_relate_utils "code.fnuoos.com/EggPlanet/egg_models.git/utils" | ||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | ||||
@@ -92,35 +91,7 @@ func HomePageStartSignIn(engine *xorm.Engine, req md.HomePageStartSignInReq) err | |||||
})) | })) | ||||
return errors.New("非签到时间," + "请求账号:" + req.Phone + ",请求时间:" + now.Format("2006-01-02 15:04:05") + ",签到时间:" + eggSignIn.EndTime) | return errors.New("非签到时间," + "请求账号:" + req.Phone + ",请求时间:" + now.Format("2006-01-02 15:04:05") + ",签到时间:" + eggSignIn.EndTime) | ||||
} | } | ||||
//2、新增 `egg_sign_in` 记录 | |||||
endTime := now.Add(time.Hour * time.Duration(oneRoundDuration)).Format("2006-01-02 15:04:05") | |||||
_, err = engine.Insert(&model.EggSignIn{ | |||||
Uid: req.UID, | |||||
StartTime: now.Format("2006-01-02 15:04:05"), | |||||
EndTime: endTime, | |||||
IsCompleted: 0, | |||||
}) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
//3、新增 `egg_energy_user_activity` 记录 | |||||
var m model.EggEnergyUserActivity | |||||
has, err := engine.Where("uid =? and date =?", req.UID, now.Format("2006-01-02")).Get(&m) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
if !has { | |||||
affected, err1 := engine.Insert(&model.EggEnergyUserActivity{ | |||||
Uid: int(req.UID), | |||||
Date: now.Format("2006-01-02"), | |||||
}) | |||||
if err1 != nil { | |||||
return err1 | |||||
} | |||||
if affected <= 0 { | |||||
return errors.New("插入活跃记录失败") | |||||
} | |||||
} | |||||
ch, err := rabbit.Cfg.Pool.GetChannel() | ch, err := rabbit.Cfg.Pool.GetChannel() | ||||
if err != nil { | if err != nil { | ||||
return err | return err | ||||
@@ -223,24 +223,9 @@ func settlementPublicGiveActivityCoin(engine *xorm.Engine, uid int64, ch *rabbit | |||||
Uid: int64(vv.Uid), | Uid: int64(vv.Uid), | ||||
Amount: vv.RewardValue, | Amount: vv.RewardValue, | ||||
}, md.EggEnergyRoutKeyForDealUserVirtualCoinData) | }, md.EggEnergyRoutKeyForDealUserVirtualCoinData) | ||||
//err = DealUserCoin(session, md.DealUserCoinReq{ | |||||
// Kind: "add", | |||||
// Mid: masterId, | |||||
// Title: md.OneCirclesWatchAdRewardTeamActiveCoin, | |||||
// TransferType: md.OneCirclesWatchAdRewardTeamActiveCoinForUserVirtualCoinFlow, | |||||
// OrdId: "", | |||||
// CoinId: oneCirclesPublicPlatoonBasicSetting.TeamActivePointsCoinId, | |||||
// Uid: vv.Uid, | |||||
// Amount: vv.RewardValue, | |||||
//}) | |||||
//if err != nil { | |||||
// _ = session.Rollback() | |||||
// fmt.Println("err:::::2222", err) | |||||
// return err | |||||
//} | |||||
} | } | ||||
err = session.Commit() | |||||
if err != nil { | |||||
err11 := session.Commit() | |||||
if err11 != nil { | |||||
_ = session.Rollback() | _ = session.Rollback() | ||||
return errors.New("事务提交失败") | return errors.New("事务提交失败") | ||||
} | } | ||||
@@ -92,7 +92,7 @@ type CalcPriceIncreaseFormulaResp struct { | |||||
} | } | ||||
type CalcPriceReductionFormulaResp struct { | type CalcPriceReductionFormulaResp struct { | ||||
GetEggEnergyAmount string `json:"get_egg_energy_amount"` //得到蛋蛋能量的钱 | |||||
GetEggEnergyAmount string `json:"get_egg_energy_amount"` //得到蛋蛋能量的钱` | |||||
BeforePrice string `json:"before_price"` //变更前-价格 | BeforePrice string `json:"before_price"` //变更前-价格 | ||||
AfterPrice string `json:"after_price"` //变更后-价格 | AfterPrice string `json:"after_price"` //变更后-价格 | ||||
BeforePlanetTotalValue string `json:"before_planet_total_value"` //变更前-星球总价值 | BeforePlanetTotalValue string `json:"before_planet_total_value"` //变更前-星球总价值 | ||||
@@ -5,10 +5,8 @@ const EggEnergyExchange = "egg.energy" | |||||
const ( | const ( | ||||
EggEnergyRoutKeyForStarLevelDividend = "star_level_dividend" // 星级分红 | EggEnergyRoutKeyForStarLevelDividend = "star_level_dividend" // 星级分红 | ||||
EggEnergyRoutKeyForSettlementPublicGiveActivityCoin = "settlement_public_give_activity_coin" // 计算观看激励视屏得到活跃积分 | EggEnergyRoutKeyForSettlementPublicGiveActivityCoin = "settlement_public_give_activity_coin" // 计算观看激励视屏得到活跃积分 | ||||
EggEnergyRoutKeyForStartExchangeGreenEnergyToPerson = "start_exchange_egg_energy_to_person" // 开始兑换个人蛋蛋能量 | |||||
EggEnergyRoutKeyForAutoExchangeGreenEnergyToPerson = "auto_exchange_egg_energy_to_person" // 自动兑换个人蛋蛋能量 | |||||
EggEnergyRoutKeyForStartExchangeGreenEnergyToTeam = "start_exchange_egg_energy_to_team" // 开始兑换团队蛋蛋能量 | |||||
EggEnergyRoutKeyForAutoExchangeGreenEnergyToTeam = "auto_exchange_egg_energy_to_team" // 自动兑换团队蛋蛋能量 | |||||
EggEnergyRoutKeyForStartExchangeGreenEnergy = "start_exchange_egg_energy" // 开始兑换蛋蛋能量 | |||||
EggEnergyRoutKeyForAutoExchangeGreenEnergy = "auto_exchange_egg_energy_to_person" // 自动兑换蛋蛋能量 | |||||
EggEnergyRoutKeyForEggEnergyFundData = "fund_data" // 资金汇入 | EggEnergyRoutKeyForEggEnergyFundData = "fund_data" // 资金汇入 | ||||
EggEnergyRoutKeyForPlatformRevenueData = "platform_revenue_data" // 平台收入 | EggEnergyRoutKeyForPlatformRevenueData = "platform_revenue_data" // 平台收入 | ||||
EggEnergyRoutKeyForDealUserVirtualCoinData = "deal_user_virtual_coin" // 处理给用户虚拟币积分 | EggEnergyRoutKeyForDealUserVirtualCoinData = "deal_user_virtual_coin" // 处理给用户虚拟币积分 | ||||
@@ -30,24 +28,25 @@ type EggEnergyStructForStarLevelDividends struct { | |||||
SignDividend float64 `json:"sign_dividend"` | SignDividend float64 `json:"sign_dividend"` | ||||
} | } | ||||
type EggEnergyStructForStartExchangeGreenEnergy struct { | |||||
Uid int64 `json:"uid"` | |||||
Amount string `json:"amount"` | |||||
PointCoinId int `json:"point_coin_id"` | |||||
EnergyCoinId int `json:"energy_coin_id"` | |||||
AutoExchangeNumsAmount string `json:"auto_exchange_nums_amount"` | |||||
StartExchangeTime string `json:"start_exchange_time"` //发起兑换时间 | |||||
EndExchangeTime string `json:"end_exchange_time"` //截止兑换时间 | |||||
} | |||||
type EggEnergyStructForAutoExchangeGreenEnergy struct { | type EggEnergyStructForAutoExchangeGreenEnergy struct { | ||||
Uid int64 `json:"uid"` | |||||
EnergyCoinId int `json:"energy_coin_id"` | |||||
AutoExchangeNumsAmount string `json:"auto_exchange_nums_amount"` | |||||
StartExchangeTime string `json:"start_exchange_time"` //发起兑换时间 | |||||
EndExchangeTime string `json:"end_exchange_time"` //截止兑换时间 | |||||
Uid int64 `json:"uid"` | |||||
SignId int64 `json:"sign_id"` | |||||
PersonEggEnergyCoinId int `json:"person_egg_energy_coin_id"` | |||||
TeamEggEnergyCoinId int `json:"team_egg_energy_coin_id"` | |||||
StartExchangeTime string `json:"start_exchange_time"` //发起兑换时间 | |||||
EndExchangeTime string `json:"end_exchange_time"` //截止兑换时间 | |||||
} | } | ||||
type EggEnergyStructForStartExchangeGreenEnergy struct { | |||||
Uid int64 `json:"uid"` | |||||
SignId int64 `json:"sign_id"` | |||||
PersonEggEnergyCoinId int `json:"person_egg_energy_coin_id"` | |||||
TeamEggEnergyCoinId int `json:"team_egg_energy_coin_id"` | |||||
PersonPointCoinId int `json:"person_point_coin_id"` | |||||
PersonEnergyCoinId int `json:"person_energy_coin_id"` | |||||
TeamPointCoinId int `json:"team_point_coin_id"` | |||||
TeamEnergyCoinId int `json:"team_energy_coin_id"` | |||||
} | |||||
type EggEnergyStructForPlatformRevenueData struct { | type EggEnergyStructForPlatformRevenueData struct { | ||||
ID int `json:"id"` | ID int `json:"id"` | ||||
Amount string `json:"amount"` // 资金汇入处理金额 | Amount string `json:"amount"` // 资金汇入处理金额 | ||||