caipin 4 年之前
父節點
當前提交
12013523d8
共有 6 個文件被更改,包括 255 次插入57 次删除
  1. 8 7
      dao/manager_dao.go
  2. 2 2
      models/cm_manager.go
  3. 59 30
      services/manager_service.go
  4. 124 0
      web/backstage/manager_bs.go
  5. 17 18
      web/controllers/index.go
  6. 45 0
      web/viewmodels/manager.go

+ 8 - 7
dao/manager_dao.go

@@ -8,8 +8,6 @@
 package dao
 
 import (
-	"fmt"
-
 	"github.com/go-xorm/xorm"
 	"go.mod/models"
 )
@@ -40,18 +38,21 @@ func (d *ManagerDao) Get(id int) *models.CmManager {
 }
 
 //获得全部管理员数据
-func (d *ManagerDao) GetAll() []models.CmManager {
+func (d *ManagerDao) GetAll() (datalist []models.CmManager, total int64) {
+
+	num, _ := d.engine.
+		Count(&models.CmManager{})
 
-	datalist := make([]models.CmManager, 0)
+	datalist = make([]models.CmManager, 0)
 	err := d.engine.Asc("create_time").Find(&datalist)
 	//Asc("displayorder").
 	//Find(&datalist)
-	fmt.Println(err)
+
 	if err != nil {
 		//log.Println
-		return datalist
+		return datalist, num
 	} else {
-		return datalist
+		return datalist, num
 	}
 }
 

+ 2 - 2
models/cm_manager.go

@@ -8,7 +8,7 @@ type CmManager struct {
 	Id         int       `xorm:"not null pk autoincr comment('自增ID') INT(11)"`
 	Username   string    `xorm:"not null comment('用户名') unique VARCHAR(32)"`
 	Password   string    `xorm:"not null comment('密码') VARCHAR(32)"`
-	LastLogin  int       `xorm:"comment('最后一次登录时间') INT(11)"`
+	LastLogin  time.Time `xorm:"comment('最后一次登录时间') DATETIME"`
 	GroupId    int       `xorm:"default 0 comment('用户组ID') INT(11)"`
 	RealName   string    `xorm:"comment('真实姓名') VARCHAR(10)"`
 	Telephone  string    `xorm:"comment('联系电话(CLD字段)') VARCHAR(11)"`
@@ -22,6 +22,6 @@ type CmManager struct {
 	Fixedphone string    `xorm:"comment('固定电话(CLD字段)') VARCHAR(15)"`
 	Position   string    `xorm:"comment('职位(CLD字段)') VARCHAR(15)"`
 	Avatar     string    `xorm:"comment('cld头像地址') VARCHAR(255)"`
-	CreateTime int       `xorm:"comment('创建时间') INT(11)"`
+	CreateTime time.Time `xorm:"comment('创建时间') DATETIME"`
 	UpdateTime time.Time `xorm:"not null default 'CURRENT_TIMESTAMP' comment('更新时间') TIMESTAMP"`
 }

+ 59 - 30
services/manager_service.go

@@ -7,18 +7,24 @@
 package services
 
 import (
+	"strconv"
+
+	"go.mod/comm"
+	"go.mod/conf"
 	"go.mod/dao"
 	"go.mod/datasource"
 	"go.mod/models"
+	"go.mod/web/viewmodels"
 )
 
 //定义管理员Service接口
 type ManagerService interface {
-	GetAll() []models.CmManager
+	GetAll() (dataList []viewmodels.Manager, total int64)
 	CountAll() int64
-	Get(id int) *models.CmManager
+	Get(id int) *viewmodels.Manager
 	Update(data *models.CmManager, columns []string) error
 	Create(data *models.CmManager) error
+	Enable(id int, canLogin int) error
 }
 
 //返回service操作类
@@ -34,18 +40,37 @@ func NewManagerService() ManagerService {
 }
 
 //实现getall接口
-func (s *managerService) GetAll() []models.CmManager {
-	return s.dao.GetAll()
-	// return nil
+func (s *managerService) GetAll() (dataList []viewmodels.Manager, total int64) {
+
+	datalist := make([]viewmodels.Manager, 0)
+	result, total := s.dao.GetAll()
+	for _, item := range result {
+		projectVM := makeManagerVM(&item)
+		datalist = append(datalist, projectVM)
+	}
+	return dataList, total
 }
 
 func (s *managerService) CountAll() int64 {
 	return s.dao.CountAll()
 }
 
-func (s *managerService) Get(id int) *models.CmManager {
-	return s.dao.Get(id)
+// 获得管理员详情
+func (s *managerService) Get(id int) *viewmodels.Manager {
+	result := s.dao.Get(id)
+	data := makeManagerVM(result)
+	return &data
 }
+
+func (s *managerService) Enable(id int, canLogin int) error {
+	Manager := models.CmManager{}
+	Manager.Id = id
+	Manager.CanLogin = canLogin
+	err := s.dao.Update(&Manager, []string{"CanLogin"})
+
+	return err
+}
+
 func (s *managerService) Update(data *models.CmManager, columns []string) error {
 	return s.dao.Update(data, columns)
 }
@@ -53,26 +78,30 @@ func (s *managerService) Create(data *models.CmManager) error {
 	return s.dao.Create(data)
 }
 
-// // 构造视图层models
-// func makeProjectVM(projectCM *models.CmProject) viewmodels.Project {
-// 	projectVM := viewmodels.Project{}
-// 	id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
-// 	userId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.UserId), conf.SignSecret)
-
-// 	projectVM.Id = id
-// 	projectVM.Code = projectCM.Code
-// 	projectVM.Name = projectCM.Name
-// 	projectVM.Category = projectCM.Category
-// 	projectVM.StaffName = projectCM.StaffName
-// 	projectVM.StaffPhone = projectCM.StaffPhone
-// 	projectVM.StaffQq = projectCM.StaffQq
-// 	projectVM.StaffTelephone = projectCM.StaffTelephone
-// 	projectVM.UserId = userId
-// 	projectVM.UserAccount = projectCM.UserAccount
-
-// 	if !projectCM.CreateTime.IsZero() {
-// 		projectVM.CreateTime = projectCM.CreateTime.Format(conf.SysTimeform)
-// 	}
-
-// 	return projectVM
-// }
+// 构造视图层models
+func makeManagerVM(projectCM *models.CmManager) viewmodels.Manager {
+	modelsVM := viewmodels.Manager{}
+	id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
+	// userId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.UserId), conf.SignSecret)
+
+	modelsVM.Id = id
+	modelsVM.Username = projectCM.Username
+	modelsVM.Category = projectCM.Category
+	modelsVM.GroupId = projectCM.GroupId
+	modelsVM.RealName = projectCM.RealName
+	modelsVM.Telephone = projectCM.Telephone
+	modelsVM.LoginIp = projectCM.LoginIp
+	modelsVM.CanLogin = projectCM.CanLogin
+	modelsVM.Office = projectCM.Office
+
+	modelsVM.Category = projectCM.Category
+
+	if !projectCM.LastLogin.IsZero() {
+		modelsVM.LastLogin = projectCM.LastLogin.Format(conf.SysTimeform)
+	}
+	if !projectCM.CreateTime.IsZero() {
+		modelsVM.CreateTime = projectCM.CreateTime.Format(conf.SysTimeform)
+	}
+
+	return modelsVM
+}

+ 124 - 0
web/backstage/manager_bs.go

@@ -0,0 +1,124 @@
+/*
+ * @description:  管理员相关
+ * @Author: CP
+ * @Date: 2021-05-11 17:08:10
+ * @FilePath: \construction_management\web\backstage\manager_bs.go
+ */
+package backstage
+
+import (
+	"fmt"
+
+	"github.com/kataras/iris/v12"
+	"go.mod/services"
+	"go.mod/web/utils"
+	"go.mod/web/viewmodels"
+)
+
+type ManagerBs struct {
+	//框架-web应用上下文环境
+	Ctx iris.Context
+	// 需要用的service
+	ServiceManager services.ManagerService
+}
+
+// @Summary 后台-管理员列表
+// @Description 登录接口
+// @Tags 后台 - 登录/登出
+// @Accept  json
+// @Produce  json
+// @Param   staffName     body    string     true        "CLD账号" 	default(蔡频)
+// @Param   password     body    string    true        "密码"		default(123456)
+// @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,data:viewmodels.ProjectAccount,msg:}"
+// @Failure 400 {string} string	"{code:-1参数类错误,msg:错误信息}"
+// @Router /api/backstage/manager/List [get]
+func (c *ManagerBs) GetList() {
+	item, total := c.ServiceManager.GetAll()
+	dataList := map[string]interface{}{
+		"item":  item,
+		"total": total,
+	}
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"msg":  "",
+		"data": dataList,
+	})
+}
+
+// @Summary 后台-项目列表相关
+// @Tags 后台 - 项目
+// @Accept  json
+// @Produce  json
+// @Param   id     body    int     true        "项目ID"
+// @Success 200 {object} viewmodels.ProjectAccount "{code:0成功,data:viewmodels.ProjectAccount,msg:}"
+// @Failure 400 {string} string	"{code:-1参数类错误,msg:错误信息}"
+// @Router /backstage/project [get]
+func (c *ManagerBs) Get() {
+	// 1.获得数据
+	data := viewmodels.Manager{}
+	if err := c.Ctx.ReadForm(&data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	// 2.验证数据
+	if err := data.ValidateGet(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	// 3.获得项目ID
+	id, err := utils.GetDecryptId(data.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 3-1.获得项目信息
+	result := c.ServiceManager.Get(id)
+
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"data": result,
+		"msg":  "",
+	})
+}
+
+// @Summary 账号启用/禁用
+// @Tags 项目设置-管理员
+// @Description 账号启用/禁用
+// @Accept  json
+// @Produce  json
+// @Security ApiKeyAuth
+// @Param   id     body    string     true        "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ)
+// @Param   canLogin     body    int     true        "启用/禁用"
+// @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
+// @Router /api/projectSetting/account/enable [post]
+func (c *ManagerBs) PostEnable() {
+	// 1.获得数据
+	data := viewmodels.Manager{}
+	if err := c.Ctx.ReadJSON(&data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": "参数错误"})
+		return
+	}
+
+	// 2.验证数据
+	if err := data.ValidateEnable(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	// 账号ID校验
+	id, err := utils.GetDecryptId(data.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": "账号异常"})
+		return
+	}
+
+	if err = c.ServiceManager.Enable(id, data.CanLogin); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	c.Ctx.JSON(iris.Map{"code": 0, "msg": "操作成功"})
+}

+ 17 - 18
web/controllers/index.go

@@ -8,7 +8,6 @@ package controllers
 
 import (
 	"github.com/kataras/iris/v12"
-	"go.mod/models"
 	"go.mod/services"
 )
 
@@ -25,20 +24,20 @@ func (c *IndexController) Get() string {
 	return "welcome to"
 }
 
-//返回json示例
-func (c *IndexController) GetGifts() map[string]interface{} {
-	rs := make(map[string]interface{})
-	rs["code"] = 0
-	rs["msg"] = ""
-	datalist := c.ServiceManager.GetAll()
-	list := make([]models.CmManager, 0)
-	for _, data := range datalist {
-		list = append(list, data)
-		// 正常状态的才需要放进来
-		// if data.SysStatus == 0 {
-		// 	list = append(list, data)
-		// }
-	}
-	rs["gifts"] = list
-	return rs
-}
+// //返回json示例
+// func (c *IndexController) GetGifts() map[string]interface{} {
+// 	rs := make(map[string]interface{})
+// 	rs["code"] = 0
+// 	rs["msg"] = ""
+// 	datalist := c.ServiceManager.GetAll()
+// 	list := make([]models.CmManager, 0)
+// 	for _, data := range datalist {
+// 		list = append(list, data)
+// 		// 正常状态的才需要放进来
+// 		// if data.SysStatus == 0 {
+// 		// 	list = append(list, data)
+// 		// }
+// 	}
+// 	rs["gifts"] = list
+// 	return rs
+// }

+ 45 - 0
web/viewmodels/manager.go

@@ -0,0 +1,45 @@
+/*
+ * @description: 管理员 视图
+ * @Author: CP
+ * @Date: 2020-11-11 11:19:30
+ * @FilePath: \construction_management\web\viewmodels\manager.go
+ */
+package viewmodels
+
+import validation "github.com/go-ozzo/ozzo-validation/v3"
+
+type Manager struct {
+	Id        string `form:"id" json:"id" `
+	Username  string `form:"username" json:"username" `
+	LastLogin string `form:"lastLogin" json:"lastLogin" `
+	GroupId   int    `form:"groupId" json:"groupId" `
+	RealName  string `form:"realName" json:"realName" `
+	Telephone string `form:"telephone" json:"telephone" `
+	LoginIp   string `form:"loginIp" json:"loginIp" `
+	// Token      string `form:"token" json:"token" `
+	CanLogin   int    `form:"canLogin" json:"canLogin" `
+	Office     int    `form:"office" json:"office" `
+	Category   string `form:"category" json:"category" `
+	Email      string `form:"email" json:"email" `
+	Qq         string `form:"qq" json:"qq" `
+	Fixedphone string `form:"fixedphone" json:"fixedphone" `
+	Position   string `form:"position" json:"position" `
+	Avatar     string `form:"avatar" json:"avatar" `
+	CreateTime string `form:"createTime" json:"createTime" `
+	// UpdateTime string  `form:"updateTime" json:"updateTime" `
+
+}
+
+// 验证方法
+func (l Manager) ValidateGet() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Id, validation.Required.Error("ID不能为空")),
+	)
+}
+
+func (l Manager) ValidateEnable() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Id, validation.Required.Error("ID不能为空")),
+		validation.Field(&l.CanLogin, validation.In(0, 1).Error("未找到相关请求类型")),
+	)
+}