default.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "reflect"
  6. "strings"
  7. "youngee_b_api/model/common_model"
  8. "youngee_b_api/model/gorm_model"
  9. "youngee_b_api/model/http_model"
  10. "youngee_b_api/pack"
  11. "youngee_b_api/util"
  12. "github.com/issue9/conv"
  13. "github.com/sirupsen/logrus"
  14. )
  15. func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultReviewInfo, int64, error) {
  16. db := GetReadDB(ctx)
  17. // 查询Task表信息
  18. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  19. // 根据Project条件过滤
  20. conditionType := reflect.TypeOf(conditions).Elem()
  21. conditionValue := reflect.ValueOf(conditions).Elem()
  22. var platform_nickname string = ""
  23. for i := 0; i < conditionType.NumField(); i++ {
  24. field := conditionType.Field(i)
  25. tag := field.Tag.Get("condition")
  26. value := conditionValue.FieldByName(field.Name)
  27. if tag == "default_status" {
  28. fmt.Printf("default %+v", value.Interface() == int64(0))
  29. if value.Interface() == int64(0) {
  30. db = db.Where("cur_default_type = 1")
  31. } else if value.Interface() == int64(1) {
  32. db = db.Where("cur_default_type = 3")
  33. } else if value.Interface() == int64(2) {
  34. db = db.Where("cur_default_type = 5")
  35. }
  36. continue
  37. }
  38. if !util.IsBlank(value) {
  39. logrus.Println("tag: ", tag)
  40. if tag == "platform_nickname" {
  41. platform_nickname = fmt.Sprintf("%v", value.Interface())
  42. continue
  43. } else if tag == "project_id" {
  44. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  45. } else if tag == "strategy_ids" {
  46. strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
  47. var strategyIdList []int
  48. for _, strategyId := range strategyIds {
  49. strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
  50. }
  51. db = db.Where("strategy_id in ?", strategyIdList)
  52. } else {
  53. db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
  54. }
  55. }
  56. }
  57. var taskInfos []gorm_model.YoungeeTaskInfo
  58. db = db.Model(gorm_model.YoungeeTaskInfo{})
  59. // 查询总数
  60. var totalTask int64
  61. if err := db.Count(&totalTask).Error; err != nil {
  62. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  63. return nil, 0, err
  64. }
  65. db.Order("task_id").Find(&taskInfos)
  66. // 查询任务id
  67. var taskIds []int
  68. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  69. for _, taskInfo := range taskInfos {
  70. taskIds = append(taskIds, taskInfo.TaskID)
  71. taskMap[taskInfo.TaskID] = taskInfo
  72. }
  73. db1 := GetReadDB(ctx)
  74. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  75. var DefaultReviewInfos []gorm_model.YoungeeContractInfo
  76. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  77. err := db1.Find(&DefaultReviewInfos).Error
  78. if err != nil {
  79. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  80. return nil, 0, err
  81. }
  82. DefaultReviewMap := make(map[int]gorm_model.YoungeeContractInfo)
  83. for _, DefaultReviewInfo := range DefaultReviewInfos {
  84. DefaultReviewMap[conv.MustInt(DefaultReviewInfo.TaskID)] = DefaultReviewInfo
  85. }
  86. // 查询总数
  87. var totalDefaultReview int64
  88. if err := db1.Count(&totalDefaultReview).Error; err != nil {
  89. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  90. return nil, 0, err
  91. }
  92. var misNum int64
  93. if totalDefaultReview > totalTask {
  94. misNum = totalDefaultReview - totalTask
  95. } else {
  96. misNum = totalTask - totalDefaultReview
  97. }
  98. logrus.Println("totalDefaultReview,totalTalent,misNum:", totalDefaultReview, totalTask, misNum)
  99. // 查询该页数据
  100. limit := pageSize + misNum
  101. offset := pageSize * pageNum // assert pageNum start with 0
  102. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  103. if err != nil {
  104. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  105. return nil, 0, err
  106. }
  107. var TaskDefaultReviews []*http_model.TaskDefaultReview
  108. var taskDefaultReviews []*http_model.TaskDefaultReviewInfo
  109. var newTaskDefaultReviews []*http_model.TaskDefaultReviewInfo
  110. for _, taskId := range taskIds {
  111. TaskDefaultReview := new(http_model.TaskDefaultReview)
  112. TaskDefaultReview.Talent = taskMap[taskId]
  113. TaskDefaultReview.Default = DefaultReviewMap[taskId]
  114. TaskDefaultReviews = append(TaskDefaultReviews, TaskDefaultReview)
  115. }
  116. taskDefaultReviews = pack.TaskDefaultReviewToTaskInfo(TaskDefaultReviews)
  117. for _, v := range taskDefaultReviews {
  118. if platform_nickname == "" {
  119. newTaskDefaultReviews = append(newTaskDefaultReviews, v)
  120. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  121. newTaskDefaultReviews = append(newTaskDefaultReviews, v)
  122. } else {
  123. totalTask--
  124. }
  125. }
  126. return newTaskDefaultReviews, totalTask, nil
  127. }
  128. func GetTaskDefaultDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultDataInfo, int64, error) {
  129. db := GetReadDB(ctx)
  130. // 查询Task表信息
  131. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  132. // 根据Project条件过滤
  133. conditionType := reflect.TypeOf(conditions).Elem()
  134. conditionValue := reflect.ValueOf(conditions).Elem()
  135. var platform_nickname string = ""
  136. for i := 0; i < conditionType.NumField(); i++ {
  137. field := conditionType.Field(i)
  138. tag := field.Tag.Get("condition")
  139. value := conditionValue.FieldByName(field.Name)
  140. if tag == "default_status" {
  141. if value.Interface() == int64(3) {
  142. db = db.Where("cur_default_type = 7")
  143. }
  144. continue
  145. } else if !util.IsBlank(value) {
  146. if tag == "platform_nickname" {
  147. platform_nickname = fmt.Sprintf("%v", value.Interface())
  148. continue
  149. } else if tag == "project_id" || tag == "strategy_id" {
  150. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  151. }
  152. }
  153. }
  154. var taskInfos []gorm_model.YoungeeTaskInfo
  155. db = db.Model(gorm_model.YoungeeTaskInfo{})
  156. // 查询总数
  157. var totalTask int64
  158. if err := db.Count(&totalTask).Error; err != nil {
  159. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  160. return nil, 0, err
  161. }
  162. db.Order("task_id").Find(&taskInfos)
  163. // 查询任务id
  164. var taskIds []int
  165. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  166. for _, taskInfo := range taskInfos {
  167. taskIds = append(taskIds, taskInfo.TaskID)
  168. taskMap[taskInfo.TaskID] = taskInfo
  169. }
  170. db1 := GetReadDB(ctx)
  171. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  172. var DefaultDataInfos []gorm_model.YoungeeContractInfo
  173. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  174. err := db1.Find(&DefaultDataInfos).Error
  175. DefaultDataMap := make(map[int]gorm_model.YoungeeContractInfo)
  176. for _, DefaultDataInfo := range DefaultDataInfos {
  177. DefaultDataMap[conv.MustInt(DefaultDataInfo.TaskID)] = DefaultDataInfo
  178. }
  179. var LinkInfos []gorm_model.YounggeeLinkInfo
  180. db2 := GetReadDB(ctx)
  181. db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
  182. LinkMap := make(map[int]gorm_model.YounggeeLinkInfo)
  183. for _, LinkInfo := range LinkInfos {
  184. LinkMap[conv.MustInt(LinkInfo.TaskID)] = LinkInfo
  185. }
  186. // 查询总数
  187. var totalDefaultData int64
  188. if err := db2.Count(&totalDefaultData).Error; err != nil {
  189. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  190. return nil, 0, err
  191. }
  192. var misNum int64
  193. if totalDefaultData > totalTask {
  194. misNum = totalDefaultData - totalTask
  195. } else {
  196. misNum = totalTask - totalDefaultData
  197. }
  198. logrus.Println("totalDefaultData,totalTalent,misNum:", totalDefaultData, totalTask, misNum)
  199. // 查询该页数据
  200. limit := pageSize + misNum
  201. offset := pageSize * pageNum // assert pageNum start with 0
  202. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  203. if err != nil {
  204. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  205. return nil, 0, err
  206. }
  207. var TaskDefaultDatas []*http_model.TaskDefaultData
  208. var taskDefaultDatas []*http_model.TaskDefaultDataInfo
  209. var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
  210. for _, taskId := range taskIds {
  211. TaskDefaultData := new(http_model.TaskDefaultData)
  212. TaskDefaultData.Talent = taskMap[taskId]
  213. TaskDefaultData.Default = DefaultDataMap[taskId]
  214. TaskDefaultData.Link = LinkMap[taskId]
  215. TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
  216. }
  217. taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
  218. for _, v := range taskDefaultDatas {
  219. if platform_nickname == "" {
  220. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  221. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  222. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  223. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  224. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  225. } else {
  226. totalTask--
  227. }
  228. }
  229. return newTaskDefaultDatas, totalTask, nil
  230. }
  231. func GetTaskTerminatingList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatingInfo, int64, error) {
  232. db := GetReadDB(ctx)
  233. var taskIds1 []int
  234. var totalTerminating int64
  235. var TerminatingInfos []gorm_model.YoungeeContractInfo
  236. db = db.Model(gorm_model.YoungeeContractInfo{})
  237. err := db.Where("default_status = 3").Find(&TerminatingInfos).Error
  238. if err != nil {
  239. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  240. return nil, 0, err
  241. }
  242. TerminatingMap := make(map[int]gorm_model.YoungeeContractInfo)
  243. for _, TerminatingInfo := range TerminatingInfos {
  244. taskIds1 = append(taskIds1, TerminatingInfo.TaskID)
  245. TerminatingMap[conv.MustInt(TerminatingInfo.TaskID)] = TerminatingInfo
  246. }
  247. if err := db.Count(&totalTerminating).Error; err != nil {
  248. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  249. return nil, 0, err
  250. }
  251. db1 := GetReadDB(ctx)
  252. // 查询Task表信息
  253. db1 = db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_id in ?", taskIds1)
  254. // 根据Project条件过滤
  255. conditionType := reflect.TypeOf(conditions).Elem()
  256. conditionValue := reflect.ValueOf(conditions).Elem()
  257. var platform_nickname string = ""
  258. for i := 0; i < conditionType.NumField(); i++ {
  259. field := conditionType.Field(i)
  260. tag := field.Tag.Get("condition")
  261. value := conditionValue.FieldByName(field.Name)
  262. if tag == "default_status" {
  263. if value.Interface() == int64(4) {
  264. db = db.Where("cur_default_type = 9")
  265. }
  266. continue
  267. } else if !util.IsBlank(value) {
  268. if tag == "platform_nickname" {
  269. platform_nickname = fmt.Sprintf("%v", value.Interface())
  270. continue
  271. } else if tag == "project_id" || tag == "strategy_id" {
  272. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  273. }
  274. }
  275. }
  276. var taskInfos []gorm_model.YoungeeTaskInfo
  277. // db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
  278. // 查询总数
  279. var totalTask int64
  280. if err := db1.Count(&totalTask).Error; err != nil {
  281. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  282. return nil, 0, err
  283. }
  284. db1.Order("task_id").Find(&taskInfos)
  285. // 查询任务id
  286. var taskIds []int
  287. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  288. for _, taskInfo := range taskInfos {
  289. taskIds = append(taskIds, taskInfo.TaskID)
  290. taskMap[taskInfo.TaskID] = taskInfo
  291. }
  292. var misNum int64
  293. if totalTerminating > totalTask {
  294. misNum = totalTerminating - totalTask
  295. } else {
  296. misNum = totalTask - totalTerminating
  297. }
  298. logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
  299. // 查询该页数据
  300. limit := pageSize + misNum
  301. offset := pageSize * pageNum // assert pageNum start with 0
  302. err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  303. if err != nil {
  304. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  305. return nil, 0, err
  306. }
  307. var TaskTerminatings []*http_model.TaskTerminating
  308. var taskTerminatings []*http_model.TaskTerminatingInfo
  309. var newTaskTerminatings []*http_model.TaskTerminatingInfo
  310. for _, taskId := range taskIds {
  311. TaskTerminating := new(http_model.TaskTerminating)
  312. TaskTerminating.Talent = taskMap[taskId]
  313. TaskTerminating.Default = TerminatingMap[taskId]
  314. TaskTerminatings = append(TaskTerminatings, TaskTerminating)
  315. }
  316. taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
  317. for _, v := range taskTerminatings {
  318. if platform_nickname == "" {
  319. newTaskTerminatings = append(newTaskTerminatings, v)
  320. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  321. newTaskTerminatings = append(newTaskTerminatings, v)
  322. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  323. newTaskTerminatings = append(newTaskTerminatings, v)
  324. } else {
  325. totalTask--
  326. }
  327. }
  328. return newTaskTerminatings, totalTask, nil
  329. }
  330. func GetTaskTerminatedList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatedInfo, int64, error) {
  331. db := GetReadDB(ctx)
  332. // 查询Task表信息
  333. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  334. // 根据Project条件过滤
  335. conditionType := reflect.TypeOf(conditions).Elem()
  336. conditionValue := reflect.ValueOf(conditions).Elem()
  337. var platform_nickname string = ""
  338. for i := 0; i < conditionType.NumField(); i++ {
  339. field := conditionType.Field(i)
  340. tag := field.Tag.Get("condition")
  341. value := conditionValue.FieldByName(field.Name)
  342. if tag == "default_status" {
  343. fmt.Printf("default %+v", value.Interface() == int64(0))
  344. if value.Interface() == int64(5) {
  345. db = db.Where("complete_status = 4")
  346. }
  347. continue
  348. } else if !util.IsBlank(value) {
  349. if tag == "platform_nickname" {
  350. platform_nickname = fmt.Sprintf("%v", value.Interface())
  351. continue
  352. } else if tag == "project_id" || tag == "strategy_id" {
  353. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  354. }
  355. }
  356. }
  357. var taskInfos []gorm_model.YoungeeTaskInfo
  358. db = db.Model(gorm_model.YoungeeTaskInfo{})
  359. // 查询总数
  360. var totalTask int64
  361. if err := db.Count(&totalTask).Error; err != nil {
  362. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  363. return nil, 0, err
  364. }
  365. db.Order("task_id").Find(&taskInfos)
  366. // 查询任务id
  367. var taskIds []int
  368. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  369. for _, taskInfo := range taskInfos {
  370. taskIds = append(taskIds, taskInfo.TaskID)
  371. taskMap[taskInfo.TaskID] = taskInfo
  372. }
  373. db1 := GetReadDB(ctx)
  374. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  375. var TerminatedInfos []gorm_model.YoungeeContractInfo
  376. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  377. err := db1.Find(&TerminatedInfos).Error
  378. if err != nil {
  379. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  380. return nil, 0, err
  381. }
  382. TerminatedMap := make(map[int]gorm_model.YoungeeContractInfo)
  383. for _, TerminatedInfo := range TerminatedInfos {
  384. TerminatedMap[conv.MustInt(TerminatedInfo.TaskID)] = TerminatedInfo
  385. }
  386. // 查询总数
  387. var totalTerminated int64
  388. if err := db1.Count(&totalTerminated).Error; err != nil {
  389. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  390. return nil, 0, err
  391. }
  392. var misNum int64
  393. if totalTerminated > totalTask {
  394. misNum = totalTerminated - totalTask
  395. } else {
  396. misNum = totalTask - totalTerminated
  397. }
  398. logrus.Println("totalTerminated,totalTalent,misNum:", totalTerminated, totalTask, misNum)
  399. // 查询该页数据
  400. limit := pageSize + misNum
  401. offset := pageSize * pageNum // assert pageNum start with 0
  402. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  403. if err != nil {
  404. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  405. return nil, 0, err
  406. }
  407. var TaskTerminateds []*http_model.TaskTerminated
  408. var taskTerminateds []*http_model.TaskTerminatedInfo
  409. var newTaskTerminateds []*http_model.TaskTerminatedInfo
  410. for _, taskId := range taskIds {
  411. TaskTerminated := new(http_model.TaskTerminated)
  412. TaskTerminated.Talent = taskMap[taskId]
  413. TaskTerminated.Default = TerminatedMap[taskId]
  414. TaskTerminateds = append(TaskTerminateds, TaskTerminated)
  415. }
  416. taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
  417. for _, v := range taskTerminateds {
  418. if platform_nickname == "" {
  419. newTaskTerminateds = append(newTaskTerminateds, v)
  420. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  421. newTaskTerminateds = append(newTaskTerminateds, v)
  422. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  423. newTaskTerminateds = append(newTaskTerminateds, v)
  424. } else {
  425. totalTask--
  426. }
  427. }
  428. return newTaskTerminateds, totalTask, nil
  429. }