home.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package home
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/model/home"
  5. "dashoo.cn/micro/app/model/plat"
  6. "dashoo.cn/micro/app/service"
  7. server "dashoo.cn/micro/app/service/plat"
  8. "encoding/json"
  9. "github.com/gogf/gf/util/gconv"
  10. )
  11. type HomeService struct {
  12. *service.ContextService
  13. }
  14. func NewHomeService(ctx context.Context) (svc *HomeService, err error) {
  15. svc = new(HomeService)
  16. if svc.ContextService, err = svc.Init(ctx); err != nil {
  17. return nil, err
  18. }
  19. return svc, nil
  20. }
  21. func (s *HomeService) SetUpHomeReportConfig(param *home.SetUpHomeConfig) (err error) {
  22. svc, err := server.NewUserConfigService(s.Ctx)
  23. config, _ := svc.QueryByUserIdAndModelCode(s.GetCxtUserId(), param.ModuleCode)
  24. by, _ := json.Marshal(param)
  25. if config != nil {
  26. config.ConfigInfo = gconv.String(by)
  27. err = svc.Edit(config)
  28. } else {
  29. config := new(plat.PlatUserConfig)
  30. config.UserId = s.GetCxtUserId()
  31. config.ModuleCode = param.ModuleCode
  32. config.ConfigInfo = gconv.String(by)
  33. _, err = svc.Create(config)
  34. }
  35. return
  36. }
  37. func (s *HomeService) QueryHomeReportConfig(moduleCode string) (config *plat.PlatUserConfig, err error) {
  38. svc, err := server.NewUserConfigService(s.Ctx)
  39. config, err = svc.QueryByUserIdAndModelCode(s.GetCxtUserId(), moduleCode)
  40. return
  41. }
  42. func (s *HomeService) QueryHomeNumReportData(param *home.SearchNumReportData) (resp *home.NumReportResponses, err error) {
  43. numConfig := make([]*home.NumReportResponse, len(param.ReportId))
  44. for _, v := range param.ReportId {
  45. numReport := new(home.NumReportResponse)
  46. numReport.Id = v
  47. value, _ := s.getReportData(v, nil)
  48. numReport.Data = value
  49. numConfig = append(numConfig, numReport)
  50. }
  51. resp.NumReportResponse = numConfig
  52. return
  53. }
  54. func (s *HomeService) QueryHomeDataReportData(param *home.SearchDataReportData) (resp *home.DataReportResponse, err error) {
  55. resp = new(home.DataReportResponse)
  56. resp.Id = param.ReportId
  57. value, err := s.getReportData(param.ReportId, &param.Params)
  58. if err != nil {
  59. return nil, err
  60. }
  61. resp.Data = value
  62. return
  63. }
  64. // 10000-20000之间:个人看板数据 TODO 疑似与 sys_report 表对应?
  65. // 20000-30000之间:报表数据 TODO 疑似与 sys_report 表对应?
  66. func (s *HomeService) getReportData(id int64, params *map[string]interface{}) (interface{}, error) {
  67. switch id {
  68. case 10000:
  69. // 个人看板数据
  70. return nil, nil
  71. case 20000:
  72. // 报表数据 个人销售金额
  73. return getPersonalContractReportData(s.ContextService.Ctx, "CONTRACT", params)
  74. case 20001:
  75. // 报表数据 个人销售回款
  76. return getPersonalContractReportData(s.ContextService.Ctx, "COLLECTION", params)
  77. case 20002:
  78. // 报表数据 总部销售金额
  79. return getCompanyContractReportData(s.ContextService.Ctx, "CONTRACT", params)
  80. case 20003:
  81. // 报表数据 总部销售回款
  82. return getCompanyContractReportData(s.ContextService.Ctx, "COLLECTION", params)
  83. default:
  84. return nil, nil
  85. }
  86. }