package home import ( "context" "dashoo.cn/micro/app/model/home" "dashoo.cn/micro/app/model/plat" "dashoo.cn/micro/app/service" server "dashoo.cn/micro/app/service/plat" "encoding/json" "github.com/gogf/gf/util/gconv" ) type HomeService struct { *service.ContextService } func NewHomeService(ctx context.Context) (svc *HomeService, err error) { svc = new(HomeService) if svc.ContextService, err = svc.Init(ctx); err != nil { return nil, err } return svc, nil } func (s *HomeService) SetUpHomeReportConfig(param *home.SetUpHomeConfig) (err error) { svc, err := server.NewUserConfigService(s.Ctx) config, _ := svc.QueryByUserIdAndModelCode(s.GetCxtUserId(), param.ModuleCode) by, _ := json.Marshal(param) if config != nil { config.ConfigInfo = gconv.String(by) err = svc.Edit(config) } else { config := new(plat.PlatUserConfig) config.UserId = s.GetCxtUserId() config.ModuleCode = param.ModuleCode config.ConfigInfo = gconv.String(by) _, err = svc.Create(config) } return } func (s *HomeService) QueryHomeReportConfig(moduleCode string) (config *plat.PlatUserConfig, err error) { svc, err := server.NewUserConfigService(s.Ctx) config, err = svc.QueryByUserIdAndModelCode(s.GetCxtUserId(), moduleCode) return } func (s *HomeService) QueryHomeNumReportData(param *home.SearchNumReportData) (resp *home.NumReportResponses, err error) { numConfig := make([]*home.NumReportResponse, len(param.ReportId)) for _, v := range param.ReportId { numReport := new(home.NumReportResponse) numReport.Id = v value, _ := s.getReportData(v, nil) numReport.Data = value numConfig = append(numConfig, numReport) } resp.NumReportResponse = numConfig return } func (s *HomeService) QueryHomeDataReportData(param *home.SearchDataReportData) (resp *home.DataReportResponse, err error) { resp = new(home.DataReportResponse) resp.Id = param.ReportId value, err := s.getReportData(param.ReportId, ¶m.Params) if err != nil { return nil, err } resp.Data = value return } // 10000-20000之间:个人看板数据 TODO 疑似与 sys_report 表对应? // 20000-30000之间:报表数据 TODO 疑似与 sys_report 表对应? func (s *HomeService) getReportData(id int64, params *map[string]interface{}) (interface{}, error) { switch id { case 10000: // 个人看板数据 return nil, nil case 20000: // 报表数据 个人销售金额 return getPersonalContractReportData(s.ContextService.Ctx, "CONTRACT", params) case 20001: // 报表数据 个人销售回款 return getPersonalContractReportData(s.ContextService.Ctx, "COLLECTION", params) case 20002: // 报表数据 总部销售金额 return getCompanyContractReportData(s.ContextService.Ctx, "CONTRACT", params) case 20003: // 报表数据 总部销售回款 return getCompanyContractReportData(s.ContextService.Ctx, "COLLECTION", params) default: return nil, nil } }