123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- package v1
- import (
- "crypto/rand"
- "designs/app/common/request"
- "designs/app/common/response"
- "designs/global"
- "designs/model"
- "encoding/json"
- "github.com/gin-gonic/gin"
- "math/big"
- "time"
- )
- func AdminList(c *gin.Context) {
- form := request.Check(c, &struct {
- Offset int `form:"offset" binding:""`
- Limit int `form:"limit" binding:""`
- Search string `form:"search" binding:""`
- }{})
- query := global.App.DB.Table("admin")
- if form.Search != "" {
- query = query.WhereRaw("account LIKE ?", "%"+form.Search+"%")
- }
- var admin []model.Admin
- type adminRes struct {
- ID int `json:"id" gorm:"not null;"`
- Account string `json:"account" gorm:"not null;"`
- Name string `json:"name" gorm:"not null;"`
- CreatedAt model.XTime `json:"createdAt" gorm:"column:createdAt;"`
- UpdatedAt model.XTime `json:"updatedAt" gorm:"column:updatedAt;"`
- Permission interface{} `json:"permission" gorm:""`
- }
- var count int64
- err := query.Count(&count).Error
- if err != nil {
- response.Fail(c, 501, err.Error())
- return
- }
- err = query.Offset(form.Offset).Select("id", "account", "name", "createdAt", "updatedAt", "permission").Limit(form.Limit).Scan(&admin).Error
- if err != nil {
- response.Fail(c, 501, err.Error())
- return
- }
- var res []adminRes
- for _, v := range admin {
- var PermissionSlice []string
- json.Unmarshal([]byte(v.Permission), &PermissionSlice)
- res = append(res, adminRes{
- ID: v.ID,
- Account: v.Account,
- Name: v.Name,
- CreatedAt: v.CreatedAt,
- UpdatedAt: v.UpdatedAt,
- Permission: PermissionSlice,
- })
- }
- response.Success(c, gin.H{"data": res, "count": count})
- }
- func RandomString(length int) (string, error) {
- const charset = "abcdefghijklmnopqrstuvwxyz0123456789"
- b := make([]byte, length)
- for i := range b {
- n, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
- if err != nil {
- return "", err
- }
- b[i] = charset[n.Int64()]
- }
- return string(b), nil
- }
- func SetAdmin(c *gin.Context) {
- form := request.Check(c, &struct {
- Account string `form:"account" binding:"required"`
- Name string `form:"name" binding:"required"`
- //Password string `form:"password" binding:"required"`
- Permission []string `form:"permission" binding:"required"`
- }{})
- var admin model.Admin
- global.App.DB.WhereRaw("account = ?", form.Account).First(&admin)
- if admin.ID != 0 {
- response.Fail(c, 1001, "账户名称重复")
- return
- }
- password, _ := RandomString(10)
- now := model.XTime{Time: time.Now()}
- admin.Account = form.Account
- admin.Password = password
- admin.Name = form.Name
- admin.CreatedAt = now
- admin.UpdatedAt = now
- p, _ := json.Marshal(form.Permission)
- admin.Permission = string(p)
- err := global.App.DB.Table("admin").Create(&admin).Error
- if err != nil {
- response.Fail(c, 502, err.Error())
- return
- }
- response.Success(c, gin.H{
- "data": map[string]interface{}{
- "password": password,
- },
- })
- }
- func DeleteAdmin(c *gin.Context) {
- form := request.Check(c, &struct {
- AdminId int `form:"adminId" binding:"required"`
- }{})
- if form.AdminId == 1 {
- response.Fail(c, 501, "默认管理员无法删除")
- return
- }
- var d interface{}
- err := global.App.DB.Table("admin").Where("id", form.AdminId).Delete(d).Error
- if err != nil {
- response.Fail(c, 502, err.Error())
- return
- }
- response.Success(c, gin.H{})
- }
- func UpdateAdmin(c *gin.Context) {
- form := request.Check(c, &struct {
- AdminId int `form:"adminId" binding:"required"`
- Name string `form:"name" binding:"required"`
- Permission []string `form:"permission" binding:""`
- Password string `form:"password" binding:""`
- }{})
- update := make(map[string]interface{})
- if form.AdminId == 1 {
- response.Fail(c, 501, "默认管理员无法编辑")
- return
- }
- if form.Permission != nil {
- p, _ := json.Marshal(form.Permission)
- update["permission"] = string(p)
- }
- if form.Password != "" {
- update["password"] = form.Password
- }
- if form.Name != "" {
- update["name"] = form.Name
- }
- if len(form.Permission) == 0 {
- response.Fail(c, 501, "没有更新")
- return
- }
- update["updatedAt"] = time.Now()
- err := global.App.DB.Table("admin").Where("id", form.AdminId).Updates(update).Error
- if err != nil {
- response.Fail(c, 502, "更新失败"+err.Error())
- return
- }
- response.Success(c, gin.H{})
- }
|