Commit 9aabb576520b9b3a3eb461d6a9fc72d33e29e1b3

Authored by 陆恒
1 parent ff7df593
Exists in ver2.3.6

提交微信公众号功能

src/HttpServer/logic/datadef.go
... ... @@ -150,6 +150,38 @@ type GetcashResp struct {
150 150 Data GetcashData `json:"data"`
151 151 }
152 152  
  153 +
  154 +type GetcashwechatData struct {
  155 + Cdkey string `json:"cdkey"`
  156 +}
  157 +type GetcashwechatResp struct {
  158 + Code int `json:"code"`
  159 + Message string `json:"message"`
  160 + Data GetcashwechatData `json:"data"`
  161 +}
  162 +
  163 +
  164 +type GetCashWechatData struct {
  165 + Cdkey string `json:"cdkey"`
  166 +}
  167 +
  168 +type GetCashWechatResp struct {
  169 + Code string `json:"code"`
  170 + Data GetCashWechatData `json:"data"`
  171 + Msg string `json:"msg"`
  172 +}
  173 +
  174 +type GetcashwechatReq struct {
  175 + Gameid string `json:"gameid"`
  176 + Channel string `json:"channel"`
  177 + Money float32 `json:"money"`
  178 + Openid string `json:"openid"`
  179 + Nickname string `json:"nickname"`
  180 + Headurl string `json:"headurl"`
  181 + Ver string `json:"ver"`
  182 + Ctype int `json:"ctype"`
  183 +}
  184 +
153 185 type GetcashrecordReq struct {
154 186 Gameid string `json:"gameid"`
155 187 Channel string `json:"channel"`
... ... @@ -368,6 +400,7 @@ func (v WithDrawDescs) Less(i, j int) bool {
368 400 type WithDrawInfo struct {
369 401 Cashdata WithDrawDescs `json:"cashdata"`
370 402 SpecialCashdata WithDrawDescs `json:"specialcashdata"`
  403 + Cdkeycashdata []CashCdKeyInfo `json:"cdkeycashdata"`
371 404 }
372 405  
373 406 type WithDrawDesc struct {
... ... @@ -379,6 +412,12 @@ type WithDrawDesc struct {
379 412 Day int `json:"day"`
380 413 }
381 414  
  415 +type CashCdKeyInfo struct {
  416 + Id int `json:"id"`
  417 + Money float32 `json:"money"`
  418 + Cdkey string `json:"cdkey"`
  419 +}
  420 +
382 421 //玩家数据
383 422 type UserData struct {
384 423 Userid int //玩家id
... ... @@ -407,6 +446,7 @@ type UserData struct {
407 446 FetchRdBagNum int //当天已领的红包
408 447 ShakeTime int //摇一摇
409 448 WithDraw WithDrawInfo //提现记录信息
  449 + Cdkeys []CashCdKeyInfo //记录提现的cdkeys
410 450 //SpecialWithDraw WithDrawInfo //活跃提现记录信息
411 451 Task TaskInfo //玩家任务完成相关信息
412 452 Achieve AchieveMentInfo //玩家成就完成相关数据
... ...
src/HttpServer/logic/function.go
... ... @@ -1340,6 +1340,105 @@ func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype in
1340 1340 return resp.Data.Mycoin,realaddgoldnum, nil
1341 1341 }
1342 1342  
  1343 +func GetCashWechatFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl, ver string, checkcoin int) (string, error) {
  1344 +
  1345 + SERVERKEY := XIAOXINGXING_SERVERKEYTEST
  1346 + if gameid == "1015" {
  1347 + SERVERKEY = XIAOXINGXING_SERVERKEYTEST_1015
  1348 + }
  1349 +
  1350 + if gameid == "1020" {
  1351 + SERVERKEY = XIAOXINGXING_SERVERKEYTEST_1020
  1352 + }
  1353 +
  1354 + if goldnum == 0 || uuid == 0 || gameid == "" || channel == "" || openid == "" || ver == "" {
  1355 + logger.Error("GetCashFromSDK param empty")
  1356 + return "error", errors.New("param empty")
  1357 + }
  1358 + var paramlist []string
  1359 + var params TixianDesc
  1360 + params.Sign_type = "md5"
  1361 + params.Gameid = gameid
  1362 + params.Channel = channel
  1363 + params.Uid = uuid
  1364 + params.Time_stamp = strconv.Itoa(int(time.Now().Unix()))
  1365 + params.Headurl = headurl
  1366 + params.Money = goldnum
  1367 + params.Openid = openid
  1368 + params.Nickname = nickname
  1369 + params.Typ = 11
  1370 + params.Ver = ver
  1371 + params.Editcoin = 1
  1372 + params.Checkcoin = checkcoin
  1373 + signtypestr := "sign_type=" + params.Sign_type
  1374 + timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix()))
  1375 + paramgameid := "gameid=" + gameid
  1376 + pchannel := "channel=" + channel
  1377 + puid := "uid=" + strconv.Itoa(uuid)
  1378 + phead := "headurl=" + headurl
  1379 + pnickname := "nickname=" + nickname
  1380 + popenid := "openid=" + openid
  1381 + pmoney := "money=" + strconv.Itoa(goldnum)
  1382 + ptype := "typ=" + "11" //微信
  1383 + ped := "editcoin=1"
  1384 + pcheco := "checkcoin=" + strconv.Itoa(checkcoin)
  1385 + //pver := "ver=" + params.Ver
  1386 + paramlist = append(paramlist, signtypestr)
  1387 + paramlist = append(paramlist, timestampstr)
  1388 + paramlist = append(paramlist, paramgameid)
  1389 + paramlist = append(paramlist, pchannel)
  1390 + paramlist = append(paramlist, puid)
  1391 + if headurl != "" {
  1392 + paramlist = append(paramlist, phead)
  1393 + }
  1394 + if nickname != "" {
  1395 + paramlist = append(paramlist, pnickname)
  1396 + }
  1397 + paramlist = append(paramlist, popenid)
  1398 + paramlist = append(paramlist, pmoney)
  1399 + paramlist = append(paramlist, ptype)
  1400 + paramlist = append(paramlist, ped)
  1401 + paramlist = append(paramlist, pcheco)
  1402 + //paramlist = append(paramlist, pver)
  1403 +
  1404 + sumparam := GettotalParam(paramlist)
  1405 + //加serverkey
  1406 + signsum := sumparam + SERVERKEY
  1407 +
  1408 + //进行hash
  1409 + sign := GetHashValue(signsum)
  1410 + params.Sign = sign
  1411 +
  1412 + bys, err := json.Marshal(&params)
  1413 + if err != nil {
  1414 + logger.Error("GetCashWechatFromSDK failed=%v", err)
  1415 + return "error", err
  1416 + }
  1417 + res, err := DoHttpPost(bys, "api/server/tixiancdkey")
  1418 + logger.Info("GetCashWechatFromSDK sumparam is:%v,sign is:%v", signsum, sign)
  1419 + logger.Info("GetCashWechatFromSDK sumparam param=%v", string(bys))
  1420 + if err != nil {
  1421 + logger.Error("GetCashWechatFromSDK failed=%v", err)
  1422 + return "error", err
  1423 + }
  1424 +
  1425 + logger.Info("GetCashWechatFromSDK res=%v", res)
  1426 +
  1427 + var resp GetCashWechatResp
  1428 + err = json.Unmarshal([]byte(res), &resp)
  1429 + if err != nil {
  1430 + logger.Error("GetCashWechatFromSDK failed=%v", err)
  1431 + return "error", err
  1432 + }
  1433 +
  1434 + if resp.Code != "0" {
  1435 + logger.Error("GetCashWechatFromSDK failed=%v", resp.Msg)
  1436 + return "error", errors.New(resp.Msg)
  1437 + }
  1438 +
  1439 + return resp.Data.Cdkey, nil
  1440 +}
  1441 +
1343 1442 func GetCashFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl, ver string, checkcoin int) (int, error) {
1344 1443  
1345 1444 SERVERKEY := XIAOXINGXING_SERVERKEYTEST
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -53,6 +53,7 @@ func startServerHttpServe() {
53 53 http.HandleFunc("/eliminatestar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包
54 54 http.HandleFunc("/eliminatestar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口
55 55 http.HandleFunc("/eliminatestar/getcash", Getcash) //提现
  56 + http.HandleFunc("/eliminatestar/getcashwechat", Getcashwechat) //提现公众号
56 57 http.HandleFunc("/eliminatestar/getcashrecord", Getcashrecord) //提现记录列表
57 58 http.HandleFunc("/eliminatestar/onlinentf", Onlinentf) //在线通知
58 59 http.HandleFunc("/eliminatestar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度
... ... @@ -530,6 +531,27 @@ func Getcash(w http.ResponseWriter, r *http.Request) {
530 531 HandlerGetcash(w, s, Uuid)
531 532 }
532 533  
  534 +func Getcashwechat(w http.ResponseWriter, r *http.Request) {
  535 +
  536 + Uuid := 0
  537 + if len(r.Header) > 0 {
  538 + Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
  539 + }
  540 +
  541 + if Uuid == 0 {
  542 + SetHeader(w)
  543 + //logger.Error("Uuid is nil!")
  544 + return
  545 + }
  546 + result, _ := ioutil.ReadAll(r.Body)
  547 + r.Body.Close()
  548 +
  549 + s := string(result)
  550 + logger.Info("Getcashwechat , body:%v,uuid=%v", s, Uuid)
  551 +
  552 + HandlerGetcashwechat(w, s, Uuid)
  553 +}
  554 +
533 555 func Querdrawinfo(w http.ResponseWriter, r *http.Request) {
534 556  
535 557 Uuid := 0
... ...
src/HttpServer/logic/logic.go
... ... @@ -108,6 +108,162 @@ func HandlerWatchads(w http.ResponseWriter, data string, uuid int) {
108 108 fmt.Fprint(w, string(respstr))*/
109 109 }
110 110  
  111 +
  112 +func HandlerGetcashwechat(w http.ResponseWriter, data string, uuid int) {
  113 + SetHeader(w)
  114 + var resp GetcashwechatResp
  115 + resp.Code = 0
  116 + var rdata GetcashwechatReq
  117 + err := json.Unmarshal([]byte(data), &rdata)
  118 + for {
  119 + if err != nil {
  120 + logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data)
  121 + resp.Message = "json解析错误"
  122 + resp.Code = ERROR_JSONUNMASH_ERROR
  123 + break
  124 + }
  125 + //临时处理一下
  126 + /*if rdata.Ver == "" {
  127 + rdata.Ver = "2.0.0"
  128 + }*/
  129 +
  130 + //需要加上渠道才是唯一的玩家id,不同渠道视为不同数据
  131 + uniqueuuid := strconv.Itoa(uuid) + rdata.Channel
  132 + uinfo, err := GetUserInfo(uniqueuuid)
  133 + if err != nil || uinfo == nil {
  134 + logger.Error("redis failed err=%v", err)
  135 + resp.Message = "服务器错误"
  136 + resp.Code = ERROR_SRV_ERROR
  137 + break
  138 + }
  139 +
  140 + drawnum := int(rdata.Money * 100)
  141 + //需要判断一下金币是否足够
  142 + if drawnum*100 > uinfo.RealGold {
  143 + logger.Error("gold nor enough failed err=%v", err)
  144 + resp.Message = "提现金币不足"
  145 + resp.Code = ERROR_GETCASH_GOLDNOTENOUGH_FAILED
  146 + break
  147 + }
  148 +
  149 + //需要处理一下提现级别
  150 +
  151 + index := 0
  152 + var info *WithDrawDesc
  153 + if rdata.Ctype == 1 {
  154 + index, info = uinfo.GetWithDrawData(rdata.Money)
  155 + } else {
  156 + index, info = uinfo.GetSpecialWithDrawData(rdata.Money)
  157 + }
  158 +
  159 + if index == -1 || info == nil {
  160 + logger.Error("AddWithDrawList failed err=%v", err)
  161 + resp.Message = "网络错误"
  162 + resp.Code = ERROR_SRV_ERROR
  163 + break
  164 + }
  165 +
  166 + if uinfo.Lv < info.Limitlv {
  167 + logger.Error("AddWithDrawList failed err=%v", err)
  168 + resp.Message = "完成日常任务可以提升人物等级哦~"
  169 + resp.Code = ERROR_WITHDRAWLVLIMIT
  170 + break
  171 + }
  172 +
  173 + if info.Isnew == 0 {
  174 + logger.Error("AddWithDrawList failed err=%v", err)
  175 + resp.Message = "新人专享只能提取一次"
  176 + resp.Code = ERROR_WITHDRAWONLYONE
  177 + break
  178 + }
  179 +
  180 + if info.Preisfind == 0 {
  181 + logger.Error("HandlerGetcash Preisfind err=%v", err)
  182 + resp.Message = "请先完成前一档提现"
  183 + resp.Code = ERROR_PRENOTFINISH
  184 + break
  185 + }
  186 +
  187 + //普通提现需要判断前置条件
  188 + if rdata.Ctype == 1 {
  189 + //判断一下前置条件的下一档
  190 + if index == len(uinfo.WithDraw.Cashdata)-1 {
  191 + //最后一档了不用处理
  192 + } else {
  193 + if index < len(uinfo.WithDraw.Cashdata)-1 {
  194 + uinfo.WithDraw.Cashdata[index+1].Preisfind = 1
  195 + }
  196 + }
  197 + }
  198 +
  199 + //如果是2.2.7版本开启提现次数限制
  200 + if rdata.Ver == "2.2.7" && uinfo.GetCashCnt > 0 {
  201 + logger.Error("HandlerGetcash GetCashCnt err=%v", err)
  202 + resp.Message = "当天已经提现过了,请明天再来"
  203 + resp.Code = ERROR_PRENOTFINISH
  204 + break
  205 + }
  206 +
  207 + if uinfo.SumLoginDay < info.Day {
  208 + logger.Error("HandlerGetcash GetCashCnt err=%v", err)
  209 + resp.Message = "累计登陆天数不足"
  210 + resp.Code = ERROR_PRENOTFINISH
  211 + break
  212 + }
  213 +
  214 + //2.2.5版本开启自动审核
  215 + checkcoin := 2
  216 + if rdata.Ver == "2.2.5" || rdata.Ver == "2.2.6" || rdata.Ver == "2.2.7" {
  217 + logger.Info("HandlerGetcash autocheckcoin")
  218 + if drawnum <= 150 {
  219 + //1.5挡位以下不需要审核
  220 + checkcoin = 1 //临时关闭u
  221 + }
  222 + }
  223 +
  224 + cdkey, err := GetCashWechatFromSDK(uuid, drawnum, rdata.Gameid, rdata.Channel, rdata.Openid, rdata.Nickname, rdata.Headurl, rdata.Ver, checkcoin)
  225 + if err != nil {
  226 + logger.Error("GetCashFromSDK failed err=%v", err)
  227 + resp.Message = "从后台提现失败了"
  228 + resp.Code = ERROR_GETCASH_FAILED
  229 + break
  230 + }
  231 + logger.Info("HandlerGetcashwechat cdkey=%v", cdkey)
  232 +
  233 + //保存cdkey
  234 + var tmp CashCdKeyInfo
  235 + tmp.Cdkey = cdkey
  236 + tmp.Money = rdata.Money
  237 + tmp.Id = info.Cid
  238 + uinfo.Cdkeys = append(uinfo.Cdkeys, tmp)
  239 +
  240 + uinfo.GetCashCnt++
  241 + //如果是前六挡
  242 + if info.Cid <= 6 && rdata.Ctype == 1 {
  243 + uinfo.WithDraw.Cashdata[index].Isnew = 0
  244 + }
  245 + if rdata.Ctype == 2 {
  246 + uinfo.WithDraw.SpecialCashdata[index].Isnew = 0
  247 + }
  248 +
  249 + uinfo.RealGold += drawnum * 100
  250 + //uinfo.RealGold -= drawnum * 100
  251 +
  252 + resp.Data.Cdkey = cdkey
  253 + SaveUserInfo(uinfo, uniqueuuid)
  254 +
  255 + resp.Code = ERROR_OK
  256 + break
  257 + }
  258 +
  259 + //回包
  260 + logger.Info("HandlerGetcashwechat resp=%+v", resp)
  261 + respstr, _ := json.Marshal(&resp)
  262 + fmt.Fprint(w, string(respstr))
  263 +
  264 +}
  265 +
  266 +
111 267 func HandlerGetcash(w http.ResponseWriter, data string, uuid int) {
112 268 SetHeader(w)
113 269 var resp GetcashResp
... ... @@ -958,6 +1114,7 @@ func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) {
958 1114 //返回
959 1115 resp.Data.Cashdata = append(resp.Data.Cashdata, uinfo.WithDraw.Cashdata...)
960 1116 resp.Data.SpecialCashdata = append(resp.Data.SpecialCashdata, uinfo.WithDraw.SpecialCashdata...)
  1117 + resp.Data.Cdkeycashdata = append(resp.Data.Cdkeycashdata, uinfo.Cdkeys...)
961 1118  
962 1119 resp.Code = ERROR_OK
963 1120 break
... ...