young_team.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. package youngee_talent_service
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gogf/gf/os/gtime"
  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/frame/g"
  11. "github.com/gogf/gf/net/ghttp"
  12. )
  13. func GetYounggeeTeamList(r *ghttp.Request) *TalentHttpResult {
  14. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  15. if err != nil {
  16. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  17. }
  18. status := r.GetQueryInt("status", 0)
  19. if status == 0 {
  20. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  21. }
  22. whereCondition := g.Map{
  23. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  24. dao.YounggeeTalentTeam.Columns.TeamStatus: status,
  25. }
  26. num, err := g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition).Count()
  27. if err != nil {
  28. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  29. }
  30. var teamList []*model.YounggeeTalentTeam
  31. if num != 0 {
  32. err = g.DB().Model(dao.YounggeeTalentTeam.Table).Where("leader_tid = ? and team_status = ?", tid, status).Scan(&teamList)
  33. if err != nil {
  34. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  35. }
  36. }
  37. whereCondition1 := g.Map{
  38. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  39. dao.YounggeeTalentTeam.Columns.TeamStatus: 3,
  40. }
  41. point, err := g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition1).Sum(dao.YounggeeTalentTeam.Columns.PointIncome)
  42. if err != nil {
  43. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  44. }
  45. money, err := g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition1).Sum(dao.YounggeeTalentTeam.Columns.MoneyIncome)
  46. if err != nil {
  47. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  48. }
  49. GetYoungTeamListRsp := youngee_talent_model.GetYoungTeamListRsp{
  50. YoungTeamList: teamList,
  51. Num: num,
  52. PointIncome: int(point),
  53. MoneyIncome: money,
  54. }
  55. return &TalentHttpResult{Code: 0, Msg: "success", Data: GetYoungTeamListRsp}
  56. }
  57. func GetYounggeeTeamDetail(r *ghttp.Request) *TalentHttpResult {
  58. // tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  59. // if err != nil {
  60. // return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  61. // }
  62. teamId := r.GetQueryString("id", "")
  63. projectType := r.GetQueryInt("type", 0)
  64. taskStage := r.GetQueryInt("stage", 0)
  65. if teamId == "" || projectType == 0 || taskStage == 0 {
  66. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  67. }
  68. if projectType == 1 { //全流程项目
  69. // 构造查询条件
  70. whereStr1 := ""
  71. switch taskStage {
  72. case 1:
  73. whereStr1 += fmt.Sprintf("")
  74. case 2:
  75. whereStr1 += fmt.Sprintf("task_stage > 3 and task_stage < 15")
  76. case 3:
  77. whereStr1 += fmt.Sprintf("task_stage = 15")
  78. case 4:
  79. whereStr1 += fmt.Sprintf("task_stage = 16")
  80. default:
  81. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  82. }
  83. whereStr2 := fmt.Sprintf("team_id = %s", teamId)
  84. whereStr3 := fmt.Sprintf("lead_team_id = %s", teamId)
  85. whereStr := whereStr1 + " and " + whereStr2
  86. orStr := whereStr1 + " and " + whereStr3
  87. // 查询
  88. var taskList []*model.YoungeeTaskInfo
  89. var teamTaskList []youngee_talent_model.YounggeeTeamTaskInfo
  90. err := g.DB().Model(dao.YoungeeTaskInfo.Table).Where(whereStr).Or(orStr).Scan(&taskList)
  91. if err != nil {
  92. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  93. }
  94. for _, v := range taskList {
  95. var talentInfo *model.YoungeeTalentInfo
  96. jsonData := []byte(v.TalentPersonalInfoSnap)
  97. json.Unmarshal(jsonData, &talentInfo)
  98. teamTask := youngee_talent_model.YounggeeTeamTaskInfo{
  99. Avatar: talentInfo.Avatar,
  100. TalentWxNickname: talentInfo.TalentWxNickname,
  101. MoneyIncome: v.TeamIncome,
  102. PointIncome: v.TeamPoint,
  103. TaskStage: v.TaskStage,
  104. CurDefaultStatus: v.CurDefaultType,
  105. }
  106. teamTaskList = append(teamTaskList, teamTask)
  107. }
  108. return &TalentHttpResult{Code: 0, Msg: "success", Data: teamTaskList}
  109. } else if projectType == 2 { //选品项目
  110. // 构造查询条件
  111. whereStr1 := ""
  112. switch taskStage {
  113. case 1:
  114. whereStr1 += fmt.Sprintf("")
  115. case 2:
  116. whereStr1 += fmt.Sprintf("task_stage > 4 and task_stage < 9")
  117. case 3:
  118. whereStr1 += fmt.Sprintf("task_stage = 9")
  119. case 4:
  120. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  121. default:
  122. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  123. }
  124. whereStr2 := fmt.Sprintf("team_id = %s", teamId)
  125. whereStr3 := fmt.Sprintf("lead_team_id = %s", teamId)
  126. whereStr := whereStr1 + " and " + whereStr2
  127. orStr := whereStr1 + " and " + whereStr3
  128. // 查询
  129. var taskList []*model.YounggeeSecTaskInfo
  130. var teamTaskList []youngee_talent_model.YounggeeTeamTaskInfo
  131. err := g.DB().Model(dao.YounggeeSecTaskInfo.Table).Where(whereStr).Or(orStr).Scan(&taskList)
  132. if err != nil {
  133. return &TalentHttpResult{Code: -3, Msg: "mysql select failed"}
  134. }
  135. for _, v := range taskList {
  136. var talentInfo *model.YoungeeTalentInfo
  137. jsonData := []byte(v.TalentPersonalInfoSnap)
  138. json.Unmarshal(jsonData, &talentInfo)
  139. teamTask := youngee_talent_model.YounggeeTeamTaskInfo{
  140. Avatar: talentInfo.Avatar,
  141. TalentWxNickname: talentInfo.TalentWxNickname,
  142. MoneyIncome: float64(v.TeamIncome) * v.TaskReward / 100,
  143. PointIncome: v.TeamPoint,
  144. TaskStage: v.TaskStage,
  145. }
  146. teamTaskList = append(teamTaskList, teamTask)
  147. }
  148. return &TalentHttpResult{Code: 0, Msg: "success", Data: teamTaskList}
  149. } else {
  150. return &TalentHttpResult{Code: -2, Msg: "parse param error"}
  151. }
  152. }
  153. // 创建young之团
  154. func AddYoungTeam(r *ghttp.Request) *TalentHttpResult {
  155. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  156. if err != nil {
  157. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  158. }
  159. var addYoungTeamReq *youngee_talent_model.AddYoungTeamReq
  160. err = r.ParseForm(&addYoungTeamReq)
  161. if err != nil {
  162. return &TalentHttpResult{Code: -2, Msg: "params error"}
  163. }
  164. var whereCondition g.Map
  165. if addYoungTeamReq.ProjectType == 1 {
  166. whereCondition = g.Map{
  167. dao.YounggeeTalentTeam.Columns.ProjectId: addYoungTeamReq.ProjectId,
  168. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  169. }
  170. } else {
  171. whereCondition = g.Map{
  172. dao.YounggeeTalentTeam.Columns.SelectionId: addYoungTeamReq.SelectionId,
  173. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  174. }
  175. }
  176. num, err := g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition).Count()
  177. if err != nil {
  178. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  179. }
  180. var youngTeam *model.YounggeeTalentTeam
  181. var teamId string
  182. if num == 0 {
  183. // 生成随机十位数作为young之团id
  184. teamId = utils.GetUuid.GetTeamId(addYoungTeamReq.ProjectId, addYoungTeamReq.SelectionId, tid)
  185. // 查询项目主图
  186. var mainPhoto string
  187. var projectName string
  188. var platform int
  189. if addYoungTeamReq.ProjectType == 1 {
  190. whereCondition1 := g.Map{
  191. dao.ProjectInfo.Columns.ProjectId: addYoungTeamReq.ProjectId,
  192. }
  193. var project *model.ProjectInfo
  194. err = g.DB().Model(dao.ProjectInfo.Table).Where(whereCondition1).Scan(&project)
  195. if err != nil {
  196. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  197. }
  198. projectName = project.ProjectName
  199. platform = project.ProjectPlatform
  200. var productPhotos []model.YounggeeProductPhoto
  201. err = json.Unmarshal([]byte(project.ProductPhotoSnap), &productPhotos)
  202. if err != nil {
  203. return &TalentHttpResult{Code: -3, Msg: "json Unmarshal failed"}
  204. }
  205. fmt.Println("productPhotos: ", productPhotos)
  206. for _, v := range productPhotos {
  207. if v.Symbol == 1 {
  208. mainPhoto = v.PhotoUrl
  209. }
  210. }
  211. } else {
  212. whereCondition1 := g.Map{
  213. dao.YounggeeSelectionInfo.Columns.SelectionId: addYoungTeamReq.SelectionId,
  214. }
  215. var selection *model.YounggeeSelectionInfo
  216. err = g.DB().Model(dao.YounggeeSelectionInfo.Table).Where(whereCondition1).Scan(&selection)
  217. if err != nil {
  218. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  219. }
  220. projectName = selection.SelectionName
  221. platform = selection.Platform
  222. var productPhotos []model.YounggeeProductPhoto
  223. fmt.Println("ProductPhotoSnap: ", selection.ProductPhotoSnap)
  224. err = json.Unmarshal([]byte(selection.ProductPhotoSnap), &productPhotos)
  225. if err != nil {
  226. return &TalentHttpResult{Code: -3, Msg: "json Unmarshal failed"}
  227. }
  228. fmt.Println("productPhotos: ", productPhotos)
  229. for _, v := range productPhotos {
  230. if v.Symbol == 1 {
  231. mainPhoto = v.PhotoUrl
  232. }
  233. }
  234. }
  235. // 查询奖励机制id
  236. newYoungTeam := model.YounggeeTalentTeam{
  237. TeamId: teamId,
  238. TalentId: tid,
  239. ProjectId: addYoungTeamReq.ProjectId,
  240. SelectionId: addYoungTeamReq.SelectionId,
  241. ProjectType: addYoungTeamReq.ProjectType,
  242. ProjectPhoto: mainPhoto,
  243. ProjectName: projectName,
  244. Platform: platform,
  245. TeamStatus: 1,
  246. NumApply: 0,
  247. NumApplySuccess: 0,
  248. MoneyIncome: 0,
  249. PointIncome: 0,
  250. CreateAt: gtime.Now(),
  251. }
  252. _, err = g.DB().Model(dao.YounggeeTalentTeam.Table).Insert(newYoungTeam)
  253. if err != nil {
  254. return &TalentHttpResult{Code: -4, Msg: "YounggeeTalentTeam Insert failed"}
  255. }
  256. } else {
  257. err = g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition).Scan(&youngTeam)
  258. if err != nil {
  259. return &TalentHttpResult{Code: -5, Msg: "data query failed"}
  260. }
  261. teamId = youngTeam.TeamId
  262. }
  263. return &TalentHttpResult{Code: 0, Msg: "success", Data: teamId}
  264. }
  265. // 获取团长young之团id
  266. func GetLeadYoungTeamId(r *ghttp.Request) *TalentHttpResult {
  267. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  268. if err != nil {
  269. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  270. }
  271. projectType := r.GetQueryInt("project_type", -1)
  272. projectId := r.Get("project_id", "")
  273. selectionId := r.Get("selection_id", "")
  274. var whereCondition g.Map
  275. if projectType == 1 {
  276. whereCondition = g.Map{
  277. dao.YounggeeTalentTeam.Columns.ProjectId: projectId,
  278. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  279. }
  280. } else {
  281. whereCondition = g.Map{
  282. dao.YounggeeTalentTeam.Columns.SelectionId: selectionId,
  283. dao.YounggeeTalentTeam.Columns.TalentId: tid,
  284. }
  285. }
  286. num, err := g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition).Count()
  287. if err != nil {
  288. return &TalentHttpResult{Code: -3, Msg: "data query failed"}
  289. }
  290. var youngTeam *model.YounggeeTalentTeam
  291. var teamId string
  292. if num != 0 {
  293. err = g.DB().Model(dao.YounggeeTalentTeam.Table).Where(whereCondition).Scan(&youngTeam)
  294. if err != nil {
  295. return &TalentHttpResult{Code: -5, Msg: "data query failed"}
  296. }
  297. teamId = youngTeam.TeamId
  298. }
  299. getLeadYoungTeamIdRsp := youngee_talent_model.GetLeadYoungTeamIdRsp{
  300. teamId,
  301. num,
  302. }
  303. return &TalentHttpResult{Code: 0, Msg: "success", Data: getLeadYoungTeamIdRsp}
  304. }