package router

import (
	"net/http"
	youngeetalentapi "youngmini_server/app/api/youngee_talent_api"
	"youngmini_server/app/service/backstage_service"
	"youngmini_server/library/response"
	"youngmini_server/middleware"

	"github.com/gogf/gf/container/garray"
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/net/ghttp"
)

// MiddlewareCORS 允许跨域请求中间件
func MiddlewareCORS(r *ghttp.Request) {
	corsOptions := r.Response.DefaultCORSOptions()
	corsOptions.AllowHeaders = "Authorization,Content-Length,X-CSRF-Token,Token,session,X_Requested_With,Accept,Origin,Host,Connection,Accept-Encoding,Accept-Language,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma"
	corsOptions.ExposeHeaders = "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar"
	corsOptions.MaxAge = 1728000
	//corsOptions := ghttp.CORSOptions{
	//AllowOrigin:      "*",
	//AllowMethods:     "POST,GET,OPTIONS,PUT,DELETE,UPDATE",
	//AllowCredentials: "false",
	//MaxAge:           1728000,
	//AllowHeaders:     "Authorization,Content-Length,X-CSRF-Token,Token,session,X_Requested_With,Accept,Origin,Host,Connection,Accept-Encoding,Accept-Language,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma",
	//ExposeHeaders:    "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar",
	//}
	//corsOptions.AllowDomain = []string{"goframe.org", "johng.cn"}
	//corsOptions.AllowHeaders = "Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,X-Forwarded-*,Pragma,Cache-Control,If-Modified-Since,userToken,appid"
	r.Response.CORS(corsOptions)
	r.Middleware.Next()
}

// MiddlewareAuth 用户认证中间件
func MiddlewareAuth(r *ghttp.Request) {
	//排除路径
	array := garray.NewFrom(g.Slice{"/admin/account"})
	if array.Contains(r.RequestURI) == false {
		userData, err := backstage_service.Token.AuthorizationGetUserData(r)
		if err != nil {
			r.Response.WriteStatus(http.StatusForbidden)
			response.JsonExit(r, http.StatusForbidden, err.Error())
		}
		if userData == nil {
			r.Response.WriteStatus(http.StatusUnauthorized)
			response.JsonExit(r, http.StatusForbidden, "用户不存在")
		}
	}
	// 中间件处理逻辑
	r.Middleware.Next()
}

// MiddlewareSuperAuth 超级管理员可以操作的登录接口
func MiddlewareSuperAuth(r *ghttp.Request) {
	// 排除路径
	userData, _ := backstage_service.Token.AuthorizationGetUserData(r)
	if userData.User != "10000000" {
		r.Response.WriteStatus(http.StatusPaymentRequired)
		response.JsonExit(r, http.StatusPaymentRequired, "没有权限操作")
	}
	// 中间件处理逻辑
	r.Middleware.Next()
}
func init() {
	s := g.Server()

	// 解决跨域
	s.BindMiddleware("/*", MiddlewareCORS)

	// v2小程序端接口
	s.Group("/youngee/c", func(group *ghttp.RouterGroup) {
		group.Middleware(middleware.ErrorHandler)

		// 达人不需要鉴权的接口
		group.GET("/g", youngeetalentapi.TalentGetApi)
		group.POST("/p", youngeetalentapi.TalentPostApi)

		// 达人需要鉴权的接口
		group.Group("/t", func(group *ghttp.RouterGroup) {
			group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
			group.GET("/g", youngeetalentapi.TalentAuthGetApi)
			group.POST("/p", youngeetalentapi.TalentAuthPostApi)
		})
	})

	// s.Group("/talent", func(group *ghttp.RouterGroup) {
	// 	group.Middleware(middleware.ErrorHandler)

	// 	// 达人不需要鉴权的接口
	// 	group.GET("/g", talentapi.TalentGetApi)
	// 	group.POST("/p", talentapi.TalentPostApi)

	// 	// 达人需要鉴权的接口
	// 	group.Group("/t", func(group *ghttp.RouterGroup) {
	// 		group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
	// 		group.GET("/g", talentapi.TalentAuthGetApi)
	// 		group.POST("/p", talentapi.TalentAuthPostApi)
	// 	})
	// })

	// // 登录操作这块不需要中间件操作
	// s.Group("admin", func(group *ghttp.RouterGroup) {
	// 	// 不需要登录中间键的接口
	// 	group.POST("/account", backstage_api.Login.Account)
	// 	group.GET("/setEmail", backstage_api.Login.SetEmail)
	// 	group.POST("/checkVerification", backstage_api.Login.CheckVerification)
	// 	group.GET("/findAccount", backstage_api.Login.FindAccount)

	// })

	// // 其他操作需要登录之后才能操作
	// s.Group("admin", func(group *ghttp.RouterGroup) {
	// 	//跨域设置,权限中间件
	// 	group.Middleware(MiddlewareAuth, MiddlewareSuperAuth)
	// 	// 用户操作的接口
	// 	group.GET("/findAllCount", backstage_api.Login.FindAllNumber)
	// 	group.POST("/findAllUser", backstage_api.Login.FindAll)
	// 	group.POST("/creatAccount", backstage_api.Login.Creat)
	// 	group.POST("/updateAccount", backstage_api.Login.Update)
	// 	group.POST("/changeStatus", backstage_api.Login.ChangeStatus)
	// 	group.POST("/changeListStatus", backstage_api.Login.ChangeListStatus)
	// })
	// // 其他功能，需要中间键，后面加
	// s.Group("admin", func(group *ghttp.RouterGroup) {
	// 	// 需要登录中间件的接口
	// 	group.Middleware(MiddlewareAuth)
	// 	// 用于前台页面刷新
	// 	group.POST("/refreshUser", backstage_api.Login.Refresh)

	// 	// 品牌类接口
	// 	group.POST("/creatBrand", backstage_api.Brand.CreatBrand)
	// 	group.POST("/findAllBrand", backstage_api.Brand.FindAll)
	// 	group.POST("/deleteBrand", backstage_api.Brand.DeleteBrand)
	// 	group.POST("/findByIdBrand", backstage_api.Brand.FindByIdBrand)
	// 	group.POST("/updateBrand", backstage_api.Brand.UpdateBrand)
	// 	// 商品类接口
	// 	group.POST("/creatProduct", backstage_api.Product.CreatProduct)
	// 	group.POST("/deleteProduct", backstage_api.Product.DeleteProduct)
	// 	// 财务管理类接口
	// 	group.POST("/findAllFinance", backstage_api.Finance.FindAll)
	// 	group.POST("/changeListStatusFinance", backstage_api.Finance.ChangeListStatus)
	// 	// 达人信息接口
	// 	group.POST("/findAllExpert", backstage_api.Expert.FindAll)
	// 	group.POST("/findAddressById", backstage_api.Expert.FindAddressById)
	// 	group.POST("/changeStatusExpert", backstage_api.Expert.ChangeStatus)
	// 	// 用户管理类接口
	// 	group.POST("/findAllAccount", backstage_api.Account.FindAll)
	// 	group.POST("/findTimeRangeAccount", backstage_api.Account.FindTimeRange)
	// 	group.POST("/changeListStatusAccount", backstage_api.Account.ChangeListStatus)
	// 	// 小红书接口
	// 	group.POST("/findAllLittleRed", backstage_api.LittleRed.FindAll)
	// 	group.POST("/removeAccountLittleRed", backstage_api.LittleRed.RemoveAccount)
	// 	group.POST("/findAllByIdLittleRed", backstage_api.LittleRed.FindAllById)
	// 	// 抖音接口
	// 	group.POST("/findAllTiktok", backstage_api.Tiktok.FindAll)
	// 	group.POST("/removeAccountTiktok", backstage_api.Tiktok.RemoveAccount)
	// 	group.POST("/findAllByIdTiktok", backstage_api.Tiktok.FindAllById)
	// 	// 微博接口
	// 	group.POST("/findAllWeibo", backstage_api.Weibo.FindAll)
	// 	group.POST("/removeAccountWeibo", backstage_api.Weibo.RemoveAccount)
	// 	group.POST("/findAllByIdWeibo", backstage_api.Weibo.FindAllById)
	// 	// 快手接口
	// 	group.POST("/findAllKuaishou", backstage_api.Kuaishou.FindAll)
	// 	group.POST("/removeAccountKuaishou", backstage_api.Kuaishou.RemoveAccount)
	// 	group.POST("/findAllByIdKuaishou", backstage_api.Kuaishou.FindAllById)
	// 	// 哔哩哔哩接口
	// 	group.POST("/findAllBilibili", backstage_api.Bilibili.FindAll)
	// 	group.POST("/removeAccountBilibili", backstage_api.Bilibili.RemoveAccount)
	// 	group.POST("/findAllByIdBilibili", backstage_api.Bilibili.FindAllById)
	// 	// 大众点评接口
	// 	group.POST("/findAllDianping", backstage_api.Dianping.FindAll)
	// 	group.POST("/removeAccountDianping", backstage_api.Dianping.RemoveAccount)
	// 	group.POST("/findAllByIdDianping", backstage_api.Dianping.FindAllById)
	// 	// 知乎接口
	// 	group.POST("/findAllZhihu", backstage_api.Zhihu.FindAll)
	// 	group.POST("/removeAccountZhihu", backstage_api.Zhihu.RemoveAccount)
	// 	group.POST("/findAllByIdZhihu", backstage_api.Zhihu.FindAllById)
	// 	// 任务接口
	// 	group.POST("/creatTask", backstage_api.Task.Creat)
	// 	group.POST("/findAllTask", backstage_api.Task.FindAll)
	// 	group.POST("/alterTaskStatus", backstage_api.Task.AlterTaskStatus)
	// 	group.POST("/findSingleTaskInfo", backstage_api.Task.FindSingleTaskInfo)
	// 	group.POST("/updateBrandTask", backstage_api.Task.UpdateBrand)
	// 	// 修改商品信息
	// 	group.POST("/updateProductTask", backstage_api.Task.UpdateProduct)
	// 	// 修改商品图片信息
	// 	group.POST("/updateProductPhotoTask", backstage_api.Task.UpdateProductPhoto)
	// 	// 增加图片信息
	// 	group.POST("/addProductPhotoTask", backstage_api.Task.AddProductPhoto)
	// 	// 删除图片信息
	// 	group.POST("/deleteProductPhotoTask", backstage_api.Task.DeleteProductPhoto)
	// 	// 修改任务基础信息
	// 	group.POST("/updateTaskBaseInfoTask", backstage_api.Task.UpdateTaskBaseInfo)
	// 	// 修改任务配置总流程
	// 	group.POST("/updateProcedureTask", backstage_api.Task.UpdateProcedure)
	// 	// 修改流程初稿配置
	// 	group.POST("/updateDraftInfoTask", backstage_api.Task.UpdateDraftInfo)
	// 	// 修改流程作品配置
	// 	group.POST("/updateArticleInfoTask", backstage_api.Task.UpdateArticleInfo)
	// 	// 修改质检链接配置
	// 	group.POST("/updateQualityInfoTask", backstage_api.Task.UpdateQualityInfo)
	// 	// 修改达人任务奖励配置
	// 	group.POST("/updateRewardTask", backstage_api.Task.UpdateReward)
	// 	// 修改招募要求配置
	// 	group.POST("/updateRecruitRequirementTask", backstage_api.Task.UpdateRecruitRequirement)
	// 	// 修改合作方式，所需达人数量及其对应稿费
	// 	group.POST("/updateRecruitLevelTask", backstage_api.Task.UpdateRecruitLevel)
	// 	// 增加合作方式，所需达人数量及其对应稿费
	// 	group.POST("/addRecruitLevelTask", backstage_api.Task.AddRecruitLevel)
	// 	// 删除合作方式，所需达人数量及其对应稿费
	// 	group.POST("/deleteRecruitLevelTask", backstage_api.Task.DeleteRecruitLevel)
	// 	// 修改任务执行帮助
	// 	group.POST("/updatePerformHelpTask", backstage_api.Task.UpdatePerformHelp)
	// 	// 查询发货地址
	// 	group.POST("/findSendAddressTask", backstage_api.Task.FindSendAddress)
	// 	// 查询招募统计信息
	// 	group.POST("/findRecruitTask", backstage_api.Task.FindRecruit)
	// 	// 数据BI统计信息
	// 	group.POST("/findBIStatisticsTask", backstage_api.Task.FindBIStatistics)
	// 	// 删除任务
	// 	group.POST("/deleteTask", backstage_api.Task.DeleteTask)
	// 	// 订单接口
	// 	group.POST("/findAllOrder", backstage_api.Order.FindAll)
	// 	group.POST("/findAddressOrder", backstage_api.Order.FindAddress)
	// 	group.POST("/executiveInfoOrder", backstage_api.Order.ExecutiveInfo)
	// 	group.POST("/registrationInfoOrder", backstage_api.Order.RegistrationInfo)
	// 	//  group.POST("/draftFeeOrder", backstage_api.Order.DraftFee)
	// 	group.POST("/alterListStatusOrder", backstage_api.Order.AlterListStatus)
	// 	group.POST("/addDeliveryOrder", backstage_api.Order.AddDelivery)
	// 	group.POST("/addDraftReviewOrder", backstage_api.Order.AddDraftReview)
	// 	group.POST("/addAuditReviewOrder", backstage_api.Order.AddAuditReview)
	// 	group.POST("/addDataQualityOrder", backstage_api.Order.AddDataQuality)
	// 	group.POST("/addLinkQualityOrder", backstage_api.Order.AddLinkQuality)
	// 	group.POST("/findOrderProcedureDetailOrder", backstage_api.Order.FindOrderProcedureDetail)
	// 	// 查询一个订单下面所对应的扣款明细
	// 	group.POST("/ChargesDetailOrder", backstage_api.Order.ChargesDetail)
	// 	// 查询招募等级表
	// 	group.POST("/QueryTaskRecruitTalentLevelOrder", backstage_api.Order.QueryTaskRecruitTalentLevel)
	// 	// 订单完成后需要在收入里面加一条信息
	// 	group.POST("/AddBobocoinIncomeRecordOrder", backstage_api.Order.AddBobocoinIncomeRecord)
	// })

	// // 其他操作需要登录之后才能操作
	// s.Group("admin", func(group *ghttp.RouterGroup) {

	// })
}
