task_logistics.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package youngee_task_service
  2. import (
  3. "github.com/gogf/gf/util/gconv"
  4. "youngmini_server/app/dao"
  5. "youngmini_server/app/model"
  6. "youngmini_server/app/model/youngee_talent_model"
  7. "youngmini_server/app/utils"
  8. "github.com/gogf/gf/encoding/gjson"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/net/ghttp"
  11. )
  12. // 修改达人收货地址
  13. func OnUpdateLogisticsAddress(r *ghttp.Request) *TalentHttpResult {
  14. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  15. if err != nil {
  16. return &TalentHttpResult{Code: -1, Msg: "Update talent address failed"}
  17. }
  18. var modifyReq *youngee_talent_model.TaskLogisticsAddress
  19. err = r.ParseForm(&modifyReq)
  20. if err != nil {
  21. return &TalentHttpResult{Code: -2, Msg: "params error"}
  22. }
  23. address := model.YoungeeTalentDeliveryAddress{
  24. TalentId: tid,
  25. RegionCode: modifyReq.RegionCode,
  26. DetailAddr: modifyReq.DetailAddr,
  27. PhoneNumber: modifyReq.PhoneNumber,
  28. ReceiverName: modifyReq.ReceiverName,
  29. }
  30. // 生成收货地址快照
  31. addrSnap, err := gjson.Encode(address)
  32. if err != nil {
  33. return &TalentHttpResult{Code: -3, Msg: "encode delivery address snap failed"}
  34. }
  35. _, err = g.DB().Model(dao.YoungeeTaskInfo.Table).Data("talent_post_addr_snap", addrSnap).Where("task_id = ?", modifyReq.TaskId).Update()
  36. if err != nil {
  37. return &TalentHttpResult{Code: -4, Msg: "update failed"}
  38. }
  39. return &TalentHttpResult{Code: 0, Msg: "success"}
  40. }
  41. // 物流信息汇总
  42. func GetTaskLogisticsNumber(r *ghttp.Request) *TalentHttpResult {
  43. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  44. if err != nil {
  45. return &TalentHttpResult{Code: -1, Msg: "获取用户信息失败"}
  46. }
  47. // 定义物流状态统计结果
  48. type LogisticsStatusCount struct {
  49. Pending int `json:"pending"` // 待发货
  50. Shipped int `json:"shipped"` // 已发货
  51. Delivered int `json:"delivered"` // 已签收
  52. }
  53. var result LogisticsStatusCount
  54. // 定义需要查询的表
  55. tables := []string{"younggee_sec_task_info", "youngee_task_info", "youngee_local_task_info"}
  56. // 遍历每个表,查询三种状态的数量
  57. for _, table := range tables {
  58. var count int
  59. // 查询待发货数量
  60. count, err = g.DB().Model(table).
  61. Where("talent_id = ? AND logistics_status = ?", tid, 1).
  62. Count()
  63. if err != nil {
  64. return &TalentHttpResult{Code: -2, Msg: "查询待发货数量失败"}
  65. }
  66. result.Pending += count
  67. // 查询已发货数量
  68. count, err = g.DB().Model(table).
  69. Where("talent_id = ? AND logistics_status = ?", tid, 2).
  70. Count()
  71. if err != nil {
  72. return &TalentHttpResult{Code: -3, Msg: "查询已发货数量失败"}
  73. }
  74. result.Shipped += count
  75. // 查询已签收数量
  76. count, err = g.DB().Model(table).
  77. Where("talent_id = ? AND logistics_status = ?", tid, 3).
  78. Count()
  79. if err != nil {
  80. return &TalentHttpResult{Code: -4, Msg: "查询已签收数量失败"}
  81. }
  82. result.Delivered += count
  83. }
  84. // 返回统计结果
  85. return &TalentHttpResult{Code: 0, Msg: "success", Data: result}
  86. }
  87. // 物流信息汇总
  88. func GetTaskLogisticsList(r *ghttp.Request) *TalentHttpResult {
  89. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  90. if err != nil {
  91. return &TalentHttpResult{Code: -1, Msg: "获取用户信息失败"}
  92. }
  93. tabKey := r.GetQueryInt("tab_key", 0)
  94. // 定义表与任务类型的映射
  95. tableTaskTypeMap := map[string]int{
  96. "younggee_sec_task_info": 1, // 带货任务
  97. "youngee_task_info": 2, // 种草任务
  98. "youngee_local_task_info": 3, // 本地生活任务
  99. }
  100. // 定义结果集
  101. var taskList []*youngee_talent_model.YoungeeGeneralTaskInfo
  102. // 遍历每个表
  103. for table, taskType := range tableTaskTypeMap {
  104. //var taskIds []*string
  105. // 查询符合条件的 task_id
  106. query := g.DB().Model(table).Where("talent_id = ?", tid)
  107. switch tabKey {
  108. case 1: // 待发货
  109. query = query.Where("logistics_status = ?", 1)
  110. case 2: // 已发货
  111. query = query.Where("logistics_status = ?", 2)
  112. case 3: // 已签收
  113. query = query.Where("logistics_status = ?", 3)
  114. }
  115. all, err := query.Fields("task_id").All()
  116. array := all.Array()
  117. taskIds := gconv.Strings(array)
  118. if err != nil {
  119. return &TalentHttpResult{Code: -2, Msg: "查询任务ID失败", Data: err.Error()}
  120. }
  121. // 遍历 task_id 查询详情
  122. for _, taskId := range taskIds {
  123. //定义name、photo、price、accountInfo
  124. var TaskName string
  125. var TaskPhoto string
  126. var TaskPrice float64
  127. var AccountInfo *youngee_talent_model.KuaishouUserInfo
  128. var SourceType int
  129. // 根据任务类型查询对应的任务详情表
  130. switch taskType {
  131. case 1: // 带货任务
  132. var taskDetail *youngee_talent_model.SecTaskInfoDetail
  133. err = g.DB().Model("younggee_sec_task_info").WithAll().Where("task_id = ?", taskId).Scan(&taskDetail)
  134. TaskName = taskDetail.SelectionInfo.SelectionName
  135. TaskPhoto = taskDetail.YounggeeProductPhoto[0].PhotoUrl
  136. TaskPrice = taskDetail.YounggeeProduct.ProductPrice
  137. AccountInfo = taskDetail.KsUserInfo[0]
  138. SourceType = 1 //只有公开
  139. case 2: // 种草任务
  140. var taskDetail *youngee_talent_model.YoungeeTaskInfo
  141. err = g.DB().Model("youngee_task_info").WithAll().Where("task_id = ?", taskId).Scan(&taskDetail)
  142. TaskName = taskDetail.ProjectDetail.ProjectName
  143. TaskPhoto = taskDetail.ProjectDetail.YounggeeProductPhoto[0].PhotoUrl
  144. TaskPrice = taskDetail.ProjectDetail.YounggeeProduct.ProductPrice
  145. AccountInfo = taskDetail.KsUserInfo[0]
  146. SourceType = taskDetail.ProjectType
  147. case 3: // 本地生活任务
  148. var taskDetail *youngee_talent_model.YoungeeLocalTaskInfo
  149. err = g.DB().Model("youngee_local_task_info").WithAll().Where("task_id = ?", taskId).Scan(&taskDetail)
  150. TaskName = taskDetail.LocalInfoDetail.LocalName
  151. TaskPhoto = taskDetail.LocalInfoDetail.YounggeeProductPhoto[0].PhotoUrl
  152. TaskPrice = taskDetail.LocalInfoDetail.YounggeeTeamBuying.TeamBuyingPrice
  153. AccountInfo = taskDetail.KsUserInfo[0]
  154. SourceType = taskDetail.LocalType
  155. }
  156. if err != nil {
  157. return &TalentHttpResult{Code: -3, Msg: "获取任务详情失败"}
  158. }
  159. // 组装任务详情
  160. task := &youngee_talent_model.YoungeeGeneralTaskInfo{
  161. TalentId: tid,
  162. TaskName: TaskName, // 任务名称
  163. TaskPhoto: TaskPhoto, // 任务图片
  164. TaskPrice: TaskPrice, // 任务价格
  165. AccountInfo: AccountInfo, // 账号信息
  166. SourceType: SourceType, // 1公开,2种草
  167. TaskType: taskType, //1.带货 2.种草 3.本地生活
  168. }
  169. taskList = append(taskList, task)
  170. }
  171. }
  172. // 返回结果
  173. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskList}
  174. }
  175. // 获取物流信息
  176. func GetTaskLogisticsInfo(r *ghttp.Request) *TalentHttpResult {
  177. taskId := r.GetQueryInt("task_id", -1)
  178. var logistics *model.YoungeeTaskLogistics
  179. err := g.Model("youngee_task_logistics").Where("task_id = ?", taskId).Scan(&logistics)
  180. if err != nil {
  181. return &TalentHttpResult{Code: -1, Msg: "Get logistics info failed"}
  182. }
  183. return &TalentHttpResult{Code: 0, Msg: "success", Data: logistics}
  184. }