sys_admin.go 15 KB

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