|
@@ -7,6 +7,8 @@ import (
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
|
+ "github.com/astaxie/beego/logs"
|
|
|
+
|
|
|
"github.com/shopspring/decimal"
|
|
|
)
|
|
|
|
|
@@ -19,33 +21,20 @@ func (uc *UserController) Reinput() {
|
|
|
return
|
|
|
}
|
|
|
if !ok {
|
|
|
- ErrResponse(uc.Controller, "db get failed!")
|
|
|
- return
|
|
|
- }
|
|
|
- if ui.AvailableReinput < ModBase {
|
|
|
- ErrResponse(uc.Controller, "no available reinput balance")
|
|
|
+ ErrResponse(uc.Controller, "user not exist!")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
///update availableReinput by left in db
|
|
|
///update totalReinput
|
|
|
- left := uint64(ui.AvailableReinput) % ModBase
|
|
|
- reinputValue := ui.AvailableReinput - float64(left)
|
|
|
- ui.AvailableReinput = float64(left)
|
|
|
- ui.TotalReinputed += reinputValue
|
|
|
- if ui.TotalReinputed >= CommunityLimit {
|
|
|
- ui.State = CommunityUsers
|
|
|
- }
|
|
|
- _, err = uc.engine.ID(user).Cols("available_reinput").Update(&ui)
|
|
|
- if err != nil {
|
|
|
- ErrResponse(uc.Controller, err)
|
|
|
- return
|
|
|
- }
|
|
|
- _, err = uc.engine.ID(user).Cols("total_reinput").Update(&ui)
|
|
|
- if err != nil {
|
|
|
- ErrResponse(uc.Controller, err)
|
|
|
+ if ui.AvailableReinput < ModBase {
|
|
|
+ ErrResponse(uc.Controller, "no available reinput balance")
|
|
|
return
|
|
|
}
|
|
|
+ num := uint64(ui.AvailableReinput) / uint64(ModBase)
|
|
|
+
|
|
|
+ reinputValue := float64(num * ModBase)
|
|
|
+ logs.Info("check Reinput user:%v,num:%v available:%v,reinputValue=======%v", user, num, ui.AvailableReinput, reinputValue)
|
|
|
|
|
|
///update Recommendation Rewards
|
|
|
///update direct recommend rewards
|
|
@@ -53,6 +42,7 @@ func (uc *UserController) Reinput() {
|
|
|
if ui.Direct != "" {
|
|
|
err := UpdateAvailableRewards(rewards, ui.Direct, false, false)
|
|
|
if err != nil {
|
|
|
+ logs.Error("check err=======", err)
|
|
|
ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
@@ -61,21 +51,38 @@ func (uc *UserController) Reinput() {
|
|
|
if ui.Indirect != "" {
|
|
|
err := UpdateAvailableRewards(rewards, ui.Indirect, false, false)
|
|
|
if err != nil {
|
|
|
+ logs.Error("check err=======", err)
|
|
|
ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
err = UpdateRewardsPool(uc.engine, reinputValue)
|
|
|
if err != nil {
|
|
|
+ logs.Error("check err=======", err)
|
|
|
ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
err = UpdateSuperiorsPerformance(uc.engine, ui.Superiors, reinputValue)
|
|
|
if err != nil {
|
|
|
+ logs.Error("check err=======", err)
|
|
|
+ ErrResponse(uc.Controller, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ ui.AvailableReinput -= reinputValue
|
|
|
+ ui.TotalReinputed += reinputValue
|
|
|
+
|
|
|
+ if ui.TotalReinputed >= CommunityLimit {
|
|
|
+ ui.State = CommunityUsers
|
|
|
+ }
|
|
|
+ _, err = uc.engine.ID(user).Cols("available_reinput,total_reinputed,state").Update(&ui)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error("check err=======", err)
|
|
|
ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
TxObjectResponse(uc.Controller, "ok")
|
|
|
+ return
|
|
|
}
|
|
|
func (uc *UserController) GetClaimSignature() {
|
|
|
addr := uc.GetString("addr")
|
|
@@ -92,34 +99,32 @@ func (uc *UserController) GetClaimSignature() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- format := time.Now().AddDate(0, 0, 1).Format("2006-01-02")
|
|
|
- te, _ := time.ParseInLocation("2006-01-02", format, time.Local)
|
|
|
+ // format := time.Now().AddDate(0, 0, 1).Format("2006-01-02")
|
|
|
+ // te, _ := time.ParseInLocation("2006-01-02", format, time.Local)
|
|
|
+ i_time := time.Now().Unix() + 3600*2
|
|
|
|
|
|
pow := decimal.NewFromFloat(float64(10)).Pow(decimal.NewFromFloat(float64(18)))
|
|
|
amount := decimal.NewFromFloat(ua.AvailableClaim).Mul(pow).BigInt().String()
|
|
|
|
|
|
- out1 := util.Sign(amount, strings.ToLower(user[2:]), fmt.Sprint(te.Unix()))
|
|
|
- sign := out1 + "-" + amount + "-" + fmt.Sprint(te.Unix())
|
|
|
+ out1 := util.Sign(amount, strings.ToLower(user[2:]), fmt.Sprint(i_time))
|
|
|
+ sign := out1 + "-" + amount + "-" + fmt.Sprint(i_time)
|
|
|
code := util.EnPriCode(sign, addr[len(addr)-16:])
|
|
|
TxObjectResponse(uc.Controller, code)
|
|
|
+ return
|
|
|
}
|
|
|
func (uc *UserController) SetClaimHash() {
|
|
|
addr := uc.GetString("addr")
|
|
|
+ hash := uc.GetString("hash")
|
|
|
sign := uc.GetString("sign")
|
|
|
- hash := util.GetPri(sign, addr[len(addr)-16:])
|
|
|
- if len(hash) != 66 {
|
|
|
- TxObjectResponse(uc.Controller, "-1")
|
|
|
- return
|
|
|
- }
|
|
|
|
|
|
var ua models.UserInfo
|
|
|
ok, err := uc.engine.Id(addr).Get(&ua)
|
|
|
if err != nil {
|
|
|
- TxObjectResponse(uc.Controller, "-1")
|
|
|
+ ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
if !ok {
|
|
|
- TxObjectResponse(uc.Controller, "user not exist!")
|
|
|
+ ErrResponse(uc.Controller, "user not exist!")
|
|
|
return
|
|
|
}
|
|
|
if ua.AvailableClaim == 0 {
|
|
@@ -127,19 +132,19 @@ func (uc *UserController) SetClaimHash() {
|
|
|
return
|
|
|
}
|
|
|
amount := ua.AvailableClaim
|
|
|
- ua.TotalClaimed += ua.AvailableClaim
|
|
|
+ ua.TotalClaimed += amount
|
|
|
ua.AvailableClaim = 0
|
|
|
- _, err = uc.engine.ID(addr).Cols("total_claimed,available_claim").Update(&ua)
|
|
|
+ _, err = uc.engine.ID(addr).Cols("available_claim,total_claimed").Update(&ua)
|
|
|
if err != nil {
|
|
|
- ErrResponse(uc.Controller, "-1")
|
|
|
+ ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ logs.Info("check SetClaimHash---------:", addr, hash, ua.AvailableClaim, ua.TotalClaimed, amount)
|
|
|
claimTx := models.ClaimedTxs{Addr: addr, Amount: amount, Hash: hash,
|
|
|
Signature: sign, State: 0, Droped: 0, CreateTime: util.NowTimeString()}
|
|
|
_, err = uc.engine.Insert(&claimTx)
|
|
|
if err != nil {
|
|
|
- ErrResponse(uc.Controller, "set claim tx info failed!")
|
|
|
+ ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
TxObjectResponse(uc.Controller, "ok")
|
|
@@ -148,15 +153,8 @@ func (uc *UserController) SetClaimHash() {
|
|
|
func (uc *UserController) GetUserInfo() {
|
|
|
user := uc.GetString("addr")
|
|
|
var us models.UserInfo
|
|
|
- ok, err := uc.engine.ID(user).Get(&us)
|
|
|
- if err != nil {
|
|
|
- TxObjectResponse(uc.Controller, err)
|
|
|
- return
|
|
|
- }
|
|
|
- if !ok {
|
|
|
- TxObjectResponse(uc.Controller, us)
|
|
|
- return
|
|
|
- }
|
|
|
+ uc.engine.Id(user).Get(&us)
|
|
|
+
|
|
|
TxObjectResponse(uc.Controller, us)
|
|
|
return
|
|
|
}
|
|
@@ -175,7 +173,7 @@ func (uc *UserController) GetTeamList() {
|
|
|
var us models.UserInfo
|
|
|
var teamList []models.UserInfo
|
|
|
|
|
|
- ok, err := uc.engine.ID(user).Get(&us)
|
|
|
+ ok, err := uc.engine.Id(user).Get(&us)
|
|
|
if err != nil {
|
|
|
TxObjectResponse(uc.Controller, err)
|
|
|
return
|
|
@@ -185,7 +183,7 @@ func (uc *UserController) GetTeamList() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- c, err := uc.engine.Where("superiors like ?", "%,"+fmt.Sprint(us.Id)).FindAndCount(&teamList)
|
|
|
+ c, err := uc.engine.Where("superiors like ?", "%,"+fmt.Sprint(us.Id)+"%").FindAndCount(&teamList)
|
|
|
if err != nil {
|
|
|
TxObjectResponse(uc.Controller, err)
|
|
|
return
|
|
@@ -201,30 +199,18 @@ func (uc *UserController) GetTeamList() {
|
|
|
func (uc *UserController) GetPerformance() {
|
|
|
user := uc.GetString("addr")
|
|
|
var per models.Performance
|
|
|
-
|
|
|
- ok, err := uc.engine.Id(user).Get(&per)
|
|
|
- if err != nil {
|
|
|
- TxObjectResponse(uc.Controller, err)
|
|
|
- return
|
|
|
- }
|
|
|
- if !ok {
|
|
|
- TxObjectResponse(uc.Controller, per)
|
|
|
- return
|
|
|
- }
|
|
|
+ uc.engine.Id(user).Get(&per)
|
|
|
TxObjectResponse(uc.Controller, per)
|
|
|
return
|
|
|
}
|
|
|
func (uc *UserController) TotalUsers() {
|
|
|
var us models.UserInfo
|
|
|
- ok, err := uc.engine.Desc("id").Get(&us)
|
|
|
+ c, err := uc.engine.Count(&us)
|
|
|
if err != nil {
|
|
|
- TxObjectResponse(uc.Controller, err)
|
|
|
- return
|
|
|
- }
|
|
|
- if !ok {
|
|
|
- TxObjectResponse(uc.Controller, us)
|
|
|
+ ErrResponse(uc.Controller, err)
|
|
|
return
|
|
|
}
|
|
|
+ us.Id = c
|
|
|
TxObjectResponse(uc.Controller, us)
|
|
|
return
|
|
|
}
|