Eric0718 2 năm trước cách đây
mục cha
commit
dfe7fda20e
6 tập tin đã thay đổi với 55 bổ sung65 xóa
  1. 21 13
      blockchain/contract.go
  2. 7 3
      blockchain/scan.go
  3. 16 35
      controller/controller.go
  4. 1 0
      dbUtil/dbCoon.go
  5. BIN
      ktogame
  6. 10 14
      models/tables.go

+ 21 - 13
blockchain/contract.go

@@ -115,29 +115,37 @@ func participate(engine *xorm.Engine, user, inviter, hash string, amount float64
 	return nil
 }
 
-func checkClaim(engine *xorm.Engine, addr, hash, sign string, amount float64, height int64) error {
-	logs.Info("checkClaim :", addr, hash, sign, amount)
+func checkClaim(engine *xorm.Engine, addr, hash string, height int64, amount float64, sign string) error {
+	logs.Info("checkClaim pdate record========:", addr, hash)
 	var tx models.ClaimedTxs
 	ok, err := engine.Id(hash).Get(&tx)
 	if err != nil {
+		logs.Error(err)
 		return err
 	}
 	if !ok {
-		//set record
-		logs.Info("set record========")
-		claimTx := models.ClaimedTxs{Addr: addr, Amount: amount, BlockHeight: height, Hash: hash,
-			Signature: sign, State: 1, Droped: 0, CreateTime: util.NowTimeString()}
-		_, err := engine.Insert(&claimTx)
-		if err != nil {
-			return err
+		logs.Info("set new record,hash:%v", hash)
+		itx := models.ClaimedTxs{
+			Addr:        addr,
+			BlockHeight: height,
+			Hash:        hash,
+			Signature:   sign,
+			Amount:      amount,
+			State:       1,
+			Droped:      0,
+			CreateTime:  util.NowTimeString(),
 		}
-	} else {
-		logs.Info("update record========")
-		tx.State = 1
-		_, err = engine.ID(hash).Cols("hash").Update(&tx)
+		_, err := engine.Insert(&itx)
 		if err != nil {
 			return err
 		}
+		return nil
+	}
+	tx.State = 1
+	tx.BlockHeight = height
+	_, err = engine.ID(hash).Cols("state,block_height").Update(&tx)
+	if err != nil {
+		return err
 	}
 	return nil
 }

+ 7 - 3
blockchain/scan.go

@@ -61,7 +61,6 @@ func scanBlock() {
 		return
 	}
 	currentBlock = uint64(bi.BlockNumber) + 1
-	//currentBlock =62203394
 	for {
 		time.Sleep(time.Second * 3)
 
@@ -71,7 +70,10 @@ func scanBlock() {
 			continue
 		}
 		logs.Info("currentBlock:", currentBlock, "chainblock:", res.MaxHeight)
-		if res.MaxHeight < currentBlock {
+		if res.MaxHeight+1 == currentBlock {
+			continue
+		}
+		if res.MaxHeight+1 < currentBlock {
 			currentBlock = res.MaxHeight
 		}
 
@@ -148,7 +150,8 @@ func scanBlock() {
 							bts = append(bts, b)
 						}
 
-						err = checkClaim(dbUtil.Engine, evt.User.String(), v.HashToString(), hex.EncodeToString(bts), float64(evt.Amount.Uint64()/controller.Decimals), int64(v.BlockNum))
+						err = checkClaim(dbUtil.Engine, evt.User.String(), "0x"+v.HashToString(), int64(v.BlockNum),
+							float64(evt.Amount.Uint64())/controller.Decimals, hex.EncodeToString(bts))
 						if err != nil {
 							logs.Error(err)
 							ERR = err
@@ -190,6 +193,7 @@ func confirmClaimedTxs() {
 		}
 		if len(txs) > 0 {
 			mark = txs[len(txs)-1].Id
+			logs.Info("confirmClaimedTxs2 mark= %v\n", mark)
 		}
 		for _, t := range txs {
 			go func(tx models.ClaimedTxs) {

+ 16 - 35
controller/controller.go

@@ -92,34 +92,31 @@ 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)
 }
 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 {
@@ -131,7 +128,7 @@ func (uc *UserController) SetClaimHash() {
 	ua.AvailableClaim = 0
 	_, err = uc.engine.ID(addr).Cols("total_claimed,available_claim").Update(&ua)
 	if err != nil {
-		ErrResponse(uc.Controller, "-1")
+		ErrResponse(uc.Controller, err)
 		return
 	}
 
@@ -139,7 +136,7 @@ func (uc *UserController) SetClaimHash() {
 		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 +145,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 +165,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
@@ -201,16 +191,7 @@ 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
 }
@@ -218,11 +199,11 @@ func (uc *UserController) TotalUsers() {
 	var us models.UserInfo
 	ok, err := uc.engine.Desc("id").Get(&us)
 	if err != nil {
-		TxObjectResponse(uc.Controller, err)
+		ErrResponse(uc.Controller, err)
 		return
 	}
 	if !ok {
-		TxObjectResponse(uc.Controller, us)
+		ErrResponse(uc.Controller, us)
 		return
 	}
 	TxObjectResponse(uc.Controller, us)

+ 1 - 0
dbUtil/dbCoon.go

@@ -26,4 +26,5 @@ func init() {
 	}
 	Engine = e
 	fmt.Println("dbUtil init")
+	//Engine.ShowSQL(true)
 }

BIN
ktogame


+ 10 - 14
models/tables.go

@@ -5,10 +5,10 @@ type UserInfo struct {
 	Addr              string  `xorm:"pk"` //主键
 	Direct            string  //我的上级
 	DirectNumber      int     //直推总人数
-	IndirectRewards   float64 `xorm:"Decimal"`
+	IndirectRewards   float64 `xorm:"Decimal"` //间推奖励
 	Indirect          string  //上上级
 	IndirectNumber    int     //间推总人数
-	DirectRewards     float64 `xorm:"Decimal"`
+	DirectRewards     float64 `xorm:"Decimal"` //直推奖励
 	Superiors         string  //所有上级
 	AvailableClaim    float64 `xorm:"Decimal"` //可领取收益
 	TotalClaimed      float64 `xorm:"Decimal"` //总共已领取的收益
@@ -16,28 +16,24 @@ type UserInfo struct {
 	TotalReinputed    float64 `xorm:"Decimal"` //总复投
 	ParticipateAmount float64 `xorm:"Decimal"` //总参与
 
-	State      int //身份   0 1正式   2  社区
+	State      int //身份   0 普通 	 1 正式   2 社区
 	CreateTime string
 	Hash       string
 }
 
-// TeamCultivate float64 `xorm:"Decimal"`
-// 	CommunityGift float64 `xorm:"Decimal"`
-// 	CommunityNode float64 `xorm:"Decimal"`
-
 type Performance struct {
-	Addr               string  `xorm:"pk"` //主键
-	TotalPerformance   float64 `xorm:"Decimal"`
+	Addr               string  `xorm:"pk"`      //主键
+	TotalPerformance   float64 `xorm:"Decimal"` //团队总业绩
 	PerformanceLevel   int
-	PerformanceRewards float64 `xorm:"Decimal"`
+	PerformanceRewards float64 `xorm:"Decimal"` //团队收益
 	Recorded           int
 
 	MarketNum     int
 	MarketLevel   int
-	MarketRewards float64 `xorm:"Decimal"`
+	MarketRewards float64 `xorm:"Decimal"` //市场收益
 
-	CommunityGift float64 `xorm:"Decimal"`
-	CommunityNode float64 `xorm:"Decimal"`
+	CommunityGift float64 `xorm:"Decimal"` //团队赠送收益
+	CommunityNode float64 `xorm:"Decimal"` //社区节点收益
 }
 
 type BlockInfo struct {
@@ -58,7 +54,7 @@ type ClaimedTxs struct {
 	Addr        string
 	Amount      float64 `xorm:"Decimal"`
 	BlockHeight int64
-	Hash        string //主键
+	Hash        string `xorm:"pk"` //主键
 	Signature   string
 	CreateTime  string
 	State       int