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 f08bfd5..ddcf1ca 100644 --- a/rule/one_circles/one_circles_available_green_energy_settlement.go +++ b/rule/one_circles/one_circles_available_green_energy_settlement.go @@ -4,9 +4,11 @@ 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/db/model" 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" "encoding/json" "errors" "github.com/shopspring/decimal" + "time" "xorm.io/xorm" ) @@ -107,23 +109,44 @@ func NewCalcPriceReductionFormula(userExchangeNumsValue string, oneCirclesGreenE } // JudgeUserIsCanBuyWelfareOrders 判断用户是否可以购买福利订单 -func JudgeUserIsCanBuyWelfareOrders(engine *xorm.Engine, uid int) (err error, values, nowPriceValue, afterPriceValue string) { +func JudgeUserIsCanBuyWelfareOrders(engine *xorm.Engine, uid int) (err error) { + now := time.Now() //1、查找 `one_circles_green_energy_basic_setting` 基础设置 - //oneCirclesGreenEnergyBasicSetting, err := db.OneCirclesGreenEnergyBasicSettingGetOneByParams(engine, map[string]interface{}{ - // "key": "is_open", - // "value": 1, - //}) - //if err != nil { - // return - //} - //userAmount, _ := decimal.NewFromString(userAmountValue) //用户资金 - //nowPrice, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.NowPrice) //当前价格 - //originalQuantityNums, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.OriginalQuantityNums) //原始数量 - //originalQuantityFunds, _ := decimal.NewFromString(oneCirclesGreenEnergyBasicSetting.OriginalFunds) //原始资金 - //afterPrice := (userAmount.Add(originalQuantityFunds)).Div(originalQuantityNums).Truncate(8) //涨价后的价格 - // - //values = userAmount.Div(afterPrice).Truncate(8).String() //用户得到绿色能量个数 - //nowPriceValue = nowPrice.String() - //afterPriceValue = afterPrice.String() + oneCirclesGreenEnergyBasicSetting, err := db.OneCirclesGreenEnergyBasicSettingGetOneByParams(engine, map[string]interface{}{ + "key": "is_open", + "value": 1, + }) + if err != nil { + return + } + var welfareOrdersLimit *md2.WelfareOrdersLimit + err = json.Unmarshal([]byte(oneCirclesGreenEnergyBasicSetting.WelfareOrdersLimit), &welfareOrdersLimit) + if err != nil { + return + } + + //2、计算当前用户连续日活 + startDate := now.AddDate(0, 0, -7).Format("2006-01-02") + endDate := now.Format("2006-01-02") + err, days, isContinuousDailyActivity := CalcUserContinuousDailyActivityDays(engine, "", uid, startDate, endDate) + if err != nil { + return + } + if !isContinuousDailyActivity { + err = errors.New("未连续日活不可购买") + } + if days < zhios_order_relate_utils.StrToInt(welfareOrdersLimit.ContinuousDailyActivityNums) { + err = errors.New("连续日活天数不够") + } + + //3、计算直推人数 + userRelates, err := db.DbsUserRelateByParentUid(engine, uid, 1) + if err != nil { + return + } + if len(*userRelates) < zhios_order_relate_utils.StrToInt(welfareOrdersLimit.DirectPushLimit.DirectPushUserNums) { + err = errors.New("直推人数不够") + } + return }