workspace.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "time"
  6. "youngee_b_api/model/gorm_model"
  7. "youngee_b_api/model/http_model"
  8. "github.com/issue9/conv"
  9. "github.com/sirupsen/logrus"
  10. )
  11. func GetWorkspaceNums(ctx context.Context, enterpriseID int64) (*http_model.WorkspaceNums, error) {
  12. var workspaceNums http_model.WorkspaceNums
  13. var PaymentPending, DraftNum, RecruitingFullNum, ExecutionSpecNum, ExecutionFullNum int64
  14. db := GetReadDB(ctx)
  15. db = db.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  16. db.Where("project_status = 1").Count(&DraftNum)
  17. db1 := GetReadDB(ctx)
  18. db1 = db1.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  19. db1.Where("project_status = 4 AND project_type = 1").Count(&RecruitingFullNum)
  20. db2 := GetReadDB(ctx)
  21. db2 = db2.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  22. db2.Where("project_status = 6").Count(&PaymentPending)
  23. db3 := GetReadDB(ctx)
  24. db3 = db3.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  25. db3.Where("project_status = 9 AND project_type = 2").Count(&ExecutionSpecNum)
  26. db4 := GetReadDB(ctx)
  27. db4 = db4.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  28. db4.Where("project_status = 9 AND project_type = 1").Count(&ExecutionFullNum)
  29. var ProjectFunds float64
  30. db5 := GetReadDB(ctx)
  31. db5 = db5.Model(gorm_model.Enterprise{}).Select("frozen_balance").Where("enterprise_id = ?", enterpriseID).First(&ProjectFunds)
  32. workspaceNums.PaymentPending = PaymentPending
  33. workspaceNums.DraftNum = DraftNum
  34. workspaceNums.RecruitingFullNum = RecruitingFullNum
  35. workspaceNums.ExecutionSpecNum = ExecutionSpecNum
  36. workspaceNums.ExecutionFullNum = ExecutionFullNum
  37. workspaceNums.ProjectFunds = ProjectFunds
  38. return &workspaceNums, nil
  39. }
  40. func GetWorkspaceDDLproject(ctx context.Context, enterpriseID, pageSize, pageNum int64) (*http_model.WorkspaceDDLprojectdata, error) {
  41. var projectInfos []gorm_model.ProjectInfo
  42. //DDLproject := http_model.WorkspaceDDLprojectdata{}
  43. db := GetReadDB(ctx)
  44. ddl := conv.MustString(time.Now())[0:10] + "%"
  45. db = db.Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  46. db = db.Where("project_status = 4 AND recruit_ddl like ?", ddl).Or("project_status = 6 AND auto_fail_at like ?", ddl).Or("project_status = 3 AND pass_at like ?", ddl).Or("project_status = 10 AND finish_at like ?", ddl)
  47. // 查询总数
  48. var total int64
  49. if err := db.Count(&total).Error; err != nil {
  50. logrus.WithContext(ctx).Errorf("[GetWorkspaceDDLproject db] error query mysql total, err:%+v", err)
  51. return nil, err
  52. }
  53. // 查询该页数据
  54. limit := pageSize
  55. offset := pageSize * pageNum // assert pageNum start with 0
  56. wsDDLprojectData := http_model.WorkspaceDDLprojectdata{}
  57. err := db.Order("project_id").Limit(int(limit)).Offset(int(offset)).Find(&projectInfos).Error
  58. if err != nil {
  59. logrus.WithContext(ctx).Errorf("[GetWorkspaceDDLproject db] Find Pagesize DDLProjectInfo error,err:%+v", err)
  60. return nil, err
  61. }
  62. wsDDLprojectData.Total = conv.MustString(total)
  63. for _, projectInfo := range projectInfos {
  64. DDLProjectPreview := new(http_model.DDLProjectPreview)
  65. DDLProjectPreview.ProjectId = conv.MustString(projectInfo.ProjectID)
  66. DDLProjectPreview.ProjectForm = conv.MustString(projectInfo.ProjectForm)
  67. DDLProjectPreview.ProjectName = projectInfo.ProjectName
  68. DDLProjectPreview.ProjectStatus = conv.MustString(projectInfo.ProjectStatus)
  69. DDLProjectPreview.ProjectPlatform = conv.MustString(projectInfo.ProjectPlatform)
  70. DDLProjectPreview.ProjectContentType = conv.MustString(projectInfo.ContentType)
  71. DDLProjectPreview.RecruitDDL = conv.MustString(projectInfo.RecruitDdl)[0:19]
  72. if projectInfo.AutoFailAt != nil {
  73. DDLProjectPreview.AutoFailAt = conv.MustString(projectInfo.AutoFailAt)[0:19]
  74. }
  75. if projectInfo.PassAt != nil {
  76. DDLProjectPreview.PassAt = conv.MustString(projectInfo.PassAt)[0:19]
  77. }
  78. if projectInfo.FinishAt != nil {
  79. DDLProjectPreview.FinishAt = conv.MustString(projectInfo.FinishAt)[0:19]
  80. }
  81. DDLProjectPreview.RecruitNum = conv.MustString(projectInfo.RecruitNum)
  82. wsDDLprojectData.DDLProjectPreview = append(wsDDLprojectData.DDLProjectPreview, DDLProjectPreview)
  83. }
  84. fmt.Printf("GGGGGGGGGG %+v %+v %+v \n", len(projectInfos), pageSize, pageNum)
  85. return &wsDDLprojectData, nil
  86. }
  87. func GetWorkspaceBarNums(ctx context.Context, enterpriseID, projectType int64) (*http_model.WorkspaceBarNums, error) {
  88. var workspaceNums http_model.WorkspaceBarNums
  89. var DataPendingNum, LinkPendingNum, SketchPendingNum, ScriptPendingNum, AccSelecting, ShipmentPendingNum, ShippedNum int64
  90. fmt.Printf("TypeShow %+v", projectType)
  91. //先查企业所属的全部项目
  92. var RecruitingProjectIDs []int64
  93. db := GetReadDB(ctx)
  94. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_type = ? AND project_status = 4", enterpriseID, projectType).Find(&RecruitingProjectIDs)
  95. db1 := GetReadDB(ctx)
  96. db1 = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ?", RecruitingProjectIDs)
  97. //在一个db上持续操作,会默认一直AND连接
  98. //1 招募中-待选
  99. err := db1.Where("task_stage = 1").Count(&AccSelecting).Error
  100. if err != nil {
  101. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find AccSelecting error,err:%+v", err)
  102. return nil, err
  103. }
  104. //执行中都是状态9 再次过滤
  105. var ExecutingProjectIDs []int64
  106. db = GetReadDB(ctx)
  107. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_type = ? AND project_status = 9", enterpriseID, projectType).Find(&ExecutingProjectIDs)
  108. db1 = GetReadDB(ctx)
  109. db1 = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ?", ExecutingProjectIDs)
  110. //2 数据待审
  111. db1 = GetReadDB(ctx)
  112. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 14", ExecutingProjectIDs).Count(&DataPendingNum).Error
  113. //err = db1.Where("task_stage = 14").Count(&DataPendingNum).Error
  114. if err != nil {
  115. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find DataPendingNum error,err:%+v", err)
  116. return nil, err
  117. }
  118. //3 链接待审
  119. db1 = GetReadDB(ctx)
  120. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 12", ExecutingProjectIDs).Count(&LinkPendingNum).Error
  121. //err = db1.Where("task_stage = 12").Count(&LinkPendingNum).Error
  122. if err != nil {
  123. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find LinkPendingNum error,err:%+v", err)
  124. return nil, err
  125. }
  126. //4 初稿待审
  127. db1 = GetReadDB(ctx)
  128. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 10", ExecutingProjectIDs).Count(&SketchPendingNum).Error
  129. //err = db1.Where("task_stage = 10").Count(&SketchPendingNum).Error
  130. if err != nil {
  131. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find SketchPendingNum error,err:%+v", err)
  132. return nil, err
  133. }
  134. //5 脚本待审
  135. db1 = GetReadDB(ctx)
  136. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 8", ExecutingProjectIDs).Count(&ScriptPendingNum).Error
  137. //err = db1.Where("task_stage = 8").Count(&ScriptPendingNum).Error
  138. if err != nil {
  139. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ScriptPendingNum error,err:%+v", err)
  140. return nil, err
  141. }
  142. //6 待签收
  143. db1 = GetReadDB(ctx)
  144. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 5", ExecutingProjectIDs).Count(&ShippedNum).Error
  145. //err = db1.Where("task_stage = 5").Count(&ShippedNum).Error
  146. if err != nil {
  147. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ShippedNum error,err:%+v", err)
  148. return nil, err
  149. }
  150. //7 待发货
  151. db1 = GetReadDB(ctx)
  152. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 4", ExecutingProjectIDs).Count(&ShipmentPendingNum).Error
  153. //err = db1.Where("task_stage = 4").Count(&ShipmentPendingNum).Error
  154. if err != nil {
  155. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ShipmentPendingNum error,err:%+v", err)
  156. return nil, err
  157. }
  158. workspaceNums.DataPendingNum = DataPendingNum
  159. workspaceNums.LinkPendingNum = LinkPendingNum
  160. workspaceNums.SketchPendingNum = SketchPendingNum
  161. workspaceNums.ScriptPendingNum = ScriptPendingNum
  162. workspaceNums.AccSelecting = AccSelecting
  163. workspaceNums.ShippedNum = ShippedNum
  164. workspaceNums.ShipmentPendingNum = ShipmentPendingNum
  165. fmt.Printf("work %+v", workspaceNums)
  166. return &workspaceNums, nil
  167. }