From 8d10a9ba17d5a38e17abd9da7b4521a8661e3b78 Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Fri, 15 May 2020 13:43:40 +0800 Subject: [PATCH] 提交 --- src/HttpServer/logic/datadef.go | 5 +++++ src/HttpServer/logic/function.go | 43 +++++++++++++++++++++++++++++++++++++++---- src/HttpServer/logic/logic.go | 36 +++++++++++++++++++++++++++--------- 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 8d9fa1b..87e5009 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -127,9 +127,14 @@ type InviteWorkDesc struct { } +type InviteWorkOffDesc struct { + Uuid int `json:"uuid"` //打工者ID + +} type InviteWorksDesc struct { Invite_data []InviteWorkDesc `json:"invite_data"` + Offlinelist []InviteWorkOffDesc `json:"offlinelist"` } type InviteWorkResult struct { diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 491b98a..2ac7818 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -779,32 +779,67 @@ func (wl *WorkList) IsInWork(uuid int) bool { return isIn } -func GetdagongList(uuid int) (*WorkList,error) { +//此接口为处理返回所有的打工列表 +func GetRealDagonglist(uuid int) (*WorkList,*WorkList,error) { + vv,err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION,strconv.Itoa(uuid)) + + if err != nil { + //logger.Error("GetdagongList err=%v",err) + return nil,nil,nil + } + + var reallist WorkList + var list WorkList + err = json.Unmarshal([]byte(vv),&list) + if err != nil { + logger.Error("GetRealDagonglist err=%v",err) + return nil,nil,err + } + + //此处时间改为600s + nowtime := int(time.Now().Unix()) + for i:=0;i 600 + list[i].InviteTime { + //list = append(list[:i],list[i+1:]...) + //i-- + }else { + reallist = append(reallist,list[i]) + } + } + + return &list,&reallist,nil +} + +func GetdagongList(uuid int) (*WorkList,[]int,error) { //需要判断 超过时间 四小时的删除 vv,err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION,strconv.Itoa(uuid)) if err != nil { //logger.Error("GetdagongList err=%v",err) - return nil,nil + return nil,nil,nil } var list WorkList err = json.Unmarshal([]byte(vv),&list) if err != nil { logger.Error("GetdagongList err=%v",err) - return nil,err + return nil,nil,err } + var offlist []int //此处时间改为600s nowtime := int(time.Now().Unix()) for i:=0;i 600 + list[i].InviteTime { list = append(list[:i],list[i+1:]...) i-- + offlist = append(offlist,list[i].Uuid) } } - return &list,nil + + + return &list,offlist,nil } //加入打工列表 diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index a4bb727..caad08e 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -320,7 +320,7 @@ func HandleQueryInviteWork(w http.ResponseWriter, data string) { break } - dalist,_ := GetdagongList(rdata.Uuid) + dalist,offlist,_ := GetdagongList(rdata.Uuid) if dalist == nil { resp.Result.Code = ERROR_OK break @@ -330,6 +330,12 @@ func HandleQueryInviteWork(w http.ResponseWriter, data string) { resp.Result.Data.Invite_data = append(resp.Result.Data.Invite_data,val) } + for _,val := range offlist { + var tmp InviteWorkOffDesc + tmp.Uuid = val + resp.Result.Data.Offlinelist = append(resp.Result.Data.Offlinelist,tmp) + } + resp.Result.Code = ERROR_OK break } @@ -384,7 +390,8 @@ func HandleEnterInvite(w http.ResponseWriter, data string) { redishandler.GetRedisClient().HSet(rkey,strconv.Itoa(rdata.Selfuuid),"0") }else { //邀请打工 - invitelist,err := GetdagongList(rdata.Inviteuuid) + //invitelist,err := GetdagongList(rdata.Inviteuuid) + invitelist,reallist,err :=GetRealDagonglist(rdata.Inviteuuid) if err != nil { /*logger.Error("HandleEnterInvite GetdagongList failed") resp.Result.Code = ERROR_SRVDB_FAILED @@ -392,8 +399,8 @@ func HandleEnterInvite(w http.ResponseWriter, data string) { break*/ } - if invitelist != nil { - if len(*invitelist) > 2 { + if reallist != nil { + if len(*reallist) > 2 { logger.Error("HandleEnterInvite dagong num is full") resp.Result.Code = ERROR_DAGONG_FULL //resp.Message = "dagong full" @@ -401,20 +408,31 @@ func HandleEnterInvite(w http.ResponseWriter, data string) { } //需要判断是否已经处于打工中 - if invitelist.IsInWork(rdata.Selfuuid) { + if reallist.IsInWork(rdata.Selfuuid) { logger.Error("HandleEnterInvite IsInWork") resp.Result.Code = ERROR_DAGONG_FULL //resp.Message = "ERROR_ALREADY_INWORK" break } - err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,*invitelist) + if invitelist != nil { + err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,*invitelist) + }else { + //此时列表为空 新建一个 + var newlist WorkList + err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,newlist) + } + }else { //此时列表为空 新建一个 - var newlist WorkList - err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,newlist) - + if invitelist != nil { + err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,*invitelist) + }else { + //此时列表为空 新建一个 + var newlist WorkList + err = AddDagongList(rdata.Selfuuid,rdata.Inviteuuid,newlist) + } } -- libgit2 0.21.0