package hero_test import ( "context" "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego" "go_dreamfactory/lego/base/rpcx" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules/equipment" "go_dreamfactory/modules/hero" "go_dreamfactory/modules/items" "go_dreamfactory/modules/task" "go_dreamfactory/modules/user" "go_dreamfactory/pb" "go_dreamfactory/services" "go_dreamfactory/sys/configure" "go_dreamfactory/sys/db" "go_dreamfactory/utils" "reflect" "strings" "testing" "time" "github.com/golang/protobuf/ptypes" "go.mongodb.org/mongo-driver/bson/primitive" flag "github.com/spf13/pflag" ) var service core.IService var s_gateComp comm.ISC_GateRouteComp = services.NewGateRouteComp() var module = new(hero.Hero) type TestService struct { rpcx.RPCXService } func newService(ops ...rpcx.Option) core.IService { s := new(TestService) s.Configure(ops...) return s } //初始化相关系统 func (this *TestService) InitSys() { this.RPCXService.InitSys() if err := db.OnInit(this.GetSettings().Sys["db"]); err != nil { panic(fmt.Sprintf("init sys.db err: %s", err.Error())) } else { log.Infof("init sys.db success!") } if err := configure.OnInit(this.GetSettings().Sys["configure"], configure.SetConfigPath("F:/work/go/go_dreamfactory/bin/json")); err != nil { panic(fmt.Sprintf("init sys.configure err: %s", err.Error())) } else { log.Infof("init sys.configure success!") } } func GetMonthStartEnd() (int64, int64) { t := configure.Now() monthStartDay := t.AddDate(0, 0, -t.Day()+1) monthStartTime := time.Date(monthStartDay.Year(), monthStartDay.Month(), monthStartDay.Day(), 0, 0, 0, 0, t.Location()) monthEndDay := monthStartTime.AddDate(0, 1, -1) monthEndTime := time.Date(monthEndDay.Year(), monthEndDay.Month(), monthEndDay.Day(), 23, 59, 59, 0, t.Location()) _d1 := monthStartTime.Unix() _d2 := monthEndTime.Unix() fmt.Printf("%d,%d", _d1, _d2) return _d1, _d2 } func Test_Main(t *testing.T) { var list []int32 var list2 []int32 list = []int32{1, 2, 3, 4, 5, 6, 7, 8, 9} list2 = []int32{4, 8, 9} for _, v := range list2 { for i, v1 := range list { if v == v1 { // 找到了 就删除 //conf.PrivilegeId = append(conf.PrivilegeId, v1) list = append(list[:i], list[i+1:]...) break } } } ids := utils.RandomNumbers(0, 10, 5) for _, v := range ids { fmt.Printf("%d", v) } oldHero := new(pb.DBHero) oldHero.Lv = 2 new := copyPoint(oldHero) fmt.Printf("%v", new) oldHero.Lv = 8 currentTime := time.Unix(1637420154, 0) startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location()) fmt.Print(startTime.Unix()) service = newService( rpcx.SetConfPath("../../bin/conf/worker_1.yaml"), ) service.OnInstallComp( //装备组件 s_gateComp, //此服务需要接受用户的消息 需要装备网关组件 ) go func() { lego.Run(service, //运行模块 module, items.NewModule(), user.NewModule(), equipment.NewModule(), task.NewModule(), ) }() time.Sleep(time.Second * 2) } func GetMap() map[int32]int32 { return nil } func copyPoint(m *pb.DBHero) *pb.DBHero { vt := reflect.TypeOf(m).Elem() fmt.Println(vt) newoby := reflect.New(vt) newoby.Elem().Set(reflect.ValueOf(m).Elem()) newoby.Interface().(*pb.DBHero).Lv = 1111 return newoby.Interface().(*pb.DBHero) } func CloneNewHero(hero *pb.DBHero) (newHero *pb.DBHero) { newHero = new(pb.DBHero) *newHero = *hero newHero.Block = true newHero.Lv = 100 newHero.Id = primitive.NewObjectID().Hex() return } func wordSepNormalizeFunc(f *flag.FlagSet, name string) flag.NormalizedName { from := []string{"-", "_"} to := "." for _, sep := range from { name = strings.Replace(name, sep, to, -1) } return flag.NormalizedName(name) } func Test_Modules(t *testing.T) { var iMax int64 iMax = 1 << 32 //fmt.Printf("%d", iMax) fmt.Printf("%d", (iMax << 30)) var cliName = flag.StringP("name", "n", "nick", "Input Your Name") var cliAge = flag.IntP("age", "a", 22, "Input Your Age") var cliGender = flag.StringP("gender", "g", "male", "Input Your Gender") var cliOK = flag.BoolP("ok", "o", false, "Input Are You OK") var cliDes = flag.StringP("des-detail", "d", "", "Input Description") var cliOldFlag = flag.StringP("badflag", "b", "just for test", "Input badflag") flag.CommandLine.SetNormalizeFunc(wordSepNormalizeFunc) // 为 age 参数设置 NoOptDefVal 默认值,通过简便的方式为参数设置默认值之外的值 flag.Lookup("age").NoOptDefVal = "25" // 把 badflag 参数标记为即将废弃的,请用户使用 des-detail 参数 flag.CommandLine.MarkDeprecated("badflag", "please use --des-detail instead") // 把 badflag 参数的 shorthand 标记为即将废弃的,请用户使用 des-detail 的 shorthand 参数 flag.CommandLine.MarkShorthandDeprecated("badflag", "please use -d instead") // 在帮助文档中隐藏参数 gender flag.CommandLine.MarkHidden("badflag") // 把用户传递的命令行参数解析为对应变量的值 flag.Parse() fmt.Println("name=", *cliName) fmt.Println("age=", *cliAge) fmt.Println("gender=", *cliGender) fmt.Println("ok=", *cliOK) fmt.Println("des=", *cliDes) fmt.Println("cliOldFlag=", *cliOldFlag) oldHero := new(pb.DBHero) new := copyPoint(oldHero) fmt.Printf("%v", new) data, _ := ptypes.MarshalAny(&pb.HeroListReq{}) reply := &pb.RPCMessageReply{} s_gateComp.ReceiveMsg(context.Background(), &pb.AgentMessage{UserId: "0_62c79d66acc7aa239b07c21e", MainType: "hero", SubType: "list", Message: data}, reply) log.Debugf("reply:%v", reply) }