---@class _DBUser ---@field loginNo ---@field loginName ---@field groupId ---@field imageUrl string 头像 DBUser = {} local db = {} local icons = {} local poplist = {} local rolePermission = {} DBUser.FilterGroup = { user = "user", group = "group" } function DBUser.onGetUsers(list, groupList, permissions) local options = ArrayList() local values = ArrayList() db.filters = {} local name db.filters[DBUser.FilterGroup.user] = {} for i, v in ipairs(list) do if v.loginName == "系统生成" then name = joinStr(v.loginNo, "_", v.loginName) else name = joinStr(v.loginName) end table.insert(db.filters[DBUser.FilterGroup.user], {name = name, value = v.loginNo}) db[v.loginNo] = v options:Add(name) values:Add(v.loginNo) end poplist[DBUser.FilterGroup.user] = { options = options, values = values } -------------------------------------------- local options = ArrayList() local values = ArrayList() db.filters[DBUser.FilterGroup.group] = {} for i, v in ipairs(groupList or {}) do table.insert(db.filters[DBUser.FilterGroup.group], {name = v.name, value = v.id}) options:Add(v.name) values:Add(v.id) end poplist[DBUser.FilterGroup.group] = { options = options, values = values } -------------------------------------------- rolePermission = {} for i, v in ipairs(permissions) do rolePermission[v] = true end end function DBUser.getFilters(group) return db.filters[group] end function DBUser.getPopList(group) return poplist[group] end function DBUser.refreshUserInfor(loginNo, loginName) local infor = DBUser.getPopList(DBUser.FilterGroup.user) for i, v in ipairs(infor.values) do if v == loginNo then infor.options[i] = loginName break end end local list = DBUser.getFilters(DBUser.FilterGroup.user) for i, v in ipairs(list) do if v.value == loginNo then v.name = loginNo break end end end ---@return _DBUser function DBUser.getUserById(loginNo) local user = db[loginNo] if user == nil then printe("get user is nil=", loginNo) end return user end function DBUser.getIcon(loginNo, callback) ---@type _DBUser local user = DBUser.getUserById(loginNo) if user == nil or isNilOrEmpty(user.imageUrl) then Utl.doCallback(callback, nil) return end if icons[user.imageUrl] then Utl.doCallback(callback, icons[user.imageUrl]) return end WWWEx.get( user.imageUrl, nil, CLAssetType.texture, function(content, orgs) content.name = user.imageUrl icons[user.imageUrl] = content Utl.doCallback(callback, content) end, function() printe("取得头像失败") end, nil, true, 2 ) end ---public 是否有权限 function DBUser.hadPermission(key) return rolePermission[key] or false end ---public 是否白名单 function DBUser.isWhiteUser(userName, callback) if isNilOrEmpty(userName) then Utl.doCallback(callback, false) return false end if DBUser.whiteNames == nil then local url = Utl.urlAddTimes(joinStr(CLVerManager.self.baseUrl, "/whitList.json")) WWWEx.get( url, CLAssetType.text, function(content) DBUser.whiteNames = json.decode(content) Utl.doCallback(callback, DBUser.whiteNames[userName]) end, function() Utl.doCallback(callback, false) end, nil, true, 1 ) return false else Utl.doCallback(callback, DBUser.whiteNames[userName]) return DBUser.whiteNames[userName] end end ---public 包装我的个人信息 function DBUser.wrapMyinforData(myinfor) local currGroup = Prefs.getCurrGroup(Prefs.getUserName()) local companyInfro = json.decode(currGroup) local user = DBUser.getUserById(companyInfro.login_no) myinfor.company_id = companyInfro.company_id myinfor.company_name = companyInfro.company_name myinfor.phoneNo = Prefs.getUserName() if user then myinfor.loginNo = user.loginNo myinfor.imageUrl = user.imageUrl end return myinfor end function DBUser.onPersonalData(result) db.myinfor = result local currGroup = Prefs.getCurrGroup(Prefs.getUserName()) local companyInfro = json.decode(currGroup) DBUser.refreshUserInfor(companyInfro.login_no, db.myinfor.loginName) local user = DBUser.getUserById(companyInfro.login_no) if user then -- 刷新数据 user.loginName = db.myinfor.loginName user.imageUrl = db.myinfor.imageUrl Prefs.setUserName(db.myinfor.phoneNo) end db.myinfor = DBUser.wrapMyinforData(db.myinfor) end ---public 取得我的个人信息 function DBUser.getMyInfor() if db.myinfor == nil then db.myinfor = DBUser.wrapMyinforData({}) NetProto.send.personal_data_query() end return db.myinfor end return DBUser