sketch.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "reflect"
  6. "strconv"
  7. "strings"
  8. "time"
  9. "youngee_m_api/model/common_model"
  10. "youngee_m_api/model/gorm_model"
  11. "youngee_m_api/model/http_model"
  12. "youngee_m_api/pack"
  13. "youngee_m_api/util"
  14. "github.com/issue9/conv"
  15. "github.com/sirupsen/logrus"
  16. )
  17. // GetTaskSketchList 查询上传初稿的task list
  18. func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
  19. db := GetReadDB(ctx)
  20. // 查询Task表信息
  21. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  22. // 根据Project条件过滤
  23. conditionType := reflect.TypeOf(conditions).Elem()
  24. conditionValue := reflect.ValueOf(conditions).Elem()
  25. var platform_nickname string = ""
  26. for i := 0; i < conditionType.NumField(); i++ {
  27. field := conditionType.Field(i)
  28. tag := field.Tag.Get("condition")
  29. value := conditionValue.FieldByName(field.Name)
  30. if tag == "sketch_status" {
  31. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  32. if value.Interface() == int64(0) {
  33. db = db.Where("task_stage = 10")
  34. } else {
  35. db = db.Where("task_stage > 10 and task_stage <> 16")
  36. }
  37. continue
  38. } else if !util.IsBlank(value) {
  39. if tag == "platform_nickname" {
  40. platform_nickname = fmt.Sprintf("%v", value.Interface())
  41. continue
  42. } else if tag == "project_id" || tag == "strategy_id" {
  43. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  44. }
  45. }
  46. }
  47. var taskInfos []gorm_model.YoungeeTaskInfo
  48. db = db.Model(gorm_model.YoungeeTaskInfo{})
  49. // 查询总数
  50. var totalTask int64
  51. if err := db.Count(&totalTask).Error; err != nil {
  52. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  53. return nil, 0, err
  54. }
  55. db.Order("task_id").Find(&taskInfos)
  56. // 查询任务id
  57. var taskIds []string
  58. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  59. for _, taskInfo := range taskInfos {
  60. taskIds = append(taskIds, taskInfo.TaskID)
  61. taskMap[taskInfo.TaskID] = taskInfo
  62. }
  63. db1 := GetReadDB(ctx)
  64. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  65. var SketchInfos []gorm_model.YounggeeSketchInfo
  66. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  67. if conditions.SketchStatus == int64(0) {
  68. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  69. } else {
  70. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  71. }
  72. fmt.Printf("初稿查询:%+v", SketchInfos)
  73. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  74. for _, SketchInfo := range SketchInfos {
  75. SketchMap[SketchInfo.TaskID] = SketchInfo
  76. }
  77. // 查询总数
  78. var totalSketch int64
  79. if err := db1.Count(&totalSketch).Error; err != nil {
  80. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  81. return nil, 0, err
  82. }
  83. var misNum int64
  84. if totalSketch > totalTask {
  85. misNum = totalSketch - totalTask
  86. } else {
  87. misNum = totalTask - totalSketch
  88. }
  89. logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
  90. // 查询该页数据
  91. limit := pageSize + misNum
  92. offset := pageSize * pageNum // assert pageNum start with 0
  93. //fmt.Printf("limit %+v offset %+v \n", limit, offset)
  94. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  95. if err != nil {
  96. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  97. return nil, 0, err
  98. }
  99. var TaskSketches []*http_model.TaskSketch
  100. var taskSketches []*http_model.TaskSketchInfo
  101. var newTaskSketches []*http_model.TaskSketchInfo
  102. for _, taskId := range taskIds {
  103. TaskSketch := new(http_model.TaskSketch)
  104. TaskSketch.Talent = taskMap[taskId]
  105. TaskSketch.Sketch = SketchMap[taskId]
  106. TaskSketches = append(TaskSketches, TaskSketch)
  107. }
  108. taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
  109. for _, v := range taskSketches {
  110. if platform_nickname == "" {
  111. newTaskSketches = append(newTaskSketches, v)
  112. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  113. newTaskSketches = append(newTaskSketches, v)
  114. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  115. newTaskSketches = append(newTaskSketches, v)
  116. } else {
  117. totalTask--
  118. }
  119. }
  120. return newTaskSketches, totalTask, nil
  121. }
  122. // SketchOption 提交意见
  123. func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, projectid string) error {
  124. db := GetReadDB(ctx)
  125. var opid string
  126. var optype int
  127. opid = operatorid
  128. optype = 3
  129. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": opid, "b_operator_type": optype}).Error
  130. if err != nil {
  131. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  132. return err
  133. }
  134. var project gorm_model.ProjectInfo
  135. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  136. if err != nil {
  137. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  138. return err
  139. }
  140. var draft_default gorm_model.InfoAutoTask
  141. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  142. if err != nil {
  143. return err
  144. }
  145. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  146. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  147. if err != nil {
  148. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  149. return err
  150. }
  151. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  152. if err != nil {
  153. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  154. return err
  155. }
  156. return nil
  157. }
  158. // SketchOption 提交意见
  159. func LocalSketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, projectid string) error {
  160. db := GetReadDB(ctx)
  161. var opid string
  162. var optype int
  163. opid = operatorid
  164. optype = 3
  165. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1, "b_operator": opid, "b_operator_type": optype}).Error
  166. if err != nil {
  167. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  168. return err
  169. }
  170. var project gorm_model.YounggeeLocalLifeInfo
  171. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  172. if err != nil {
  173. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  174. return err
  175. }
  176. var draft_default gorm_model.InfoAutoTask
  177. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  178. if err != nil {
  179. return err
  180. }
  181. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  182. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  183. if err != nil {
  184. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  185. return err
  186. }
  187. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  188. if err != nil {
  189. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  190. return err
  191. }
  192. return nil
  193. }
  194. // AcceptSketch 同意初稿
  195. func AcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, projectid string, isspecial int) error {
  196. db := GetReadDB(ctx)
  197. var opid string
  198. var optype int
  199. opid = operatorid
  200. optype = 3
  201. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": opid, "b_operator_type": optype, "revise_opinion": "初稿通过"}).Error
  202. if err != nil {
  203. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  204. return err
  205. }
  206. var project gorm_model.ProjectInfo
  207. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  208. if err != nil {
  209. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  210. return err
  211. }
  212. taskstages := 11
  213. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  214. if isspecial == 1 {
  215. toolList := strings.Split(project.Tools, ",")
  216. for _, tool := range toolList {
  217. // 将 tool 转换为整数
  218. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  219. nextstage[t-1] = 1
  220. }
  221. }
  222. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  223. if nextstage[i] == 1 {
  224. switch i {
  225. case 3:
  226. taskstages = 11
  227. case 4:
  228. taskstages = 13
  229. case 5:
  230. taskstages = 15
  231. }
  232. break
  233. }
  234. }
  235. }
  236. var link_default gorm_model.InfoAutoTask
  237. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
  238. if err != nil {
  239. return err
  240. }
  241. duration := time.Duration(link_default.LinkBreach) * time.Hour
  242. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  243. if err != nil {
  244. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  245. return err
  246. }
  247. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: taskstages}).Error
  248. if err != nil {
  249. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  250. return err
  251. }
  252. return nil
  253. }
  254. // AcceptSketch 同意初稿
  255. func LocalAcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, projectid string, isspecial int) error {
  256. var opid string
  257. var optype int
  258. opid = operatorid
  259. optype = 3
  260. db := GetReadDB(ctx)
  261. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now(), "b_operator": opid, "b_operator_type": optype}).Error
  262. if err != nil {
  263. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  264. return err
  265. }
  266. var project gorm_model.YounggeeLocalLifeInfo
  267. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  268. if err != nil {
  269. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  270. return err
  271. }
  272. taskstages := 11
  273. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  274. if isspecial == 1 {
  275. toolList := strings.Split(project.Tools, ",")
  276. for _, tool := range toolList {
  277. // 将 tool 转换为整数
  278. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  279. nextstage[t-1] = 1
  280. }
  281. }
  282. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  283. if nextstage[i] == 1 {
  284. switch i {
  285. case 3:
  286. taskstages = 11
  287. case 4:
  288. taskstages = 13
  289. case 5:
  290. taskstages = 15
  291. }
  292. break
  293. }
  294. }
  295. }
  296. var link_default gorm_model.InfoAutoTask
  297. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error //待确认
  298. if err != nil {
  299. return err
  300. }
  301. duration := time.Duration(link_default.LinkBreach) * time.Hour
  302. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  303. if err != nil {
  304. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  305. return err
  306. }
  307. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: taskstages}).Error
  308. if err != nil {
  309. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  310. return err
  311. }
  312. return nil
  313. }
  314. // RejectSketch 不同意初稿
  315. func RejectSketch(ctx context.Context, TaskIDs []string, operatorid string, projectid string) error {
  316. var opid string
  317. var optype int
  318. opid = operatorid
  319. optype = 3
  320. db := GetReadDB(ctx)
  321. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": opid, "b_operator_type": optype}).Error
  322. if err != nil {
  323. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  324. return err
  325. }
  326. var project gorm_model.ProjectInfo
  327. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  328. if err != nil {
  329. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  330. return err
  331. }
  332. var draft_default gorm_model.InfoAutoTask
  333. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  334. if err != nil {
  335. return err
  336. }
  337. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  338. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  339. if err != nil {
  340. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  341. return err
  342. }
  343. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  344. if err != nil {
  345. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  346. return err
  347. }
  348. return nil
  349. }
  350. // RejectSketch 不同意初稿
  351. func LocalRejectSketch(ctx context.Context, TaskIDs []string, operatorid string, projectid string) error {
  352. var opid string
  353. var optype int
  354. opid = operatorid
  355. optype = 3
  356. db := GetReadDB(ctx)
  357. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 0, "is_review": 1, "reject_at": time.Now(), "b_operator": opid, "b_operator_type": optype}).Error
  358. if err != nil {
  359. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  360. return err
  361. }
  362. var project gorm_model.YounggeeLocalLifeInfo
  363. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  364. if err != nil {
  365. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  366. return err
  367. }
  368. var draft_default gorm_model.InfoAutoTask
  369. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  370. if err != nil {
  371. return err
  372. }
  373. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  374. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  375. if err != nil {
  376. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  377. return err
  378. }
  379. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  380. if err != nil {
  381. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  382. return err
  383. }
  384. return nil
  385. }
  386. // FindPhoto
  387. func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
  388. db := GetReadDB(ctx)
  389. var SketchInfo gorm_model.YounggeeSketchInfo
  390. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Find(&SketchInfo).Error
  391. if err != nil {
  392. return nil, err
  393. }
  394. return &SketchInfo, nil
  395. }
  396. func FindAllSketchInfo(ctx context.Context, taskid string) ([]gorm_model.YounggeeSketchInfo, error) {
  397. db := GetReadDB(ctx)
  398. var SketchInfo []gorm_model.YounggeeSketchInfo
  399. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", taskid).Find(&SketchInfo).Error
  400. if err != nil {
  401. return nil, err
  402. }
  403. return SketchInfo, nil
  404. }
  405. // FindPhoto
  406. func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
  407. db := GetReadDB(ctx)
  408. var SketchPhotos []gorm_model.YounggeeSketchPhoto
  409. err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
  410. if err != nil {
  411. return nil, err
  412. }
  413. return SketchPhotos, nil
  414. }
  415. // GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
  416. func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
  417. db := GetReadDB(ctx)
  418. // 查询Task表信息
  419. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  420. // 根据Project条件过滤
  421. conditionType := reflect.TypeOf(conditions).Elem()
  422. conditionValue := reflect.ValueOf(conditions).Elem()
  423. var platform_nickname string = ""
  424. for i := 0; i < conditionType.NumField(); i++ {
  425. field := conditionType.Field(i)
  426. tag := field.Tag.Get("condition")
  427. value := conditionValue.FieldByName(field.Name)
  428. if tag == "sketch_status" {
  429. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  430. if value.Interface() == int64(0) {
  431. db = db.Where("task_stage = 10")
  432. } else {
  433. db = db.Where("task_stage > 10 and task_stage <> 16")
  434. }
  435. continue
  436. } else if !util.IsBlank(value) {
  437. if tag == "platform_nickname" {
  438. platform_nickname = fmt.Sprintf("%v", value.Interface())
  439. continue
  440. } else if tag == "project_id" {
  441. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  442. }
  443. }
  444. }
  445. var taskInfos []gorm_model.YoungeeTaskInfo
  446. db = db.Model(gorm_model.YoungeeTaskInfo{})
  447. // 查询总数
  448. var totalTask int64
  449. if err := db.Count(&totalTask).Error; err != nil {
  450. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  451. return nil, 0, err
  452. }
  453. db.Order("task_id").Find(&taskInfos)
  454. // 查询任务id
  455. var taskIds []string
  456. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  457. for _, taskInfo := range taskInfos {
  458. taskIds = append(taskIds, taskInfo.TaskID)
  459. taskMap[taskInfo.TaskID] = taskInfo
  460. }
  461. db1 := GetReadDB(ctx)
  462. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  463. var SketchInfos []gorm_model.YounggeeSketchInfo
  464. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  465. if conditions.SketchStatus == int64(0) {
  466. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  467. } else {
  468. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  469. }
  470. //fmt.Printf("初稿查询:%+v", SketchInfos)
  471. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  472. for _, SketchInfo := range SketchInfos {
  473. SketchMap[SketchInfo.TaskID] = SketchInfo
  474. }
  475. // 查询总数
  476. var totalSketch int64
  477. if err := db1.Count(&totalSketch).Error; err != nil {
  478. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  479. return nil, 0, err
  480. }
  481. //// 查询该页数据
  482. //limit := pageSize
  483. //offset := pageSize * pageNum // assert pageNum start with 0
  484. //err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  485. //
  486. //if err != nil {
  487. // logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  488. // return nil, 0, err
  489. //}
  490. var TaskSketches []*http_model.SpecialTaskSketch
  491. var taskSketches []*http_model.SpecialTaskSketchInfo
  492. var newTaskSketches []*http_model.SpecialTaskSketchInfo
  493. for _, taskId := range taskIds {
  494. TaskSketch := new(http_model.SpecialTaskSketch)
  495. TaskSketch.Talent = taskMap[taskId]
  496. TaskSketch.Sketch = SketchMap[taskId]
  497. TaskSketches = append(TaskSketches, TaskSketch)
  498. }
  499. taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
  500. for _, v := range taskSketches {
  501. if platform_nickname == "" {
  502. newTaskSketches = append(newTaskSketches, v)
  503. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  504. newTaskSketches = append(newTaskSketches, v)
  505. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  506. newTaskSketches = append(newTaskSketches, v)
  507. } else {
  508. totalTask--
  509. }
  510. }
  511. return newTaskSketches, totalTask, nil
  512. }