mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-12-24 08:12:55 +08:00
完善生成模版,调整目录
This commit is contained in:
108
server/controller/admin_ctl/commonController/album.go
Normal file
108
server/controller/admin_ctl/commonController/album.go
Normal file
@@ -0,0 +1,108 @@
|
||||
package commonController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/schema/commonSchema"
|
||||
"x_admin/service/commonService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func AlbumRoute(rg *gin.RouterGroup) {
|
||||
|
||||
handle := albumHandler{}
|
||||
|
||||
rg = rg.Group("/common", middleware.TokenAuth())
|
||||
|
||||
rg.GET("/album/albumList", handle.albumList)
|
||||
rg.POST("/album/albumRename", middleware.RecordLog("相册文件重命名"), handle.albumRename)
|
||||
rg.POST("/album/albumMove", middleware.RecordLog("相册文件移动"), handle.albumMove)
|
||||
rg.POST("/album/albumDel", middleware.RecordLog("相册文件删除"), handle.albumDel)
|
||||
rg.GET("/album/cateList", handle.cateList)
|
||||
rg.POST("/album/cateAdd", middleware.RecordLog("相册分类新增"), handle.cateAdd)
|
||||
rg.POST("/album/cateRename", middleware.RecordLog("相册分类重命名"), handle.cateRename)
|
||||
rg.POST("/album/cateDel", middleware.RecordLog("相册分类删除"), handle.cateDel)
|
||||
}
|
||||
|
||||
type albumHandler struct{}
|
||||
|
||||
// albumList 相册文件列表
|
||||
func (ah albumHandler) albumList(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq commonSchema.CommonAlbumListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := commonService.AlbumService.AlbumList(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// albumRename 相册文件重命名
|
||||
func (ah albumHandler) albumRename(c *gin.Context) {
|
||||
var rnReq commonSchema.CommonAlbumRenameReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &rnReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.AlbumRename(rnReq.ID, rnReq.Name))
|
||||
}
|
||||
|
||||
// albumMove 相册文件移动
|
||||
func (ah albumHandler) albumMove(c *gin.Context) {
|
||||
var mvReq commonSchema.CommonAlbumMoveReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &mvReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.AlbumMove(mvReq.Ids, mvReq.Cid))
|
||||
}
|
||||
|
||||
// albumDel 相册文件删除
|
||||
func (ah albumHandler) albumDel(c *gin.Context) {
|
||||
var delReq commonSchema.CommonAlbumDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.AlbumDel(delReq.Ids))
|
||||
}
|
||||
|
||||
// cateList 类目列表
|
||||
func (ah albumHandler) cateList(c *gin.Context) {
|
||||
var listReq commonSchema.CommonCateListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := commonService.AlbumService.CateList(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// cateAdd 类目新增
|
||||
func (ah albumHandler) cateAdd(c *gin.Context) {
|
||||
var addReq commonSchema.CommonCateAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.CateAdd(addReq))
|
||||
}
|
||||
|
||||
// cateRename 类目命名
|
||||
func (ah albumHandler) cateRename(c *gin.Context) {
|
||||
var rnReq commonSchema.CommonCateRenameReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &rnReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.CateRename(rnReq.ID, rnReq.Name))
|
||||
}
|
||||
|
||||
// cateDel 类目删除
|
||||
func (ah albumHandler) cateDel(c *gin.Context) {
|
||||
var delReq commonSchema.CommonCateDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, commonService.AlbumService.CateDel(delReq.ID))
|
||||
}
|
||||
71
server/controller/admin_ctl/commonController/captcha.go
Normal file
71
server/controller/admin_ctl/commonController/captcha.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package commonController
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"x_admin/schema/commonSchema"
|
||||
"x_admin/service/commonService"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func CaptchaRoute(rg *gin.RouterGroup) {
|
||||
|
||||
rg = rg.Group("/common/captcha")
|
||||
rg.POST("/get", func(c *gin.Context) {
|
||||
var captchaGet commonSchema.CaptchaGetParams
|
||||
if err := c.ShouldBind(&captchaGet); err != nil {
|
||||
// 返回错误信息
|
||||
c.JSON(200, errorRes(err))
|
||||
return
|
||||
}
|
||||
if captchaGet.CaptchaType == "" {
|
||||
c.JSON(200, errorRes(errors.New("验证码类型不能为空")))
|
||||
return
|
||||
}
|
||||
// 根据参数类型获取不同服务即可
|
||||
data, err := commonService.CaptchaGet(captchaGet.CaptchaType)
|
||||
if err != nil {
|
||||
c.JSON(200, errorRes(err))
|
||||
return
|
||||
}
|
||||
//输出json结果给调用方
|
||||
c.JSON(200, successRes(data))
|
||||
})
|
||||
rg.POST("/check", func(c *gin.Context) {
|
||||
var params commonSchema.ClientParams
|
||||
if err := c.ShouldBind(¶ms); err != nil {
|
||||
// 返回错误信息
|
||||
c.JSON(200, errorRes(err))
|
||||
return
|
||||
}
|
||||
err := commonService.CaptchaCheck(params)
|
||||
|
||||
if err != nil {
|
||||
c.JSON(200, errorRes(err))
|
||||
return
|
||||
}
|
||||
//输出json结果给调用方
|
||||
c.JSON(200, successRes(nil))
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func successRes(data interface{}) map[string]interface{} {
|
||||
ret := make(map[string]interface{})
|
||||
ret["error"] = false
|
||||
ret["repCode"] = "0000"
|
||||
ret["repData"] = data
|
||||
ret["repMsg"] = nil
|
||||
ret["successRes"] = true
|
||||
|
||||
return ret
|
||||
}
|
||||
func errorRes(err error) map[string]interface{} {
|
||||
ret := make(map[string]interface{})
|
||||
ret["error"] = true
|
||||
ret["repCode"] = "0001"
|
||||
ret["repData"] = nil
|
||||
ret["repMsg"] = err.Error()
|
||||
ret["successRes"] = false
|
||||
return ret
|
||||
}
|
||||
32
server/controller/admin_ctl/commonController/index.go
Normal file
32
server/controller/admin_ctl/commonController/index.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package commonController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/service/commonService"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func IndexRoute(rg *gin.RouterGroup) {
|
||||
handle := indexHandler{}
|
||||
|
||||
rg = rg.Group("/common", middleware.TokenAuth())
|
||||
rg.GET("/index/console", handle.console)
|
||||
rg.GET("/index/config", handle.config)
|
||||
|
||||
}
|
||||
|
||||
type indexHandler struct{}
|
||||
|
||||
// console 控制台
|
||||
func (ih indexHandler) console(c *gin.Context) {
|
||||
res, err := commonService.IndexService.Console()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// config 公共配置
|
||||
func (ih indexHandler) config(c *gin.Context) {
|
||||
res, err := commonService.IndexService.Config()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
50
server/controller/admin_ctl/commonController/upload.go
Normal file
50
server/controller/admin_ctl/commonController/upload.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package commonController
|
||||
|
||||
import (
|
||||
"x_admin/config"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/schema/commonSchema"
|
||||
"x_admin/service/commonService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func UploadRoute(rg *gin.RouterGroup) {
|
||||
handle := uploadHandler{}
|
||||
|
||||
rg = rg.Group("/common", middleware.TokenAuth())
|
||||
rg.POST("/upload/image", middleware.RecordLog("上传图片", middleware.RequestFile), handle.uploadImage)
|
||||
rg.POST("/upload/video", middleware.RecordLog("上传视频", middleware.RequestFile), handle.uploadVideo)
|
||||
}
|
||||
|
||||
type uploadHandler struct{}
|
||||
|
||||
// uploadImage 上传图片
|
||||
func (uh uploadHandler) uploadImage(c *gin.Context) {
|
||||
var uReq commonSchema.CommonUploadImageReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &uReq)) {
|
||||
return
|
||||
}
|
||||
file, ve := util.VerifyUtil.VerifyFile(c, "file")
|
||||
if response.IsFailWithResp(c, ve) {
|
||||
return
|
||||
}
|
||||
res, err := commonService.UploadService.UploadImage(file, uReq.Cid, config.AdminConfig.GetAdminId(c))
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// uploadVideo 上传视频
|
||||
func (uh uploadHandler) uploadVideo(c *gin.Context) {
|
||||
var uReq commonSchema.CommonUploadImageReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &uReq)) {
|
||||
return
|
||||
}
|
||||
file, ve := util.VerifyUtil.VerifyFile(c, "file")
|
||||
if response.IsFailWithResp(c, ve) {
|
||||
return
|
||||
}
|
||||
res, err := commonService.UploadService.UploadVideo(file, uReq.Cid, config.AdminConfig.GetAdminId(c))
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
129
server/controller/admin_ctl/flowController/flow_apply_ctl.go
Normal file
129
server/controller/admin_ctl/flowController/flow_apply_ctl.go
Normal file
@@ -0,0 +1,129 @@
|
||||
package flowController
|
||||
|
||||
import (
|
||||
"x_admin/config"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/flowSchema"
|
||||
"x_admin/service/flowService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type FlowApplyHandler struct{}
|
||||
|
||||
// @Summary 申请流程列表
|
||||
// @Tags flow_apply-申请流程
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param templateId query int false "模板"
|
||||
// @Param applyUserId query int false "申请人id"
|
||||
// @Param applyUserNickname query string false "申请人昵称"
|
||||
// @Param flowName query string false "流程名称"
|
||||
// @Param flowGroup query int false "流程分类"
|
||||
// @Param flowRemark query string false "流程描述"
|
||||
// @Param flowFormData query string false "表单配置"
|
||||
// @Param flowProcessData query string false "流程配置"
|
||||
// @Param status query int false "状态:1待提交,2审批中,3审批完成,4审批失败"
|
||||
// @Success 200 {object} response.Response{data=response.PageResp{lists=[]FlowApplyResp}} "成功"
|
||||
// @Router /api/admin/flow/flow_apply/list [get]
|
||||
func (hd FlowApplyHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq FlowApplyListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.ApplyService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 申请流程详情
|
||||
// @Tags flow_apply-申请流程
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id query int false "申请id"
|
||||
// @Success 200 {object} response.Response{data=FlowApplyResp} "成功"
|
||||
// @Router /api/admin/flow/flow_apply/detail [get]
|
||||
func (hd FlowApplyHandler) Detail(c *gin.Context) {
|
||||
var detailReq FlowApplyDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.ApplyService.Detail(detailReq.Id)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 申请流程新增
|
||||
// @Tags flow_apply-申请流程
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param templateId body int false "模板"
|
||||
// @Param applyUserId body int false "申请人id"
|
||||
// @Param applyUserNickname body string false "申请人昵称"
|
||||
// @Param flowName body string false "流程名称"
|
||||
// @Param flowGroup body int false "流程分类"
|
||||
// @Param flowRemark body string false "流程描述"
|
||||
// @Param flowFormData body string false "表单配置"
|
||||
// @Param flowProcessData body string false "流程配置"
|
||||
// @Param status body int false "状态:1待提交,2审批中,3审批完成,4审批失败"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_apply/add [post]
|
||||
func (hd FlowApplyHandler) Add(c *gin.Context) {
|
||||
var addReq FlowApplyAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
|
||||
var Nickname = config.AdminConfig.GetNickname(c)
|
||||
var AdminId = config.AdminConfig.GetAdminId(c)
|
||||
addReq.ApplyUserNickname = Nickname
|
||||
addReq.ApplyUserId = int(AdminId)
|
||||
addReq.Status = 1
|
||||
|
||||
response.CheckAndResp(c, flowService.ApplyService.Add(addReq))
|
||||
}
|
||||
|
||||
// @Summary 申请流程编辑
|
||||
// @Tags flow_apply-申请流程
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "申请id"
|
||||
// @Param templateId body int false "模板"
|
||||
// @Param applyUserId body int false "申请人id"
|
||||
// @Param applyUserNickname body string false "申请人昵称"
|
||||
// @Param flowName body string false "流程名称"
|
||||
// @Param flowGroup body int false "流程分类"
|
||||
// @Param flowRemark body string false "流程描述"
|
||||
// @Param flowFormData body string false "表单配置"
|
||||
// @Param flowProcessData body string false "流程配置"
|
||||
// @Param status body int false "状态:1待提交,2审批中,3审批完成,4审批失败"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_apply/edit [post]
|
||||
func (hd FlowApplyHandler) Edit(c *gin.Context) {
|
||||
var editReq FlowApplyEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.ApplyService.Edit(editReq))
|
||||
}
|
||||
|
||||
// @Summary 申请流程删除
|
||||
// @Tags flow_apply-申请流程
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "申请id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_apply/del [post]
|
||||
func (hd FlowApplyHandler) Del(c *gin.Context) {
|
||||
var delReq FlowApplyDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.ApplyService.Del(delReq.Id))
|
||||
}
|
||||
197
server/controller/admin_ctl/flowController/flow_history_ctl.go
Normal file
197
server/controller/admin_ctl/flowController/flow_history_ctl.go
Normal file
@@ -0,0 +1,197 @@
|
||||
package flowController
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/flowSchema"
|
||||
"x_admin/service/flowService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type FlowHistoryHandler struct {
|
||||
}
|
||||
|
||||
// @Summary 流程历史列表
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param applyId query int false "申请id"
|
||||
// @Param templateId query int false "模板id"
|
||||
// @Param applyUserId query int false "申请人id"
|
||||
// @Param applyUserNickname query string false "申请人昵称"
|
||||
// @Param approverId query int false "审批人id"
|
||||
// @Param approverNickname query string false "审批用户昵称"
|
||||
// @Param nodeId query string false "节点"
|
||||
// @Param formValue query string false "表单值"
|
||||
// @Param passStatus query int false "通过状态:0待处理,1通过,2拒绝"
|
||||
// @Param passRemark query string false "通过备注"
|
||||
// @Success 200 {object} response.Response{data=response.PageResp{lists=[]FlowHistoryResp}} "成功"
|
||||
// @Router /api/admin/flow/flow_history/list [get]
|
||||
func (hd FlowHistoryHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq = FlowHistoryListReq{
|
||||
PassStatus: -9999,
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.HistoryService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程历史列表-所有
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Success 200 {object} response.Response{data=FlowHistoryResp} "成功"
|
||||
// @Router /api/admin/flow/flow_history/listAll [get]
|
||||
func (hd FlowHistoryHandler) ListAll(c *gin.Context) {
|
||||
var listReq FlowHistoryListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.HistoryService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程历史详情
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id query int false "历史id"
|
||||
// @Success 200 {object} response.Response{data=FlowHistoryResp} "成功"
|
||||
// @Router /api/admin/flow/flow_history/detail [get]
|
||||
func (hd FlowHistoryHandler) Detail(c *gin.Context) {
|
||||
var detailReq FlowHistoryDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.HistoryService.Detail(detailReq.Id)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程历史新增
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param applyId body int false "申请id"
|
||||
// @Param templateId body int false "模板id"
|
||||
// @Param applyUserId body int false "申请人id"
|
||||
// @Param applyUserNickname body string false "申请人昵称"
|
||||
// @Param approverId body int false "审批人id"
|
||||
// @Param approverNickname body string false "审批用户昵称"
|
||||
// @Param nodeId body string false "节点"
|
||||
// @Param formValue body string false "表单值"
|
||||
// @Param passStatus body int false "通过状态:0待处理,1通过,2拒绝"
|
||||
// @Param passRemark body string false "通过备注"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_history/add [post]
|
||||
func (hd FlowHistoryHandler) Add(c *gin.Context) {
|
||||
var addReq FlowHistoryAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.HistoryService.Add(addReq))
|
||||
}
|
||||
|
||||
// @Summary 流程历史编辑
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "历史id"
|
||||
// @Param applyId body int false "申请id"
|
||||
// @Param templateId body int false "模板id"
|
||||
// @Param applyUserId body int false "申请人id"
|
||||
// @Param applyUserNickname body string false "申请人昵称"
|
||||
// @Param approverId body int false "审批人id"
|
||||
// @Param approverNickname body string false "审批用户昵称"
|
||||
// @Param nodeId body string false "节点"
|
||||
// @Param formValue body string false "表单值"
|
||||
// @Param passStatus body int false "通过状态:0待处理,1通过,2拒绝"
|
||||
// @Param passRemark body string false "通过备注"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_history/edit [post]
|
||||
func (hd FlowHistoryHandler) Edit(c *gin.Context) {
|
||||
var editReq FlowHistoryEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.HistoryService.Edit(editReq))
|
||||
}
|
||||
|
||||
// @Summary 流程历史删除
|
||||
// @Tags flow_history-流程历史
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "历史id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_history/del [post]
|
||||
func (hd FlowHistoryHandler) Del(c *gin.Context) {
|
||||
var delReq FlowHistoryDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.HistoryService.Del(delReq.Id))
|
||||
}
|
||||
|
||||
// 提交申请,通过审批
|
||||
//
|
||||
// @Tags flow_history-流程历史
|
||||
//
|
||||
// @Router /api/admin/flow/flow_apply/pass [post]
|
||||
func (hd FlowHistoryHandler) Pass(c *gin.Context) {
|
||||
var pass PassReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &pass)) {
|
||||
return
|
||||
}
|
||||
err := flowService.HistoryService.Pass(pass)
|
||||
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// 拒绝审批
|
||||
//
|
||||
// @Tags flow_history-流程历史
|
||||
//
|
||||
// @Router /api/admin/flow/flow_apply/back [post]
|
||||
func (hd FlowHistoryHandler) Back(c *gin.Context) {
|
||||
var back BackReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &back)) {
|
||||
return
|
||||
}
|
||||
err := flowService.HistoryService.Back(back)
|
||||
fmt.Println(err)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// 获取下一个审批节点,中间可能存在系统任务节点和网关
|
||||
func (hd FlowHistoryHandler) NextNode(c *gin.Context) {
|
||||
var nextNode NextNodeReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &nextNode)) {
|
||||
return
|
||||
}
|
||||
res, _, _, err := flowService.HistoryService.GetNextNode(nextNode.ApplyId)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// 获取节点的可审批用户
|
||||
func (hd FlowHistoryHandler) GetApprover(c *gin.Context) {
|
||||
var nextNode NextNodeReq
|
||||
// var node FlowTree
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &nextNode)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.HistoryService.GetApprover(nextNode.ApplyId)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.Failed, err.Error())
|
||||
return
|
||||
}
|
||||
response.OkWithData(c, res)
|
||||
}
|
||||
118
server/controller/admin_ctl/flowController/flow_template_ctl.go
Normal file
118
server/controller/admin_ctl/flowController/flow_template_ctl.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package flowController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/flowSchema"
|
||||
"x_admin/service/flowService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type FlowTemplateHandler struct {
|
||||
}
|
||||
|
||||
// @Summary 流程模板列表
|
||||
// @Tags flow_template-流程模板
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param flowName query string false "流程名称"
|
||||
// @Param flowGroup query int false "流程分类"
|
||||
// @Param flowRemark query string false "流程描述"
|
||||
// @Param flowFormData query string false "表单配置"
|
||||
// @Param flowProcessData query string false "流程配置"
|
||||
// @Success 200 {object} response.Response{data=response.PageResp{lists=[]FlowTemplateResp}} "成功"
|
||||
// @Router /api/admin/flow/flow_template/list [get]
|
||||
func (hd FlowTemplateHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq FlowTemplateListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.TemplateService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程模板列表-所有
|
||||
// @Tags flow_template-流程模板
|
||||
// @Router /api/admin/flow/flow_template/listAll [get]
|
||||
func (hd FlowTemplateHandler) ListAll(c *gin.Context) {
|
||||
res, err := flowService.TemplateService.ListAll()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程模板详情
|
||||
// @Tags flow_template-流程模板
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id query int false "历史id"
|
||||
// @Success 200 {object} FlowTemplateResp "成功"
|
||||
// @Router /api/admin/flow/flow_template/detail [get]
|
||||
func (hd FlowTemplateHandler) Detail(c *gin.Context) {
|
||||
var detailReq FlowTemplateDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := flowService.TemplateService.Detail(detailReq.Id)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 流程模板新增
|
||||
// @Tags flow_template-流程模板
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param flowName body string false "流程名称"
|
||||
// @Param flowGroup body int false "流程分类"
|
||||
// @Param flowRemark body string false "流程描述"
|
||||
// @Param flowFormData body string false "表单配置"
|
||||
// @Param flowProcessData body string false "流程配置"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_template/add [post]
|
||||
func (hd FlowTemplateHandler) Add(c *gin.Context) {
|
||||
var addReq FlowTemplateAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.TemplateService.Add(addReq))
|
||||
}
|
||||
|
||||
// @Summary 流程模板编辑
|
||||
// @Tags flow_template-流程模板
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "."
|
||||
// @Param flowName body string false "流程名称"
|
||||
// @Param flowGroup body int false "流程分类"
|
||||
// @Param flowRemark body string false "流程描述"
|
||||
// @Param flowFormData body string false "表单配置"
|
||||
// @Param flowProcessData body string false "流程配置"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_template/edit [post]
|
||||
func (hd FlowTemplateHandler) Edit(c *gin.Context) {
|
||||
var editReq FlowTemplateEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.TemplateService.Edit(editReq))
|
||||
}
|
||||
|
||||
// @Summary 流程模板删除
|
||||
// @Tags flow_template-流程模板
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param id body int false "历史id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/flow/flow_template/del [post]
|
||||
func (hd FlowTemplateHandler) Del(c *gin.Context) {
|
||||
var delReq FlowTemplateDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, flowService.TemplateService.Del(delReq.Id))
|
||||
}
|
||||
138
server/controller/admin_ctl/generatorController/generator.go
Normal file
138
server/controller/admin_ctl/generatorController/generator.go
Normal file
@@ -0,0 +1,138 @@
|
||||
package generatorController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/schema/generatorSchema"
|
||||
"x_admin/service/generatorService"
|
||||
|
||||
"net/http"
|
||||
"strings"
|
||||
"x_admin/middleware"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func GenRoute(rg *gin.RouterGroup) {
|
||||
handle := genHandler{}
|
||||
|
||||
rg = rg.Group("/gen", middleware.TokenAuth())
|
||||
rg.GET("/db", handle.dbTables)
|
||||
rg.GET("/list", handle.List)
|
||||
rg.GET("/detail", handle.Detail)
|
||||
rg.POST("/importTable", handle.importTable)
|
||||
rg.POST("/syncTable", handle.syncTable)
|
||||
rg.POST("/editTable", handle.editTable)
|
||||
rg.POST("/delTable", handle.delTable)
|
||||
rg.GET("/previewCode", handle.previewCode)
|
||||
rg.GET("/downloadCode", handle.downloadCode)
|
||||
}
|
||||
|
||||
type genHandler struct {
|
||||
// Service IGenerateService
|
||||
}
|
||||
|
||||
// dbTables 数据表列表
|
||||
func (gh genHandler) dbTables(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var tbReq generatorSchema.DbTablesReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &tbReq)) {
|
||||
return
|
||||
}
|
||||
res, err := generatorService.GenerateService.DbTables(page, tbReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 生成列表
|
||||
func (gh genHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq generatorSchema.ListTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := generatorService.GenerateService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 生成详情
|
||||
func (gh genHandler) Detail(c *gin.Context) {
|
||||
var detailReq generatorSchema.DetailTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := generatorService.GenerateService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// importTable 导入表结构
|
||||
func (gh genHandler) importTable(c *gin.Context) {
|
||||
var importReq generatorSchema.ImportTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &importReq)) {
|
||||
return
|
||||
}
|
||||
err := generatorService.GenerateService.ImportTable(strings.Split(importReq.Tables, ","))
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// syncTable 同步表结构
|
||||
func (gh genHandler) syncTable(c *gin.Context) {
|
||||
var syncReq generatorSchema.SyncTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &syncReq)) {
|
||||
return
|
||||
}
|
||||
err := generatorService.GenerateService.SyncTable(syncReq.ID)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// editTable 编辑表结构
|
||||
func (gh genHandler) editTable(c *gin.Context) {
|
||||
var editReq generatorSchema.EditTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
err := generatorService.GenerateService.EditTable(editReq)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// delTable 删除表结构
|
||||
func (gh genHandler) delTable(c *gin.Context) {
|
||||
var delReq generatorSchema.DelTableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
err := generatorService.GenerateService.DelTable(delReq.Ids)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// previewCode 预览代码
|
||||
func (gh genHandler) previewCode(c *gin.Context) {
|
||||
var previewReq generatorSchema.PreviewCodeReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &previewReq)) {
|
||||
return
|
||||
}
|
||||
res, err := generatorService.GenerateService.PreviewCode(previewReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// downloadCode 下载代码
|
||||
func (gh genHandler) downloadCode(c *gin.Context) {
|
||||
var downloadReq generatorSchema.DownloadReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &downloadReq)) {
|
||||
return
|
||||
}
|
||||
zipBytes, err := generatorService.GenerateService.DownloadCode(strings.Split(downloadReq.Tables, ","))
|
||||
if response.IsFailWithResp(c, err) {
|
||||
return
|
||||
}
|
||||
contentType := "application/zip"
|
||||
c.Header("Content-Type", contentType)
|
||||
c.Header("Content-Disposition", "attachment; filename=gen-"+downloadReq.Tables+".zip")
|
||||
c.Data(http.StatusOK, contentType, zipBytes)
|
||||
}
|
||||
48
server/controller/admin_ctl/monitorController/monitor.go
Normal file
48
server/controller/admin_ctl/monitorController/monitor.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package monitorController
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RegisterRoute(rg *gin.RouterGroup) {
|
||||
handle := monitorHandler{}
|
||||
|
||||
rg = rg.Group("/monitor", middleware.TokenAuth())
|
||||
rg.GET("/cache", middleware.RecordLog("缓存监控"), handle.cache)
|
||||
rg.GET("/server", middleware.RecordLog("服务监控"), handle.server)
|
||||
}
|
||||
|
||||
type monitorHandler struct{}
|
||||
|
||||
// cache 缓存监控
|
||||
func (mh monitorHandler) cache(c *gin.Context) {
|
||||
cmdStatsMap := util.RedisUtil.Info("commandstats")
|
||||
var stats []map[string]string
|
||||
for k, v := range cmdStatsMap {
|
||||
stats = append(stats, map[string]string{
|
||||
"name": strings.Split(k, "_")[1],
|
||||
"value": v[strings.Index(v, "=")+1 : strings.Index(v, ",")],
|
||||
})
|
||||
}
|
||||
response.OkWithData(c, map[string]interface{}{
|
||||
"info": util.RedisUtil.Info(),
|
||||
"commandStats": stats,
|
||||
"dbSize": util.RedisUtil.DBSize(),
|
||||
})
|
||||
}
|
||||
|
||||
// server 服务监控
|
||||
func (mh monitorHandler) server(c *gin.Context) {
|
||||
response.OkWithData(c, map[string]interface{}{
|
||||
"cpu": util.ServerUtil.GetCpuInfo(),
|
||||
"mem": util.ServerUtil.GetMemInfo(),
|
||||
"sys": util.ServerUtil.GetSysInfo(),
|
||||
"disk": util.ServerUtil.GetDiskInfo(),
|
||||
"go": util.ServerUtil.GetGoInfo(),
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,288 @@
|
||||
package monitorController
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"x_admin/core"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/monitorSchema"
|
||||
"x_admin/service/monitorService"
|
||||
"x_admin/util"
|
||||
"x_admin/util/excel2"
|
||||
"x_admin/util/img_util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/sync/singleflight"
|
||||
)
|
||||
|
||||
type MonitorClientHandler struct {
|
||||
requestGroup singleflight.Group
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息列表
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param ClientId query string false "sdk生成的客户端id"
|
||||
// @Param UserId query string false "用户id"
|
||||
// @Param Os query string false "系统"
|
||||
// @Param Browser query string false "浏览器"
|
||||
// @Param Country query string false "国家"
|
||||
// @Param Province query string false "省份"
|
||||
// @Param City query string false "城市"
|
||||
// @Param Operator query string false "电信运营商"
|
||||
// @Param Ip query string false "ip"
|
||||
// @Param Width query number false "屏幕"
|
||||
// @Param Height query number false "屏幕高度"
|
||||
// @Param Ua query string false "ua记录"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
//
|
||||
// @Success 200 {object} response.Response{ data=response.PageResp{ lists=[]MonitorClientResp}} "成功"
|
||||
// @Router /api/admin/monitor_client/list [get]
|
||||
func (hd *MonitorClientHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq MonitorClientListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorClientService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息列表-所有
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param ClientId query string false "sdk生成的客户端id"
|
||||
// @Param UserId query string false "用户id"
|
||||
// @Param Os query string false "系统"
|
||||
// @Param Browser query string false "浏览器"
|
||||
// @Param Country query string false "国家"
|
||||
// @Param Province query string false "省份"
|
||||
// @Param City query string false "城市"
|
||||
// @Param Operator query string false "电信运营商"
|
||||
// @Param Ip query string false "ip"
|
||||
// @Param Width query number false "屏幕"
|
||||
// @Param Height query number false "屏幕高度"
|
||||
// @Param Ua query string false "ua记录"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Success 200 {object} response.Response{ data=[]MonitorClientResp} "成功"
|
||||
// @Router /api/admin/monitor_client/listAll [get]
|
||||
func (hd *MonitorClientHandler) ListAll(c *gin.Context) {
|
||||
var listReq MonitorClientListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorClientService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
func (hd *MonitorClientHandler) ErrorUsers(c *gin.Context) {
|
||||
var Req MonitorClientDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &Req)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorClientService.ErrorUsers(Req.Id)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息详情
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id query number false "uuid"
|
||||
// @Success 200 {object} response.Response{ data=MonitorClientResp} "成功"
|
||||
// @Router /api/admin/monitor_client/detail [get]
|
||||
func (hd *MonitorClientHandler) Detail(c *gin.Context) {
|
||||
var detailReq MonitorClientDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err, _ := hd.requestGroup.Do("MonitorClient:Detail:"+strconv.Itoa(detailReq.Id), func() (any, error) {
|
||||
v, err := monitorService.MonitorClientService.Detail(detailReq.Id)
|
||||
return v, err
|
||||
})
|
||||
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息新增
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey body string false "项目key"
|
||||
// @Param ClientId body string false "sdk生成的客户端id"
|
||||
// @Param UserId body string false "用户id"
|
||||
// @Param Os body string false "系统"
|
||||
// @Param Browser body string false "浏览器"
|
||||
// @Param Country query string false "国家"
|
||||
// @Param Province query string false "省份"
|
||||
// @Param City query string false "城市"
|
||||
// @Param Operator query string false "电信运营商"
|
||||
// @Param Ip query string false "ip"
|
||||
// @Param Width body number false "屏幕"
|
||||
// @Param Height body number false "屏幕高度"
|
||||
// @Param Ua body string false "ua记录"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_client/add [post]
|
||||
func (hd *MonitorClientHandler) Add(c *gin.Context) {
|
||||
data, err := url.QueryUnescape(c.Query("data"))
|
||||
if err != nil {
|
||||
c.Data(200, "image/gif", img_util.EmptyGif())
|
||||
return
|
||||
}
|
||||
var addReq MonitorClientAddReq
|
||||
json.Unmarshal([]byte(data), &addReq)
|
||||
|
||||
lastClient, err := monitorService.MonitorClientService.DetailByClientId(*addReq.ClientId)
|
||||
|
||||
uaStr := c.GetHeader("user-agent")
|
||||
ip := c.ClientIP()
|
||||
|
||||
if err == nil {
|
||||
last := lastClient.UserId + lastClient.Width.String() + lastClient.Height.String() + lastClient.Ip + lastClient.Ua
|
||||
newStr := *addReq.UserId + addReq.Width.String() + addReq.Height.String() + ip + uaStr
|
||||
if last == newStr {
|
||||
// 前后数据一样,不用创建新的数据
|
||||
fmt.Println("前后数据一样,不用创建新的数据")
|
||||
c.Data(200, "image/gif", img_util.EmptyGif())
|
||||
return
|
||||
} else {
|
||||
// 新建的话,需要清除lastClient对应的缓存
|
||||
monitorService.MonitorClientService.CacheUtil.RemoveCache("ClientId:" + lastClient.ClientId)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if uaStr != "" {
|
||||
ua := core.UAParser.Parse(uaStr)
|
||||
addReq.Ua = &uaStr
|
||||
addReq.Os = &ua.Os.Family
|
||||
addReq.Browser = &ua.UserAgent.Family
|
||||
}
|
||||
|
||||
addReq.Ip = &ip
|
||||
if ip != "" && ip != "127.0.0.1" {
|
||||
regionInfo := util.IpUtil.Parse(ip)
|
||||
// regionInfo := util.IpUtil.Parse("118.24.157.190")
|
||||
addReq.City = ®ionInfo.City
|
||||
addReq.Country = ®ionInfo.Country
|
||||
addReq.Operator = ®ionInfo.Operator
|
||||
addReq.Province = ®ionInfo.Province
|
||||
}
|
||||
|
||||
monitorService.MonitorClientService.Add(addReq)
|
||||
|
||||
c.Data(200, "image/gif", img_util.EmptyGif())
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息删除
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "uuid"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_client/del [post]
|
||||
func (hd *MonitorClientHandler) Del(c *gin.Context) {
|
||||
var delReq MonitorClientDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, monitorService.MonitorClientService.Del(delReq.Id))
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息删除-批量
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
//
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Ids body string false "逗号分割的id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_client/delBatch [post]
|
||||
func (hd *MonitorClientHandler) DelBatch(c *gin.Context) {
|
||||
var delReq MonitorClientDelBatchReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
if delReq.Ids == "" {
|
||||
response.FailWithMsg(c, response.SystemError, "请选择要删除的数据")
|
||||
return
|
||||
}
|
||||
var Ids = strings.Split(delReq.Ids, ",")
|
||||
|
||||
response.CheckAndResp(c, monitorService.MonitorClientService.DelBatch(Ids))
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息导出
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param ClientId query string false "sdk生成的客户端id"
|
||||
// @Param UserId query string false "用户id"
|
||||
// @Param Os query string false "系统"
|
||||
// @Param Browser query string false "浏览器"
|
||||
// @Param Country query string false "国家"
|
||||
// @Param Province query string false "省份"
|
||||
// @Param City query string false "城市"
|
||||
// @Param Operator query string false "电信运营商"
|
||||
// @Param Ip query string false "ip"
|
||||
// @Param Width query number false "屏幕"
|
||||
// @Param Height query number false "屏幕高度"
|
||||
// @Param Ua query string false "ua记录"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Router /api/admin/monitor_client/ExportFile [get]
|
||||
func (hd *MonitorClientHandler) ExportFile(c *gin.Context) {
|
||||
var listReq MonitorClientListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorClientService.ExportFile(listReq)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "查询信息失败")
|
||||
return
|
||||
}
|
||||
f, err := excel2.Export(res, monitorService.MonitorClientService.GetExcelCol(), "Sheet1", "监控-客户端信息")
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "导出失败")
|
||||
return
|
||||
}
|
||||
excel2.DownLoadExcel("监控-客户端信息"+time.Now().Format("20060102-150405"), c.Writer, f)
|
||||
}
|
||||
|
||||
// @Summary 监控-客户端信息导入
|
||||
// @Tags monitor_client-监控-客户端信息
|
||||
// @Produce json
|
||||
// @Router /api/admin/monitor_client/ImportFile [post]
|
||||
func (hd *MonitorClientHandler) ImportFile(c *gin.Context) {
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, "文件不存在")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
importList := []MonitorClientResp{}
|
||||
err = excel2.GetExcelData(file, &importList, monitorService.MonitorClientService.GetExcelCol())
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = monitorService.MonitorClientService.ImportFile(importList)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
package monitorController
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/monitorSchema"
|
||||
"x_admin/service/monitorService"
|
||||
"x_admin/util"
|
||||
"x_admin/util/excel2"
|
||||
"x_admin/util/img_util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/sync/singleflight"
|
||||
)
|
||||
|
||||
type MonitorErrorHandler struct {
|
||||
requestGroup singleflight.Group
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列列表
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param EventType query string false "事件类型"
|
||||
// @Param Path query string false "URL地址"
|
||||
// @Param Message query string false "错误消息"
|
||||
// @Param Stack query string false "错误堆栈"
|
||||
// @Param Md5 query string false "md5"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
//
|
||||
// @Success 200 {object} response.Response{ data=response.PageResp{ lists=[]MonitorErrorResp}} "成功"
|
||||
// @Router /api/admin/monitor_error/list [get]
|
||||
func (hd *MonitorErrorHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq MonitorErrorListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorErrorService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列列表-所有
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param EventType query string false "事件类型"
|
||||
// @Param Path query string false "URL地址"
|
||||
// @Param Message query string false "错误消息"
|
||||
// @Param Stack query string false "错误堆栈"
|
||||
// @Param Md5 query string false "md5"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Success 200 {object} response.Response{ data=[]MonitorErrorResp} "成功"
|
||||
// @Router /api/admin/monitor_error/listAll [get]
|
||||
func (hd *MonitorErrorHandler) ListAll(c *gin.Context) {
|
||||
var listReq MonitorErrorListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorErrorService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列详情
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id query number false "错误id"
|
||||
// @Success 200 {object} response.Response{ data=MonitorErrorResp} "成功"
|
||||
// @Router /api/admin/monitor_error/detail [get]
|
||||
func (hd *MonitorErrorHandler) Detail(c *gin.Context) {
|
||||
var detailReq MonitorErrorDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err, _ := hd.requestGroup.Do("MonitorError:Detail:"+strconv.Itoa(detailReq.Id), func() (any, error) {
|
||||
v, err := monitorService.MonitorErrorService.Detail(detailReq.Id)
|
||||
return v, err
|
||||
})
|
||||
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列新增
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey body string false "项目key"
|
||||
// @Param EventType body string false "事件类型"
|
||||
// @Param Path body string false "URL地址"
|
||||
// @Param Message body string false "错误消息"
|
||||
// @Param Stack body string false "错误堆栈"
|
||||
// @Param Md5 body string false "md5"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_error/add [post]
|
||||
func (hd *MonitorErrorHandler) Add(c *gin.Context) {
|
||||
data, err := url.QueryUnescape(c.Query("data"))
|
||||
if err != nil {
|
||||
c.Data(200, "image/gif", img_util.EmptyGif())
|
||||
return
|
||||
}
|
||||
|
||||
var addReq []MonitorErrorAddReq
|
||||
json.Unmarshal([]byte(data), &addReq)
|
||||
|
||||
// if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
// return
|
||||
// }
|
||||
for i := 0; i < len(addReq); i++ {
|
||||
monitorService.MonitorErrorService.Add(addReq[i])
|
||||
}
|
||||
c.Data(200, "image/gif", img_util.EmptyGif())
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列删除
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "错误id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_error/del [post]
|
||||
func (hd *MonitorErrorHandler) Del(c *gin.Context) {
|
||||
var delReq MonitorErrorDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, monitorService.MonitorErrorService.Del(delReq.Id))
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列删除-批量
|
||||
// @Tags monitor_error-监控-错误列
|
||||
//
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Ids body string false "逗号分割的id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_error/delBatch [post]
|
||||
func (hd *MonitorErrorHandler) DelBatch(c *gin.Context) {
|
||||
var delReq MonitorErrorDelBatchReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
if delReq.Ids == "" {
|
||||
response.FailWithMsg(c, response.SystemError, "请选择要删除的数据")
|
||||
return
|
||||
}
|
||||
var Ids = strings.Split(delReq.Ids, ",")
|
||||
|
||||
response.CheckAndResp(c, monitorService.MonitorErrorService.DelBatch(Ids))
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列导出
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey query string false "项目key"
|
||||
// @Param EventType query string false "事件类型"
|
||||
// @Param Path query string false "URL地址"
|
||||
// @Param Message query string false "错误消息"
|
||||
// @Param Stack query string false "错误堆栈"
|
||||
// @Param Md5 query string false "md5"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Router /api/admin/monitor_error/ExportFile [get]
|
||||
func (hd *MonitorErrorHandler) ExportFile(c *gin.Context) {
|
||||
var listReq MonitorErrorListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorErrorService.ExportFile(listReq)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "查询信息失败")
|
||||
return
|
||||
}
|
||||
f, err := excel2.Export(res, monitorService.MonitorErrorService.GetExcelCol(), "Sheet1", "监控-错误列")
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "导出失败")
|
||||
return
|
||||
}
|
||||
excel2.DownLoadExcel("监控-错误列"+time.Now().Format("20060102-150405"), c.Writer, f)
|
||||
}
|
||||
|
||||
// @Summary 监控-错误列导入
|
||||
// @Tags monitor_error-监控-错误列
|
||||
// @Produce json
|
||||
// @Router /api/admin/monitor_error/ImportFile [post]
|
||||
func (hd *MonitorErrorHandler) ImportFile(c *gin.Context) {
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, "文件不存在")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
importList := []MonitorErrorResp{}
|
||||
err = excel2.GetExcelData(file, &importList, monitorService.MonitorErrorService.GetExcelCol())
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = monitorService.MonitorErrorService.ImportFile(importList)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
package monitorController
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/monitorSchema"
|
||||
"x_admin/service/monitorService"
|
||||
"x_admin/util"
|
||||
"x_admin/util/excel2"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/sync/singleflight"
|
||||
)
|
||||
|
||||
type MonitorProjectHandler struct {
|
||||
requestGroup singleflight.Group
|
||||
}
|
||||
|
||||
// @Summary 监控项目列表
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param ProjectKey query string false "项目uuid"
|
||||
// @Param ProjectName query string false "项目名称"
|
||||
// @Param ProjectType query string false "项目类型go java web node php 等"
|
||||
// @Param Status query number false "是否启用: 0=否, 1=是"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
//
|
||||
// @Success 200 {object} response.Response{ data=response.PageResp{ lists=[]MonitorProjectResp}} "成功"
|
||||
// @Router /api/admin/monitor_project/list [get]
|
||||
func (hd *MonitorProjectHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq MonitorProjectListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorProjectService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控项目列表-所有
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param ProjectKey query string false "项目uuid"
|
||||
// @Param ProjectName query string false "项目名称"
|
||||
// @Param ProjectType query string false "项目类型go java web node php 等"
|
||||
// @Param Status query number false "是否启用: 0=否, 1=是"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
// @Success 200 {object} response.Response{ data=[]MonitorProjectResp} "成功"
|
||||
// @Router /api/admin/monitor_project/listAll [get]
|
||||
func (hd *MonitorProjectHandler) ListAll(c *gin.Context) {
|
||||
var listReq MonitorProjectListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorProjectService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控项目详情
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id query number false "项目id"
|
||||
// @Success 200 {object} response.Response{ data=MonitorProjectResp} "成功"
|
||||
// @Router /api/admin/monitor_project/detail [get]
|
||||
func (hd *MonitorProjectHandler) Detail(c *gin.Context) {
|
||||
var detailReq MonitorProjectDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err, _ := hd.requestGroup.Do("MonitorProject:Detail:"+strconv.Itoa(detailReq.Id), func() (any, error) {
|
||||
v, err := monitorService.MonitorProjectService.Detail(detailReq.Id)
|
||||
return v, err
|
||||
})
|
||||
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 监控项目新增
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey body string false "项目uuid"
|
||||
// @Param ProjectName body string false "项目名称"
|
||||
// @Param ProjectType body string false "项目类型go java web node php 等"
|
||||
// @Param Status body number false "是否启用: 0=否, 1=是"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_project/add [post]
|
||||
func (hd *MonitorProjectHandler) Add(c *gin.Context) {
|
||||
var addReq MonitorProjectAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
createId, e := monitorService.MonitorProjectService.Add(addReq)
|
||||
response.CheckAndRespWithData(c, createId, e)
|
||||
}
|
||||
|
||||
// @Summary 监控项目编辑
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "项目id"
|
||||
// @Param ProjectKey body string false "项目uuid"
|
||||
// @Param ProjectName body string false "项目名称"
|
||||
// @Param ProjectType body string false "项目类型go java web node php 等"
|
||||
// @Param Status body number false "是否启用: 0=否, 1=是"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_project/edit [post]
|
||||
func (hd *MonitorProjectHandler) Edit(c *gin.Context) {
|
||||
var editReq MonitorProjectEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndRespWithData(c, editReq.Id, monitorService.MonitorProjectService.Edit(editReq))
|
||||
}
|
||||
|
||||
// @Summary 监控项目删除
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "项目id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_project/del [post]
|
||||
func (hd *MonitorProjectHandler) Del(c *gin.Context) {
|
||||
var delReq MonitorProjectDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, monitorService.MonitorProjectService.Del(delReq.Id))
|
||||
}
|
||||
|
||||
// @Summary 监控项目删除-批量
|
||||
// @Tags monitor_project-监控项目
|
||||
//
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Ids body string false "逗号分割的id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/monitor_project/delBatch [post]
|
||||
func (hd *MonitorProjectHandler) DelBatch(c *gin.Context) {
|
||||
var delReq MonitorProjectDelBatchReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
if delReq.Ids == "" {
|
||||
response.FailWithMsg(c, response.SystemError, "请选择要删除的数据")
|
||||
return
|
||||
}
|
||||
var Ids = strings.Split(delReq.Ids, ",")
|
||||
|
||||
response.CheckAndResp(c, monitorService.MonitorProjectService.DelBatch(Ids))
|
||||
}
|
||||
|
||||
// @Summary 监控项目导出
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param ProjectKey query string false "项目uuid"
|
||||
// @Param ProjectName query string false "项目名称"
|
||||
// @Param ProjectType query string false "项目类型go java web node php 等"
|
||||
// @Param Status query number false "是否启用: 0=否, 1=是"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
// @Router /api/admin/monitor_project/ExportFile [get]
|
||||
func (hd *MonitorProjectHandler) ExportFile(c *gin.Context) {
|
||||
var listReq MonitorProjectListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := monitorService.MonitorProjectService.ExportFile(listReq)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "查询信息失败")
|
||||
return
|
||||
}
|
||||
f, err := excel2.Export(res, monitorService.MonitorProjectService.GetExcelCol(), "Sheet1", "监控项目")
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "导出失败")
|
||||
return
|
||||
}
|
||||
excel2.DownLoadExcel("监控项目"+time.Now().Format("20060102-150405"), c.Writer, f)
|
||||
}
|
||||
|
||||
// @Summary 监控项目导入
|
||||
// @Tags monitor_project-监控项目
|
||||
// @Produce json
|
||||
// @Router /api/admin/monitor_project/ImportFile [post]
|
||||
func (hd *MonitorProjectHandler) ImportFile(c *gin.Context) {
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, "文件不存在")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
importList := []MonitorProjectResp{}
|
||||
err = excel2.GetExcelData(file, &importList, monitorService.MonitorProjectService.GetExcelCol())
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = monitorService.MonitorProjectService.ImportFile(importList)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
38
server/controller/admin_ctl/settingController/copyright.go
Normal file
38
server/controller/admin_ctl/settingController/copyright.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package settingController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
. "x_admin/schema/settingSchema"
|
||||
"x_admin/service/settingService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func CopyrightRoute(rg *gin.RouterGroup) {
|
||||
// db := core.GetDB()
|
||||
// service := NewSettingCopyrightService(db)
|
||||
handle := copyrightHandler{}
|
||||
|
||||
rg = rg.Group("/setting")
|
||||
rg.GET("/copyright/detail", handle.Detail)
|
||||
rg.POST("/copyright/save", handle.save)
|
||||
}
|
||||
|
||||
type copyrightHandler struct {
|
||||
}
|
||||
|
||||
// detail 获取备案信息
|
||||
func (ch copyrightHandler) Detail(c *gin.Context) {
|
||||
res, err := settingService.CopyrightService.Detail()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// save 保存备案信息
|
||||
func (ch copyrightHandler) save(c *gin.Context) {
|
||||
var cReqs []SettingCopyrightItemReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSONArray(c, &cReqs)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.CopyrightService.Save(cReqs))
|
||||
}
|
||||
79
server/controller/admin_ctl/settingController/dict_data.go
Normal file
79
server/controller/admin_ctl/settingController/dict_data.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package settingController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/settingSchema"
|
||||
"x_admin/service/settingService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func DictDataRoute(rg *gin.RouterGroup) {
|
||||
// db := core.GetDB()
|
||||
// permSrv := system.NewSystemAuthPermService(db)
|
||||
// roleSrv := system.NewSystemAuthRoleService(db, permSrv)
|
||||
// adminSrv := system.NewSystemAuthAdminService(db, permSrv, roleSrv)
|
||||
// service := system.NewSystemLoginService(db, adminSrv)
|
||||
|
||||
// authSrv := NewSettingDictDataService(db)
|
||||
|
||||
handle := dictDataHandler{}
|
||||
|
||||
rg = rg.Group("/setting", middleware.TokenAuth())
|
||||
rg.GET("/dict/data/all", handle.All)
|
||||
rg.GET("/dict/data/detail", handle.Detail)
|
||||
rg.POST("/dict/data/add", handle.Add)
|
||||
rg.POST("/dict/data/edit", handle.Edit)
|
||||
rg.POST("/dict/data/del", handle.Del)
|
||||
}
|
||||
|
||||
type dictDataHandler struct{}
|
||||
|
||||
// all 字典数据所有
|
||||
func (ddh dictDataHandler) All(c *gin.Context) {
|
||||
var allReq SettingDictDataListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &allReq)) {
|
||||
return
|
||||
}
|
||||
res, err := settingService.DictDataService.All(allReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 字典数据详情
|
||||
func (ddh dictDataHandler) Detail(c *gin.Context) {
|
||||
var detailReq SettingDictDataDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := settingService.DictDataService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 字典数据新增
|
||||
func (ddh dictDataHandler) Add(c *gin.Context) {
|
||||
var addReq SettingDictDataAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictDataService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 字典数据编辑
|
||||
func (ddh dictDataHandler) Edit(c *gin.Context) {
|
||||
var editReq SettingDictDataEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictDataService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 字典数据删除
|
||||
func (ddh dictDataHandler) Del(c *gin.Context) {
|
||||
var delReq SettingDictDataDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictDataService.Del(delReq))
|
||||
}
|
||||
91
server/controller/admin_ctl/settingController/dict_type.go
Normal file
91
server/controller/admin_ctl/settingController/dict_type.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package settingController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/settingSchema"
|
||||
"x_admin/service/settingService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func DictTypeRoute(rg *gin.RouterGroup) {
|
||||
// db := core.GetDB()
|
||||
// permSrv := system.NewSystemAuthPermService(db)
|
||||
// roleSrv := system.NewSystemAuthRoleService(db, permSrv)
|
||||
// adminSrv := system.NewSystemAuthAdminService(db, permSrv, roleSrv)
|
||||
// service := system.NewSystemLoginService(db, adminSrv)
|
||||
|
||||
// server := NewSettingDictTypeService(db)
|
||||
|
||||
handle := dictTypeHandler{}
|
||||
|
||||
rg = rg.Group("/setting", middleware.TokenAuth())
|
||||
rg.GET("/dict/type/all", handle.All)
|
||||
rg.GET("/dict/type/list", handle.List)
|
||||
rg.GET("/dict/type/detail", handle.Detail)
|
||||
rg.POST("/dict/type/add", handle.Add)
|
||||
rg.POST("/dict/type/edit", handle.Edit)
|
||||
rg.POST("/dict/type/del", handle.Del)
|
||||
}
|
||||
|
||||
type dictTypeHandler struct{}
|
||||
|
||||
// all 字典类型所有
|
||||
func (dth dictTypeHandler) All(c *gin.Context) {
|
||||
res, err := settingService.DictTypeService.All()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 字典类型列表
|
||||
func (dth dictTypeHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq SettingDictTypeListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := settingService.DictTypeService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 字典类型详情
|
||||
func (dth dictTypeHandler) Detail(c *gin.Context) {
|
||||
var detailReq SettingDictTypeDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := settingService.DictTypeService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 字典类型新增
|
||||
func (dth dictTypeHandler) Add(c *gin.Context) {
|
||||
var addReq SettingDictTypeAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictTypeService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 字典类型编辑
|
||||
func (dth dictTypeHandler) Edit(c *gin.Context) {
|
||||
var editReq SettingDictTypeEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictTypeService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 字典类型删除
|
||||
func (dth dictTypeHandler) Del(c *gin.Context) {
|
||||
var delReq SettingDictTypeDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.DictTypeService.Del(delReq))
|
||||
}
|
||||
44
server/controller/admin_ctl/settingController/website.go
Normal file
44
server/controller/admin_ctl/settingController/website.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package settingController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/settingSchema"
|
||||
"x_admin/service/settingService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func WebsiteRoute(rg *gin.RouterGroup) {
|
||||
// db := core.GetDB()
|
||||
// permSrv := system.NewSystemAuthPermService(db)
|
||||
// roleSrv := system.NewSystemAuthRoleService(db, permSrv)
|
||||
// adminSrv := system.NewSystemAuthAdminService(db, permSrv, roleSrv)
|
||||
// service := system.NewSystemLoginService(db, adminSrv)
|
||||
|
||||
// server := NewSettingWebsiteService(db)
|
||||
|
||||
handle := websiteHandler{}
|
||||
|
||||
rg = rg.Group("/setting", middleware.TokenAuth())
|
||||
rg.GET("/website/detail", handle.Detail)
|
||||
rg.POST("/website/save", handle.save)
|
||||
}
|
||||
|
||||
type websiteHandler struct{}
|
||||
|
||||
// detail 获取网站信息
|
||||
func (wh websiteHandler) Detail(c *gin.Context) {
|
||||
res, err := settingService.WebsiteService.Detail()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// save 保存网站信息
|
||||
func (wh websiteHandler) save(c *gin.Context) {
|
||||
var wsReq SettingWebsiteReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &wsReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, settingService.WebsiteService.Save(wsReq))
|
||||
}
|
||||
199
server/controller/admin_ctl/systemController/admin.go
Normal file
199
server/controller/admin_ctl/systemController/admin.go
Normal file
@@ -0,0 +1,199 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"x_admin/config"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
|
||||
"x_admin/util/excel"
|
||||
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func AdminRoute(rg *gin.RouterGroup) {
|
||||
|
||||
handle := AdminHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
|
||||
rg.GET("/admin/self", handle.Self)
|
||||
rg.GET("/admin/list", handle.List)
|
||||
rg.GET("/admin/listAll", handle.ListAll)
|
||||
rg.GET("/admin/ListByDeptId", handle.ListByDeptId)
|
||||
rg.GET("/admin/detail", handle.Detail)
|
||||
rg.POST("/admin/add", middleware.RecordLog("管理员新增"), handle.Add)
|
||||
rg.POST("/admin/edit", middleware.RecordLog("管理员编辑"), handle.Edit)
|
||||
rg.POST("/admin/upInfo", middleware.RecordLog("管理员更新"), handle.UpInfo)
|
||||
rg.POST("/admin/del", middleware.RecordLog("管理员删除"), handle.Del)
|
||||
rg.POST("/admin/disable", middleware.RecordLog("管理员状态切换"), handle.Disable)
|
||||
|
||||
rg.GET("/admin/ExportFile", middleware.RecordLog("管理员导出"), handle.ExportFile)
|
||||
|
||||
rg.POST("/admin/ImportFile", handle.ImportFile)
|
||||
|
||||
}
|
||||
|
||||
type AdminHandler struct {
|
||||
// Service ISystemAuthAdminService
|
||||
}
|
||||
|
||||
// self 管理员信息
|
||||
func (ah AdminHandler) Self(c *gin.Context) {
|
||||
adminId := config.AdminConfig.GetAdminId(c)
|
||||
res, err := systemService.AdminService.Self(adminId)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
func (ah AdminHandler) ExportFile(c *gin.Context) {
|
||||
var listReq systemSchema.SystemAuthAdminListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.AdminService.ExportFile(listReq)
|
||||
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "查询导出失败")
|
||||
return
|
||||
}
|
||||
f, err := excel.NormalDynamicExport(res, "Sheet1", "用户信息", nil)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "导出失败")
|
||||
return
|
||||
}
|
||||
excel.DownLoadExcel("用户信息", c.Writer, f)
|
||||
// c.Header("Content-Type", "application/octet-stream")
|
||||
// c.Header("Content-Disposition", "attachment; filename="+"用户信息.xlsx")
|
||||
// c.Header("Content-Transfer-Encoding", "binary")
|
||||
// f.Write(c.Writer)
|
||||
}
|
||||
|
||||
// 导入文件
|
||||
func (ah AdminHandler) ImportFile(c *gin.Context) {
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, "文件不存在")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
importList := []systemSchema.SystemAuthAdminResp{}
|
||||
err = excel.GetExcelData(file, &importList)
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
err = systemService.AdminService.ImportFile(importList)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
|
||||
// list 管理员列表
|
||||
func (ah AdminHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq systemSchema.SystemAuthAdminListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.AdminService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// ListAll 所有管理员列表
|
||||
func (ah AdminHandler) ListAll(c *gin.Context) {
|
||||
|
||||
var listReq systemSchema.SystemAuthAdminListReq
|
||||
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.AdminService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 管理员详细
|
||||
func (ah AdminHandler) Detail(c *gin.Context) {
|
||||
var detailReq systemSchema.SystemAuthAdminDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.AdminService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// add 管理员新增
|
||||
func (ah AdminHandler) Add(c *gin.Context) {
|
||||
var addReq systemSchema.SystemAuthAdminAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.AdminService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 管理员编辑
|
||||
func (ah AdminHandler) Edit(c *gin.Context) {
|
||||
var editReq systemSchema.SystemAuthAdminEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.AdminService.Edit(c, editReq))
|
||||
}
|
||||
|
||||
// upInfo 管理员更新
|
||||
func (ah AdminHandler) UpInfo(c *gin.Context) {
|
||||
var updateReq systemSchema.SystemAuthAdminUpdateReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &updateReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.AdminService.Update(
|
||||
c, updateReq, config.AdminConfig.GetAdminId(c)))
|
||||
}
|
||||
|
||||
// del 管理员删除
|
||||
func (ah AdminHandler) Del(c *gin.Context) {
|
||||
var delReq systemSchema.SystemAuthAdminDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.AdminService.Del(c, delReq.ID))
|
||||
}
|
||||
|
||||
// disable 管理员状态切换
|
||||
func (ah AdminHandler) Disable(c *gin.Context) {
|
||||
var disableReq systemSchema.SystemAuthAdminDisableReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &disableReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.AdminService.Disable(c, disableReq.ID))
|
||||
}
|
||||
|
||||
// @Summary 获取部门的用户
|
||||
// @Description 获取部门的用户
|
||||
// @Tags 管理员
|
||||
// @Param deptId path int true "部门id"
|
||||
// @Success 200 {object} response.Response "{"code": 200, "data": []}"
|
||||
// @Router /system/admin/ListByDeptId/{deptId} [get]
|
||||
func (ah AdminHandler) ListByDeptId(c *gin.Context) {
|
||||
deptIdStr, bool := c.GetQuery("deptId")
|
||||
if bool == false {
|
||||
response.FailWithMsg(c, response.Failed, "deptId不能为空")
|
||||
return
|
||||
}
|
||||
deptId, err := strconv.Atoi(deptIdStr)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.Failed, "deptId参数错误")
|
||||
return
|
||||
}
|
||||
// if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &deptId)) {
|
||||
// return
|
||||
// }
|
||||
res, err := systemService.AdminService.ListByUserIdOrDeptIdPostId(0, deptId, 0)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
86
server/controller/admin_ctl/systemController/dept.go
Normal file
86
server/controller/admin_ctl/systemController/dept.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func DeptRoute(rg *gin.RouterGroup) {
|
||||
// db := core.GetDB()
|
||||
// permSrv := system.NewSystemAuthPermService(db)
|
||||
// roleSrv := system.NewSystemAuthRoleService(db, permSrv)
|
||||
// adminSrv := system.NewSystemAuthAdminService(db, permSrv, roleSrv)
|
||||
// service := system.NewSystemLoginService(db, adminSrv)
|
||||
// authSrv := system.NewSystemAuthMenuService(db, permSrv)
|
||||
|
||||
handle := deptHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.GET("/dept/all", handle.All)
|
||||
rg.GET("/dept/list", handle.List)
|
||||
rg.GET("/dept/detail", handle.Detail)
|
||||
rg.POST("/dept/add", handle.Add)
|
||||
rg.POST("/dept/edit", handle.Edit)
|
||||
rg.POST("/dept/del", handle.Del)
|
||||
}
|
||||
|
||||
type deptHandler struct {
|
||||
}
|
||||
|
||||
// all 部门所有
|
||||
func (dh deptHandler) All(c *gin.Context) {
|
||||
res, err := systemService.DeptService.All()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 部门列表
|
||||
func (dh deptHandler) List(c *gin.Context) {
|
||||
var listReq SystemAuthDeptListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.DeptService.List(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 部门详情
|
||||
func (dh deptHandler) Detail(c *gin.Context) {
|
||||
var detailReq SystemAuthDeptDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.DeptService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// add 部门新增
|
||||
func (dh deptHandler) Add(c *gin.Context) {
|
||||
var addReq SystemAuthDeptAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.DeptService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 部门编辑
|
||||
func (dh deptHandler) Edit(c *gin.Context) {
|
||||
var editReq SystemAuthDeptEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.DeptService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 部门删除
|
||||
func (dh deptHandler) Del(c *gin.Context) {
|
||||
var delReq SystemAuthDeptDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.DeptService.Del(delReq.ID))
|
||||
}
|
||||
52
server/controller/admin_ctl/systemController/log.go
Normal file
52
server/controller/admin_ctl/systemController/log.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func LogRoute(rg *gin.RouterGroup) {
|
||||
handle := logHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.GET("/log/operate", handle.operate)
|
||||
rg.GET("/log/login", handle.login)
|
||||
}
|
||||
|
||||
type logHandler struct {
|
||||
// Service ISystemLogsServer
|
||||
}
|
||||
|
||||
// operate 操作日志
|
||||
func (lh logHandler) operate(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var logReq SystemLogOperateReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &logReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.LogsService.Operate(page, logReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// login 登录日志
|
||||
func (lh logHandler) login(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var logReq SystemLogLoginReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &logReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.LogsService.Login(page, logReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
53
server/controller/admin_ctl/systemController/login.go
Normal file
53
server/controller/admin_ctl/systemController/login.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
"x_admin/schema/commonSchema"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/commonService"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func LoginRoute(rg *gin.RouterGroup) {
|
||||
|
||||
handle := loginHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.POST("/login", handle.login)
|
||||
rg.POST("/logout", handle.logout)
|
||||
}
|
||||
|
||||
type loginHandler struct{}
|
||||
|
||||
// login 登录系统
|
||||
func (lh loginHandler) login(c *gin.Context) {
|
||||
var params commonSchema.ClientParams
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, ¶ms)) {
|
||||
return
|
||||
}
|
||||
err := commonService.CaptchaVerify(params)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.Failed, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
var loginReq SystemLoginReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &loginReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.LoginService.Login(c, &loginReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// logout 登录退出
|
||||
func (lh loginHandler) logout(c *gin.Context) {
|
||||
var logoutReq SystemLogoutReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyHeader(c, &logoutReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.LoginService.Logout(&logoutReq))
|
||||
}
|
||||
79
server/controller/admin_ctl/systemController/menu.go
Normal file
79
server/controller/admin_ctl/systemController/menu.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"x_admin/config"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func MenuRoute(rg *gin.RouterGroup) {
|
||||
handle := menuHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.GET("/menu/route", handle.route)
|
||||
rg.GET("/menu/list", handle.List)
|
||||
rg.GET("/menu/detail", handle.Detail)
|
||||
rg.POST("/menu/add", handle.Add)
|
||||
rg.POST("/menu/edit", handle.Edit)
|
||||
rg.POST("/menu/del", handle.Del)
|
||||
}
|
||||
|
||||
type menuHandler struct {
|
||||
}
|
||||
|
||||
// route 菜单路由
|
||||
func (mh menuHandler) route(c *gin.Context) {
|
||||
roleId := config.AdminConfig.GetRoleId(c)
|
||||
id, _ := strconv.ParseUint(roleId, 10, 64)
|
||||
res, err := systemService.MenuService.SelectMenuByRoleId(c, uint(id))
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 菜单列表
|
||||
func (mh menuHandler) List(c *gin.Context) {
|
||||
res, err := systemService.MenuService.List()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 菜单详情
|
||||
func (mh menuHandler) Detail(c *gin.Context) {
|
||||
var detailReq SystemAuthMenuDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.MenuService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// add 新增菜单
|
||||
func (mh menuHandler) Add(c *gin.Context) {
|
||||
var addReq SystemAuthMenuAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.MenuService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 编辑菜单
|
||||
func (mh menuHandler) Edit(c *gin.Context) {
|
||||
var editReq SystemAuthMenuEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.MenuService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 删除菜单
|
||||
func (mh menuHandler) Del(c *gin.Context) {
|
||||
var delReq SystemAuthMenuDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.MenuService.Del(delReq.ID))
|
||||
}
|
||||
84
server/controller/admin_ctl/systemController/post.go
Normal file
84
server/controller/admin_ctl/systemController/post.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func PostRoute(rg *gin.RouterGroup) {
|
||||
handle := postHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.GET("/post/all", handle.All)
|
||||
rg.GET("/post/list", handle.List)
|
||||
rg.GET("/post/detail", handle.Detail)
|
||||
rg.POST("/post/add", handle.Add)
|
||||
rg.POST("/post/edit", handle.Edit)
|
||||
rg.POST("/post/del", handle.Del)
|
||||
}
|
||||
|
||||
type postHandler struct {
|
||||
}
|
||||
|
||||
// all 岗位所有
|
||||
func (ph postHandler) All(c *gin.Context) {
|
||||
res, err := systemService.PostService.All()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 岗位列表
|
||||
func (ph postHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq SystemAuthPostListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.PostService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 岗位详情
|
||||
func (ph postHandler) Detail(c *gin.Context) {
|
||||
var detailReq SystemAuthPostDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.PostService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// add 岗位新增
|
||||
func (ph postHandler) Add(c *gin.Context) {
|
||||
var addReq SystemAuthPostAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.PostService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 岗位编辑
|
||||
func (ph postHandler) Edit(c *gin.Context) {
|
||||
var editReq SystemAuthPostEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.PostService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 岗位删除
|
||||
func (ph postHandler) Del(c *gin.Context) {
|
||||
var delReq SystemAuthPostDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyBody(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.PostService.Del(delReq.ID))
|
||||
}
|
||||
82
server/controller/admin_ctl/systemController/role.go
Normal file
82
server/controller/admin_ctl/systemController/role.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package systemController
|
||||
|
||||
import (
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/middleware"
|
||||
. "x_admin/schema/systemSchema"
|
||||
"x_admin/service/systemService"
|
||||
"x_admin/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RoleRoute(rg *gin.RouterGroup) {
|
||||
|
||||
handle := RoleHandler{}
|
||||
|
||||
rg = rg.Group("/system", middleware.TokenAuth())
|
||||
rg.GET("/role/all", handle.All)
|
||||
rg.GET("/role/list", middleware.RecordLog("角色列表"), handle.List)
|
||||
rg.GET("/role/detail", middleware.RecordLog("角色详情"), handle.Detail)
|
||||
rg.POST("/role/add", middleware.RecordLog("角色新增"), handle.Add)
|
||||
rg.POST("/role/edit", middleware.RecordLog("角色编辑"), handle.Edit)
|
||||
rg.POST("/role/del", middleware.RecordLog("角色删除"), handle.Del)
|
||||
}
|
||||
|
||||
type RoleHandler struct {
|
||||
// Service ISystemAuthRoleService
|
||||
}
|
||||
|
||||
// all 角色所有
|
||||
func (rh RoleHandler) All(c *gin.Context) {
|
||||
res, err := systemService.RoleService.All()
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// list 角色列表
|
||||
func (rh RoleHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.RoleService.List(page)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// detail 角色详情
|
||||
func (rh RoleHandler) Detail(c *gin.Context) {
|
||||
var detailReq SystemAuthRoleDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err := systemService.RoleService.Detail(detailReq.ID)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// add 新增角色
|
||||
func (rh RoleHandler) Add(c *gin.Context) {
|
||||
var addReq SystemAuthRoleAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.RoleService.Add(addReq))
|
||||
}
|
||||
|
||||
// edit 编辑角色
|
||||
func (rh RoleHandler) Edit(c *gin.Context) {
|
||||
var editReq SystemAuthRoleEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.RoleService.Edit(editReq))
|
||||
}
|
||||
|
||||
// del 删除角色
|
||||
func (rh RoleHandler) Del(c *gin.Context) {
|
||||
var delReq SystemAuthRoleDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, systemService.RoleService.Del(delReq.ID))
|
||||
}
|
||||
216
server/controller/admin_ctl/user_protocol_ctl.go
Normal file
216
server/controller/admin_ctl/user_protocol_ctl.go
Normal file
@@ -0,0 +1,216 @@
|
||||
package admin_ctl
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"x_admin/core/request"
|
||||
"x_admin/core/response"
|
||||
"x_admin/schema"
|
||||
"x_admin/service"
|
||||
"x_admin/util"
|
||||
"x_admin/util/excel2"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/sync/singleflight"
|
||||
)
|
||||
|
||||
type UserProtocolHandler struct {
|
||||
requestGroup singleflight.Group
|
||||
}
|
||||
|
||||
// @Summary 用户协议列表
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param PageNo query int true "页码"
|
||||
// @Param PageSize query int true "每页数量"
|
||||
// @Param Title query string false "标题"
|
||||
// @Param Content query string false "协议内容"
|
||||
// @Param Sort query number false "排序"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
//
|
||||
// @Success 200 {object} response.Response{ data=response.PageResp{ lists=[]UserProtocolResp}} "成功"
|
||||
// @Router /api/admin/user_protocol/list [get]
|
||||
func (hd *UserProtocolHandler) List(c *gin.Context) {
|
||||
var page request.PageReq
|
||||
var listReq schema.UserProtocolListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &page)) {
|
||||
return
|
||||
}
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := service.UserProtocolService.List(page, listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 用户协议列表-所有
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Title query string false "标题"
|
||||
// @Param Content query string false "协议内容"
|
||||
// @Param Sort query number false "排序"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
// @Success 200 {object} response.Response{ data=[]UserProtocolResp} "成功"
|
||||
// @Router /api/admin/user_protocol/listAll [get]
|
||||
func (hd *UserProtocolHandler) ListAll(c *gin.Context) {
|
||||
var listReq schema.UserProtocolListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := service.UserProtocolService.ListAll(listReq)
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 用户协议详情
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id query number false "Id"
|
||||
// @Success 200 {object} response.Response{ data=UserProtocolResp} "成功"
|
||||
// @Router /api/admin/user_protocol/detail [get]
|
||||
func (hd *UserProtocolHandler) Detail(c *gin.Context) {
|
||||
var detailReq schema.UserProtocolDetailReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &detailReq)) {
|
||||
return
|
||||
}
|
||||
res, err, _ := hd.requestGroup.Do("UserProtocol:Detail:"+strconv.Itoa(detailReq.Id), func() (any, error) {
|
||||
v, err := service.UserProtocolService.Detail(detailReq.Id)
|
||||
return v, err
|
||||
})
|
||||
|
||||
response.CheckAndRespWithData(c, res, err)
|
||||
}
|
||||
|
||||
// @Summary 用户协议新增
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Title body string false "标题"
|
||||
// @Param Content body string false "协议内容"
|
||||
// @Param Sort body number false "排序"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/user_protocol/add [post]
|
||||
func (hd *UserProtocolHandler) Add(c *gin.Context) {
|
||||
var addReq schema.UserProtocolAddReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &addReq)) {
|
||||
return
|
||||
}
|
||||
createId, e := service.UserProtocolService.Add(addReq)
|
||||
response.CheckAndRespWithData(c, createId, e)
|
||||
}
|
||||
|
||||
// @Summary 用户协议编辑
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "Id"
|
||||
// @Param Title body string false "标题"
|
||||
// @Param Content body string false "协议内容"
|
||||
// @Param Sort body number false "排序"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/user_protocol/edit [post]
|
||||
func (hd *UserProtocolHandler) Edit(c *gin.Context) {
|
||||
var editReq schema.UserProtocolEditReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &editReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndRespWithData(c, editReq.Id, service.UserProtocolService.Edit(editReq))
|
||||
}
|
||||
|
||||
// @Summary 用户协议删除
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Id body number false "Id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/user_protocol/del [post]
|
||||
func (hd *UserProtocolHandler) Del(c *gin.Context) {
|
||||
var delReq schema.UserProtocolDelReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
response.CheckAndResp(c, service.UserProtocolService.Del(delReq.Id))
|
||||
}
|
||||
|
||||
// @Summary 用户协议删除-批量
|
||||
// @Tags user_protocol-用户协议
|
||||
//
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Ids body string false "逗号分割的id"
|
||||
// @Success 200 {object} response.Response "成功"
|
||||
// @Router /api/admin/user_protocol/delBatch [post]
|
||||
func (hd *UserProtocolHandler) DelBatch(c *gin.Context) {
|
||||
var delReq schema.UserProtocolDelBatchReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyJSON(c, &delReq)) {
|
||||
return
|
||||
}
|
||||
if delReq.Ids == "" {
|
||||
response.FailWithMsg(c, response.SystemError, "请选择要删除的数据")
|
||||
return
|
||||
}
|
||||
var Ids = strings.Split(delReq.Ids, ",")
|
||||
|
||||
response.CheckAndResp(c, service.UserProtocolService.DelBatch(Ids))
|
||||
}
|
||||
|
||||
// @Summary 用户协议导出
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Param Token header string true "token"
|
||||
// @Param Title query string false "标题"
|
||||
// @Param Content query string false "协议内容"
|
||||
// @Param Sort query number false "排序"
|
||||
// @Param CreateTimeStart query string false "创建时间"
|
||||
// @Param CreateTimeEnd query string false "创建时间"
|
||||
// @Param UpdateTimeStart query string false "更新时间"
|
||||
// @Param UpdateTimeEnd query string false "更新时间"
|
||||
// @Router /api/admin/user_protocol/ExportFile [get]
|
||||
func (hd *UserProtocolHandler) ExportFile(c *gin.Context) {
|
||||
var listReq schema.UserProtocolListReq
|
||||
if response.IsFailWithResp(c, util.VerifyUtil.VerifyQuery(c, &listReq)) {
|
||||
return
|
||||
}
|
||||
res, err := service.UserProtocolService.ExportFile(listReq)
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "查询信息失败")
|
||||
return
|
||||
}
|
||||
f, err := excel2.Export(res, service.UserProtocolService.GetExcelCol(), "Sheet1", "用户协议")
|
||||
if err != nil {
|
||||
response.FailWithMsg(c, response.SystemError, "导出失败")
|
||||
return
|
||||
}
|
||||
excel2.DownLoadExcel("用户协议"+time.Now().Format("20060102-150405"), c.Writer, f)
|
||||
}
|
||||
|
||||
// @Summary 用户协议导入
|
||||
// @Tags user_protocol-用户协议
|
||||
// @Produce json
|
||||
// @Router /api/admin/user_protocol/ImportFile [post]
|
||||
func (hd *UserProtocolHandler) ImportFile(c *gin.Context) {
|
||||
file, _, err := c.Request.FormFile("file")
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, "文件不存在")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
importList := []schema.UserProtocolResp{}
|
||||
err = excel2.GetExcelData(file, &importList, service.UserProtocolService.GetExcelCol())
|
||||
if err != nil {
|
||||
c.String(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = service.UserProtocolService.ImportFile(importList)
|
||||
response.CheckAndResp(c, err)
|
||||
}
|
||||
Reference in New Issue
Block a user