sketch.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "reflect"
  6. "strings"
  7. "time"
  8. "youngee_b_api/model/common_model"
  9. "youngee_b_api/model/gorm_model"
  10. "youngee_b_api/model/http_model"
  11. "youngee_b_api/pack"
  12. "youngee_b_api/util"
  13. "github.com/issue9/conv"
  14. "github.com/sirupsen/logrus"
  15. )
  16. // GetTaskSketchList 查询上传初稿的task list
  17. func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
  18. db := GetReadDB(ctx)
  19. // 查询Task表信息
  20. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  21. // 根据Project条件过滤
  22. conditionType := reflect.TypeOf(conditions).Elem()
  23. conditionValue := reflect.ValueOf(conditions).Elem()
  24. var platform_nickname string = ""
  25. for i := 0; i < conditionType.NumField(); i++ {
  26. field := conditionType.Field(i)
  27. tag := field.Tag.Get("condition")
  28. value := conditionValue.FieldByName(field.Name)
  29. if tag == "sketch_status" {
  30. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  31. if value.Interface() == int64(0) {
  32. db = db.Where("task_stage = 10")
  33. } else {
  34. db = db.Where("task_stage > 10 and task_stage <> 16")
  35. }
  36. continue
  37. } else if !util.IsBlank(value) {
  38. if tag == "platform_nickname" {
  39. platform_nickname = fmt.Sprintf("%v", value.Interface())
  40. continue
  41. } else if tag == "project_id" || tag == "strategy_id" {
  42. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  43. }
  44. }
  45. }
  46. var taskInfos []gorm_model.YoungeeTaskInfo
  47. db = db.Model(gorm_model.YoungeeTaskInfo{})
  48. // 查询总数
  49. var totalTask int64
  50. if err := db.Count(&totalTask).Error; err != nil {
  51. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  52. return nil, 0, err
  53. }
  54. db.Order("task_id").Find(&taskInfos)
  55. // 查询任务id
  56. var taskIds []string
  57. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  58. for _, taskInfo := range taskInfos {
  59. taskIds = append(taskIds, taskInfo.TaskID)
  60. taskMap[taskInfo.TaskID] = taskInfo
  61. }
  62. db1 := GetReadDB(ctx)
  63. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  64. var SketchInfos []gorm_model.YounggeeSketchInfo
  65. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  66. if conditions.SketchStatus == int64(0) {
  67. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  68. } else {
  69. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  70. }
  71. fmt.Printf("初稿查询:%+v", SketchInfos)
  72. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  73. for _, SketchInfo := range SketchInfos {
  74. SketchMap[SketchInfo.TaskID] = SketchInfo
  75. }
  76. // 查询总数
  77. var totalSketch int64
  78. if err := db1.Count(&totalSketch).Error; err != nil {
  79. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  80. return nil, 0, err
  81. }
  82. var misNum int64
  83. if totalSketch > totalTask {
  84. misNum = totalSketch - totalTask
  85. } else {
  86. misNum = totalTask - totalSketch
  87. }
  88. logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
  89. // 查询该页数据
  90. limit := pageSize + misNum
  91. offset := pageSize * pageNum // assert pageNum start with 0
  92. //fmt.Printf("limit %+v offset %+v \n", limit, offset)
  93. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  94. if err != nil {
  95. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  96. return nil, 0, err
  97. }
  98. var TaskSketches []*http_model.TaskSketch
  99. var taskSketches []*http_model.TaskSketchInfo
  100. var newTaskSketches []*http_model.TaskSketchInfo
  101. for _, taskId := range taskIds {
  102. TaskSketch := new(http_model.TaskSketch)
  103. TaskSketch.Talent = taskMap[taskId]
  104. TaskSketch.Sketch = SketchMap[taskId]
  105. TaskSketches = append(TaskSketches, TaskSketch)
  106. }
  107. taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
  108. for _, v := range taskSketches {
  109. if platform_nickname == "" {
  110. newTaskSketches = append(newTaskSketches, v)
  111. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  112. newTaskSketches = append(newTaskSketches, v)
  113. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  114. newTaskSketches = append(newTaskSketches, v)
  115. } else {
  116. totalTask--
  117. }
  118. }
  119. return newTaskSketches, totalTask, nil
  120. }
  121. // SketchOption 提交意见
  122. func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) error {
  123. db := GetReadDB(ctx)
  124. fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
  125. 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}).Error
  126. if err != nil {
  127. logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
  128. return err
  129. }
  130. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
  131. if err != nil {
  132. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  133. return err
  134. }
  135. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
  136. if err != nil {
  137. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  138. return err
  139. }
  140. return nil
  141. }
  142. // AcceptSketch 同意初稿
  143. func AcceptSketch(ctx context.Context, TaskIDs []string) error {
  144. db := GetReadDB(ctx)
  145. 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()}).Error
  146. if err != nil {
  147. logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
  148. return err
  149. }
  150. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5}).Error
  151. if err != nil {
  152. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  153. return err
  154. }
  155. err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
  156. if err != nil {
  157. logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
  158. return err
  159. }
  160. return nil
  161. }
  162. // FindPhoto
  163. func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
  164. db := GetReadDB(ctx)
  165. var SketchInfo gorm_model.YounggeeSketchInfo
  166. err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_ok = 1", TaskID).Find(&SketchInfo).Error
  167. if err != nil {
  168. return nil, err
  169. }
  170. return &SketchInfo, nil
  171. }
  172. // FindPhoto
  173. func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
  174. db := GetReadDB(ctx)
  175. var SketchPhotos []gorm_model.YounggeeSketchPhoto
  176. err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
  177. if err != nil {
  178. return nil, err
  179. }
  180. return SketchPhotos, nil
  181. }
  182. // GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
  183. func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
  184. db := GetReadDB(ctx)
  185. // 查询Task表信息
  186. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  187. // 根据Project条件过滤
  188. conditionType := reflect.TypeOf(conditions).Elem()
  189. conditionValue := reflect.ValueOf(conditions).Elem()
  190. var platform_nickname string = ""
  191. for i := 0; i < conditionType.NumField(); i++ {
  192. field := conditionType.Field(i)
  193. tag := field.Tag.Get("condition")
  194. value := conditionValue.FieldByName(field.Name)
  195. if tag == "sketch_status" {
  196. fmt.Printf("sketch %+v", value.Interface() == int64(0))
  197. if value.Interface() == int64(0) {
  198. db = db.Where("task_stage = 10")
  199. } else {
  200. db = db.Where("task_stage > 10 and task_stage <> 16")
  201. }
  202. continue
  203. } else if !util.IsBlank(value) {
  204. if tag == "platform_nickname" {
  205. platform_nickname = fmt.Sprintf("%v", value.Interface())
  206. continue
  207. } else if tag == "project_id" {
  208. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  209. }
  210. }
  211. }
  212. var taskInfos []gorm_model.YoungeeTaskInfo
  213. db = db.Model(gorm_model.YoungeeTaskInfo{})
  214. // 查询总数
  215. var totalTask int64
  216. if err := db.Count(&totalTask).Error; err != nil {
  217. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  218. return nil, 0, err
  219. }
  220. db.Order("task_id").Find(&taskInfos)
  221. // 查询任务id
  222. var taskIds []string
  223. taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
  224. for _, taskInfo := range taskInfos {
  225. taskIds = append(taskIds, taskInfo.TaskID)
  226. taskMap[taskInfo.TaskID] = taskInfo
  227. }
  228. db1 := GetReadDB(ctx)
  229. db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
  230. var SketchInfos []gorm_model.YounggeeSketchInfo
  231. db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
  232. if conditions.SketchStatus == int64(0) {
  233. db1 = db1.Where("is_review = 0").Find(&SketchInfos)
  234. } else {
  235. db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
  236. }
  237. //fmt.Printf("初稿查询:%+v", SketchInfos)
  238. SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
  239. for _, SketchInfo := range SketchInfos {
  240. SketchMap[SketchInfo.TaskID] = SketchInfo
  241. }
  242. // 查询总数
  243. var totalSketch int64
  244. if err := db1.Count(&totalSketch).Error; err != nil {
  245. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  246. return nil, 0, err
  247. }
  248. //// 查询该页数据
  249. //limit := pageSize
  250. //offset := pageSize * pageNum // assert pageNum start with 0
  251. //err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  252. //
  253. //if err != nil {
  254. // logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  255. // return nil, 0, err
  256. //}
  257. var TaskSketches []*http_model.SpecialTaskSketch
  258. var taskSketches []*http_model.SpecialTaskSketchInfo
  259. var newTaskSketches []*http_model.SpecialTaskSketchInfo
  260. for _, taskId := range taskIds {
  261. TaskSketch := new(http_model.SpecialTaskSketch)
  262. TaskSketch.Talent = taskMap[taskId]
  263. TaskSketch.Sketch = SketchMap[taskId]
  264. TaskSketches = append(TaskSketches, TaskSketch)
  265. }
  266. taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
  267. for _, v := range taskSketches {
  268. if platform_nickname == "" {
  269. newTaskSketches = append(newTaskSketches, v)
  270. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  271. newTaskSketches = append(newTaskSketches, v)
  272. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  273. newTaskSketches = append(newTaskSketches, v)
  274. } else {
  275. totalTask--
  276. }
  277. }
  278. return newTaskSketches, totalTask, nil
  279. }