sketch.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "reflect"
  6. "strconv"
  7. "strings"
  8. "time"
  9. "youngee_b_api/model/common_model"
  10. "youngee_b_api/model/gorm_model"
  11. "youngee_b_api/model/http_model"
  12. "youngee_b_api/pack"
  13. "youngee_b_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, operatetype int, projectid string, Enterpriseid string) error {
  124. db := GetReadDB(ctx)
  125. var opid string
  126. var optype int
  127. switch operatetype {
  128. case 3:
  129. {
  130. opid = Enterpriseid
  131. optype = 1
  132. }
  133. case 4:
  134. {
  135. opid = operatorid
  136. optype = 2
  137. }
  138. }
  139. 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
  140. if err != nil {
  141. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  142. return err
  143. }
  144. var project gorm_model.ProjectInfo
  145. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  146. if err != nil {
  147. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  148. return err
  149. }
  150. var draft_default gorm_model.InfoAutoTask
  151. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  152. if err != nil {
  153. return err
  154. }
  155. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  156. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  157. if err != nil {
  158. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  159. return err
  160. }
  161. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  162. if err != nil {
  163. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  164. return err
  165. }
  166. return nil
  167. }
  168. // SketchOption 提交意见
  169. func LocalSketchOption(ctx context.Context, TaskID string, ReviseOpinion string, operatorid string, operatetype int, projectid string, Enterpriseid string) error {
  170. db := GetReadDB(ctx)
  171. var opid string
  172. var optype int
  173. switch operatetype {
  174. case 3:
  175. {
  176. opid = Enterpriseid
  177. optype = 1
  178. }
  179. case 4:
  180. {
  181. opid = operatorid
  182. optype = 2
  183. }
  184. }
  185. 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
  186. if err != nil {
  187. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  188. return err
  189. }
  190. var project gorm_model.YounggeeLocalLifeInfo
  191. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  192. if err != nil {
  193. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  194. return err
  195. }
  196. var draft_default gorm_model.InfoAutoTask
  197. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  198. if err != nil {
  199. return err
  200. }
  201. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  202. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  203. if err != nil {
  204. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  205. return err
  206. }
  207. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  208. if err != nil {
  209. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  210. return err
  211. }
  212. return nil
  213. }
  214. // AcceptSketch 同意初稿
  215. func AcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int, Enterpriseid string) error {
  216. db := GetReadDB(ctx)
  217. var opid string
  218. var optype int
  219. switch operatetype {
  220. case 3:
  221. {
  222. opid = Enterpriseid
  223. optype = 1
  224. }
  225. case 4:
  226. {
  227. opid = operatorid
  228. optype = 2
  229. }
  230. }
  231. 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
  232. if err != nil {
  233. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  234. return err
  235. }
  236. var project gorm_model.ProjectInfo
  237. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  238. if err != nil {
  239. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  240. return err
  241. }
  242. taskstages := 11
  243. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  244. if isspecial == 1 {
  245. toolList := strings.Split(project.Tools, ",")
  246. for _, tool := range toolList {
  247. // 将 tool 转换为整数
  248. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  249. nextstage[t-1] = 1
  250. }
  251. }
  252. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  253. if nextstage[i] == 1 {
  254. switch i {
  255. case 3:
  256. taskstages = 11
  257. case 4:
  258. taskstages = 13
  259. case 5:
  260. taskstages = 15
  261. }
  262. break
  263. }
  264. }
  265. }
  266. var link_default gorm_model.InfoAutoTask
  267. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&link_default).Error
  268. if err != nil {
  269. return err
  270. }
  271. duration := time.Duration(link_default.LinkBreach) * time.Hour
  272. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  273. if err != nil {
  274. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  275. return err
  276. }
  277. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: taskstages}).Error
  278. if err != nil {
  279. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  280. return err
  281. }
  282. return nil
  283. }
  284. // AcceptSketch 同意初稿
  285. func LocalAcceptSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, isspecial int, Enterpriseid string) error {
  286. var opid string
  287. var optype int
  288. switch operatetype {
  289. case 3:
  290. {
  291. opid = Enterpriseid
  292. optype = 1
  293. }
  294. case 4:
  295. {
  296. opid = operatorid
  297. optype = 2
  298. }
  299. }
  300. db := GetReadDB(ctx)
  301. 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
  302. if err != nil {
  303. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  304. return err
  305. }
  306. var project gorm_model.YounggeeLocalLifeInfo
  307. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  308. if err != nil {
  309. logrus.WithContext(ctx).Errorf("[Sketch db] Find ProjectInfo error,err:%+v", err)
  310. return err
  311. }
  312. taskstages := 11
  313. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  314. if isspecial == 1 {
  315. toolList := strings.Split(project.Tools, ",")
  316. for _, tool := range toolList {
  317. // 将 tool 转换为整数
  318. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  319. nextstage[t-1] = 1
  320. }
  321. }
  322. for i := 3; i < len(nextstage); i++ { // 从位置1开始
  323. if nextstage[i] == 1 {
  324. switch i {
  325. case 3:
  326. taskstages = 11
  327. case 4:
  328. taskstages = 13
  329. case 5:
  330. taskstages = 15
  331. }
  332. break
  333. }
  334. }
  335. }
  336. var link_default gorm_model.InfoAutoTask
  337. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&link_default).Error //待确认
  338. if err != nil {
  339. return err
  340. }
  341. duration := time.Duration(link_default.LinkBreach) * time.Hour
  342. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 5, CurBreakAt: time.Now().Add(duration)}).Error
  343. if err != nil {
  344. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  345. return err
  346. }
  347. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: taskstages}).Error
  348. if err != nil {
  349. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  350. return err
  351. }
  352. return nil
  353. }
  354. // RejectSketch 不同意初稿
  355. func RejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, Enterpriseid string) error {
  356. var opid string
  357. var optype int
  358. switch operatetype {
  359. case 3:
  360. {
  361. opid = Enterpriseid
  362. optype = 1
  363. }
  364. case 4:
  365. {
  366. opid = operatorid
  367. optype = 2
  368. }
  369. }
  370. db := GetReadDB(ctx)
  371. 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
  372. if err != nil {
  373. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  374. return err
  375. }
  376. var project gorm_model.ProjectInfo
  377. err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectid).Find(&project).Error
  378. if err != nil {
  379. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  380. return err
  381. }
  382. var draft_default gorm_model.InfoAutoTask
  383. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskID).Find(&draft_default).Error
  384. if err != nil {
  385. return err
  386. }
  387. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  388. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  389. if err != nil {
  390. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  391. return err
  392. }
  393. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  394. if err != nil {
  395. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  396. return err
  397. }
  398. return nil
  399. }
  400. // RejectSketch 不同意初稿
  401. func LocalRejectSketch(ctx context.Context, TaskIDs []string, operatorid string, operatetype int, projectid string, Enterpriseid string) error {
  402. var opid string
  403. var optype int
  404. switch operatetype {
  405. case 3:
  406. {
  407. opid = Enterpriseid
  408. optype = 1
  409. }
  410. case 4:
  411. {
  412. opid = operatorid
  413. optype = 2
  414. }
  415. }
  416. db := GetReadDB(ctx)
  417. 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
  418. if err != nil {
  419. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  420. return err
  421. }
  422. var project gorm_model.YounggeeLocalLifeInfo
  423. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", projectid).Find(&project).Error
  424. if err != nil {
  425. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  426. return err
  427. }
  428. var draft_default gorm_model.InfoAutoTask
  429. err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  430. if err != nil {
  431. return err
  432. }
  433. duration := time.Duration(draft_default.DraftDefault) * time.Hour
  434. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{SketchStatus: 3, CurBreakAt: time.Now().Add(duration)}).Error
  435. if err != nil {
  436. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  437. return err
  438. }
  439. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeLocalTaskInfo{TaskStage: 9}).Error
  440. if err != nil {
  441. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeLocalLifeInfo error,err:%+v", err)
  442. return err
  443. }
  444. return nil
  445. }
  446. // FindPhoto
  447. func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
  448. db := GetReadDB(ctx)
  449. var SketchInfo gorm_model.YounggeeSketchInfo
  450. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Find(&SketchInfo).Error
  451. if err != nil {
  452. return nil, err
  453. }
  454. return &SketchInfo, nil
  455. }
  456. func FindAllSketchInfo(ctx context.Context, taskid string) ([]gorm_model.YounggeeSketchInfo, error) {
  457. db := GetReadDB(ctx)
  458. var SketchInfo []gorm_model.YounggeeSketchInfo
  459. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", taskid).Find(&SketchInfo).Error
  460. if err != nil {
  461. return nil, err
  462. }
  463. return SketchInfo, nil
  464. }
  465. // FindPhoto
  466. func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
  467. db := GetReadDB(ctx)
  468. var SketchPhotos []gorm_model.YounggeeSketchPhoto
  469. err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
  470. if err != nil {
  471. return nil, err
  472. }
  473. return SketchPhotos, nil
  474. }
  475. // GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
  476. func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
  477. db := GetReadDB(ctx)
  478. // 查询Task表信息
  479. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  480. // 根据Project条件过滤
  481. conditionType := reflect.TypeOf(conditions).Elem()
  482. conditionValue := reflect.ValueOf(conditions).Elem()
  483. var platform_nickname string = ""
  484. for i := 0; i < conditionType.NumField(); i++ {
  485. field := conditionType.Field(i)
  486. tag := field.Tag.Get("condition")
  487. value := conditionValue.FieldByName(field.Name)
  488. if tag == "sketch_status" {
  489. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  490. if value.Interface() == int64(0) {
  491. db = db.Where("task_stage = 10")
  492. } else {
  493. db = db.Where("task_stage > 10 and task_stage <> 16")
  494. }
  495. continue
  496. } else if !util.IsBlank(value) {
  497. if tag == "platform_nickname" {
  498. platform_nickname = fmt.Sprintf("%v", value.Interface())
  499. continue
  500. } else if tag == "project_id" {
  501. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  502. }
  503. }
  504. }
  505. var taskInfos []gorm_model.YoungeeTaskInfo
  506. db = db.Model(gorm_model.YoungeeTaskInfo{})
  507. // 查询总数
  508. var totalTask int64
  509. if err := db.Count(&totalTask).Error; err != nil {
  510. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  511. return nil, 0, err
  512. }
  513. db.Order("task_id").Find(&taskInfos)
  514. // 查询任务id
  515. var taskIds []string
  516. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  517. for _, taskInfo := range taskInfos {
  518. taskIds = append(taskIds, taskInfo.TaskID)
  519. taskMap[taskInfo.TaskID] = taskInfo
  520. }
  521. db1 := GetReadDB(ctx)
  522. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  523. var SketchInfos []gorm_model.YounggeeSketchInfo
  524. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  525. if conditions.SketchStatus == int64(0) {
  526. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  527. } else {
  528. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  529. }
  530. //fmt.Printf("初稿查询:%+v", SketchInfos)
  531. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  532. for _, SketchInfo := range SketchInfos {
  533. SketchMap[SketchInfo.TaskID] = SketchInfo
  534. }
  535. // 查询总数
  536. var totalSketch int64
  537. if err := db1.Count(&totalSketch).Error; err != nil {
  538. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  539. return nil, 0, err
  540. }
  541. //// 查询该页数据
  542. //limit := pageSize
  543. //offset := pageSize * pageNum // assert pageNum start with 0
  544. //err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  545. //
  546. //if err != nil {
  547. // logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  548. // return nil, 0, err
  549. //}
  550. var TaskSketches []*http_model.SpecialTaskSketch
  551. var taskSketches []*http_model.SpecialTaskSketchInfo
  552. var newTaskSketches []*http_model.SpecialTaskSketchInfo
  553. for _, taskId := range taskIds {
  554. TaskSketch := new(http_model.SpecialTaskSketch)
  555. TaskSketch.Talent = taskMap[taskId]
  556. TaskSketch.Sketch = SketchMap[taskId]
  557. TaskSketches = append(TaskSketches, TaskSketch)
  558. }
  559. taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
  560. for _, v := range taskSketches {
  561. if platform_nickname == "" {
  562. newTaskSketches = append(newTaskSketches, v)
  563. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  564. newTaskSketches = append(newTaskSketches, v)
  565. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  566. newTaskSketches = append(newTaskSketches, v)
  567. } else {
  568. totalTask--
  569. }
  570. }
  571. return newTaskSketches, totalTask, nil
  572. }