report.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package english_report
  2. import (
  3. "fmt"
  4. "hongze/hongze_yb_en_api/models/en_classify_permission"
  5. "hongze/hongze_yb_en_api/models/en_company_permission"
  6. "hongze/hongze_yb_en_api/models/english_company"
  7. "hongze/hongze_yb_en_api/models/english_report"
  8. "hongze/hongze_yb_en_api/models/english_report_email"
  9. "hongze/hongze_yb_en_api/services/alarm_msg"
  10. "hongze/hongze_yb_en_api/utils"
  11. "time"
  12. )
  13. func DealEmail(reportItem *english_report.Report, reportCode string, shareEmailId int) (err error, errMsg string) {
  14. defer func() {
  15. if err != nil {
  16. alarm_msg.SendAlarmMsg(utils.APPNAME+"更新英文报告邮箱PV失败, ErrMsg: "+errMsg, 2)
  17. }
  18. }()
  19. emailItem := new(english_report_email.Email)
  20. userEmail, err := emailItem.GetById(shareEmailId)
  21. if err != nil && err != utils.ErrNoRow {
  22. errMsg = "获取客户邮箱信息失败, Err:" + err.Error()
  23. return
  24. }
  25. if userEmail == nil {
  26. return
  27. }
  28. // 更新报告邮箱pv(冗余)
  29. if err = reportItem.UpdatePvEmailByReportCode(reportCode); err != nil {
  30. errMsg = "更新报告邮箱PV失败, Err:" + err.Error()
  31. return
  32. }
  33. // 记录邮箱PV
  34. pv := &english_report_email.EmailPv{
  35. ReportId: reportItem.Id,
  36. EmailId: userEmail.Id,
  37. CreateTime: time.Now().Local(),
  38. }
  39. if err = pv.Add(); err != nil {
  40. errMsg = "新增邮箱PV失败, Err: " + err.Error()
  41. return
  42. }
  43. // 更新阅读量
  44. if err = emailItem.UpdateViewTotalById(userEmail.Id); err != nil {
  45. errMsg = "更新英文联系人阅读量失败, Err: " + err.Error()
  46. return
  47. }
  48. if userEmail.CompanyId > 0 {
  49. companyItem := new(english_company.Company)
  50. if err = companyItem.UpdateViewTotalByCompanyId(userEmail.CompanyId); err != nil {
  51. errMsg = "更新英文客户阅读量, Err: " + err.Error()
  52. return
  53. }
  54. }
  55. return
  56. }
  57. // CheckUserReportAuthByCompanyAndClassify 校验用户报告权限
  58. func CheckUserReportAuthByCompanyAndClassify(companyId, classifyId int) (authOk bool, err error) {
  59. if companyId <= 0 || classifyId <= 0 {
  60. return
  61. }
  62. // 客户权限
  63. hasPermissions := make([]*en_company_permission.EnCompanyPermission, 0)
  64. {
  65. cond := `en_company_id = ?`
  66. pars := make([]interface{}, 0)
  67. pars = append(pars, companyId)
  68. ob := new(en_company_permission.EnCompanyPermission)
  69. list, e := ob.GetList(cond, pars)
  70. if e != nil {
  71. err = fmt.Errorf("company permission GetList err: %s", e.Error())
  72. return
  73. }
  74. hasPermissions = list
  75. }
  76. // 报告权限
  77. reportPermissions := make([]*en_classify_permission.EnClassifyPermission, 0)
  78. {
  79. cond := `en_classify_id = ?`
  80. pars := make([]interface{}, 0)
  81. pars = append(pars, companyId)
  82. ob := new(en_classify_permission.EnClassifyPermission)
  83. list, e := ob.GetList(cond, pars)
  84. if e != nil {
  85. err = fmt.Errorf("classify permission GetList err: %s", e.Error())
  86. return
  87. }
  88. reportPermissions = list
  89. }
  90. for _, r := range reportPermissions {
  91. for _, p := range hasPermissions {
  92. if r.EnPermissionId == p.EnPermissionId {
  93. authOk = true
  94. return
  95. }
  96. }
  97. }
  98. return
  99. }