dengbiao преди 2 седмици
родител
ревизия
326f6b97f2
променени са 4 файла, в които са добавени 52 реда и са изтрити 19 реда
  1. +6
    -4
      rule/egg_energy/auto_adjust_prices.go
  2. +37
    -8
      rule/egg_energy/available_green_energy_settlement.go
  3. +7
    -7
      rule/egg_energy/deal_available_green_energy_points.go
  4. +2
    -0
      rule/egg_energy/md/egg_energy_green_energy.go

+ 6
- 4
rule/egg_energy/auto_adjust_prices.go Целия файл

@@ -66,7 +66,7 @@ func AutoAdjustPrice(engine *xorm.Engine) (err error) {
nowPriceValue, _ := decimal.NewFromString(eggEnergyCoreData.NowPrice)
if nowPriceValue.GreaterThan(priceHigherThanValue) {
//当价格涨到设置某个价格时,自动执行 市商数量 兑换 市商资金 (降价公式)
err1, resp := CalcPriceReductionFormula(marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String(), eggEnergyCoreData)
err1, resp := CalcPriceReductionFormula(marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String(), eggEnergyCoreData, "", *eggEnergyBasicSetting)
if err1 != nil {
fmt.Println("err1111:::", err1)
_ = session.Rollback()
@@ -75,8 +75,9 @@ func AutoAdjustPrice(engine *xorm.Engine) (err error) {

// 市商数量 减少、市商资金 增加
err = DealAvailableEggEnergyCoin(session, int(enum.MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds), eggEnergyCoreData, md2.DealAvailableEggEnergyCoinReq{
Amount: resp.GetEggEnergyAmount,
AmountFee: marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String(),
Amount: marketplaceMerchantsNumsExchangeMarketplaceMerchantsFundValue.String(),
AmountValue: resp.GetEggEnergyAmount,
AmountFee: resp.AmountFee,
BeforePrice: resp.BeforePrice,
AfterPrice: resp.AfterPrice,
BeforePlanetTotalValue: resp.BeforePlanetTotalValue,
@@ -102,7 +103,8 @@ func AutoAdjustPrice(engine *xorm.Engine) (err error) {
// 市商数量 增加、市商资金 减少
err = DealAvailableEggEnergyCoin(session, int(enum.MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums), eggEnergyCoreData, md2.DealAvailableEggEnergyCoinReq{
Amount: resp.GetEggEnergyNums,
AmountFee: marketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue.String(),
AmountValue: marketplaceMerchantsFundExchangeMarketplaceMerchantsNumsValue.String(),
AmountFee: "",
BeforePrice: resp.BeforePrice,
AfterPrice: resp.AfterPrice,
BeforePlanetTotalValue: resp.BeforePlanetTotalValue,


+ 37
- 8
rule/egg_energy/available_green_energy_settlement.go Целия файл

@@ -4,6 +4,8 @@ import (
"code.fnuoos.com/EggPlanet/egg_models.git/src/model"
"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md"
egg_system_rules "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils"
"encoding/json"
"errors"
"fmt"
"github.com/shopspring/decimal"
)
@@ -36,16 +38,43 @@ func CalcPriceIncreaseFormula(userAmountValue string, eggEnergyCoreData *model.E
}

// CalcPriceReductionFormula 计算降价公式(【用户需兑换蛋蛋能量数量*{星球价值 ÷(用户需兑换蛋蛋能量数量+现行数量} *(1 - 扣比例50% ~ 23%) = 用户获得钱)
func CalcPriceReductionFormula(userExchangeNumsValue string, eggEnergyCoreData *model.EggEnergyCoreData) (err error, resp md.CalcPriceReductionFormulaResp) {
userExchangeNums, _ := decimal.NewFromString(userExchangeNumsValue) //用户兑换绿色能量
nowEnergyTotalNums, _ := decimal.NewFromString(eggEnergyCoreData.NowEnergyTotalNums) //现行数量
planetTotalValue, _ := decimal.NewFromString(eggEnergyCoreData.PlanetTotalValue) //星球价值
afterPrice := planetTotalValue.Div(userExchangeNums.Add(nowEnergyTotalNums)) //降价后的价格
greenEnergyValues := userExchangeNums.Mul(afterPrice) //用户获得的钱
afterEnergyTotalNumsValue := nowEnergyTotalNums.Sub(userExchangeNums) //变更后-现行数量
func CalcPriceReductionFormula(userExchangeNumsValue string, eggEnergyCoreData *model.EggEnergyCoreData, levelId string, eggEnergyBasicSetting model.EggEnergyBasicSetting) (err error, resp md.CalcPriceReductionFormulaResp) {
exchangeAccountBalanceFee := decimal.NewFromInt(0) //兑换手续费
userExchangeNums, _ := decimal.NewFromString(userExchangeNumsValue) //用户兑换绿色能量
if levelId != "" {
var vipEquitySetting []*md.VipEquitySettingStruct
err = json.Unmarshal([]byte(eggEnergyBasicSetting.VipEquitySetting), &vipEquitySetting)
if err != nil {
fmt.Println("err:::::", err)
return
}
var exchangeAccountBalanceFeeValue string
for _, v := range vipEquitySetting {
if v.VipLevelId == levelId {
exchangeAccountBalanceFeeValue = v.ExchangeAccountBalanceFee
}
if exchangeAccountBalanceFeeValue == "" {
err = errors.New("未查询到当前会员等级兑换余额手续费")
return
}
exchangeAccountBalanceFee, _ = decimal.NewFromString(exchangeAccountBalanceFeeValue) //兑换手续费
}
}

decimalRate := decimal.NewFromInt(100) //百分比
nowEnergyTotalNums, _ := decimal.NewFromString(eggEnergyCoreData.NowEnergyTotalNums) //现行数量
planetTotalValue, _ := decimal.NewFromString(eggEnergyCoreData.PlanetTotalValue) //星球价值
afterPrice := planetTotalValue.Div(userExchangeNums.Add(nowEnergyTotalNums)).Truncate(16) //降价后的价格

greenEnergyValues := userExchangeNums.Mul(afterPrice) //能量价值
greenEnergyFeeValues := greenEnergyValues.Mul(exchangeAccountBalanceFee.Div(decimalRate)) //能量个数扣除手续费价值
resp.GetEggEnergyAmount = greenEnergyValues.Sub(greenEnergyFeeValues).Truncate(8).String() //用户实际得到的钱
amountFee := userExchangeNums.Mul(exchangeAccountBalanceFee.Div(decimalRate)) //能量手续费
resp.AmountFee = amountFee.String()

afterEnergyTotalNumsValue := nowEnergyTotalNums.Sub(userExchangeNums.Sub(amountFee)) //变更后-现行数量
afterPlanetTotalValue := afterEnergyTotalNumsValue.Mul(afterPrice) //变更后-星球价值

resp.GetEggEnergyAmount = greenEnergyValues.Truncate(16).String()
resp.BeforePrice = eggEnergyCoreData.NowPrice
resp.AfterPrice = afterPrice.String()
resp.BeforePlanetTotalValue = eggEnergyCoreData.PlanetTotalValue


+ 7
- 7
rule/egg_energy/deal_available_green_energy_points.go Целия файл

@@ -130,8 +130,8 @@ func DealAvailableEggEnergyCoin(session *xorm.Session, kind int, eggEnergyCoreDa

destructionQuantityNums, _ := decimal.NewFromString(eggEnergyCoreData.DestructionQuantityNums) //销毁数量
destructionQuantity, _ := decimal.NewFromString(destructionSetting.DestructionQuantity)
eggEnergyAvailableEnergyFlow.BeforeStarLevelDividendsValues = eggEnergyCoreData.DestructionQuantityNums
eggEnergyAvailableEnergyFlow.AfterStarLevelDividendsValues = destructionQuantityNums.Add(amountFeeValue.Mul(destructionQuantity.Div(decimalRate))).RoundFloor(8).String()
eggEnergyAvailableEnergyFlow.BeforeDestructionQuantityValues = eggEnergyCoreData.DestructionQuantityNums
eggEnergyAvailableEnergyFlow.AfterDestructionQuantityValues = destructionQuantityNums.Add(amountFeeValue.Mul(destructionQuantity.Div(decimalRate))).RoundFloor(8).String()

//TODO::新增 / 更新 egg_star_level_dividends_records 记录
eggStarLevelDividendsRecordsDb := implement.NewEggStarLevelDividendsRecordsDb(session.Engine())
@@ -219,15 +219,15 @@ func DealAvailableEggEnergyCoin(session *xorm.Session, kind int, eggEnergyCoreDa
eggEnergyAvailableEnergyFlow.AfterDestructionQuantityValues = eggEnergyCoreData.DestructionQuantityNums
break
case int(enum.MarketplaceMerchantNumsAutoExchangeMarketplaceMerchantFunds): //市商数量自动兑换市商资金
amountFeeValue, _ := decimal.NewFromString(req.AmountFee) //消耗的蛋蛋能量
amountValueValue, _ := decimal.NewFromString(req.AmountValue) //得到的蛋蛋能量价值

marketplaceMerchantNums, _ := decimal.NewFromString(eggEnergyCoreData.MarketplaceMerchantNums) //市商数量
eggEnergyAvailableEnergyFlow.BeforeMarketplaceMerchantValues = eggEnergyCoreData.MarketplaceMerchantNums
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantValues = marketplaceMerchantNums.Sub(amountFeeValue).RoundFloor(8).String()
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantValues = marketplaceMerchantNums.Sub(amountValue).RoundFloor(8).String()

marketplaceMerchantFunds, _ := decimal.NewFromString(eggEnergyCoreData.MarketplaceMerchantFunds) //市商资金
eggEnergyAvailableEnergyFlow.BeforeMarketplaceMerchantFundValues = eggEnergyCoreData.MarketplaceMerchantFunds
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantFundValues = marketplaceMerchantFunds.Add(amountValue).RoundFloor(8).String()
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantFundValues = marketplaceMerchantFunds.Add(amountValueValue).RoundFloor(8).String()

eggEnergyAvailableEnergyFlow.BeforeDevelopmentCommitteeValues = eggEnergyCoreData.DevelopmentCommittee //发展委员会
eggEnergyAvailableEnergyFlow.AfterDevelopmentCommitteeValues = eggEnergyCoreData.DevelopmentCommittee
@@ -241,7 +241,7 @@ func DealAvailableEggEnergyCoin(session *xorm.Session, kind int, eggEnergyCoreDa
eggEnergyAvailableEnergyFlow.AfterDestructionQuantityValues = eggEnergyCoreData.DestructionQuantityNums
break
case int(enum.MarketplaceMerchantFundsAutoExchangeMarketplaceMerchantNums): //市商资金自动兑换市商数量
amountFeeValue, _ := decimal.NewFromString(req.AmountFee) //消耗的资金
amountValueValue, _ := decimal.NewFromString(req.AmountValue) //消耗的资金

marketplaceMerchantNums, _ := decimal.NewFromString(eggEnergyCoreData.MarketplaceMerchantNums) //市商数量
eggEnergyAvailableEnergyFlow.BeforeMarketplaceMerchantValues = eggEnergyCoreData.MarketplaceMerchantNums
@@ -249,7 +249,7 @@ func DealAvailableEggEnergyCoin(session *xorm.Session, kind int, eggEnergyCoreDa

marketplaceMerchantFunds, _ := decimal.NewFromString(eggEnergyCoreData.MarketplaceMerchantFunds) //市商资金
eggEnergyAvailableEnergyFlow.BeforeMarketplaceMerchantFundValues = eggEnergyCoreData.MarketplaceMerchantFunds
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantFundValues = marketplaceMerchantFunds.Sub(amountFeeValue).RoundFloor(8).String()
eggEnergyAvailableEnergyFlow.AfterMarketplaceMerchantFundValues = marketplaceMerchantFunds.Sub(amountValueValue).RoundFloor(8).String()

eggEnergyAvailableEnergyFlow.BeforeDevelopmentCommitteeValues = eggEnergyCoreData.DevelopmentCommittee //发展委员会
eggEnergyAvailableEnergyFlow.AfterDevelopmentCommitteeValues = eggEnergyCoreData.DevelopmentCommittee


+ 2
- 0
rule/egg_energy/md/egg_energy_green_energy.go Целия файл

@@ -88,6 +88,7 @@ type CalcPriceIncreaseFormulaResp struct {

type CalcPriceReductionFormulaResp struct {
GetEggEnergyAmount string `json:"get_egg_energy_amount"` //得到蛋蛋能量的钱`
AmountFee string `json:"amount_fee"` //手续费
BeforePrice string `json:"before_price"` //变更前-价格
AfterPrice string `json:"after_price"` //变更后-价格
BeforePlanetTotalValue string `json:"before_planet_total_value"` //变更前-星球总价值
@@ -98,6 +99,7 @@ type CalcPriceReductionFormulaResp struct {

type DealAvailableEggEnergyCoinReq struct {
Amount string `json:"amount"` //变更数量
AmountValue string `json:"amount_value"` //变更数量-价值
AmountFee string `json:"amount_fee"` //手续费
BeforePrice string `json:"before_price"` //变更前-价格
AfterPrice string `json:"after_price"` //变更后-价格


Зареждане…
Отказ
Запис