task_info.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. package youngee_task_service
  2. import (
  3. "context"
  4. "fmt"
  5. "strconv"
  6. "youngmini_server/app/dao"
  7. "youngmini_server/app/model"
  8. "youngmini_server/app/model/youngee_talent_model"
  9. "youngmini_server/app/utils"
  10. "github.com/gogf/gf/database/gdb"
  11. "github.com/gogf/gf/encoding/gjson"
  12. "github.com/gogf/gf/frame/g"
  13. "github.com/gogf/gf/net/ghttp"
  14. "github.com/gogf/gf/os/gtime"
  15. )
  16. // 新建任务service
  17. func SignUpTask(r *ghttp.Request) *TalentHttpResult {
  18. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  19. if err != nil {
  20. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  21. }
  22. var signTaskInfo *youngee_talent_model.SignTaskInfo
  23. err = r.ParseForm(&signTaskInfo)
  24. if err != nil {
  25. return &TalentHttpResult{Code: -2, Msg: "data query failed"}
  26. }
  27. var projectDetail *youngee_talent_model.ProjectDetail
  28. err = g.DB().Model(youngee_talent_model.ProjectDetail{}).WithAll().Where("project_id", signTaskInfo.ProjectId).Scan(&projectDetail)
  29. if err != nil {
  30. return &TalentHttpResult{Code: -3, Msg: err.Error()}
  31. }
  32. var talentInfo *youngee_talent_model.TalentInfo
  33. err = g.DB().Model("youngee_talent_info").WithAll().Where("id", tid).Scan(&talentInfo)
  34. if err != nil {
  35. return &TalentHttpResult{Code: -4, Msg: "Get talent info failed"}
  36. }
  37. var accountInfo *youngee_talent_model.PlatformAccountInfo
  38. err = g.DB().Model("youngee_platform_account_info").WithAll().Where("talent_id = ? and platform_id = ?", tid, projectDetail.ProjectPlatform).Scan(&accountInfo)
  39. if err != nil {
  40. return &TalentHttpResult{Code: -5, Msg: err.Error()}
  41. }
  42. address, err := g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).One("talent_id = ? and address_id = ?", tid, signTaskInfo.AddressId)
  43. if err != nil {
  44. return &TalentHttpResult{Code: -6, Msg: err.Error()}
  45. }
  46. var newTaskId string
  47. // 首先生成任务id
  48. newTaskId = utils.GetUuid.GetTaskId(projectDetail.ProjectId, projectDetail.EnterpriseId, tid)
  49. // 生成达人平台账号信息快照
  50. accountSnap, err := gjson.Encode(accountInfo)
  51. if err != nil {
  52. return &TalentHttpResult{Code: -7, Msg: "encode platform snap failed"}
  53. }
  54. // 生成达人信息快照
  55. talentSnap, err := gjson.Encode(talentInfo)
  56. if err != nil {
  57. return &TalentHttpResult{Code: -8, Msg: "encode talent info snap failed"}
  58. }
  59. // 生成收货地址快照
  60. addrSnap, err := gjson.Encode(address)
  61. if err != nil {
  62. return &TalentHttpResult{Code: -9, Msg: "encode delivery address snap failed"}
  63. }
  64. taskInfo := model.YoungeeTaskInfo{}
  65. if projectDetail.ProjectType == 1 {
  66. // 全流程任务
  67. // 计算平台服务费
  68. // 1. 先获取稿费形式
  69. var strategy *youngee_talent_model.RecruitStrategy
  70. err = g.DB().Model("recruit_strategy").WithAll().Where("strategy_id = ? and project_id= ?", signTaskInfo.StrategyId, signTaskInfo.ProjectId).Scan(&strategy)
  71. if err != nil {
  72. return &TalentHttpResult{Code: -10, Msg: err.Error()}
  73. }
  74. // 2. 根据稿费形式、平台、粉丝数获取服务费最高的定价策略
  75. // 2.1 查询所有对应定价策略
  76. whereStr1 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up > %d", strategy.FeeForm, projectDetail.ProjectPlatform, strategy.FollowersLow, strategy.FollowersLow)
  77. orStr1 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low < %d and fans_up >= %d", strategy.FeeForm, projectDetail.ProjectPlatform, strategy.FollowersUp, strategy.FollowersUp)
  78. orStr2 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low >= %d and fans_up <= %d", strategy.FeeForm, projectDetail.ProjectPlatform, strategy.FollowersLow, strategy.FollowersUp)
  79. orStr3 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", strategy.FeeForm, projectDetail.ProjectPlatform, strategy.FollowersLow, strategy.FollowersUp)
  80. var pricings []*model.InfoPricingStrategy
  81. err = g.DB().Model("info_pricing_strategy").WithAll().Where(whereStr1).Or(orStr1).Or(orStr2).Or(orStr3).Scan(&pricings)
  82. if err != nil {
  83. return &TalentHttpResult{Code: -11, Msg: err.Error()}
  84. } else if pricings == nil {
  85. return &TalentHttpResult{Code: -12, Msg: "无相关定价策略"}
  86. }
  87. var pricing *model.InfoPricingStrategy
  88. // 2.2 从对应定价策略中选取服务费率最高
  89. if strategy.FeeForm == 1 {
  90. var maxCharge float64 = 0
  91. for _, v := range pricings {
  92. if v.ServiceCharge >= maxCharge {
  93. maxCharge = v.ServiceCharge
  94. pricing = v
  95. }
  96. }
  97. } else {
  98. var maxRate int = 0
  99. for _, v := range pricings {
  100. if v.ServiceRate >= maxRate {
  101. maxRate = v.ServiceRate
  102. pricing = v
  103. }
  104. }
  105. }
  106. var serviceCharge = 0.0
  107. var serviceRate = 0
  108. var allReward = 0.0
  109. var allPayment = 0.0
  110. switch strategy.FeeForm {
  111. case 1: // 产品置换,服务费固定,在项目生成时确定
  112. serviceCharge = float64(strategy.ServiceCharge)
  113. allPayment = serviceCharge
  114. break
  115. case 2: // 固定稿费,m2 = y2 * r2
  116. allPayment = float64(strategy.Offer)
  117. serviceRate = pricing.ServiceRate
  118. serviceCharge = allPayment * float64(serviceRate) / 1000
  119. allReward = allPayment - serviceCharge
  120. break
  121. case 3: // 自报价,m3 = x3 * r3
  122. allReward = float64(signTaskInfo.Offer)
  123. serviceRate = pricing.ServiceRate
  124. var tmpRate = float64(1000-serviceRate) / 1000
  125. allPayment = allReward / tmpRate
  126. serviceCharge = allPayment - allReward
  127. break
  128. default:
  129. break
  130. }
  131. taskInfo = model.YoungeeTaskInfo{
  132. TaskId: newTaskId,
  133. ProjectId: signTaskInfo.ProjectId,
  134. TalentId: tid,
  135. AccountId: accountInfo.AccountId,
  136. TalentPlatformInfoSnap: string(accountSnap),
  137. TalentPersonalInfoSnap: string(talentSnap),
  138. TalentPostAddrSnap: string(addrSnap),
  139. StrategyId: signTaskInfo.StrategyId,
  140. TaskReward: allReward,
  141. SettleAmount: allReward,
  142. AllPayment: allPayment,
  143. TaskStage: 1,
  144. RealPayment: allPayment,
  145. FeeForm: strategy.FeeForm,
  146. ServiceCharge: serviceCharge,
  147. ServiceRate: serviceRate,
  148. CreateDate: gtime.Now(),
  149. TaskStatus: 1,
  150. LogisticsStatus: 1,
  151. LinkStatus: 1,
  152. DataStatus: 1,
  153. ScriptStatus: 1,
  154. SketchStatus: 1,
  155. CompleteStatus: 1,
  156. CurDefaultType: 0,
  157. WithdrawStatus: 1,
  158. SettleStatus: 1,
  159. }
  160. } else {
  161. // 专项任务
  162. taskInfo = model.YoungeeTaskInfo{
  163. TaskId: newTaskId,
  164. ProjectId: signTaskInfo.ProjectId,
  165. TalentId: tid,
  166. AccountId: accountInfo.AccountId,
  167. TalentPlatformInfoSnap: string(accountSnap),
  168. TalentPersonalInfoSnap: string(talentSnap),
  169. TalentPostAddrSnap: string(addrSnap),
  170. TaskStage: 1,
  171. CreateDate: gtime.Now(),
  172. TaskStatus: 1,
  173. LogisticsStatus: 1,
  174. LinkStatus: 1,
  175. DataStatus: 1,
  176. ScriptStatus: 1,
  177. SketchStatus: 1,
  178. CompleteStatus: 1,
  179. CurDefaultType: 0,
  180. WithdrawStatus: 1,
  181. }
  182. }
  183. err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
  184. // 在task_info表中插入任务
  185. _, err = tx.Ctx(ctx).Model(dao.YoungeeTaskInfo.Table).Data(&taskInfo).Insert()
  186. if err != nil {
  187. return err
  188. }
  189. // 对应项目的报名人数自增
  190. _, err = tx.Ctx(ctx).Model(dao.ProjectInfo.Table).Where(dao.ProjectInfo.Columns.ProjectId, projectDetail.ProjectId).Increment(dao.ProjectInfo.Columns.ApplyNum, 1)
  191. if err != nil {
  192. return err
  193. }
  194. return nil
  195. })
  196. if err != nil {
  197. return &TalentHttpResult{Code: -18, Msg: "add Task data failed"}
  198. }
  199. return &TalentHttpResult{Code: 0, Msg: "success", Data: newTaskId}
  200. }
  201. // 判断是否已报名任务
  202. func IsSignUpTask(r *ghttp.Request) *TalentHttpResult {
  203. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  204. if err != nil {
  205. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  206. }
  207. projectId := r.GetQueryInt("project_id", -1)
  208. fmt.Printf("%+v\n", projectId)
  209. task := []model.YoungeeTaskInfo{}
  210. err = g.Model(dao.YoungeeTaskInfo.Table).Where("project_id = ? and talent_id = ?", projectId, tid).Scan(&task)
  211. if err != nil {
  212. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  213. }
  214. isSign := youngee_talent_model.IsSign{}
  215. if len(task) != 0 {
  216. isSign.TaskInfo = &task[0]
  217. isSign.IsSign = 1
  218. isSign.IsAgree = task[0].TaskStatus
  219. } else {
  220. isSign.IsSign = 0
  221. isSign.IsAgree = 0
  222. }
  223. return &TalentHttpResult{Code: 0, Msg: "success", Data: isSign}
  224. }
  225. // 查询所有任务
  226. func GetTaskBriefList(r *ghttp.Request) *TalentHttpResult {
  227. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  228. if err != nil {
  229. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  230. }
  231. // 构造查询条件
  232. whereStr := fmt.Sprintf("talent_id = '%s'", tid)
  233. fmt.Print(whereStr)
  234. // 获取任务列表
  235. var taskList []*model.YoungeeTaskInfo
  236. err = g.Model(dao.YoungeeTaskInfo.Table).Where(whereStr).Scan(&taskList)
  237. if err != nil {
  238. return &TalentHttpResult{Code: -1, Msg: "Get task list failed"}
  239. }
  240. platformMap := make(map[string]model.InfoThirdPlatform)
  241. platformInfo := []*model.InfoThirdPlatform{}
  242. if len(taskList) != 0 {
  243. err := g.Model(dao.InfoThirdPlatform.Table).Scan(&platformInfo)
  244. if err != nil {
  245. return &TalentHttpResult{Code: -1, Msg: "Get platform failed"}
  246. }
  247. for i, _ := range platformInfo {
  248. platformMap[strconv.Itoa(platformInfo[i].PlatformId)] = *platformInfo[i]
  249. }
  250. }
  251. // 为每个任务根据项目id查询项目名称和主图
  252. taskBriefList := youngee_talent_model.TaskInfoBriefList{}
  253. for _, v := range taskList {
  254. projectInfo, err := g.Model(dao.ProjectInfo.Table).Where("project_id = ?", v.ProjectId).One()
  255. if err != nil {
  256. return &TalentHttpResult{Code: -1, Msg: "Get fullproject info failed"}
  257. }
  258. account, err := g.Model(dao.YoungeePlatformAccountInfo.Table).One("platform_id = ? and talent_id = ?", projectInfo[dao.ProjectInfo.Columns.ProjectPlatform], v.TalentId)
  259. if err != nil {
  260. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  261. }
  262. taskInfoBrief := &youngee_talent_model.TaskInfoBrief{
  263. TaskId: v.TaskId,
  264. PlatformIconUrl: platformMap[projectInfo[dao.ProjectInfo.Columns.ProjectPlatform].String()].PlatformIcon,
  265. PlatformName: platformMap[projectInfo[dao.ProjectInfo.Columns.ProjectPlatform].String()].PlatformName,
  266. PlatformNickName: account[dao.YoungeePlatformAccountInfo.Columns.PlatformNickname].String(),
  267. ProjectName: projectInfo[dao.ProjectInfo.Columns.ProjectName].String(),
  268. ProductPhotoSnap: projectInfo[dao.ProjectInfo.Columns.ProductPhotoSnap].String(),
  269. TaskStatus: v.TaskStatus,
  270. TaskStage: v.TaskStage,
  271. LinkStatus: v.LinkStatus,
  272. DataStatus: v.DataStatus,
  273. ScriptStatus: v.ScriptStatus,
  274. SketchStatus: v.SketchStatus,
  275. TaskReward: v.TaskReward,
  276. BreakRate: v.ScriptBreakRate + v.SketchBreakRate + v.LinkBreakRate + v.DataBreakRate,
  277. CurBreakAt: v.CurBreakAt,
  278. FeeForm: v.FeeForm,
  279. }
  280. taskBriefList.AllTaskInfoList = append(taskBriefList.AllTaskInfoList, taskInfoBrief)
  281. if v.TaskStage <= 2 {
  282. taskBriefList.SignUpTaskInfoList = append(taskBriefList.SignUpTaskInfoList, taskInfoBrief)
  283. } else if v.TaskStage <= 14 && v.TaskStage >= 4 {
  284. taskBriefList.GoingOnTaskInfoList = append(taskBriefList.GoingOnTaskInfoList, taskInfoBrief)
  285. } else {
  286. taskBriefList.CompletedTaskInfoList = append(taskBriefList.CompletedTaskInfoList, taskInfoBrief)
  287. }
  288. }
  289. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskBriefList}
  290. }
  291. // 查询执行中所有任务
  292. func GetExeTaskBriefList(r *ghttp.Request) *TalentHttpResult {
  293. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  294. if err != nil {
  295. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  296. }
  297. var taskStageList = [5]int{0, 7, 9, 11, 13}
  298. taskStageKey := r.GetQueryInt("taskStage", 0)
  299. if taskStageKey == 0 {
  300. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  301. }
  302. taskStage := taskStageList[taskStageKey+1]
  303. // 获取任务列表
  304. var taskList []*model.YoungeeTaskInfo
  305. whereCondition := g.Map{
  306. dao.YoungeeTaskInfo.Columns.TalentId: tid,
  307. dao.YoungeeTaskInfo.Columns.TaskStage: taskStage,
  308. }
  309. err = g.Model(dao.YoungeeTaskInfo.Table).Where(whereCondition).Scan(&taskList)
  310. if err != nil {
  311. return &TalentHttpResult{Code: -1, Msg: "Get task list failed"}
  312. }
  313. platformMap := make(map[string]model.InfoThirdPlatform)
  314. var platformInfo []*model.InfoThirdPlatform
  315. if len(taskList) != 0 {
  316. err := g.Model(dao.InfoThirdPlatform.Table).Scan(&platformInfo)
  317. if err != nil {
  318. return &TalentHttpResult{Code: -1, Msg: "Get platform failed"}
  319. }
  320. for i, _ := range platformInfo {
  321. platformMap[strconv.Itoa(platformInfo[i].PlatformId)] = *platformInfo[i]
  322. }
  323. }
  324. // 为每个任务根据项目id查询项目名称和主图
  325. var taskBriefList []*youngee_talent_model.TaskInfoBrief
  326. for _, v := range taskList {
  327. whereCondition = g.Map{
  328. dao.ProjectInfo.Columns.ProjectId: v.ProjectId,
  329. }
  330. projectInfo, err := g.Model(dao.ProjectInfo.Table).Where(whereCondition).One()
  331. if err != nil {
  332. return &TalentHttpResult{Code: -1, Msg: "Get fullproject info failed"}
  333. }
  334. whereCondition = g.Map{
  335. dao.YoungeePlatformAccountInfo.Columns.PlatformId: projectInfo[dao.ProjectInfo.Columns.ProjectPlatform],
  336. dao.YoungeePlatformAccountInfo.Columns.TalentId: v.TalentId,
  337. }
  338. account, err := g.Model(dao.YoungeePlatformAccountInfo.Table).Where(whereCondition).One()
  339. if err != nil {
  340. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  341. }
  342. taskInfoBrief := &youngee_talent_model.TaskInfoBrief{
  343. TaskId: v.TaskId,
  344. PlatformIconUrl: platformMap[projectInfo[dao.ProjectInfo.Columns.ProjectPlatform].String()].PlatformIcon,
  345. PlatformName: platformMap[projectInfo[dao.ProjectInfo.Columns.ProjectPlatform].String()].PlatformName,
  346. PlatformNickName: account[dao.YoungeePlatformAccountInfo.Columns.PlatformNickname].String(),
  347. ProjectName: projectInfo[dao.ProjectInfo.Columns.ProjectName].String(),
  348. ProductPhotoSnap: projectInfo[dao.ProjectInfo.Columns.ProductPhotoSnap].String(),
  349. TaskStatus: v.TaskStatus,
  350. TaskStage: v.TaskStage,
  351. LinkStatus: v.LinkStatus,
  352. DataStatus: v.DataStatus,
  353. ScriptStatus: v.ScriptStatus,
  354. SketchStatus: v.SketchStatus,
  355. TaskReward: v.TaskReward,
  356. BreakRate: v.ScriptBreakRate + v.SketchBreakRate + v.LinkBreakRate + v.DataBreakRate,
  357. CurBreakAt: v.CurBreakAt,
  358. FeeForm: v.FeeForm,
  359. }
  360. taskBriefList = append(taskBriefList, taskInfoBrief)
  361. }
  362. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskBriefList}
  363. }
  364. // 查询执行中所有任务
  365. func GetExeTaskNum(r *ghttp.Request) *TalentHttpResult {
  366. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  367. if err != nil {
  368. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  369. }
  370. nums, err := g.Model("youngee_task_info").Where("talent_id = ?", tid).Fields("COUNT(*) ,task_stage").Group("task_stage").All()
  371. if err != nil {
  372. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  373. }
  374. return &TalentHttpResult{Code: 0, Msg: "success", Data: nums}
  375. }
  376. func GetTaskNum(r *ghttp.Request) *TalentHttpResult {
  377. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  378. if err != nil {
  379. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  380. }
  381. // 构造查询条件
  382. whereStr1 := fmt.Sprintf("talent_id = '%s'", tid)
  383. whereStr2 := fmt.Sprintf("talent_id = '%s' and task_stage <= 2", tid)
  384. whereStr3 := fmt.Sprintf("talent_id = '%s' and task_stage <= 14 and task_stage >= 4", tid)
  385. whereStr4 := fmt.Sprintf("talent_id = '%s' and (task_stage = 3 or task_stage >= 15)", tid)
  386. num1, err := g.Model(dao.YoungeeTaskInfo.Table).Where(whereStr1).Count()
  387. if err != nil {
  388. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  389. }
  390. num2, err := g.Model(dao.YoungeeTaskInfo.Table).Where(whereStr2).Count()
  391. if err != nil {
  392. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  393. }
  394. num3, err := g.Model(dao.YoungeeTaskInfo.Table).Where(whereStr3).Count()
  395. if err != nil {
  396. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  397. }
  398. num4, err := g.Model(dao.YoungeeTaskInfo.Table).Where(whereStr4).Count()
  399. if err != nil {
  400. return &TalentHttpResult{Code: -1, Msg: "Get account info failed"}
  401. }
  402. TaskNum := &youngee_talent_model.TaskNum{
  403. AllNum: num1,
  404. SignUpNum: num2,
  405. GoingOnNum: num3,
  406. CompletedNum: num4,
  407. }
  408. return &TalentHttpResult{Code: 0, Msg: "success", Data: TaskNum}
  409. }
  410. // 获取任务详情
  411. func GetTaskDetail(r *ghttp.Request) *TalentHttpResult {
  412. taskId := r.GetQueryInt("task_id", -1)
  413. var task *model.YoungeeTaskInfo
  414. err := g.Model(dao.YoungeeTaskInfo.Table).Where("task_id = ?", taskId).Scan(&task)
  415. if err != nil {
  416. return &TalentHttpResult{Code: -1, Msg: "Get task info failed"}
  417. }
  418. var projectDetail *youngee_talent_model.ProjectDetail
  419. err = g.Model(youngee_talent_model.ProjectDetail{}).WithAll().Where("project_id", task.ProjectId).Scan(&projectDetail)
  420. if err != nil {
  421. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  422. }
  423. var productPhoto *model.YounggeeProductPhoto
  424. err = g.Model(dao.YounggeeProductPhoto.Table).Where("product_id = ? and symbol = 1", projectDetail.ProductId).Scan(&productPhoto)
  425. if err != nil {
  426. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  427. }
  428. var withdrawStatus = 1
  429. var taskIncome *model.YounggeeTalentIncome
  430. err = g.Model(dao.YounggeeTalentIncome.Table).Where("task_id = ? and income_type = 1", taskId).Scan(&taskIncome)
  431. if err != nil {
  432. return &TalentHttpResult{Code: -3, Msg: "Get task income detail failed."}
  433. }
  434. if taskIncome != nil {
  435. withdrawStatus = taskIncome.WithdrawStatus + 1
  436. }
  437. taskDetail := &youngee_talent_model.TaskDetail{}
  438. if projectDetail.ProjectType == 1 {
  439. var strategy *model.RecruitStrategy
  440. err = g.Model(dao.RecruitStrategy.Table).Where("project_id = ? and strategy_id = ?", task.ProjectId, task.StrategyId).Scan(&strategy)
  441. if err != nil {
  442. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  443. }
  444. taskDetail = &youngee_talent_model.TaskDetail{
  445. TaskInfo: task,
  446. ProjectDetail: projectDetail,
  447. ProductPhoto: productPhoto,
  448. Strategy: strategy,
  449. WithdrawStatus: withdrawStatus,
  450. }
  451. } else {
  452. taskDetail = &youngee_talent_model.TaskDetail{
  453. TaskInfo: task,
  454. ProjectDetail: projectDetail,
  455. ProductPhoto: productPhoto,
  456. WithdrawStatus: withdrawStatus,
  457. }
  458. }
  459. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskDetail}
  460. }