package service

import (
	"fmt"
	"math/rand"
	"sort"
	"time"
)

var CommentList map[string]interface{}

type comment struct {
	Eventtime string `json:"eventtime"`
	Name      string `json:"name"`
	Content   string `json:"content"`
}

var names = []string{"张先生",
	"宋先生",
	"王先生",
	"刘先生",
	"寇先生",
	"云先生",
	"唐先生",
	"胡先生",
	"肖先生",
	"吕先生",
	"钟先生",
	"宁先生",
	"向先生",
	"井先生",
	"杜先生",
	"张女士",
	"武女士",
	"赵女士",
	"李女士",
	"孙女士",
	"段女士",
	"姚女士",
	"韩女士",
	"崔女士",
	"康女士",
	"林女士",
	"朱女士",
	"边女士",
	"宫女士",
	"盖女士"}

var contents = []string{"回答的很专业，回复及时，认真负责，很棒。",
	"医生很有耐心，很专业，回复也很快，太棒了，会持续支持。",
	"帮助很大，反馈及时，态度良好，非常感谢。",
	"解答很透彻，也不随便用药，服务很棒。",
	"谢谢医生的建议，本来担心的要死，听了医生的建议，放心了。",
	"医生很有耐心，可以很好的解决问题。",
	"听过医生的讲解，知道了基本病因，能很好的配合治疗。赞",
	"医生特别有耐心，帮助到了我，非常感谢。",
	"医生太棒啦！回复的特别详细，还提醒我三天后来复诊！",
	"超级无敌快而且问题！朋友推荐我来问的，果然不错！",
	"专业，思路清晰。直接点名关键问题，很棒的医生。",
	"医生很耐心，回答很仔细，悬着的心可以放下了。",
	"朋友推荐过来的，医生很有耐心，很专业太棒了。",
	"医生很负责，讲解的很详细",
	"通过医生的讲解，知道了基本病因，能很好的配合治疗，赞。",
	"医生太棒啦！接诊快恢复的特别详细，很专业太棒了",
	"经验丰富，耐心细致，值得信赖",
	"医生很负责，我非常满意，医生经验丰富。",
	"朋友推荐过来的，果然不错，医生专业负责",
	"很喜欢，下次有需要会再次连线问诊",
	"服务很棒，医生很专业",
	"接诊速度快，回答也很专业",
	"本以为在线问诊不靠谱，没想到这么专业，点赞",
	"医生很有耐心，很专业，我的小花生病再也不用愁了",
	"咨询过3次，每次都是很有耐心",
	"第一次使用在线问诊，医生很专业，很有赞新，点赞",
	"帮朋友咨询的，医生很专业，很有耐心",
	"医生态度很好，给出的建议很有用",
	"医生很认真哟，非常感谢",
	"感谢医生认证解答猫的问题，给出了很好的解决方法，真实感谢"}

func Generate() interface{} {

	res := make([]comment, 0)

	now := time.Now().AddDate(0,  0, -1)
	years := make([]string, 0)
	years = append(years, now.Format("2006-01-02"))
	years = append(years, now.AddDate(0, 0, -1).Format("2006-01-02"))
	years = append(years, now.AddDate(0, 0, -2).Format("2006-01-02"))

	fmt.Println("years: ", years)

	times := make([]string, 0)
	for i := 1; i <= 60; i++ {
		num := fmt.Sprintf("%v", i)
		if len(num) == 1 {
			times = append(times, fmt.Sprintf("0%v", i))
		} else {
			times = append(times, fmt.Sprintf("%v", i))
		}
	}

	hours := make([]string, 0)
	for i := 9; i <= 18; i++ {
		num := fmt.Sprintf("%v", i)
		if len(num) == 1 {
			hours = append(hours, fmt.Sprintf("0%v", i))
		} else {
			hours = append(hours, fmt.Sprintf("%v", i))
		}
	}

	fmt.Println("hours: ", hours)

	r := rand.New(rand.NewSource(time.Now().UnixNano()))

	for i := 0; i < 30; i++ {

		res = append(res, comment{
			Eventtime: fmt.Sprintf("%s %s:%s:%s", years[r.Intn(3)], hours[r.Intn(9)], times[r.Intn(60)], times[r.Intn(60)]),
			Name:      names[r.Intn(30)],
			Content:   contents[r.Intn(30)],
		})

	}

	sort.Slice(res, func(i, j int) bool {
		return res[i].Eventtime > res[j].Eventtime
	})

	return res
}
