Пример #1
0
        /// <summary>
        /// 获取用户可访问的菜单
        /// </summary>
        /// <returns></returns>
        static async Task <List <long> > GetAllUserMenus()
        {
            int cnt = AtState.GetScalar <int>("select count(*) from DataVersion where id='menu'");

            if (cnt == 0)
            {
                // 查询服务端
                Dict dt = await AtCm.GetMenus(Kit.UserID);

                // 记录版本号
                var ver = new DataVersion(ID: "menu", Ver: dt.Str("ver"));
                await AtState.Save(ver, false);

                // 清空旧数据
                AtState.Exec("delete from UserMenu");

                // 插入新数据
                var ls = (List <long>)dt["result"];
                if (ls != null && ls.Count > 0)
                {
                    List <Dict> dts = new List <Dict>();
                    foreach (var id in ls)
                    {
                        dts.Add(new Dict {
                            { "id", id }
                        });
                    }
                    AtState.BatchExec("insert into UserMenu (id) values (:id)", dts);
                }
                return(ls);
            }

            return(AtState.FirstCol <long>("select id from UserMenu"));
        }