Browse Source

feature(用户): 创建用户获取钉钉用户信息,token超时

ZZH-wl 2 years ago
parent
commit
ec846db9da
3 changed files with 25 additions and 15 deletions
  1. 1 1
      opms_admin/app/handler/auth.go
  2. 13 14
      opms_admin/app/service/sys_user.go
  3. 11 0
      opms_admin/config/config.toml

+ 1 - 1
opms_admin/app/handler/auth.go

@@ -20,7 +20,7 @@ type AuthHandler struct{}
 func init() {
 	// 启动gtoken
 	gtoken.GFToken = &gtoken.GfToken{
-		Timeout:    24 * 60 * 60 * 1000, // 24小时
+		Timeout:    g.Config().GetInt("gtoken.timeout"), // 15天
 		EncryptKey: []byte(g.Config().GetString("gtoken.encrypt-key")),
 		CacheMode:  g.Config().GetInt8("gtoken.cache-mode"),
 		MultiLogin: g.Config().GetBool("gtoken.multi-login"),

+ 13 - 14
opms_admin/app/service/sys_user.go

@@ -5,6 +5,7 @@ import (
 	"dashoo.cn/micro/app/dao"
 	"dashoo.cn/micro/app/model"
 	"dashoo.cn/opms_libary/myerrors"
+	"dashoo.cn/opms_libary/plugin/dingtalk"
 	"dashoo.cn/opms_libary/request"
 	"dashoo.cn/opms_libary/utils"
 	"database/sql"
@@ -278,40 +279,38 @@ func (s *UserService) GetUserInfoById(id int, withPwd ...bool) (user *model.SysU
 }
 
 func (s *UserService) CreateUser(req *model.AddUserReq) (err error) {
-	var tx *gdb.TX
-	tx, err = s.Dao.DB.Begin()
-	if err != nil {
-		err = myerrors.TipsError("事务开启失败")
-		return
-	}
-	Model := s.Dao.TX(tx)
-	if i, _ := Model.Where("user_name=?", req.UserName).Count(); i != 0 {
+	if i, _ := s.Dao.Where("user_name", req.UserName).Count(); i != 0 {
 		err = myerrors.TipsError("用户名已经存在")
-		tx.Rollback()
 		return
 	}
-	if i, _ := Model.Where("phone=?", req.Phone).Count(); i != 0 {
+	if i, _ := s.Dao.Where("phone", req.Phone).Count(); i != 0 {
 		err = myerrors.TipsError("手机号已经存在")
-		tx.Rollback()
 		return
 	}
 	userData := new(model.SysUser)
 	if err = gconv.Struct(req, userData); err != nil {
-		tx.Rollback()
+		return
+	}
+
+	var tx *gdb.TX
+	tx, err = s.Dao.DB.Begin()
+	if err != nil {
+		err = myerrors.TipsError("事务开启失败")
 		return
 	}
 	userData.IsFirstLogin = "10"
 	userData.AllowErrorNum = 5
 	userData.UserSalt = grand.S(10)
 	userData.Password = utils.EncryptPassword(userData.Password, userData.UserSalt)
+	userData.DingtalkUid, userData.DingtalkId = dingtalk.NewClient().GetContact().QueryUserIdAndUnionidByPhone(req.Phone)
 	SetCreatedInfo(userData, s.GetCxtUserId(), s.GetCxtUserName())
-	res, err := Model.Insert(userData)
+	insertId, err := s.Dao.TX(tx).InsertAndGetId(userData)
 	if err != nil {
 		tx.Rollback()
 		return
 	}
-	insertId, _ := res.LastInsertId()
 	if err := s.AddUserOtherInfo(req.SetUserReq, insertId, tx); err != nil {
+		tx.Rollback()
 		return err
 	}
 	tx.Commit()

+ 11 - 0
opms_admin/config/config.toml

@@ -39,7 +39,18 @@
 [gtoken]
     # 缓存模式 1 gcache 2 gredis
     cache-mode = 1
+    # 超时时间
+    timeout = 8640000
     # 是否支持多端登录
     multi-login = true
     # 必须16,24或32个字母
     encrypt-key = "jwtdashoo-191225"
+
+# 钉钉配置
+[dingtalk]
+    corp-id="dinga8b316209f5ee42435c2f4657eb6378f"
+    agent-id="2384115071"
+    app-key="dinguytykawticadfoht"
+    app-secret="zPlj4ZpITsUbeq2C0GrwJ78-e8knH_kIeyvznaNQacqtrSb9zbeZcOajgBKdolky"
+    aes-key="oUjmeWea8Ow1jsdK4UHoDthy6EMQKq3RGbM2rEeTgnm"
+    token="WaasHsYk8V3wqwN5xRGsCmiiRDB"