default.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  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. logrus.Println("tag: ", tag)
  147. if tag == "platform_nickname" {
  148. platform_nickname = fmt.Sprintf("%v", value.Interface())
  149. continue
  150. } else if tag == "project_id" {
  151. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  152. } else if tag == "strategy_ids" {
  153. strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
  154. var strategyIdList []int
  155. for _, strategyId := range strategyIds {
  156. strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
  157. }
  158. db = db.Where("strategy_id in ?", strategyIdList)
  159. }
  160. }
  161. }
  162. var taskInfos []gorm_model.YoungeeTaskInfo
  163. db = db.Model(gorm_model.YoungeeTaskInfo{})
  164. // 查询总数
  165. var totalTask int64
  166. if err := db.Count(&totalTask).Error; err != nil {
  167. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  168. return nil, 0, err
  169. }
  170. db.Order("task_id").Find(&taskInfos)
  171. // 查询任务id
  172. var taskIds []int
  173. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  174. for _, taskInfo := range taskInfos {
  175. taskIds = append(taskIds, taskInfo.TaskID)
  176. taskMap[taskInfo.TaskID] = taskInfo
  177. }
  178. db1 := GetReadDB(ctx)
  179. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  180. var DefaultDataInfos []gorm_model.YoungeeContractInfo
  181. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  182. err := db1.Find(&DefaultDataInfos).Error
  183. DefaultDataMap := make(map[int]gorm_model.YoungeeContractInfo)
  184. for _, DefaultDataInfo := range DefaultDataInfos {
  185. DefaultDataMap[conv.MustInt(DefaultDataInfo.TaskID)] = DefaultDataInfo
  186. }
  187. var LinkInfos []gorm_model.YounggeeLinkInfo
  188. db2 := GetReadDB(ctx)
  189. db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
  190. LinkMap := make(map[int]gorm_model.YounggeeLinkInfo)
  191. for _, LinkInfo := range LinkInfos {
  192. LinkMap[conv.MustInt(LinkInfo.TaskID)] = LinkInfo
  193. }
  194. // 查询总数
  195. var totalDefaultData int64
  196. if err := db2.Count(&totalDefaultData).Error; err != nil {
  197. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  198. return nil, 0, err
  199. }
  200. var misNum int64
  201. if totalDefaultData > totalTask {
  202. misNum = totalDefaultData - totalTask
  203. } else {
  204. misNum = totalTask - totalDefaultData
  205. }
  206. logrus.Println("totalDefaultData,totalTalent,misNum:", totalDefaultData, totalTask, misNum)
  207. // 查询该页数据
  208. limit := pageSize + misNum
  209. offset := pageSize * pageNum // assert pageNum start with 0
  210. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  211. if err != nil {
  212. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  213. return nil, 0, err
  214. }
  215. var TaskDefaultDatas []*http_model.TaskDefaultData
  216. var taskDefaultDatas []*http_model.TaskDefaultDataInfo
  217. var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
  218. for _, taskId := range taskIds {
  219. TaskDefaultData := new(http_model.TaskDefaultData)
  220. TaskDefaultData.Talent = taskMap[taskId]
  221. TaskDefaultData.Default = DefaultDataMap[taskId]
  222. TaskDefaultData.Link = LinkMap[taskId]
  223. TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
  224. }
  225. taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
  226. for _, v := range taskDefaultDatas {
  227. if platform_nickname == "" {
  228. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  229. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  230. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  231. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  232. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  233. } else {
  234. totalTask--
  235. }
  236. }
  237. return newTaskDefaultDatas, totalTask, nil
  238. }
  239. func GetTaskTerminatingList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatingInfo, int64, error) {
  240. db := GetReadDB(ctx)
  241. var taskIds1 []int
  242. var totalTerminating int64
  243. var TerminatingInfos []gorm_model.YoungeeContractInfo
  244. db = db.Model(gorm_model.YoungeeContractInfo{})
  245. err := db.Where("default_status = 3").Find(&TerminatingInfos).Error
  246. if err != nil {
  247. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  248. return nil, 0, err
  249. }
  250. TerminatingMap := make(map[int]gorm_model.YoungeeContractInfo)
  251. for _, TerminatingInfo := range TerminatingInfos {
  252. taskIds1 = append(taskIds1, TerminatingInfo.TaskID)
  253. TerminatingMap[conv.MustInt(TerminatingInfo.TaskID)] = TerminatingInfo
  254. }
  255. if err := db.Count(&totalTerminating).Error; err != nil {
  256. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  257. return nil, 0, err
  258. }
  259. db1 := GetReadDB(ctx)
  260. // 查询Task表信息
  261. db1 = db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_id in ?", taskIds1)
  262. // 根据Project条件过滤
  263. conditionType := reflect.TypeOf(conditions).Elem()
  264. conditionValue := reflect.ValueOf(conditions).Elem()
  265. var platform_nickname string = ""
  266. for i := 0; i < conditionType.NumField(); i++ {
  267. field := conditionType.Field(i)
  268. tag := field.Tag.Get("condition")
  269. value := conditionValue.FieldByName(field.Name)
  270. if tag == "default_status" {
  271. if value.Interface() == int64(4) {
  272. db = db.Where("cur_default_type = 9")
  273. }
  274. continue
  275. } else if !util.IsBlank(value) {
  276. logrus.Println("tag: ", tag)
  277. if tag == "platform_nickname" {
  278. platform_nickname = fmt.Sprintf("%v", value.Interface())
  279. continue
  280. } else if tag == "project_id" {
  281. db1 = db1.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  282. } else if tag == "strategy_ids" {
  283. strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
  284. var strategyIdList []int
  285. for _, strategyId := range strategyIds {
  286. strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
  287. }
  288. db1 = db1.Where("strategy_id in ?", strategyIdList)
  289. }
  290. }
  291. }
  292. var taskInfos []gorm_model.YoungeeTaskInfo
  293. // db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
  294. // 查询总数
  295. var totalTask int64
  296. if err := db1.Count(&totalTask).Error; err != nil {
  297. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  298. return nil, 0, err
  299. }
  300. db1.Order("task_id").Find(&taskInfos)
  301. // 查询任务id
  302. var taskIds []int
  303. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  304. for _, taskInfo := range taskInfos {
  305. taskIds = append(taskIds, taskInfo.TaskID)
  306. taskMap[taskInfo.TaskID] = taskInfo
  307. }
  308. var misNum int64
  309. if totalTerminating > totalTask {
  310. misNum = totalTerminating - totalTask
  311. } else {
  312. misNum = totalTask - totalTerminating
  313. }
  314. logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
  315. // 查询该页数据
  316. limit := pageSize + misNum
  317. offset := pageSize * pageNum // assert pageNum start with 0
  318. err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  319. if err != nil {
  320. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  321. return nil, 0, err
  322. }
  323. var TaskTerminatings []*http_model.TaskTerminating
  324. var taskTerminatings []*http_model.TaskTerminatingInfo
  325. var newTaskTerminatings []*http_model.TaskTerminatingInfo
  326. for _, taskId := range taskIds {
  327. TaskTerminating := new(http_model.TaskTerminating)
  328. TaskTerminating.Talent = taskMap[taskId]
  329. TaskTerminating.Default = TerminatingMap[taskId]
  330. TaskTerminatings = append(TaskTerminatings, TaskTerminating)
  331. }
  332. taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
  333. for _, v := range taskTerminatings {
  334. if platform_nickname == "" {
  335. newTaskTerminatings = append(newTaskTerminatings, v)
  336. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  337. newTaskTerminatings = append(newTaskTerminatings, v)
  338. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  339. newTaskTerminatings = append(newTaskTerminatings, v)
  340. } else {
  341. totalTask--
  342. }
  343. }
  344. return newTaskTerminatings, totalTask, nil
  345. }
  346. func GetTaskTerminatedList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatedInfo, int64, error) {
  347. db := GetReadDB(ctx)
  348. // 查询Task表信息
  349. db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
  350. // 根据Project条件过滤
  351. conditionType := reflect.TypeOf(conditions).Elem()
  352. conditionValue := reflect.ValueOf(conditions).Elem()
  353. var platform_nickname string = ""
  354. for i := 0; i < conditionType.NumField(); i++ {
  355. field := conditionType.Field(i)
  356. tag := field.Tag.Get("condition")
  357. value := conditionValue.FieldByName(field.Name)
  358. if tag == "default_status" {
  359. fmt.Printf("default %+v", value.Interface() == int64(0))
  360. if value.Interface() == int64(5) {
  361. db = db.Where("complete_status = 4")
  362. }
  363. continue
  364. } else if !util.IsBlank(value) {
  365. logrus.Println("tag: ", tag)
  366. if tag == "platform_nickname" {
  367. platform_nickname = fmt.Sprintf("%v", value.Interface())
  368. continue
  369. } else if tag == "project_id" {
  370. db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
  371. } else if tag == "strategy_ids" {
  372. strategyIds := strings.Split(fmt.Sprintf("%v", value.Interface()), ",")
  373. var strategyIdList []int
  374. for _, strategyId := range strategyIds {
  375. strategyIdList = append(strategyIdList, conv.MustInt(strategyId))
  376. }
  377. db = db.Where("strategy_id in ?", strategyIdList)
  378. }
  379. }
  380. }
  381. var taskInfos []gorm_model.YoungeeTaskInfo
  382. db = db.Model(gorm_model.YoungeeTaskInfo{})
  383. // 查询总数
  384. var totalTask int64
  385. if err := db.Count(&totalTask).Error; err != nil {
  386. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  387. return nil, 0, err
  388. }
  389. db.Order("task_id").Find(&taskInfos)
  390. // 查询任务id
  391. var taskIds []int
  392. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  393. for _, taskInfo := range taskInfos {
  394. taskIds = append(taskIds, taskInfo.TaskID)
  395. taskMap[taskInfo.TaskID] = taskInfo
  396. }
  397. db1 := GetReadDB(ctx)
  398. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  399. var TerminatedInfos []gorm_model.YoungeeContractInfo
  400. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  401. err := db1.Find(&TerminatedInfos).Error
  402. if err != nil {
  403. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  404. return nil, 0, err
  405. }
  406. TerminatedMap := make(map[int]gorm_model.YoungeeContractInfo)
  407. for _, TerminatedInfo := range TerminatedInfos {
  408. TerminatedMap[conv.MustInt(TerminatedInfo.TaskID)] = TerminatedInfo
  409. }
  410. // 查询总数
  411. var totalTerminated int64
  412. if err := db1.Count(&totalTerminated).Error; err != nil {
  413. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  414. return nil, 0, err
  415. }
  416. var misNum int64
  417. if totalTerminated > totalTask {
  418. misNum = totalTerminated - totalTask
  419. } else {
  420. misNum = totalTask - totalTerminated
  421. }
  422. logrus.Println("totalTerminated,totalTalent,misNum:", totalTerminated, totalTask, misNum)
  423. // 查询该页数据
  424. limit := pageSize + misNum
  425. offset := pageSize * pageNum // assert pageNum start with 0
  426. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  427. if err != nil {
  428. logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
  429. return nil, 0, err
  430. }
  431. var TaskTerminateds []*http_model.TaskTerminated
  432. var taskTerminateds []*http_model.TaskTerminatedInfo
  433. var newTaskTerminateds []*http_model.TaskTerminatedInfo
  434. for _, taskId := range taskIds {
  435. TaskTerminated := new(http_model.TaskTerminated)
  436. TaskTerminated.Talent = taskMap[taskId]
  437. TaskTerminated.Default = TerminatedMap[taskId]
  438. TaskTerminateds = append(TaskTerminateds, TaskTerminated)
  439. }
  440. taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
  441. for _, v := range taskTerminateds {
  442. if platform_nickname == "" {
  443. newTaskTerminateds = append(newTaskTerminateds, v)
  444. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  445. newTaskTerminateds = append(newTaskTerminateds, v)
  446. } else if strings.Contains(conv.MustString(v.TaskID), platform_nickname) {
  447. newTaskTerminateds = append(newTaskTerminateds, v)
  448. } else {
  449. totalTask--
  450. }
  451. }
  452. return newTaskTerminateds, totalTask, nil
  453. }