From a8930016f5013a69953cc35e5d9828adc3b64c4c Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Tue, 12 May 2020 14:43:51 +0800 Subject: [PATCH] 登录接口相关 --- src/HttpServer/jsonconf/AchievementConfig.json | 2 +- src/HttpServer/jsonconf/DailyTask.json | 2 +- src/HttpServer/logic/constdef.go | 6 +----- src/HttpServer/logic/datadef.go | 604 ++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/HttpServer/logic/errordef.go | 4 +++- src/HttpServer/logic/function.go | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/HttpServer/logic/httpserver.go | 25 ++++++++++++++++++++++++- src/HttpServer/logic/logic.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/common/redis/def.go | 17 ++--------------- 9 files changed, 221 insertions(+), 609 deletions(-) diff --git a/src/HttpServer/jsonconf/AchievementConfig.json b/src/HttpServer/jsonconf/AchievementConfig.json index 0838c00..b7a97a6 100644 --- a/src/HttpServer/jsonconf/AchievementConfig.json +++ b/src/HttpServer/jsonconf/AchievementConfig.json @@ -1 +1 @@ -[{"id":1,"task":"观看%d%条广告","num":10,"reward":[7,100]},{"id":1,"task":"观看%d%条广告","num":30,"reward":[7,300]},{"id":1,"task":"观看%d%条广告","num":50,"reward":[7,500]},{"id":1,"task":"观看%d%条广告","num":100,"reward":[7,1000]},{"id":1,"task":"观看%d%条广告","num":150,"reward":[7,1500]},{"id":2,"task":"人物达到%d%级","num":5,"reward":[7,500]},{"id":2,"task":"人物达到%d%级","num":10,"reward":[7,1000]},{"id":2,"task":"人物达到%d%级","num":15,"reward":[7,1500]},{"id":2,"task":"人物达到%d%级","num":20,"reward":[7,2000]},{"id":3,"task":"累计消除%d%颗星星","num":1000,"reward":[1,50]},{"id":3,"task":"累计消除%d%颗星星","num":5000,"reward":[1,80]},{"id":3,"task":"累计消除%d%颗星星","num":10000,"reward":[1,100]},{"id":3,"task":"累计消除%d%颗星星","num":30000,"reward":[2,10]},{"id":3,"task":"累计消除%d%颗星星","num":50000,"reward":[3,10]},{"id":3,"task":"累计消除%d%颗星星","num":100000,"reward":[4,10]},{"id":3,"task":"累计消除%d%颗星星","num":500000,"reward":[5,10]},{"id":4,"task":"存钱罐累计提取%d%次","num":5,"reward":[7,50]},{"id":4,"task":"存钱罐累计提取%d%次","num":10,"reward":[7,100]},{"id":4,"task":"存钱罐累计提取%d%次","num":20,"reward":[7,200]},{"id":4,"task":"存钱罐累计提取%d%次","num":30,"reward":[7,300]},{"id":4,"task":"存钱罐累计提取%d%次","num":50,"reward":[7,500]},{"id":5,"task":"使用%d%次任意道具","num":20,"reward":[7,200]},{"id":5,"task":"使用%d%次任意道具","num":50,"reward":[7,500]},{"id":5,"task":"使用%d%次任意道具","num":100,"reward":[7,1000]},{"id":5,"task":"使用%d%次任意道具","num":300,"reward":[7,3000]},{"id":5,"task":"使用%d%次任意道具","num":500,"reward":[7,5000]}] \ No newline at end of file +[{"id":1,"task":"观看%d%条广告","num":10,"reward":[7,100],"type":1},{"id":2,"task":"观看%d%条广告","num":30,"reward":[7,300],"type":1},{"id":3,"task":"观看%d%条广告","num":50,"reward":[7,500],"type":1},{"id":4,"task":"观看%d%条广告","num":100,"reward":[7,1000],"type":1},{"id":5,"task":"观看%d%条广告","num":150,"reward":[7,1500],"type":1},{"id":6,"task":"人物达到%d%级","num":5,"reward":[7,500],"type":2},{"id":7,"task":"人物达到%d%级","num":10,"reward":[7,1000],"type":2},{"id":8,"task":"人物达到%d%级","num":15,"reward":[7,1500],"type":2},{"id":9,"task":"人物达到%d%级","num":20,"reward":[7,2000],"type":2},{"id":10,"task":"累计消除%d%颗星星","num":1000,"reward":[1,50],"type":3},{"id":11,"task":"累计消除%d%颗星星","num":5000,"reward":[1,80],"type":3},{"id":12,"task":"累计消除%d%颗星星","num":10000,"reward":[1,100],"type":3},{"id":13,"task":"累计消除%d%颗星星","num":30000,"reward":[2,10],"type":3},{"id":14,"task":"累计消除%d%颗星星","num":50000,"reward":[3,10],"type":3},{"id":15,"task":"累计消除%d%颗星星","num":100000,"reward":[4,10],"type":3},{"id":16,"task":"累计消除%d%颗星星","num":500000,"reward":[5,10],"type":3},{"id":17,"task":"存钱罐累计提取%d%次","num":5,"reward":[7,50],"type":4},{"id":18,"task":"存钱罐累计提取%d%次","num":10,"reward":[7,100],"type":4},{"id":19,"task":"存钱罐累计提取%d%次","num":20,"reward":[7,200],"type":4},{"id":20,"task":"存钱罐累计提取%d%次","num":30,"reward":[7,300],"type":4},{"id":21,"task":"存钱罐累计提取%d%次","num":50,"reward":[7,500],"type":4},{"id":22,"task":"使用%d%次任意道具","num":20,"reward":[7,200],"type":5},{"id":23,"task":"使用%d%次任意道具","num":50,"reward":[7,500],"type":5},{"id":24,"task":"使用%d%次任意道具","num":100,"reward":[7,1000],"type":5},{"id":25,"task":"使用%d%次任意道具","num":300,"reward":[7,3000],"type":5},{"id":26,"task":"使用%d%次任意道具","num":500,"reward":[7,5000],"type":5}] \ No newline at end of file diff --git a/src/HttpServer/jsonconf/DailyTask.json b/src/HttpServer/jsonconf/DailyTask.json index 3664492..c55f910 100644 --- a/src/HttpServer/jsonconf/DailyTask.json +++ b/src/HttpServer/jsonconf/DailyTask.json @@ -1 +1 @@ -[{"id":1,"task":"每日登录","num":1,"reward":[1,20]},{"id":2,"task":"提取一次存钱罐","num":1,"reward":[6,50]},{"id":3,"task":"今日通过%d%关","num":10,"reward":[6,50]},{"id":4,"task":"使用%d%次道具","num":5,"reward":[6,20]},{"id":5,"task":"领取%d%次红包","num":5,"reward":[6,20]},{"id":5,"task":"领取%d%次红包","num":10,"reward":[6,30]},{"id":5,"task":"领取%d%次红包","num":15,"reward":[6,50]},{"id":6,"task":"收集%d%枚金币","num":20,"reward":[6,100]},{"id":7,"task":"累计在线%d%分钟","num":5,"reward":[2,2]},{"id":7,"task":"累计在线%d%分钟","num":10,"reward":[4,3]},{"id":7,"task":"累计在线%d%分钟","num":15,"reward":[5,4]}] \ No newline at end of file +[{"id":1,"task":"每日登录","num":1,"reward":[1,20],"type":1},{"id":2,"task":"提取一次存钱罐","num":1,"reward":[6,50],"type":2},{"id":3,"task":"今日通过%d%关","num":10,"reward":[6,50],"type":3},{"id":4,"task":"使用%d%次道具","num":5,"reward":[6,20],"type":4},{"id":5,"task":"领取%d%次红包","num":5,"reward":[6,20],"type":5},{"id":6,"task":"领取%d%次红包","num":10,"reward":[6,30],"type":5},{"id":7,"task":"领取%d%次红包","num":15,"reward":[6,50],"type":5},{"id":8,"task":"收集%d%枚金币","num":20,"reward":[6,100],"type":6},{"id":9,"task":"累计在线%d%分钟","num":5,"reward":[2,2],"type":7},{"id":10,"task":"累计在线%d%分钟","num":10,"reward":[4,3],"type":7},{"id":11,"task":"累计在线%d%分钟","num":15,"reward":[5,4],"type":7}] \ No newline at end of file diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index f60ea85..4de33d7 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -6,9 +6,5 @@ var ( ) const ( - FRIEND_MAX_NUM = 50 //好友人数上限 - FRIEND_APPLY_LIMIT = 50 //好友申请当日上限 - FRIEND_APPROVE_LIMIT = 50 //好友批准当日上限 - FRIEND_RECOMMAND_NUM = 3 //推荐好友数量 - TEAM_MAXNUM = 4 //队伍最大人数 + WATCH_ADD_DAY_LIMIT = 9 //当天观看视频次数限制 ) \ No newline at end of file diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 1a2a246..cd55b8e 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -1,605 +1,41 @@ package logic -//微信url定义 -const ( - URL_WEIXINMSG_CHECK = "https://api.weixin.qq.com/wxa/msg_sec_check" - URL_WEIXINGETACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token" -) - -//登录类型枚举 -const ( - LOGIN_TYPE_TOURIST = 1 //游客登录 - LOGIN_TYPE_ACCOUNT = 2 //账号密码登录 - LOGIN_TYPE_WECHAT = 3 //微信登录 - -) - -type WechatLoginReq struct { - Channel_id int `json:"channel_id"` - Invite_type int `json:"invite_type"` - Invite_res_id int `json:"invite_res_id"` - User_invite_uid int `json:"user_invite_uid"` - Code string `json:"code"` - Signature string `json:"signature"` - Iv string `json:"iv"` - Raw_data string `json:"raw_data"` - Encrypted_data string `json:"encrypted_data"` - Token string `json:"token"` - Version string `json:"version"` -} - type UserLoginReq struct { - Channel_id int `json:"channel_id"` - Invite_type int `json:"invite_type"` - Invite_res_id int `json:"invite_res_id"` - User_invite_uid int `json:"user_invite_uid"` - Scene int `json:"scene"` - RefAppId int `json:"refAppId"` - Code string `json:"code"` - Token string `json:"token"` - Version string `json:"version"` - -} - -type UserBaseData struct { - User_id int `json:"user_id"` - User_gender int `json:"user_gender"` - User_nickname string `json:"user_nickname"` - User_openid string `json:"user_openid"` - User_avatar_url string `json:"user_avatar_url"` - User_city string `json:"user_city"` - User_token string `json:"user_token"` -} - -type UserExtData struct { - User_id int `json:"user_id"` - Hot int `json:"hot"` - Coin int64 `json:"coin"` - LoveExp int `json:"loveExp"` - Bean int `json:"bean"` - ShopNum int `json:"shopNum"` - Lv int `json:"lv"` - Exp int `json:"exp"` - User_invite_uid int `json:"user_invite_uid"` - User_reg_time int `json:"user_reg_time"` - User_channel int `json:"user_channel"` - User_is_black int `json:"user_is_black"` - User_scene int `json:"user_scene"` - Reg_time int `json:"reg_time"` - Invite_uid int `json:"invite_uid"` -} - -type UserLoginData struct { - Dasedata UserBaseData `json:"UserBaseData"` - Extdata UserExtData `json:"user_ext_data"` -} - -type UserLoginResult struct { - Code int `json:"code"` - Data UserLoginData `json:"data"` + Fromid int `json:"fromid"` + Sharetype int `json:"sharetype"` } - - type UserLoginResp struct { - Status string `json:"status"` - Result UserLoginResult `json:"result"` - -} - - -type RegeisterReq struct{ - Account string `json:"account"` - Password string `json:"password"` -} - -type RegeisteraResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type AccounLoginReq struct{ - Account string `json:"account"` - Password string `json:"password"` -} - -type AccounLoginResp struct { - Status string `json:"status"` - Result UserLoginResult `json:"result"` -} - - -type SaveUserDataReq struct{ - Token string `json:"token"` - Hot int `json:"hot"` - Coin int64 `json:"coin"` - Loveexp int `json:"loveexp"` - Bean int `json:"bean"` - Shopnum int `json:"shopnum"` -} - -type SaveUserDataResp struct { - Status string `json:"status"` - Result UserLoginResult `json:"result"` -} - -type CommonResult struct { - Code int `json:"code"` - Data string `json:"data"` -} - -type SaveDataReq struct{ - Token string `json:"token"` - Field string `json:"field"` - Value string `json:"value"` -} - -type SaveDataResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type GetDataDesc struct { - Base_data string `json:"base_data"` -} - -type GetDataResult struct { - Code int `json:"code"` - Data GetDataDesc `json:"data"` -} - -type GetDataReq struct{ - Token string `json:"token"` - Field string `json:"field"` -} - -type GetDataResp struct { - Status string `json:"status"` - Result GetDataResult `json:"result"` -} - -type TextCheckReq struct{ - Token string `json:"token"` - Text string `json:"text"` -} - -type TextCheckResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type MsgCheckDesc struct { - Content string `json:"content"` -} + Code int `json:"code"` + Message string `json:"message"` + Loginday int `json:"loginday"` + Leftads int `json:"leftads"` + Guangold int `json:"guangold"` -type MsgCheckResp struct { - Errcode string `json:"errcode"` - Errmsg string `json:"errmsg"` } -type GetAccessTokenResp struct { - Access_token string `json:"access_token"` - Expires_in string `json:"expires_in"` -} - - -type CreateTeamReq struct{ - Token string `json:"token"` - Name string `json:"name"` - Is_open int `json:"is_open"` - Limit int `json:"limit"` -} - -//队伍列表人员id -type TeamMemInfo struct { - MemList []int -} - -//玩家投资信心 -type TeamDevoteInfo struct { - UserId int `json:"userid"` - Type int `json:"type"` - Assets int `json:"assets"` -} - -//玩家buff -type TeamBuffInfo struct { - BeginTime int - EndTime int -} - -// -type TeamAllBuff struct { - Type int - BuffInfo []TeamBuffInfo -} - -//队伍建筑信息 -type TeamBuildingInfo struct { - Devote []TeamDevoteInfo - Buff []TeamAllBuff -} - -type CreateTeamInfo struct { - Id int `json:"id"` - Name string `json:"name"` - Is_open int `json:"is_open"` - Num int `json:"num"` - Assets int `json:"assets"` - Least int `json:"least"` - Captain_id int `json:"captain_id"` - Creator_id int `json:"creator_id"` - Status int `json:"status"` - Create_time int `json:"create_time"` - Update_time int `json:"update_time"` -} - -//队伍信息 -type TeamInfo struct { - BaseInfo CreateTeamInfo - MemInfo TeamMemInfo - BInfo TeamBuildingInfo -} - -type CreateTeamDesc struct { - Team_data CreateTeamInfo `json:"team_data"` -} - -type CreateTeamData struct { - Code int `json:"code"` - Data CreateTeamDesc `json:"data"` -} - -type CreateTeamResp struct { - Status string `json:"status"` - Result CreateTeamData `json:"result"` -} - - -type JoinTeamReq struct{ - Token string `json:"token"` - Team_id int `json:"team_id"` -} - -type JoinTeamResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - - -type JoinTeamByInviteReq struct{ - Token string `json:"token"` - Inviter_id int `json:"inviter_id"` -} - -type JoinTeamByInviteResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type QuitTeamReq struct{ - Token string `json:"token"` - User_id int `json:"user_id"` - Type int `json:"type"` -} - -type QuitTeamResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type UpdateTeamBuildReq struct{ - Token string `json:"token"` - Build_type int `json:"build_type"` - Assets int `json:"assets"` - Muti int `json:"muti"` -} - -type QuitTeamDesc struct { - Build_list []TeamDevoteInfo `json:"build_list"` -} - -type QuitTeamResult struct { - Code int `json:"code"` - Data QuitTeamDesc `json:"data"` -} - -type UpdateTeamBuildResp struct { - Status string `json:"status"` - Result QuitTeamResult `json:"result"` -} - - - -type AddTeamBuffReq struct{ - Token string `json:"token"` - Build_type int `json:"build_type"` - Muti int `json:"muti"` -} - -type BuffTimeInfo struct { - Buff_begin_time int `json:"buff_begin_time"` - Buff_end_time int `json:"buff_end_time"` -} - -type AddTeamBuffSpec struct { - Build_type int `json:"build_type"` - Buff_time []BuffTimeInfo `json:"buff_time"` -} - -type AddTeamBuffDesc struct { - Build_list []AddTeamBuffSpec `json:"build_list"` -} - -type AddTeamBuffResult struct { - Code int `json:"code"` - Data AddTeamBuffDesc `json:"data"` -} - -type AddTeamBuffResp struct { - Status string `json:"status"` - Result AddTeamBuffResult `json:"result"` -} - -type GetTeamBuffReq struct{ - Token string `json:"token"` -} - -type GetTeamBuffResp struct { - Status string `json:"status"` - Result AddTeamBuffResult `json:"result"` -} - -type GetTeamDataReq struct{ - Token string `json:"token"` -} - -type GetTeamDataTeamUserList struct { - Uuid int `json:"uuid"` -} - -type GetTeamDataDesc struct { - Team_data CreateTeamInfo `json:"team_data"` - Team_user_list []GetTeamDataTeamUserList `json:"team_user_list"` - Build_list QuitTeamDesc `json:"build_list"` -} - -type GetTeamDataResult struct { - Code int `json:"code"` - Data GetTeamDataDesc `json:"data"` -} - -type GetTeamDataResp struct { - Status string `json:"status"` - Result GetTeamDataResult `json:"result"` -} - -type GetDataByUserIdReq struct{ - Token string `json:"token"` - Field string `json:"field"` - User_id int `json:"user_id"` -} - -type GetDataByUserIdDesc struct { - Base_data string `json:"base_data"` - User_base_data UserBaseData `json:"user_base_data"` - Extdata UserExtData `json:"user_ext_data"` -} - -type GetDataByUserIdResult struct { - Code int `json:"code"` - Data GetDataByUserIdDesc `json:"data"` -} - -type GetDataByUserIdResp struct { - Status string `json:"status"` - Result GetDataByUserIdResult `json:"result"` -} - - -type GetTeamListReq struct{ - Token string `json:"token"` - Store_num int `json:"store_num"` - Page int `json:"page"` -} - -type GetTeamListDesc struct { - Items []int `json:"items"` - Count int `json:"count"` -} - -type GetTeamListResult struct { - Code int `json:"code"` - Data GetTeamListDesc `json:"data"` -} - - -type GetTeamListResp struct { - Status string `json:"status"` - Result GetTeamListResult `json:"result"` -} - -type SearchTeamReq struct{ - Token string `json:"token"` - Name string `json:"name"` - Store_num int `json:"store_num"` - Page int `json:"page"` -} - -type SearchTeamResp struct { - Status string `json:"status"` - Result GetTeamListResult `json:"result"` -} - -type FriendInfo struct { - Uuid int `json:"uuid"` - Status int `json:"status"` -} - -type FriendList struct { - Friends []FriendInfo `json:"friends"` -} - -type ApplyInfo struct { - Uuid int `json:"uuid"` - Apply_time int `json:"apply_time"` -} -type ApplyList struct { - Apply_info []ApplyInfo `json:"apply_info"` -} - -type ApproveList struct { - Approve_info []ApplyInfo `json:"approve_info"` -} - -type SetFriendReq struct{ - Token string `json:"token"` - User_id int `json:"user_id"` -} - - -type SetFriendResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type GetFriendListReq struct{ - Token string `json:"token"` -} - -type GetFriendListDesc struct { - Friend_list []FriendInfo `json:"friend_list"` -} - -type GetFriendListResult struct { - Code int `json:"code"` - Data GetFriendListDesc `json:"data"` -} - -type GetFriendListResp struct { - Status string `json:"status"` - Result GetFriendListResult `json:"result"` -} - - -type GetAuditListReq struct{ - Token string `json:"token"` -} - -type GetAuditListDesc struct { - Approve_list []ApplyInfo `json:"approve_list"` -} - -type GetAuditListResult struct { - Code int `json:"code"` - Data GetAuditListDesc `json:"data"` -} - -type GetAuditListResp struct { - Status string `json:"status"` - Result GetAuditListResult `json:"result"` -} - - -type GetRecommendListReq struct{ - Token string `json:"token"` -} - -type GetRecommendListInfo struct { - Userid int `json:"userid"` - Nickname string `json:"nickname"` - Avatar_url string `json:"avatar_url"` - Gender int `json:"gender"` - City string `json:"city"` - Hot int `json:"hot"` - Coin int64 `json:"coin"` - Love_exp int `json:"love_exp"` - Bean int `json:"bean"` - Shop_num int `json:"shop_num"` - Cat_num int `json:"cat_num"` - Lv int `json:"lv"` - Exp int `json:"exp"` - Reg_time int `json:"reg_time"` -} - -type GetRecommendListDesc struct { - Recommend_list []GetRecommendListInfo `json:"recommend_list"` -} - -type GetRecommendListResult struct { - Code int `json:"code"` - Data GetRecommendListDesc `json:"data"` -} - -type GetRecommendListResp struct { - Status string `json:"status"` - Result GetRecommendListResult `json:"result"` -} - - -type HandleFriendRequestReq struct{ - Token string `json:"token"` - User_id int `json:"user_id"` - Type int `json:"type"` -} - - -type HandleFriendRequestResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} - -type DelFriendReq struct{ - Token string `json:"token"` - User_id int `json:"user_id"` -} - - -type DelFriendResp struct { - Status string `json:"status"` - Result CommonResult `json:"result"` -} +//********************************************************************************************************** -type QueryPlayerDataReq struct{ - Token string `json:"token"` - User_id int `json:"user_id"` -} +type TaskInfo struct { -type QueryPlayerDataDesc struct { - Player_data GetRecommendListInfo `json:"player_data"` } -type QueryPlayerDataResult struct { - Code int `json:"code"` - Data QueryPlayerDataDesc `json:"data"` -} +type AchieveMentInfo struct { -type QueryPlayerDataResp struct { - Status string `json:"status"` - Result QueryPlayerDataResult `json:"result"` } -//********************************************************************************************************** - - //玩家数据 type UserData struct { Userid int //玩家id - Hot int - Coin int64 //金币 - Loevexp int - Bean int //咖啡豆 - Shopnum int //店铺数量 - Lv int - Exp int - UserInviteId int - Userregtime int - Channel int - Isblack int - Scene int - Regtime int - InviteUid int - LoginTime int - LoginDay int + Lv int //玩家当前等级 + Exp int //玩家当前经验值 + GuanGold int //玩家存钱罐中金币数量 + RealGold int //玩家实际金币数量(可用于提现的) + WatchAddsTime int //当天观看激励视频次数 + LastLoginTime int //上次登陆时间 + ContinueLoginDay int //连续登录天数 + GetFromGuanCnt int //当天从存钱款提取金币次数 + Task TaskInfo //玩家任务完成相关信息 + Achieve AchieveMentInfo //玩家成就完成相关数据 } diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index 81590bb..511bcb8 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -2,5 +2,7 @@ package logic const ( - ERROR_OK = 0 //没有错误 + ERROR_OK =0 //没有错误 + ERROR_SRV_ERROR =1 //服务器错误 + ERROR_JSONUNMASH_ERROR =2 //json解析错误 ) \ No newline at end of file diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index cb588b3..2181759 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -1,7 +1,12 @@ package logic import ( + "HttpServer/redishandler" + "common/redis" + "encoding/json" "net/http" + "strconv" + "time" ) func SetHeader(w http.ResponseWriter) { @@ -10,4 +15,113 @@ func SetHeader(w http.ResponseWriter) { w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") } +func SaveUserInfo(data *UserData) error { + savestr,err := json.Marshal(data) + if err != nil { + return err + } + + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY,strconv.Itoa(data.Userid),string(savestr)) + + return err +} + +func GetUserInfo(uuid int) (*UserData,error) { + + data,err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY,strconv.Itoa(uuid)) + if err != nil { + return nil,err + } + var tmp UserData + err = json.Unmarshal([]byte(data),&tmp) + if err != nil { + return nil,err + } + + return &tmp,nil +} + +func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error{ + + var initdata UserData + initdata.Lv = 1 + initdata.Exp = 0 + initdata.Userid = uuid + initdata.ContinueLoginDay = 1 + initdata.GetFromGuanCnt = 0 + initdata.GuanGold = 0 + initdata.LastLoginTime = int(time.Now().Unix()) + initdata.RealGold = 0 + initdata.WatchAddsTime =WATCH_ADD_DAY_LIMIT + + resp.Guangold = initdata.GuanGold + resp.Leftads = initdata.WatchAddsTime + resp.Loginday = initdata.ContinueLoginDay + + err := SaveUserInfo(&initdata) + + return err +} + + +func (u *UserData) HandlePassDay() { + isdiffday := false + nowtime := time.Now() + lasttime := time.Unix(int64(u.LastLoginTime), 0) + nowdaynum := time.Now().Day() + lastdaynum := time.Unix(int64(u.LastLoginTime), 0).Day() + nowtimestamp := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 0, 0, 0, 0, nowtime.Location()) + lasttimestamp := time.Date(lasttime.Year(), lasttime.Month(), lasttime.Day(), 0, 0, 0, 0, lasttime.Location()) + + + if nowdaynum == lastdaynum { + //同一天 + if int64(u.LastLoginTime) - time.Now().Unix() > 86400 { + //已经过了很多天了 + //u.LastLoginTime = int(time.Now().Unix()) + u.ContinueLoginDay = 1 + isdiffday = true + }else { + //t同一天 不做处理 + } + }else { + //不是同一天了 + isdiffday = true + if nowtimestamp.Unix() > lasttimestamp.Unix() + 86399 { + //超过一天了 + u.ContinueLoginDay = 1 + }else { + u.ContinueLoginDay ++ + } + } + + if isdiffday { + //跨天了 + u.WatchAddsTime = WATCH_ADD_DAY_LIMIT + //todo 重置任务相关的数据 + u.GetFromGuanCnt = 0 + } + + u.LastLoginTime = int(nowtime.Unix()) + + SaveUserInfo(u) +} + +func GetUserData(uuid int, resp *UserLoginResp) error{ + data,err := GetUserInfo(uuid) + if err != nil || data == nil{ + resp.Code = ERROR_SRV_ERROR + resp.Message = "ERROR_SRV_ERROR" + return err + } + + //此处要处理一下跨天逻辑 + data.HandlePassDay() + + resp.Loginday = data.ContinueLoginDay + resp.Leftads = data.WatchAddsTime + resp.Guangold = data.GuanGold + + return nil +} \ No newline at end of file diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 67432ad..71c1e86 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -2,6 +2,10 @@ package logic import ( "HttpServer/conf" + "common/logger" + "io/ioutil" + "strconv" + //"log" "net/http" ) @@ -34,11 +38,30 @@ func startServerHttpServe() { //------------------------------------------------------------- - + http.HandleFunc("/elimatestar/login", UserLogin) //登录 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func UserLogin(w http.ResponseWriter, r *http.Request) { + + Uuid := 0 + if len(r.Header) > 0 { + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) + } + + if Uuid == 0 { + SetHeader(w) + logger.Error("Uuid is nil!") + return + } + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("UserLogin , body:%v,uuid=%v", s, Uuid) + HandlerLogin(w, s, Uuid) +} diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 697a16f..c7db86a 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -1 +1,55 @@ -package logic \ No newline at end of file +package logic + +import ( + "HttpServer/redishandler" + "common/logger" + "common/redis" + "encoding/json" + "fmt" + "net/http" + "strconv" +) + +func HandlerLogin(w http.ResponseWriter, data string, uuid int) { + SetHeader(w) + var resp UserLoginResp + resp.Code = 0 + var rdata UserLoginReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Info("json decode HandlerLogin data failed:%v,for:%v", err, data) + resp.Message = "json unmarshal failed" + resp.Code = ERROR_JSONUNMASH_ERROR + } + + //先判断一下是否是新用户 + isexist,err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, strconv.Itoa(uuid)) + if err != nil { + logger.Error("redis failed err=%v", err) + resp.Message = "ERROR_SRV_ERROR" + resp.Code = ERROR_SRV_ERROR + } + + if !isexist { + //不存在 + //属于新登录的玩家数据 + err = InitUserInfo(&rdata, &resp, uuid) + } else { + //已经登陆过了 需要获取玩家数据 + err = GetUserData(uuid, &resp) + } + + if err != nil { + logger.Error("redis failed err=%v", err) + resp.Message = "ERROR_SRV_ERROR" + resp.Code = ERROR_SRV_ERROR + } + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) + + logger.Info("###HandlerLogin###rdata:%v", string(respstr)) +} \ No newline at end of file diff --git a/src/common/redis/def.go b/src/common/redis/def.go index 44e4f5e..76a75fe 100644 --- a/src/common/redis/def.go +++ b/src/common/redis/def.go @@ -1,19 +1,6 @@ package redis const ( - USER_TOURIST_UID = "CATCAFE_USER_TOURIST_UID" //存储对应设备编码与uid的对应关系 - USER_MAX_UUID = "CATCAFE_USER_MAX_UUID" //记录当前最大的uid,新增自增即可 - USER_BASIC_DATA = "CATCAFE_USER_BASIC_DATA" //玩家基础信息 - USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据 - USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据 - MSG_CKECK_ACCESSTOKEN = "CATCAFE_MSG_CKECK_ACCESSTOKEN" //敏感词检测的key - TEAM_USERTEAM_NAME = "CATCAFE_TEAM_USERTEAM_NAME" //存储了玩家队伍名称 - TEAM_INFO = "CATCAFE_TEAM_INFO" //存储了玩家队伍信息 - TEAM_MAX_UUID = "CATCAFE_TEAM_MAX_UUID" //记录当前最大的teamid,新增自增即可 - TEAM_TEAMID_TOUUID = "CATCAFE_TEAM_TEAMID_TOUUID" //记录teamid与uuid的关系 - FRIEND_LIST_KEY = "CATCAFE_FRIEND_LIST_KEY" //玩家的好友列表的key,需要在末尾加死":uuid" - FRIEND_APPLYLIST_KEY = "CATCAFE_FRIEND_APPLYLIST_KEY" //玩家申请好友列表,需要在末尾加死":uuid" - FRIEND_APPROVELIST_KEY = "CATCAFE_FRIEND_APPROVELIST_KEY" //待批准好友列表,需要在末尾加死":uuid" - FRIEND_RECOMMANDLIST_KEY = "CATCAFE_FRIEND_RECOMMANDLIST_KEY" //推荐好友缓存key - USER_ACCOUNT_PASSWORD_KEY = "CATCAFE_USER_ACCOUNT_PASSWORD_KEY" //玩家账号密码的key + USER_DATA_KEY = "STARSTAR_USER_DATA_KEY" //玩家数据 + ) -- libgit2 0.21.0