package router import ( "fmt" "github.com/gin-gonic/gin" "github.com/pkg/errors" "psi/config" "psi/controllers" "psi/middleware" ) var employeeApi = &controllers.EmployeeApi{} var bookApi = &controllers.BookApi{} var locationApi = &controllers.LocationApi{} var warehouseApi = &controllers.WarehouseApi{} var ocrApi = &controllers.OcrApi{} var supplierApi = &controllers.SupplierApi{} var productApi = &controllers.ProductApi{} var productBookApi = &controllers.ProductBookApi{} var processApi = &controllers.ProcessApi{} var barcodeApi = &controllers.BarcodeApi{} var purchaseApi = &controllers.PurchaseApi{} var waveApi = &controllers.WaveApi{} var sortingSettingsApi = &controllers.SortingSettingsApi{} var salesApi = &controllers.SalesApi{} var receivingApi = &controllers.ReceivingApi{} var inventoryApi = &controllers.InventoryApi{} var carApi = &controllers.CarApi{} var shopApi = &controllers.ShopApi{} var outboundApi = &controllers.OutboundApi{} var shippingApi = &controllers.ShippingApi{} var goodsImportApi = &controllers.GoodsImportApi{} var locationImportApi = &controllers.LocationImportApi{} var outTaskApi = &controllers.OutTaskApi{} var logisticsApi = &controllers.LogisticsApi{} var statistApi = &controllers.StatistApi{} var userTypeApi = &controllers.UserTypeApi{} var splitAccountConfigApi = &controllers.SplitAccountConfigApi{} var splitAccountDeductionLogApi = &controllers.SplitAccountDeductionLogApi{} var configApi = &controllers.ConfigApi{} var cancelLogisticsApi = &controllers.CancelLogisticsApi{} func Run() { defer func() { if err := recover(); err != nil { fmt.Println(err) } }() router := initRouter() if err := router.Run(":" + config.AppConfig.Server.Port); err != nil { panic(errors.Wrapf(err, "router start fail")) } } func initRouter() (r *gin.Engine) { r = gin.Default() // 中间件 r.Use(middleware.Cors()) r.Static("/excel", "./excel") api := r.Group("/api") { // 公开接口 public := api.Group("") { public.POST("/login/:type", employeeApi.Login) // 登录 public.POST("/employee/reg", employeeApi.AddEmployee) // 注册 // OCR public.POST("/ocr", ocrApi.RecognizeText) // OCR识别 public.POST("/sales-order/create", processApi.CreateSalesOrderWithDetail) // 创建销售订单 public.POST("/product/updatePrice", productApi.UpdatePrice) // 更新商品价格 public.GET("/product/getProductInventory", productApi.GetProductInventory) // 获取商品库存 public.GET("/employee/check_code", employeeApi.CheckCodeEmployee) // 验证码 public.POST("/employee/clear_code", employeeApi.ClearCodeEmployee) // 验证码 public.POST("/out-task-log/update", outTaskApi.UpdateOutTaskLog) // 更新出库任务日志 public.GET("/warehouse/mapping_list", warehouseApi.GetUserWarehouseMappings) // 获取仓库映射 // 获取仓库商品列表 public.GET("/product/distribution_list", productApi.GetDistributionProductList) // 获取分销商品列表 public.POST("/product/batchPush", productApi.BatchPushProducts) // 批量推送商品 public.POST("/product/pushToShop", productApi.PushProductToShop) // 推送商品到店铺 // 商品反射 public.GET("/product_book/list", productBookApi.List) // 获取商品反射列表 public.GET("/product_book/detail", productBookApi.Detail) // 获取商品反射详情 public.POST("/product_book/create", productBookApi.Create) // 创建商品反射 public.POST("/product_book/update", productBookApi.Update) // 更新商品反射 public.GET("/product_book/del", productBookApi.Del) // 删除商品反射 public.GET("/product/full_info", productApi.GetProductFullInfo) // 没有签名认证获取商品完整信息 public.GET("/split-account-deduction-log/list", splitAccountDeductionLogApi.GetSplitAccountDeductionLogList) // 获取分账扣钱日志列表 public.GET("/split-account-deduction-log/detail/:id", splitAccountDeductionLogApi.GetSplitAccountDeductionLogDetail) // 获取分账扣钱日志详情 public.GET("/open/split-account-deduction-log/list", splitAccountDeductionLogApi.GetOpenSplitAccountDeductionLogList) public.POST("/split-account-deduction-log/update", splitAccountDeductionLogApi.UpdateSplitAccountDeductionLog) // 更新分账扣钱日志 public.POST("/sales-order/unlock-inventory", processApi.UnlockSalesOrderInventory) // 解锁销售订单库存 public.POST("/split-account-deduction-log/create", splitAccountDeductionLogApi.CreateSplitAccountDeductionLog) // 创建分账 public.PUT("/split-account-deduction-log/update", splitAccountDeductionLogApi.UpdateSplitAccountDeductionLog) // 更新分账 public.DELETE("/split-account-deduction-log/delete", splitAccountDeductionLogApi.DeleteSplitAccountDeductionLog) // 删除分账 public.GET("/logistics/list-c", logisticsApi.GetLogisticsList) // 获取物流模板列表 } sign := api.Group("") { sign.POST("/location/sync-locations", locationApi.SyncLocations) // 同步库位 sign.POST("/goods/sync-batch", locationApi.SyncGoods) // 同步商品 sign.POST("/goods/import-from-excel", goodsImportApi.ImportFromExcel) // 从Excel导入商品 sign.POST("/location/import-from-excel", locationImportApi.ImportFromExcel) // 从Excel批量创建库位 sign.POST("/logistics/cancel", cancelLogisticsApi.CancelLogistics) // 取消物流单号 } // 需要认证的接口 auth := api.Group("") auth.Use(middleware.APISign()) auth.Use(middleware.JWTAuth()) { // 管理员 auth.GET("/user/current", employeeApi.GetCurrentUser) // 获取当前用户信息 auth.POST("/logout", employeeApi.Logout) // 登出 auth.GET("/userList", employeeApi.GetUserList) // 获取用户列表 // 配置管理 auth.GET("/config/list", configApi.GetConfigList) // 获取配置列表 auth.GET("/config/detail/:id", configApi.GetConfigDetail) // 获取配置详情 auth.POST("/config/create", configApi.CreateConfig) // 创建配置 auth.PUT("/config/update", configApi.UpdateConfig) // 更新配置 auth.DELETE("/config/delete", configApi.DeleteConfig) // 删除配置 // 供应商管理 auth.GET("/supplier/list", supplierApi.GetSupplierList) // 获取供应商列表 auth.GET("/supplier/detail/:id", supplierApi.GetSupplierDetail) // 获取供应商详情 auth.POST("/supplier/create", supplierApi.CreateSupplier) // 创建供应商 auth.PUT("/supplier/update", supplierApi.UpdateSupplier) // 更新供应商 auth.DELETE("/supplier/delete", supplierApi.DeleteSupplier) // 删除供应商 // 仓库管理 auth.GET("/warehouse/list", warehouseApi.GetWarehouseList) // 获取仓库列表 auth.GET("/warehouse/detail/:id", warehouseApi.GetWarehouseDetail) // 获取仓库详情 auth.POST("/warehouse/create", warehouseApi.CreateWarehouse) // 创建仓库 auth.PUT("/warehouse/update", warehouseApi.UpdateWarehouse) // 更新仓库 auth.POST("/warehouse/delete", warehouseApi.DeleteWarehouse) // 删除仓库 // 库位管理 auth.GET("/location/list", locationApi.GetLocationList) // 获取库位列表 auth.GET("/location/all-list", locationApi.GetAllLocationList) // 获取所有库位列表(仓库ID可选) auth.GET("/location/detail/:id", locationApi.GetLocationDetail) // 获取库位详情 auth.POST("/location/create", locationApi.CreateLocation) // 创建库位 auth.POST("/location/batch-generate", locationApi.BatchGenerateLocations) // 批量生成库位 auth.PUT("/location/update", locationApi.UpdateLocation) // 更新库位 auth.POST("/location/delete", locationApi.DeleteLocation) // 删除库位 auth.POST("/location/to-csv", locationApi.LocationToCsv) // 导出库位 auth.POST("/location/csv-to", locationApi.CsvToLocation) // 导入库位 // 图书相关 auth.GET("/getBookInfo", bookApi.GetBookInfo) // 获取图书信息 auth.GET("/getSuitBook", bookApi.GetSuitBook) // 获取套装书 auth.GET("/getNoIsbnBook", bookApi.GetNoIsbnBook) // 获取无书号书 auth.GET("/getProCode", bookApi.GetProCode) // 获取商品条码 auth.POST("/syncBook", bookApi.SyncBook) // 同步图书 // 商品管理 auth.GET("/product/list", productApi.GetProductList) // 商品列表 auth.GET("/product/detail", productApi.GetProductDetail) // 商品详情 auth.POST("/product/save", productApi.SaveProduct) // 保存商品 auth.POST("/product/updateNameAndImages", productApi.UpdateProductNameAndImages) // 修改商品名称和实拍图 auth.POST("/product/delete", productApi.DeleteProduct) // 删除商品 auth.POST("/product/retry-out-task", productApi.RetryOutTask) // 重新出库 auth.GET("/product/export", productApi.ExportProducts) // 导出商品 auth.POST("/product/reimport", productApi.ReimportProducts) // 导出修改后回传导入 auth.POST("/product/destroy", productApi.DestroyProduct) // 销毁商品 auth.POST("/product/restore", productApi.RestoreProduct) // 还原商品 auth.GET("/product/destroy-log/list", productApi.GetDestroyLogList) // 销毁日志列表 auth.GET("/product/destroy-log/detail", productApi.GetDestroyLogDetail) // 销毁日志详情 auth.GET("/product/shop-detail", productApi.GetShopProductDetail) // 获取商品在店铺的详情 // 条形码 auth.POST("/barcode/generate", barcodeApi.GenerateBarcode) // 生成条形码 // 采购波次流程 auth.POST("/purchase-order/create-with-wave", processApi.CreatePurchaseOrderWithWave) // 创建采购单并生成入库波次 auth.POST("/wave/release", processApi.ReleaseWave) // 发布入库波次 // 采购订单与入库管理 auth.GET("/getLocationInfo", locationApi.GetLocationInfo) // 获取库位信息 auth.POST("/receiving/bind-wave", processApi.BindWave) // 绑定入库波次 auth.GET("/receiving/wave-task/:id", processApi.GetWaveTaskInfo) // 获取入库波次任务信息 auth.POST("/receiving/submit", processApi.SubmitReceiving) // 提交入库 auth.GET("/receiving/detail/:id", processApi.GetReceivingDetail) // 获取入库单详情 // 销售订单与出库管理 auth.POST("/outbound-order/create", processApi.CreateOutboundOrder) // 创建销售订单 auth.POST("/outbound-order/change-location", processApi.ChangeLocation) // 修改出库单地出库库位 auth.POST("/wave/outbound/create", processApi.CreateOutboundWave) // 创建出库波次 auth.POST("/wave/outbound/release", processApi.ReleaseOutboundWave) // 发布出库波次 auth.POST("/outbound/bind-wave", processApi.BindOutboundWave) // 绑定出库波次 auth.GET("/outbound/wave-task/:id", processApi.GetWaveTaskInfo) // 获取出库波次任务信息 auth.POST("/outbound/submit", processApi.SubmitOutbound) // 提交出库 auth.GET("/outbound/detail/:id", processApi.GetOutboundDetail) // 获取出库单详情 auth.POST("/shipping-order/create", processApi.CreateShippingOrder) // 创建发货单 auth.POST("/shipping-order/update", processApi.UpdateShippingLogistics) // 更新发货单物流信息 auth.POST("/sales-order/cancel", processApi.CancelSalesOrder) // 取消销售订 //auth.POST("/sales-order/unlock-inventory", processApi.UnlockSalesOrderInventory) // 解锁销售订单库存 auth.POST("/wave/outbound/cancel", processApi.CancelOutboundWave) // 取消出库波次 // 盘库 auth.POST("/stock_check/adjust", processApi.AdjustInventory) // 盘库 auth.POST("/stock_check/return", processApi.ReturnInventory) // 盘库退货 // 采购订单管理 auth.GET("/purchase-order/list", purchaseApi.GetPurchaseOrderList) // 获取采购订单列表 auth.GET("/purchase-order/detail", purchaseApi.GetPurchaseOrderDetail) // 获取采购订单详情 auth.GET("/purchase-order/export-to-wdt", purchaseApi.ExportPurchaseOrderToWDT) // 导出采购单到旺店通 // 入库订单管理 auth.GET("/receiving-order/list", receivingApi.GetReceivingOrderList) // 获取入库订单列表 auth.GET("/receiving-order/detail", receivingApi.GetReceivingOrderDetail) // 获取入库订单详情 // 销售订单管理 auth.GET("/sales-order/list", salesApi.GetSalesOrderList) // 获取销售订单列表 auth.GET("/sales-order/detail", salesApi.GetSalesOrderDetail) // 获取销售订单详情 auth.GET("/sales-order/detaillist", salesApi.GetSalesOrderDetailList) // 获取销售订单详情列表 // 出库单管理 auth.GET("/outbound-order/list", outboundApi.GetOutboundOrderList) // 获取出库订单列表 auth.GET("/outbound-order/detail", outboundApi.GetOutboundOrderDetail) // 获取出库订单详情 // 发货管理 auth.GET("/shipping-order/list", shippingApi.GetShippingOrderList) // 获取发货单列表 auth.GET("/shipping-order/detail", shippingApi.GetShippingOrderDetail) // 获取发货单详情 auth.GET("/shipping-order/detaillist", shippingApi.GetShippingOrderDetailList) // 获取发货单详情列表(按状态) // 波次任务管理 auth.GET("/wave/task/list", waveApi.GetWaveTaskList) // 获取波次任务列表 auth.GET("/wave/task/detail", waveApi.GetWaveTaskDetail) // 获取波次任务详情 auth.GET("/wave/getWaveStatusById", waveApi.GetWaveStatusById) //用波次id获取波次的状态 // 分拣设置管理 auth.GET("/sorting-settings/get", sortingSettingsApi.GetSortingSettings) // 获取分拣设置 auth.POST("/sorting-settings/save", sortingSettingsApi.SaveSortingSettings) // 保存分拣设置 // 库存管理 auth.GET("/inventory/list", inventoryApi.GetInventoryList) // 获取库存列表 auth.GET("/inventory/grouped-list", inventoryApi.GetInventoryGroupedList) // 获取按仓库库位分分组的库存列表 auth.GET("/inventory/detail", inventoryApi.GetInventoryDetail) // 获取库存详情 auth.GET("/inventory/log/list", inventoryApi.GetInventoryLogList) // 获取库存日志列表 auth.GET("/inventory/statist", inventoryApi.InventoryStatist) // 库存统计 auth.GET("/inventory/summary", inventoryApi.GetInventorySummary) // 获取库存统计信息 auth.GET("/inventory/stock-check/list", inventoryApi.GetStockCheckList) // 获取库存盘点列表 auth.GET("/inventory/stock-check/detail", inventoryApi.GetStockCheckDetail) // 获取库存盘点详情 // 小车管理 auth.GET("/car/list", carApi.GetCarList) // 获取小车列表 auth.GET("/car/detail/:id", carApi.GetCarDetail) // 获取小车详情 auth.POST("/car/create", carApi.CreateCar) // 创建小车 auth.PUT("/car/update", carApi.UpdateCar) // 更新小车 auth.DELETE("/car/delete", carApi.DeleteCar) // 删除小车 // 店铺管理 auth.GET("/shop/list", shopApi.GetShopList) // 获取店铺列表 auth.GET("/shop/detail/:id", shopApi.GetShopDetail) // 获取店铺详情 auth.POST("/shop/create", shopApi.CreateShop) // 创建店铺 auth.PUT("/shop/update", shopApi.UpdateShop) // 更新店铺 auth.DELETE("/shop/delete", shopApi.DeleteShop) // 删除店铺 //PDA配置 auth.GET("/employee/get_pda_config", employeeApi.GetEmployeeSettings) // 获取PDA配置 auth.POST("/employee/set_pda_config", employeeApi.SaveEmployeeSettings) // 保存PDA配置 // 外部任务管理 auth.GET("/out-task/list", outTaskApi.GetOutTaskList) // 获取外部任务列表 auth.GET("/out-task-log/list", outTaskApi.GetOutTaskLogList) // 获取外部任务日志列表 auth.GET("/out-task/by-shop", outTaskApi.GetOutTaskByShop) // 获取店铺外部任务列表 // 物流模板管理 auth.GET("/logistics/list", logisticsApi.GetLogisticsList) // 获取物流模板列表 auth.GET("/logistics/detail/:id", logisticsApi.GetLogisticsDetail) // 获取物流模板详情 auth.POST("/logistics/create", logisticsApi.CreateLogistics) // 创建物流模板 auth.PUT("/logistics/update", logisticsApi.UpdateLogistics) // 更新物流模板 auth.DELETE("/logistics/delete", logisticsApi.DeleteLogistics) // 删除物流模板 // 分账配置管理 auth.GET("/split-account-config/list", splitAccountConfigApi.GetSplitAccountConfigList) // 获取分账配置列表 auth.GET("/split-account-config/detail/:id", splitAccountConfigApi.GetSplitAccountConfigDetail) // 获取分账配置详情 auth.POST("/split-account-config/create", splitAccountConfigApi.CreateSplitAccountConfig) // 创建分账配置 auth.PUT("/split-account-config/update", splitAccountConfigApi.UpdateSplitAccountConfig) // 更新分账配置 auth.DELETE("/split-account-config/delete", splitAccountConfigApi.DeleteSplitAccountConfig) // 删除分账配置 /*// 分账扣钱日志管理 auth.GET("/split-account-deduction-log/list", splitAccountDeductionLogApi.GetSplitAccountDeductionLogList) // 获取分账扣钱日志列表 auth.GET("/split-account-deduction-log/detail/:id", splitAccountDeductionLogApi.GetSplitAccountDeductionLogDetail) // 获取分账扣钱日志详情 //public.GET("/open/split-account-deduction-log/list", splitAccountDeductionLogApi.GetOpenSplitAccountDeductionLogList) // 公开获取分账扣钱日志列表(无需签名认证)*/ //auth.POST("/split-account-deduction-log/create", splitAccountDeductionLogApi.CreateSplitAccountDeductionLog) // 创建分账 //auth.PUT("/split-account-deduction-log/update", splitAccountDeductionLogApi.UpdateSplitAccountDeductionLog) // 更新分账 //auth.DELETE("/split-account-deduction-log/delete", splitAccountDeductionLogApi.DeleteSplitAccountDeductionLog) // 删除分账*/ // 产品日志管理 auth.GET("/product_log/list", productApi.GetProductLogList) // 获取产品日志列表 auth.POST("/product_log/save", productApi.SaveProductLog) // 保存产品日志 auth.POST("/product_log/audit", productApi.AuditProductLog) // 审核产品日志 auth.POST("/product_log/delete", productApi.DeleteProductLog) // 删除产品日志 // 仪表盘统计 auth.GET("/dashboard/statist", statistApi.DashboardStatist) // 仪表盘统计 auth.GET("/dashboard/warehouse", statistApi.GetWarehouseStatist) // 获取仓库统计 auth.GET("/dashboard/order", statistApi.GetOrderStatist) // 获取订单统计 // 管理员接口 admin := auth.Group("/admin") admin.Use(middleware.APISign()) admin.Use(middleware.AdminRequired()) { // 员工管理 admin.GET("/employee/list", employeeApi.GetEmployeeList) // 获取员工列表 admin.POST("/employee/add", employeeApi.AddEmployee) // 添加员工 admin.POST("/employee/update", employeeApi.UpdatePasswordEmployee) // 更新员工密码 admin.POST("/employee/update_expire_time", employeeApi.UpdateExpireTimeEmployee) // 更新员工到期时间 admin.GET("/employee/check_expire_time", employeeApi.CheckExpireTimeEmployee) // 检查员工到期时间 admin.POST("/employee/set_level", employeeApi.SetEmployeeLevel) // 设置员工等级 admin.GET("/employee/level_config", employeeApi.GetLevelConfigList) // 获取员工等级配置列表 admin.POST("/employee/update-split-account-config", employeeApi.UpdateEmployeeSplitAccountConfigByAboutId) // 根据about_id更新员工分账配置ID // 用户类型管理 admin.GET("/user-type/list", userTypeApi.GetUserTypeList) // 获取用户类型列表 admin.GET("/user-type/detail/:id", userTypeApi.GetUserTypeDetail) // 获取用户类型详情 admin.POST("/user-type/create", userTypeApi.CreateUserType) // 创建用户类型 admin.PUT("/user-type/update", userTypeApi.UpdateUserType) // 更新用户类型 admin.DELETE("/user-type/delete", userTypeApi.DeleteUserType) // 删除用户类型 } } } return }