Administrator 2 anni fa
parent
commit
67e92fb12a

+ 82 - 0
data/dao/ArticleDao.go

@@ -0,0 +1,82 @@
+package dao
+
+import (
+	"demo/configs"
+	"demo/data/domain"
+	"demo/data/domain/vo"
+	"time"
+)
+
+type ArticleCollectionVo struct {
+	Topic       domain.ArticleTopic `json:"topic"`
+	ArticleList []ArticleTitleVo    `json:"articleList"`
+	Total       int64               `json:"total"`
+}
+
+type ArticleTitleVo struct {
+	Id            int64     `json:"id"`                                    // 11 0 注释:id
+	Image         string    `xorm:"image"  json:"image"`                   // 255 0 注释:文章名称
+	ArticleTitle  string    `xorm:"article_title"  json:"articleTitle"`    // 255 0 注释:文章名称
+	ArticleDesc   string    `xorm:"article_desc"  json:"articleDesc"`      // 255 0 注释:文章简介
+	State         string    `xorm:"state"  json:"state"`                   // 255 0 注释:状态
+	ArticleTagIds string    `xorm:"article_tag_ids"  json:"articleTagIds"` // 255 0 注释:文章标签
+	PublishTime   time.Time `xorm:"publish_time"  json:"publishTime"`      // 0 0 注释:发表时间
+	EyeFill       int64     `xorm:"eye_fill"  json:"eyeFill"`              // 11 0 注释:浏览量
+	LikeCount     int64     `xorm:"like_count"  json:"likeCount"`          // 255 0 注释:点赞量
+	CreateTime    time.Time `xorm:"create_time"  json:"createTime"`
+}
+
+func GetArticleList(pageNum, pageSize int) (vo.BaseListVo, error) {
+	var arr []domain.ArticleTopic
+	var vo vo.BaseListVo
+	c, err := configs.Engine.Table("article_topic").
+		Limit(pageSize, (pageNum-1)*pageSize).Desc("id").FindAndCount(&arr)
+	if err != nil {
+		return vo, err
+	}
+	m := make(map[int64]ArticleCollectionVo)
+	for i := range arr {
+		var list = make([]ArticleTitleVo, 0)
+		count, _ := configs.Engine.Table("article").
+			Select("id, article_title, article_tag_ids, state, publish_time, eye_fill, like_count, create_time, article_tag_ids").
+			Where("article_topic_id = ? and state = '1'", arr[i].Id).
+			Limit(5).Desc("create_time").FindAndCount(&list)
+		m[arr[i].Id] = ArticleCollectionVo{
+			Topic:       arr[i],
+			ArticleList: list,
+			Total:       count,
+		}
+	}
+	var VoList = make([]interface{}, 0)
+	for _, v := range m {
+		VoList = append(VoList, v)
+	}
+	vo.Total = int(c)
+	vo.PageNum = pageNum
+	vo.PageSize = pageSize
+	vo.List = VoList
+	return vo, nil
+}
+func GetArticleListByTopicId(topicId int64, pageNum, pageSize int) (domain.ArticleTopic, vo.BaseListVo, error) {
+	var topic = domain.ArticleTopic{}
+	var vo vo.BaseListVo
+	_, err := configs.Engine.Table("article_topic").
+		Where("id = ?", topicId).Desc("id").Get(&topic)
+	if err != nil {
+		return topic, vo, err
+	}
+	var list = make([]ArticleTitleVo, 0)
+	count, _ := configs.Engine.Table("article").
+		Select("id, image, article_title, article_desc, article_desc, article_tag_ids, state, publish_time, eye_fill, like_count, create_time, article_tag_ids").
+		Where("article_topic_id = ? and state = '1'", topic.Id).
+		Limit(pageSize, (pageNum-1)*pageSize).Desc("create_time").FindAndCount(&list)
+	var VoList = make([]interface{}, 0)
+	for _, v := range list {
+		VoList = append(VoList, v)
+	}
+	vo.Total = int(count)
+	vo.PageNum = pageNum
+	vo.PageSize = pageSize
+	vo.List = VoList
+	return topic, vo, nil
+}

+ 9 - 6
data/domain/DoMain.go

@@ -9,6 +9,7 @@ import (
 type Article struct {
 	Id             int64     `json:"id"`                                      // 11 0 注释:id
 	ArticleTitle   string    `xorm:"article_title"  json:"articleTitle"`      // 255 0 注释:文章名称
+	ArticleDesc    string    `xorm:"article_desc"  json:"articleDesc"`        // 255 0 注释:文章简介
 	ArticleContent string    `xorm:"article_content"  json:"articleContent"`  // 0 0 注释:文章内容
 	State          string    `xorm:"state"  json:"state"`                     // 255 0 注释:状态
 	ArticleTagIds  string    `xorm:"article_tag_ids"  json:"articleTagIds"`   // 255 0 注释:文章标签
@@ -24,18 +25,20 @@ type Article struct {
 }
 
 func (receiver Article) String() string {
-	return fmt.Sprint("Article{Id:", receiver.Id, ",ArticleTitle:", receiver.ArticleTitle, ",ArticleContent:", receiver.ArticleContent, ",State:", receiver.State, ",ArticleTagIds:", receiver.ArticleTagIds, ",ArticleTopicId:", receiver.ArticleTopicId, ",Image:", receiver.Image, ",PublishTime:", receiver.PublishTime, ",EyeFill:", receiver.EyeFill, ",LikeCount:", receiver.LikeCount, ",CreateBy:", receiver.CreateBy, ",CreateTime:", receiver.CreateTime, ",UpdateBy:", receiver.UpdateBy, ",UpdateTime:", receiver.UpdateTime, "}")
+	return fmt.Sprint("Article{Id:", receiver.Id, ",ArticleTitle:", receiver.ArticleTitle, ",ArticleDesc:", receiver.ArticleDesc, ",ArticleContent:", receiver.ArticleContent, ",State:", receiver.State, ",ArticleTagIds:", receiver.ArticleTagIds, ",ArticleTopicId:", receiver.ArticleTopicId, ",Image:", receiver.Image, ",PublishTime:", receiver.PublishTime, ",EyeFill:", receiver.EyeFill, ",LikeCount:", receiver.LikeCount, ",CreateBy:", receiver.CreateBy, ",CreateTime:", receiver.CreateTime, ",UpdateBy:", receiver.UpdateBy, ",UpdateTime:", receiver.UpdateTime, "}")
 }
 
 // ArticleTag 文章标签
 type ArticleTag struct {
-	Id      int64  `json:"id"`                       // 11 0 注释:
-	TagName string `xorm:"tag_name"  json:"tagName"` // 255 0 注释:标签名
-	TagDesc string `xorm:"tag_desc"  json:"tagDesc"` // 255 0 注释:标签描述
+	Id                 int64  `json:"id"`                                              // 11 0 注释:
+	TagName            string `xorm:"tag_name"  json:"tagName"`                        // 255 0 注释:标签名
+	TagDesc            string `xorm:"tag_desc"  json:"tagDesc"`                        // 255 0 注释:标签描述
+	TagTextColor       string `xorm:"tag_text_color"  json:"tagTextColor"`             // 10 0 注释:标签字体颜色
+	TagBackgroundColor string `xorm:"tag_background_color"  json:"tagBackgroundColor"` // 10 0 注释:标签背景颜色
 }
 
 func (receiver ArticleTag) String() string {
-	return fmt.Sprint("ArticleTag{Id:", receiver.Id, ",TagName:", receiver.TagName, ",TagDesc:", receiver.TagDesc, "}")
+	return fmt.Sprint("ArticleTag{Id:", receiver.Id, ",TagName:", receiver.TagName, ",TagDesc:", receiver.TagDesc, ",TagTextColor:", receiver.TagTextColor, ",TagBackgroundColor:", receiver.TagBackgroundColor, "}")
 }
 
 // ArticleTopic 文章主题
@@ -367,7 +370,7 @@ func (receiver ManageUser) String() string {
 
 // ShopAdviceCarousel 商城广告
 type ShopAdviceCarousel struct {
-	Id         int64     `json:"id"`                             // 11 0 注释:
+	Id         int64     `json:"id"`                             // 11 0 注释:目标id
 	Name       string    `xorm:"name"  json:"name"`              // 255 0 注释:广告名称
 	ImageUrl   string    `xorm:"image_url"  json:"imageUrl"`     // 255 0 注释:图片
 	ToId       int64     `xorm:"to_id"  json:"toId"`             // 11 0 注释:目标id

+ 6 - 0
data/domain/vo/UserVos.go

@@ -10,3 +10,9 @@ type UserWalletVo struct {
 	Wallet        domain.UserWallet
 	CouponUserJDM []domain.CouponUserJDM
 }
+
+type UserBaseInfoVo struct {
+	Id     int64  `json:"id"`
+	Name   string `json:"name"`
+	Avatar string `json:"avatar"`
+}

BIN
file/resources/202405231043235c8a0eec19d9a.jpg


File diff suppressed because it is too large
+ 2 - 2
file/virtual_mall.sql


+ 43 - 0
router/ArticleRouter.go

@@ -0,0 +1,43 @@
+package router
+
+import (
+	"demo/data/dao"
+	"github.com/gin-gonic/gin"
+	"github.com/spf13/cast"
+)
+
+func ArticleRouter(engine *gin.RouterGroup) {
+	user := engine.Group("/article")
+	PushRouter(user, "GET", "/collection", GetArticleCollection)
+	PushRouter(user, "GET", "/topic", GetArticleTopicList)
+}
+
+func GetArticleCollection(c *gin.Context) {
+	pageNum := c.Query("pageNum")
+	pageSize := c.Query("pageSize")
+	list, err := dao.GetArticleList(cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "数据读取失败"))
+		return
+	}
+	c.JSON(200, CreateResultData(list))
+}
+
+func GetArticleTopicList(c *gin.Context) {
+	topicId := c.Query("topicId")
+	pageNum := c.Query("pageNum")
+	pageSize := c.Query("pageSize")
+
+	topic, vo, err := dao.GetArticleListByTopicId(cast.ToInt64(topicId), cast.ToInt(pageNum), cast.ToInt(pageSize))
+	if err != nil {
+		c.JSON(200, CreateResultError(500, "数据读取失败"))
+		return
+	}
+
+	m := make(map[string]interface{})
+	m["topic"] = topic
+	m["list"] = vo.List
+	m["total"] = vo.Total
+
+	c.JSON(200, CreateResultData(m))
+}

+ 2 - 0
router/Router.go

@@ -26,6 +26,8 @@ func InitRouter(apiGroup *gin.RouterGroup) {
 	TestRouth(apiGroup)
 	//订单,支付
 	OrderRouter(apiGroup)
+	//文章接口
+	ArticleRouter(apiGroup)
 	//废弃
 	//BackGoodsRouter(apiGroup)
 	//-------------------

+ 49 - 0
router/UserRouter.go

@@ -17,6 +17,7 @@ import (
 	"net/http"
 	"regexp"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -62,6 +63,54 @@ func UserRouth(engine *gin.RouterGroup) {
 	PushRouter(user, "POST", "/sendSms", SendVerificationCode)
 	//图片验证码
 	PushRouter(user, "GET", "/captcha", VerificationCode)
+	PushRouter(user, "GET", "/base/info", GetUserBaseInfo)
+	PushRouter(user, "POST", "/base/info", GetUserBaseInfoList)
+}
+
+func GetUserBaseInfo(c *gin.Context) {
+	id := c.Query("userId")
+	if id == "" {
+		c.JSON(200, CreateResultError(401, "参数不全"))
+		return
+	}
+	user, err := manage.GetUserById(cast.ToInt64(id))
+	if err != nil {
+		c.JSON(200, CreateResultError(401, "用户不存在"))
+		return
+	}
+	m := make(map[string]interface{})
+	m["id"] = user.Id
+	m["name"] = user.Name
+	m["avatar"] = user.Avatar
+	c.JSON(200, CreateResultData(m))
+}
+func GetUserBaseInfoList(c *gin.Context) {
+	data := share.GetJsonAnyParam(c)
+	idsData, _ := data("ids")
+	split := strings.Split(cast.ToString(idsData), ",")
+	var ids = make([]int64, 0)
+	for i := range split {
+		parseInt, _ := strconv.ParseInt(split[i], 10, 64)
+		ids = append(ids, parseInt)
+	}
+
+	users, err := manage.GetUserListInId(ids)
+	if err != nil {
+		c.JSON(200, CreateResultError(401, "用户不存在"))
+		return
+	}
+	vos := make([]vo.UserBaseInfoVo, 0)
+
+	for i := range users {
+		user := vo.UserBaseInfoVo{
+			Id:     users[i].Id,
+			Name:   users[i].Name,
+			Avatar: users[i].Avatar,
+		}
+		vos = append(vos, user)
+	}
+
+	c.JSON(200, CreateResultData(vos))
 }
 
 // GetUserInfo 获取用户的个人信息

Some files were not shown because too many files changed in this diff