get_charts_logic.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package dashboard
  2. import (
  3. "context"
  4. "fmt"
  5. "time"
  6. "wechat-api/internal/svc"
  7. "wechat-api/internal/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type GetChartsLogic struct {
  11. logx.Logger
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. }
  15. func NewGetChartsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetChartsLogic {
  16. return &GetChartsLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx}
  20. }
  21. func (l *GetChartsLogic) GetCharts(req *types.ChartsReq) (resp *types.ChartsResp, err error) {
  22. // 获取组织id
  23. var organizationId uint64 = 0
  24. isAdmin := l.ctx.Value("isAdmin").(bool)
  25. if isAdmin && req.OrganizationId != nil && *req.OrganizationId != 0 {
  26. organizationId = *req.OrganizationId
  27. } else {
  28. organizationId = l.ctx.Value("organizationId").(uint64)
  29. }
  30. // 解析起始和截止时间
  31. layouts := []string{
  32. "2006-01", // 对应 "2024-01"
  33. "2006-01-02", // 对应 "2024-01-01"
  34. }
  35. var startTime time.Time
  36. for _, layout := range layouts {
  37. startTime, err = time.Parse(layout, *req.StartDate)
  38. if err == nil {
  39. break
  40. }
  41. }
  42. if err != nil {
  43. fmt.Println("解析开始时间失败:", err)
  44. return
  45. }
  46. var endTime time.Time
  47. for _, layout := range layouts {
  48. endTime, err = time.Parse(layout, *req.EndDate)
  49. if err == nil {
  50. break
  51. }
  52. }
  53. if err != nil {
  54. fmt.Println("解析结束时间失败:", err)
  55. return
  56. }
  57. return
  58. }