123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- package sectask
- import (
- "context"
- "fmt"
- "github.com/gogf/gf/frame/g"
- "strconv"
- "youngmini_server/app/dao"
- "youngmini_server/app/model"
- "youngmini_server/app/model/youngee_talent_model"
- "youngmini_server/app/utils"
- //"youngmini_server/app/model/youngee_talent_model"
- _ "youngmini_server/app/model/youngee_talent_model"
- )
- var service = new(secTaskService)
- type secTaskService struct {
- }
- func (s *secTaskService) List(ctx context.Context, listSecTaskReq *ListSecTaskReq, tid string) (res ListSecTaskRes, err error) {
- var taskStageList = g.Slice{}
- switch listSecTaskReq.TaskStage {
- case 1:
- taskStageList = g.Slice{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
- break
- case 2:
- taskStageList = g.Slice{2, 3}
- break
- case 3:
- taskStageList = g.Slice{6, 7, 8}
- break
- case 4:
- taskStageList = g.Slice{5, 9, 10}
- break
- }
- //根据达人id和任务阶段筛选,含任务信息。
- whereCondition := g.Map{
- dao.YounggeeSecTaskInfo.Columns.TaskStage: taskStageList,
- dao.YounggeeSecTaskInfo.Columns.TalentId: tid,
- }
- err = dao.YounggeeSecTaskInfo.Ctx(ctx).WithAll().Where(whereCondition).Scan(&res.SecTask)
- if err != nil {
- return
- }
- res.Count = len(res.SecTask)
- //键为字符串类型,值为model.InfoThirdPlatform类型
- platformMap := make(map[string]model.InfoThirdPlatform)
- platformInfo := []*model.InfoThirdPlatform{}
- if res.Count != 0 {
- err = g.Model(dao.InfoThirdPlatform.Table).Scan(&platformInfo)
- if err != nil {
- fmt.Println(err)
- return
- }
- //以便后续根据平台ID快速检索和访问平台信息。
- //strconv.Itoa用于将int转为字符串
- //ListSecTaskSql中定义了平台表中的属性
- for i, _ := range platformInfo {
- platformMap[strconv.Itoa(platformInfo[i].PlatformId)] = *platformInfo[i]
- }
- // 为每个任务根据项目id查询项目名称和主图
- for index, v := range res.SecTask {
- whereCondition1 := g.Map{
- dao.YounggeeSelectionInfo.Columns.SelectionId: v.SelectionId,
- }
- var selection *model.YounggeeSelectionInfo
- err = g.Model(dao.YounggeeSelectionInfo.Table).Where(whereCondition1).Scan(&selection)
- if err != nil || selection == nil {
- if err == nil {
- fmt.Println("没查到选品")
- } else {
- return
- }
- }
- whereCondition1 = g.Map{
- dao.YoungeePlatformAccountInfo.Columns.PlatformId: selection.Platform,
- dao.YoungeePlatformAccountInfo.Columns.TalentId: v.TalentId,
- }
- var account *model.YoungeePlatformAccountInfo
- err = g.Model(dao.YoungeePlatformAccountInfo.Table).Where(whereCondition1).Scan(&account)
- if err != nil {
- fmt.Println(err)
- return
- }
- // 查询RewardStrategy表数据
- // 或者使用指针类型并初始化
- var RewardStrategy []*youngee_talent_model.RewardStrategy
- err = g.DB().Model(youngee_talent_model.RewardStrategy{}).WithAll().Where("selection_id", v.SelectionId).Scan(&RewardStrategy)
- if err != nil {
- fmt.Println("ffff")
- }
- var sectaskTable *youngee_talent_model.SecTaskInfoDetail
- err = g.DB().Model("younggee_sec_task_info").Where("talent_id = ? AND selection_id = ? ", tid, v.SelectionId).Scan(§askTable)
- if err != nil {
- fmt.Println(err)
- return
- }
- res.SecTask[index].PlatformIconUrl = platformMap[strconv.Itoa(selection.Platform)].PlatformIcon
- res.SecTask[index].PlatformName = platformMap[strconv.Itoa(selection.Platform)].PlatformName
- res.SecTask[index].PlatformNickName = account.PlatformNickname
- res.SecTask[index].SelectionName = selection.SelectionName
- res.SecTask[index].ProductPhotoSnap = selection.ProductPhotoSnap
- res.SecTask[index].TaskDdl = selection.TaskDdl
- res.SecTask[index].RewardStrategy = RewardStrategy //悬赏策略表
- res.SecTask[index].SecTaskTable = sectaskTable //sectask表中全部数据
- //res.SecTask[index].YounggeeProductPhoto = ProductPhoto
- //代替商品照片快照
- //fmt.Println("--------------res.SecTask[index]: ", res.SecTask[index])
- fmt.Println("--------------selection: ", selection)
- }
- }
- return
- }
- func (s *secTaskService) ListTab(listSecTaskTabReq *ListSecTaskTabReq, tid string) (res *ListSecTaskTabRes) {
- //获得tab_stage
- var whereStr string
- //前端点击了那个tab TabStage
- switch listSecTaskTabReq.TabStage {
- case 1:
- // 返回指定talentId的所有数据
- whereStr = fmt.Sprintf("talent_id='%s'", tid)
- case 2:
- // 返回指定talentId且free_stage为3, 4, 5的数据
- whereStr = fmt.Sprintf("talent_id='%s' AND free_stage IN (3, 4, 5)", tid)
- case 3:
- // 返回指定talentId且sale_num_all大于0的数据
- whereStr = fmt.Sprintf("talent_id='%s' AND sale_num_all > 0", tid)
- case 4:
- // 返回指定talentId且已过DDL的数据
- whereStr = fmt.Sprintf("talent_id='%s' AND task_ddl < NOW()", tid)
- }
- //查task表全部数据
- var secTaskInfoList []youngee_talent_model.SecTaskInfoDetail
- err := g.DB().Model(youngee_talent_model.SecTaskInfoDetail{}).WithAll().
- Where(whereStr).
- Order("task_ddl DESC").
- Scan(&secTaskInfoList)
- if err != nil {
- return &ListSecTaskTabRes{Count: -1, Msg: err.Error(), SecTaskTable: nil}
- }
- c := len(secTaskInfoList)
- return &ListSecTaskTabRes{Count: c, Msg: "success", SecTaskTable: secTaskInfoList}
- }
- func UpdateStageAndStatus(ctx context.Context, updateStageReq *UpdateStageReq) (err error) {
- whereCondition := g.Map{
- dao.YounggeeSecTaskInfo.Columns.TaskId: updateStageReq.TaskId,
- }
- dataUpdate := g.Map{
- dao.YounggeeSecTaskInfo.Columns.TaskStage: updateStageReq.TaskStage,
- dao.YounggeeSecTaskInfo.Columns.AssignmentStatus: updateStageReq.AssignmentStatus,
- strconv.Itoa(dao.YounggeeSecTaskInfo.Columns.RewardStage): updateStageReq.RewardStage,
- }
- fmt.Println("----UpdateStageAndStatus-->", dataUpdate)
- _, err = dao.YounggeeSecTaskInfo.Ctx(ctx).Where(whereCondition).Data(dataUpdate).Update()
- if err != nil {
- return
- }
- return
- }
- func (s *secTaskService) ShowLogisticsDetail(ctx context.Context, tid, taskId string) (*LogisticsDetail, error) {
- var resp = LogisticsDetail{
- LogisticsCompany: "",
- LogisticsNumber: "",
- AddressSnap: "",
- LogisticsContext: nil,
- }
- // 校验达人id是否一致,并查询达人收货地址快照
- talentWhereCondition := g.Map{
- dao.YounggeeSecTaskInfo.Columns.TaskId: taskId,
- }
- var secTask *model.YounggeeSecTaskInfo
- err := dao.YounggeeSecTaskInfo.Ctx(ctx).Where(talentWhereCondition).Scan(&secTask)
- if err != nil || secTask == nil {
- g.Log().Error("任务表查询失败")
- return nil, err
- }
- if secTask.TalentId != tid {
- g.Log().Error("用户id不一致")
- return nil, err
- }
- //报名成功时已有地址快照
- resp.AddressSnap = secTask.TalentPostAddrSnap
- // 根据任务id查询物流快递公司和快递单号
- whereCondition := g.Map{
- dao.YoungeeTaskLogistics.Columns.TaskId: taskId,
- }
- var logisticsInfo *model.YoungeeTaskLogistics
- err = dao.YoungeeTaskLogistics.Ctx(ctx).Where(whereCondition).Scan(&logisticsInfo)
- if err != nil || logisticsInfo == nil {
- g.Log().Error("物流信息表查询失败")
- return nil, err
- }
- resp.LogisticsCompany = logisticsInfo.CompanyName
- resp.LogisticsNumber = logisticsInfo.LogisticsNumber
- // 查询物流详细信息,返回规定的快递状态
- var logisticsDetail = utils.GetKDDetails(logisticsInfo.CompanyName, logisticsInfo.LogisticsNumber)
- if err != nil || logisticsInfo == nil {
- g.Log().Error("调用快递100API查询失败")
- return nil, err
- }
- resp.LogisticsContext = logisticsDetail
- return &resp, nil
- }
|