From 529aab2ec1055a9bc4357ddbb8ea072e2af4cecc Mon Sep 17 00:00:00 2001 From: DengBiao <2319963317@qq.com> Date: Thu, 1 Feb 2024 15:13:59 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=B8=80=E4=B8=AA=E5=9C=88=E5=9C=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...cles_available_green_energy_points_flow.go | 6 ++ .../md/one_circles_green_energy.go | 7 ++ ...ctivity_coin_auto_exchange_green_energy.go | 26 ++++- .../one_circles_auto_adjust_prices.go | 94 +++++++++++++++++++ .../one_circles_auto_release_green_energy.go | 9 ++ ...rcles_available_green_energy_settlement.go | 18 +++- ...cles_deal_available_green_energy_points.go | 70 ++++++++++++++ ...ircles_public_platoon_give_activty_coin.go | 9 ++ ...circles_sign_in_green_energy_settlement.go | 11 ++- .../one_circles_star_level_dividends.go | 13 ++- 10 files changed, 255 insertions(+), 8 deletions(-) create mode 100644 rule/one_circles/one_circles_auto_adjust_prices.go diff --git a/rule/one_circles/enum/one_circles_available_green_energy_points_flow.go b/rule/one_circles/enum/one_circles_available_green_energy_points_flow.go index 34f58dc..6609266 100644 --- a/rule/one_circles/enum/one_circles_available_green_energy_points_flow.go +++ b/rule/one_circles/enum/one_circles_available_green_energy_points_flow.go @@ -11,6 +11,8 @@ const ( GreenEnergyExchangeBalance TeamActivePointRedemption SettlementStarLevelDividends + MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds + MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums ) func (kind OneCirclesAvailableGreenEnergyPointsFlowKind) String() string { @@ -29,6 +31,10 @@ func (kind OneCirclesAvailableGreenEnergyPointsFlowKind) String() string { return "团队活跃积分兑换" case SettlementStarLevelDividends: return "结算星级分红" + case MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds: + return "市商数量自动兑换市商资金" + case MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums: + return "市商资金自动兑换市商数量" default: return "未知状态" } diff --git a/rule/one_circles/md/one_circles_green_energy.go b/rule/one_circles/md/one_circles_green_energy.go index 5732324..edd4dc6 100644 --- a/rule/one_circles/md/one_circles_green_energy.go +++ b/rule/one_circles/md/one_circles_green_energy.go @@ -19,6 +19,13 @@ type SignInRewardStruct struct { RewardValue string `json:"reward_value"` //奖励值 } +type PriceSettingStruct struct { + PriceHigherThanValue string `json:"price_higher_than_value"` //高于x元 + MarketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue string `json:"marketplace_merchants_nums_exchange_marketplace_merchants_fund_value"` //市商数量单笔x数量自动兑换 + PriceBelowValue string `json:"price_below_value"` //低于x元 + MarketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue string `json:"marketplace_merchants_fund_exchange_marketplace_merchants_nums_value"` //市商资金单笔x元自动兑换 +} + type DestructionSettingStruct struct { DestructionQuantity string `json:"destruction_quantity"` //销毁百分比 PublicWelfareAndCharity string `json:"public_welfare_and_charity"` //公益慈善百分比 diff --git a/rule/one_circles/one_circles_activity_coin_auto_exchange_green_energy.go b/rule/one_circles/one_circles_activity_coin_auto_exchange_green_energy.go index cd005a5..f194745 100644 --- a/rule/one_circles/one_circles_activity_coin_auto_exchange_green_energy.go +++ b/rule/one_circles/one_circles_activity_coin_auto_exchange_green_energy.go @@ -7,6 +7,7 @@ import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/enum" md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/md" zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" "encoding/json" "errors" "fmt" @@ -73,6 +74,13 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( } session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() //4、处理"个人活跃积分"兑换 for _, v := range list1 { @@ -81,9 +89,9 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( //4.1计算涨价公式 err1, values, _, afterPriceValue := NewCalcPriceIncreaseFormula(autoExchangeNumsByPersonAmount, oneCirclesGreenEnergyBasicSetting) if err1 != nil { + _ = session.Rollback() return err1 } - oneCirclesGreenEnergyBasicSetting.NowPrice = afterPriceValue //TODO::改变当前价格 //4.2给相应的用户加上个人的绿色积分(可用数量) err = DealUserCoin(session, md.DealUserCoinReq{ @@ -96,6 +104,11 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( Uid: v.Uid, Amount: zhios_order_relate_utils.StrToFloat64(values), }) + if err != nil { + _ = session.Rollback() + fmt.Println("err:::::33333", err) + return err + } //4.3给相应的用户减去个人活跃积分 err = DealUserCoin(session, md.DealUserCoinReq{ @@ -115,7 +128,7 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( } //4.4 减少“原始数量”中的绿色能量 - err = DealAvailableGreenEnergyCoin(session, int(enum.PersonalActivePointRedemption), zhios_order_relate_utils.StrToFloat64(values), zhios_order_relate_utils.StrToFloat64(autoExchangeNumsByPersonAmount), enum.PersonalActivePointRedemption.String(), oneCirclesGreenEnergyBasicSetting, oneCirclesGreenEnergyBasicSetting.NowPrice) + err = DealAvailableGreenEnergyCoin(session, int(enum.PersonalActivePointRedemption), zhios_order_relate_utils.StrToFloat64(values), zhios_order_relate_utils.StrToFloat64(autoExchangeNumsByPersonAmount), enum.PersonalActivePointRedemption.String(), oneCirclesGreenEnergyBasicSetting, afterPriceValue) if err != nil { _ = session.Rollback() fmt.Println("err:::::44444", err) @@ -130,9 +143,9 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( //5.1计算涨价公式 err1, values, _, afterPriceValue := NewCalcPriceIncreaseFormula(autoExchangeNumsByTeamAmount, oneCirclesGreenEnergyBasicSetting) if err1 != nil { + _ = session.Rollback() return err1 } - oneCirclesGreenEnergyBasicSetting.NowPrice = afterPriceValue //TODO::改变当前价格 //5.2给相应的用户加上个人的绿色积分(结算数量) err = DealUserCoin(session, md.DealUserCoinReq{ @@ -145,6 +158,11 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( Uid: v.Uid, Amount: zhios_order_relate_utils.StrToFloat64(values), }) + if err != nil { + _ = session.Rollback() + fmt.Println("err:::::33333", err) + return err + } //5.3给相应的用户减去个人团队积分 err = DealUserCoin(session, md.DealUserCoinReq{ @@ -164,7 +182,7 @@ func ActivityCoinAutoExchangeGreenEnergy(engine *xorm.Engine, masterId string) ( } //5.4 减少“原始数量”中的绿色能量 - err = DealAvailableGreenEnergyCoin(session, int(enum.TeamActivePointRedemption), zhios_order_relate_utils.StrToFloat64(values), zhios_order_relate_utils.StrToFloat64(autoExchangeNumsByTeamAmount), enum.TeamActivePointRedemption.String(), oneCirclesGreenEnergyBasicSetting, oneCirclesGreenEnergyBasicSetting.NowPrice) + err = DealAvailableGreenEnergyCoin(session, int(enum.TeamActivePointRedemption), zhios_order_relate_utils.StrToFloat64(values), zhios_order_relate_utils.StrToFloat64(autoExchangeNumsByTeamAmount), enum.TeamActivePointRedemption.String(), oneCirclesGreenEnergyBasicSetting, afterPriceValue) if err != nil { _ = session.Rollback() fmt.Println("err:::::44444", err) diff --git a/rule/one_circles/one_circles_auto_adjust_prices.go b/rule/one_circles/one_circles_auto_adjust_prices.go new file mode 100644 index 0000000..91953fb --- /dev/null +++ b/rule/one_circles/one_circles_auto_adjust_prices.go @@ -0,0 +1,94 @@ +package one_circles + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db" + "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/enum" + md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/md" + zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" + "encoding/json" + "errors" + "fmt" + "github.com/shopspring/decimal" + "time" + "xorm.io/xorm" +) + +// AutoAdjustPrice 自动调整价格 +func AutoAdjustPrice(engine *xorm.Engine, masterId string) (err error) { + now := time.Now() + fmt.Println(now.Hour()) + + //1、查找 `one_circles_green_energy_basic_setting` 基础设置 + oneCirclesGreenEnergyBasicSetting, err := db.OneCirclesGreenEnergyBasicSettingGetOneByParams(engine, map[string]interface{}{ + "key": "is_open", + "value": 1, + }) + if err != nil { + return + } + + var priceSettingStruct *md2.PriceSettingStruct + err = json.Unmarshal([]byte(oneCirclesGreenEnergyBasicSetting.PriceSetting), &priceSettingStruct) + if err != nil { + return + } + if priceSettingStruct.PriceHigherThanValue == "" || priceSettingStruct.MarketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue == "" || priceSettingStruct.PriceBelowValue == "" || priceSettingStruct.MarketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue == "" { + err = errors.New("价格设置未完全!") + return + } + session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() + + priceHigherThanValue, _ := decimal.NewFromString(priceSettingStruct.PriceHigherThanValue) + marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue, _ := decimal.NewFromString(priceSettingStruct.MarketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue) + priceBelowValue, _ := decimal.NewFromString(priceSettingStruct.PriceBelowValue) + marketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue, _ := decimal.NewFromString(priceSettingStruct.MarketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue) + nowPriceValue, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.NowPrice) + if nowPriceValue.GreaterThan(priceHigherThanValue) { + //当价格涨到设置某个价格时,自动执行 市商数量 兑换 市商资金 (降价公式) + err1, amount, _, afterPriceValue := NewCalcPriceReductionFormula(marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String(), oneCirclesGreenEnergyBasicSetting) + if err1 != nil { + fmt.Println("err1111:::", err1) + _ = session.Rollback() + return err1 + } + + // 市商数量 减少、原始数量 增加、原始资金 减少、市商资金 增加 + err = DealAvailableGreenEnergyCoin(session, int(enum.MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds), zhios_order_relate_utils.StrToFloat64(marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String()), zhios_order_relate_utils.StrToFloat64(amount), enum.MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds.String(), oneCirclesGreenEnergyBasicSetting, afterPriceValue) + if err != nil { + fmt.Println("err:::::22222", err) + _ = session.Rollback() + return err + } + } + if nowPriceValue.LessThan(priceBelowValue) { + //当价格降到设置某个价格时,自动执行 市商资金 兑换 市商数量 (涨价公式) + err1, greenEnergy, _, afterPriceValue := NewCalcPriceIncreaseFormula(marketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue.String(), oneCirclesGreenEnergyBasicSetting) + if err1 != nil { + fmt.Println("err33333:::", err1) + _ = session.Rollback() + return err1 + } + // 市商数量 增加、原始数量 减少、原始资金 增加、市商资金 减少 + err = DealAvailableGreenEnergyCoin(session, int(enum.MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums), zhios_order_relate_utils.StrToFloat64(greenEnergy), zhios_order_relate_utils.StrToFloat64(marketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue.String()), enum.MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums.String(), oneCirclesGreenEnergyBasicSetting, afterPriceValue) + if err != nil { + fmt.Println("err:::::44444", err) + _ = session.Rollback() + return err + } + } + + err = session.Commit() + if err != nil { + _ = session.Rollback() + return errors.New("事务提交失败") + } + return +} diff --git a/rule/one_circles/one_circles_auto_release_green_energy.go b/rule/one_circles/one_circles_auto_release_green_energy.go index 180c54d..d881e92 100644 --- a/rule/one_circles/one_circles_auto_release_green_energy.go +++ b/rule/one_circles/one_circles_auto_release_green_energy.go @@ -5,6 +5,7 @@ import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/cache" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" "errors" "fmt" "github.com/shopspring/decimal" @@ -54,6 +55,14 @@ func AutoReleaseExchangeGreenEnergy(engine *xorm.Engine, masterId string) (err e } session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() + //4、处理释放 settlementQuantityRadio := decimal.NewFromFloat(100) settlementQuantityValue := decimal.NewFromInt(int64(settlementQuantity)).Div(settlementQuantityRadio) diff --git a/rule/one_circles/one_circles_available_green_energy_settlement.go b/rule/one_circles/one_circles_available_green_energy_settlement.go index bf1d9ba..7d79f26 100644 --- a/rule/one_circles/one_circles_available_green_energy_settlement.go +++ b/rule/one_circles/one_circles_available_green_energy_settlement.go @@ -46,7 +46,7 @@ func NewCalcPriceIncreaseFormula(userAmountValue string, oneCirclesGreenEnergyBa return } -// CalcPriceReductionFormula 计算降价公式(【用户需兑换绿能色量数量*{原始资金÷(用户需兑换绿色数量+原始数量}*(1 - 扣比例50% ~ 23%) = 用户获得绿色能量个数) +// CalcPriceReductionFormula 计算降价公式(【用户需兑换绿能色量数量*{原始资金÷(用户需兑换绿色数量+原始数量}*(1 - 扣比例50% ~ 23%) = 用户获得钱) func CalcPriceReductionFormula(engine *xorm.Engine, userExchangeNumsValue string, levelId string) (err error, values, greenEnergy, greenEnergyFee, nowPriceValue, afterPriceValue string) { //1、查找 `one_circles_green_energy_basic_setting` 基础设置 oneCirclesGreenEnergyBasicSetting, err := db.OneCirclesGreenEnergyBasicSettingGetOneByParams(engine, map[string]interface{}{ @@ -89,3 +89,19 @@ func CalcPriceReductionFormula(engine *xorm.Engine, userExchangeNumsValue string afterPriceValue = afterPrice.String() return } + +// NewCalcPriceReductionFormula 计算降价公式(【用户需兑换绿能色量数量*{原始资金÷(用户需兑换绿色数量+原始数量}*(1 - 扣比例50% ~ 23%) = 用户获得钱) +func NewCalcPriceReductionFormula(userExchangeNumsValue string, oneCirclesGreenEnergyBasicSetting *model.OneCirclesGreenEnergyBasicSetting) (err error, greenEnergy, nowPriceValue, afterPriceValue string) { + userExchangeNums, _ := decimal.NewFromString(userExchangeNumsValue) //用户兑换绿色能量 + originalQuantityNums, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.OriginalQuantityNums) //原始数量 + nowPrice, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.NowPrice) //当前价格 + originalQuantityFunds, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.OriginalFunds) //原始资金 + afterPrice := originalQuantityFunds.Div(userExchangeNums.Add(originalQuantityNums)) //降价后的价格 + + greenEnergyValues := userExchangeNums.Mul(afterPrice) //用户获得的钱 + + greenEnergy = greenEnergyValues.Truncate(8).String() + nowPriceValue = nowPrice.String() + afterPriceValue = afterPrice.String() + return +} diff --git a/rule/one_circles/one_circles_deal_available_green_energy_points.go b/rule/one_circles/one_circles_deal_available_green_energy_points.go index ca30b03..d985c99 100644 --- a/rule/one_circles/one_circles_deal_available_green_energy_points.go +++ b/rule/one_circles/one_circles_deal_available_green_energy_points.go @@ -303,6 +303,76 @@ func DealAvailableGreenEnergyCoin(session *xorm.Session, kind int, amount, amoun oneCirclesAvailableGreenEnergyPointsFlow.BeforeMarketplaceMerchantFundValues = chain.MarketplaceMerchantFunds //市商资金 oneCirclesAvailableGreenEnergyPointsFlow.AfterMarketplaceMerchantFundValues = chain.MarketplaceMerchantFunds break + case int(enum.MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds): //市商数量自动兑换市商资金 + beforeOriginalQuantityNums, _ := decimal.NewFromString(chain.OriginalQuantityNums) + beforeMarketplaceMerchantNums, _ := decimal.NewFromString(chain.MarketplaceMerchantNums) + beforeOriginalFunds, _ := decimal.NewFromString(chain.OriginalFunds) + beforeMarketplaceMerchantFunds, _ := decimal.NewFromString(chain.MarketplaceMerchantFunds) + + oneCirclesAvailableGreenEnergyPointsFlow.Direction = 1 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeEcologicalApplicationValues = chain.EcologicalApplication //生态应用 + oneCirclesAvailableGreenEnergyPointsFlow.AfterEcologicalApplicationValues = chain.EcologicalApplication + oneCirclesAvailableGreenEnergyPointsFlow.BeforeTechnicalTeamValues = chain.TotalTechnologyTeam //技术团队 + oneCirclesAvailableGreenEnergyPointsFlow.AfterTechnicalTeamValues = chain.TotalTechnologyTeam + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOperateTeamValues = chain.TotalOperateTeam //运营团队 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOperateTeamValues = chain.TotalOperateTeam + oneCirclesAvailableGreenEnergyPointsFlow.BeforeActiveGiveawaysValues = chain.TotalActiveGiveaways //活跃赠送 + oneCirclesAvailableGreenEnergyPointsFlow.AfterActiveGiveawaysValues = chain.TotalActiveGiveaways + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOriginalQuantityValues = chain.OriginalQuantityNums //原始数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOriginalQuantityValues = beforeOriginalQuantityNums.Add(amountValue).String() + oneCirclesAvailableGreenEnergyPointsFlow.BeforeMarketplaceMerchantValues = chain.MarketplaceMerchantNums //市商数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterMarketplaceMerchantValues = beforeMarketplaceMerchantNums.Sub(amountValue).String() + oneCirclesAvailableGreenEnergyPointsFlow.BeforeDevelopmentCommitteeValues = chain.DevelopmentCommittee //发展委员会 + oneCirclesAvailableGreenEnergyPointsFlow.AfterDevelopmentCommitteeValues = chain.DevelopmentCommittee + oneCirclesAvailableGreenEnergyPointsFlow.BeforePublicWelfareAndCharityValues = chain.PublicWelfareAndCharity //公益慈善 + oneCirclesAvailableGreenEnergyPointsFlow.AfterPublicWelfareAndCharityValues = chain.PublicWelfareAndCharity + oneCirclesAvailableGreenEnergyPointsFlow.BeforeStarLevelDividendsValues = chain.StarLevelDividends //星级分红 + oneCirclesAvailableGreenEnergyPointsFlow.AfterStarLevelDividendsValues = chain.StarLevelDividends //星级分红 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeDestructionQuantityValues = chain.DestructionQuantityNums //销毁数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterDestructionQuantityValues = chain.DestructionQuantityNums + + amountFeeValue := decimal.NewFromFloat(amountFee) //金额 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOriginalQuantityFundValues = chain.OriginalFunds //原始资金 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOriginalQuantityFundValues = beforeOriginalFunds.Sub(amountFeeValue).String() + + oneCirclesAvailableGreenEnergyPointsFlow.BeforeMarketplaceMerchantFundValues = chain.MarketplaceMerchantFunds //市商资金 + oneCirclesAvailableGreenEnergyPointsFlow.AfterMarketplaceMerchantFundValues = beforeMarketplaceMerchantFunds.Add(amountFeeValue).String() + break + case int(enum.MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums): //市商资金自动兑换市商数量 + beforeOriginalQuantityNums, _ := decimal.NewFromString(chain.OriginalQuantityNums) + beforeMarketplaceMerchantNums, _ := decimal.NewFromString(chain.MarketplaceMerchantNums) + beforeOriginalFunds, _ := decimal.NewFromString(chain.OriginalFunds) + beforeMarketplaceMerchantFunds, _ := decimal.NewFromString(chain.MarketplaceMerchantFunds) + + oneCirclesAvailableGreenEnergyPointsFlow.Direction = 1 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeEcologicalApplicationValues = chain.EcologicalApplication //生态应用 + oneCirclesAvailableGreenEnergyPointsFlow.AfterEcologicalApplicationValues = chain.EcologicalApplication + oneCirclesAvailableGreenEnergyPointsFlow.BeforeTechnicalTeamValues = chain.TotalTechnologyTeam //技术团队 + oneCirclesAvailableGreenEnergyPointsFlow.AfterTechnicalTeamValues = chain.TotalTechnologyTeam + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOperateTeamValues = chain.TotalOperateTeam //运营团队 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOperateTeamValues = chain.TotalOperateTeam + oneCirclesAvailableGreenEnergyPointsFlow.BeforeActiveGiveawaysValues = chain.TotalActiveGiveaways //活跃赠送 + oneCirclesAvailableGreenEnergyPointsFlow.AfterActiveGiveawaysValues = chain.TotalActiveGiveaways + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOriginalQuantityValues = chain.OriginalQuantityNums //原始数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOriginalQuantityValues = beforeOriginalQuantityNums.Sub(amountValue).String() + oneCirclesAvailableGreenEnergyPointsFlow.BeforeMarketplaceMerchantValues = chain.MarketplaceMerchantNums //市商数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterMarketplaceMerchantValues = beforeMarketplaceMerchantNums.Add(amountValue).String() + oneCirclesAvailableGreenEnergyPointsFlow.BeforeDevelopmentCommitteeValues = chain.DevelopmentCommittee //发展委员会 + oneCirclesAvailableGreenEnergyPointsFlow.AfterDevelopmentCommitteeValues = chain.DevelopmentCommittee + oneCirclesAvailableGreenEnergyPointsFlow.BeforePublicWelfareAndCharityValues = chain.PublicWelfareAndCharity //公益慈善 + oneCirclesAvailableGreenEnergyPointsFlow.AfterPublicWelfareAndCharityValues = chain.PublicWelfareAndCharity + oneCirclesAvailableGreenEnergyPointsFlow.BeforeStarLevelDividendsValues = chain.StarLevelDividends //星级分红 + oneCirclesAvailableGreenEnergyPointsFlow.AfterStarLevelDividendsValues = chain.StarLevelDividends //星级分红 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeDestructionQuantityValues = chain.DestructionQuantityNums //销毁数量 + oneCirclesAvailableGreenEnergyPointsFlow.AfterDestructionQuantityValues = chain.DestructionQuantityNums + + amountFeeValue := decimal.NewFromFloat(amountFee) //金额 + oneCirclesAvailableGreenEnergyPointsFlow.BeforeOriginalQuantityFundValues = chain.OriginalFunds //原始资金 + oneCirclesAvailableGreenEnergyPointsFlow.AfterOriginalQuantityFundValues = beforeOriginalFunds.Add(amountFeeValue).String() + + oneCirclesAvailableGreenEnergyPointsFlow.BeforeMarketplaceMerchantFundValues = chain.MarketplaceMerchantFunds //市商资金 + oneCirclesAvailableGreenEnergyPointsFlow.AfterMarketplaceMerchantFundValues = beforeMarketplaceMerchantFunds.Sub(amountFeeValue).String() + break } chain.EcologicalApplication = oneCirclesAvailableGreenEnergyPointsFlow.AfterEcologicalApplicationValues //生态应用 diff --git a/rule/one_circles/one_circles_public_platoon_give_activty_coin.go b/rule/one_circles/one_circles_public_platoon_give_activty_coin.go index 4c2456e..353e710 100644 --- a/rule/one_circles/one_circles_public_platoon_give_activty_coin.go +++ b/rule/one_circles/one_circles_public_platoon_give_activty_coin.go @@ -6,6 +6,7 @@ import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/md" zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" "encoding/json" "errors" "fmt" @@ -124,6 +125,14 @@ func SettlementPublicGiveActivityCoin(engine *xorm.Engine, masterId string, uid } session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() + //给相应的用户加上"个人"活跃积分 err = DealUserCoin(session, md.DealUserCoinReq{ Kind: "add", diff --git a/rule/one_circles/one_circles_sign_in_green_energy_settlement.go b/rule/one_circles/one_circles_sign_in_green_energy_settlement.go index 255fb07..d123476 100644 --- a/rule/one_circles/one_circles_sign_in_green_energy_settlement.go +++ b/rule/one_circles/one_circles_sign_in_green_energy_settlement.go @@ -7,6 +7,7 @@ import ( "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/enum" md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/md" zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" "encoding/json" "errors" "fmt" @@ -58,6 +59,14 @@ func SettlementSignInGreenEnergy(engine *xorm.Engine, masterId string) (err erro } session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() + var reduceTotalGreenEnergy float64 for _, v := range list { //4.2给相应的用户加上个人的绿色积分(可用数量) @@ -99,7 +108,7 @@ func SettlementSignInGreenEnergy(engine *xorm.Engine, masterId string) (err erro TransferType: md.OneCirclesGreenEnergySignInSettlementTeamRewardForUserVirtualCoinFlow, OrdId: "", CoinId: oneCirclesGreenEnergyBasicSetting.TeamGreenEnergyCoinId, - Uid: relate.Uid, + Uid: relate.ParentUid, Amount: parentRewardValue, }) if err != nil { diff --git a/rule/one_circles/one_circles_star_level_dividends.go b/rule/one_circles/one_circles_star_level_dividends.go index b5e78b2..4eb8ada 100644 --- a/rule/one_circles/one_circles_star_level_dividends.go +++ b/rule/one_circles/one_circles_star_level_dividends.go @@ -8,6 +8,7 @@ import ( md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles/md" zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/cache" + zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" "encoding/json" "errors" "fmt" @@ -82,6 +83,14 @@ func SettlementStarLevelDividends(engine *xorm.Engine, masterId string) (err err } session := engine.NewSession() + defer func() { + session.Close() + if err := recover(); err != nil { + _ = zhios_order_relate_logx.Error(err) + } + }() + session.Begin() + //2、查找 `one_circles_star_level_dividends_records` 基础设置 oneCirclesStarLevelDividendsRecords, err := db.OneCirclesStarLevelDividendsRecordsGetOneByParamsBySession(session, map[string]interface{}{ "key": "date", @@ -147,9 +156,9 @@ func SettlementStarLevelDividends(engine *xorm.Engine, masterId string) (err err if int(v["weight"]) > allUserLevelMap[item.Level].LevelWeight { continue } - if vipEquitySettingMap[zhios_order_relate_utils.IntToStr(item.Level)] != "" && vipLevelUserTotalMap[zhios_order_relate_utils.IntToStr(item.Level)]["count"] > 0 { + if vipEquitySettingMap[k] != "" && vipLevelUserTotalMap[k]["count"] > 0 { dividendValue, _ := decimal.NewFromString(vipEquitySettingMap[k]) - userTotal := decimal.NewFromInt(vipLevelUserTotalMap[zhios_order_relate_utils.IntToStr(item.Level)]["count"]) + userTotal := decimal.NewFromInt(vipLevelUserTotalMap[k]["count"]) siginDividendValue = siginDividendValue.Add(dividendValue.Div(userTotal)) } }