locallife_task.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  1. package db
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "github.com/issue9/conv"
  7. "gorm.io/gorm"
  8. "strconv"
  9. "strings"
  10. "time"
  11. "youngee_m_api/model/gorm_model"
  12. "youngee_m_api/model/http_model"
  13. )
  14. func GetLocallifetaskList(ctx context.Context, request http_model.GetLocalTaskListRequest) (*http_model.GetLocalTaskListData, error) {
  15. db := GetReadDB(ctx)
  16. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  17. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_status = ?", request.ProjectId, request.CoopType)
  18. fmt.Println(query)
  19. // 构建查询条件
  20. if request.FeeFrom != nil {
  21. query = query.Where("fee_form = ?", request.FeeFrom)
  22. }
  23. if request.Type != nil {
  24. switch *request.Type {
  25. case 1:
  26. query = query.Where("supplier_id = 0 AND supplier_status = 0")
  27. case 2:
  28. query = query.Where("supplier_id !=0 AND supplier_status = 2")
  29. }
  30. }
  31. if request.TalentFromList != "" {
  32. citylist := strings.Split(request.TalentFromList, ",")
  33. query = query.Where("city in ?", citylist)
  34. }
  35. // 计算总数
  36. var total int64
  37. if err := query.Count(&total).Error; err != nil {
  38. return nil, err
  39. }
  40. // 添加分页逻辑
  41. pageSize := request.PageSize
  42. if pageSize == 0 {
  43. pageSize = 10
  44. }
  45. pageNum := request.PageNum
  46. if pageNum == 0 {
  47. pageNum = 1
  48. }
  49. offset := (pageNum - 1) * pageSize
  50. // 执行分页查询
  51. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  52. return nil, err
  53. }
  54. taskInfoPointers := make([]*http_model.LocaLTaskInfo, 0, len(projecrtaskinfo))
  55. for _, task := range projecrtaskinfo {
  56. var Time time.Time
  57. switch request.CoopType {
  58. case 1:
  59. Time = task.CreateDate
  60. case 2:
  61. Time = task.SelectDate //2 signedtime
  62. case 3:
  63. Time = task.CompleteDate
  64. }
  65. boperator := getBOperator(db, task.BOperator, task.BOperatorType)
  66. nickname, headurl := getTalentinfo(db, task.TalentId)
  67. Iscoop := getIscoop(db, task.TalentId, request.EnterPriseId)
  68. response := &http_model.LocaLTaskInfo{
  69. TaskId: task.TaskId,
  70. ProjectId: task.LocalId,
  71. TalentId: task.TalentId,
  72. FansNum: task.FansNum,
  73. DraftFee: task.DraftFee,
  74. Voteavg: task.VoteAvg,
  75. FeeFrom: task.FeeForm,
  76. TaskStage: task.TaskStage,
  77. Commentavg: task.CommitAvg,
  78. CurrentDefaultType: task.CurDefaultType,
  79. From: determineFrom(task.SupplierId, task.SupplierStatus),
  80. Boperator: boperator,
  81. CreateAt: Time,
  82. NickName: nickname,
  83. HeadUrl: headurl,
  84. ISCoop: Iscoop,
  85. Sprojectid: task.SLocalLifeId,
  86. City: task.City,
  87. }
  88. taskInfoPointers = append(taskInfoPointers, response)
  89. }
  90. return &http_model.GetLocalTaskListData{
  91. TaskList: taskInfoPointers,
  92. Total: conv.MustString(total, ""),
  93. }, nil
  94. }
  95. func PassLocalTaskCoop(ctx context.Context, req http_model.PasslocalTaskCoopRequest) (bool, error) {
  96. db := GetReadDB(ctx)
  97. var count int64
  98. fmt.Println("task_ids: ", req.TaskIds)
  99. err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Count(&count).Error
  100. fmt.Println("count: ", count)
  101. if err != nil {
  102. return false, err
  103. }
  104. if int64(len(req.TaskIds)) == 0 || count != int64(len(req.TaskIds)) {
  105. return false, errors.New("任务id有误")
  106. }
  107. // 2. 查询任务对应达人id(用于生成达人消息)
  108. var talentIds []string
  109. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", req.TaskIds).Select("talent_id").Find(&talentIds).Error
  110. if err != nil {
  111. return false, err
  112. }
  113. // 3. 查询任务对应project名称(用于生成达人消息)
  114. var project gorm_model.YounggeeLocalLifeInfo
  115. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&project).Error
  116. if err != nil {
  117. return false, err
  118. }
  119. var taskstages int
  120. if project.TaskForm == 1 {
  121. taskstages = 4
  122. } else {
  123. taskstages = 9
  124. }
  125. nextstage := [6]int{0, 0, 0, 0, 0, 0} // 数组长度为6,表示6种工具 4,9,11,13
  126. if req.IsSpecial == 1 {
  127. toolList := strings.Split(project.Tools, ",")
  128. for _, tool := range toolList {
  129. // 将 tool 转换为整数
  130. if t, err := strconv.Atoi(tool); err == nil && t >= 0 && t <= len(nextstage) {
  131. nextstage[t-1] = 1
  132. }
  133. }
  134. fmt.Println(nextstage)
  135. for i := 1; i < len(nextstage); i++ { // 从位置1开始
  136. if nextstage[i] == 1 {
  137. switch i {
  138. case 1:
  139. taskstages = 4
  140. case 2:
  141. taskstages = 9
  142. case 3:
  143. taskstages = 11
  144. case 4:
  145. taskstages = 13
  146. case 5:
  147. taskstages = 15
  148. }
  149. break
  150. }
  151. }
  152. }
  153. //4.根据达人来源改变状态、阶段、数目
  154. var tasks []gorm_model.YoungeeLocalTaskInfo
  155. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Find(&tasks).Error
  156. if err != nil {
  157. return false, err
  158. }
  159. err = db.Transaction(func(tx *gorm.DB) error {
  160. // 2. 修改任务状态和任务阶段
  161. for _, taskInfo := range tasks {
  162. if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 { //服务商招募数量+1
  163. updateData := gorm_model.YoungeeLocalTaskInfo{
  164. TaskStage: taskstages,
  165. TaskStatus: 2,
  166. UpdateAt: time.Now(),
  167. BOperator: req.OperatorId,
  168. BOperatorType: req.OperateType,
  169. SelectDate: time.Now(),
  170. }
  171. err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
  172. if err != nil {
  173. return err
  174. }
  175. //project招募数+1,预估成本+服务商价格
  176. var projectinfo gorm_model.YounggeeLocalLifeInfo
  177. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&projectinfo).Error
  178. if err != nil {
  179. return err
  180. }
  181. projectinfo.RecruitNum += 1
  182. projectinfo.EstimatedCost += taskInfo.SupportFee
  183. err = tx.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", req.ProjectId).Updates(projectinfo).Error
  184. if err != nil {
  185. return err
  186. }
  187. //服务商s_project已招募人数+1改成s_locallife
  188. var sprojectinfo gorm_model.YounggeeSProjectInfo
  189. err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Find(&sprojectinfo).Error
  190. if err != nil {
  191. return err
  192. }
  193. sprojectinfo.RecruitNum += 1
  194. fmt.Println("......", projectinfo.RecruitNum)
  195. err = tx.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", req.SProjectId).Updates(sprojectinfo).Error
  196. if err != nil {
  197. return err
  198. } //
  199. }
  200. //if project.TaskForm != 1 { //素材分发
  201. // var draft_default gorm_model.InfoAutoTask
  202. // err = db.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", project.AutoTaskId).Find(&draft_default).Error
  203. // if err != nil {
  204. // return err
  205. // }
  206. // duration := time.Duration(draft_default.DraftDefault) * time.Hour
  207. // upbreakdate := gorm_model.YoungeeLocalTaskInfo{
  208. // CurBreakAt: time.Now().Add(duration),
  209. // }
  210. // err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? ", taskInfo.TaskId).Updates(upbreakdate).Error
  211. // if err != nil {
  212. // return err
  213. // }
  214. //}
  215. if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 { //来源于公海
  216. updateData := gorm_model.YoungeeLocalTaskInfo{
  217. TaskStage: taskstages,
  218. TaskStatus: 2,
  219. UpdateAt: time.Now(),
  220. BOperator: req.OperatorId,
  221. BOperatorType: req.OperateType,
  222. SelectDate: time.Now(),
  223. }
  224. err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
  225. if err != nil {
  226. return err
  227. }
  228. //project招募数+1
  229. var projectinfo gorm_model.YounggeeLocalLifeInfo
  230. err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", req.ProjectId).Find(&projectinfo).Error
  231. if err != nil {
  232. return err
  233. }
  234. projectinfo.RecruitNum += 1
  235. err = tx.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", req.ProjectId).Updates(projectinfo).Error
  236. if err != nil {
  237. return err
  238. }
  239. }
  240. }
  241. // 4. 生成达人消息
  242. for _, talendId := range talentIds {
  243. err = CreateMessage(ctx, 1, 1, talendId, project.LocalName)
  244. if err != nil {
  245. return err
  246. }
  247. }
  248. // 返回 nil 提交事务
  249. return nil
  250. })
  251. if err != nil {
  252. return false, err
  253. }
  254. return true, nil
  255. }
  256. func RefuseLocalTaskCoop(ctx context.Context, req http_model.RefuselocalTaskCoopRequest) (bool, error) {
  257. db := GetWriteDB(ctx)
  258. // 1. 校验
  259. var count int64
  260. err := db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Count(&count).Error
  261. if err != nil {
  262. return false, err
  263. }
  264. if count != int64(len(req.TaskIds)) {
  265. return false, errors.New("任务id有误")
  266. }
  267. // 2. 查询任务对应达人id(用于生成达人消息)
  268. var talentIds []string
  269. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", req.TaskIds).Select("talent_id").Find(&talentIds).Error
  270. if err != nil {
  271. return false, err
  272. }
  273. var tasks []gorm_model.YoungeeLocalTaskInfo
  274. err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ? AND task_stage = 1", req.TaskIds).Find(&tasks).Error
  275. err = db.Transaction(func(tx *gorm.DB) error {
  276. // 2. 修改任务状态和任务阶段
  277. for _, taskInfo := range tasks {
  278. updateData := gorm_model.YoungeeLocalTaskInfo{
  279. TaskStage: 3,
  280. TaskStatus: 3,
  281. UpdateAt: time.Now(),
  282. BOperator: req.OperatorId,
  283. BOperatorType: req.OperateType,
  284. CompleteDate: time.Now(),
  285. }
  286. err = tx.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id = ? AND task_stage = 1", taskInfo.TaskId).Updates(updateData).Error
  287. }
  288. if err != nil {
  289. return err
  290. }
  291. // 返回 nil 提交事务
  292. return nil
  293. })
  294. if err != nil {
  295. return false, err
  296. }
  297. return true, nil
  298. }
  299. func UpdateLocallife(ctx context.Context, project gorm_model.YounggeeLocalLifeInfo) (*string, error) {
  300. db := GetReadDB(ctx)
  301. err := db.Model(&project).Updates(project).Error
  302. if err != nil {
  303. return nil, err
  304. }
  305. return &project.LocalId, nil
  306. }
  307. func GetLocalPreSketchList(ctx context.Context, request http_model.LocalPreSketchListRequest) (*http_model.GetLocalSketchTaskListData, error) {
  308. db := GetReadDB(ctx)
  309. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  310. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
  311. // 计算总数
  312. var total int64
  313. if err := query.Count(&total).Error; err != nil {
  314. return nil, err
  315. }
  316. // 添加分页逻辑
  317. pageSize := request.PageSize
  318. if pageSize == 0 {
  319. pageSize = 10
  320. }
  321. pageNum := request.PageNum
  322. if pageNum == 0 {
  323. pageNum = 1
  324. }
  325. offset := (pageNum - 1) * pageSize
  326. // 执行分页查询
  327. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  328. return nil, err
  329. }
  330. taskInfoPointers := make([]*http_model.LocalTasksketchInfo, 0, len(projecrtaskinfo))
  331. for _, task := range projecrtaskinfo {
  332. nickname, headurl := getTalentinfo(db, task.TalentId)
  333. Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
  334. taskinfo := &http_model.LocaLTaskInfo{
  335. TaskId: task.TaskId,
  336. ProjectId: task.LocalId,
  337. TalentId: task.TalentId,
  338. FansNum: task.FansNum,
  339. DraftFee: task.DraftFee,
  340. Voteavg: task.VoteAvg,
  341. FeeFrom: task.FeeForm,
  342. TaskStage: task.TaskStage,
  343. Commentavg: task.CommitAvg,
  344. CurrentDefaultType: task.CurDefaultType,
  345. From: determineFrom(task.SupplierId, task.SupplierStatus),
  346. NickName: nickname,
  347. HeadUrl: headurl,
  348. ISCoop: Iscoop,
  349. City: task.City,
  350. }
  351. response := &http_model.LocalTasksketchInfo{
  352. Task: taskinfo,
  353. DDl: task.CurBreakAt,
  354. }
  355. taskInfoPointers = append(taskInfoPointers, response)
  356. }
  357. return &http_model.GetLocalSketchTaskListData{
  358. TasksketchList: taskInfoPointers,
  359. Total: conv.MustString(total, ""),
  360. }, nil
  361. }
  362. func GetLocalSketchList(ctx context.Context, request http_model.LocalTasksketchlistRequest) (*http_model.GetsketchlocaltaskListData, error) {
  363. db := GetReadDB(ctx)
  364. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  365. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
  366. // 计算总数
  367. var total int64
  368. if err := query.Count(&total).Error; err != nil {
  369. return nil, err
  370. }
  371. // 添加分页逻辑
  372. pageSize := request.PageSize
  373. if pageSize == 0 {
  374. pageSize = 10
  375. }
  376. pageNum := request.PageNum
  377. if pageNum == 0 {
  378. pageNum = 1
  379. }
  380. offset := (pageNum - 1) * pageSize
  381. // 执行分页查询
  382. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  383. return nil, err
  384. }
  385. taskInfoPointers := make([]*http_model.LocalTasksketchinfo, 0, len(projecrtaskinfo))
  386. for _, task := range projecrtaskinfo {
  387. nickname, headurl := getTalentinfo(db, task.TalentId)
  388. taskinfo := &http_model.LocaLTaskInfo{
  389. TaskId: task.TaskId,
  390. ProjectId: task.LocalId,
  391. TalentId: task.TalentId,
  392. FansNum: task.FansNum,
  393. DraftFee: task.DraftFee,
  394. Voteavg: task.VoteAvg,
  395. FeeFrom: task.FeeForm,
  396. TaskStage: task.TaskStage,
  397. Commentavg: task.CommitAvg,
  398. CurrentDefaultType: task.CurDefaultType,
  399. From: determineFrom(task.SupplierId, task.SupplierStatus),
  400. NickName: nickname,
  401. HeadUrl: headurl,
  402. City: task.City,
  403. }
  404. var sketchinfo gorm_model.YounggeeSketchInfo
  405. err := db.Model(&gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&sketchinfo).Error
  406. if err != nil {
  407. return nil, err
  408. }
  409. boperator := getBOperator(db, task.BOperator, task.BOperatorType)
  410. response := &http_model.LocalTasksketchinfo{
  411. Task: taskinfo,
  412. SketchId: sketchinfo.SketchID,
  413. SubmitAt: sketchinfo.SubmitAt,
  414. AgreeAt: sketchinfo.AgreeAt,
  415. Operator: boperator,
  416. }
  417. taskInfoPointers = append(taskInfoPointers, response)
  418. }
  419. return &http_model.GetsketchlocaltaskListData{
  420. LocalTasksketchList: taskInfoPointers,
  421. Total: conv.MustString(total, ""),
  422. }, nil
  423. }
  424. func GetLocalPreLinkList(ctx context.Context, request http_model.LocalPreLinkListRequest) (*http_model.GetLocalPreLinkListData, error) {
  425. db := GetReadDB(ctx)
  426. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  427. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
  428. // 计算总数
  429. var total int64
  430. if err := query.Count(&total).Error; err != nil {
  431. return nil, err
  432. }
  433. // 添加分页逻辑
  434. pageSize := request.PageSize
  435. if pageSize == 0 {
  436. pageSize = 10
  437. }
  438. pageNum := request.PageNum
  439. if pageNum == 0 {
  440. pageNum = 1
  441. }
  442. offset := (pageNum - 1) * pageSize
  443. // 执行分页查询
  444. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  445. return nil, err
  446. }
  447. taskInfoPointers := make([]*http_model.LocalTasklinkinfo, 0, len(projecrtaskinfo))
  448. for _, task := range projecrtaskinfo {
  449. nickname, headurl := getTalentinfo(db, task.TalentId)
  450. Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
  451. taskinfo := &http_model.LocaLTaskInfo{
  452. TaskId: task.TaskId,
  453. ProjectId: task.LocalId,
  454. TalentId: task.TalentId,
  455. FansNum: task.FansNum,
  456. DraftFee: task.DraftFee,
  457. Voteavg: task.VoteAvg,
  458. FeeFrom: task.FeeForm,
  459. TaskStage: task.TaskStage,
  460. Commentavg: task.CommitAvg,
  461. CurrentDefaultType: task.CurDefaultType,
  462. From: determineFrom(task.SupplierId, task.SupplierStatus),
  463. NickName: nickname,
  464. HeadUrl: headurl,
  465. ISCoop: Iscoop,
  466. City: task.City,
  467. }
  468. response := &http_model.LocalTasklinkinfo{
  469. Task: taskinfo,
  470. DDl: task.CurBreakAt,
  471. }
  472. taskInfoPointers = append(taskInfoPointers, response)
  473. }
  474. return &http_model.GetLocalPreLinkListData{
  475. TasklinkList: taskInfoPointers,
  476. Total: conv.MustString(total, ""),
  477. }, nil
  478. }
  479. func GetLocalLinkList(ctx context.Context, request http_model.LocalTaskLinklistRequest) (*http_model.GetLocalTaskLinkListData, error) {
  480. db := GetReadDB(ctx)
  481. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  482. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
  483. // 计算总数
  484. var total int64
  485. if err := query.Count(&total).Error; err != nil {
  486. return nil, err
  487. }
  488. // 添加分页逻辑
  489. pageSize := request.PageSize
  490. if pageSize == 0 {
  491. pageSize = 10
  492. }
  493. pageNum := request.PageNum
  494. if pageNum == 0 {
  495. pageNum = 1
  496. }
  497. offset := (pageNum - 1) * pageSize
  498. // 执行分页查询
  499. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  500. return nil, err
  501. }
  502. taskInfoPointers := make([]*http_model.LocalTaskLinkinfo, 0, len(projecrtaskinfo))
  503. for _, task := range projecrtaskinfo {
  504. nickname, headurl := getTalentinfo(db, task.TalentId)
  505. Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
  506. taskinfo := &http_model.LocaLTaskInfo{
  507. TaskId: task.TaskId,
  508. ProjectId: task.LocalId,
  509. TalentId: task.TalentId,
  510. FansNum: task.FansNum,
  511. DraftFee: task.DraftFee,
  512. Voteavg: task.VoteAvg,
  513. FeeFrom: task.FeeForm,
  514. TaskStage: task.TaskStage,
  515. Commentavg: task.CommitAvg,
  516. CurrentDefaultType: task.CurDefaultType,
  517. From: determineFrom(task.SupplierId, task.SupplierStatus),
  518. NickName: nickname,
  519. HeadUrl: headurl,
  520. ISCoop: Iscoop,
  521. City: task.City,
  522. }
  523. var linkinfo gorm_model.YounggeeLinkInfo
  524. err := db.Model(&gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&linkinfo).Error
  525. if err != nil {
  526. return nil, err
  527. }
  528. boperator := getBOperator(db, task.BOperator, task.BOperatorType)
  529. response := &http_model.LocalTaskLinkinfo{
  530. Task: taskinfo,
  531. LinkId: linkinfo.LinkID,
  532. SubmitAt: linkinfo.SubmitAt,
  533. AgreeAt: linkinfo.AgreeAt,
  534. LinkUrl: linkinfo.LinkUrl,
  535. PhotoUrl: linkinfo.PhotoUrl,
  536. Operator: boperator,
  537. }
  538. taskInfoPointers = append(taskInfoPointers, response)
  539. }
  540. return &http_model.GetLocalTaskLinkListData{
  541. LocalTaskLinklist: taskInfoPointers,
  542. Total: conv.MustString(total, ""),
  543. }, nil
  544. }
  545. func GetLocalPreDataList(ctx context.Context, request http_model.LocalPreDataListRequest) (*http_model.GetLocalPreDataListData, error) {
  546. db := GetReadDB(ctx)
  547. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  548. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.DataStatus)
  549. // 计算总数
  550. var total int64
  551. if err := query.Count(&total).Error; err != nil {
  552. return nil, err
  553. }
  554. // 添加分页逻辑
  555. pageSize := request.PageSize
  556. if pageSize == 0 {
  557. pageSize = 10
  558. }
  559. pageNum := request.PageNum
  560. if pageNum == 0 {
  561. pageNum = 1
  562. }
  563. offset := (pageNum - 1) * pageSize
  564. // 执行分页查询
  565. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  566. return nil, err
  567. }
  568. taskInfoPointers := make([]*http_model.LocalTaskdatainfo, 0, len(projecrtaskinfo))
  569. for _, task := range projecrtaskinfo {
  570. nickname, headurl := getTalentinfo(db, task.TalentId)
  571. Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
  572. taskinfo := &http_model.LocaLTaskInfo{
  573. TaskId: task.TaskId,
  574. ProjectId: task.LocalId,
  575. TalentId: task.TalentId,
  576. FansNum: task.FansNum,
  577. DraftFee: task.DraftFee,
  578. Voteavg: task.VoteAvg,
  579. FeeFrom: task.FeeForm,
  580. TaskStage: task.TaskStage,
  581. Commentavg: task.CommitAvg,
  582. CurrentDefaultType: task.CurDefaultType,
  583. From: determineFrom(task.SupplierId, task.SupplierStatus),
  584. NickName: nickname,
  585. HeadUrl: headurl,
  586. ISCoop: Iscoop,
  587. City: task.City,
  588. }
  589. response := &http_model.LocalTaskdatainfo{
  590. Task: taskinfo,
  591. DDl: task.CurBreakAt,
  592. }
  593. taskInfoPointers = append(taskInfoPointers, response)
  594. }
  595. return &http_model.GetLocalPreDataListData{
  596. TaskdataList: taskInfoPointers,
  597. Total: conv.MustString(total, ""),
  598. }, nil
  599. }
  600. func GetLocalDataList(ctx context.Context, request http_model.LocalTaskDatalistRequest) (*http_model.GetLocalTaskDatalistData, error) {
  601. db := GetReadDB(ctx)
  602. var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
  603. query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.DataStatus)
  604. // 计算总数
  605. var total int64
  606. if err := query.Count(&total).Error; err != nil {
  607. return nil, err
  608. }
  609. // 添加分页逻辑
  610. pageSize := request.PageSize
  611. if pageSize == 0 {
  612. pageSize = 10
  613. }
  614. pageNum := request.PageNum
  615. if pageNum == 0 {
  616. pageNum = 1
  617. }
  618. offset := (pageNum - 1) * pageSize
  619. // 执行分页查询
  620. if err := query.Offset(offset).Limit(pageSize).Find(&projecrtaskinfo).Error; err != nil {
  621. return nil, err
  622. }
  623. taskInfoPointers := make([]*http_model.LocalTaskDatainfo, 0, len(projecrtaskinfo))
  624. for _, task := range projecrtaskinfo {
  625. nickname, headurl := getTalentinfo(db, task.TalentId)
  626. Iscoop := getIscoop(db, task.TalentId, request.EnterpriseId)
  627. taskinfo := &http_model.LocaLTaskInfo{
  628. TaskId: task.TaskId,
  629. ProjectId: task.LocalId,
  630. TalentId: task.TalentId,
  631. FansNum: task.FansNum,
  632. DraftFee: task.DraftFee,
  633. Voteavg: task.VoteAvg,
  634. FeeFrom: task.FeeForm,
  635. TaskStage: task.TaskStage,
  636. Commentavg: task.CommitAvg,
  637. CurrentDefaultType: task.CurDefaultType,
  638. From: determineFrom(task.SupplierId, task.SupplierStatus),
  639. NickName: nickname,
  640. HeadUrl: headurl,
  641. ISCoop: Iscoop,
  642. City: task.City,
  643. }
  644. var datainfo gorm_model.YounggeeDataInfo
  645. err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", task.TaskId).First(&datainfo).Error
  646. if err != nil {
  647. return nil, err
  648. }
  649. boperator := getBOperator(db, task.BOperator, task.BOperatorType)
  650. response := &http_model.LocalTaskDatainfo{
  651. Task: taskinfo,
  652. DataId: datainfo.DataID,
  653. SubmitAt: datainfo.SubmitAt,
  654. AgreeAt: datainfo.AgreeAt,
  655. PhotoUrl: datainfo.PhotoUrl,
  656. PlayNumber: datainfo.PlayNumber,
  657. LikeNumber: datainfo.LikeNumber,
  658. CollectNumber: datainfo.CollectNumber,
  659. CommentNumber: datainfo.CommentNumber,
  660. SettleAmount: task.SettleAmount,
  661. Breakrate: task.SketchBreakRate + task.LinkBreakRate + task.DataBreakRate,
  662. Operator: boperator,
  663. }
  664. taskInfoPointers = append(taskInfoPointers, response)
  665. }
  666. return &http_model.GetLocalTaskDatalistData{
  667. LocalTaskDatalist: taskInfoPointers,
  668. Total: conv.MustString(total, ""),
  669. }, nil
  670. }