company_report_permission.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package services
  2. import (
  3. "fmt"
  4. "hongze/hongze_task/models"
  5. "hongze/hongze_task/utils"
  6. "time"
  7. )
  8. //产品试用权限 -> 产品权限关闭
  9. func CompanyReportPermissionClose() (err error) {
  10. //fmt.Println("开始进入产品试用权限 -> 产品权限关闭")
  11. endDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
  12. items, err := models.GetCompanyReportPermissionNeedClose(endDate)
  13. if err != nil {
  14. utils.FileLog.Info("GetCompanyReportPermissionNeedClose Err:%s" + err.Error())
  15. return
  16. }
  17. //待处理的用户产品权限列表(主要目的是为了多个产品项的去重,避免冻结产品时的多余sql操作)
  18. freezeCompanyProductList := make(map[string]*models.CompanyReportPermission)
  19. for _, v := range items {
  20. //fmt.Println(k, v)
  21. //continue
  22. //查看是否有审批单,如果有审批单,那么就退出当前循环,进入下一循环
  23. count, err := models.GetCompanyApprovalCount(v.CompanyId,v.ProductId)
  24. if err != nil {
  25. continue
  26. }
  27. if count > 0 {
  28. continue
  29. }
  30. //关闭用户产品权限
  31. err = models.CompanyReportPermissionClose(v.CompanyReportPermissionId,v.CompanyId, v.ProductId)
  32. if err != nil {
  33. utils.FileLog.Info("CompanyReportPermissionClose Err:%s" + err.Error())
  34. continue
  35. }
  36. //添加关闭用户产品权限日志
  37. _ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId,v.CompanyId,v.ProductId,utils.AdminId,v.ProductName,utils.RealName,"试用转关闭","close",v.Status)
  38. //如果不存在该数据,那么将该数据放入待处理用户产品权限列表
  39. mapKey := fmt.Sprintf("%v_%v",v.CompanyId,v.ProductId)
  40. if _,ok := freezeCompanyProductList[mapKey];ok==false{
  41. freezeCompanyProductList[mapKey] = v
  42. }
  43. }
  44. //遍历待处理的用户产品权限列表,查询用户产品权限信息并冻结用户产品
  45. for _,companyReportPermission := range freezeCompanyProductList{
  46. go queryAndFreezeCompanyProduct(companyReportPermission)
  47. }
  48. return
  49. }
  50. //查询用户产品权限信息并冻结用户产品
  51. func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportPermission){
  52. //查询该用户名下是否存在还在使用的权限
  53. count,err := models.GetCompanyReportPermissionCount(companyReportPermission.CompanyId, companyReportPermission.ProductId)
  54. if err != nil {
  55. utils.FileLog.Info("CompanyReportPermissionClose query other permission Err:%s" + err.Error())
  56. }
  57. //如果还存在使用(不管是正式还是试用)的权限,那么都直接退出当前循环,不冻结用户产品
  58. if count > 0 {
  59. return
  60. }
  61. //冻结该用户产品
  62. _,err = models.CompanyFreeze(companyReportPermission.CompanyId, companyReportPermission.ProductId)
  63. if err != nil {
  64. go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";冻结该用户产品", "services:queryAndFreezeCompanyProduct;Err"+err.Error(), utils.EmailSendToUsers)
  65. return
  66. }
  67. //查询用户产品信息
  68. companyProduct ,err := models.GetCompanyProduct(companyReportPermission.CompanyId,companyReportPermission.ProductId)
  69. //if err!=nil && err.Error() != utils.ErrNoRow() {
  70. if err != nil {
  71. if err.Error() != utils.ErrNoRow(){
  72. go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";查询用户产品信息", fmt.Sprint("services:queryAndFreezeCompanyProduct;Err"+err.Error(),"CompanyId:",companyReportPermission.CompanyId,";ProductId:",companyReportPermission.ProductId), utils.EmailSendToUsers)
  73. }
  74. //go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";查询用户产品信息", fmt.Sprint("services:queryAndFreezeCompanyProduct;Err"+err.Error(),"CompanyId:",companyReportPermission.CompanyId,";ProductId:",companyReportPermission.ProductId), utils.EmailSendToUsers)
  75. return
  76. }
  77. //添加操作日志
  78. remark := "试用转冻结"
  79. operation := "freeze"
  80. approveContent := "冻结"
  81. err = AddCompanyOperationRecord(companyReportPermission.CompanyId, utils.AdminId, companyReportPermission.ProductId, utils.AdminId, companyProduct.CompanyName,
  82. companyProduct.ProductName, utils.RealName, remark, operation, approveContent, utils.RealName, "", companyProduct.Status)
  83. if err != nil {
  84. go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";添加冻结操作日志", "services:queryAndFreezeCompanyProduct;Err"+err.Error(), utils.EmailSendToUsers)
  85. return
  86. }
  87. return
  88. }
  89. //添加用户权限操作日志
  90. func AddCompanyReportPermissionLog(companyReportPermissionId int64,companyId,productId,sysUserId int,productName string,sysUserName,remark,operation,status string) (err error) {
  91. record := models.CompanyReportPermissionLog{
  92. CompanyReportPermissionId : companyReportPermissionId,
  93. CompanyId : companyId,
  94. ProductId : productId,
  95. ProductName : productName,
  96. SysUserId : sysUserId,
  97. SysUserName : sysUserName,
  98. Remark : remark,
  99. Operation : operation,
  100. Status : status,
  101. CreateTime : time.Now(),
  102. }
  103. _, err = models.AddCompanyReportPermissionLog(&record)
  104. if err != nil{
  105. go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "services:AddCompanyReportPermissionLog;Err"+err.Error(), utils.EmailSendToUsers)
  106. }
  107. return
  108. }