Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/dev1.1.1' into dev1.1.1

xmy 3 rokov pred
rodič
commit
c5303c3c54

+ 85 - 0
services/activity/myPrize.go

@@ -0,0 +1,85 @@
+package activity
+
+import (
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/message/db"
+	"app.yhyue.com/moapp/message/util"
+	"fmt"
+	"log"
+
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/net/ghttp"
+)
+
+type MyPrize struct {
+}
+
+func (c *MyPrize) Show(r *ghttp.Request) {
+	var (
+		allShare    []map[string]interface{}
+		max         = 4
+		shareStatus = "share_interests" //默认邀请权益 用户判断
+	)
+	userid := r.Get("userId").String()
+	aData, b := db.Mgo.FindOne("user_share", map[string]interface{}{"shared_uid": userid})
+	if aData != nil && len(*aData) > 0 && b {
+		max = 3
+		allShare = append(allShare, *aData)
+	}
+	fmt.Println("被邀请人信息:", aData)
+	query := map[string]interface{}{
+		"share_uid":       userid,
+		"share_interests": map[string]interface{}{"$exists": 0},
+	}
+	//老版用户关联
+	bData, _b := db.Mgo.Find("user_share", query, `{"createtime":1}`, nil, false, 0, max)
+	if bData != nil && len(*bData) > 0 && _b {
+		allShare = append(allShare, *bData...)
+	}
+	log.Println("老版邀请用户关联信息:", bData)
+	//share_interests:不存在为老版本信息 1:赠送超级订阅与剑鱼币, 2赠送剑鱼币
+	delete(query, "share_interests")
+	query["share_interests"] = map[string]interface{}{"$in": []int{1, 2}}
+	cData, _s := db.Mgo.Find("user_share", query, "", nil, false, -1, -1)
+	if cData != nil && len(*cData) > 0 && _s {
+		allShare = append(allShare, *cData...)
+	}
+	log.Println("新版邀请用户关联信息:", cData)
+	var allData []map[string]interface{}
+
+	for _, data := range allShare {
+		_d := make(map[string]interface{})  //超级订阅数据
+		_ds := make(map[string]interface{}) //剑鱼币数据
+		if data == nil || len(data) < 1 {
+			continue
+		}
+		_ds["prizeMethods"] = 0
+		_ds["createTime"] = data["createtime"]
+		_ds["prizeName"] = "500剑鱼币"
+		_d["prizeMethods"] = 0
+		_d["prizeName"] = "7天超级订阅"
+		_d["createTime"] = data["createtime"]
+
+		if common.InterfaceToStr(data["share_uid"]) != userid {
+			shareStatus = "shared_interests"
+			_d["prizeMethods"] = 1
+			_ds["prizeMethods"] = 1
+		}
+		if common.IntAll(data[shareStatus]) == 0 {
+			allData = append(allData, _d)
+		} else if common.IntAll(data[shareStatus]) == 1 {
+			allData = append(allData, _d, _ds)
+		} else if common.IntAll(data[shareStatus]) == 2 {
+			allData = append(allData, _ds)
+		}
+	}
+	util.SortData(&allData, "createTime", true)
+	err := r.Response.WriteJson(g.Map{
+		"error_code": 0,
+		"error_msg":  "",
+		"data":       allData,
+	})
+	if err != nil {
+		return
+	}
+}

+ 0 - 0
services/share/service.go → services/activity/share/service.go


+ 0 - 0
services/share/sharecommon.go → services/activity/share/sharecommon.go


+ 4 - 1
services/init.go

@@ -1,7 +1,8 @@
 package services
 
 import (
-	"app.yhyue.com/moapp/message/services/share"
+	"app.yhyue.com/moapp/message/services/activity"
+	"app.yhyue.com/moapp/message/services/activity/share"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
 )
@@ -13,5 +14,7 @@ func InitActivityServer() *ghttp.Server {
 
 	//活动
 
+	//我的奖励
+	activityServer.BindObject("/myPrize", new(activity.MyPrize))
 	return activityServer
 }

+ 95 - 0
util/utils.go

@@ -0,0 +1,95 @@
+package util
+
+import (
+	"encoding/json"
+	"fmt"
+	"reflect"
+	"sort"
+)
+
+// 排序 排序键必须为数字类型
+type SortBy struct {
+	Data    []map[string]interface{}
+	Sortkey string
+}
+
+func (a SortBy) Len() int { return len(a.Data) }
+
+func (a SortBy) Swap(i, j int) {
+	a.Data[i], a.Data[j] = a.Data[j], a.Data[i]
+}
+
+func (a SortBy) Less(i, j int) bool {
+	//return Float64(a.Data[i][a.Sortkey]) < Float64(a.Data[j][a.Sortkey])
+	m := a.Data[i][a.Sortkey]
+	n := a.Data[j][a.Sortkey]
+	w := reflect.ValueOf(m)
+	v := reflect.ValueOf(n)
+	switch v.Kind() {
+	case reflect.String:
+		return w.String() < v.String()
+	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+		return w.Int() < v.Int()
+	case reflect.Float64, reflect.Float32:
+		return w.Float() < v.Float()
+	default:
+		return fmt.Sprintf("%v", w) < fmt.Sprintf("%v", v)
+	}
+}
+
+// data 转换成ret
+func Bind(data interface{}, ret interface{}) error {
+	v := reflect.ValueOf(ret)
+	if v.Kind() != reflect.Ptr {
+		return fmt.Errorf("ptr input ret needed as type as input type %s", v.Kind())
+	}
+	havdata := false
+	var bk interface{}
+	if v.Elem().Kind() == reflect.Slice {
+		t := reflect.Zero(reflect.TypeOf(v.Elem().Interface()))
+		bk = v.Elem().Interface()
+		v.Elem().Set(t)
+		havdata = true
+	}
+	_data, _ := json.MarshalIndent(data, "", "    ")
+	err := json.Unmarshal(_data, ret)
+	if err != nil {
+		fmt.Println(err)
+		if havdata {
+			v.Elem().Set(reflect.ValueOf(bk))
+		}
+		return err
+	}
+	return nil
+}
+
+//根据指定字符排序
+//m := []map[string]int{
+//	{"k": 2},
+//	{"k": 1},
+//	{"k": 3},
+//}
+//
+//customer.SortData(&m, "k", true)
+// ture  倒序3, 2, 1
+//fmt.Println(m)
+func SortData(data interface{}, sortkey string, reverse bool) {
+	//func SortData(data interface{}, sortkey string, reverse bool) {
+	var db []map[string]interface{}
+	err := Bind(data, &db)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	stb := SortBy{db, sortkey}
+	if !reverse {
+		sort.Sort(stb)
+	} else {
+		sort.Sort(sort.Reverse(stb))
+	}
+	err = Bind(stb.Data, data)
+	if err != nil {
+		fmt.Println(err)
+	}
+
+}