GAAS GFrame项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

474 lines
13 KiB

package controllers
import (
"LAPP_GAAS_GFrame_BACKEND/conf"
"LAPP_GAAS_GFrame_BACKEND/utils"
"LAPP_GAAS_GFrame_BACKEND/web/middleware/glog"
"LAPP_GAAS_GFrame_BACKEND/web/middleware/jwts"
"LAPP_GAAS_GFrame_BACKEND/web/models"
"LAPP_GAAS_GFrame_BACKEND/web/supports"
"github.com/kataras/iris/v12"
"io"
"log"
"net/http"
"strings"
"time"
)
//用户登录
func Login(ctx iris.Context) {
user := new(models.Usertab)
if err := ctx.ReadJSON(user); err != nil {
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "Login"
log.Message = error.Error(err)
log.Operator = user.Userid
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusPaymentRequired, supports.LoginFailur, nil)
return
}
mUser := new(models.Usertab)
mUser.Pid = user.Pid
mUser.Userid = user.Userid
has, err := mUser.GetUserByUsername()
mUser.Clipped()
if err != nil {
glog.InfoExt("登录测试", err)
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "Login"
log.Message = error.Error(err)
log.Operator = user.Userid
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusPaymentRequired, supports.LoginFailur, nil)
return
}
if !has { // 用户名不正确
glog.InfoExt("登录测试", "has 错误")
supports.Error(ctx, iris.StatusPaymentRequired, supports.UsernameFailur, nil)
return
}
ckPassword, err := utils.CompareHashAndPassword(mUser.Password, user.Password)
if !ckPassword {
glog.InfoExt("登录测试", "密码 错误")
supports.Error(ctx, iris.StatusPaymentRequired, supports.PasswordFailur, nil)
return
}
token, err := jwts.GenerateToken(mUser)
if err != nil {
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "Login"
log.Message = "创建token失败"
log.Operator = user.Userid
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusInternalServerError, supports.TokenCreateFailur, nil)
return
}
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "info"
log.Function = "Login"
log.Message = "登录成功"
log.Operator = user.Userid
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
data := make(map[string]string)
data["token"] = token
supports.Ok(ctx, supports.LoginSuccess, data)
return
}
//车间列表
func PlantsTable(ctx iris.Context) {
plants, err := models.GetPlants()
if err != nil {
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "PlantsTable"
log.Message = "车间查询失败"
log.Operator = ""
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
supports.Ok(ctx, supports.Success, plants)
}
// @Summary 获取用户角色和职位
// @Description 获取JSON
// @Tags 用户
// @Success 200 {object} supports.Ok "{"code": 200,msg, "data": [...]}"
// @Router /user/getuserinfo [get]
// @Security
func GetUserInfo(ctx iris.Context) {
var roles = make([]string, 1)
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
roles[0] = user.Role
var permissions = make([]string, 1)
permissions[0] = "*:*:*"
RoleMenu := models.RoleMenu{}
RoleMenu.RoleId = user.RoleId
var mp = make(map[string]interface{})
mp["roles"] = roles
if user.Userid == "admin" {
mp["permissions"] = permissions
} else {
list, _ := RoleMenu.GetPermis()
mp["permissions"] = list
}
mUser := new(models.Usertab)
mUser.Pid = user.Pid
mUser.Userid = user.Userid
ok, err := mUser.GetUserByUsername()
mUser.Clipped()
if !ok || err != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
mp["introduction"] = " am a super administrator"
mp["avatar"] = "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
if mUser.Avatar != "" {
mp["avatar"] = mUser.Avatar
}
mp["name"] = mUser.Nickname
utils.TrimStruct(&mp, mp)
supports.Ok(ctx, supports.Success, mp)
}
// @Summary 列表数据
// @Description 获取JSON
// @Tags 用户
// @Param username query string false "username"
// @Success 200 {string} string "{"code": 200, "data": [...]}"
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
// @Router /api/v1/sysUserList [get]
// @Security Bearer
func GetSysUserList(ctx iris.Context) {
var data models.Usertab
var err error
var pageSize = 10
var pageIndex = 1
size := ctx.URLParam("pageSize")
if size != "" {
pageSize = utils.ValueToInt(size, 0)
}
index := ctx.URLParam("pageIndex")
if index != "" {
pageIndex = utils.ValueToInt(index, 0)
}
data.Userid = ctx.URLParam("userid")
data.Status = ctx.URLParam("status")
data.Phone = ctx.URLParam("phone")
data.Name = ctx.URLParam("name")
result, count, err := data.GetPage(pageSize, pageIndex)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
res := make(map[string]interface{})
res["result"] = result
res["count"] = count
res["pageIndex"] = pageIndex
res["pageSize"] = pageSize
supports.Ok(ctx, "成功", res)
}
// @Summary 获取用户
// @Description 获取JSON
// @Tags 用户
// @Param userId path int true "用户编码"
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser/{userId} [get]
// @Security
func GetSysUser(ctx iris.Context) {
var SysUser models.Usertab
SysUser.Userid = ctx.Params().Get("userId")
result, err := SysUser.Get()
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
var SysRole models.Roletab
roles, err := SysRole.GetList()
roleIds := make([]int, 0)
roleIds = append(roleIds, result.RoleId)
data := make(map[string]interface{})
data["data"] = result
data["roleIds"] = roleIds
data["roles"] = roles
supports.Ok(ctx, supports.OptionSuccess, data)
}
// @Summary 获取当前登录用户
// @Description 获取JSON
// @Tags 个人中心
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /admin/user/profile [get]
// @Security
func GetSysUserProfile(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
var SysUser models.Usertab
SysUser.Userid = user.Userid
result, err := SysUser.Get()
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
var SysRole models.Roletab
//获取角色列表
roles, err := SysRole.GetList()
roleIds := make([]int, 0)
roleIds = append(roleIds, result.RoleId)
data := make(map[string]interface{})
data["data"] = result
data["roleIds"] = roleIds
data["roles"] = roles
supports.Ok(ctx, supports.OptionSuccess, data)
}
// @Summary 获取用户角色
// @Description 获取JSON
// @Tags 用户
// @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser [get]
// @Security
func GetSysUserInit(ctx iris.Context) {
var SysRole models.Roletab
roles, err := SysRole.GetList()
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
mp := make(map[string]interface{}, 0)
mp["roles"] = roles
supports.Ok(ctx, supports.OptionSuccess, mp)
}
// @Summary 创建用户
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body models.SysUser true "用户数据"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sysUser [post]
func InsertSysUser(ctx iris.Context) {
user := new(models.Usertab)
if err := ctx.ReadJSON(user); err != nil {
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "InsertSysUser"
log.Message = "json解析失败"
log.Operator = ""
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
return
}
user.Lastmodify = user.Lastmodify
user.Password = "123456"
user.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
id, err := user.Insert()
if err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "添加失败", nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, id)
}
// @Summary 修改用户数据
// @Description 获取JSON
// @Tags 用户
// @Accept application/json
// @Product application/json
// @Param data body models.SysUser true "body"
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
// @Router /api/v1/sysuser/{userId} [put]
func UpdateSysUser(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
data := new(models.Usertab)
if err := ctx.ReadJSON(data); err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
return
}
data.Pid = user.Pid
data.Lastmodify = user.Userid
result, err := data.Update(data.Userid)
if err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "更新失败:"+err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, result)
}
// @Summary 删除用户数据
// @Description 删除数据
// @Tags 用户
// @Param userId path int true "userId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/sysuser/{userId} [delete]
func DeleteSysUser(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
var data models.Usertab
data.Lastmodify = user.Userid
userId := ctx.Params().Get("userId")
ids := strings.Split(userId, ",")
result, err := data.BatchDelete(ids)
if err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "删除失败", nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, result)
}
// @Summary 修改头像
// @Description 获取JSON
// @Tags 用户
// @Accept multipart/form-data
// @Param file formData file true "file"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/user/profileAvatar [post]
func InsetSysUserAvatar(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
//获取通过iris.WithPostMaxMemory获取的最大上传值大小。
maxSize := ctx.Application().ConfigurationReadOnly().GetPostMaxMemory()
err := ctx.Request().ParseMultipartForm(maxSize)
if err != nil {
ctx.StatusCode(iris.StatusInternalServerError)
ctx.WriteString(err.Error())
return
}
form := ctx.Request().MultipartForm
files := form.File["upload[]"]
guid := utils.MakeOrderSn(user.Userid)
filPath := "public/uploadfile/" + guid + ".jpg"
savePath := "web/public/uploadfile/" + guid + ".jpg"
for _, file := range files {
// 上传文件至指定目录
err := utils.SaveUploadedFile(file, savePath)
if err != nil {
log.Printf("上传图片错误:%v", err)
return
}
}
sysuser := new(models.Usertab)
sysuser.Userid = user.Userid
sysuser.Pid = user.Pid
sysuser.Avatar = "/" + filPath
sysuser.Lastmodify = user.Userid
_, err = sysuser.Update(sysuser.Userid)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
supports.Ok(ctx, "修改成功", filPath)
}
func SysUserUpdatePwd(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
pwd := new(models.SysUserPwd)
if err := ctx.ReadJSON(pwd); err != nil {
log := new(models.LeitServerLog)
log.File = "user_controller.go"
log.Level = "debug"
log.Function = "SysUserUpdatePwd"
log.Message = "json解析失败"
log.Operator = ""
log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
log.InsertRecord()
supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
return
}
sysuser := models.Usertab{}
sysuser.Userid = user.Userid
sysuser.Pid = user.Pid
_, err := sysuser.SetPwd(pwd)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
supports.Ok(ctx, "密码修改成功", "")
}
//反代理图片
func GetImg(ctx iris.Context) {
imgpath := ctx.URLParam("imgpath")
url := conf.Baseurl + imgpath
res, err := http.Get(url)
defer res.Body.Close() //不要泄露资源
if err != nil {
log.Println("获取文件错误")
}
io.Copy(ctx.ResponseWriter(), res.Body)
}