123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- package admin
- import (
- "github.com/druidcaesa/gotool"
- "strconv"
- "ulink-admin/frame"
- "ulink-admin/modules/system/models/model"
- "ulink-admin/modules/system/models/req"
- "ulink-admin/modules/system/models/response"
- service2 "ulink-admin/modules/system/service"
- "ulink-admin/pkg/excels"
- "ulink-admin/pkg/jwt/admin"
- "ulink-admin/pkg/page"
- )
- type UserApi struct {
- UserService *service2.UserService `inject:""`
- RoleService *service2.RoleService `inject:""`
- }
- func (a UserApi) Find(c *frame.Context) {
- query := &req.UserQuery{}
- c.ValidteError(c.ShouldBind(query), query)
- list, i := a.UserService.Page(query)
- c.Ok(page.Page{
- Size: query.PageSize,
- Total: i,
- List: list,
- })
- }
- func (a UserApi) List(c *frame.Context) {
- query := &req.UserQuery{}
- c.ValidteError(c.ShouldBind(query), query)
- list := make([]model.SysUser, 0)
- a.UserService.List(query, &list)
- c.Ok(list)
- }
- func (a UserApi) GetInfo(c *frame.Context) {
- param := c.Param("id")
- r := new(response.UserInfo)
- roleAll := make([]model.SysRole, 0)
-
- a.RoleService.List(&req.RoleQuery{}, &roleAll)
-
- if !gotool.StrUtils.HasEmpty(param) {
- parseInt, err := strconv.ParseInt(param, 10, 64)
- if err == nil {
-
- m := new(model.SysUser)
- if m.IsAdmin(parseInt) {
- r.Roles = roleAll
- } else {
- roles := make([]model.SysRole, 0)
- for _, role := range roleAll {
- if role.Id != 1 {
- roles = append(roles, role)
- }
- }
- r.Roles = roles
- }
- user := new(model.SysUser)
- a.UserService.GetById(parseInt, user)
- if user == nil {
- frame.Throw(frame.BUSINESS_CODE, "用户查询异常")
- }
- role := a.RoleService.SelectRoleListByUserId(parseInt)
- if role == nil {
- frame.Throw(frame.BUSINESS_CODE, "角色查询异常")
- }
-
- r.User = user
-
- r.RoleIds = role
- }
- } else {
-
- roles := make([]model.SysRole, 0)
- for _, role := range roleAll {
- if role.Id != 1 {
- roles = append(roles, role)
- }
- }
- r.Roles = roles
- }
- c.Ok(r)
- }
- func (a UserApi) MyInfo(c *frame.Context) {
- userId := admin.GetUserInfo(c).Id
- memberInfo := new(response.MemberInfo)
- user := new(model.SysUser)
- a.UserService.GetById(userId, user)
-
- memberInfo.User = user
- if memberInfo.User == nil {
- c.Error("用户查询异常")
- return
- }
- c.Ok(memberInfo)
- }
- func (a UserApi) AuthRole(c *frame.Context) {
-
- }
- func (a UserApi) Add(c *frame.Context) {
- userBody := &req.UserBody{}
- c.ValidteError(c.ShouldBind(userBody), userBody)
- userBody.DelFlag = "0"
- userBody.Balance = "0.00"
-
- a.UserService.Insert(userBody)
- }
- func (a UserApi) Edit(c *frame.Context) {
- userBody := &req.UserBody{}
- c.ValidteError(c.ShouldBind(userBody), userBody)
-
- a.UserService.Edit(userBody)
- }
- func (a UserApi) Remove(c *frame.Context) {
- param := c.Param("id")
- id, err := strconv.ParseInt(param, 10, 64)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- c.Error("参数错误")
- return
- }
- a.UserService.Remove(id)
- }
- func (a UserApi) ResetPwd(c *frame.Context) {
- userBody := &req.UserBody{}
- c.ValidteError(c.ShouldBind(userBody), userBody)
- if a.UserService.CheckUserAllowed(userBody) {
- c.Error("不允许操作超级管理员用户")
- return
- }
- userBody.Password = gotool.BcryptUtils.Generate(userBody.Password)
-
- a.UserService.ResetPwd(userBody)
- }
- func (a UserApi) Export(c *frame.Context) {
- query := &req.UserQuery{}
- c.ValidteError(c.ShouldBind(query), query)
- items := make([]interface{}, 0)
- list, _ := a.UserService.Page(query)
- for _, userResponse := range list {
- items = append(items, *userResponse)
- }
- _, file := excels.ExportExcel(items, "用户表")
- c.Header("Content-Type", "application/octet-stream")
- c.Header("Content-Disposition", "attachment; filename="+gotool.IdUtils.IdUUIDToRan(false)+".xlsx")
- c.Header("Content-Transfer-Encoding", "binary")
- c.Header("FileName", gotool.IdUtils.IdUUIDToRan(false)+".xlsx")
- _ = file.Write(c.Writer)
- }
- func (a UserApi) Profile(c *frame.Context) {
- m := make(map[string]interface{})
- info := admin.GetUserInfo(c)
- user := new(model.SysUser)
- a.UserService.GetById(info.Id, user)
- m["user"] = user
-
- m["roleGroup"] = a.RoleService.SelectRolesByUserName(info.UserName)
- c.Ok(m)
- }
- func (a UserApi) UpdateProfile(c *frame.Context) {
- user := &req.UserBody{}
- c.ValidteError(c.ShouldBind(user), user)
- a.UserService.EditProfile(user)
- }
- func (a UserApi) ChangeAuthRole(c *frame.Context) {
- userBody := &req.UserBody{}
- c.ValidteError(c.ShouldBind(userBody), userBody)
- a.UserService.UpdateAuthRole(userBody)
- }
- func (a UserApi) ChangeStatus(c *frame.Context) {
- param := c.Query("id")
- status := c.Query("status")
- id, err := strconv.ParseInt(param, 10, 64)
- if err != nil {
- c.Error("参数错误")
- return
- }
- a.UserService.UpdateStatus(id, status)
- }
- func (a UserApi) UpdatePwd(c *frame.Context) {
- oldPassword := c.Query("oldPassword")
- newPassword := c.Query("newPassword")
- info := admin.GetUserInfo(c)
- name := a.UserService.GetUserByUserName(info.UserName)
- hash := gotool.BcryptUtils.CompareHash(name.Password, oldPassword)
- if !hash {
- c.Error("修改密码失败,旧密码错误")
- return
- }
- generate := gotool.BcryptUtils.Generate(oldPassword)
- compareHash := gotool.BcryptUtils.CompareHash(generate, newPassword)
- if compareHash {
- c.Error("新密码不能与旧密码相同")
- return
- }
- a.UserService.UpdatePwd(info.Id, gotool.BcryptUtils.Generate(newPassword))
- }
- func (a UserApi) Avatar(c *frame.Context) {
- img := c.Request.FormValue("img")
-
- info := admin.GetUserInfo(c)
- info.Avatar = img
- a.UserService.UpdateAvatar(info)
- }
|