art_attach_repo.go 2.7 KB

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