123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- package service
- import (
- "fmt"
- "math/rand"
- "time"
- "youngee_b_api/app/vo"
- )
- type ViewDataService struct{}
- func (v ViewDataService) SelectionTalentDataDetail(param *vo.SelectionShowDataParam) (vo.ReSelectionTalentData, error) {
- // 设置随机种子
- rand.Seed(time.Now().UnixNano())
- // 随机生成 AddWindowNum 列表
- var rangeLength int64
- if param.Type == 1 {
- rangeLength = 7
- } else if param.Type == 2 {
- rangeLength = 30
- } else {
- rangeLength = 90
- }
- addWindowNum := make([]int64, rangeLength)
- for i := range addWindowNum {
- addWindowNum[i] = rand.Int63n(1000) // 随机生成0-999的数
- }
- // 随机生成 SalesDistribution 和 FansDistribution 列表
- salesDistribution := []int64{
- rand.Int63n(1000),
- rand.Int63n(500),
- rand.Int63n(100),
- rand.Int63n(50),
- rand.Int63n(10),
- rand.Int63n(5),
- }
- fansDistribution := []int64{
- rand.Int63n(1000),
- rand.Int63n(20),
- rand.Int63n(5),
- rand.Int63n(3),
- }
- // 随机生成 RegionRank 列表
- regions := []string{"广东", "广西", "海南", "湖南", "浙江", "福建", "河南", "江苏", "四川", "江西"}
- regionRank := make([]vo.RankItem, len(regions))
- totalPercent := 0.0
- for i := 0; i < len(regions)-1; i++ {
- percent := rand.Float64() * (1 - totalPercent) / 2 // 确保生成的总和小于 1
- totalPercent += percent
- regionRank[i] = vo.RankItem{
- Region: regions[i],
- Percent: percent,
- }
- }
- // 最后一个元素的 Percent 设置为 1 - totalPercent,确保总和小于 1
- regionRank[len(regions)-1] = vo.RankItem{
- Region: regions[len(regions)-1],
- Percent: 1 - totalPercent,
- }
- reSelectionTalentData := vo.ReSelectionTalentData{
- AddWindowNum: addWindowNum,
- AvgFanNum: rand.Int63n(10000), // 平均粉丝数
- SalesDistribution: salesDistribution,
- FansDistribution: fansDistribution,
- MaleNum: rand.Int63n(500), // 随机生成男性人数
- FemaleNum: rand.Int63n(500), // 随机生成女性人数
- RegionRank: regionRank,
- }
- return reSelectionTalentData, nil
- }
- func (v ViewDataService) SelectionSampleDataDetail(param *vo.SelectionShowDataParam) (vo.ReSelectionSampleData, error) {
- // 设置随机种子
- rand.Seed(time.Now().UnixNano())
- // 随机生成 AddWindowNum 列表
- var rangeLength int64
- if param.Type == 1 {
- rangeLength = 7
- } else if param.Type == 2 {
- rangeLength = 30
- } else {
- rangeLength = 90
- }
- enrollNum := make([]int64, rangeLength)
- for i := range enrollNum {
- enrollNum[i] = rand.Int63n(1000) // 随机生成0-999的数
- }
- // 随机生成 SalesDistribution 和 FansDistribution 列表
- salesDistribution := []int64{
- rand.Int63n(1000),
- rand.Int63n(500),
- rand.Int63n(100),
- rand.Int63n(50),
- rand.Int63n(10),
- rand.Int63n(5),
- }
- fansDistribution := []int64{
- rand.Int63n(1000),
- rand.Int63n(20),
- rand.Int63n(5),
- rand.Int63n(3),
- }
- // 随机生成 RegionRank 列表
- regions := []string{"广东", "广西", "海南", "湖南", "浙江", "福建", "河南", "江苏", "四川", "江西"}
- regionRank := make([]vo.RankItem, len(regions))
- totalPercent := 0.0
- for i := 0; i < len(regions)-1; i++ {
- percent := rand.Float64() * (1 - totalPercent) / 2 // 确保生成的总和小于 1
- totalPercent += percent
- regionRank[i] = vo.RankItem{
- Region: regions[i],
- Percent: percent,
- }
- }
- // 最后一个元素的 Percent 设置为 1 - totalPercent,确保总和小于 1
- regionRank[len(regions)-1] = vo.RankItem{
- Region: regions[len(regions)-1],
- Percent: 1 - totalPercent,
- }
- reSelectionTalentData := vo.ReSelectionSampleData{
- EnrollNum: enrollNum,
- AgreeSampleNum: rand.Int63n(10000),
- SampledNum: rand.Int63n(1000),
- AvgFanNum: rand.Int63n(10000),
- SalesDistribution: salesDistribution,
- FansDistribution: fansDistribution,
- MaleNum: rand.Int63n(500), // 随机生成男性人数
- FemaleNum: rand.Int63n(500), // 随机生成女性人数
- RegionRank: regionRank,
- }
- return reSelectionTalentData, nil
- }
- func (v ViewDataService) SelectionDataDetail(param *vo.SelectionShowDataParam) (vo.ReSelectionData, error) {
- // 设置随机种子
- rand.Seed(time.Now().UnixNano())
- // 随机生成 AddWindowNum 列表
- var rangeLength int64
- if param.Type == 1 {
- rangeLength = 7
- } else if param.Type == 2 {
- rangeLength = 30
- } else {
- rangeLength = 90
- }
- payData := make([]float64, rangeLength)
- for i := range payData {
- payData[i] = rand.Float64() * 10000
- }
- estimateData := make([]float64, rangeLength)
- for i := range estimateData {
- estimateData[i] = rand.Float64() * 10000
- }
- payOrderNum := make([]int64, rangeLength)
- for i := range payOrderNum {
- payOrderNum[i] = rand.Int63n(1000)
- }
- saleOrderNum := make([]int64, rangeLength)
- for i := range saleOrderNum {
- saleOrderNum[i] = rand.Int63n(1000)
- }
- // 随机生成 TalentMsgList 数据
- totalTalents := rand.Int63n(100) // 假设总共有100个达人
- talentMsgList := make([]vo.TalentMsg, 0, param.PageSize)
- start := (param.Page - 1) * param.PageSize
- end := start + param.PageSize
- if end > totalTalents {
- end = totalTalents
- }
- for i := start; i < end; i++ {
- talentMsgList = append(talentMsgList, vo.TalentMsg{
- PhotoUrl: fmt.Sprintf("https://example.com/photo/%d.jpg", i),
- Nickname: fmt.Sprintf("达人%d", i),
- Account: fmt.Sprintf("account_%d", i),
- OrderNum: rand.Int63n(100),
- GMV: rand.Float64() * 10000,
- })
- }
- resultVO := vo.ResultVO{
- Page: int(param.Page),
- PageSize: int(param.PageSize),
- Total: totalTalents,
- Data: talentMsgList,
- }
- reSelectionData := vo.ReSelectionData{
- PayData: payData,
- EstimateData: estimateData,
- ForecastCommission: rand.Float64() * 100000,
- PayOrderNum: payOrderNum,
- SaleOrderNum: saleOrderNum,
- AvgCommissionRate: rand.Float64(),
- TalentMsgList: resultVO,
- }
- return reSelectionData, nil
- }
|