123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- package share
- import (
- qu "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/redis"
- "app.yhyue.com/moapp/message/config"
- "app.yhyue.com/moapp/message/db"
- "encoding/base64"
- "fmt"
- "github.com/SKatiyar/qr"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/net/ghttp"
- "go.mongodb.org/mongo-driver/bson/primitive"
- "log"
- "strings"
- )
- type ShareRouter struct{}
- func (c *ShareRouter) Info(r *ghttp.Request) {
- userid := r.Header.Get("userId")
- res := map[string]interface{}{}
- keyUser := fmt.Sprintf("SF_%s", userid)
- if value := redis.GetStr("other", keyUser); value != "" {
- varr := strings.Split(value, "#@#@")
- link := fmt.Sprintf("%s/front/followGift/%s", config.PushConfig.Webdomain, varr[3])
- r, _ := qr.Encode(link, qr.M)
- pngdat := r.PNG()
- res["data"] = map[string]interface{}{
- "shareId": varr[3], //口令
- "shareLink": link, //微信分享链接
- "erUrl": base64.StdEncoding.EncodeToString(pngdat),
- }
- res["error_code"] = 0
- res["error_msg"] = ""
- } else {
- nickname, headimageurl := "", ""
- if data := GetInfo(userid); data != nil {
- nickname = qu.ObjToString(data["nickname"])
- headimageurl = qu.ObjToString(data["headimageurl"])
- }
- shareId := VarLSCPool.GetJob()
- shareIdKey := fmt.Sprintf("shareId_%s", shareId)
- value := fmt.Sprintf("%s#@#@%s#@#@%s#@#@%s", userid, nickname, headimageurl, shareIdKey)
- redis.Put("other", shareIdKey, userid, -1)
- redis.Put("other", keyUser, value, -1)
- link := fmt.Sprintf("%s/front/followGift/%s", config.PushConfig.Webdomain, shareIdKey)
- r, _ := qr.Encode(link, qr.M)
- pngdat := r.PNG()
- res["data"] = map[string]interface{}{
- "shareId": shareIdKey, //口令
- "shareLink": link, //微信分享链接
- "erUrl": base64.StdEncoding.EncodeToString(pngdat),
- }
- res["error_code"] = 0
- res["error_msg"] = ""
- }
- r.Response.WriteJson(res)
- }
- func (c *ShareRouter) Receive(r *ghttp.Request) {
- userid := r.Header.Get("userId") //被分享者userid
- uid, _ := primitive.ObjectIDFromHex(userid)
- if db.Mgo.Count("user", map[string]interface{}{"_id": uid, "i_appid": 2}) > 0 {
- r.Response.WriteJson(g.Map{
- "error_code": -1,
- "error_msg": "老用户无法领取奖励",
- "data": map[string]interface{}{
- "status": false,
- },
- })
- return
- }
- shareId := r.Get("shareId").String()
- redisKey := fmt.Sprintf("rec_%s", userid)
- log.Println(userid, shareId, redisKey) //分享者和被分享者对应关系
- shareUserid := redis.GetStr("other", shareId) //获取分享者
- if shareUserid == "" {
- r.Response.WriteJson(g.Map{
- "error_code": -1,
- "error_msg": "领取失败",
- "data": map[string]interface{}{
- "status": false,
- },
- })
- return
- }
- r.Response.WriteJson(g.Map{
- "error_code": 0,
- "error_msg": "",
- "data": map[string]interface{}{
- "status": redis.Put("other", redisKey, shareUserid, timeOut()),
- },
- })
- }
- func (c *ShareRouter) List(r *ghttp.Request) {
- rdata := map[string]interface{}{
- "count": 0,
- "haveNextPage": false,
- "res": []map[string]interface{}{},
- }
- userid := r.Header.Get("userId")
- pNum := r.Get("pageNum").Int()
- pSize := r.Get("pageSize").Int()
- if pSize == 0 && pNum == 0 {
- pSize = -1
- pNum = 1
- }
- query := map[string]interface{}{
- "share_uid": userid,
- }
- count := db.Mgo.Count("user_share", query)
- if count == 0 {
- r.Response.WriteJson(g.Map{
- "error_code": 0,
- "error_msg": "",
- "data": rdata,
- })
- return
- }
- result, _ := db.Mgo.Find("user_share", query, `{"createtime":-1}`, `{"shared_uid":1}`, false, pNum*pSize, pSize)
- if pSize != -1 {
- haveNextPage := (pNum+1)*pSize < count
- rdata["haveNextPage"] = haveNextPage
- }
- rdata["count"] = count
- rdata["res"] = Info(result)
- r.Response.WriteJson(g.Map{
- "error_code": 0,
- "error_msg": "",
- "data": rdata,
- })
- }
- func (c *ShareRouter) Followgift(r *ghttp.Request) {
- shareid := r.Get("shareId").String()
- fdata := map[string]interface{}{
- "error_code": 0,
- "error_msg": "",
- }
- idata := map[string]interface{}{}
- if shareUserid := redis.GetStr("other", shareid); shareUserid == "" {
- r.Response.WriteJson(g.Map{
- "error_code": -1,
- "error_msg": "无数据",
- })
- return
- } else {
- infos := redis.GetStr("other", fmt.Sprintf("SF_%s", shareUserid))
- if infos != "" {
- nickname := strings.Split(infos, "#@#@")[1]
- if strings.Contains(nickname, "****") {
- idata["share_nickname"] = nickname
- } else if IsPhone(nickname) {
- idata["share_nickname"] = string(nickname[0:3]) + "****" + nickname[len(nickname)-4:]
- }
- idata["share_headImg"] = strings.Split(infos, "#@#@")[2]
- idata["isWeixin"] = CheckWxBrowser(r.Request)
- link := fmt.Sprintf("%s/front/followGift/%s", qu.ObjToString(config.PushConfig.Webdomain), strings.Split(infos, "#@#@")[3])
- p, _ := qr.Encode(link, qr.M)
- pngdat := p.PNG()
- idata["share_qr"] = base64.StdEncoding.EncodeToString(pngdat)
- idata["shareid"] = shareid
- fdata["data"] = idata
- r.Response.WriteJson(fdata)
- } else {
- r.Response.WriteJson(g.Map{
- "error_code": -1,
- "error_msg": "无数据",
- })
- }
- }
- }
|