1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package service
- import (
- MC "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/redis"
- "encoding/json"
- "errors"
- "fmt"
- "github.com/zeromicro/go-zero/core/logx"
- "time"
- "userCenter/entity"
- "userCenter/rpc/pb"
- . "userCenter/rpc/usercenter"
- )
- //获取工作桌面菜单当前选择模式--全部/可用
- func GetWorkDesktopMenuMode(in *WorkDesktopMenuReq) string {
- logx.Info("_______________________")
- menuModes := entity.BaseMysql.SelectBySql(`SELECT value FROM work_commonly WHERE appid=? AND userid=? AND field = 'navigation' LIMIT 1`, in.AppId, in.UserId)
- logx.Info("_______________________")
- if menuModes != nil && len(*menuModes) > 0 {
- menuMode := (*menuModes)[0]
- return MC.ObjToString(menuMode["value"])
- }
- return "all"
- }
- //获取工作桌面菜单树
- func GetWordDesktopMenuTree(in *WorkDesktopMenuReq, redisOutTime int, bigMemberOff bool) ([]*pb.MenuList, error) {
- t1 := time.Now()
- //redis缓存
- var menuList []*pb.MenuList
- RedisMenuKey := fmt.Sprintf(entity.RedisMenuKey, in.AppId, in.UserId)
- menuBytes, err := redis.GetBytes(entity.RedisCode, RedisMenuKey)
- if err == nil && len(*menuBytes) > 0 {
- if json.Unmarshal(*menuBytes, &menuList) == nil {
- return menuList, nil
- }
- }
- //tidb数据
- menuData := entity.BaseMysql.SelectBySql(`SELECT * FROM work_menu WHERE status=0 AND appid=? ORDER BY id ASC`, in.AppId)
- if menuData == nil || len(*menuData) == 0 {
- return nil, errors.New("查询数据异常")
- }
- wdm := &entity.WorkDesktopMenu{
- MenuTree: []*entity.JYMenu{},
- UserId: in.UserId,
- TimeOut: redisOutTime,
- BigMemberOff: bigMemberOff,
- }
- for _, v := range *menuData {
- menu := &entity.JYMenu{
- Id: MC.IntAll(v["id"]),
- Name: MC.ObjToString(v["name"]),
- OrderId: MC.IntAll(v["orderid"]),
- ParentId: MC.IntAll(v["parentid"]),
- PowerIds: MC.ObjToString(v["powerids"]),
- CheckCode: MC.IntAll(v["checkcode"]),
- Icon: MC.ObjToString(v["icon"]),
- AppType: MC.ObjToString(v["apptype"]),
- OpenType: MC.ObjToString(v["opentype"]),
- }
- switch in.Platform {
- case "WX":
- menu.Url = MC.ObjToString(v["wxurl"])
- case "APP":
- menu.Url = MC.ObjToString(v["appurl"])
- default:
- menu.Url = MC.ObjToString(v["pcurl"])
- }
- if additionalInfo := MC.ObjToString(v["additionalinfo"]); additionalInfo != "" {
- additional := entity.Additional{}
- if json.Unmarshal([]byte(additionalInfo), &additional) == nil {
- menu.AdditionalInfo = additional
- }
- }
- if menu.Id > 0 {
- wdm.MenuTree = append(wdm.MenuTree, menu)
- }
- }
- logx.Info("数据长度:", len(wdm.MenuTree), "-- 查询菜单数据耗时:", time.Since(t1))
- //jyMenu := wdm.WorkMenuTree(0)
- wdm.MenuTree = wdm.WorkMenuTree(0)
- logx.Info("菜单树生成耗时:", time.Since(t1))
- menuList, err = wdm.WorkMenuFormat()
- logx.Info("菜单格式化耗时:", time.Since(t1))
- if err == nil && len(menuList) > 0 {
- if menuBytes, err := json.Marshal(menuList); err == nil {
- if redis.PutBytes(entity.RedisCode, RedisMenuKey, &menuBytes, redisOutTime) != nil {
- logx.Info("工作桌面菜单 redis缓存异常")
- }
- } else {
- logx.Info("菜单数据序列化异常")
- }
- }
- logx.Info("整体耗时:", time.Since(t1))
- return menuList, err
- }
|