sys_admin.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  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. }
  114. func GetSysAdminCount(adminName string) (count int, err error) {
  115. sql := `SELECT COUNT(1) AS count FROM admin WHERE admin_name=? `
  116. o := orm.NewOrm()
  117. err = o.Raw(sql, adminName).QueryRow(&count)
  118. return
  119. }
  120. func GetSysAdminByName(adminName string) (item *Admin, err error) {
  121. sql := `SELECT * FROM admin WHERE admin_name=? `
  122. o := orm.NewOrm()
  123. err = o.Raw(sql, adminName).QueryRow(&item)
  124. return
  125. }
  126. func GetSysAdminByRealName(adminName string) (item *Admin, err error) {
  127. sql := `SELECT * FROM admin WHERE real_name=? `
  128. o := orm.NewOrm()
  129. err = o.Raw(sql, adminName).QueryRow(&item)
  130. return
  131. }
  132. func GetSysAdminById(adminId int) (item *Admin, err error) {
  133. sql := `SELECT * FROM admin WHERE admin_id=? `
  134. o := orm.NewOrm()
  135. err = o.Raw(sql, adminId).QueryRow(&item)
  136. return
  137. }
  138. func AddAdmin(item *Admin) (err error) {
  139. o := orm.NewOrm()
  140. adminId, err := o.Insert(item)
  141. item.AdminId = int(adminId)
  142. return
  143. }
  144. type SysuserEditReq struct {
  145. AdminId int `description:"系统用户id"`
  146. AdminName string `description:"系统用户名称"`
  147. RealName string `description:"系统用户姓名"`
  148. Mobile string `description:"手机号"`
  149. RoleId int `description:"角色id"`
  150. Enabled int `description:"1:有效,0:禁用"`
  151. Position string `description:"职位"`
  152. ResearchGroupIds string `description:"研究方向分组IDs"`
  153. Province string `description:"省"`
  154. ProvinceCode string `description:"省编码"`
  155. City string `description:"市"`
  156. CityCode string `description:"市编码"`
  157. EmployeeId string `description:"员工工号(钉钉/每刻报销)"`
  158. Email string `description:"邮箱"`
  159. TelAreaCode string `description:"手机区号"`
  160. }
  161. type SysUserMoveReq struct {
  162. AdminId int `description:"系统用户id"`
  163. DepartmentId int `description:"部门id"`
  164. GroupId int `description:"分组id"`
  165. TeamId int `description:"小组id"`
  166. }
  167. type SysUserResetPassReq struct {
  168. AdminId int `description:"系统用户id"`
  169. Password string `description:"密码"`
  170. RePassword string `description:"重复密码"`
  171. }
  172. // 用户状态编辑
  173. type SysuserEditEnabledReq struct {
  174. AdminId int `description:"系统用户id"`
  175. Enabled int `description:"1:有效,0:禁用"`
  176. }
  177. func EditAdmin(item *Admin) (err error) {
  178. o := orm.NewOrm()
  179. sql := `UPDATE admin
  180. SET
  181. admin_name= ?,
  182. real_name = ?,
  183. password = ?,
  184. last_updated_password_time = NOW(),
  185. email = ?,
  186. last_updated_time = NOW(),
  187. mobile = ?,
  188. role_type = ?,
  189. role_id = ?,
  190. role_name = ?,
  191. department_id = ?,
  192. department_name = ?,
  193. group_id = ?,
  194. group_name = ?,
  195. authority = ?,
  196. position = ?,
  197. role_type_code=?,
  198. enabled=?,
  199. admin_avatar = ?,
  200. province=?,
  201. province_code=?,
  202. city=?,
  203. city_code=?,
  204. employee_id = ?
  205. WHERE admin_id = ? `
  206. _, err = o.Raw(sql, item.AdminName, item.RealName, item.Password, item.Email, item.Mobile, item.RoleType, item.RoleId, item.RoleName, item.DepartmentId, item.DepartmentName,
  207. item.GroupId, item.GroupName, item.Authority, item.Position, item.RoleTypeCode, item.Enabled, item.AdminAvatar, item.Province, item.ProvinceCode, item.City, item.CityCode, item.EmployeeId, item.AdminId).Exec()
  208. return
  209. }
  210. // 变更状态
  211. func EditAdminEnabled(item *Admin) (err error) {
  212. o := orm.NewOrm()
  213. sql := `UPDATE admin
  214. SET
  215. last_updated_time = NOW(),enabled=? WHERE admin_id = ? `
  216. _, err = o.Raw(sql, item.Enabled, item.AdminId).Exec()
  217. return
  218. }
  219. // DisableAdmin 禁用用户
  220. func DisableAdmin(adminId int) (err error) {
  221. o := orm.NewOrm()
  222. sql := `UPDATE admin
  223. SET
  224. last_updated_time = NOW(),disable_time=now(),enabled=0 WHERE admin_id = ? `
  225. _, err = o.Raw(sql, adminId).Exec()
  226. return
  227. }
  228. type SysuserDeleteReq struct {
  229. AdminId int `description:"系统用户id"`
  230. }
  231. func DeleteSysuser(adminId int) (err error) {
  232. sql := `DELETE FROM admin WHERE admin_id=? `
  233. o := orm.NewOrm()
  234. _, err = o.Raw(sql, adminId).Exec()
  235. return
  236. }
  237. // GetSysAdminCountByMobile 查询系统中是否存在该手机号(如果有传入用户id,那么排除该用户)
  238. func GetSysAdminCountByMobile(mobile string, adminId int) (count int, err error) {
  239. sql := `SELECT COUNT(1) AS count FROM admin WHERE mobile=? `
  240. if adminId > 0 {
  241. sql += ` AND admin_id != ` + fmt.Sprint(adminId)
  242. }
  243. o := orm.NewOrm()
  244. err = o.Raw(sql, mobile).QueryRow(&count)
  245. return
  246. }
  247. func GetSysUserItems(condition string, pars []interface{}) (items []*AdminItem, err error) {
  248. o := orm.NewOrm()
  249. sql := `SELECT * FROM admin WHERE 1=1 `
  250. if condition != "" {
  251. sql += condition
  252. }
  253. sql += `ORDER BY last_updated_time DESC `
  254. _, err = o.Raw(sql, pars).QueryRows(&items)
  255. return
  256. }
  257. func GetSysUserItemsOrderByCreated(condition string, pars []interface{}) (items []*AdminItem, err error) {
  258. o := orm.NewOrm()
  259. sql := `SELECT * FROM admin WHERE 1=1 `
  260. if condition != "" {
  261. sql += condition
  262. }
  263. sql += ` ORDER BY created_time DESC `
  264. _, err = o.Raw(sql, pars).QueryRows(&items)
  265. return
  266. }
  267. func GetSysUserItemsList(condition string, pars []interface{}, startSize, pageSize int) (items []*AdminItem, err error) {
  268. o := orm.NewOrm()
  269. sql := `SELECT * FROM admin WHERE 1=1 `
  270. if condition != "" {
  271. sql += condition
  272. }
  273. sql += ` ORDER BY created_time DESC limit ?,?`
  274. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  275. return
  276. }
  277. func GetSysUserItemsTotal(condition string, pars []interface{}) (total int64, err error) {
  278. o := orm.NewOrm()
  279. sql := `SELECT count(*) FROM admin WHERE 1=1 `
  280. if condition != "" {
  281. sql += condition
  282. }
  283. err = o.Raw(sql, pars).QueryRow(&total)
  284. return
  285. }
  286. // GetGroupSysUserList 根据分组id获取系统用户列表
  287. func GetGroupSysUserList(groupId int) (items []*AdminItem, err error) {
  288. o := orm.NewOrm()
  289. sql := `SELECT * FROM admin WHERE group_id=? ORDER BY created_time DESC `
  290. _, err = o.Raw(sql, groupId).QueryRows(&items)
  291. return
  292. }
  293. // GetDepartmentGroupSysUserList 根据部门id和分组id获取系统用户列表
  294. func GetDepartmentGroupSysUserList(departmentId, groupId int, roleTypeCodes string) (items []*AdminItem, err error) {
  295. o := orm.NewOrm()
  296. sql := `SELECT * FROM admin WHERE department_id = ? and group_id=? and enabled=1 `
  297. if roleTypeCodes != "" {
  298. sql += ` and role_type_code in (` + roleTypeCodes + `) `
  299. }
  300. sql += ` ORDER BY created_time asc `
  301. _, err = o.Raw(sql, departmentId, groupId).QueryRows(&items)
  302. return
  303. }
  304. // GetGrooupsysUserList 根据大组id和小组id获取系统用户列表
  305. func GetGrooupsysUserList(groupId int, roleTypeCodes string, enabled int) (items []*AdminItem, err error) {
  306. o := orm.NewOrm()
  307. sql := `SELECT * FROM admin WHERE group_id = ? `
  308. if roleTypeCodes != "" {
  309. sql += ` and role_type_code in (` + roleTypeCodes + `) `
  310. }
  311. if enabled >= 0 {
  312. sql += fmt.Sprint(` AND enabled=`, enabled, ` `)
  313. }
  314. sql += ` ORDER BY created_time asc `
  315. _, err = o.Raw(sql, groupId).QueryRows(&items)
  316. return
  317. }
  318. // GetSysAdminByIdSlice 根据账户id列表获取账户信息列表
  319. func GetSysAdminByIdSlice(adminIdList []string) (items []*Admin, err error) {
  320. if len(adminIdList) <= 0 {
  321. return
  322. }
  323. sql := `SELECT * FROM admin WHERE admin_id in (` + strings.Join(adminIdList, ",") + `) `
  324. o := orm.NewOrm()
  325. _, err = o.Raw(sql).QueryRows(&items)
  326. return
  327. }
  328. // GetTeamSysUserList 根据小组id获取系统用户列表
  329. func GetTeamSysUserList(teamId, enabled int) (items []*AdminItem, err error) {
  330. o := orm.NewOrm()
  331. sql := `SELECT * FROM admin WHERE group_id=? `
  332. if enabled >= 0 {
  333. sql += fmt.Sprint(` AND enabled=`, enabled, ` `)
  334. }
  335. sql += ` ORDER BY created_time DESC `
  336. _, err = o.Raw(sql, teamId).QueryRows(&items)
  337. return
  338. }
  339. // GetTeamSysUserList 根据小组id获取系统用户列表
  340. func GetTeamSysUserListByIds(ids string) (items []*AdminItem, err error) {
  341. o := orm.NewOrm()
  342. sql := `SELECT * FROM admin WHERE group_id IN (` + ids + `) ORDER BY created_time DESC `
  343. _, err = o.Raw(sql).QueryRows(&items)
  344. return
  345. }
  346. func GetGroupIdByParentId(groupId int) (items []*string, err error) {
  347. o := orm.NewOrm()
  348. sql := `SELECT group_id FROM sys_group WHERE parent_id=? ORDER BY create_time DESC `
  349. _, err = o.Raw(sql, groupId).QueryRows(&items)
  350. return
  351. }
  352. // GetSysUserByParentIdGroupId 查询主管下的所有组员
  353. func GetSysUserByParentIdGroupId(groupId int) (items []*AdminItem, err error) {
  354. o := orm.NewOrm()
  355. sql := `select real_name, role_id, role_type_code, group_id, admin_id from admin where group_id in (SELECT group_id from sys_group where parent_id=?) OR group_id=?`
  356. _, err = o.Raw(sql, groupId, groupId).QueryRows(&items)
  357. return
  358. }
  359. func GetAdminByGroupId(groupId int) (items []*AdminItem, err error) {
  360. o := orm.NewOrm()
  361. sql := `SELECT * FROM admin WHERE group_id=? ORDER BY created_time DESC`
  362. _, err = o.Raw(sql, groupId).QueryRows(&items)
  363. return
  364. }
  365. // GetSysAdminByIds 根据主键集合获取管理员信息
  366. func GetSysAdminByIds(adminIds string) (items []*Admin, err error) {
  367. if adminIds == "" {
  368. return
  369. }
  370. o := orm.NewOrm()
  371. sql := `SELECT * FROM admin WHERE admin_id IN (` + adminIds + `)`
  372. _, err = o.Raw(sql).QueryRows(&items)
  373. return
  374. }
  375. type OpenIdList struct {
  376. OpenId string
  377. AdminId int
  378. }
  379. // GetAdminOpenIdListByMobile 根据手机号获取用户的openid列表
  380. func GetAdminOpenIdListByMobile(mobile string) (items []*OpenIdList, err error) {
  381. sql := `SELECT admin_id, open_id FROM admin
  382. WHERE open_id != "" and mobile=? `
  383. _, err = orm.NewOrm().Raw(sql, mobile).QueryRows(&items)
  384. return
  385. }
  386. // ResearcherAdminAndUser 研究员admin信息及wx_user信息
  387. type ResearcherAdminAndUser struct {
  388. UserId int `description:"用户ID"`
  389. UserName string `description:"用户名称"`
  390. AdminId int `description:"管理员ID"`
  391. AdminName string `description:"管理员姓名"`
  392. OpenId string `description:"openid"`
  393. }
  394. // GetResearcherAdminAndWxUserByAdminId 通过adminId获取研究员admin及user信息
  395. func GetResearcherAdminAndWxUserByAdminId(adminId int) (item *ResearcherAdminAndUser, err error) {
  396. sql := `SELECT
  397. a.admin_id,
  398. a.real_name AS admin_name,
  399. a.open_id,
  400. b.user_id,
  401. b.real_name AS user_name
  402. FROM
  403. admin AS a
  404. JOIN wx_user AS b ON a.mobile = b.mobile
  405. WHERE
  406. a.admin_id = ? AND a.open_id != ""`
  407. err = orm.NewOrm().Raw(sql, adminId).QueryRow(&item)
  408. return
  409. }
  410. // 获取本组的销售ID
  411. func GetSelleridWhichGroup(companyId, productId int) (adminId string, err error) {
  412. o := orm.NewOrm()
  413. sql := ` SELECT
  414. GROUP_CONCAT( DISTINCT admin_id SEPARATOR ',' ) AS adminId
  415. FROM
  416. admin
  417. WHERE
  418. group_id IN (
  419. SELECT
  420. a.group_id
  421. FROM
  422. company_product AS a
  423. INNER JOIN admin AS b ON a.seller_id = b.admin_id
  424. WHERE
  425. a.company_id = ?
  426. AND a.product_id = ?
  427. )`
  428. err = o.Raw(sql, companyId, productId).QueryRow(&adminId)
  429. return
  430. }
  431. // GetSysuserRaiList 获取权益销售
  432. func GetSysuserRaiList() (items []*AdminItem, err error) {
  433. o := orm.NewOrm()
  434. sql := `SELECT
  435. real_name,
  436. mobile,
  437. group_id,
  438. group_name
  439. FROM
  440. admin
  441. WHERE
  442. role_type_code IN ( 'rai_group', 'rai_seller' )
  443. AND group_id NOT IN ( 19, 10, 17, 68, 72 )
  444. AND enabled = 1
  445. OR real_name IN ( '沈涛', '张传星' )
  446. OR ( group_name = '未分组' AND enabled = 1 ) ` // 先写死,看情况要不要改
  447. _, err = o.Raw(sql).QueryRows(&items)
  448. return
  449. }
  450. // GetSysuserRaiListNoServer 获取除服务组之外的所有权益销售
  451. func GetSysuserRaiListNoServer() (items []*AdminItem, err error) {
  452. o := orm.NewOrm()
  453. sql := `SELECT * FROM admin WHERE role_type_code IN ('rai_group','rai_seller') AND role_name NOT IN ('权益服务销售','权益服务组长') `
  454. _, err = o.Raw(sql).QueryRows(&items)
  455. return
  456. }
  457. func GetSellerIdsByDepId(depId int) (ids []string, err error) {
  458. o := orm.NewOrm()
  459. sql := `SELECT
  460. admin_id
  461. FROM
  462. admin
  463. WHERE
  464. department_id = ? `
  465. _, err = o.Raw(sql, depId).QueryRows(&ids)
  466. return
  467. }
  468. // GetRaiAdmin 获取权益内部人员(技术组+私募组)
  469. func GetRaiAdmin() (items []*AdminItem, err error) {
  470. o := orm.NewOrm()
  471. sql := `SELECT
  472. admin_id,
  473. real_name,
  474. mobile
  475. FROM
  476. admin
  477. WHERE
  478. role_type_code LIKE '%rai%'
  479. AND group_id NOT IN (19, 10)
  480. AND enabled = 1
  481. OR (
  482. department_name = '产品技术部'
  483. AND enabled = 1
  484. )`
  485. _, err = o.Raw(sql).QueryRows(&items)
  486. return
  487. }
  488. // GetFiccEnterScoreAdmin 获取Ficc需要录分的研究员
  489. func GetFiccEnterScoreAdmin() (items []*AdminItem, err error) {
  490. o := orm.NewOrm()
  491. sql := `SELECT * FROM admin_cygx WHERE group_name IN('宏观组','建材组','有色组','能化组','海外组') AND enabled = 1 `
  492. _, err = o.Raw(sql).QueryRows(&items)
  493. return
  494. }
  495. // SyncRoleData 同步角色数据
  496. type SyncRoleData struct {
  497. Source int `description:"来源: 1-CRM; 2-ETA"`
  498. RoleId int `description:"角色ID"`
  499. }
  500. // SyncAdminData 同步用户数据
  501. type SyncAdminData struct {
  502. Source int `description:"来源: 1-CRM; 2-ETA"`
  503. AdminName string `description:"用户名"`
  504. }
  505. // SyncDepartmentData 同步部门数据
  506. type SyncDepartmentData struct {
  507. Source int `description:"来源: 1-CRM; 2-ETA"`
  508. DepartmentId int `description:"部门ID"`
  509. }
  510. // SyncGroupData 同步分组数据
  511. type SyncGroupData struct {
  512. Source int `description:"来源: 1-CRM; 2-ETA"`
  513. GroupId int `description:"分组ID"`
  514. }
  515. // UpdateAdminRoleInfoByRoleId 更新管理员角色信息
  516. func UpdateAdminRoleInfoByRoleId(roleId int, roleName string, roleTypeCode string) (err error) {
  517. o := orm.NewOrm()
  518. sql := `UPDATE admin SET role_name = ?, role_type_code = ? WHERE role_id = ?`
  519. _, err = o.Raw(sql, roleName, roleTypeCode, roleId).Exec()
  520. return
  521. }