dbtableapi.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. // 创建数据库表基本接口
  2. // 秒寻科技
  3. // zt 2024-01-04
  4. package dbtableapi
  5. import (
  6. "errors"
  7. "ipsomc/core/company/companymodel"
  8. "ipsomc/core/dao/mysql/mysqlapi"
  9. "ipsomc/core/user/usermodel"
  10. "ipsomc/core/usermobile/usermobilemodel"
  11. "ipsomc/module/bparam/bparammodel"
  12. "ipsomc/module/project/projectmodel"
  13. "ipsomc/util"
  14. "strconv"
  15. "strings"
  16. "github.com/jinzhu/gorm"
  17. _ "github.com/jinzhu/gorm/dialects/mysql"
  18. )
  19. type DbTableApi struct {
  20. mySql mysqlapi.MySqlApi
  21. }
  22. type OnePermission struct {
  23. Name string `json:"name"`
  24. Flag string `json:"flag"`
  25. Desc string `json:"desc"`
  26. }
  27. var (
  28. //系统页面
  29. defaultPageList []OnePermission = []OnePermission{{"系统首页", "dashboard", "可访问首页"}, {"权限管理", "permission", "可访问权限管理页面"}, {"管理角色", "role", "可访问角色管理页面"}, {"员工管理", "operator", "可访问员工管理页面"}, {"项目管理", "project", "可访问项目管理页面"}, {"基站基本参数", "baseparam", "可访问基站基本参数页面"}, {"基站拓扑参数", "btstopology", "可访问基站拓扑参数页面"}, {"公司资料", "company", "可访问公司资料页面"}}
  30. //平台管理员默认访问页面
  31. superUserPageList []string = []string{"dashboard", "permission", "company"}
  32. //系统用户默认访问页面
  33. sysUserPageList []string = []string{"dashboard", "project", "role", "operator"}
  34. //黑名单页面
  35. blackPageList []string = []string{"permission"}
  36. )
  37. // GenerateDbTable 创建表
  38. func (obj *DbTableApi) GenerateDbTable() {
  39. //管理端模型
  40. obj.mySql.GenerateDbTable(&companymodel.Company{}) //公司
  41. obj.mySql.GenerateDbTable(&usermodel.Role{}) //管理角色
  42. obj.mySql.GenerateDbTable(&usermodel.Permission{}) //管理权限
  43. obj.mySql.GenerateDbTable(&usermodel.Operator{}) //操作员
  44. obj.mySql.GenerateDbTable(&projectmodel.Project{}) //项目
  45. obj.mySql.GenerateDbTable(&bparammodel.BtsBaseParam{}) //基站基本参数
  46. //移动端模型
  47. obj.mySql.GenerateDbTable(&usermobilemodel.UserMobile{}) //基站基本参数
  48. /*********************************************初始化数据********************************************/
  49. //创建默认权限
  50. obj.GenDefaultPermission()
  51. //创建平台管理员角色
  52. obj.GenSuperRole()
  53. //添加平台管理员
  54. obj.GenSuperOperator()
  55. //创建系统管理员角色
  56. obj.GenSystemRole()
  57. }
  58. // 创建系统默认权限
  59. func (obj *DbTableApi) GenDefaultPermission() error {
  60. for _, v := range defaultPageList {
  61. var permissionMode usermodel.Permission
  62. //查重
  63. var count int = 0
  64. if err := obj.mySql.GetDb().Model(&permissionMode).Where("flag=? and type_id=?", v.Flag, 1).Count(&count).Error; err != nil {
  65. return err
  66. }
  67. //没有记录
  68. if count <= 0 {
  69. permissionMode.TypeID = 1 //页面权限
  70. permissionMode.Name = v.Name //页面名称
  71. permissionMode.Flag = v.Flag //页面标识符
  72. permissionMode.Desc = v.Desc
  73. obj.mySql.AddItem(&permissionMode)
  74. }
  75. }
  76. return nil
  77. }
  78. // 创建默认平台管理员角色
  79. func (obj *DbTableApi) GenSuperRole() error {
  80. var permissionModel usermodel.Permission
  81. defaultList := []usermodel.Permission{}
  82. idList := make([]string, 0)
  83. //获得所有默认权限
  84. if err := obj.mySql.GetDb().Model(&permissionModel).Scan(&defaultList).Error; err != nil {
  85. return err
  86. }
  87. //组织默认平台管理员权限
  88. for _, v := range defaultList {
  89. for _, page := range superUserPageList {
  90. if v.Flag == page {
  91. idList = append(idList, strconv.Itoa(int(v.ID)))
  92. break
  93. }
  94. }
  95. }
  96. ////查重
  97. roleModel := usermodel.Role{}
  98. if err := obj.mySql.GetDb().Model(&roleModel).Where("type_id=?", 1).First(&roleModel).Error; err != nil {
  99. if err != gorm.ErrRecordNotFound {
  100. return err
  101. }
  102. }
  103. //没有记录
  104. if roleModel.ID <= 0 {
  105. //增加默认角色,并分配权限
  106. roleModel.TypeID = 1 //平台管理角色
  107. roleModel.Name = "平台管理角色"
  108. roleModel.Desc = "管理系统权限"
  109. roleModel.Permission = strings.Join(idList, ",") //为角色分配权限
  110. obj.mySql.AddItem(&roleModel)
  111. } else {
  112. //修改角色权限
  113. if err := obj.mySql.GetDb().Model(roleModel).Update("permission", strings.Join(idList, ",")).Error; err != nil {
  114. return err
  115. }
  116. }
  117. return nil
  118. }
  119. // 创建默认平台管理员
  120. func (obj *DbTableApi) GenSuperOperator() error {
  121. roleModel := new(usermodel.Role)
  122. //获得平台管理员的默认角色
  123. if err := obj.mySql.GetDb().Model(roleModel).Where("type_id=?", 1).First(roleModel).Error; err != nil {
  124. return err
  125. }
  126. if roleModel.ID <= 0 {
  127. return errors.New("平台管理员角色为空")
  128. }
  129. //查重
  130. dataModel := usermodel.Operator{}
  131. var count int = 0
  132. if err := obj.mySql.GetDb().Model(&dataModel).Where("user_name=?", "iamadmin").Count(&count).Error; err != nil {
  133. return err
  134. }
  135. //没有记录,则新增记录
  136. if count <= 0 {
  137. //生成默认密码
  138. var tmpChar string = "12345678"
  139. password, err := util.EncryptAes([]byte(tmpChar)) //加密
  140. if err != nil {
  141. return err
  142. }
  143. //增加默认操作员,并分配角色
  144. dataModel.UserTypeID = 1 //平台管理员
  145. dataModel.UserName = "iamadmin"
  146. dataModel.Nickname = "平台管理员"
  147. dataModel.Password = password
  148. dataModel.Role = strconv.Itoa(int(roleModel.ID))
  149. obj.mySql.AddItem(&dataModel) //新增记录
  150. obj.mySql.GetDb().Model(dataModel).Update("owner_id", dataModel.ID) //修改记录的ownerID
  151. }
  152. return nil
  153. }
  154. // 创建系统管理员角色
  155. func (obj *DbTableApi) GenSystemRole() error {
  156. var permissionModel usermodel.Permission
  157. defaultList := []usermodel.Permission{}
  158. idList := make([]string, 0)
  159. //获得所有默认权限
  160. if err := obj.mySql.GetDb().Model(&permissionModel).Scan(&defaultList).Error; err != nil {
  161. return err
  162. }
  163. //组织默认系统管理员权限
  164. for _, v := range defaultList {
  165. for _, page := range sysUserPageList {
  166. if v.Flag == page {
  167. idList = append(idList, strconv.Itoa(int(v.ID)))
  168. break
  169. }
  170. }
  171. }
  172. ////角色查重
  173. roleModel := new(usermodel.Role)
  174. if err := obj.mySql.GetDb().Model(roleModel).Where("type_id=?", 2).First(roleModel).Error; err != nil {
  175. if err != gorm.ErrRecordNotFound {
  176. return err
  177. }
  178. }
  179. //没有角色记录
  180. if roleModel.ID <= 0 {
  181. //增加默认角色,并分配权限
  182. roleModel.TypeID = 2 //系统管理角色
  183. roleModel.Name = "系统管理角色"
  184. roleModel.Desc = "负责创建公司项目、创建管理角色、创建员工账号、为员工分配操作权限"
  185. roleModel.Permission = strings.Join(idList, ",") //为角色分配权限
  186. obj.mySql.AddItem(&roleModel)
  187. } else {
  188. //修改角色权限
  189. if err := obj.mySql.GetDb().Model(roleModel).Update("permission", strings.Join(idList, ",")).Error; err != nil {
  190. return err
  191. }
  192. }
  193. return nil
  194. }
  195. // 获得系统用户默认权限(系统用户注册时分配的默认权限)
  196. func (obj *DbTableApi) GetSysUserDefaultPermission() []string {
  197. return sysUserPageList
  198. }
  199. // 获得普通用户访问黑名单
  200. func (obj *DbTableApi) GetBlackPageList() []string {
  201. return blackPageList
  202. }