activity.go 1.82 KB
Newer Older
chenweijian's avatar
chenweijian committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
package rpc

import (
	"encoding/json"
	"errors"
	"fmt"
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/mylogrus"
	"git.hilo.cn/hilo-common/resource/consul"
	"git.hilo.cn/hilo-common/resource/mysql"
	"git.hilo.cn/hilo-common/utils"
	"math/rand"
)

const (
	defaultActivityConsulName   = "hiloActivity"
	defaultActivityServerScheme = "http"
	defaultActivityServerAddr   = "127.0.0.1:9010" // 默认内网转发,本地回环
)

var activityServerHost = []string{defaultActivityServerAddr}

func init() {
	go func() {
hujiebin's avatar
hujiebin committed
25 26 27
		consul.RegisterWatcher(defaultActivityConsulName, func(addr []string) {
			if len(addr) > 0 {
				activityServerHost = addr
chenweijian's avatar
chenweijian committed
28
			}
hujiebin's avatar
hujiebin committed
29
		})
chenweijian's avatar
chenweijian committed
30 31 32 33
	}()
}

// 活动积分增加 fType: 1.上麦 2.ludo游戏完成 3.slots游戏完成 4.fruit游戏完成 5.特定座驾进入房间
chenweijian's avatar
chenweijian committed
34
func AddActPoint(model *domain.Model, userId mysql.ID, fType mysql.Type, roomId int64) error {
chenweijian's avatar
chenweijian committed
35 36 37 38 39 40 41 42 43
	defer utils.CheckGoPanic()
	type Response struct {
		Code    int    `json:"code"`
		Message string `json:"message"`
	}
	_url := fmt.Sprintf("%v://%v/inner/act/addPoint", defaultActivityServerScheme, getActivityHost())
	resp, err := HttpPostForm(model, _url, nil, map[string]string{
		"userId": fmt.Sprintf("%d", userId),
		"fType":  fmt.Sprintf("%d", fType),
chenweijian's avatar
chenweijian committed
44
		"roomId": fmt.Sprintf("%d", roomId),
chenweijian's avatar
chenweijian committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
	})
	if err != nil {
		model.Log.Errorf("AddActPoint fail:%v", err)
		return err
	}
	response := new(Response)
	if err = json.Unmarshal(resp, response); err != nil {
		model.Log.Errorf("AddActPoint json fail:%v", err)
		return err
	}
	if response.Code != 200 {
		model.Log.Errorf("AddActPoint fail:%v", *response)
		return errors.New(response.Message)
	}
	return nil
}

func getActivityHost() string {
	l := len(activityServerHost)
	r := rand.Intn(l) // 随机一个
	mylogrus.MyLog.Infof("getHostActivity:%v---%v", r, activityServerHost[r])
	return activityServerHost[r]
}