123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package entity
- import (
- quitl "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/redis"
- "encoding/json"
- "fmt"
- "reflect"
- "sort"
- "strings"
- )
- const (
- Date_Full_Layout = "2006-01-02 15:04:05"
- //baseMysql
- SOCIALIZE_CHAT_SESSION = "socialize_chat_session"
- SOCIALIZE_MESSAGE = "socialize_message"
- SOCIALIZE_MESSAGE_MAILBOX = "socialize_message_mailbox"
- SOCIALIZE_TENANT_ROBOT = "socialize_tenant_robot"
- BASE_USER = "base_user"
- SOCIALIZE_CHAT_GROUP = "socialize_chat_group"
- SOCIALIZE_CHAT_GROUP_NOTICE = "socialize_chat_group_notice"
- SOCIALIZE_CHAT_GROUP_PERSON = "socialize_chat_group_person"
- BASE_POSITION = "base_position"
- User_message_list = "user_message_list"
- //mainMysql
- ENTNICHE_USER = "entniche_user"
- //mongo
- ENTNICHE_DELETE = "entniche_delete"
- SOCIALIZE_APPRAISE = "socialize_message_appraise"
- SOCIALIZE_SUMMARY = "socialize_summary"
- SOCIALIZE_CUSTOMER_SERVICE_USER = "socialize_customer_service_user"
- Socialize_summary = "socialize_summary"
- Socialize_customer_service_user = "socialize_customer_service_user"
- UserRoleOne = "企业管理员"
- CookieName = "SESSIONID"
- JYTrustedId = "JYTrustedId"
- )
- const (
- SUCCESS_CODE = int64(0)
- ERROR_CODE = int64(1)
- )
- const redisModule = "msgCount"
- func SafeConvert2String(obj interface{}) string {
- if obj != nil {
- return obj.(string)
- }
- return ""
- }
- // in数据处理
- func Inhandle(data *[]map[string]interface{}) (messId string) {
- if len(*data) == 0 {
- messId = "''"
- return
- }
- for k, m := range *data {
- if k > 0 {
- messId += `,`
- }
- messId += "'" + quitl.InterfaceToStr(m["messageId"]) + "'"
- }
- return
- }
- type SubPush struct {
- Data map[string]interface{} `json:"data"`
- Count int `json:"count"`
- }
- // 获取redis key
- func todayKey(userType int64, userId int64) string {
- return fmt.Sprintf("%s_%d_%d", "messageCount", userType, userId)
- }
- func GetData(userType int64, userId int64) (*SubPush, error) {
- pc_a, err := redis.GetNewBytes(redisModule, todayKey(userType, userId))
- if err != nil {
- return nil, err
- }
- if pc_a == nil {
- return nil, nil
- }
- var p *SubPush
- if err := json.Unmarshal(*pc_a, &p); err != nil {
- return nil, err
- }
- return p, nil
- }
- func SetData(userType int64, userId int64, data map[string]interface{}, survivalTime int) {
- redis.Put(redisModule, todayKey(userType, userId), data, survivalTime)
- }
- func IntJoin(elems []int64, sep string) string {
- switch len(elems) {
- case 0:
- return ""
- case 1:
- return quitl.InterfaceToStr(elems[0])
- }
- var b strings.Builder
- b.Grow(len(elems))
- for k, s := range elems {
- if k > 0 {
- b.WriteString(sep)
- }
- b.WriteString(quitl.InterfaceToStr(s))
- }
- return b.String()
- }
- // 排序 排序键必须为数字类型
- 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)
- }
- }
- // 根据指定字符排序
- //
- // 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 := quitl.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 = quitl.Bind(stb.Data, data)
- if err != nil {
- fmt.Println(err)
- }
- }
|