From 63645d248c765244488cd34dbc1bb6528ca6b7c7 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 05 九月 2023 09:58:13 +0800 Subject: [PATCH] 修复编译 --- system-service/service/userService.go | 1018 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 509 insertions(+), 509 deletions(-) diff --git a/system-service/service/userService.go b/system-service/service/userService.go index 6bbff4c..63a1b67 100644 --- a/system-service/service/userService.go +++ b/system-service/service/userService.go @@ -1,509 +1,509 @@ -package service - -import ( - "errors" - "fmt" - "path" - "strconv" - "strings" - "time" - "vamicro/extend/util" - "vamicro/system-service/models" - "vamicro/system-service/vo" - - "basic.com/fileServer/WeedFSClient.git" - "basic.com/valib/bhomedbapi.git" - "basic.com/valib/logger.git" - uuid "github.com/satori/go.uuid" -) - -type UserService struct { -} - -func (sv UserService) Login(loginVo vo.UserVo) (flag bool, loginAppUser vo.LoginAppUser) { - if loginVo.UserName == "" || loginVo.Password == "" { - return false, loginAppUser - } - /*if AuthInfo.ExpirationTime < time.Now().Unix() { - loginAppUser.RoleName = "鏈巿鏉冪敤鎴�" - return false,loginAppUser - }*/ - var userE models.SysUser - rows, err := userE.FindByName(loginVo.UserName) - if err != nil || rows == 0 { - return false, loginAppUser - } - if pwdStr, err := util.Encrypt(loginVo.Password); err == nil && pwdStr == userE.Password { - user2LoginAppUser(&userE, &loginAppUser) - var roleE models.SysRole - roles := roleE.FindByUserId(userE.Id) - loginAppUser.SysRoles = roles - if len(roles) > 0 { - loginAppUser.RoleName = roles[0].Name - } - loginAppUser.HeadPic = userE.HeadPic - return true, loginAppUser - } - return false, loginAppUser -} - -func user2LoginAppUser(userE *models.SysUser, loginAppUser *vo.LoginAppUser) { - loginAppUser.Id = userE.Id - loginAppUser.Username = userE.Username - loginAppUser.Nickname = userE.Nickname - loginAppUser.HeadPic = userE.HeadPic - loginAppUser.BackgroundPic = userE.BackgroundPic - loginAppUser.UseIconType = userE.UseIconType - - permissions := make([]string, 0) - pM := make(map[string]models.SysMenu, 0) - var roleE models.SysRole - var menuE models.SysMenu - var srm models.SysRoleMenu - var sum models.SysUserMenu - allMenus := menuE.FindAll() - roles := roleE.FindByUserId(userE.Id) //鐢ㄦ埛瑙掕壊 - loginAppUser.SysRoles = roles - - if roles != nil && allMenus != nil { - menuMap := make(map[string]models.SysMenu, 0) - for _, menuE := range allMenus { - menuMap[menuE.Id] = menuE - } - var userMenus []vo.SysMenuVo - if len(roles) > 0 && roles[0].Name == "瓒呯骇绠$悊鍛�" { - for _, menuModel := range menuMap { - userMenus = append(userMenus, vo.SysMenuVo{ - SysMenu: menuModel, - }) - pM[menuModel.Id] = menuModel - } - - } else { - sumList, _ := sum.FindByRoleId(userE.Id) - if nil != sumList && len(sumList) > 0 { - for _, srmE := range sumList { - if _, ok := pM[srmE.MenuId]; !ok { - menuModel := menuMap[srmE.MenuId] - pM[menuModel.Id] = menuModel - - pidArr := strings.Split(menuModel.ParentIds, ",") - for _, pid := range pidArr { - if pid != "" && pid != "0" { - if _, k := pM[pid]; !k { - pM[pid] = menuMap[pid] - } - } - } - - userMenus = append(userMenus, vo.SysMenuVo{ - SysMenu: menuModel, - }) - } - } - } else { - for _, role := range roles { - srmList, _ := srm.FindByRoleId(role.Id) - if srmList != nil { - //var userMenus []vo.SysMenuVo - for _, srmE := range srmList { - if _, ok := pM[srmE.MenuId]; !ok { - menuModel := menuMap[srmE.MenuId] - pM[menuModel.Id] = menuModel - - pidArr := strings.Split(menuModel.ParentIds, ",") - for _, pid := range pidArr { - if pid != "" && pid != "0" { - if _, k := pM[pid]; !k { - pM[pid] = menuMap[pid] - } - } - } - - userMenus = append(userMenus, vo.SysMenuVo{ - SysMenu: menuModel, - }) - } - } - } - } - } - } - loginAppUser.SysMenus = userMenus - - } - for _, v := range pM { - permissions = append(permissions, v.Permission) - } - loginAppUser.Permissions = permissions - logger.Debug("permissions:", permissions) -} - -func (sv UserService) UpdatePwd(userId string, oldPwd string, newPwd string, opUserId string) (bool, error) { - var userE models.SysUser - rows, err := userE.SelectById(userId) - if err != nil || rows == 0 { - return false, errors.New("鐢ㄦ埛鏈壘鍒�!") - } - if oldPwd != "" { - if encryOldPwd, _ := util.Encrypt(oldPwd); encryOldPwd == userE.Password { //鏃у瘑鐮佸尮閰� - encryNewPwd, err := util.Encrypt(newPwd) - if err == nil { - return userE.UpdatePwd(userId, encryNewPwd), nil - } else { - return false, err - } - } else { - return false, errors.New("鍘熷瘑鐮佷笉姝g‘!") - } - } else { - var roleE models.SysRole - roles := roleE.FindByUserId(userE.Id) //鐢ㄦ埛瑙掕壊 - opRoles := roleE.FindByUserId(opUserId) - if len(roles) > 0 && roles[0].Name == "瓒呯骇绠$悊鍛�" { - return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀硅秴绾х鐞嗗憳鐨勫瘑鐮�!") - } - if len(roles) > 0 && roles[0].Name == "绠$悊鍛�" { - if len(opRoles) < 0 || opRoles[0].Name != "瓒呯骇绠$悊鍛�" { - return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀圭鐞嗗憳鐨勫瘑鐮�!") - } - } - if len(roles) > 0 && roles[0].Name == "鏅�氱敤鎴�" { - if len(opRoles) < 0 || opRoles[0].Name != "瓒呯骇绠$悊鍛�" && opRoles[0].Name != "绠$悊鍛�" { - return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀规櫘閫氱敤鎴风殑瀵嗙爜!") - } - } - encryNewPwd, err := util.Encrypt(newPwd) - if err == nil { - return userE.UpdatePwd(userId, encryNewPwd), nil - } else { - return false, err - } - } -} - -func (sv UserService) AddUser(userVo vo.UserVo) (bool, string) { - var userE models.SysUser - var userR models.SysRole - rows, err := userE.FindByName(userVo.UserName) - if err != nil { - return false, "" - } - if rows > 0 { - return false, "鐢ㄦ埛鍚嶅凡瀛樺湪" - } else { - if len([]byte(userVo.Password)) < 6 { - return false, "瀵嗙爜闀垮害涓嶈兘灏忎簬6浣�" - } - pwdStr, err := util.Encrypt(userVo.Password) - if err != nil { - return false, "娣诲姞澶辫触" - } - addModel := models.SysUser{ - Username: userVo.UserName, - Password: pwdStr, - Nickname: userVo.Nickname, - HeadPic: userVo.HeadPic, - BackgroundPic: models.DefaultBgPic, - } - if flag, err := addModel.Insert(); flag && err == nil { - if "" == userVo.RoleId { - _, err := userR.FindByName("鏅�氱敤鎴�") - if err == nil { - userVo.RoleId = userR.Id - } - } - if "" != userVo.RoleId { - userRole := models.SysUserRole{ - UserId: addModel.Id, - RoleId: userVo.RoleId, - } - userRole.Insert() - } - return true, "娣诲姞鎴愬姛" - } else { - return false, "娣诲姞澶辫触" - } - } -} - -func (sv UserService) FindAll(curUserId string) (allAppUser []vo.LoginAppUser, err error) { - var userE models.SysUser - rows, err := userE.SelectById(curUserId) - if err != nil || rows == 0 { - return nil, err - } else { - list, _ := userE.FindAll() - var myself vo.LoginAppUser - if list != nil { - tmpList := make([]vo.LoginAppUser, 1) - var roleE models.SysRole - roles := roleE.FindByUserId(userE.Id) - if roles != nil && len(roles) == 1 { - if roles[0].Name == "瓒呯骇绠$悊鍛�" { - for _, u := range list { - if u.Id == curUserId { - user2LoginAppUser(&u, &myself) - } else { - var appUE vo.LoginAppUser - user2LoginAppUser(&u, &appUE) - tmpList = append(tmpList, appUE) - } - } - } else if roles[0].Name == "绠$悊鍛�" { - for _, u := range list { - var appUE vo.LoginAppUser - appUERoles := roleE.FindByUserId(u.Id) - if appUERoles != nil && len(appUERoles) == 1 { - if u.Id == curUserId { - user2LoginAppUser(&u, &myself) - } else if appUERoles[0].Name == "鏅�氱敤鎴�" { - user2LoginAppUser(&u, &appUE) - tmpList = append(tmpList, appUE) - } - } - } - } else if roles[0].Name == "鏅�氱敤鎴�" { - for _, u := range list { - //var appUE vo.LoginAppUser - appUERoles := roleE.FindByUserId(u.Id) - if appUERoles != nil && len(appUERoles) == 1 { - if u.Id == curUserId { - user2LoginAppUser(&u, &myself) - } - } - } - } - } - tmpList[0] = myself - return tmpList, nil - - } else { - return []vo.LoginAppUser{}, nil - } - } -} - -func (sv UserService) FindByUserId(userId string) (userAuth vo.UserAuthVo, err error) { - var userE models.SysUser - rows, _ := userE.SelectById(userId) - if rows > 0 { - //userAuth.Id = userE.Id - //userAuth.Username = userE.Username - //userAuth.Nickname = userE.Nickname - //userAuth.HeadPic = userE.HeadPic - - userAuth.SysUser = userE - - var appUE vo.LoginAppUser - user2LoginAppUser(&userE, &appUE) - userAuth.Menus = appUE.SysMenus - - //var roleE models.SysRole - //var menuE models.SysMenu - //userAuth.Menus = menuE.FindByUserId(userE.Id) - //if nil == userAuth.Menus { - // roles := roleE.FindByUserId(userE.Id) - // if roles!=nil && len(roles) == 1{ - // userAuth.Menus = menuE.FindByRoleId(roles[0].Id) - // } - //} - - return userAuth, nil - } - return userAuth, errors.New("user not found") -} - -func (sv UserService) SaveAuth(userEditVo *vo.UserEditVo, opuserId string) error { - var userE models.SysUser - rows, e1 := userE.SelectById(userEditVo.Id) - if e1 == nil && rows > 0 { - //var userTmp models.SysUser - //userEditVo.UserName = rows[] - //existU, e2 := userTmp.FindByName(userEditVo.UserName) - //existU := -1 - e2 := e1 - if e2 == nil { - /*if existU > 0 && userTmp.Id != userE.Id { //浼佸浘淇敼涓轰粬浜虹殑鐢ㄦ埛鍚� - return false - } - reUname := false - if existU == 0 { //淇敼鐢ㄦ埛鍚嶄负涓�涓湭琚娇鐢ㄧ殑鐢ㄦ埛鍚� - reUname = true - }*/ - - //uNewPwd, _ := util.Encrypt(userEditVo.NewPwd) - var roleE models.SysRole - roles := roleE.FindByUserId(userE.Id) - if roles != nil && len(roles) == 1 { - userRole := roles[0] - oproles := roleE.FindByUserId(opuserId) - if oproles[0].Name == "绠$悊鍛�" && userRole.Name != "鏅�氱敤鎴�" { - return errors.New("绠$悊鍛樺彧鑳戒慨鏀规櫘閫氱敤鎴锋潈闄�") - } - if oproles[0].Name == "鏅�氱敤鎴�" { - return errors.New("鏅�氱敤鎴蜂笉鑳戒慨鏀规潈闄�") - } - //userRole := roles[0] - var err error - tx := models.GetDB().Begin() - defer func() { - if err != nil && tx != nil { - tx.Rollback() - } - }() - /*if reUname && userRole.Name == "鏅�氱敤鎴�" { //鍙湁鏅�氱敤鎴锋墠鍏佽淇敼鐢ㄦ埛鍚� - err = tx.Exec("update sys_user set username=? where id=?", userEditVo.UserName, userEditVo.Id).Error - if err !=nil { - return false - } - } - if userEditVo.NewPwd !="" {//濡傛灉瀵嗙爜涓嶄负绌猴紝鍒欎慨鏀瑰瘑鐮� - err = tx.Exec("update sys_user set password=? where id=?",uNewPwd,userEditVo.Id).Error - if err !=nil { - return false - } - }*/ - - //澶勭悊褰撳墠鐢ㄦ埛鏉冮檺 - err = tx.Exec("delete from sys_user_menu where user_id=?", userE.Id).Error - if err != nil { - return err - } - for _, menuId := range userEditVo.MenuIds { - err = tx.Exec("insert into sys_user_menu (id,user_id,menu_id) values (?,?,?)", uuid.NewV4().String(), userE.Id, menuId).Error - if err != nil { - return err - } - } - tx.Commit() - return nil - } else { - return errors.New("user role is not set") - } - } - } - return errors.New("user not found") -} - -//涓婁紶澶村儚 -func (sv UserService) UploadHeadPic(fileBytes []byte, filename string) (string, error) { - fileExt := path.Ext(filename) - fileExt = strings.ToLower(fileExt) - if fileExt != ".jpg" && fileExt != ".jpeg" && fileExt != ".png" { - return "", errors.New("pic format error") - } - var sApi bhomedbapi.SysSetApi - flag, localConf := sApi.GetServerInfo() - if !flag || localConf.AlarmIp == "" || localConf.AlarmPort == 0 { - logger.Debug("localConf err") - return "", errors.New("localConf err") - } - - var weedfsUri = "http://" + localConf.WebPicIp + ":" + strconv.Itoa(int(localConf.WebPicPort)) + "/submit?collection=headpic" - logger.Debug("weedfsUri:", weedfsUri) - weedFilePath, err := WeedFSClient.UploadFile(weedfsUri, filename, fileBytes, 5*time.Second) - if err != nil { - logger.Debug("WeedFSClient.UploadFile err:", err, filename) - return "", errors.New("WeedFSClient.UploadFile err") - } - return weedFilePath, nil -} - -//鏇存柊澶村儚銆佹樀绉� -func (sv UserService) UpdateProfile(userEditVo *vo.UserEditVo) bool { - var userE models.SysUser - rows, e1 := userE.SelectById(userEditVo.Id) - if e1 == nil && rows > 0 { - var err error - tx := models.GetDB().Begin() - defer func() { - if err != nil && tx != nil { - tx.Rollback() - } - }() - if userEditVo.HeadPic != "" { - err = tx.Exec("update sys_user set headpic=? where id=?", userEditVo.HeadPic, userEditVo.Id).Error - if err != nil { - return false - } - } - if userEditVo.BackgroundPic != "" { - err = tx.Exec("update sys_user set backgroundpic = ? where id = ?", userEditVo.BackgroundPic, userEditVo.Id).Error - if err != nil { - return false - } - } - if userEditVo.IconType != 0 { - err = tx.Exec("update sys_user set useIconType = ? where id = ?", userEditVo.IconType, userEditVo.Id).Error - if err != nil { - return false - } - } - if userEditVo.Nickname != "" { - err = tx.Exec("update sys_user set nickname=? where id=?", userEditVo.Nickname, userEditVo.Id).Error - if err != nil { - return false - } - } - if userEditVo.NewPwd != "" { - uppwd, err := util.Encrypt(userEditVo.NewPwd) - if nil == err { - err = tx.Exec("update sys_user set password=? where id=?", uppwd, userEditVo.Id).Error - if err != nil { - return false - } - } else { - return false - } - } - tx.Commit() - return true - } - return false -} - -func (sv UserService) GetRoles(useId string) ([]models.SysRole, error) { - var roleE models.SysRole - roles := roleE.FindByUserId(useId) - tempList, err := roleE.FindAll() - if nil != err { - return tempList, err - } - var res = make([]models.SysRole, 1) - for _, role := range tempList { - if roles[0].Name == "绠$悊鍛�" { - if role.Name == "鏅�氱敤鎴�" { - res[0] = role - } - } else if "瓒呯骇绠$悊鍛�" == roles[0].Name && role.Name != "瓒呯骇绠$悊鍛�" { - if role.Name == "绠$悊鍛�" { - res[0] = role - } else { - res = append(res, role) - } - } - } - return res, nil -} - -func (sv UserService) GetProfile(uid string) (loginAppUser vo.LoginAppUser) { - var userE models.SysUser - rows, err := userE.SelectById(uid) - fmt.Println("user icon type is :", userE.UseIconType) - if err != nil || rows == 0 { - return loginAppUser - } - user2LoginAppUser(&userE, &loginAppUser) - var roleE models.SysRole - roles := roleE.FindByUserId(userE.Id) - loginAppUser.SysRoles = roles - if len(roles) > 0 { - loginAppUser.RoleName = roles[0].Name - } - loginAppUser.HeadPic = userE.HeadPic - loginAppUser.BackgroundPic = userE.BackgroundPic - // loginAppUser.UseIconType = userE.UseIconType - fmt.Println("loginAppUser icon type is :", loginAppUser.UseIconType) - return loginAppUser -} +package service + +import ( + "errors" + "fmt" + "path" + "strconv" + "strings" + "time" + "vamicro/extend/util" + "vamicro/system-service/models" + "vamicro/system-service/vo" + + "basic.com/fileServer/WeedFSClient.git" + "basic.com/valib/bhomedbapi.git" + "basic.com/valib/logger.git" + uuid "github.com/satori/go.uuid" +) + +type UserService struct { +} + +func (sv UserService) Login(loginVo vo.UserVo) (flag bool, loginAppUser vo.LoginAppUser) { + if loginVo.UserName == "" || loginVo.Password == "" { + return false, loginAppUser + } + /*if AuthInfo.ExpirationTime < time.Now().Unix() { + loginAppUser.RoleName = "鏈巿鏉冪敤鎴�" + return false,loginAppUser + }*/ + var userE models.SysUser + rows, err := userE.FindByName(loginVo.UserName) + if err != nil || rows == 0 { + return false, loginAppUser + } + if pwdStr, err := util.Encrypt(loginVo.Password); err == nil && pwdStr == userE.Password { + user2LoginAppUser(&userE, &loginAppUser) + var roleE models.SysRole + roles := roleE.FindByUserId(userE.Id) + loginAppUser.SysRoles = roles + if len(roles) > 0 { + loginAppUser.RoleName = roles[0].Name + } + loginAppUser.HeadPic = userE.HeadPic + return true, loginAppUser + } + return false, loginAppUser +} + +func user2LoginAppUser(userE *models.SysUser, loginAppUser *vo.LoginAppUser) { + loginAppUser.Id = userE.Id + loginAppUser.Username = userE.Username + loginAppUser.Nickname = userE.Nickname + loginAppUser.HeadPic = userE.HeadPic + loginAppUser.BackgroundPic = userE.BackgroundPic + loginAppUser.UseIconType = userE.UseIconType + + permissions := make([]string, 0) + pM := make(map[string]models.SysMenu, 0) + var roleE models.SysRole + var menuE models.SysMenu + var srm models.SysRoleMenu + var sum models.SysUserMenu + allMenus := menuE.FindAll() + roles := roleE.FindByUserId(userE.Id) //鐢ㄦ埛瑙掕壊 + loginAppUser.SysRoles = roles + + if roles != nil && allMenus != nil { + menuMap := make(map[string]models.SysMenu, 0) + for _, menuE := range allMenus { + menuMap[menuE.Id] = menuE + } + var userMenus []vo.SysMenuVo + if len(roles) > 0 && roles[0].Name == "瓒呯骇绠$悊鍛�" { + for _, menuModel := range menuMap { + userMenus = append(userMenus, vo.SysMenuVo{ + SysMenu: menuModel, + }) + pM[menuModel.Id] = menuModel + } + + } else { + sumList, _ := sum.FindByRoleId(userE.Id) + if nil != sumList && len(sumList) > 0 { + for _, srmE := range sumList { + if _, ok := pM[srmE.MenuId]; !ok { + menuModel := menuMap[srmE.MenuId] + pM[menuModel.Id] = menuModel + + pidArr := strings.Split(menuModel.ParentIds, ",") + for _, pid := range pidArr { + if pid != "" && pid != "0" { + if _, k := pM[pid]; !k { + pM[pid] = menuMap[pid] + } + } + } + + userMenus = append(userMenus, vo.SysMenuVo{ + SysMenu: menuModel, + }) + } + } + } else { + for _, role := range roles { + srmList, _ := srm.FindByRoleId(role.Id) + if srmList != nil { + //var userMenus []vo.SysMenuVo + for _, srmE := range srmList { + if _, ok := pM[srmE.MenuId]; !ok { + menuModel := menuMap[srmE.MenuId] + pM[menuModel.Id] = menuModel + + pidArr := strings.Split(menuModel.ParentIds, ",") + for _, pid := range pidArr { + if pid != "" && pid != "0" { + if _, k := pM[pid]; !k { + pM[pid] = menuMap[pid] + } + } + } + + userMenus = append(userMenus, vo.SysMenuVo{ + SysMenu: menuModel, + }) + } + } + } + } + } + } + loginAppUser.SysMenus = userMenus + + } + for _, v := range pM { + permissions = append(permissions, v.Permission) + } + loginAppUser.Permissions = permissions + logger.Debug("permissions:", permissions) +} + +func (sv UserService) UpdatePwd(userId string, oldPwd string, newPwd string, opUserId string) (bool, error) { + var userE models.SysUser + rows, err := userE.SelectById(userId) + if err != nil || rows == 0 { + return false, errors.New("鐢ㄦ埛鏈壘鍒�!") + } + if oldPwd != "" { + if encryOldPwd, _ := util.Encrypt(oldPwd); encryOldPwd == userE.Password { //鏃у瘑鐮佸尮閰� + encryNewPwd, err := util.Encrypt(newPwd) + if err == nil { + return userE.UpdatePwd(userId, encryNewPwd), nil + } else { + return false, err + } + } else { + return false, errors.New("鍘熷瘑鐮佷笉姝g‘!") + } + } else { + var roleE models.SysRole + roles := roleE.FindByUserId(userE.Id) //鐢ㄦ埛瑙掕壊 + opRoles := roleE.FindByUserId(opUserId) + if len(roles) > 0 && roles[0].Name == "瓒呯骇绠$悊鍛�" { + return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀硅秴绾х鐞嗗憳鐨勫瘑鐮�!") + } + if len(roles) > 0 && roles[0].Name == "绠$悊鍛�" { + if len(opRoles) < 0 || opRoles[0].Name != "瓒呯骇绠$悊鍛�" { + return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀圭鐞嗗憳鐨勫瘑鐮�!") + } + } + if len(roles) > 0 && roles[0].Name == "鏅�氱敤鎴�" { + if len(opRoles) < 0 || opRoles[0].Name != "瓒呯骇绠$悊鍛�" && opRoles[0].Name != "绠$悊鍛�" { + return false, errors.New("鎮ㄦ病鏈夋潈闄愪慨鏀规櫘閫氱敤鎴风殑瀵嗙爜!") + } + } + encryNewPwd, err := util.Encrypt(newPwd) + if err == nil { + return userE.UpdatePwd(userId, encryNewPwd), nil + } else { + return false, err + } + } +} + +func (sv UserService) AddUser(userVo vo.UserVo) (bool, string) { + var userE models.SysUser + var userR models.SysRole + rows, err := userE.FindByName(userVo.UserName) + if err != nil { + return false, "" + } + if rows > 0 { + return false, "鐢ㄦ埛鍚嶅凡瀛樺湪" + } else { + if len([]byte(userVo.Password)) < 6 { + return false, "瀵嗙爜闀垮害涓嶈兘灏忎簬6浣�" + } + pwdStr, err := util.Encrypt(userVo.Password) + if err != nil { + return false, "娣诲姞澶辫触" + } + addModel := models.SysUser{ + Username: userVo.UserName, + Password: pwdStr, + Nickname: userVo.Nickname, + HeadPic: userVo.HeadPic, + BackgroundPic: models.DefaultBgPic, + } + if flag, err := addModel.Insert(); flag && err == nil { + if "" == userVo.RoleId { + _, err := userR.FindByName("鏅�氱敤鎴�") + if err == nil { + userVo.RoleId = userR.Id + } + } + if "" != userVo.RoleId { + userRole := models.SysUserRole{ + UserId: addModel.Id, + RoleId: userVo.RoleId, + } + userRole.Insert() + } + return true, "娣诲姞鎴愬姛" + } else { + return false, "娣诲姞澶辫触" + } + } +} + +func (sv UserService) FindAll(curUserId string) (allAppUser []vo.LoginAppUser, err error) { + var userE models.SysUser + rows, err := userE.SelectById(curUserId) + if err != nil || rows == 0 { + return nil, err + } else { + list, _ := userE.FindAll() + var myself vo.LoginAppUser + if list != nil { + tmpList := make([]vo.LoginAppUser, 1) + var roleE models.SysRole + roles := roleE.FindByUserId(userE.Id) + if roles != nil && len(roles) == 1 { + if roles[0].Name == "瓒呯骇绠$悊鍛�" { + for _, u := range list { + if u.Id == curUserId { + user2LoginAppUser(&u, &myself) + } else { + var appUE vo.LoginAppUser + user2LoginAppUser(&u, &appUE) + tmpList = append(tmpList, appUE) + } + } + } else if roles[0].Name == "绠$悊鍛�" { + for _, u := range list { + var appUE vo.LoginAppUser + appUERoles := roleE.FindByUserId(u.Id) + if appUERoles != nil && len(appUERoles) == 1 { + if u.Id == curUserId { + user2LoginAppUser(&u, &myself) + } else if appUERoles[0].Name == "鏅�氱敤鎴�" { + user2LoginAppUser(&u, &appUE) + tmpList = append(tmpList, appUE) + } + } + } + } else if roles[0].Name == "鏅�氱敤鎴�" { + for _, u := range list { + //var appUE vo.LoginAppUser + appUERoles := roleE.FindByUserId(u.Id) + if appUERoles != nil && len(appUERoles) == 1 { + if u.Id == curUserId { + user2LoginAppUser(&u, &myself) + } + } + } + } + } + tmpList[0] = myself + return tmpList, nil + + } else { + return []vo.LoginAppUser{}, nil + } + } +} + +func (sv UserService) FindByUserId(userId string) (userAuth vo.UserAuthVo, err error) { + var userE models.SysUser + rows, _ := userE.SelectById(userId) + if rows > 0 { + //userAuth.Id = userE.Id + //userAuth.Username = userE.Username + //userAuth.Nickname = userE.Nickname + //userAuth.HeadPic = userE.HeadPic + + userAuth.SysUser = userE + + var appUE vo.LoginAppUser + user2LoginAppUser(&userE, &appUE) + userAuth.Menus = appUE.SysMenus + + //var roleE models.SysRole + //var menuE models.SysMenu + //userAuth.Menus = menuE.FindByUserId(userE.Id) + //if nil == userAuth.Menus { + // roles := roleE.FindByUserId(userE.Id) + // if roles!=nil && len(roles) == 1{ + // userAuth.Menus = menuE.FindByRoleId(roles[0].Id) + // } + //} + + return userAuth, nil + } + return userAuth, errors.New("user not found") +} + +func (sv UserService) SaveAuth(userEditVo *vo.UserEditVo, opuserId string) error { + var userE models.SysUser + rows, e1 := userE.SelectById(userEditVo.Id) + if e1 == nil && rows > 0 { + //var userTmp models.SysUser + //userEditVo.UserName = rows[] + //existU, e2 := userTmp.FindByName(userEditVo.UserName) + //existU := -1 + e2 := e1 + if e2 == nil { + /*if existU > 0 && userTmp.Id != userE.Id { //浼佸浘淇敼涓轰粬浜虹殑鐢ㄦ埛鍚� + return false + } + reUname := false + if existU == 0 { //淇敼鐢ㄦ埛鍚嶄负涓�涓湭琚娇鐢ㄧ殑鐢ㄦ埛鍚� + reUname = true + }*/ + + //uNewPwd, _ := util.Encrypt(userEditVo.NewPwd) + var roleE models.SysRole + roles := roleE.FindByUserId(userE.Id) + if roles != nil && len(roles) == 1 { + userRole := roles[0] + oproles := roleE.FindByUserId(opuserId) + if oproles[0].Name == "绠$悊鍛�" && userRole.Name != "鏅�氱敤鎴�" { + return errors.New("绠$悊鍛樺彧鑳戒慨鏀规櫘閫氱敤鎴锋潈闄�") + } + if oproles[0].Name == "鏅�氱敤鎴�" { + return errors.New("鏅�氱敤鎴蜂笉鑳戒慨鏀规潈闄�") + } + //userRole := roles[0] + var err error + tx := models.GetDB().Begin() + defer func() { + if err != nil && tx != nil { + tx.Rollback() + } + }() + /*if reUname && userRole.Name == "鏅�氱敤鎴�" { //鍙湁鏅�氱敤鎴锋墠鍏佽淇敼鐢ㄦ埛鍚� + err = tx.Exec("update sys_user set username=? where id=?", userEditVo.UserName, userEditVo.Id).Error + if err !=nil { + return false + } + } + if userEditVo.NewPwd !="" {//濡傛灉瀵嗙爜涓嶄负绌猴紝鍒欎慨鏀瑰瘑鐮� + err = tx.Exec("update sys_user set password=? where id=?",uNewPwd,userEditVo.Id).Error + if err !=nil { + return false + } + }*/ + + //澶勭悊褰撳墠鐢ㄦ埛鏉冮檺 + err = tx.Exec("delete from sys_user_menu where user_id=?", userE.Id).Error + if err != nil { + return err + } + for _, menuId := range userEditVo.MenuIds { + err = tx.Exec("insert into sys_user_menu (id,user_id,menu_id) values (?,?,?)", uuid.NewV4().String(), userE.Id, menuId).Error + if err != nil { + return err + } + } + tx.Commit() + return nil + } else { + return errors.New("user role is not set") + } + } + } + return errors.New("user not found") +} + +//涓婁紶澶村儚 +func (sv UserService) UploadHeadPic(fileBytes []byte, filename string) (string, error) { + fileExt := path.Ext(filename) + fileExt = strings.ToLower(fileExt) + if fileExt != ".jpg" && fileExt != ".jpeg" && fileExt != ".png" { + return "", errors.New("pic format error") + } + var sApi bhomedbapi.SysSetApi + flag, localConf := sApi.GetServerInfo() + if !flag || localConf.AlarmIp == "" || localConf.AlarmPort == 0 { + logger.Debug("localConf err") + return "", errors.New("localConf err") + } + + var weedfsUri = "http://" + localConf.WebPicIp + ":" + strconv.Itoa(int(localConf.WebPicPort)) + "/submit?collection=headpic" + logger.Debug("weedfsUri:", weedfsUri) + weedFilePath, err := WeedFSClient.UploadFile(weedfsUri, filename, fileBytes, 5*time.Second) + if err != nil { + logger.Debug("WeedFSClient.UploadFile err:", err, filename) + return "", errors.New("WeedFSClient.UploadFile err") + } + return weedFilePath, nil +} + +//鏇存柊澶村儚銆佹樀绉� +func (sv UserService) UpdateProfile(userEditVo *vo.UserEditVo) bool { + var userE models.SysUser + rows, e1 := userE.SelectById(userEditVo.Id) + if e1 == nil && rows > 0 { + var err error + tx := models.GetDB().Begin() + defer func() { + if err != nil && tx != nil { + tx.Rollback() + } + }() + if userEditVo.HeadPic != "" { + err = tx.Exec("update sys_user set headpic=? where id=?", userEditVo.HeadPic, userEditVo.Id).Error + if err != nil { + return false + } + } + if userEditVo.BackgroundPic != "" { + err = tx.Exec("update sys_user set backgroundpic = ? where id = ?", userEditVo.BackgroundPic, userEditVo.Id).Error + if err != nil { + return false + } + } + if userEditVo.IconType != 0 { + err = tx.Exec("update sys_user set useIconType = ? where id = ?", userEditVo.IconType, userEditVo.Id).Error + if err != nil { + return false + } + } + if userEditVo.Nickname != "" { + err = tx.Exec("update sys_user set nickname=? where id=?", userEditVo.Nickname, userEditVo.Id).Error + if err != nil { + return false + } + } + if userEditVo.NewPwd != "" { + uppwd, err := util.Encrypt(userEditVo.NewPwd) + if nil == err { + err = tx.Exec("update sys_user set password=? where id=?", uppwd, userEditVo.Id).Error + if err != nil { + return false + } + } else { + return false + } + } + tx.Commit() + return true + } + return false +} + +func (sv UserService) GetRoles(useId string) ([]models.SysRole, error) { + var roleE models.SysRole + roles := roleE.FindByUserId(useId) + tempList, err := roleE.FindAll() + if nil != err { + return tempList, err + } + var res = make([]models.SysRole, 1) + for _, role := range tempList { + if roles[0].Name == "绠$悊鍛�" { + if role.Name == "鏅�氱敤鎴�" { + res[0] = role + } + } else if "瓒呯骇绠$悊鍛�" == roles[0].Name && role.Name != "瓒呯骇绠$悊鍛�" { + if role.Name == "绠$悊鍛�" { + res[0] = role + } else { + res = append(res, role) + } + } + } + return res, nil +} + +func (sv UserService) GetProfile(uid string) (loginAppUser vo.LoginAppUser) { + var userE models.SysUser + rows, err := userE.SelectById(uid) + fmt.Println("user icon type is :", userE.UseIconType) + if err != nil || rows == 0 { + return loginAppUser + } + user2LoginAppUser(&userE, &loginAppUser) + var roleE models.SysRole + roles := roleE.FindByUserId(userE.Id) + loginAppUser.SysRoles = roles + if len(roles) > 0 { + loginAppUser.RoleName = roles[0].Name + } + loginAppUser.HeadPic = userE.HeadPic + loginAppUser.BackgroundPic = userE.BackgroundPic + // loginAppUser.UseIconType = userE.UseIconType + fmt.Println("loginAppUser icon type is :", loginAppUser.UseIconType) + return loginAppUser +} -- Gitblit v1.8.0