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