art_attach_repo.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package repositories
  2. import (
  3. "fmt"
  4. "time"
  5. "xorm.io/xorm"
  6. "xps/datamodels"
  7. "xps/viewmodels"
  8. )
  9. type ArtAttachRepo struct {
  10. engine *xorm.Engine
  11. }
  12. func NewArtAttachRepo(engine *xorm.Engine) *ArtCatRepo {
  13. return &ArtCatRepo{
  14. engine: engine,
  15. }
  16. }
  17. func (d *ArtRepo) GetListById(ocId, artId int64) ([]viewmodels.AttachInfo, error) {
  18. sqlSelect := ` SELECT
  19. A.file_id,
  20. B.file_title,
  21. B.dir_id,
  22. B.file_icon,
  23. B.file_url,
  24. B.file_ext,
  25. B.file_size,
  26. B.file_author,
  27. B.file_desc,
  28. B.uploaded_by AS uploader_id,
  29. C.account_name AS uploader_name,
  30. B.uploaded_at `
  31. sqlFrom := ` FROM art_attach AS A
  32. LEFT JOIN doc_file AS B ON(A.oc_id = B.oc_id AND A.file_id = B.file_id)
  33. LEFT JOIN account AS C ON(B.oc_id = C.oc_id AND B.uploaded_by = C.account_id) `
  34. sqlWhere := ` WHERE B.deleted_flag = 0 `
  35. sqlWhere += fmt.Sprintf(" AND A.oc_id = %d ", ocId)
  36. sqlWhere += fmt.Sprintf(" AND A.art_id = %d ", artId)
  37. sqlOrderBy := " ORDER BY A.issued_at DESC "
  38. datalist := make([]viewmodels.AttachInfo, 0)
  39. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  40. if err != nil {
  41. return nil, err
  42. }
  43. return datalist, nil
  44. }
  45. func (d *ArtAttachRepo) Create(data *datamodels.ArtAttach) error {
  46. data.CreatedAt = time.Now()
  47. _, err := d.engine.Insert(data)
  48. return err
  49. }
  50. func (d *ArtAttachRepo) Delete(m map[string]interface{}) error {
  51. ocId := m["ocId"].(int64)
  52. artId := m["artId"].(int64)
  53. deletedBy := m["deletedBy"].(int64)
  54. data := &datamodels.ArtAttach{}
  55. data.DeletedFlag = 1
  56. data.DeletedBy = deletedBy
  57. data.DeletedAt = time.Now()
  58. _, err := d.engine.
  59. Where("oc_id = ?", ocId).
  60. Where("art_id = ?", artId).
  61. Update(data)
  62. return err
  63. }
  64. func (d *ArtAttachRepo) DeleteById(m map[string]interface{}) error {
  65. ocId := m["ocId"].(int64)
  66. artId := m["artId"].(int64)
  67. fileId := m["fileId"].(int64)
  68. deletedBy := m["deletedBy"].(int64)
  69. data := &datamodels.ArtAttach{}
  70. data.DeletedFlag = 1
  71. data.DeletedBy = deletedBy
  72. data.DeletedAt = time.Now()
  73. _, err := d.engine.
  74. Where("oc_id = ?", ocId).
  75. Where("art_id = ?", artId).
  76. Where("file_id = ?", fileId).
  77. Update(data)
  78. return err
  79. }