github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/game/internal/user_circle.go (about)

     1  package internal
     2  
     3  import (
     4  	"encoding/json"
     5  	"game/circle"
     6  	"msg"
     7  
     8  	"github.com/name5566/leaf/log"
     9  )
    10  
    11  func (user *User) requestCircleID() {
    12  	if user.isRobot() || user.baseData.userData.CircleID > 0 {
    13  		return
    14  	}
    15  	temp := &struct {
    16  		Code     string
    17  		CircleID int `json:"data"`
    18  	}{}
    19  	skeleton.Go(func() {
    20  		req := circle.NewCircleLoginRequest(&circle.CircleUserInfo{
    21  			UnionID:    user.baseData.userData.UnionID,
    22  			Nickname:   user.baseData.userData.Nickname,
    23  			Headimgurl: user.baseData.userData.Headimgurl,
    24  			Sex:        user.baseData.userData.Sex,
    25  		})
    26  		data := circle.DoRequest(req.GatewayUrl, req.Method, req.Params)
    27  		// {"id":null,"code":"0","model":null,"message":"ok","data":174}
    28  		// log.Debug("%s", data)
    29  		err := json.Unmarshal(data, temp)
    30  		if err != nil || temp.Code != "0" {
    31  			temp = nil
    32  			return
    33  		}
    34  	}, func() {
    35  		if temp != nil {
    36  			user.baseData.userData.CircleID = temp.CircleID
    37  		}
    38  	})
    39  }
    40  
    41  func (user *User) requestCircleLoginCode(successCb func(loginCode string), failCb func()) {
    42  	if user.baseData.userData.CircleID < 1 {
    43  		if failCb != nil {
    44  			failCb()
    45  		}
    46  		return
    47  	}
    48  	temp := &struct {
    49  		Code      string
    50  		LoginCode string `json:"data"`
    51  	}{}
    52  	skeleton.Go(func() {
    53  		req := circle.NewCircleAuthorize(user.baseData.userData.CircleID)
    54  		data := circle.DoRequest(req.GatewayUrl, req.Method, req.Params)
    55  		// {"id":null,"code":"0","model":null,"message":"ok","data":"1730c016-01c7-4e15-85b8-986f5d812dd9"}
    56  		// log.Debug("%s", data)
    57  		err := json.Unmarshal(data, temp)
    58  		if err != nil || temp.Code != "0" {
    59  			temp = nil
    60  			return
    61  		}
    62  	}, func() {
    63  		if temp == nil {
    64  			if failCb != nil {
    65  				failCb()
    66  			}
    67  		} else {
    68  			if successCb != nil {
    69  				successCb(temp.LoginCode)
    70  			}
    71  		}
    72  	})
    73  }
    74  
    75  func (user *User) requestCheckCircleUserBlack() {
    76  	if user.isRobot() || user.baseData.userData.CircleID < 0 {
    77  		return
    78  	}
    79  	temp := &struct {
    80  		Code  string
    81  		Black bool `json:"data"`
    82  	}{}
    83  	skeleton.Go(func() {
    84  		req := circle.NewCircleCheckBlackRequest(user.baseData.userData.CircleID)
    85  		data := circle.DoRequest(req.GatewayUrl, req.Method, req.Params)
    86  		// {"id":null,"code":"0","model":null,"message":"ok","data":false}
    87  		// log.Debug("%s", data)
    88  		json.Unmarshal(data, temp)
    89  	}, func() {
    90  		if temp.Code == "0" && temp.Black {
    91  			user.baseData.userData.Role = roleBlack
    92  			user.WriteMsg(&msg.S2C_Close{
    93  				Error:        msg.S2C_Close_RoleBlack,
    94  				WeChatNumber: landlordConfigData.WeChatNumber,
    95  			})
    96  			user.Close()
    97  		}
    98  	})
    99  }
   100  
   101  // 请求生成一个圈圈红包
   102  func (user *User) requestCircleRedPacket(redPacket float64, desc string, successCb func(), failCb func()) {
   103  	temp := &struct {
   104  		Code string
   105  		Data string
   106  	}{}
   107  	skeleton.Go(func() {
   108  		req := circle.NewCircleCreateRedPacketRequest(&circle.RedPacketInfo{
   109  			UserID: user.baseData.userData.CircleID,
   110  			Sum:    redPacket,
   111  			Desc:   desc,
   112  		})
   113  		data := circle.DoRequest(req.GatewayUrl, req.Method, req.Params)
   114  		// {"id":null,"code":"0","model":null,"message":"ok","data":"SUCCESS"}
   115  		// log.Debug("%s", data)
   116  		err := json.Unmarshal(data, temp)
   117  		if err != nil || temp.Code != "0" || temp.Data != "SUCCESS" {
   118  			log.Error("%s", data)
   119  			temp = nil
   120  			return
   121  		}
   122  	}, func() {
   123  		if temp == nil {
   124  			if failCb != nil {
   125  				failCb()
   126  			}
   127  		} else {
   128  			if successCb != nil {
   129  				successCb()
   130  			}
   131  		}
   132  	})
   133  }