default.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  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. } else {
  160. db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
  161. }
  162. }
  163. }
  164. var taskInfos []gorm_model.YoungeeTaskInfo
  165. db = db.Model(gorm_model.YoungeeTaskInfo{})
  166. // 查询总数
  167. var totalTask int64
  168. if err := db.Count(&totalTask).Error; err != nil {
  169. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  170. return nil, 0, err
  171. }
  172. db.Order("task_id").Find(&taskInfos)
  173. // 查询任务id
  174. var taskIds []int
  175. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  176. for _, taskInfo := range taskInfos {
  177. taskIds = append(taskIds, taskInfo.TaskID)
  178. taskMap[taskInfo.TaskID] = taskInfo
  179. }
  180. db1 := GetReadDB(ctx)
  181. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  182. var DefaultDataInfos []gorm_model.YoungeeContractInfo
  183. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  184. err := db1.Find(&DefaultDataInfos).Error
  185. DefaultDataMap := make(map[int]gorm_model.YoungeeContractInfo)
  186. for _, DefaultDataInfo := range DefaultDataInfos {
  187. DefaultDataMap[conv.MustInt(DefaultDataInfo.TaskID)] = DefaultDataInfo
  188. }
  189. var LinkInfos []gorm_model.YounggeeLinkInfo
  190. db2 := GetReadDB(ctx)
  191. db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
  192. LinkMap := make(map[int]gorm_model.YounggeeLinkInfo)
  193. for _, LinkInfo := range LinkInfos {
  194. LinkMap[conv.MustInt(LinkInfo.TaskID)] = LinkInfo
  195. }
  196. // 查询总数
  197. var totalDefaultData int64
  198. if err := db2.Count(&totalDefaultData).Error; err != nil {
  199. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  200. return nil, 0, err
  201. }
  202. var misNum int64
  203. if totalDefaultData > totalTask {
  204. misNum = totalDefaultData - totalTask
  205. } else {
  206. misNum = totalTask - totalDefaultData
  207. }
  208. logrus.Println("totalDefaultData,totalTalent,misNum:", totalDefaultData, totalTask, misNum)
  209. // 查询该页数据
  210. limit := pageSize + misNum
  211. offset := pageSize * pageNum // assert pageNum start with 0
  212. err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  213. if err != nil {
  214. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  215. return nil, 0, err
  216. }
  217. var TaskDefaultDatas []*http_model.TaskDefaultData
  218. var taskDefaultDatas []*http_model.TaskDefaultDataInfo
  219. var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
  220. for _, taskId := range taskIds {
  221. TaskDefaultData := new(http_model.TaskDefaultData)
  222. TaskDefaultData.Talent = taskMap[taskId]
  223. TaskDefaultData.Default = DefaultDataMap[taskId]
  224. TaskDefaultData.Link = LinkMap[taskId]
  225. TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
  226. }
  227. taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
  228. for _, v := range taskDefaultDatas {
  229. if platform_nickname == "" {
  230. newTaskDefaultDatas = append(newTaskDefaultDatas, v)
  231. } else if strings.Contains(v.PlatformNickname, 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. } else {
  290. db1 = db1.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
  291. }
  292. }
  293. }
  294. var taskInfos []gorm_model.YoungeeTaskInfo
  295. // db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
  296. // 查询总数
  297. var totalTask int64
  298. if err := db1.Count(&totalTask).Error; err != nil {
  299. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  300. return nil, 0, err
  301. }
  302. db1.Order("task_id").Find(&taskInfos)
  303. // 查询任务id
  304. var taskIds []int
  305. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  306. for _, taskInfo := range taskInfos {
  307. taskIds = append(taskIds, taskInfo.TaskID)
  308. taskMap[taskInfo.TaskID] = taskInfo
  309. }
  310. var misNum int64
  311. if totalTerminating > totalTask {
  312. misNum = totalTerminating - totalTask
  313. } else {
  314. misNum = totalTask - totalTerminating
  315. }
  316. logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
  317. // 查询该页数据
  318. limit := pageSize + misNum
  319. offset := pageSize * pageNum // assert pageNum start with 0
  320. err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  321. if err != nil {
  322. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  323. return nil, 0, err
  324. }
  325. var TaskTerminatings []*http_model.TaskTerminating
  326. var taskTerminatings []*http_model.TaskTerminatingInfo
  327. var newTaskTerminatings []*http_model.TaskTerminatingInfo
  328. for _, taskId := range taskIds {
  329. TaskTerminating := new(http_model.TaskTerminating)
  330. TaskTerminating.Talent = taskMap[taskId]
  331. TaskTerminating.Default = TerminatingMap[taskId]
  332. TaskTerminatings = append(TaskTerminatings, TaskTerminating)
  333. }
  334. taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
  335. for _, v := range taskTerminatings {
  336. if platform_nickname == "" {
  337. newTaskTerminatings = append(newTaskTerminatings, v)
  338. } else if strings.Contains(v.PlatformNickname, 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. } else {
  379. db = db.Where(fmt.Sprintf("%s like '%%%v%%'", tag, value.Interface()))
  380. }
  381. }
  382. }
  383. var taskInfos []gorm_model.YoungeeTaskInfo
  384. db = db.Model(gorm_model.YoungeeTaskInfo{})
  385. // 查询总数
  386. var totalTask int64
  387. if err := db.Count(&totalTask).Error; err != nil {
  388. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  389. return nil, 0, err
  390. }
  391. db.Order("task_id").Find(&taskInfos)
  392. // 查询任务id
  393. var taskIds []int
  394. taskMap := make(map[int]gorm_model.YoungeeTaskInfo)
  395. for _, taskInfo := range taskInfos {
  396. taskIds = append(taskIds, taskInfo.TaskID)
  397. taskMap[taskInfo.TaskID] = taskInfo
  398. }
  399. db1 := GetReadDB(ctx)
  400. db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
  401. var TerminatedInfos []gorm_model.YoungeeContractInfo
  402. db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND default_status = 1", taskIds)
  403. if conditions.DefaultStatus == int64(0) {
  404. db1 = db1.Where("is_review = 0").Find(&TerminatedInfos)
  405. } else {
  406. db1 = db1.Where("is_ok = 1").Find(&TerminatedInfos)
  407. }
  408. TerminatedMap := make(map[int]gorm_model.YoungeeContractInfo)
  409. for _, TerminatedInfo := range TerminatedInfos {
  410. TerminatedMap[conv.MustInt(TerminatedInfo.TaskID)] = TerminatedInfo
  411. }
  412. // 查询总数
  413. var totalTerminated int64
  414. if err := db1.Count(&totalTerminated).Error; err != nil {
  415. logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
  416. return nil, 0, err
  417. }
  418. var misNum int64
  419. if totalTerminated > totalTask {
  420. misNum = totalTerminated - totalTask
  421. } else {
  422. misNum = totalTask - totalTerminated
  423. }
  424. logrus.Println("totalTerminated,totalTalent,misNum:", totalTerminated, totalTask, misNum)
  425. // 查询该页数据
  426. limit := pageSize + misNum
  427. offset := pageSize * pageNum // assert pageNum start with 0
  428. err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
  429. if err != nil {
  430. logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
  431. return nil, 0, err
  432. }
  433. var TaskTerminateds []*http_model.TaskTerminated
  434. var taskTerminateds []*http_model.TaskTerminatedInfo
  435. var newTaskTerminateds []*http_model.TaskTerminatedInfo
  436. for _, taskId := range taskIds {
  437. TaskTerminated := new(http_model.TaskTerminated)
  438. TaskTerminated.Talent = taskMap[taskId]
  439. TaskTerminated.Default = TerminatedMap[taskId]
  440. TaskTerminateds = append(TaskTerminateds, TaskTerminated)
  441. }
  442. taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
  443. for _, v := range taskTerminateds {
  444. if platform_nickname == "" {
  445. newTaskTerminateds = append(newTaskTerminateds, v)
  446. } else if strings.Contains(v.PlatformNickname, platform_nickname) {
  447. newTaskTerminateds = append(newTaskTerminateds, v)
  448. } else {
  449. totalTask--
  450. }
  451. }
  452. return newTaskTerminateds, totalTask, nil
  453. }