|
@@ -1,257 +0,0 @@
|
|
|
-package jyutil
|
|
|
-
|
|
|
-import (
|
|
|
- "encoding/json"
|
|
|
- "fmt"
|
|
|
- "io/ioutil"
|
|
|
- "log"
|
|
|
- "net/http"
|
|
|
- "reflect"
|
|
|
- "regexp"
|
|
|
- "sort"
|
|
|
-
|
|
|
- "app.yhyue.com/moapp/jypkg/public"
|
|
|
-
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
-
|
|
|
- util "app.yhyue.com/moapp/jybase/common"
|
|
|
- "app.yhyue.com/moapp/jybase/encrypt"
|
|
|
- . "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
- "app.yhyue.com/moapp/jybase/redis"
|
|
|
- usercenter "app.yhyue.com/moapp/jybase/usercenter"
|
|
|
-)
|
|
|
-
|
|
|
-var mongodb = public.MQFW
|
|
|
-var se = &encrypt.SimpleEncrypt{Key: "topnet2015topnet2015"}
|
|
|
-var Sysconfig map[string]interface{}
|
|
|
-var AC = &encrypt.AES_CBC{
|
|
|
- Key: "mGlAgnIBB8bx2nch",
|
|
|
- Iv: "1389461544135476",
|
|
|
-}
|
|
|
-
|
|
|
-//
|
|
|
-func FindMyShareId(activecode, openid string) string {
|
|
|
- defer util.Catch()
|
|
|
- ret, bres := mongodb.Find("person_share", "{'s_openid':'"+openid+"','s_businesscode':'"+activecode+"'}", `{"l_timestamp":-1}`, nil, true, -1, -1)
|
|
|
- var shareid string
|
|
|
- if bres {
|
|
|
- var shareData = make(map[string]interface{})
|
|
|
- var str = ""
|
|
|
- for _, v := range *ret {
|
|
|
- str = util.ObjToString(v["i_shareid"])
|
|
|
- }
|
|
|
- var tt = `^\d+$`
|
|
|
- a, _ := regexp.Compile(tt)
|
|
|
- if str == "" || a.MatchString(str) {
|
|
|
- data := make(map[string]interface{})
|
|
|
- data["s_openid"] = openid
|
|
|
- data["s_businesscode"] = activecode
|
|
|
- data["i_shareid"] = se.EncodeString(openid + "---" + activecode)
|
|
|
- data["l_timestamp"] = time.Now().Unix()
|
|
|
- mongodb.Save("person_share", data)
|
|
|
- shareid = openid + "---" + activecode
|
|
|
- } else {
|
|
|
- shareid = se.DecodeString(str)
|
|
|
- }
|
|
|
- odata := redis.Get("sso", "p_shareData_"+shareid)
|
|
|
- if odata == nil {
|
|
|
- shareData["action"] = "32"
|
|
|
- redis.Put("sso", "p_shareData_"+shareid, shareData, 24*60*60)
|
|
|
- }
|
|
|
- }
|
|
|
- return shareid
|
|
|
-}
|
|
|
-
|
|
|
-//获取用户openid
|
|
|
-func Getopenid(code, Wxoauthinfo string) (openid string) {
|
|
|
- defer util.Catch()
|
|
|
- recturl := fmt.Sprintf(Wxoauthinfo, code)
|
|
|
- resp, err := http.Get(recturl)
|
|
|
- if err != nil {
|
|
|
- log.Println(err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- defer resp.Body.Close()
|
|
|
- bs, _ := ioutil.ReadAll(resp.Body)
|
|
|
- data := map[string]interface{}{}
|
|
|
- json.Unmarshal(bs, &data)
|
|
|
- openid, _ = data["openid"].(string)
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-//
|
|
|
-func GetSessionVal(q map[string]interface{}) (*map[string]interface{}, map[string]interface{}) {
|
|
|
- person, ok := public.MQFW.FindOneByField("user", q, `{"_id":1,"i_shareknow":1,"s_m_openid":1,"s_nickname":1,"s_headimage":1,"s_headimageurl":1,"s_phone":1,"s_m_phone":1,"l_registedate":1,"b_merge_remind":1,"i_ispush":1,"i_unlimited":1,"s_jyname":1,"base_user_id":1}`)
|
|
|
- sessionVal := make(map[string]interface{})
|
|
|
- if !ok || person == nil || len(*person) == 0 {
|
|
|
- return nil, sessionVal
|
|
|
- }
|
|
|
- sessionVal["user"] = *person
|
|
|
- if (*person)["i_shareknow"] != nil {
|
|
|
- sessionVal["shareknow"] = (*person)["i_shareknow"]
|
|
|
- }
|
|
|
- sessionVal["userId"] = BsonIdToSId((*person)["_id"])
|
|
|
- nickName, _ := (*person)["s_nickname"].(string)
|
|
|
- phone := util.ObjToString((*person)["s_phone"])
|
|
|
- if nickName == "" {
|
|
|
- if phone != "" && len(phone) > 3 {
|
|
|
- nickName = string(phone[0:3]) + "****" + string(phone[len(phone)-4:])
|
|
|
- }
|
|
|
- }
|
|
|
- if util.ObjToString((*person)["s_jyname"]) != "" {
|
|
|
- sessionVal["s_jyname"] = util.ObjToString((*person)["s_jyname"])
|
|
|
- }
|
|
|
- sessionVal["s_nickname"] = nickName
|
|
|
- sessionVal["nickname"] = nickName
|
|
|
- avatar, _ := (*person)["s_headimageurl"].(string)
|
|
|
- if avatar == "" {
|
|
|
- avatar, _ = (*person)["s_headimage"].(string)
|
|
|
- }
|
|
|
- sessionVal["s_avatar"] = strings.Replace(avatar, "http://", "https://", 1)
|
|
|
- sessionVal["s_m_openid"], _ = (*person)["s_m_openid"].(string)
|
|
|
- sessionVal["openid"] = sessionVal["s_m_openid"]
|
|
|
- if phone == "" {
|
|
|
- phone = util.ObjToString((*person)["s_m_phone"])
|
|
|
- }
|
|
|
- if phone != "" {
|
|
|
- //企业信息存session
|
|
|
- sql := `SELECT a.id,a.name,a.startdate,a.enddate,a.quota,c.id as dept_id,b.id as user_id from entniche_info a
|
|
|
- INNER JOIN entniche_user b on (b.phone=? and a.id=b.ent_id)
|
|
|
- INNER JOIN entniche_department c on (c.pid=0 and a.id=c.ent_id)
|
|
|
- LEFT JOIN entniche_user_role d on (d.role_id=? and b.id=d.user_id)
|
|
|
- order by a.status DESC,b.power desc,a.auth_status DESC,d.role_id desc,a.createtime desc`
|
|
|
- list := public.Mysql.SelectBySql(sql, phone, 1)
|
|
|
- if list != nil {
|
|
|
- for _, v := range *list {
|
|
|
- if util.IntAll(v["id"]) == 0 {
|
|
|
- break
|
|
|
- }
|
|
|
- sessionVal["entId"] = util.IntAll(v["id"])
|
|
|
- sessionVal["entName"] = util.ObjToString(v["name"])
|
|
|
- sessionVal["entUserId"] = util.IntAll(v["user_id"])
|
|
|
- sessionVal["frameworkEntId"] = util.IntAll(v["id"])
|
|
|
- sessionVal["frameworkEntName"] = util.ObjToString(v["name"])
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- sessionVal["phone"] = phone
|
|
|
- sessionVal["i_unlimited"] = util.IntAll((*person)["i_unlimited"])
|
|
|
- base_uid := util.IntAllDef((*person)["base_user_id"], 0)
|
|
|
- if base_uid != 0 {
|
|
|
- sessionVal["base_user_id"] = base_uid //用户中台的uid
|
|
|
- //
|
|
|
- entId := util.Int64All(sessionVal["entId"])
|
|
|
- uid := util.ObjToString(sessionVal["userId"])
|
|
|
- identity := usercenter.GetUserIdentity(util.ObjToString(Sysconfig["userCenterApi"]), uid, int64(base_uid), entId, &http.Cookie{})
|
|
|
- if identity != nil {
|
|
|
- if identity.PersonId > 0 {
|
|
|
- sessionVal["personId"] = identity.PersonId
|
|
|
- }
|
|
|
- if identity.UserName != "" {
|
|
|
- sessionVal["userName"] = identity.UserName
|
|
|
- }
|
|
|
- if identity.UserAccountId > 0 {
|
|
|
- sessionVal["userAccountId"] = identity.UserAccountId
|
|
|
- }
|
|
|
- if identity.EntAccountId > 0 {
|
|
|
- sessionVal["entAccountId"] = identity.EntAccountId
|
|
|
- }
|
|
|
- if identity.EntUserAccountId > 0 {
|
|
|
- sessionVal["entUserAccountId"] = identity.EntUserAccountId
|
|
|
- }
|
|
|
- if identity.UserPositionId > 0 {
|
|
|
- sessionVal["userPositionId"] = identity.UserPositionId
|
|
|
- }
|
|
|
- if identity.EntUserPositionId > 0 {
|
|
|
- sessionVal["entUserPositionId"] = identity.EntUserPositionId
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return person, sessionVal
|
|
|
-}
|
|
|
-
|
|
|
-//value 用户sessionid
|
|
|
-func LoginRedisKey(userid string) string {
|
|
|
- return fmt.Sprintf("login_%s", userid)
|
|
|
-}
|
|
|
-
|
|
|
-// 排序 排序键必须为数字类型
|
|
|
-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)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// 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)
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-// 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
|
|
|
-}
|