wechat_article.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. package rag
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. type WechatArticle struct {
  10. WechatArticleId int `gorm:"column:wechat_article_id;type:int(10) UNSIGNED;primaryKey;not null;" description:""`
  11. WechatPlatformId int `gorm:"column:wechat_platform_id;type:int(11);comment:归属公众号id;default:0;" description:"归属公众号id"`
  12. FakeId string `gorm:"column:fake_id;type:varchar(255);comment:公众号唯一id;" description:"公众号唯一id"`
  13. Title string `gorm:"column:title;type:varchar(255);comment:标题;" description:"标题"`
  14. Link string `gorm:"column:link;type:varchar(255);comment:链接;" description:"链接"`
  15. CoverUrl string `gorm:"column:cover_url;type:varchar(255);comment:公众号封面;" description:"公众号封面"`
  16. Description string `gorm:"column:description;type:varchar(255);comment:描述;" description:"描述"`
  17. Content string `gorm:"column:content;type:longtext;comment:报告详情;" description:"报告详情"`
  18. TextContent string `gorm:"column:text_content;type:text;comment:文本内容;" description:"文本内容"`
  19. AbstractStatus int `gorm:"column:abstract_status;type:tinyint(4);comment:摘要生成情况,-1:生成失败,0:待生成,1:已生成;default:0;" description:"摘要生成情况,-1:生成失败,0:待生成,1:已生成"`
  20. Country string `gorm:"column:country;type:varchar(255);comment:国家;" description:"国家"`
  21. Province string `gorm:"column:province;type:varchar(255);comment:省;" description:"省"`
  22. City string `gorm:"column:city;type:varchar(255);comment:市;" description:"市"`
  23. ArticleCreateTime time.Time `gorm:"column:article_create_time;type:datetime;comment:报告创建时间;default:NULL;" description:"报告创建时间"`
  24. VectorKey string `gorm:"column:vector_key;type:varchar(255);comment:向量key标识;" description:"向量key标识"`
  25. IsDeleted int `gorm:"column:is_deleted;type:tinyint(4);comment:是否删除,0:未删除,1: 已删除;default:0;" description:"是否删除,0:未删除,1: 已删除"`
  26. ModifyTime time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;" description:"修改时间"`
  27. CreateTime time.Time `gorm:"column:create_time;type:datetime;comment:入库时间;default:NULL;" description:"入库时间"`
  28. }
  29. // TableName get sql table name.获取数据库表名
  30. func (m *WechatArticle) TableName() string {
  31. return "wechat_article"
  32. }
  33. // WechatArticleColumns get sql column name.获取数据库列名
  34. var WechatArticleColumns = struct {
  35. WechatArticleID string
  36. WechatPlatformID string
  37. FakeID string
  38. Title string
  39. Link string
  40. CoverURL string
  41. Description string
  42. Content string
  43. TextContent string
  44. AbstractStatus string
  45. Country string
  46. Province string
  47. City string
  48. ArticleCreateTime string
  49. IsDeleted string
  50. ModifyTime string
  51. CreateTime string
  52. }{
  53. WechatArticleID: "wechat_article_id",
  54. WechatPlatformID: "wechat_platform_id",
  55. FakeID: "fake_id",
  56. Title: "title",
  57. Link: "link",
  58. CoverURL: "cover_url",
  59. Description: "description",
  60. Content: "content",
  61. TextContent: "text_content",
  62. AbstractStatus: "abstract_status",
  63. Country: "country",
  64. Province: "province",
  65. City: "city",
  66. ArticleCreateTime: "article_create_time",
  67. IsDeleted: "is_deleted",
  68. ModifyTime: "modify_time",
  69. CreateTime: "create_time",
  70. }
  71. type WechatArticleView struct {
  72. WechatArticleId int `gorm:"column:wechat_article_id;type:int(10) UNSIGNED;primaryKey;not null;" description:""`
  73. WechatPlatformId int `gorm:"column:wechat_platform_id;type:int(11);comment:归属公众号id;default:0;" description:"归属公众号id"`
  74. FakeId string `gorm:"column:fake_id;type:varchar(255);comment:公众号唯一id;" description:"公众号唯一id"`
  75. Title string `gorm:"column:title;type:varchar(255);comment:标题;" description:"标题"`
  76. Link string `gorm:"column:link;type:varchar(255);comment:链接;" description:"链接"`
  77. CoverUrl string `gorm:"column:cover_url;type:varchar(255);comment:公众号封面;" description:"公众号封面"`
  78. Description string `gorm:"column:description;type:varchar(255);comment:描述;" description:"描述"`
  79. Content string `gorm:"column:content;type:longtext;comment:报告详情;" description:"报告详情"`
  80. TextContent string `gorm:"column:text_content;type:text;comment:文本内容;" description:"文本内容"`
  81. AbstractStatus int `gorm:"column:abstract_status;type:tinyint(4);comment:摘要生成情况,-1:生成失败,0:待生成,1:已生成;default:0;" description:"摘要生成情况,-1:生成失败,0:待生成,1:已生成"`
  82. Abstract string `gorm:"column:abstract;type:text;comment:摘要;" description:"摘要"`
  83. Country string `gorm:"column:country;type:varchar(255);comment:国家;" description:"国家"`
  84. Province string `gorm:"column:province;type:varchar(255);comment:省;" description:"省"`
  85. City string `gorm:"column:city;type:varchar(255);comment:市;" description:"市"`
  86. ArticleCreateTime string `gorm:"column:article_create_time;type:datetime;comment:报告创建时间;default:NULL;" description:"报告创建时间"`
  87. ModifyTime string `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;" description:"修改时间"`
  88. CreateTime string `gorm:"column:create_time;type:datetime;comment:入库时间;default:NULL;" description:"入库时间"`
  89. WechatPlatformName string `gorm:"column:title;type:varchar(255);comment:标题;" description:"微信公众号名称"`
  90. WechatPlatformRoundHeadImg string `gorm:"column:round_head_img;type:varchar(255);comment:头像;" description:"微信公众号头像"`
  91. TagName string `gorm:"column:tag_name;type:varchar(255);comment:标签名称;" description:"标签名称"`
  92. TagId int `gorm:"column:tag_id;type:varchar(255);comment:标签id;" description:"标签id"`
  93. }
  94. func (m *WechatArticle) ToView() WechatArticleView {
  95. var articleCreateTime, modifyTime, createTime string
  96. if !m.ArticleCreateTime.IsZero() {
  97. articleCreateTime = m.ArticleCreateTime.Format(utils.FormatDateTime)
  98. }
  99. if !m.CreateTime.IsZero() {
  100. createTime = m.CreateTime.Format(utils.FormatDateTime)
  101. }
  102. if !m.ModifyTime.IsZero() {
  103. modifyTime = m.ModifyTime.Format(utils.FormatDateTime)
  104. }
  105. return WechatArticleView{
  106. WechatArticleId: m.WechatArticleId,
  107. WechatPlatformId: m.WechatPlatformId,
  108. FakeId: m.FakeId,
  109. Title: m.Title,
  110. Link: m.Link,
  111. CoverUrl: m.CoverUrl,
  112. Description: m.Description,
  113. Content: m.Content,
  114. TextContent: m.TextContent,
  115. AbstractStatus: m.AbstractStatus,
  116. Country: m.Country,
  117. Province: m.Province,
  118. City: m.City,
  119. ArticleCreateTime: articleCreateTime,
  120. ModifyTime: modifyTime,
  121. CreateTime: createTime,
  122. WechatPlatformName: "",
  123. WechatPlatformRoundHeadImg: "",
  124. }
  125. }
  126. func (m *WechatArticle) ListToViewList(list []*WechatArticle) (wechatArticleViewList []WechatArticleView) {
  127. wechatArticleViewList = make([]WechatArticleView, 0)
  128. for _, v := range list {
  129. wechatArticleViewList = append(wechatArticleViewList, v.ToView())
  130. }
  131. return
  132. }
  133. func (m *WechatArticle) Create() (err error) {
  134. err = global.DbMap[utils.DbNameAI].Create(&m).Error
  135. return
  136. }
  137. func (m *WechatArticle) Update(updateCols []string) (err error) {
  138. err = global.DbMap[utils.DbNameAI].Select(updateCols).Updates(&m).Error
  139. return
  140. }
  141. func (m *WechatArticle) GetById(id int) (item *WechatArticle, err error) {
  142. err = global.DbMap[utils.DbNameAI].Where(fmt.Sprintf("%s = ?", WechatArticleColumns.WechatArticleID), id).First(&item).Error
  143. return
  144. }
  145. func GetArticleById(id int) (item *WechatArticle, err error) {
  146. err = global.DbMap[utils.DbNameAI].Where(fmt.Sprintf("%s = ?", WechatArticleColumns.WechatArticleID), id).First(&item).Error
  147. return
  148. }
  149. func (m *WechatArticle) GetByLink(link string) (item *WechatArticle, err error) {
  150. err = global.DbMap[utils.DbNameAI].Where(fmt.Sprintf("%s = ?", WechatArticleColumns.Link), link).First(&item).Error
  151. return
  152. }
  153. func (m *WechatArticle) GetListByCondition(field, condition string, pars []interface{}, startSize, pageSize int) (items []*WechatArticle, err error) {
  154. if field == "" {
  155. field = "*"
  156. }
  157. sqlStr := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 AND is_deleted=0 %s order by article_create_time desc,wechat_article_id desc LIMIT ?,?`, field, m.TableName(), condition)
  158. pars = append(pars, startSize, pageSize)
  159. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Find(&items).Error
  160. return
  161. }
  162. func (m *WechatArticle) GetCountByCondition(condition string, pars []interface{}) (total int, err error) {
  163. var intNull sql.NullInt64
  164. sqlStr := fmt.Sprintf(`SELECT COUNT(1) total FROM %s WHERE 1=1 AND is_deleted=0 %s`, m.TableName(), condition)
  165. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Scan(&intNull).Error
  166. if err == nil && intNull.Valid {
  167. total = int(intNull.Int64)
  168. }
  169. return
  170. }
  171. func (m *WechatArticle) GetPageListByCondition(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*WechatArticle, err error) {
  172. total, err = m.GetCountByCondition(condition, pars)
  173. if err != nil {
  174. return
  175. }
  176. if total > 0 {
  177. items, err = m.GetListByCondition(`wechat_article_id,wechat_platform_id,fake_id,title,link,cover_url,description,country,province,city,article_create_time,modify_time,create_time`, condition, pars, startSize, pageSize)
  178. }
  179. return
  180. }
  181. type WechatArticleAndPlatform struct {
  182. WechatArticleId int `gorm:"column:wechat_article_id;type:int(10) UNSIGNED;primaryKey;not null;" description:""`
  183. WechatPlatformId int `gorm:"column:wechat_platform_id;type:int(11);comment:归属公众号id;default:0;" description:"归属公众号id"`
  184. FakeId string `gorm:"column:fake_id;type:varchar(255);comment:公众号唯一id;" description:"公众号唯一id"`
  185. Title string `gorm:"column:title;type:varchar(255);comment:标题;" description:"标题"`
  186. Link string `gorm:"column:link;type:varchar(255);comment:链接;" description:"链接"`
  187. CoverUrl string `gorm:"column:cover_url;type:varchar(255);comment:公众号封面;" description:"公众号封面"`
  188. Description string `gorm:"column:description;type:varchar(255);comment:描述;" description:"描述"`
  189. Content string `gorm:"column:content;type:longtext;comment:报告详情;" description:"报告详情"`
  190. TextContent string `gorm:"column:text_content;type:text;comment:文本内容;" description:"文本内容"`
  191. Abstract string `gorm:"column:abstract;type:text;comment:摘要;" description:"摘要"`
  192. Country string `gorm:"column:country;type:varchar(255);comment:国家;" description:"国家"`
  193. Province string `gorm:"column:province;type:varchar(255);comment:省;" description:"省"`
  194. City string `gorm:"column:city;type:varchar(255);comment:市;" description:"市"`
  195. ArticleCreateTime time.Time `gorm:"column:article_create_time;type:datetime;comment:报告创建时间;default:NULL;" description:"报告创建时间"`
  196. IsDeleted int `gorm:"column:is_deleted;type:tinyint(4);comment:是否删除,0:未删除,1: 已删除;default:0;" description:"是否删除,0:未删除,1: 已删除"`
  197. ModifyTime time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;" description:"修改时间"`
  198. CreateTime time.Time `gorm:"column:create_time;type:datetime;comment:入库时间;default:NULL;" description:"入库时间"`
  199. Nickname string `gorm:"column:nickname;type:varchar(255);comment:公众号名称;" description:"nickname"` // 公众号名称
  200. Alias string `gorm:"column:alias;type:varchar(255);comment:别名;" description:"alias"` // 别名
  201. RoundHeadImg string `gorm:"column:round_head_img;type:varchar(255);comment:头像;" description:"round_head_img"` // 头像
  202. }
  203. func (m *WechatArticleAndPlatform) ToView() WechatArticleView {
  204. var articleCreateTime, modifyTime, createTime string
  205. if !m.ArticleCreateTime.IsZero() {
  206. articleCreateTime = m.ArticleCreateTime.Format(utils.FormatDateTime)
  207. }
  208. if !m.CreateTime.IsZero() {
  209. createTime = m.CreateTime.Format(utils.FormatDateTime)
  210. }
  211. if !m.ModifyTime.IsZero() {
  212. modifyTime = m.ModifyTime.Format(utils.FormatDateTime)
  213. }
  214. return WechatArticleView{
  215. WechatArticleId: m.WechatArticleId,
  216. WechatPlatformId: m.WechatPlatformId,
  217. FakeId: m.FakeId,
  218. Title: m.Title,
  219. Link: m.Link,
  220. CoverUrl: m.CoverUrl,
  221. Description: m.Description,
  222. Content: m.Content,
  223. TextContent: m.TextContent,
  224. Abstract: m.Abstract,
  225. Country: m.Country,
  226. Province: m.Province,
  227. City: m.City,
  228. ArticleCreateTime: articleCreateTime,
  229. ModifyTime: modifyTime,
  230. CreateTime: createTime,
  231. WechatPlatformName: m.Nickname,
  232. WechatPlatformRoundHeadImg: m.RoundHeadImg,
  233. }
  234. }
  235. func (m *WechatArticle) ArticleAndPlatformListToViewList(list []*WechatArticleAndPlatform) (wechatArticleViewList []WechatArticleView) {
  236. wechatArticleViewList = make([]WechatArticleView, 0)
  237. for _, v := range list {
  238. wechatArticleViewList = append(wechatArticleViewList, v.ToView())
  239. }
  240. return
  241. }
  242. func (m *WechatArticle) GetListByPlatformCondition(field, condition string, pars []interface{}, startSize, pageSize int) (items []*WechatArticleAndPlatform, err error) {
  243. if field == "" {
  244. field = "*"
  245. }
  246. sqlStr := fmt.Sprintf(`SELECT %s FROM %s AS a
  247. JOIN wechat_platform AS b ON a.wechat_platform_id=b.wechat_platform_id
  248. WHERE 1=1 AND a.is_deleted=0 %s order by a.article_create_time DESC,a.wechat_article_id DESC LIMIT ?,?`, field, m.TableName(), condition)
  249. pars = append(pars, startSize, pageSize)
  250. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Find(&items).Error
  251. return
  252. }
  253. func (m *WechatArticle) GetCountByPlatformCondition(condition string, pars []interface{}) (total int, err error) {
  254. var intNull sql.NullInt64
  255. sqlStr := fmt.Sprintf(`SELECT COUNT(1) total FROM %s AS a
  256. JOIN wechat_platform AS b ON a.wechat_platform_id=b.wechat_platform_id
  257. WHERE 1=1 AND a.is_deleted=0 %s`, m.TableName(), condition)
  258. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Scan(&intNull).Error
  259. if err == nil && intNull.Valid {
  260. total = int(intNull.Int64)
  261. }
  262. return
  263. }
  264. func (m *WechatArticle) GetPageListByPlatformCondition(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*WechatArticleAndPlatform, err error) {
  265. total, err = m.GetCountByPlatformCondition(condition, pars)
  266. if err != nil {
  267. return
  268. }
  269. if total > 0 {
  270. items, err = m.GetListByPlatformCondition(`a.wechat_article_id,a.wechat_platform_id,a.fake_id,a.title,a.link,a.cover_url,a.description,a.country,a.province,a.city,a.article_create_time,a.modify_time,a.create_time,b.nickname,b.round_head_img`, condition, pars, startSize, pageSize)
  271. }
  272. return
  273. }