Commit aa959ad9864768010913a0448f7211645a540791

Authored by 陆恒
1 parent 63a5d683

提现相关接口

src/HttpServer/logic/datadef.go
... ... @@ -77,6 +77,36 @@ type DrawguangoldResp struct {
77 77 Data DrawguangoldData `json:"data"`
78 78 }
79 79  
  80 +type QuerdrawinfoResp struct {
  81 + Code int `json:"code"`
  82 + Message string `json:"message"`
  83 + Data WithDrawInfo `json:"data"`
  84 +}
  85 +
  86 +type GetcashReq struct {
  87 + Gameid string `json:"gameid"`
  88 + Channel string `json:"channel"`
  89 + Money float32 `json:"money"`
  90 + Openid string `json:"openid"`
  91 + Nickname string `json:"nickname"`
  92 + Headurl string `json:"headurl"`
  93 +}
  94 +
  95 +type GetcashData struct {
  96 + Walletgold int `json:"walletgold"`
  97 +}
  98 +type GetcashResp struct {
  99 + Code int `json:"code"`
  100 + Message string `json:"message"`
  101 + Data GetcashData `json:"data"`
  102 +}
  103 +
  104 +type GetcashrecordResp struct {
  105 + Code int `json:"code"`
  106 + Message string `json:"message"`
  107 + Data WithDrawList `json:"data"`
  108 +}
  109 +
80 110 //**********************************************************************************************************
81 111  
82 112 type TaskInfo struct {
... ... @@ -87,6 +117,29 @@ type AchieveMentInfo struct {
87 117  
88 118 }
89 119  
  120 +
  121 +type WithDrawList struct {
  122 + Withdata []WithDrawRecord `json:"withdata"`
  123 +}
  124 +
  125 +//提现记录结构
  126 +type WithDrawRecord struct {
  127 + Withdrawtime int `json:"wichdrawtime"`
  128 + Withdrawmoney float32 `json:"withdrawmoney"`
  129 +}
  130 +
  131 +type WithDrawInfo struct {
  132 + Cashdata []WithDrawDesc `json:"cashdata"`
  133 +}
  134 +
  135 +type WithDrawDesc struct {
  136 + Cid int `json:"cid"`
  137 + Cnum float32 `json:"cnum"`
  138 + Isnew int `json:"isnew"`
  139 + Limitlv int `json:"limitlv"`
  140 + Preisfind int `json:"preisfind"`
  141 +}
  142 +
90 143 //玩家数据
91 144 type UserData struct {
92 145 Userid int //玩家id
... ... @@ -98,6 +151,7 @@ type UserData struct {
98 151 LastLoginTime int //上次登陆时间
99 152 ContinueLoginDay int //连续登录天数
100 153 GetFromGuanCnt int //当天从存钱款提取金币次数
  154 + WithDraw WithDrawInfo //提现记录信息
101 155 Task TaskInfo //玩家任务完成相关信息
102 156 Achieve AchieveMentInfo //玩家成就完成相关数据
103 157 }
... ...
src/HttpServer/logic/errordef.go
... ... @@ -10,4 +10,7 @@ const (
10 10 ERROR_GUANGOLD_NOTENOUGH =5 //存钱罐金币不足
11 11 ERROR_DRAWGUAN_FAILED =6 //从存钱罐提取金币不满足限制
12 12 ERROR_DRAWGOLD_FAILED =7 //从存钱罐提取金币失败了
  13 + ERROR_GETCASH_FAILED =8 //从后台提现失败了
  14 + ERROR_GETCASH_GOLDNOTENOUGH_FAILED =9 //提现金币不足
  15 + ERROR_ADDWITHDRAW_LISTFAILED =10 //添加提现记录失败
13 16 )
14 17 \ No newline at end of file
... ...
src/HttpServer/logic/function.go
... ... @@ -56,6 +56,23 @@ func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error{
56 56 initdata.RealGold = 0
57 57 initdata.WatchAddsTime =WATCH_ADD_DAY_LIMIT
58 58  
  59 + for _,val := range jsonconf.GetJsonConf().WithDrawConfig {
  60 + var tmp WithDrawDesc
  61 + tmp.Cid = val.Id
  62 + tmp.Cnum = val.Money
  63 + if val.Isnew == 1 {
  64 + tmp.Isnew = 1
  65 + }else {
  66 + tmp.Isnew = 2
  67 + }
  68 + tmp.Limitlv = val.Level
  69 + if val.Id == 1 {
  70 + tmp.Preisfind = 1
  71 + }else {
  72 + tmp.Preisfind = 0
  73 + }
  74 + }
  75 +
59 76 resp.Data.Guangold = initdata.GuanGold
60 77 resp.Data.Leftads = initdata.WatchAddsTime
61 78 resp.Data.Walletgold = initdata.RealGold
... ... @@ -145,7 +162,73 @@ func GetUserData(uuid int, resp *UserLoginResp) error{
145 162 return nil
146 163 }
147 164  
  165 +//获取提现记录
  166 +func GetWithDrawList(uuid int) (*WithDrawList,error) {
  167 + var list *WithDrawList
  168 + list = nil
  169 + liststr,err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid))
  170 + if err != nil {
  171 + return nil,err
  172 + }
  173 + err = json.Unmarshal([]byte(liststr),list)
  174 + if err != nil {
  175 + return nil,err
  176 + }
  177 + return list,nil
  178 +}
  179 +
  180 +//添加提现记录
  181 +func AddWithDrawList(uuid int,data *WithDrawRecord) error {
  182 + exist,err := redishandler.GetRedisClient().HExists(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid))
  183 + if err != nil {
  184 + return err
  185 + }
  186 + if !exist {
  187 + //添加新的记录
  188 + var tmp WithDrawList
  189 + tmp.Withdata = append(tmp.Withdata,*data)
  190 +
  191 + savestr,err := json.Marshal(&tmp)
  192 + if err != nil {
  193 + return err
  194 + }
  195 + err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid),string(savestr))
  196 + return err
  197 + }
  198 +
  199 + /*liststr,err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid))
  200 + if err != nil {
  201 + return err
  202 + }
  203 +
  204 + var list WithDrawList
  205 + err = json.Unmarshal([]byte(liststr),&list)
  206 + if err != nil {
  207 + return err
  208 + }*/
  209 +
  210 + list,err := GetWithDrawList(uuid)
  211 + if err != nil || list == nil{
  212 + return err
  213 + }
  214 + list.Withdata = append(list.Withdata,*data)
  215 + savestr,err := json.Marshal(&list)
  216 + if err != nil {
  217 + return err
  218 + }
  219 + err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid),string(savestr))
  220 + return err
  221 +
  222 +
  223 +
  224 +}
  225 +
148 226 func AddCoinToSdk(uuid int,goldnum int,gameid string,channel string,atype int) (int,error) {
149 227 //暂时先不对接 接口调通遗憾对接后台
150 228 return 0,nil
  229 +}
  230 +
  231 +func GetCashFromSDK(uuid int,goldnum int,gameid ,channel,openid,nickname,headurl string) (int,error) {
  232 + //先不接
  233 + return 0,nil
151 234 }
152 235 \ No newline at end of file
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -43,10 +43,77 @@ func startServerHttpServe() {
43 43 http.HandleFunc("/eliminatestar/queryguaninfo", Queryguaninfo) //获取存钱罐数据
44 44 http.HandleFunc("/eliminatestar/getguangold", Getguangold) //获取金币到存钱罐
45 45 http.HandleFunc("/eliminatestar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包
  46 + http.HandleFunc("/eliminatestar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口
  47 + http.HandleFunc("/eliminatestar/getcash", Getcash) //提现
  48 + http.HandleFunc("/eliminatestar/getcashrecord", Getcashrecord) //提现记录列表
46 49 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
47 50 CheckErr(err)
48 51 }
49 52  
  53 +func Getcashrecord(w http.ResponseWriter, r *http.Request) {
  54 +
  55 + Uuid := 0
  56 + if len(r.Header) > 0 {
  57 + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
  58 + }
  59 +
  60 + if Uuid == 0 {
  61 + SetHeader(w)
  62 + //logger.Error("Uuid is nil!")
  63 + return
  64 + }
  65 + result, _ := ioutil.ReadAll(r.Body)
  66 + r.Body.Close()
  67 +
  68 + s := string(result)
  69 + logger.Info("Getcashrecord , body:%v,uuid=%v", s, Uuid)
  70 +
  71 + HandlerGetcashrecord(w, s, Uuid)
  72 +}
  73 +
  74 +
  75 +func Getcash(w http.ResponseWriter, r *http.Request) {
  76 +
  77 + Uuid := 0
  78 + if len(r.Header) > 0 {
  79 + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
  80 + }
  81 +
  82 + if Uuid == 0 {
  83 + SetHeader(w)
  84 + //logger.Error("Uuid is nil!")
  85 + return
  86 + }
  87 + result, _ := ioutil.ReadAll(r.Body)
  88 + r.Body.Close()
  89 +
  90 + s := string(result)
  91 + logger.Info("Getcash , body:%v,uuid=%v", s, Uuid)
  92 +
  93 + HandlerGetcash(w, s, Uuid)
  94 +}
  95 +
  96 +
  97 +func Querdrawinfo(w http.ResponseWriter, r *http.Request) {
  98 +
  99 + Uuid := 0
  100 + if len(r.Header) > 0 {
  101 + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
  102 + }
  103 +
  104 + if Uuid == 0 {
  105 + SetHeader(w)
  106 + //logger.Error("Uuid is nil!")
  107 + return
  108 + }
  109 + result, _ := ioutil.ReadAll(r.Body)
  110 + r.Body.Close()
  111 +
  112 + s := string(result)
  113 + logger.Info("Querdrawinfo , body:%v,uuid=%v", s, Uuid)
  114 +
  115 + HandlerQuerdrawinfo(w, s, Uuid)
  116 +}
50 117  
51 118 func Drawguangold(w http.ResponseWriter, r *http.Request) {
52 119  
... ... @@ -70,6 +137,8 @@ func Drawguangold(w http.ResponseWriter, r *http.Request) {
70 137 }
71 138  
72 139  
  140 +
  141 +
73 142 func Getguangold(w http.ResponseWriter, r *http.Request) {
74 143  
75 144 Uuid := 0
... ...
src/HttpServer/logic/logic.go
... ... @@ -9,6 +9,7 @@ import (
9 9 "fmt"
10 10 "net/http"
11 11 "strconv"
  12 + "time"
12 13 )
13 14  
14 15  
... ... @@ -91,6 +92,124 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) {
91 92 fmt.Fprint(w, string(respstr))
92 93 }
93 94  
  95 +func HandlerGetcash(w http.ResponseWriter, data string, uuid int) {
  96 + SetHeader(w)
  97 + var resp GetcashResp
  98 + resp.Code = 0
  99 + var rdata GetcashReq
  100 + err := json.Unmarshal([]byte(data), &rdata)
  101 + for {
  102 + if err != nil {
  103 + logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data)
  104 + resp.Message = "json解析错误"
  105 + resp.Code = ERROR_JSONUNMASH_ERROR
  106 + break
  107 + }
  108 + uinfo,err := GetUserInfo(uuid)
  109 + if err != nil || uinfo == nil{
  110 + logger.Error("redis failed err=%v", err)
  111 + resp.Message = "服务器错误"
  112 + resp.Code = ERROR_SRV_ERROR
  113 + break
  114 + }
  115 +
  116 + drawnum := int(rdata.Money*100)
  117 + //需要判断一下金币是否足够
  118 + if drawnum * 100 > uinfo.RealGold {
  119 + logger.Error("gold nor enough failed err=%v", err)
  120 + resp.Message = "提现金币不足"
  121 + resp.Code = ERROR_GETCASH_GOLDNOTENOUGH_FAILED
  122 + break
  123 + }
  124 +
  125 + _,err = GetCashFromSDK(uuid,drawnum,rdata.Gameid,rdata.Channel,rdata.Openid,rdata.Nickname,rdata.Headurl)
  126 + if err != nil {
  127 + logger.Error("GetCashFromSDK failed err=%v", err)
  128 + resp.Message = "从后台提现失败了"
  129 + resp.Code = ERROR_GETCASH_FAILED
  130 + break
  131 + }
  132 +
  133 + uinfo.RealGold -= drawnum * 100
  134 +
  135 + resp.Data.Walletgold = uinfo.RealGold
  136 + SaveUserInfo(uinfo)
  137 +
  138 + //需要保存一下提现记录
  139 + data := new(WithDrawRecord)
  140 + data.Withdrawmoney = rdata.Money
  141 + data.Withdrawtime = int(time.Now().Unix())
  142 + err = AddWithDrawList(uuid,data)
  143 + if err != nil {
  144 + logger.Error("AddWithDrawList failed err=%v", err)
  145 + resp.Message = "添加提现记录失败"
  146 + resp.Code = ERROR_ADDWITHDRAW_LISTFAILED
  147 + break
  148 + }
  149 +
  150 +
  151 + resp.Code = ERROR_OK
  152 + break
  153 + }
  154 +
  155 + //回包
  156 + respstr, _ := json.Marshal(&resp)
  157 + fmt.Fprint(w, string(respstr))
  158 +
  159 +}
  160 +
  161 +
  162 +
  163 +func HandlerGetcashrecord(w http.ResponseWriter, data string, uuid int) {
  164 + SetHeader(w)
  165 + var resp GetcashrecordResp
  166 + resp.Code = 0
  167 + for {
  168 + list,err := GetWithDrawList(uuid)
  169 + if err != nil || list == nil{
  170 + logger.Error("HandlerGetcashrecord failed err=%v", err)
  171 + resp.Message = "服务器错误"
  172 + resp.Code = ERROR_SRV_ERROR
  173 + break
  174 + }
  175 +
  176 + resp.Data.Withdata = append(resp.Data.Withdata,list.Withdata...)
  177 +
  178 + resp.Code = ERROR_OK
  179 + break
  180 + }
  181 +
  182 + //回包
  183 + respstr, _ := json.Marshal(&resp)
  184 + fmt.Fprint(w, string(respstr))
  185 +
  186 +}
  187 +
  188 +func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) {
  189 + SetHeader(w)
  190 + var resp QuerdrawinfoResp
  191 + resp.Code = 0
  192 + for {
  193 + uinfo,err := GetUserInfo(uuid)
  194 + if err != nil || uinfo == nil{
  195 + logger.Error("redis failed err=%v", err)
  196 + resp.Message = "服务器错误"
  197 + resp.Code = ERROR_SRV_ERROR
  198 + break
  199 + }
  200 +
  201 + //返回
  202 + resp.Data.Cashdata = append(resp.Data.Cashdata,uinfo.WithDraw.Cashdata...)
  203 +
  204 + resp.Code = ERROR_OK
  205 + break
  206 + }
  207 +
  208 + //回包
  209 + respstr, _ := json.Marshal(&resp)
  210 + fmt.Fprint(w, string(respstr))
  211 +
  212 +}
94 213  
95 214  
96 215 func HandlerDrawguangold(w http.ResponseWriter, data string, uuid int) {
... ...
src/common/redis/def.go
... ... @@ -2,5 +2,6 @@ package redis
2 2  
3 3 const (
4 4 USER_DATA_KEY = "STARSTAR_USER_DATA_KEY" //玩家数据
  5 + USER_WITHDRAW_RECORDLIST = "STARSTAR_USER_WITHDRAW_RECORDLIST" //玩家提现记录
5 6  
6 7 )
... ...