|
@@ -1,6 +1,7 @@
|
|
|
package service
|
|
|
|
|
|
import (
|
|
|
+<<<<<<< HEAD
|
|
|
"encoding/base64"
|
|
|
"fmt"
|
|
|
"jy/src/jfw/modules/publicapply/src/config"
|
|
@@ -18,101 +19,139 @@ import (
|
|
|
|
|
|
"app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
|
"github.com/SKatiyar/qr"
|
|
|
+=======
|
|
|
+ . "api"
|
|
|
+ "config"
|
|
|
+ "db"
|
|
|
+ "encoding/base64"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ qu "qfw/util"
|
|
|
+ "qfw/util/jy"
|
|
|
+ "qfw/util/redis"
|
|
|
+ "shareFission/entity"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/SKatiyar/qr"
|
|
|
+ "github.com/go-xweb/xweb"
|
|
|
+>>>>>>> feature/v4.7.53
|
|
|
)
|
|
|
|
|
|
type Share struct {
|
|
|
- *xweb.Action
|
|
|
- info xweb.Mapper `xweb:"/shareFission/info"`
|
|
|
- receive xweb.Mapper `xweb:"/shareFission/receive"`
|
|
|
- list xweb.Mapper `xweb:"/shareFission/list"`
|
|
|
- qwe xweb.Mapper `xweb:"/qwe"`
|
|
|
+ *xweb.Action
|
|
|
+ info xweb.Mapper `xweb:"/shareFission/info"`
|
|
|
+ reportInfo xweb.Mapper `xweb:"/shareFission/reportInfo"` // 年终报告分享地址
|
|
|
+ receive xweb.Mapper `xweb:"/shareFission/receive"`
|
|
|
+ list xweb.Mapper `xweb:"/shareFission/list"`
|
|
|
+ qwe xweb.Mapper `xweb:"/qwe"`
|
|
|
}
|
|
|
|
|
|
func (this *Share) Qwe() {
|
|
|
- rwe := db.Mgo.Count("user", map[string]interface{}{"s_m_openid": "o7Y1g0Rz_1JmNep3lnIU4lfjeooI", "i_appid": 2})
|
|
|
- log.Println(rwe)
|
|
|
+ rwe := db.Mgo.Count("user", map[string]interface{}{"s_m_openid": "o7Y1g0Rz_1JmNep3lnIU4lfjeooI", "i_appid": 2})
|
|
|
+ log.Println(rwe)
|
|
|
}
|
|
|
|
|
|
func (this *Share) Info() {
|
|
|
- defer qu.Catch()
|
|
|
- userid, _ := this.GetSession("userId").(string)
|
|
|
- r := func() map[string]interface{} {
|
|
|
- res := map[string]interface{}{}
|
|
|
- keyUser := fmt.Sprintf("SF_%s", userid)
|
|
|
- if value := redis.GetStr(config.ShareConfig.ShareRedis, keyUser); value != "" {
|
|
|
- varr := strings.Split(value, "#@#@")
|
|
|
- link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, varr[3])
|
|
|
- if config.ShareConfig.MayActive != "" {
|
|
|
- link += config.ShareConfig.MayActive
|
|
|
- }
|
|
|
- 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 := entity.VarLSCPool.GetJob()
|
|
|
- shareIdKey := fmt.Sprintf("shareId_%s", shareId)
|
|
|
- value := fmt.Sprintf("%s#@#@%s#@#@%s#@#@%s", userid, nickname, headimageurl, shareIdKey)
|
|
|
- redis.Put(config.ShareConfig.ShareRedis, shareIdKey, userid, -1)
|
|
|
- redis.Put(config.ShareConfig.ShareRedis, keyUser, value, -1)
|
|
|
- link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, shareIdKey)
|
|
|
- if config.ShareConfig.MayActive != "" {
|
|
|
- link += config.ShareConfig.MayActive
|
|
|
- }
|
|
|
- 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"] = ""
|
|
|
- }
|
|
|
- return res
|
|
|
- }()
|
|
|
- this.ServeJson(r)
|
|
|
+ defer qu.Catch()
|
|
|
+ userid, _ := this.GetSession("userId").(string)
|
|
|
+ r := func() map[string]interface{} {
|
|
|
+ res := map[string]interface{}{}
|
|
|
+ keyUser := fmt.Sprintf("SF_%s", userid)
|
|
|
+ if value := redis.GetStr(config.ShareConfig.ShareRedis, keyUser); value != "" {
|
|
|
+ varr := strings.Split(value, "#@#@")
|
|
|
+ link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, varr[3])
|
|
|
+ if config.ShareConfig.MayActive != "" {
|
|
|
+ link += config.ShareConfig.MayActive
|
|
|
+ }
|
|
|
+ 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 := entity.VarLSCPool.GetJob()
|
|
|
+ shareIdKey := fmt.Sprintf("shareId_%s", shareId)
|
|
|
+ value := fmt.Sprintf("%s#@#@%s#@#@%s#@#@%s", userid, nickname, headimageurl, shareIdKey)
|
|
|
+ redis.Put(config.ShareConfig.ShareRedis, shareIdKey, userid, -1)
|
|
|
+ redis.Put(config.ShareConfig.ShareRedis, keyUser, value, -1)
|
|
|
+ link := fmt.Sprintf("%s/front/followGift/%s", config.ShareConfig.Webdomain, shareIdKey)
|
|
|
+ if config.ShareConfig.MayActive != "" {
|
|
|
+ link += config.ShareConfig.MayActive
|
|
|
+ }
|
|
|
+ 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"] = ""
|
|
|
+ }
|
|
|
+ return res
|
|
|
+ }()
|
|
|
+ this.ServeJson(r)
|
|
|
+}
|
|
|
+
|
|
|
+// ReportInfo 年终报告分享地址
|
|
|
+func (this *Share) ReportInfo() {
|
|
|
+ defer qu.Catch()
|
|
|
+ r := func() map[string]interface{} {
|
|
|
+ res := map[string]interface{}{}
|
|
|
+ link := fmt.Sprintf("%s/active/transit/yearEndReport", config.ShareConfig.Webdomain)
|
|
|
+ r, _ := qr.Encode(link, qr.M)
|
|
|
+ pngdat := r.PNG()
|
|
|
+ res["data"] = map[string]interface{}{
|
|
|
+ "shareLink": link, //微信分享链接
|
|
|
+ "erUrl": base64.StdEncoding.EncodeToString(pngdat),
|
|
|
+ }
|
|
|
+ res["error_code"] = 0
|
|
|
+ res["error_msg"] = ""
|
|
|
+ return res
|
|
|
+ }()
|
|
|
+ this.ServeJson(r)
|
|
|
}
|
|
|
|
|
|
//邀请人列表
|
|
|
func (this *Share) List() {
|
|
|
- userid, _ := this.GetSession("userId").(string)
|
|
|
- pNum, _ := this.GetInteger("pageNum")
|
|
|
- pSize, _ := this.GetInteger("pagesize")
|
|
|
- rdata := map[string]interface{}{
|
|
|
- "count": 0,
|
|
|
- "haveNextPage": false,
|
|
|
- "res": []map[string]interface{}{},
|
|
|
- }
|
|
|
- query := map[string]interface{}{
|
|
|
- "share_uid": userid,
|
|
|
- }
|
|
|
- count := db.Mgo.Count("user_share", query)
|
|
|
- if count == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
- result, _ := db.Mgo.Find("user_share", query, `{"createtime":-1}`, `{"shared_uid":1}`, false, pNum*pSize, pSize)
|
|
|
- haveNextPage := (pNum+1)*pSize < count
|
|
|
- rdata["count"] = count
|
|
|
- rdata["haveNextPage"] = haveNextPage
|
|
|
- rdata["pageSize"] = pSize
|
|
|
- rdata["res"] = Info(result)
|
|
|
- this.ServeJson(Result{Data: rdata, Error_msg: ""})
|
|
|
+ userid, _ := this.GetSession("userId").(string)
|
|
|
+ pNum, _ := this.GetInteger("pageNum")
|
|
|
+ pSize, _ := this.GetInteger("pagesize")
|
|
|
+ rdata := map[string]interface{}{
|
|
|
+ "count": 0,
|
|
|
+ "haveNextPage": false,
|
|
|
+ "res": []map[string]interface{}{},
|
|
|
+ }
|
|
|
+ query := map[string]interface{}{
|
|
|
+ "share_uid": userid,
|
|
|
+ }
|
|
|
+ count := db.Mgo.Count("user_share", query)
|
|
|
+ if count == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ result, _ := db.Mgo.Find("user_share", query, `{"createtime":-1}`, `{"shared_uid":1}`, false, pNum*pSize, pSize)
|
|
|
+ haveNextPage := (pNum+1)*pSize < count
|
|
|
+ rdata["count"] = count
|
|
|
+ rdata["haveNextPage"] = haveNextPage
|
|
|
+ rdata["pageSize"] = pSize
|
|
|
+ rdata["res"] = Info(result)
|
|
|
+ this.ServeJson(Result{Data: rdata, Error_msg: ""})
|
|
|
|
|
|
}
|
|
|
|
|
|
//立即领取
|
|
|
func (this *Share) Receive() {
|
|
|
+<<<<<<< HEAD
|
|
|
if !R.CheckReqParam(this.ResponseWriter, this.Request, "oid", "shareId") {
|
|
|
return
|
|
|
}
|
|
@@ -131,63 +170,83 @@ func (this *Share) Receive() {
|
|
|
return redis.Put(config.ShareConfig.ShareRedis, redisKey, shareUserid, timeOut()), ""
|
|
|
}()
|
|
|
this.ServeJson(Result{Data: M{"status": status}, Error_msg: msg})
|
|
|
+=======
|
|
|
+ if !R.CheckReqParam(this.ResponseWriter, this.Request, "oid", "shareId") {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ status, msg := func() (bool, string) {
|
|
|
+ openid := qu.SE.DecodeString(this.GetString("oid")) //被分享者openid
|
|
|
+ if db.Mgo.Count("user", map[string]interface{}{"s_m_openid": openid, "i_appid": 2}) > 0 {
|
|
|
+ return false, "老用户无法领取奖励"
|
|
|
+ }
|
|
|
+ shareId := this.GetString("shareId")
|
|
|
+ redisKey := fmt.Sprintf("rec_%s", openid)
|
|
|
+ log.Println(openid, shareId, redisKey) //分享者和被分享者对应关系
|
|
|
+ shareUserid := redis.GetStr(config.ShareConfig.ShareRedis, shareId) //获取分享者
|
|
|
+ if shareUserid == "" {
|
|
|
+ return false, "领取失败"
|
|
|
+ }
|
|
|
+ return redis.Put(config.ShareConfig.ShareRedis, redisKey, shareUserid, timeOut()), ""
|
|
|
+ }()
|
|
|
+ this.ServeJson(Result{Data: M{"status": status}, Error_msg: msg})
|
|
|
+>>>>>>> feature/v4.7.53
|
|
|
|
|
|
}
|
|
|
|
|
|
type UserInfo struct {
|
|
|
- HeadImg interface{} `json:"headimg"`
|
|
|
- Name interface{} `json:"name"`
|
|
|
- Createtime interface{} `json:"createtime"`
|
|
|
+ HeadImg interface{} `json:"headimg"`
|
|
|
+ Name interface{} `json:"name"`
|
|
|
+ Createtime interface{} `json:"createtime"`
|
|
|
}
|
|
|
|
|
|
func Info(data *[]map[string]interface{}) []*UserInfo {
|
|
|
- userinfo := []*UserInfo{}
|
|
|
- if len(*data) > 0 {
|
|
|
- for _, v := range *data {
|
|
|
- sharedId := qu.ObjToString(v["shared_uid"])
|
|
|
- if rdata := GetInfo(sharedId); rdata != nil {
|
|
|
- userinfo = append(userinfo, &UserInfo{
|
|
|
- HeadImg: rdata["headimageurl"],
|
|
|
- Name: rdata["nickname"],
|
|
|
- Createtime: rdata["createtime"],
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return userinfo
|
|
|
+ userinfo := []*UserInfo{}
|
|
|
+ if len(*data) > 0 {
|
|
|
+ for _, v := range *data {
|
|
|
+ sharedId := qu.ObjToString(v["shared_uid"])
|
|
|
+ if rdata := GetInfo(sharedId); rdata != nil {
|
|
|
+ userinfo = append(userinfo, &UserInfo{
|
|
|
+ HeadImg: rdata["headimageurl"],
|
|
|
+ Name: rdata["nickname"],
|
|
|
+ Createtime: rdata["createtime"],
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return userinfo
|
|
|
}
|
|
|
|
|
|
//到期时间
|
|
|
func timeOut() int {
|
|
|
- now := time.Now()
|
|
|
- return int(now.AddDate(0, 0, config.ShareConfig.SaveTime).Unix() - now.Unix())
|
|
|
+ now := time.Now()
|
|
|
+ return int(now.AddDate(0, 0, config.ShareConfig.SaveTime).Unix() - now.Unix())
|
|
|
}
|
|
|
|
|
|
//获取用户头像,手机号
|
|
|
func GetInfo(userid string) map[string]interface{} {
|
|
|
- rdata, ok := db.Mgo.FindById("user", userid, `{"s_headimageurl":1,"s_headimage":1,"s_phone":1,"s_m_phone":1,"s_nickname":1,"l_registedate":1}`)
|
|
|
- if ok && len(*rdata) > 0 && rdata != nil {
|
|
|
- nickname, headimageurl := "", ""
|
|
|
- if s_phone, _ := (*rdata)["s_phone"].(string); s_phone != "" {
|
|
|
- nickname = s_phone
|
|
|
- } else if s_m_phone, _ := (*rdata)["s_m_phone"].(string); s_m_phone != "" {
|
|
|
- nickname = s_m_phone
|
|
|
- } else if s_nickname, _ := (*rdata)["s_nickname"].(string); s_nickname != "" {
|
|
|
- nickname = s_nickname
|
|
|
- }
|
|
|
- if jy.IsPhone(nickname) {
|
|
|
- nickname = string(nickname[0:3]) + "****" + string(nickname[len(nickname)-4:])
|
|
|
- }
|
|
|
- if s_headimageurl, _ := (*rdata)["s_headimageurl"].(string); s_headimageurl != "" {
|
|
|
- headimageurl = s_headimageurl
|
|
|
- } else if s_headimage, _ := (*rdata)["s_headimage"].(string); s_headimage != "" {
|
|
|
- headimageurl = config.ShareConfig.Webdomain + s_headimage
|
|
|
- }
|
|
|
- return map[string]interface{}{
|
|
|
- "nickname": nickname,
|
|
|
- "headimageurl": headimageurl,
|
|
|
- "createtime": (*rdata)["l_registedate"],
|
|
|
- }
|
|
|
- }
|
|
|
- return nil
|
|
|
+ rdata, ok := db.Mgo.FindById("user", userid, `{"s_headimageurl":1,"s_headimage":1,"s_phone":1,"s_m_phone":1,"s_nickname":1,"l_registedate":1}`)
|
|
|
+ if ok && len(*rdata) > 0 && rdata != nil {
|
|
|
+ nickname, headimageurl := "", ""
|
|
|
+ if s_phone, _ := (*rdata)["s_phone"].(string); s_phone != "" {
|
|
|
+ nickname = s_phone
|
|
|
+ } else if s_m_phone, _ := (*rdata)["s_m_phone"].(string); s_m_phone != "" {
|
|
|
+ nickname = s_m_phone
|
|
|
+ } else if s_nickname, _ := (*rdata)["s_nickname"].(string); s_nickname != "" {
|
|
|
+ nickname = s_nickname
|
|
|
+ }
|
|
|
+ if jy.IsPhone(nickname) {
|
|
|
+ nickname = string(nickname[0:3]) + "****" + string(nickname[len(nickname)-4:])
|
|
|
+ }
|
|
|
+ if s_headimageurl, _ := (*rdata)["s_headimageurl"].(string); s_headimageurl != "" {
|
|
|
+ headimageurl = s_headimageurl
|
|
|
+ } else if s_headimage, _ := (*rdata)["s_headimage"].(string); s_headimage != "" {
|
|
|
+ headimageurl = config.ShareConfig.Webdomain + s_headimage
|
|
|
+ }
|
|
|
+ return map[string]interface{}{
|
|
|
+ "nickname": nickname,
|
|
|
+ "headimageurl": headimageurl,
|
|
|
+ "createtime": (*rdata)["l_registedate"],
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
}
|