package inCircleArticle import ( "context" "fmt" "github.com/fonchain_enterprise/fonchain-main/api/inCircleArticle" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asUser" "github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asUtil" "github.com/fonchain_enterprise/fonchain-main/pkg/utils" "github.com/fonchain_enterprise/fonchain-main/pkg/utils/stime" "github.com/fonchain_enterprise/utils/ipAddrQuery" "github.com/gin-gonic/gin" "time" ) var Handler = &InCircleArticleHandler{} type InCircleArticleHandler struct { } // 创建InCircleArticle func (a *InCircleArticleHandler) CreateInCircleArticle(c *gin.Context) { var req inCircleArticle.InCircleArticleData if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } //获取城市位置 clientIp := c.ClientIP() address, errs := ipAddrQuery.NewIpAddrQuery().GetAddress(clientIp) if errs != nil { req.Location = "苏州" } else { req.Location = utils.If(address.City == "", "苏州", address.City).(string) } //获取创建者信息 if req.CreatedBy == 0 { jwt, err := asUser.GetJwtInfo(c) if err == nil && jwt != nil { req.CreatedBy = int64(jwt.ID) } } //判断推送状态 if req.PublishStatus == 2 { now := time.Now() req.PublishTime = now.Format(stime.Format_Normal_YMDhms) req.Year = int32(now.Year()) req.Month = int32(now.Month()) req.Day = int32(now.Day()) } _, err := service.GrpcInCircleArticleImpl.CreateInCircleArticle(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GrpcInCircleArticleImpl.CreateInCircleArticle Err", err.Error()) return } service.Success(c) } // 删除InCircleArticle func (a *InCircleArticleHandler) DeleteInCircleArticle(c *gin.Context) { var req inCircleArticle.DeleteInCircleArticleRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } _, err := service.GrpcInCircleArticleImpl.DeleteInCircleArticle(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "DeleteInCircleArticle Err", err.Error()) return } service.Success(c) } // 更新InCircleArticle func (a *InCircleArticleHandler) UpdateInCircleArticle(c *gin.Context) { var req inCircleArticle.InCircleArticleData if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } //获取更新者信息 jwt, err := asUser.GetJwtInfo(c) if err == nil && jwt != nil { req.UpdateBy = int64(jwt.ID) } _, err = service.GrpcInCircleArticleImpl.UpdateInCircleArticle(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GrpcInCircleArticleImpl.UpdateInCircleArticle Err", "更新失败") return } service.Success(c) } // 使用id查询InCircleArticle func (a *InCircleArticleHandler) GetInCircleArticleDetail(c *gin.Context) { var req inCircleArticle.GetInCircleArticleByIdRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } resp, err := service.GrpcInCircleArticleImpl.GetInCircleArticleDetail(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GrpcInCircleArticleImpl.GetInCircleArticleDetail Err", "查询失败") return } service.Success(c, resp) } // 批量查询InCircleArticle func (a *InCircleArticleHandler) GetInCircleArticleList(c *gin.Context) { var req GetInCircleArticleListRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } var protoReq inCircleArticle.GetInCircleArticleListRequest asUtil.RequestDataConvert(&req, &protoReq) resp, err := service.GrpcInCircleArticleImpl.GetInCircleArticleList(c, &protoReq) if err != nil { service.ErrorWithMark(c, e.Failed, err, "GetInCircleArticleList Err", err.Error()) return } service.ResponseList(c, resp.List, service.OptionPage(resp.Page, resp.PageSize, resp.Total), service.OptionMsg("查询成功")) } // 批量查询InCircleArticle func (a *InCircleArticleHandler) SetLike(c *gin.Context) { var req inCircleArticle.SetLikeRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } _, err := service.GrpcInCircleArticleImpl.SetLike(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "SetLike Err", err.Error()) return } service.Success(c) } // 同步展讯信息 func (a *InCircleArticleHandler) SyncInCircleArticle(c *gin.Context) { var req inCircleArticle.SyncInCircleArticleRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, "无效参数") return } var err error var timeOutMark = true if req.SyncArticleId == 0 { //完整同步,增加超时处理 timeoutCtx, _ := context.WithTimeout(c, time.Second*10) go func() { _, err = service.GrpcInCircleArticleImpl.SyncInCircleArticle(context.Background(), &req) timeOutMark = false timeoutCtx.Done() }() select { case <-timeoutCtx.Done(): break default: time.Sleep(1 * time.Second) } if timeOutMark { service.Error(c, e.Failed, nil, "数据抓取耗时较长,请稍后再查看结果") } else if err != nil { fmt.Println("同步展讯数据失败,", err.Error()) service.ErrorWithMark(c, e.Failed, err, "SyncInCircleArticle111 Err", err.Error()) } else { service.Success(c) } return } else { _, err := service.GrpcInCircleArticleImpl.SyncInCircleArticle(c, &req) if err != nil { service.ErrorWithMark(c, e.Failed, err, "SetLike Err", err.Error()) return } service.Success(c) } }