123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- // 创建数据库表基本接口
- // 秒寻科技
- // zt 2024-01-04
- package dbtableapi
- import (
- "errors"
- "ipsomc/core/company/companymodel"
- "ipsomc/core/dao/mysql/mysqlapi"
- "ipsomc/core/user/usermodel"
- "ipsomc/core/usermobile/usermobilemodel"
- "ipsomc/module/bparam/bparammodel"
- "ipsomc/module/project/projectmodel"
- "ipsomc/util"
- "strconv"
- "strings"
- "github.com/jinzhu/gorm"
- _ "github.com/jinzhu/gorm/dialects/mysql"
- )
- type DbTableApi struct {
- mySql mysqlapi.MySqlApi
- }
- type OnePermission struct {
- Name string `json:"name"`
- Flag string `json:"flag"`
- Desc string `json:"desc"`
- }
- var (
- //系统页面
- defaultPageList []OnePermission = []OnePermission{{"系统首页", "dashboard", "可访问首页"}, {"权限管理", "permission", "可访问权限管理页面"}, {"管理角色", "role", "可访问角色管理页面"}, {"员工管理", "operator", "可访问员工管理页面"}, {"项目管理", "project", "可访问项目管理页面"}, {"基站基本参数", "baseparam", "可访问基站基本参数页面"}, {"基站拓扑参数", "btstopology", "可访问基站拓扑参数页面"}, {"公司资料", "company", "可访问公司资料页面"}}
- //平台管理员默认访问页面
- superUserPageList []string = []string{"dashboard", "permission", "company"}
- //系统用户默认访问页面
- sysUserPageList []string = []string{"dashboard", "project", "role", "operator"}
- //黑名单页面
- blackPageList []string = []string{"permission"}
- )
- // GenerateDbTable 创建表
- func (obj *DbTableApi) GenerateDbTable() {
- //管理端模型
- obj.mySql.GenerateDbTable(&companymodel.Company{}) //公司
- obj.mySql.GenerateDbTable(&usermodel.Role{}) //管理角色
- obj.mySql.GenerateDbTable(&usermodel.Permission{}) //管理权限
- obj.mySql.GenerateDbTable(&usermodel.Operator{}) //操作员
- obj.mySql.GenerateDbTable(&projectmodel.Project{}) //项目
- obj.mySql.GenerateDbTable(&bparammodel.BtsBaseParam{}) //基站基本参数
- //移动端模型
- obj.mySql.GenerateDbTable(&usermobilemodel.UserMobile{}) //基站基本参数
- /*********************************************初始化数据********************************************/
- //创建默认权限
- obj.GenDefaultPermission()
- //创建平台管理员角色
- obj.GenSuperRole()
- //添加平台管理员
- obj.GenSuperOperator()
- //创建系统管理员角色
- obj.GenSystemRole()
- }
- // 创建系统默认权限
- func (obj *DbTableApi) GenDefaultPermission() error {
- for _, v := range defaultPageList {
- var permissionMode usermodel.Permission
- //查重
- var count int = 0
- if err := obj.mySql.GetDb().Model(&permissionMode).Where("flag=? and type_id=?", v.Flag, 1).Count(&count).Error; err != nil {
- return err
- }
- //没有记录
- if count <= 0 {
- permissionMode.TypeID = 1 //页面权限
- permissionMode.Name = v.Name //页面名称
- permissionMode.Flag = v.Flag //页面标识符
- permissionMode.Desc = v.Desc
- obj.mySql.AddItem(&permissionMode)
- }
- }
- return nil
- }
- // 创建默认平台管理员角色
- func (obj *DbTableApi) GenSuperRole() error {
- var permissionModel usermodel.Permission
- defaultList := []usermodel.Permission{}
- idList := make([]string, 0)
- //获得所有默认权限
- if err := obj.mySql.GetDb().Model(&permissionModel).Scan(&defaultList).Error; err != nil {
- return err
- }
- //组织默认平台管理员权限
- for _, v := range defaultList {
- for _, page := range superUserPageList {
- if v.Flag == page {
- idList = append(idList, strconv.Itoa(int(v.ID)))
- break
- }
- }
- }
- ////查重
- roleModel := usermodel.Role{}
- if err := obj.mySql.GetDb().Model(&roleModel).Where("type_id=?", 1).First(&roleModel).Error; err != nil {
- if err != gorm.ErrRecordNotFound {
- return err
- }
- }
- //没有记录
- if roleModel.ID <= 0 {
- //增加默认角色,并分配权限
- roleModel.TypeID = 1 //平台管理角色
- roleModel.Name = "平台管理角色"
- roleModel.Desc = "管理系统权限"
- roleModel.Permission = strings.Join(idList, ",") //为角色分配权限
- obj.mySql.AddItem(&roleModel)
- } else {
- //修改角色权限
- if err := obj.mySql.GetDb().Model(roleModel).Update("permission", strings.Join(idList, ",")).Error; err != nil {
- return err
- }
- }
- return nil
- }
- // 创建默认平台管理员
- func (obj *DbTableApi) GenSuperOperator() error {
- roleModel := new(usermodel.Role)
- //获得平台管理员的默认角色
- if err := obj.mySql.GetDb().Model(roleModel).Where("type_id=?", 1).First(roleModel).Error; err != nil {
- return err
- }
- if roleModel.ID <= 0 {
- return errors.New("平台管理员角色为空")
- }
- //查重
- dataModel := usermodel.Operator{}
- var count int = 0
- if err := obj.mySql.GetDb().Model(&dataModel).Where("user_name=?", "iamadmin").Count(&count).Error; err != nil {
- return err
- }
- //没有记录,则新增记录
- if count <= 0 {
- //生成默认密码
- var tmpChar string = "12345678"
- password, err := util.EncryptAes([]byte(tmpChar)) //加密
- if err != nil {
- return err
- }
- //增加默认操作员,并分配角色
- dataModel.UserTypeID = 1 //平台管理员
- dataModel.UserName = "iamadmin"
- dataModel.Nickname = "平台管理员"
- dataModel.Password = password
- dataModel.Role = strconv.Itoa(int(roleModel.ID))
- obj.mySql.AddItem(&dataModel) //新增记录
- obj.mySql.GetDb().Model(dataModel).Update("owner_id", dataModel.ID) //修改记录的ownerID
- }
- return nil
- }
- // 创建系统管理员角色
- func (obj *DbTableApi) GenSystemRole() error {
- var permissionModel usermodel.Permission
- defaultList := []usermodel.Permission{}
- idList := make([]string, 0)
- //获得所有默认权限
- if err := obj.mySql.GetDb().Model(&permissionModel).Scan(&defaultList).Error; err != nil {
- return err
- }
- //组织默认系统管理员权限
- for _, v := range defaultList {
- for _, page := range sysUserPageList {
- if v.Flag == page {
- idList = append(idList, strconv.Itoa(int(v.ID)))
- break
- }
- }
- }
- ////角色查重
- roleModel := new(usermodel.Role)
- if err := obj.mySql.GetDb().Model(roleModel).Where("type_id=?", 2).First(roleModel).Error; err != nil {
- if err != gorm.ErrRecordNotFound {
- return err
- }
- }
- //没有角色记录
- if roleModel.ID <= 0 {
- //增加默认角色,并分配权限
- roleModel.TypeID = 2 //系统管理角色
- roleModel.Name = "系统管理角色"
- roleModel.Desc = "负责创建公司项目、创建管理角色、创建员工账号、为员工分配操作权限"
- roleModel.Permission = strings.Join(idList, ",") //为角色分配权限
- obj.mySql.AddItem(&roleModel)
- } else {
- //修改角色权限
- if err := obj.mySql.GetDb().Model(roleModel).Update("permission", strings.Join(idList, ",")).Error; err != nil {
- return err
- }
- }
- return nil
- }
- // 获得系统用户默认权限(系统用户注册时分配的默认权限)
- func (obj *DbTableApi) GetSysUserDefaultPermission() []string {
- return sysUserPageList
- }
- // 获得普通用户访问黑名单
- func (obj *DbTableApi) GetBlackPageList() []string {
- return blackPageList
- }
|