Kaynağa Gözat

外部链接管理

xyxie 1 yıl önce
ebeveyn
işleme
f5707fc7b1
5 değiştirilmiş dosya ile 412 ekleme ve 0 silme
  1. 247 0
      controllers/out_link.go
  2. 9 0
      models/db.go
  3. 115 0
      models/out_link.go
  4. 36 0
      routers/commentsRouter.go
  5. 5 0
      routers/router.go

+ 247 - 0
controllers/out_link.go

@@ -0,0 +1,247 @@
+package controllers
+
+import (
+	"encoding/json"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hz_eta_api/models"
+	"hongze/hz_eta_api/utils"
+	"strings"
+	"time"
+)
+
+type OutLinkController struct {
+	BaseAuthController
+}
+
+// Save
+// @Title 保存外部链接
+// @Description 保存外部链接
+// @Param	request	body models.OutLinkSaveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /save [post]
+func (ol *OutLinkController) Save() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		ol.Data["json"] = br
+		ol.ServeJSON()
+	}()
+	var req models.OutLinkSaveReq
+	if e := json.Unmarshal(ol.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.Title = strings.TrimSpace(req.Title)
+	if req.Title == "" {
+		br.Msg = "请输入菜单名称"
+		return
+	}
+	req.Url = strings.TrimSpace(req.Url)
+	if req.Url == "" {
+		br.Msg = "请输入页面链接地址"
+		return
+	}
+
+	outLink := new(models.OutLink)
+	if req.Id > 0 {
+		// 编辑
+		err := outLink.GetItemById(req.Id)
+		if err != nil {
+			br.Msg = "该记录不存在"
+			br.ErrMsg = "该记录不存在,Err:" + err.Error()
+			return
+		}
+		if outLink.Title == req.Title && outLink.Url == req.Url {
+			br.Ret = 200
+			br.Success = true
+			br.Msg = "操作成功"
+			return
+		}
+		outLink.Title = req.Title
+		outLink.Url = req.Url
+		outLink.ModifyTime = time.Now()
+		err = outLink.Update([]string{"Title", "Url", "ModifyTime"})
+		if err != nil {
+			br.Msg = "更新失败"
+			br.ErrMsg = "更新失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		outLink.Title = req.Title
+		outLink.Url = req.Url
+		outLink.CreateTime = time.Now()
+		outLink.SysAdminId = ol.SysUser.AdminId
+		outLink.SysAdminName = ol.SysUser.AdminName
+		outLink.ModifyTime = time.Now()
+		err := outLink.Create()
+		if err != nil {
+			br.Msg = "新增失败"
+			br.ErrMsg = "新增失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	return
+}
+
+// Del
+// @Title 删除外部链接
+// @Description 删除外部链接
+// @Param	request	body models.OutLinkReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /del [post]
+func (ol *OutLinkController) Del() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		ol.Data["json"] = br
+		ol.ServeJSON()
+	}()
+	var req models.OutLinkReq
+	if e := json.Unmarshal(ol.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.Id == 0 {
+		br.Msg = "请选择要删除的外部链接"
+		return
+	}
+
+	outLink := new(models.OutLink)
+	// 查询
+	err := outLink.GetItemById(req.Id)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "该记录已被删除, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + err.Error()
+		return
+	}
+
+	err = outLink.Del()
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	return
+}
+
+// List
+// @Title 外部链接列表
+// @Description 外部链接列表
+// @Param   PageSize  query  int  true  "每页记录数"
+// @Param   CurrentIndex  query  int  true  "请求页码"
+// @Success 200 Ret=200 操作成功
+// @router /list [get]
+func (ol *OutLinkController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		ol.Data["json"] = br
+		ol.ServeJSON()
+	}()
+	var startSize int
+	pageSize, _ := ol.GetInt("PageSize")
+	currentIndex, _ := ol.GetInt("CurrentIndex")
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	item := new(models.OutLink)
+	cond := ``
+	pars := make([]interface{}, 0)
+	total, list, e := item.GetPageItemsByCondition(startSize, pageSize, cond, pars, []string{}, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取外部链接列表失败, Err: " + e.Error()
+		return
+	}
+
+	respList := make([]*models.OutLinkItem, 0)
+	for i := range list {
+		v := new(models.OutLinkItem)
+		v.Id = list[i].Id
+		v.Title = list[i].Title
+		v.Url = list[i].Url
+		v.CreateTime = list[i].CreateTime.Format(utils.FormatDateTime)
+		v.ModifyTime = list[i].ModifyTime.Format(utils.FormatDateTime)
+		respList = append(respList, v)
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := &models.OutLinkListResp{
+		Paging: page,
+		List:   respList,
+	}
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	return
+}
+
+// AllList
+// @Title 外部链接展示列表
+// @Description 外部链接展示列表
+// @Success 200 Ret=200 操作成功
+// @router /all [get]
+func (ol *OutLinkController) AllList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		ol.Data["json"] = br
+		ol.ServeJSON()
+	}()
+
+	item := new(models.OutLink)
+	cond := ``
+	pars := make([]interface{}, 0)
+	list, e := item.GetItemsByCondition(cond, pars, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取外部链接列表失败, Err: " + e.Error()
+		return
+	}
+	respList := make([]*models.OutLinkItem, 0)
+	for i := range list {
+		v := new(models.OutLinkItem)
+		v.Id = list[i].Id
+		v.Title = list[i].Title
+		v.Url = list[i].Url
+		v.CreateTime = list[i].CreateTime.Format(utils.FormatDateTime)
+		v.ModifyTime = list[i].ModifyTime.Format(utils.FormatDateTime)
+		respList = append(respList, v)
+	}
+	resp := &models.OutLinkListResp{
+		List: respList,
+	}
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	return
+}

+ 9 - 0
models/db.go

@@ -136,6 +136,9 @@ func init() {
 
 	// 商家配置
 	initBusinessConf()
+
+	// 外部链接
+	initOutLink()
 }
 
 // initSystem 系统表 数据表
@@ -406,3 +409,9 @@ func initBusinessConf() {
 		new(BusinessConfOperationRecord), // 商家配置操作记录表
 	)
 }
+
+func initOutLink() {
+	orm.RegisterModel(
+		new(OutLink), // 外部链接表
+	)
+}

+ 115 - 0
models/out_link.go

@@ -0,0 +1,115 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"strings"
+	"time"
+)
+
+type OutLink struct {
+	Id           int       `orm:"column(id);pk;auto" description:"自增序号"`
+	Title        string    `description:"菜单名称"`
+	Url          string    `description:"链接地址"`
+	SysAdminId   int       `description:"创建人ID"`
+	SysAdminName string    `description:"创建人姓名"`
+	CreateTime   time.Time `description:"创建时间"`
+	ModifyTime   time.Time `description:"修改时间"`
+}
+
+type OutLinkItem struct {
+	Id         int    `description:"自增序号"`
+	Title      string `description:"菜单名称"`
+	Url        string `description:"链接地址"`
+	CreateTime string `description:"创建时间"`
+	ModifyTime string `description:"修改时间"`
+}
+
+type OutLinkListResp struct {
+	List   []*OutLinkItem
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+type OutLinkSaveReq struct {
+	Id    int    `description:"序号"`
+	Title string `description:"菜单名称"`
+	Url   string `description:"链接地址"`
+}
+
+type OutLinkReq struct {
+	Id int `description:"序号"`
+}
+
+func (ol *OutLink) TableName() string {
+	return "out_link"
+}
+
+func (ol *OutLink) Create() (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(ol)
+	if err != nil {
+		return
+	}
+	return
+}
+
+func (ol *OutLink) GetItemById(id int) (err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM out_link WHERE id = ? LIMIT 1`
+	err = o.Raw(sql, id).QueryRow(&ol)
+	return
+}
+
+func (ol *OutLink) GetItemsByCondition(condition string, pars []interface{}, orderRule string) (items []*OutLink, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM out_link WHERE 1=1 `
+	sql += condition
+	order := ` ORDER BY create_time ASC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql += order
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+func (ol *OutLink) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(ol, cols...)
+	return
+}
+
+func (ol *OutLink) Del() (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM out_link WHERE id = ? LIMIT 1`
+	_, err = o.Raw(sql, ol.Id).Exec()
+	return
+}
+
+func (ol *OutLink) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, ol.TableName(), condition)
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+func (ol *OutLink) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*OutLink, err error) {
+	o := orm.NewOrm()
+	fields := strings.Join(fieldArr, ",")
+	if len(fieldArr) == 0 {
+		fields = `*`
+	}
+	order := `ORDER BY create_time ASC`
+	if orderRule != "" {
+		order = ` ORDER BY ` + orderRule
+	}
+	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, ol.TableName(), condition, order)
+	totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
+	if err = o.Raw(totalSql, pars).QueryRow(&total); err != nil {
+		return
+	}
+	sql += ` LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 36 - 0
routers/commentsRouter.go

@@ -4651,6 +4651,42 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"],
+        beego.ControllerComments{
+            Method: "AllList",
+            Router: `/all`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"],
+        beego.ControllerComments{
+            Method: "Del",
+            Router: `/del`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:OutLinkController"],
+        beego.ControllerComments{
+            Method: "Save",
+            Router: `/save`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:PdfToImgCommonController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers:PdfToImgCommonController"],
         beego.ControllerComments{
             Method: "PdfToImgConvert",

+ 5 - 0
routers/router.go

@@ -270,6 +270,11 @@ func init() {
 				&trade_analysis.TradeAnalysisController{},
 			),
 		),
+		web.NSNamespace("/out_link",
+			web.NSInclude(
+				&controllers.OutLinkController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }