s_t_cooperate.go 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. package service
  2. import (
  3. "context"
  4. "time"
  5. "youngee_b_api/db"
  6. "youngee_b_api/model/gorm_model"
  7. "youngee_b_api/model/http_model"
  8. )
  9. var STCooperate *stcooperate
  10. type stcooperate struct {
  11. }
  12. // CreateSTCooperate 创建或更新服务商-达人合作关系
  13. func (*stcooperate) CreateSTCooperate(ctx context.Context, supplierId int, TaskIds []string) error {
  14. // 1. 根据taskId取出对应的platform_user_id
  15. for _, taskId := range TaskIds {
  16. taskInfo, taskInfoErr := db.GetTaskByTaskId(ctx, taskId)
  17. if taskInfoErr != nil {
  18. return taskInfoErr
  19. }
  20. if taskInfo != nil {
  21. platformUserInfo, platformUserInfoErr := db.FindUserInfoByOpenId(ctx, taskInfo.OpenId)
  22. if platformUserInfoErr != nil {
  23. return platformUserInfoErr
  24. }
  25. if platformUserInfo != nil {
  26. // 根据platformUserId判断需要新增一条记录还是合作次数增加
  27. total, countErr := db.CountCooperateInfoBySupplierAndPlatform(ctx, supplierId, platformUserInfo.Id, 1)
  28. if countErr != nil {
  29. return countErr
  30. }
  31. if total == 0 {
  32. // create
  33. var cooperateInfo *gorm_model.SupplierTalentCooperate
  34. cooperateInfo = &gorm_model.SupplierTalentCooperate{}
  35. cooperateInfo.SupplierId = supplierId
  36. cooperateInfo.CooperateNum = 1
  37. cooperateInfo.TalentID = taskInfo.TalentID
  38. cooperateInfo.TaskType = 1
  39. cooperateInfo.ProjectTaskId = taskId
  40. cooperateInfo.Platform = platformUserInfo.PlatformId
  41. cooperateInfo.PlatformUserId = platformUserInfo.Id
  42. current := time.Now()
  43. cooperateInfo.CreateTime = &current
  44. createErr := db.CreateSTCooperateInfo(ctx, cooperateInfo)
  45. if createErr != nil {
  46. return createErr
  47. }
  48. } else {
  49. // +1
  50. plusErr := db.UpdateSTCooperateInfo(ctx, supplierId, platformUserInfo.Id, 1)
  51. if plusErr != nil {
  52. return plusErr
  53. }
  54. }
  55. }
  56. }
  57. }
  58. return nil
  59. }
  60. // CreateSTLocalCooperate 创建或更新服务商-达人本地生活合作关系
  61. func (*stcooperate) CreateSTLocalCooperate(ctx context.Context, supplierId int, TaskIds []string) error {
  62. // 1. 根据taskId取出对应的platform_user_id
  63. for _, taskId := range TaskIds {
  64. taskInfo, taskInfoErr := db.GetLocalTaskInfoById(ctx, taskId)
  65. if taskInfoErr != nil {
  66. return taskInfoErr
  67. }
  68. if taskInfo != nil {
  69. platformUserInfo, platformUserInfoErr := db.FindUserInfoByOpenId(ctx, taskInfo.OpenID)
  70. if platformUserInfoErr != nil {
  71. return platformUserInfoErr
  72. }
  73. if platformUserInfo != nil {
  74. // 根据platformUserId判断需要新增一条记录还是合作次数增加
  75. total, countErr := db.CountCooperateInfoBySupplierAndPlatform(ctx, supplierId, platformUserInfo.Id, 2)
  76. if countErr != nil {
  77. return countErr
  78. }
  79. if total == 0 {
  80. // create
  81. var cooperateInfo *gorm_model.SupplierTalentCooperate
  82. cooperateInfo = &gorm_model.SupplierTalentCooperate{}
  83. cooperateInfo.SupplierId = supplierId
  84. cooperateInfo.CooperateNum = 1
  85. cooperateInfo.TalentID = taskInfo.TalentID
  86. cooperateInfo.TaskType = 2
  87. cooperateInfo.LocalTaskID = taskId
  88. cooperateInfo.Platform = platformUserInfo.PlatformId
  89. cooperateInfo.PlatformUserId = platformUserInfo.Id
  90. current := time.Now()
  91. cooperateInfo.CreateTime = &current
  92. createErr := db.CreateSTCooperateInfo(ctx, cooperateInfo)
  93. if createErr != nil {
  94. return createErr
  95. }
  96. } else {
  97. // +1
  98. plusErr := db.UpdateSTCooperateInfo(ctx, supplierId, platformUserInfo.Id, 2)
  99. if plusErr != nil {
  100. return plusErr
  101. }
  102. }
  103. }
  104. }
  105. }
  106. return nil
  107. }
  108. // GetTalentListInfo 合作列表信息
  109. func (*stcooperate) GetTalentListInfo(ctx context.Context, request *http_model.TalentListRequest) (*http_model.TalentListData, error) {
  110. var talentListData *http_model.TalentListData
  111. talentListData = &http_model.TalentListData{}
  112. // 1. 查找信息
  113. talentListInfo, total, talentListInfoErr := db.GetSTCooperateInfo(ctx, request.SupplierId, request.Type, request.Platform, request.Nickname, request.PageSize, request.PageNum)
  114. if talentListInfoErr != nil {
  115. return nil, talentListInfoErr
  116. }
  117. if talentListInfo != nil {
  118. talentListData.Total = total
  119. for _, c := range talentListInfo {
  120. var cooperateData *http_model.SupplierTalentCooperateData
  121. cooperateData = &http_model.SupplierTalentCooperateData{}
  122. cooperateData.SupplierId = c.SupplierId
  123. cooperateData.CooperateID = c.CooperateID
  124. cooperateData.Platform = c.Platform
  125. cooperateData.CooperateNum = c.CooperateNum
  126. cooperateData.PlatformUserId = c.PlatformUserId
  127. // 查询平台信息
  128. platformUserInfo, platformUserErr := db.FindUserInfoById(ctx, cooperateData.PlatformUserId)
  129. if platformUserErr != nil {
  130. return nil, platformUserErr
  131. }
  132. if platformUserInfo != nil {
  133. cooperateData.City = platformUserInfo.City
  134. cooperateData.Nickname = platformUserInfo.NickName
  135. cooperateData.HeadUrl = platformUserInfo.HeadUri
  136. cooperateData.Fans = platformUserInfo.Fan
  137. cooperateData.LikeNum = platformUserInfo.LikeNum
  138. cooperateData.CommitNum = 0
  139. cooperateData.CollectNum = 0
  140. }
  141. talentListData.TalentListInfo = append(talentListData.TalentListInfo, cooperateData)
  142. }
  143. }
  144. return talentListData, nil
  145. }
  146. // GetTalentInfo 达人信息
  147. func (*stcooperate) GetTalentInfo(ctx context.Context, request *http_model.TalentDataRequest) (*http_model.TalentData, error) {
  148. var cooperateData *http_model.TalentData
  149. cooperateData = &http_model.TalentData{}
  150. // 查询平台信息
  151. platformUserInfo, platformUserErr := db.FindUserInfoById(ctx, request.PlatformUserId)
  152. if platformUserErr != nil {
  153. return nil, platformUserErr
  154. }
  155. if platformUserInfo != nil {
  156. cooperateData.City = platformUserInfo.City
  157. cooperateData.Nickname = platformUserInfo.NickName
  158. cooperateData.HeadUrl = platformUserInfo.HeadUri
  159. cooperateData.Fans = platformUserInfo.Fan
  160. cooperateData.VoteNum = platformUserInfo.LikeNum
  161. cooperateData.Sale30Days = 0
  162. cooperateData.Sale60Days = 0
  163. cooperateData.Sale90Days = 0
  164. cooperateData.CommitNum = 0
  165. cooperateData.CollectNum = 0
  166. cooperateData.Skill = platformUserInfo.Skill
  167. cooperateData.Gender = platformUserInfo.Gender
  168. }
  169. return cooperateData, nil
  170. }
  171. // CountTalentTaskNum 统计达人任务数量
  172. func (*stcooperate) CountTalentTaskNum(ctx context.Context, request *http_model.TalentCooperateDataRequest) (*http_model.TalentCooperateData, error) {
  173. var cooperateData *http_model.TalentCooperateData
  174. cooperateData = &http_model.TalentCooperateData{}
  175. // 查询平台信息
  176. platformUserInfo, platformUserErr := db.FindUserInfoById(ctx, request.PlatformUserId)
  177. if platformUserErr != nil {
  178. return nil, platformUserErr
  179. }
  180. if platformUserInfo != nil {
  181. }
  182. return cooperateData, nil
  183. }
  184. // GetTalentProjectList 达人种草表现
  185. func (*stcooperate) GetTalentProjectList(ctx context.Context, request *http_model.TalentProjectListRequest) (*http_model.TalentProjectListData, error) {
  186. // 1. 查询openId
  187. var projectTasks *http_model.TalentProjectListData
  188. projectTasks = &http_model.TalentProjectListData{}
  189. platformUserInfo, platformUserErr := db.FindUserInfoById(ctx, request.PlatformUserId)
  190. if platformUserErr != nil {
  191. return nil, platformUserErr
  192. }
  193. if platformUserInfo != nil {
  194. // 2. 查询种草子任务信息
  195. projectTaskInfo, total, projectTaskInfoErr := db.GetTaskListByOpenId(ctx, platformUserInfo.OpenId, request.OrderBy, request.OrderDesc, request.PageNum, request.PageSize)
  196. if projectTaskInfoErr != nil {
  197. projectTasks.Total = 0
  198. return nil, projectTaskInfoErr
  199. }
  200. if projectTaskInfo != nil {
  201. projectTasks.Total = total
  202. for _, task := range projectTaskInfo {
  203. var projectTask *http_model.TalentProjectData
  204. projectTask = &http_model.TalentProjectData{}
  205. projectTask.ReadNum = task.ViewAvg
  206. projectTask.VoteNum = task.VoteAvg
  207. projectTask.CollectNum = task.CommitAvg
  208. projectTask.CommitNum = task.CommitAvg
  209. // 种草任务信息
  210. projectInfo, projectInfoErr := db.GetProjectDetail(ctx, task.ProjectID)
  211. if projectInfoErr != nil {
  212. return nil, projectInfoErr
  213. }
  214. if projectInfo != nil {
  215. projectTask.ProjectName = projectInfo.ProjectName
  216. // 商品信息
  217. productInfo, productInfoErr := db.GetProductByID(ctx, projectInfo.ProductID)
  218. if productInfoErr != nil {
  219. return nil, productInfoErr
  220. }
  221. if productInfo != nil {
  222. projectTask.ProductPrice = productInfo.ProductPrice
  223. }
  224. // 商品图片
  225. productPhotoInfo, productPhotoErr := db.GetProductPhotoByProductID(ctx, projectInfo.ProductID)
  226. if productPhotoErr != nil {
  227. return nil, productPhotoErr
  228. }
  229. if productPhotoInfo != nil {
  230. for _, photo := range productPhotoInfo {
  231. // fmt.Println(photo)
  232. if photo.Symbol == 1 {
  233. projectTask.ProductPhotoSymbol = 1
  234. projectTask.ProductPhotoUrl = photo.PhotoUrl
  235. projectTask.ProductPhotoUid = photo.PhotoUid
  236. }
  237. }
  238. }
  239. }
  240. projectTasks.TalentProjectDataListInfo = append(projectTasks.TalentProjectDataListInfo, projectTask)
  241. }
  242. }
  243. }
  244. return projectTasks, nil
  245. }
  246. // GetTalentLocalList 达人本地表现
  247. func (*stcooperate) GetTalentLocalList(ctx context.Context, request *http_model.TalentLocalListRequest) (*http_model.TalentLocalListData, error) {
  248. return nil, nil
  249. }