plug_link.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. // ============================================================================
  2. // This is auto-generated by gf cli tool only once. Fill this file as you wish.
  3. // ============================================================================
  4. package plug_link
  5. import (
  6. "gfast/app/model/admin/plug_linktype"
  7. "github.com/gogf/gf/database/gdb"
  8. "github.com/gogf/gf/errors/gerror"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/os/gtime"
  11. )
  12. // AddReq 用于存储新增链接请求的请求参数
  13. type AddReq struct {
  14. LinkName string `p:"linkName" v:"required#名称不能为空"` // 链接名称
  15. LinkUrl string `p:"linkUrl" v:"required#名称不能为空"` // 链接URL
  16. LinkTarget string `p:"linkTarget" ` // 打开方式
  17. LinkTypeID int `p:"linkTypeID"` // 所属栏目ID
  18. LinkQQ string `p:"linkQQ" v:"required#名称不能为空"` // 联系QQ
  19. LinkOrder int64 `p:"linkOrder"` // 排序
  20. LinkOpen int `p:"linkOpen"` // 0禁用1启用(是否审核)
  21. LinkUsername string `p:"linkUsername" v:"required#名称不能为空"` // 申请友情链接的联系人
  22. LinkEmail string `p:"linkEmail"` // 联系邮箱
  23. LinkRemark string `p:"linkRemark"` // 申请友情链接时的备注
  24. }
  25. // EditReq 用于存储修改广告位请求参数
  26. type EditReq struct {
  27. PlugLinkID int64 `p:"plugLinkID" v:"required|min:1#广告id不能为空|广告id参数错误"`
  28. AddReq
  29. }
  30. // SelectPageReq 用于存储分页查询广告的请求参数
  31. type SelectPageReq struct {
  32. LinkName string `p:"linkName"` // 广告名称
  33. PageNo int64 `p:"pageNum"` // 当前页
  34. PageSize int64 `p:"pageSize"` // 每页显示记录数
  35. }
  36. // 用于存储分页查询的数据
  37. type ListEntity struct {
  38. Entity
  39. LinkTypeName string `orm:"linktype_name" json:"linktype_name" ` // 友情链接所属分类
  40. }
  41. // GetPlugLinkByID 根据ID查询链接记录
  42. func GetPlugLinkByID(id int64) (*Entity, error) {
  43. entity, err := Model.FindOne("link_id", id)
  44. if err != nil {
  45. g.Log().Error(err)
  46. return nil, gerror.New("根据ID查询链接记录出错")
  47. }
  48. if entity == nil {
  49. return nil, gerror.New("根据ID未能查询到链接记录")
  50. }
  51. return entity, nil
  52. }
  53. // AddSave 添加友情链接
  54. func AddSave(req *AddReq) error {
  55. var entity Entity
  56. entity.LinkName = req.LinkName
  57. entity.LinkUrl = req.LinkUrl
  58. entity.LinkTarget = req.LinkTarget
  59. entity.LinkTypeid = req.LinkTypeID
  60. entity.LinkQq = req.LinkQQ
  61. entity.LinkAddtime = int(gtime.Timestamp()) // 添加时间
  62. entity.LinkOrder = req.LinkOrder
  63. entity.LinkOpen = req.LinkOpen
  64. entity.LinkUsername = req.LinkUsername
  65. entity.LinkEmail = req.LinkEmail
  66. entity.LinkRemark = req.LinkRemark
  67. // 保存实体
  68. _, err := entity.Insert()
  69. if err != nil {
  70. g.Log().Error(err)
  71. return gerror.New("保存失败")
  72. }
  73. return nil
  74. }
  75. // 根据ID批量删除链接
  76. func DeleteByIDs(ids []int) error {
  77. _, err := Model.Delete("link_id in(?)", ids)
  78. if err != nil {
  79. g.Log().Error(err)
  80. return gerror.New("删除链接失败")
  81. }
  82. return nil
  83. }
  84. // 根据ID来修改链接信息
  85. func EditSave(editReq *EditReq) error {
  86. // 先根据ID来查询要修改的链接记录
  87. entity, err := GetPlugLinkByID(editReq.PlugLinkID)
  88. if err != nil {
  89. return err
  90. }
  91. // 修改实体
  92. entity.LinkName = editReq.LinkName
  93. entity.LinkUrl = editReq.LinkUrl
  94. entity.LinkTarget = editReq.LinkTarget
  95. entity.LinkTypeid = editReq.LinkTypeID
  96. entity.LinkQq = editReq.LinkQQ
  97. entity.LinkOrder = editReq.LinkOrder
  98. entity.LinkOpen = editReq.LinkOpen
  99. entity.LinkUsername = editReq.LinkUsername
  100. entity.LinkEmail = editReq.LinkEmail
  101. entity.LinkRemark = editReq.LinkRemark
  102. _, err = entity.Update()
  103. if err != nil {
  104. g.Log().Error(err)
  105. return gerror.New("修改栏目失败")
  106. }
  107. return nil
  108. }
  109. // 分页查询,返回值total总记录数,page当前页
  110. func SelectListByPage(req *SelectPageReq) (total int, page int64, list []*ListEntity, err error) {
  111. model := g.DB().Table(Table + " link")
  112. if req != nil {
  113. if req.LinkName != "" {
  114. model.Where("link.link_name like ?", "%"+req.LinkName+"%")
  115. }
  116. }
  117. model = model.LeftJoin(plug_linktype.Table+" type", "type.linktype_id=link.link_typeid")
  118. // 查询友情链接总记录数(总行数)
  119. total, err = model.Count()
  120. if err != nil {
  121. g.Log().Error(err)
  122. err = gerror.New("获取总记录数失败")
  123. return 0, 0, nil, err
  124. }
  125. if req.PageNo == 0 {
  126. req.PageNo = 1
  127. }
  128. page = req.PageNo
  129. if req.PageSize == 0 {
  130. req.PageSize = 10
  131. }
  132. // 分页排序查询
  133. var res gdb.Result
  134. res, err = model.Fields("link.*,type.linktype_name").Page(int(page), int(req.PageSize)).Order("link.link_order asc,link.link_id asc").All()
  135. if err != nil {
  136. g.Log().Error(err)
  137. err = gerror.New("分页查询友情链接失败")
  138. return 0, 0, nil, err
  139. }
  140. err = res.Structs(&list)
  141. if err != nil {
  142. g.Log().Error(err)
  143. err = gerror.New("分页查询广告失败")
  144. return 0, 0, nil, err
  145. }
  146. return total, page, list, nil
  147. }
  148. // 按链接分类查询当前分类下的size条最新链接(status:1启用,0未启用,优先序号排序,其次时间倒序)
  149. func ListByTypeId(typeId int, size int, status int) (list []*Entity, err error) {
  150. list, err = Model.Where("link_typeid = ?", typeId).And("link_open = ?", status).Fields("link_name,link_url,link_target").Order("link_order asc,link_addtime desc").Limit(size).All()
  151. if err != nil {
  152. g.Log().Error(err)
  153. return nil, gerror.New("按分类查询链接出错")
  154. }
  155. return list, nil
  156. }