scrm-go

article_category_service.go 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package article_service
  2. import (
  3. "SCRM/models"
  4. "SCRM/service"
  5. "fmt"
  6. "github.com/jinzhu/gorm"
  7. "time"
  8. )
  9. func FindArticleCategoryType (userOrgId int64)(*[]models.ArticleCategory,error){
  10. cartegory := &[]models.ArticleCategory{}
  11. err := service.PatientReadDB().Where("status = ? AND user_org_id = ? ", 1, userOrgId).Find(cartegory).Error
  12. return cartegory,err
  13. }
  14. func FindCategoryList(orgID int64)(cate []*models.ArticleCategory,err error) {
  15. err = service.PatientReadDB().Model(&models.ArticleCategory{}).Where("user_org_id =? AND status =?", orgID, 1).Order("id asc").Find(&cate).Error
  16. return
  17. }
  18. func AddAritcle(articles models.Articles) error {
  19. err := service.PatientWriteDB().Create(&articles).Error
  20. return err
  21. }
  22. func FindAllArticle(orgID int64, page int64,limit int64, searchKey string,classId int64) (articles []*models.Articles,total int64, err error) {
  23. fmt.Println("机构ID",orgID,"搜搜索",searchKey)
  24. db := service.PatientReadDB().Table("sgj_patient_articles as a ").Where("a.status=1")
  25. if(orgID>0){
  26. db = db.Where("a.user_org_id=?" ,orgID)
  27. }
  28. if(classId > 0){
  29. db = db.Where("class_id = ?",classId)
  30. }
  31. if len(searchKey) > 0 {
  32. searchKey = "%" + searchKey + "%"
  33. db = db.Where("a.title LIKE ?", searchKey)
  34. }
  35. offset := (page - 1) * limit
  36. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  37. Preload("Comments", func(db *gorm.DB) *gorm.DB {
  38. return db.Where(" status = ?",1)
  39. }).Where("article_status <> ?",3).
  40. Select("a.id, a.title, a.summary, a.content, a.type, a.num, a.mtime, a.real_read_num, a.ctime, a.class_id, a.author, a.status, a.reason,a.star_num, a.comment_num,a.user_org_id, a.article_status, a.imgs, a.video_url, a.source, a.category_id, a.ttid, a.ttype, a.toid").Find(&articles).Error
  41. fmt.Println("err是啥呢?",err)
  42. if err != nil {
  43. return
  44. }
  45. return
  46. }
  47. func AddCategory(name string)(*models.ArticleCategory,error ){
  48. var art models.ArticleCategory
  49. var err error
  50. err = service.PatientReadDB().Model(&models.ArticleCategory{}).Where("name = ? AND status = ?", name, 1).Find(&art).Error
  51. fmt.Println("错误",err)
  52. if err == gorm.ErrRecordNotFound{
  53. return nil,err
  54. }
  55. if err != nil {
  56. return nil,err
  57. }
  58. return &art,err
  59. }
  60. func SaveCategory(category models.ArticleCategory) error {
  61. err := service.PatientWriteDB().Create(&category).Error
  62. return err
  63. }
  64. func GetCategorys(page int64,limit int64,orgID int64) ( categorys []*models.ArticleCategory,total int64,err error) {
  65. db := service.PatientReadDB().Table("sgj_patient_articles_menu as a").Where("a.status=1")
  66. if(orgID > 0){
  67. db = db.Where("a.user_org_id=?" ,orgID)
  68. }
  69. offset := (page - 1) * limit
  70. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  71. Select("a.id,a.name,a.order,a.status,a.summary,a.type,a.user_org_id,a.mtime,a.ctime,a.num").Find(&categorys).Error
  72. if err != nil {
  73. return
  74. }
  75. return
  76. }
  77. func GetCategorysByID(orgID int64,id int64)(categorys []*models.ArticleCategory,err error){
  78. err = service.PatientReadDB().Where("user_org_id = ? AND id =? AND status =1", orgID, id).Find(&categorys).Error
  79. if err == gorm.ErrRecordNotFound {
  80. return nil, nil
  81. }
  82. if err != nil {
  83. return nil, err
  84. }
  85. return categorys,err
  86. }
  87. func EditCategory(cat *models.ArticleCategory,orgID int64,id int64){
  88. service.PatientWriteDB().Model(cat).Where("user_org_id =? AND id =? AND status = ?", orgID, id, 1).Update(map[string]interface{}{"Name": cat.Name, "Summary": cat.Summary, "Order": cat.Order, "mtime": cat.Mtime})
  89. }
  90. func DeleteCategorys(orgID int64,ids[] int64)(err error){
  91. if len(ids) ==1{
  92. err = service.PatientWriteDB().Model(&models.ArticleCategory{}).Where( "id=? and user_org_id = ?",ids[0],orgID).Update(map[string]interface{}{"Status":0,"mtime":time.Now().Unix()}).Error
  93. }else {
  94. err = service.PatientWriteDB().Model(&models.ArticleCategory{}).Where("id IN (?) and user_org_id = ?",ids,orgID).Update(map[string]interface{}{"Status":0,"mtime":time.Now().Unix()}).Error
  95. }
  96. return
  97. }
  98. func AddVido(articles models.Articles) error {
  99. err := service.PatientWriteDB().Create(&articles).Error
  100. return err
  101. }
  102. func AddPrviewArticle(articles models.Articles)(err error) {
  103. err = service.PatientWriteDB().Create(&articles).Error
  104. return err
  105. }
  106. func GetArtilcePreview(OrgID int64)(models.Articles,error) {
  107. article := models.Articles{}
  108. err := service.PatientReadDB().Where("user_org_id = ? AND article_status = ? AND type = ?", OrgID, 3, 1).Last(&article).Error
  109. return article, err
  110. }
  111. func AddDraft(articles models.Articles) error {
  112. err := service.PatientReadDB().Create(&articles).Error
  113. return err
  114. }
  115. func GetPublished(orgID int64,page int64,limit int64, searchKey string)(articles []*models.Articles,total int64, err error) {
  116. db := service.PatientReadDB().Table("sgj_patient_articles as a ").Where("a.status=1")
  117. if (orgID > 0) {
  118. db = db.Where("a.user_org_id=? AND article_status = ?", orgID,1)
  119. }
  120. if len(searchKey) > 0 {
  121. searchKey = "%" + searchKey + "%"
  122. db = db.Where("a.title LIKE ?", searchKey)
  123. }
  124. offset := (page - 1) * limit
  125. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  126. Preload("Comments", func(db *gorm.DB) *gorm.DB {
  127. return db.Where(" status = ?",1)
  128. }).Where("status = ?",1).
  129. Select("a.id, a.title, a.summary, a.content, a.type, a.num, a.mtime, a.real_read_num, a.ctime, a.class_id, a.author, a.status, a.reason,a.star_num, a.comment_num,a.user_org_id, a.article_status, a.imgs, a.video_url, a.source, a.category_id, a.ttid, a.ttype, a.toid").Find(&articles).Error
  130. fmt.Println("err是啥呢?",err)
  131. if err != nil {
  132. return
  133. }
  134. return
  135. }
  136. func GetDraftbox(orgID int64,page int64,limit int64, searchKey string)(articles []*models.Articles,total int64, err error) {
  137. db := service.PatientReadDB().Table("sgj_patient_articles as a ").Where("a.status=1")
  138. if (orgID > 0) {
  139. db = db.Where("a.user_org_id=? AND article_status = ?", orgID,2)
  140. }
  141. if len(searchKey) > 0 {
  142. searchKey = "%" + searchKey + "%"
  143. db = db.Where("a.title LIKE ?", searchKey)
  144. }
  145. offset := (page - 1) * limit
  146. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  147. Preload("Comments", func(db *gorm.DB) *gorm.DB {
  148. return db.Where(" status = ?",1)
  149. }).Where("article_status = ? AND status = ?",2,1).
  150. Select("a.id, a.title, a.summary, a.content, a.type, a.num, a.mtime, a.real_read_num, a.ctime, a.class_id, a.author, a.status, a.reason,a.star_num, a.comment_num,a.user_org_id, a.article_status, a.imgs, a.video_url, a.source, a.category_id, a.ttid, a.ttype, a.toid").Find(&articles).Error
  151. fmt.Println("err是啥呢?",err)
  152. if err != nil {
  153. return
  154. }
  155. return
  156. }
  157. func GetNoPass(orgID int64,page int64,limit int64, searchKey string)(articles []*models.Articles,total int64, err error) {
  158. db := service.PatientReadDB().Table("sgj_patient_articles as a ").Where("a.status=1")
  159. if (orgID > 0) {
  160. db = db.Where("a.user_org_id=? AND article_status = ?", orgID,4)
  161. }
  162. if len(searchKey) > 0 {
  163. searchKey = "%" + searchKey + "%"
  164. db = db.Where("a.title LIKE ?", searchKey)
  165. }
  166. offset := (page - 1) * limit
  167. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  168. Preload("Comments", func(db *gorm.DB) *gorm.DB {
  169. return db.Where(" status = ?",1)
  170. }).Where("article_status = ? AND status = ?",4,1).
  171. Select("a.id, a.title, a.summary, a.content, a.type, a.num, a.mtime, a.real_read_num, a.ctime, a.class_id, a.author, a.status, a.reason,a.star_num, a.comment_num,a.user_org_id, a.article_status, a.imgs, a.video_url, a.source, a.category_id, a.ttid, a.ttype, a.toid").Find(&articles).Error
  172. fmt.Println("err是啥呢?",err)
  173. if err != nil {
  174. return
  175. }
  176. return
  177. }
  178. func GetArticleInfo(orgID int64,id int64)(articles models.Articles,err error){
  179. err = service.PatientReadDB().Where("user_org_id = ? AND id = ? AND status = ?", orgID, id, 1).Find(&articles).Error
  180. return articles,err
  181. }
  182. func DeleteArticle(ids[] int64,orgID int64)(err error) {
  183. if len(ids) ==1{
  184. err = service.PatientWriteDB().Model(&models.Articles{}).Where( "id=? and user_org_id = ?",ids[0],orgID).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  185. }else {
  186. err = service.PatientWriteDB().Model(&models.Articles{}).Where("id IN (?) and user_org_id = ?",ids,orgID).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  187. }
  188. return
  189. }
  190. func DeleteArticles(id int64,orgID int64)( err error) {
  191. err =service.PatientWriteDB().Model(&models.Articles{}).Where("id = ? and user_org_id = ?", id, orgID).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  192. return
  193. }
  194. func GetMenus(OrgID int64)(categorys []*models.ArticleCategory,err error) {
  195. err = service.PatientReadDB().Where("user_org_id = ?", OrgID).Find(&categorys).Error
  196. return categorys ,err
  197. }
  198. func UpdataArticleInfo(art *models.Articles,orgID int64,id int64){
  199. service.PatientWriteDB().Model(art).Where("user_org_id = ? AND id = ? AND status = ?",orgID,id,1).Update(map[string]interface{}{"title":art.Title,"content":art.Content,"imgs":art.Imgs,"class_id":art.ClassId,"mtime":art.Mtime,"article_status":art.ArticleStatus})
  200. }
  201. func SaveVidoDraft(art *models.Articles,orgID int64,id int64) {
  202. service.PatientWriteDB().Model(art).Where("user_org_id =? AND id = ? AND status = ?",orgID,id,1).Update(map[string]interface{}{"title":art.Title,"imgs":art.Imgs,"class_id":art.ClassId,"mtime":art.Mtime,"article_status":art.ArticleStatus})
  203. }
  204. func PreviewEditArticle(art models.Articles,orgID int64,id int64) {
  205. service.PatientWriteDB().Model(art).Where("user_org_id = ? AND id = ? AND status = ?",orgID,id,1).Update(map[string]interface{}{"title":art.Title,"content":art.Content,"imgs":art.Imgs,"class_id":art.ClassId,"mtime":art.Mtime,"article_status":art.ArticleStatus})
  206. }
  207. func GetPreviewInfo(orgID int64)(models.Articles,error) {
  208. article := models.Articles{}
  209. err := service.PatientReadDB().Where("user_org_id = ? AND article_status = ? AND type = ?", orgID, 3, 1).Last(&article).Error
  210. return article, err
  211. }
  212. func GetAllComment(page int64,limit int64,orgID int64)(articles []*models.Articles,total int64, err error) {
  213. db := service.PatientReadDB().Table("sgj_patient_articles as a ").Where("a.status=1")
  214. if (orgID > 0) {
  215. db = db.Where("a.user_org_id=? AND article_status = ?", orgID,1)
  216. }
  217. offset := (page - 1) * limit
  218. err = db.Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  219. Preload("Comments", func(db *gorm.DB) *gorm.DB {
  220. return db.Where(" status = ?",1)
  221. }).
  222. Select("a.id, a.title, a.summary, a.content, a.type, a.num, a.mtime, a.real_read_num, a.ctime, a.class_id, a.author, a.status, a.reason,a.star_num, a.comment_num,a.user_org_id, a.article_status, a.imgs, a.video_url, a.source, a.category_id, a.ttid, a.ttype, a.toid").Find(&articles).Error
  223. fmt.Println("err是啥呢?",err)
  224. if err != nil {
  225. return
  226. }
  227. return
  228. }
  229. func GetArticleCommentDetail(articleId int64,orgID int64)(*models.Articles, error){
  230. article := &models.Articles{}
  231. err :=service.PatientReadDB().Where("id = ? AND user_org_id = ? AND status = ?", articleId, orgID,1).Find(article).Error
  232. tm := time.Unix(article.Ctime, 0)
  233. article.PublicTime = tm.Format("2006-01-02 15:04:05")
  234. return article, err
  235. }
  236. func FindAllComments(page int64,limit int64,articleId int64)(comment []*models.Comment,total int64,err error) {
  237. db := service.PatientReadDB().Table("sgj_patient_articles_comment as a").Where("a.status = 1")
  238. offset := (page - 1) * limit
  239. err = db.Where("article_id = ? AND parent_id = ?", articleId, 0).Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  240. Select("a.id,a.article_id,a.comment_user_id,a.parent_id,a.content,a.ctime,a.status,a.star_num,a.comment_num,a.comment_id,a.comment_user_name,a.comment_user_avater,a.source,a.ttid,a.tuser_id,a.taid,a.tpid,a.tcid").Find(&comment).Error
  241. fmt.Println("err是啥呢?",err)
  242. if err != nil {
  243. return
  244. }
  245. return
  246. }
  247. func AddComment(comment *models.Comment)(error) {
  248. err := service.PatientReadDB().Create(comment).Error
  249. return err
  250. }
  251. func GetReplyAllComents(page int64,limit int64)(comment []*models.Comment,total int64,err error) {
  252. db := service.PatientReadDB().Table("sgj_patient_articles_comment as a").Where("a.status = 1")
  253. offset := (page - 1) * limit
  254. err = db.Where("parent_id = ?",0).Count(&total).Order("a.ctime desc").Offset(offset).Limit(limit).
  255. Select("a.id,a.article_id,a.comment_user_id,a.parent_id,a.content,a.ctime,a.status,a.star_num,a.comment_num,a.comment_id,a.comment_user_name,a.comment_user_avater,a.source,a.ttid,a.tuser_id,a.taid,a.tpid,a.tcid").Find(&comment).Error
  256. fmt.Println("err是啥呢?",err)
  257. if err != nil {
  258. return
  259. }
  260. return
  261. }
  262. func GetAllReplyFormId(articleID int64, commentId int64)([]models.Comment, error) {
  263. var comments []models.Comment
  264. errs := service.PatientReadDB().Model(&models.Comment{}).
  265. Where("article_id = ? AND parent_id = ? AND status = ?", articleID, commentId, 1).
  266. Find(&comments).Error
  267. return comments, errs
  268. }
  269. func ClearReplyInfo(id int64)(error){
  270. err := service.PatientWriteDB().Model(&models.Comment{}).Where("id = ?", id).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  271. return err
  272. }
  273. func DeleteReply(id int64)(error){
  274. err := service.PatientWriteDB().Model(&models.Comment{}).Where("id = ?", id).Update(map[string]interface{}{"status": 0, "mtime": time.Now().Unix()}).Error
  275. return err
  276. }
  277. func GetQueryReplyInfo(parentid int64,articleID int64)([]models.Comment,error) {
  278. var comments []models.Comment
  279. errs := service.PatientWriteDB().Model(&models.Comment{}).
  280. Where("article_id = ? AND parent_id = ? AND status = ?", articleID, parentid, 1).Find(&comments).Error
  281. return comments,errs
  282. }
  283. func DeleteAllReply(ids[] int64)(err error) {
  284. if len(ids) ==1{
  285. err = service.PatientWriteDB().Model(&models.Comment{}).Where( "id=?",ids[0]).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  286. }else {
  287. err = service.PatientWriteDB().Model(&models.Comment{}).Where("id IN (?)",ids).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  288. }
  289. return
  290. }
  291. func DeleteAllArticles(ids[] int64)(err error) {
  292. if len(ids) ==1{
  293. err = service.PatientWriteDB().Model(&models.Articles{}).Where( "id=?",ids[0]).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  294. }else {
  295. err = service.PatientWriteDB().Model(&models.Articles{}).Where("id IN (?)",ids).Update(map[string]interface{}{"status":0,"mtime":time.Now().Unix()}).Error
  296. }
  297. return
  298. }