sys_admin.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. package system
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. )
  10. type AdminItem struct {
  11. AdminId int `description:"系统用户id"`
  12. AdminName string `description:"系统用户名称"`
  13. RealName string `description:"系统用户姓名"`
  14. Password string
  15. LastUpdatedPasswordTime string `json:"-"`
  16. Enabled int `description:"1:有效,0:禁用"`
  17. Email string `description:"系统用户邮箱"`
  18. LastLoginTime string
  19. CreatedTime time.Time
  20. LastUpdatedTime string
  21. Role string `description:"系统用户角色"`
  22. Mobile string `description:"手机号"`
  23. RoleType int `description:"角色类型:1需要录入指标,0:不需要"`
  24. RoleId int `description:"角色id"`
  25. RoleName string `description:"角色名称"`
  26. RoleTypeCode string `description:"角色编码"`
  27. DepartmentId int `description:"部门id"`
  28. DepartmentName string `json:"-" description:"部门名称"`
  29. TeamId int `description:"三级id"`
  30. GroupId int `description:"分组id"`
  31. GroupName string `json:"-" description:"分组名称"`
  32. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
  33. Position string `description:"职位"`
  34. DepartmentGroup string `description:"部门分组"`
  35. LabelVal int `description:"标签:1:超级管理员,2:管理员,3:部门经理,4:组长,5:ficc销售主管"`
  36. ResearchGroupName string `description:"研究方向分组名称"`
  37. Province string `description:"省"`
  38. ProvinceCode string `description:"省编码"`
  39. City string `description:"市"`
  40. CityCode string `description:"市编码"`
  41. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  42. TelAreaCode string `description:"手机区号"`
  43. IsLdap int `description:"是否为域用户:0-系统账户;1-域用户"`
  44. }
  45. func GetSysuserList(condition string, pars []interface{}, startSize, pageSize int) (items []*AdminItem, err error) {
  46. // o := orm.NewOrm()
  47. sql := `SELECT * FROM "admin" WHERE 1=1 `
  48. if condition != "" {
  49. sql += condition
  50. }
  51. sql += `ORDER BY enabled DESC, last_updated_time DESC, created_time DESC LIMIT ?,?`
  52. //_, err = o.Raw(sql, pars...).QueryRows(&items)
  53. pars = append(pars, startSize)
  54. pars = append(pars, pageSize)
  55. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
  56. return
  57. }
  58. func GetSysuserListCount(condition string, pars []interface{}) (count int, err error) {
  59. // o := orm.NewOrm()
  60. sql := `SELECT COUNT(1) AS count FROM "admin" WHERE 1=1 `
  61. if condition != "" {
  62. sql += condition
  63. }
  64. //err = o.Raw(sql, pars).QueryRow(&count)
  65. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Scan(&count).Error
  66. return
  67. }
  68. type AdminRespItem struct {
  69. AdminId int `description:"系统用户id"`
  70. AdminName string `description:"系统用户名称"`
  71. RealName string `description:"系统用户姓名"`
  72. Password string
  73. LastUpdatedPasswordTime string `json:"-"`
  74. Enabled int `description:"1:有效,0:禁用"`
  75. Email string `description:"系统用户邮箱"`
  76. LastLoginTime string
  77. CreatedTime time.Time
  78. LastUpdatedTime string
  79. Role string `description:"系统用户角色"`
  80. Mobile string `description:"手机号"`
  81. RoleType int `description:"角色类型:1需要录入指标,0:不需要"`
  82. RoleId int `description:"角色id"`
  83. RoleName string `description:"角色名称"`
  84. RoleTypeCode string `description:"角色编码"`
  85. DepartmentId int `description:"部门id"`
  86. DepartmentName string `json:"-" description:"部门名称"`
  87. parentId int `description:"父级id"`
  88. GroupId int `description:"分组id"`
  89. GroupName string `json:"-" description:"分组名称"`
  90. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
  91. Position string `description:"职位"`
  92. DepartmentGroup string `description:"部门分组"`
  93. LabelVal int `description:"标签:1:超级管理员,2:管理员,3:部门经理,4:组长,5:ficc销售主管"`
  94. }
  95. type SysuserListResp struct {
  96. List []*AdminItem
  97. Paging *paging.PagingItem `description:"分页数据"`
  98. }
  99. type SysuserAddReq struct {
  100. AdminName string `description:"系统用户名称"`
  101. AdminAvatar string `description:"用户头像"`
  102. RealName string `description:"系统用户姓名"`
  103. Password string `description:"密码"`
  104. Mobile string `description:"手机号"`
  105. RoleId int `description:"角色id"`
  106. DepartmentId int `description:"部门id"`
  107. GroupId int `description:"分组id"`
  108. TeamId int `description:"小组id"`
  109. //Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人"`
  110. Position string `description:"职位"`
  111. ResearchGroupIds string `description:"研究方向分组IDs"`
  112. Province string `description:"省"`
  113. ProvinceCode string `description:"省编码"`
  114. City string `description:"市"`
  115. CityCode string `description:"市编码"`
  116. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  117. Email string `description:"邮箱"`
  118. TelAreaCode string `description:"手机区号"`
  119. IsLdap int `description:"是否为域用户:0-系统账户;1-域用户"`
  120. }
  121. func GetSysAdminCount(adminName string) (count int, err error) {
  122. sql := `SELECT COUNT(1) AS count FROM "admin" WHERE admin_name=? `
  123. // o := orm.NewOrm()
  124. //err = o.Raw(sql, adminName).QueryRow(&count)
  125. err = global.DEFAULT_DmSQL.Raw(sql, adminName).Scan(&count).Error
  126. return
  127. }
  128. func GetSysAdminByName(adminName string) (item *Admin, err error) {
  129. sql := `SELECT * FROM "admin" WHERE admin_name=? `
  130. // o := orm.NewOrm()
  131. //err = o.Raw(sql, adminName).QueryRow(&item)
  132. err = global.DEFAULT_DmSQL.Raw(sql, adminName).First(&item).Error
  133. return
  134. }
  135. func GetSysAdminById(adminId int) (item *Admin, err error) {
  136. sql := `SELECT * FROM "admin" WHERE admin_id=? `
  137. // o := orm.NewOrm()
  138. //err = o.Raw(sql, adminId).QueryRow(&item)
  139. err = global.DEFAULT_DmSQL.Raw(sql, adminId).First(&item).Error
  140. return
  141. }
  142. func AddAdmin(item *Admin) (err error) {
  143. // o := orm.NewOrm()
  144. //adminId, err := o.Insert(item)
  145. //item.AdminId = int(adminId)
  146. err = global.DEFAULT_DmSQL.Create(item).Error
  147. return
  148. }
  149. type SysuserEditReq struct {
  150. AdminId int `description:"系统用户id"`
  151. AdminName string `description:"系统用户名称"`
  152. RealName string `description:"系统用户姓名"`
  153. Mobile string `description:"手机号"`
  154. RoleId int `description:"角色id"`
  155. Enabled int `description:"1:有效,0:禁用"`
  156. Position string `description:"职位"`
  157. ResearchGroupIds string `description:"研究方向分组IDs"`
  158. Province string `description:"省"`
  159. ProvinceCode string `description:"省编码"`
  160. City string `description:"市"`
  161. CityCode string `description:"市编码"`
  162. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  163. Email string `description:"邮箱"`
  164. TelAreaCode string `description:"手机区号"`
  165. IsLdap int `description:"是否为域用户:0-系统账户;1-域用户"`
  166. }
  167. type SysUserMoveReq struct {
  168. AdminId int `description:"系统用户id"`
  169. DepartmentId int `description:"部门id"`
  170. GroupId int `description:"分组id"`
  171. TeamId int `description:"小组id"`
  172. }
  173. type SysUserResetPassReq struct {
  174. AdminId int `description:"系统用户id"`
  175. Password string `description:"密码"`
  176. RePassword string `description:"重复密码"`
  177. }
  178. // SysuserEditEnabledReq 用户状态编辑
  179. type SysuserEditEnabledReq struct {
  180. AdminId int `description:"系统用户id"`
  181. Enabled int `description:"1:有效,0:禁用"`
  182. }
  183. // 变更状态
  184. func EditAdminEnabled(item *Admin) (err error) {
  185. // o := orm.NewOrm()
  186. sql := `UPDATE "admin"
  187. SET
  188. last_updated_time = NOW(),enabled=? WHERE admin_id = ? `
  189. //_, err = o.Raw(sql, item.Enabled, item.AdminId).Exec()
  190. err = global.DEFAULT_DmSQL.Exec(sql, item.Enabled, item.AdminId).Error
  191. return
  192. }
  193. // DisableAdmin 禁用用户
  194. func DisableAdmin(adminId int) (err error) {
  195. // o := orm.NewOrm()
  196. sql := `UPDATE "admin"
  197. SET
  198. last_updated_time = NOW(),disable_time=now(),enabled=0 WHERE admin_id = ? `
  199. //_, err = o.Raw(sql, adminId).Exec()
  200. err = global.DEFAULT_DmSQL.Exec(sql, adminId).Error
  201. return
  202. }
  203. type SysuserDeleteReq struct {
  204. AdminId int `description:"系统用户id"`
  205. }
  206. func DeleteSysuser(adminId int) (err error) {
  207. sql := `DELETE FROM "admin" WHERE admin_id=? `
  208. // o := orm.NewOrm()
  209. //_, err = o.Raw(sql, adminId).Exec()
  210. err = global.DEFAULT_DmSQL.Exec(sql, adminId).Error
  211. return
  212. }
  213. // GetSysAdminCountByMobile 查询系统中是否存在该手机号(如果有传入用户id,那么排除该用户)
  214. func GetSysAdminCountByMobile(mobile string, adminId int) (count int, err error) {
  215. sql := `SELECT COUNT(1) AS count FROM "admin" WHERE mobile=? `
  216. if adminId > 0 {
  217. sql += ` AND admin_id != ` + fmt.Sprint(adminId)
  218. }
  219. // o := orm.NewOrm()
  220. //err = o.Raw(sql, mobile).QueryRow(&count)
  221. err = global.DEFAULT_DmSQL.Raw(sql, mobile).First(&count).Error
  222. return
  223. }
  224. func GetSysUserItems(condition string, pars []interface{}) (items []*AdminItem, err error) {
  225. // o := orm.NewOrm()
  226. sql := `SELECT * FROM "admin" WHERE 1=1 `
  227. if condition != "" {
  228. sql += condition
  229. }
  230. sql += `ORDER BY last_updated_time DESC `
  231. //_, err = o.Raw(sql, pars).QueryRows(&items)
  232. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
  233. return
  234. }
  235. // GetGroupSysUserList 根据分组id获取系统用户列表
  236. func GetGroupSysUserList(groupId int) (items []*AdminItem, err error) {
  237. // o := orm.NewOrm()
  238. sql := `SELECT * FROM "admin" WHERE group_id=? ORDER BY created_time DESC `
  239. //_, err = o.Raw(sql, groupId).QueryRows(&items)
  240. err = global.DEFAULT_DmSQL.Raw(sql, groupId).Find(&items).Error
  241. return
  242. }
  243. // GetDepartmentGroupSysUserList 根据部门id和分组id获取系统用户列表
  244. func GetDepartmentGroupSysUserList(departmentId, groupId int, roleTypeCodes string) (items []*AdminItem, err error) {
  245. // o := orm.NewOrm()
  246. sql := `SELECT * FROM "admin" WHERE department_id = ? and group_id=? and enabled=1 `
  247. if roleTypeCodes != "" {
  248. sql += ` and role_type_code in (` + roleTypeCodes + `) `
  249. }
  250. sql += ` ORDER BY created_time asc `
  251. //_, err = o.Raw(sql, departmentId, groupId).QueryRows(&items)
  252. err = global.DEFAULT_DmSQL.Raw(sql, departmentId, groupId).Find(&items).Error
  253. return
  254. }
  255. // GetGrooupsysUserList 根据大组id和小组id获取系统用户列表
  256. func GetGrooupsysUserList(groupId int, roleTypeCodes string, enabled int) (items []*AdminItem, err error) {
  257. // o := orm.NewOrm()
  258. sql := `SELECT * FROM "admin" WHERE group_id = ? `
  259. if roleTypeCodes != "" {
  260. sql += ` and role_type_code in (` + roleTypeCodes + `) `
  261. }
  262. if enabled >= 0 {
  263. sql += fmt.Sprint(` AND enabled=`, enabled, ` `)
  264. }
  265. sql += ` ORDER BY created_time asc `
  266. //_, err = o.Raw(sql, groupId).QueryRows(&items)
  267. err = global.DEFAULT_DmSQL.Raw(sql, groupId).Find(&items).Error
  268. return
  269. }
  270. // GetSysAdminByIdSlice 根据账户id列表获取账户信息列表
  271. func GetSysAdminByIdSlice(adminIdList []string) (items []*Admin, err error) {
  272. if len(adminIdList) <= 0 {
  273. return
  274. }
  275. sql := `SELECT * FROM "admin" WHERE admin_id in (` + strings.Join(adminIdList, ",") + `) `
  276. // o := orm.NewOrm()
  277. //_, err = o.Raw(sql).QueryRows(&items)
  278. err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
  279. return
  280. }
  281. // GetTeamSysUserList 根据小组id获取系统用户列表
  282. func GetTeamSysUserList(teamId, enabled int) (items []*AdminItem, err error) {
  283. // o := orm.NewOrm()
  284. sql := `SELECT * FROM "admin" WHERE group_id=? `
  285. if enabled >= 0 {
  286. sql += fmt.Sprint(` AND enabled=`, enabled, ` `)
  287. }
  288. sql += ` ORDER BY created_time DESC `
  289. //_, err = o.Raw(sql, teamId).QueryRows(&items)
  290. err = global.DEFAULT_DmSQL.Raw(sql, teamId).Find(&items).Error
  291. return
  292. }
  293. func GetGroupIdByParentId(groupId int) (items []*string, err error) {
  294. // o := orm.NewOrm()
  295. sql := `SELECT group_id FROM sys_group WHERE parent_id=? ORDER BY create_time DESC `
  296. //_, err = o.Raw(sql, groupId).QueryRows(&items)
  297. err = global.DEFAULT_DmSQL.Raw(sql, groupId).Find(&items).Error
  298. return
  299. }
  300. func GetAdminByGroupId(groupId int) (items []*AdminItem, err error) {
  301. // o := orm.NewOrm()
  302. sql := `SELECT * FROM "admin" WHERE group_id=? ORDER BY created_time DESC`
  303. //_, err = o.Raw(sql, groupId).QueryRows(&items)
  304. err = global.DEFAULT_DmSQL.Raw(sql, groupId).Find(&items).Error
  305. return
  306. }
  307. type OpenIdList struct {
  308. OpenId string
  309. AdminId int
  310. }
  311. // GetRaiAdmin 获取权益内部人员(技术组+私募组)
  312. func GetRaiAdmin() (items []*AdminItem, err error) {
  313. // o := orm.NewOrm()
  314. sql := `SELECT
  315. admin_id,
  316. real_name,
  317. mobile
  318. FROM
  319. "admin"
  320. WHERE
  321. role_type_code LIKE '%rai%'
  322. AND group_id NOT IN (19, 10)
  323. AND enabled = 1
  324. OR (
  325. department_name = '产品技术部'
  326. AND enabled = 1
  327. )`
  328. //_, err = o.Raw(sql).QueryRows(&items)
  329. err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
  330. return
  331. }
  332. // SyncRoleData 同步角色数据
  333. type SyncRoleData struct {
  334. Source int `description:"来源: 1-CRM; 2-ETA"`
  335. RoleId int `description:"角色ID"`
  336. }
  337. // SyncAdminData 同步用户数据
  338. type SyncAdminData struct {
  339. Source int `description:"来源: 1-CRM; 2-ETA"`
  340. AdminName string `description:"用户名"`
  341. }
  342. // SyncDepartmentData 同步部门数据
  343. type SyncDepartmentData struct {
  344. Source int `description:"来源: 1-CRM; 2-ETA"`
  345. DepartmentId int `description:"部门ID"`
  346. }
  347. // SyncGroupData 同步分组数据
  348. type SyncGroupData struct {
  349. Source int `description:"来源: 1-CRM; 2-ETA"`
  350. GroupId int `description:"分组ID"`
  351. }
  352. // GetSysAdminList 获取admin列表
  353. func GetSysAdminList(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Admin, err error) {
  354. fields := "*"
  355. if len(fieldArr) > 0 {
  356. fields = strings.Join(fieldArr, ",")
  357. }
  358. order := `enabled DESC, last_updated_time DESC`
  359. if orderRule != "" {
  360. order = orderRule
  361. }
  362. sql := fmt.Sprintf(`SELECT %s FROM "admin" WHERE 1=1 %s ORDER BY %s`, fields, condition, order)
  363. // o := orm.NewOrm()
  364. //_, err = o.Raw(sql, pars).QueryRows(&items)
  365. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&items).Error
  366. return
  367. }
  368. // GetSysAdminByIdList
  369. // @Description: 根据账户id列表获取账户信息列表
  370. // @author: Roc
  371. // @datetime 2024-06-05 10:49:50
  372. // @param adminIdList []int
  373. // @return items []*Admin
  374. // @return err error
  375. func GetSysAdminByIdList(adminIdList []int) (items []*Admin, err error) {
  376. num := len(adminIdList)
  377. if num <= 0 {
  378. return
  379. }
  380. sql := `SELECT * FROM "admin" WHERE admin_id in (` + utils.GetOrmInReplace(num) + `) `
  381. // o := orm.NewOrm()
  382. //_, err = o.Raw(sql, adminIdList).QueryRows(&items)
  383. err = global.DEFAULT_DmSQL.Raw(sql, adminIdList).Find(&items).Error
  384. return
  385. }