workspace.go 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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 string) (*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 string, 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 = 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. return &wsDDLprojectData, nil
  85. }
  86. func GetWorkspaceBarNums(ctx context.Context, enterpriseID string, projectType int64) (*http_model.WorkspaceBarNums, error) {
  87. var workspaceNums http_model.WorkspaceBarNums
  88. var DataPendingNum, LinkPendingNum, SketchPendingNum, ScriptPendingNum, AccSelecting, ShipmentPendingNum, ShippedNum int64
  89. //fmt.Printf("TypeShow %+v", projectType)
  90. //先查企业所属的全部项目
  91. var RecruitingProjectIDs []string
  92. db := GetReadDB(ctx)
  93. fmt.Println("测试", projectType == 1)
  94. if projectType == 1 {
  95. fmt.Println("全流程", projectType)
  96. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_type = ? AND project_status = 4", enterpriseID, projectType).Find(&RecruitingProjectIDs)
  97. } else {
  98. fmt.Println("专项", projectType)
  99. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_type = ? AND project_status = 9", enterpriseID, projectType).Find(&RecruitingProjectIDs)
  100. }
  101. db1 := GetReadDB(ctx)
  102. db1 = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ?", RecruitingProjectIDs)
  103. //在一个db上持续操作,会默认一直AND连接
  104. fmt.Println("招募ID", RecruitingProjectIDs)
  105. //1 招募中-待选
  106. err := db1.Where("task_status = 1").Count(&AccSelecting).Error
  107. if err != nil {
  108. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find AccSelecting error,err:%+v", err)
  109. return nil, err
  110. }
  111. //执行中都是状态9 再次过滤
  112. var ExecutingProjectIDs []string
  113. db = GetReadDB(ctx)
  114. db = db.Debug().Model(gorm_model.ProjectInfo{}).Select("project_id").Where("enterprise_id = ? AND project_type = ? AND project_status = 9", enterpriseID, projectType).Find(&ExecutingProjectIDs)
  115. db1 = GetReadDB(ctx)
  116. db1 = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ?", ExecutingProjectIDs)
  117. //2 数据待审
  118. db1 = GetReadDB(ctx)
  119. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 14", ExecutingProjectIDs).Count(&DataPendingNum).Error
  120. //err = db1.Where("task_stage = 14").Count(&DataPendingNum).Error
  121. if err != nil {
  122. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find DataPendingNum error,err:%+v", err)
  123. return nil, err
  124. }
  125. //3 链接待审
  126. db1 = GetReadDB(ctx)
  127. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 12", ExecutingProjectIDs).Count(&LinkPendingNum).Error
  128. //err = db1.Where("task_stage = 12").Count(&LinkPendingNum).Error
  129. if err != nil {
  130. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find LinkPendingNum error,err:%+v", err)
  131. return nil, err
  132. }
  133. //4 初稿待审
  134. db1 = GetReadDB(ctx)
  135. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 10", ExecutingProjectIDs).Count(&SketchPendingNum).Error
  136. //err = db1.Where("task_stage = 10").Count(&SketchPendingNum).Error
  137. if err != nil {
  138. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find SketchPendingNum error,err:%+v", err)
  139. return nil, err
  140. }
  141. //5 脚本待审
  142. db1 = GetReadDB(ctx)
  143. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_stage = 8", ExecutingProjectIDs).Count(&ScriptPendingNum).Error
  144. //err = db1.Where("task_stage = 8").Count(&ScriptPendingNum).Error
  145. if err != nil {
  146. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ScriptPendingNum error,err:%+v", err)
  147. return nil, err
  148. }
  149. //6 待签收
  150. db1 = GetReadDB(ctx)
  151. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_status = 2 AND logistics_status = 2", ExecutingProjectIDs).Count(&ShippedNum).Error
  152. //err = db1.Where("task_stage = 5").Count(&ShippedNum).Error
  153. if err != nil {
  154. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ShippedNum error,err:%+v", err)
  155. return nil, err
  156. }
  157. //7 待发货
  158. db1 = GetReadDB(ctx)
  159. err = db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id IN ? AND task_status = 2 AND logistics_status = 1", ExecutingProjectIDs).Count(&ShipmentPendingNum).Error
  160. //err = db1.Where("task_stage = 4").Count(&ShipmentPendingNum).Error
  161. if err != nil {
  162. logrus.WithContext(ctx).Errorf("[GetWorkspaceBarNums db] Find ShipmentPendingNum error,err:%+v", err)
  163. return nil, err
  164. }
  165. workspaceNums.DataPendingNum = DataPendingNum
  166. workspaceNums.LinkPendingNum = LinkPendingNum
  167. workspaceNums.SketchPendingNum = SketchPendingNum
  168. workspaceNums.ScriptPendingNum = ScriptPendingNum
  169. workspaceNums.AccSelecting = AccSelecting
  170. workspaceNums.ShippedNum = ShippedNum
  171. workspaceNums.ShipmentPendingNum = ShipmentPendingNum
  172. fmt.Printf("work %+v", workspaceNums)
  173. return &workspaceNums, nil
  174. }