package route

import (
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	"youngee_b_api/handler"
	"youngee_b_api/middleware"
	"youngee_b_api/model/http_model"
)

func InitRoute(r *gin.Engine) {
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // nothing
	a := r.Group("/youngee")
	{
		a.POST("/register", handler.WrapRegisterHandler)                 // 服务商主账号注册
		a.POST("/addNewSubAccount", handler.WrapAddNewSubAccountHandler) // 服务商子账号注册
		a.POST("/addNewJob", handler.WrapaddNewJobHandler)               // 服务商新增岗位
		a.POST("/updateJob", handler.WrapupdateJobHandler)               // 服务商修改岗位
		a.POST("/deleteJob", handler.WrapdeleteJobHandler)               // 服务商删除岗位
		a.POST("/sendCode", handler.WrapSendCodeHandler)                 // 发送登录验证码
		a.POST("/login", handler.WrapCodeLoginHandler)                   // 服务商登录
		a.GET("/test/ping", func(c *gin.Context) {
			resp := http_model.CommonResponse{
				Status:  0,
				Message: "",
				Data:    "ping",
			}
			c.JSON(200, resp)
		})
	}

	//r.Any("/testDemo", func(c *gin.Context) {
	//	resp := http_model.CommonResponse{
	//		Status:  0,
	//		Message: "",
	//		Data:    "pong",
	//	}
	//	c.JSON(200, resp)
	//	// 注意这里只是debug用的 接口要写成handler形式
	//})
	m := r.Group("/youngee/m")
	{
		m.Use(middleware.LoginAuthMiddleware)
		m.POST("/test", func(c *gin.Context) {
			c.JSON(200, "ok")
			// 注意这里只是debug用的 接口要写成handler形式
			auth := middleware.GetSessionAuth(c)
			logrus.Infof("auth:%+v", auth)
		})

		// 服务商版公开种草接口
		m.POST("/sProject/fullProjectList", handler.WrapFullProjectListHandler)          // 商单广场-公开种草任务列表
		m.POST("/sProject/sProjectList", handler.WrapSProjectListHandler)                // 商单管理-服务商商单列表
		m.POST("/sProject/addToList", handler.WrapAddToListHandler)                      // 公开种草任务服务商加入商单
		m.POST("/sProject/showProject", handler.WrapShowProjectHandler)                  // 种草任务内容
		m.POST("/sProject/showSProject", handler.WrapShowSProjectHandler)                // 服务商种草任务内容
		m.POST("/sProject/product/find", handler.WrapFindProductHandler)                 // 查找单个产品
		m.POST("/sProject/projectStrategy", handler.WrapProjectStrategyHandler)          // 招募策略查询
		m.POST("/sProject/taskList", handler.WrapProjectTaskListHandler)                 // 任务列表
		m.POST("/sProject/changeTaskStatus", handler.WrapProjectChangeTaskStatusHandler) // 改变子任务的状态 报名通过，拒绝报名
		m.POST("/sProject/showTaskProgress", handler.WrapShowTaskProgressHandler)        // 展示子任务进度
		m.POST("/qrcode/getWxQrcode", handler.WrapGetWxQRCodeHandler)                    // 获取微信二维码

		// 服务商版定向种草接口
		m.POST("/sProject/specialList", handler.WrapSpecialProjectListHandler)            // 商单广场 - 定向种草任务列表
		m.POST("/sProject/sSpecialList", handler.WrapSpecialSProjectListHandler)          // 商单管理 - 定向种草任务列表
		m.POST("/sProject/specialAddToList", handler.WrapSpecialSProjectAddToListHandler) // 定向种草任务加入商单 (同意/拒绝定向邀约)
		m.POST("/sProject/specialAddStrategy", handler.WrapSpecialAddStrategyHandler)     // 定向种草任务添加招募策略

		// 下面接口都是商家端遗留
		m.POST("/project/create", handler.WrapCreateProjectHandler)                          // 创建项目
		m.POST("/project/update", handler.WrapUpdateProjectHandler)                          // 更新项目
		m.POST("/project/delete", handler.WrapDeleteProjectHandler)                          // 删除项目
		m.POST("/product/create", handler.WrapCreateProductHandler)                          // 创建项目
		m.POST("/product/findall", handler.WrapFindAllProductHandler)                        // 查询全部产品
		m.POST("/project/draftlist", handler.WrapProjectDraftBoxListHandler)                 // 草稿箱查询
		m.GET("/project/getCreatingNumber", handler.WrapGetCreatingNumberHandler)            // 查询创建中项目数量
		m.POST("/pay/paysum", handler.WrapPaySumHandler)                                     // 支付总额
		m.POST("/pay/projectpay", handler.WrapProjectPayHandler)                             // 支付
		m.POST("/enterprise/balance", handler.WrapEnterpriseBalanceHandler)                  // 样叽页面各种余额
		m.POST("/project/tasklogisticslist", handler.WrapTaskLogisticsListHandler)           // 物流信息查询
		m.POST("/project/createlogistics", handler.WrapCreateLogisticsHandler)               // 创建物流信息
		m.POST("/project/signforreceipt", handler.WrapSignForReceiptHandler)                 // 签收
		m.POST("/project/taskscriptlist", handler.WrapTaskScriptListHandler)                 // 查询脚本列表
		m.POST("/project/scriptopinion", handler.WrapScriptOpinionHandler)                   // 脚本审核意见提交
		m.POST("/project/acceptscript", handler.WrapAcceptScriptHandler)                     // 同意脚本
		m.POST("/project/tasksketchlist", handler.WrapTaskSketchListHandler)                 // 查询初稿列表
		m.POST("/project/findsketchphoto", handler.WrapFindSketchPhotoHandler)               // 查询脚本配图和视频demo
		m.POST("/project/sketchopinion", handler.WrapSketchOpinionHandler)                   // 初稿审核意见提交
		m.POST("/project/acceptsketch", handler.WrapAcceptSketchHandler)                     // 同意脚本
		m.POST("/project/tasklinklist", handler.WrapTaskLinkListHandler)                     // 查询链接列表
		m.POST("/project/linkopinion", handler.WrapLinkOpinionHandler)                       // 链接审核意见提交
		m.POST("/project/acceptlink", handler.WrapAcceptLinkHandler)                         // 同意链接
		m.POST("/project/taskdatalist", handler.WrapTaskDataListHandler)                     // 查询数据列表
		m.POST("/project/dataopinion", handler.WrapDataOpinionHandler)                       // 数据审核意见提交
		m.POST("/project/acceptdata", handler.WrapAcceptDataHandler)                         // 同意数据
		m.POST("/pay/getCodeUrl", handler.WrapGetCodeUrlHandler)                             // 获取微信支付codeURL
		m.POST("/pay/queryOrderByTradeId", handler.WrapQueryOrderByTradeIdHandler)           // 根据交易id查询微信是否扫码付款
		m.POST("/pay/rechargeBalance", handler.WrapRechargeBalanceHandler)                   // 支付成功后修改企业余额
		m.POST("/project/feeDetail", handler.WrapFeeDetailHandler)                           // 查看结项的费用明细
		m.POST("/pay/rechargeRecord", handler.WrapRechargeRecordHandler)                     // 查看充值记录
		m.POST("/invoice/addReceiveAddress", handler.WrapAddReceiveAddressHandler)           // 新增收货地址
		m.POST("/invoice/addReceiveInfo", handler.WrapAddReceiveInfoHandler)                 // 新增发票信息
		m.GET("/invoice/getReceiveAddress", handler.WrapGetReceiveAddressHandler)            // 获取收货地址
		m.GET("/invoice/getReceiveInfo", handler.WrapGetReceiveInfoHandler)                  // 获取发票信息
		m.POST("/invoice/operateReceiveInfo", handler.WrapOperateReceiveInfoHandler)         // 修改或删除发票信息
		m.POST("/invoice/operateReceiveAddress", handler.WrapOperateReceiveAddressHandler)   // 修改或删除发票地址
		m.POST("/invoice/addInvoiceRecord", handler.WrapAddInvoiceRecordHandler)             // 开票
		m.POST("/invoice/getInvoiceRecord", handler.WrapGetInvoiceRecordHandler)             // 获取开票记录
		m.POST("/project/getlogisticsnumberinfo", handler.WrapGetLogisticsNumberInfoHandler) // 获取物流数量
		m.POST("/project/getlinknumberinfo", handler.WrapGetLinkNumberInfoHandler)           // 获取链接信息
		m.POST("/project/getdatanumberinfo", handler.WrapGetDataNumberInfoHandler)           // 获取数据信息
		m.POST("/project/getreviewnumberinfo", handler.WrapGetReviewNumberInfoHandler)       // 获取审稿信息
		m.POST("/project/getdefaultnumberinfo", handler.WrapGetDefaultNumberInfoHandler)     // 获取违约信息
		m.POST("/project/taskdefaultreviewlist", handler.WrapTaskDefaultReviewListHandler)   // 查询违约列表-脚本、初稿、链接上传违约
		m.POST("/project/taskdefaultdatalist", handler.WrapTaskDefaultDataListHandler)       // 查询违约列表-数据违约
		m.POST("/project/taskteminatinglist", handler.WrapTaskTerminatingListHandler)        // 查询违约列表-解约待处理
		m.POST("/project/taskteminatedlist", handler.WrapTaskTerminatedListHandler)          // 查询违约列表-解约
		m.POST("/project/taskteminate", handler.WrapTaskTerminateHandler)                    // 解约
		m.POST("/project/getsketchinfo", handler.WrapGetSketchInfoHandler)                   // 获取初稿
		m.POST("/project/taskfinishlist", handler.WrapTaskFinishListHandler)                 // 查询违约列表-数据违约
		m.POST("/project/getfinishdata", handler.WrapGetFinishDataHandler)                   // 获取结案信息
		m.GET("/project/finduserinfo", handler.WrapFindUserInfoHandler)                      // 获取账户信息
		m.POST("/project/updatauserinfo", handler.WrapUpdateUserInfoHandler)                 // 更新账户信息
		m.POST("/project/getfinishnumberinfo", handler.WrapGetFinishNumberInfoHandler)       // 获取结案数量
		m.POST("/project/transferToPublic", handler.WrapTransferToPublicHandler)             // 对公转账
		m.GET("/workspace/headNums", handler.WrapWorkspaceHeadNumsHandler)                   // 工作台上面数字显示
		m.POST("/workspace/BarNums", handler.WrapWorkspaceBarNumsHandler)                    // 工作台柱状图数字显示

		m.POST("/project/getSpecialInviteNumber", handler.WrapGetSpecialInviteNumberHandler)       // 查询专项任务邀请管理任务数量
		m.POST("/project/getSpecialReviewNumber", handler.WrapGetSpecialReviewNumberHandler)       // 查询专项任务审稿管理任务数量
		m.POST("/project/getSpecialLinkNumber", handler.WrapGetSpecialLinkNumberHandler)           // 查询专项任务发布管理任务数量
		m.POST("/project/getSpecialDataNumber", handler.WrapGetSpecialDataNumberHandler)           // 查询专项任务数据管理任务数量
		m.POST("/project/specialTaskInviteList", handler.WrapSpecialTaskInviteListHandler)         // 查询专项任务邀请管理任务列表
		m.POST("/project/specialTaskSketchList", handler.WrapSpecialTaskSketchListHandler)         // 查询专项任务审稿管理任务列表
		m.POST("/project/specialTaskScriptList", handler.WrapSpecialTaskScriptListHandler)         // 查询专项任务审稿管理任务列表
		m.POST("/project/specialTaskLinkList", handler.WrapSpecialTaskLinkListHandler)             // 查询专项任务发布管理任务列表
		m.POST("/project/specialTaskDataList", handler.WrapSpecialTaskDataListHandler)             // 查询专项任务数据管理任务列表
		m.POST("/project/specialTaskFinishDataList", handler.WrapSpecialTaskFinishDataListHandler) // 查询专项任务结案数据任务列表
		m.POST("/project/getSpecialLogisticNumber", handler.WrapGetSpecialLogisticNumberHandler)   // 查询专项任务发货管理任务数量
		m.POST("/project/getSpecialLogisticList", handler.WrapGetSpecialLogisticListHandler)       // 查询专项任务发货管理任务列表
		m.POST("/project/createSpecialLogistics", handler.WrapCreateSpecialLogisticsHandler)       // 创建专项创建物流信息
		m.POST("/project/signForSpecialLogistic", handler.WrapSignForSpecialLogisticHandler)       // 签收专项创建物流订单
		m.POST("/project/getSpecialSettleNumber", handler.WrapGetSpecialSettleNumberHandler)       // 查询专项任务结算管理任务数量
		m.POST("/project/specialTaskSettleList", handler.WrapSpecialTaskSettleListHandler)         // 查询专项任务结算管理任务列表
		m.POST("/project/getEnterpriseBalance", handler.WrapGetEnterpriseBalanceHandler)           // 查询当前账户所剩余额
		m.POST("/project/specialSettlePay", handler.WrapSpecialSettlePayHandler)                   // 结算
		m.POST("/project/getspecialfinishdata", handler.WrapGetSpecialFinishDataHandler)           // 查询专项任务结案单结案数据
		m.POST("/workspace/ddlproject", handler.WrapWorkspaceDDLprojectHandler)                    // 工作台项目统计
		m.POST("/project/recruit/getservicecharge", handler.WrapGetServiceChargeHandler)           // 获取产品置换服务费
		m.POST("/product/deletePhotoUrl", handler.WrapDeletePhotoUrlHandler)                       // 在数据库中删除图片url
		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler)                         // 查询项目广场项目列表
	}

	// 商家带货相关接口
	s := r.Group("/youngee/s")
	{
		s.Use(middleware.LoginAuthMiddleware)
		s.POST("/selection/delete", handler.WrapDeleteSelectionHandler)                       // 删除选品
		s.POST("/selection/findAll", handler.WrapFindAllSelectionHandler)                     // 选品列表
		s.POST("/selection/detail", handler.WrapSelectionDetailHandler)                       // 选品详情
		s.POST("/selection/create", handler.WrapCreateSelectionHandler)                       // 创建选品
		s.POST("/selection/update", handler.WrapUpdateSelectionHandler)                       // 更新选品
		s.POST("/selection/pay", handler.WrapPaySelectionHandler)                             // 支付选品项目
		s.POST("/selection/task/list", handler.WrapGetSecTaskListHandler)                     // 查询选品的任务列表(确定、发货、结算)
		s.POST("/selection/task/coop/pass", handler.WrapPassSecTaskCoopHandler)               // 同意任务合作
		s.POST("/selection/task/coop/refuse", handler.WrapRefuseSecTaskCoopHandler)           // 拒绝任务合作
		s.POST("/selection/task/logistics/create", handler.WrapCreateSecTaskLogisticsHandler) // 上传物流信息
		s.POST("/selection/task/logistics/update", handler.WrapUpdateSecTaskLogisticsHandler) // 修改物流信息
		s.POST("/selection/task/settle", handler.WrapSettleSecTaskHandler)                    // 结算
		s.POST("/selection/getAllSelection", handler.WrapGetAllSelectionHandler)              // 查询选品广场选品列表
	}

	// 推广合作板块
	c := r.Group("/youngee/c")
	{
		c.Use(middleware.LoginAuthMiddleware)
		c.POST("/cooperate/enterpriseList", handler.WrapEnterpriseListHandler)   // 商家列表
		c.POST("/cooperate/agreeCooperate", handler.WrapAgreeCooperateHandler)   // 同意入库邀请
		c.POST("/cooperate/rejectCooperate", handler.WrapRejectCooperateHandler) // 拒绝入库邀请
	}

	// 本地生活板块
	l := r.Group("/youngee/l")
	{
		l.Use(middleware.LoginAuthMiddleware)
		l.POST("/localLife/fullList", handler.WrapFullListHandler)             // 商单广场-公开本地生活任务列表
		l.POST("/localLife/detail", handler.WrapLocalLifeDetailHandler)        // 本地生活任务详情
		m.POST("/sLocalLife/addToList", handler.WrapLocalLifeAddToListHandler) // 公开本地生活任务服务商加入商单
	}

	// 财务结算板块
	f := r.Group("/youngee/f")
	{
		f.Use(middleware.LoginAuthMiddleware)

		// 财务管理
		f.POST("/fullSProject/billList", handler.WrapFullSProjectBillListHandler)     // 种草账单列表
		f.POST("/supplierWithdraw/toList", handler.WrapSupplierToWithdrawListHandler) // 服务商可提现账单列表
		f.POST("/supplierWithdraw/create", handler.WrapCreateSupplierWithdrawHandler) // 服务商提现

		// 回票
		f.POST("/supplierInvoice/incomeList", handler.WrapFullSProjectIncomeListHandler) // 可回发票列表
		f.POST("/supplierInvoice/create", handler.WrapCreateSupplierInvoiceHandler)      // 合并账单回票
		f.POST("/supplierInvoice/update", handler.WrapUpdateSupplierInvoiceHandler)      // 上传发票
		f.POST("/supplierInvoice/invoiceList", handler.WrapSupplierInvoiceListHandler)   // 发票列表
	}
}
