sys_admin.go 13 KB

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