Browse Source

FUNC:车辆管理、仓库管理、地址管理、用户管理、公司管理

zoie 11 months ago
parent
commit
d627aacf5c

+ 36 - 22
app/admin/controller/address.go

@@ -5,6 +5,7 @@ import (
 	"cold-logistics/app/admin/service"
 	"cold-logistics/app/admin/service/dto"
 	"cold-logistics/common/actions"
+	"errors"
 	"github.com/gin-gonic/gin"
 	"github.com/gin-gonic/gin/binding"
 	"gogs.baozhida.cn/zoie/OAuth-core/api"
@@ -16,10 +17,10 @@ type AddressController struct {
 	api.Api
 }
 
-// GetPage 获取收货地址列表
-// @Summary 获取收货地址列表
-// @Description 获取收货地址列表
-// @Tags 收货地址
+// GetPage 获取地址列表
+// @Summary 获取地址列表
+// @Description 获取地址列表
+// @Tags 地址
 // @Param pageSize query int false "页条数"
 // @Param page query int false "页码"
 // @Success 200 {object} response.Response{data=response.Page{list=[]model.Address}} "{"code": 200, "data": [...]}"
@@ -39,11 +40,20 @@ func (e AddressController) GetPage(c *gin.Context) {
 		return
 	}
 
+	if req.AddressType != model.AddressTypeConsignee && req.AddressType != model.AddressTypeSender {
+		err = errors.New("地址类型错误")
+		e.Error(500, err, err.Error())
+		return
+	}
+
+	//数据权限检查
+	p := actions.GetPermissionFromContext(c)
+
 	//数据权限检查
 	list := make([]model.Address, 0)
 	var count int64
 
-	err = s.GetPage(&req, &list, &count)
+	err = s.GetPage(&req, &list, &count, p)
 	if err != nil {
 		e.Error(500, err, err.Error())
 		return
@@ -51,11 +61,11 @@ func (e AddressController) GetPage(c *gin.Context) {
 	e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
 }
 
-// Get 通过id获取收货地址
-// @Summary 通过id获取收货地址
-// @Description 通过id获取收货地址
-// @Tags 收货地址
-// @Param id path string true "收货地址id"
+// Get 通过id获取地址
+// @Summary 通过id获取地址
+// @Description 通过id获取地址
+// @Tags 地址
+// @Param id path string true "地址id"
 // @Success 200 {object} response.Response{data=model.Address} "{"code": 200, "data": [...]}"
 // @Router /api/address/{id} [get]
 // @Security Bearer
@@ -85,10 +95,10 @@ func (e AddressController) Get(c *gin.Context) {
 	e.OK(object, "查询成功")
 }
 
-// Insert 添加收货地址
-// @Summary 添加收货地址
-// @Description 添加收货地址
-// @Tags 收货地址
+// Insert 添加地址
+// @Summary 添加地址
+// @Description 添加地址
+// @Tags 地址
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.AddressInsertReq true "data"
@@ -109,6 +119,10 @@ func (e AddressController) Insert(c *gin.Context) {
 		e.Error(500, err, err.Error())
 		return
 	}
+	p := actions.GetPermissionFromContext(c)
+	// 设置创建人
+	req.SetCreateBy(user.GetUserId(c))
+	req.SetDeptId(p.DeptId)
 	err = s.Insert(&req)
 	if err != nil {
 		e.Error(500, err, err.Error())
@@ -117,10 +131,10 @@ func (e AddressController) Insert(c *gin.Context) {
 	e.OK(req.GetId(), "创建成功")
 }
 
-// Update 修改收货地址
-// @Summary 修改收货地址
-// @Description 修改收货地址
-// @Tags 收货地址
+// Update 修改地址
+// @Summary 修改地址
+// @Description 修改地址
+// @Tags 地址
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.AddressUpdateReq true "body"
@@ -152,10 +166,10 @@ func (e AddressController) Update(c *gin.Context) {
 	e.OK(req.GetId(), "更新成功")
 }
 
-// Delete 删除收货地址
-// @Summary 删除收货地址
-// @Description 删除收货地址
-// @Tags 收货地址
+// Delete 删除地址
+// @Summary 删除地址
+// @Description 删除地址
+// @Tags 地址
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.AddressDeleteReq true "body"

+ 197 - 0
app/admin/controller/car.go

@@ -0,0 +1,197 @@
+package controller
+
+import (
+	"cold-logistics/app/admin/model"
+	"cold-logistics/app/admin/service"
+	"cold-logistics/app/admin/service/dto"
+	"cold-logistics/common/actions"
+	"github.com/gin-gonic/gin"
+	"github.com/gin-gonic/gin/binding"
+	"gogs.baozhida.cn/zoie/OAuth-core/api"
+	"gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user"
+	_ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
+)
+
+type CarController struct {
+	api.Api
+}
+
+// GetPage 获取车辆列表
+// @Summary 获取车辆列表
+// @Description 获取车辆列表
+// @Tags 车辆
+// @Param name query string false "车辆名称"
+// @Param pageSize query int false "页条数"
+// @Param page query int false "页码"
+// @Success 200 {object} response.Response{data=response.Page{list=[]model.Car}} "{"code": 200, "data": [...]}"
+// @Router /api/car [get]
+// @Security Bearer
+func (e CarController) GetPage(c *gin.Context) {
+	s := service.Car{}
+	req := dto.CarGetPageReq{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req, binding.Query).
+		MakeService(&s.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+
+	//数据权限检查
+	p := actions.GetPermissionFromContext(c)
+
+	list := make([]model.Car, 0)
+	var count int64
+
+	err = s.GetPage(&req, &list, &count, p)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+	e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
+}
+
+// Get 通过id获取车辆
+// @Summary 通过id获取车辆
+// @Description 通过id获取车辆
+// @Tags 车辆
+// @Param id path string true "车辆id"
+// @Success 200 {object} response.Response{data=model.Car} "{"code": 200, "data": [...]}"
+// @Router /api/car/{id} [get]
+// @Security Bearer
+func (e CarController) Get(c *gin.Context) {
+	s := service.Car{}
+	req := dto.CarGetReq{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req, nil).
+		MakeService(&s.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+	var object model.Car
+	p := actions.GetPermissionFromContext(c)
+
+	//数据权限检查
+	err = s.Get(&req, &object, p)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+
+	e.OK(object, "查询成功")
+}
+
+// Insert 添加车辆
+// @Summary 添加车辆
+// @Description 添加车辆
+// @Tags 车辆
+// @Accept  application/json
+// @Product application/json
+// @Param data body dto.CarInsertReq true "data"
+// @Success 200 {string} string	"{"code": 200, "message": "添加成功"}"
+// @Success 200 {string} string	"{"code": -1, "message": "添加失败"}"
+// @Router /api/car [post]
+// @Security Bearer
+func (e CarController) Insert(c *gin.Context) {
+	s := service.Car{}
+	req := dto.CarInsertReq{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req, binding.JSON).
+		MakeService(&s.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+	p := actions.GetPermissionFromContext(c)
+	// 设置创建人
+	req.SetCreateBy(user.GetUserId(c))
+	req.SetDeptId(p.DeptId)
+	err = s.Insert(&req)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+	e.OK(req.GetId(), "创建成功")
+}
+
+// Update 修改车辆
+// @Summary 修改车辆
+// @Description 修改车辆
+// @Tags 车辆
+// @Accept  application/json
+// @Product application/json
+// @Param data body dto.CarUpdateReq true "body"
+// @Success 200 {string} string	"{"code": 200, "message": "添加成功"}"
+// @Success 200 {string} string	"{"code": -1, "message": "添加失败"}"
+// @Router /api/car [put]
+// @Security Bearer
+func (e CarController) Update(c *gin.Context) {
+	s := service.Car{}
+	req := dto.CarUpdateReq{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req).
+		MakeService(&s.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+	p := actions.GetPermissionFromContext(c)
+
+	req.SetUpdateBy(user.GetUserId(c))
+	err = s.Update(&req, p)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+	e.OK(req.GetId(), "更新成功")
+}
+
+// Delete 删除车辆
+// @Summary 删除车辆
+// @Description 删除车辆
+// @Tags 车辆
+// @Accept  application/json
+// @Product application/json
+// @Param data body dto.CarDeleteReq true "body"
+// @Success 200 {string} string	"{"code": 200, "message": "删除成功"}"
+// @Success 200 {string} string	"{"code": -1, "message": "删除失败"}"
+// @Router /api/car [delete]
+// @Security Bearer
+func (e CarController) Delete(c *gin.Context) {
+	s := service.Car{}
+	req := dto.CarDeleteReq{}
+	userSvc := service.SysUser{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req, binding.JSON, nil).
+		MakeService(&s.Service).
+		MakeService(&userSvc.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+
+	//数据权限检查
+	p := actions.GetPermissionFromContext(c)
+	err = s.Remove(&req, p)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+	e.OK(req.GetId(), "删除成功")
+}

+ 63 - 29
app/admin/controller/company.go

@@ -16,13 +16,13 @@ type CompanyController struct {
 	api.Api
 }
 
-// GetPage 获取销售门店列表
-// @Summary 获取销售门店列表
-// @Description 获取销售门店列表(用户公司及子公司)
-// @Tags 销售门店
-// @Param name query string false "销售门店名称"
+// GetPage 获取公司列表
+// @Summary 获取公司列表
+// @Description 获取公司列表(用户公司及子公司)
+// @Tags 公司
+// @Param name query string false "公司名称"
 // @Success 200 {object} response.Response{data=response.Page{list=[]model.SysDept}} "{"code": 200, "data": [...]}"
-// @Router /api/store [get]
+// @Router /api/company [get]
 // @Security Bearer
 func (e CompanyController) GetPage(c *gin.Context) {
 	s := service.Company{}
@@ -51,13 +51,48 @@ func (e CompanyController) GetPage(c *gin.Context) {
 	e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
 }
 
-// Get 通过id获取销售门店
-// @Summary 通过id获取销售门店
-// @Description 通过id获取销售门店
-// @Tags 销售门店
-// @Param id path string true "销售门店id"
+// GetAll 添加用户-获取公司列表
+// @Summary 添加用户-获取公司列表
+// @Description 添加用户-获取公司列表
+// @Tags 公司
+// @Param id path string true "公司id"
 // @Success 200 {object} response.Response{data=model.SysDept} "{"code": 200, "data": [...]}"
-// @Router /api/store/{id} [get]
+// @Router /api/company/{id} [get]
+// @Security Bearer
+func (e CompanyController) GetAll(c *gin.Context) {
+	s := service.Company{}
+	req := dto.CompanyGetAllReq{}
+	err := e.MakeContext(c).
+		MakeOrm().
+		Bind(&req, binding.Query).
+		MakeService(&s.Service).
+		Errors
+	if err != nil {
+		e.Logger.Error(err)
+		e.Error(500, err, err.Error())
+		return
+	}
+
+	//数据权限检查
+	p := actions.GetPermissionFromContext(c)
+	p.DeptId = user.GetDeptId(c)
+	list := make([]model.SysDept, 0)
+	var count int64
+	err = s.GetAll(&req, &list, &count, p)
+	if err != nil {
+		e.Error(500, err, err.Error())
+		return
+	}
+	e.PageOK(list, int(count), 0, 0, "查询成功")
+}
+
+// Get 通过id获取公司
+// @Summary 通过id获取公司
+// @Description 通过id获取公司
+// @Tags 公司
+// @Param id path string true "公司id"
+// @Success 200 {object} response.Response{data=model.SysDept} "{"code": 200, "data": [...]}"
+// @Router /api/company/{id} [get]
 // @Security Bearer
 func (e CompanyController) Get(c *gin.Context) {
 	s := service.Company{}
@@ -83,16 +118,16 @@ func (e CompanyController) Get(c *gin.Context) {
 	e.OK(object, "查询成功")
 }
 
-// Insert 添加销售门店
-// @Summary 添加销售门店
-// @Description 添加销售门店
-// @Tags 销售门店
+// Insert 添加公司
+// @Summary 添加公司
+// @Description 添加公司
+// @Tags 公司
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.CompanyInsertReq true "data"
 // @Success 200 {string} string	"{"code": 200, "message": "添加成功"}"
 // @Success 200 {string} string	"{"code": -1, "message": "添加失败"}"
-// @Router /api/store [post]
+// @Router /api/company [post]
 // @Security Bearer
 func (e CompanyController) Insert(c *gin.Context) {
 	s := service.Company{}
@@ -110,8 +145,7 @@ func (e CompanyController) Insert(c *gin.Context) {
 
 	// 设置创建人
 	req.SetCreateBy(user.GetUserId(c))
-	deptId := user.GetDeptId(c)
-	err = s.Insert(&req, deptId)
+	err = s.Insert(&req)
 	if err != nil {
 		e.Error(500, err, err.Error())
 		return
@@ -119,16 +153,16 @@ func (e CompanyController) Insert(c *gin.Context) {
 	e.OK(req.GetId(), "创建成功")
 }
 
-// Update 修改销售门店
-// @Summary 修改销售门店
-// @Description 修改销售门店
-// @Tags 销售门店
+// Update 修改公司
+// @Summary 修改公司
+// @Description 修改公司
+// @Tags 公司
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.CompanyUpdateReq true "body"
 // @Success 200 {string} string	"{"code": 200, "message": "添加成功"}"
 // @Success 200 {string} string	"{"code": -1, "message": "添加失败"}"
-// @Router /api/store [put]
+// @Router /api/company [put]
 // @Security Bearer
 func (e CompanyController) Update(c *gin.Context) {
 	s := service.Company{}
@@ -153,16 +187,16 @@ func (e CompanyController) Update(c *gin.Context) {
 	e.OK(req.GetId(), "更新成功")
 }
 
-// Delete 删除销售门店
-// @Summary 删除销售门店
-// @Description 删除销售门店
-// @Tags 销售门店
+// Delete 删除公司
+// @Summary 删除公司
+// @Description 删除公司
+// @Tags 公司
 // @Accept  application/json
 // @Product application/json
 // @Param data body dto.CompanyDeleteReq true "body"
 // @Success 200 {string} string	"{"code": 200, "message": "删除成功"}"
 // @Success 200 {string} string	"{"code": -1, "message": "删除失败"}"
-// @Router /api/store [delete]
+// @Router /api/company [delete]
 // @Security Bearer
 func (e CompanyController) Delete(c *gin.Context) {
 	s := service.Company{}

+ 0 - 239
app/admin/controller/sys_menu.go

@@ -1,239 +0,0 @@
-package controller
-
-import (
-	"cold-logistics/app/admin/model"
-	"cold-logistics/app/admin/service"
-	"cold-logistics/app/admin/service/dto"
-	"cold-logistics/common/actions"
-	"github.com/gin-gonic/gin"
-	"github.com/gin-gonic/gin/binding"
-	"gogs.baozhida.cn/zoie/OAuth-core/api"
-	"gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user"
-	_ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
-)
-
-type SysMenuController struct {
-	api.Api
-}
-
-// GetPage 获取菜单列表
-// @Summary 获取菜单列表
-// @Description 获取菜单列表
-// @Tags 菜单
-// @Param menuName query string false "菜单名称"
-// @Param title query string false "显示名称"
-// @Param visible query string false "显示状态"
-// @Param pageSize query int false "页条数"
-// @Param pageIndex query int false "页码"
-// @Success 200 {object} response.Response{data=response.Page{list=[]model.SysMenu}} "{"code": 200, "data": [...]}"
-// @Router /api/menu [get]
-// @Security Bearer
-func (e SysMenuController) GetPage(c *gin.Context) {
-	s := service.SysMenu{}
-	req := dto.SysMenuGetPageReq{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, binding.Form).
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	var list = make([]model.SysMenu, 0)
-	if err = s.GetPage(&req, &list).Error; err != nil {
-		e.Error(500, err, "查询失败")
-		return
-	}
-	e.OK(list, "查询成功")
-}
-
-// Get 通过id获取菜单
-// @Summary 通过id获取菜单
-// @Description 通过id获取菜单
-// @Tags 菜单
-// @Param id path string true "菜单id"
-// @Success 200 {object} response.Response{data=model.SysMenu} "{"code": 200, "data": [...]}"
-// @Router /api/menu/{id} [get]
-// @Security Bearer
-func (e SysMenuController) Get(c *gin.Context) {
-	req := dto.SysMenuGetReq{}
-	s := service.SysMenu{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, nil).
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-	var object = model.SysMenu{}
-	err = s.Get(&req, &object).Error
-	if err != nil {
-		e.Error(500, err, "查询失败")
-		return
-	}
-	e.OK(object, "查询成功")
-}
-
-// Insert 创建菜单
-// @Summary 创建菜单
-// @Description 创建菜单
-// @Tags 菜单
-// @Accept  application/json
-// @Product application/json
-// @Param data body dto.SysMenuInsertReq true "data"
-// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
-// @Router /api/menu [post]
-// @Security Bearer
-func (e SysMenuController) Insert(c *gin.Context) {
-	req := dto.SysMenuInsertReq{}
-	s := service.SysMenu{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, binding.JSON).
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-	// 设置创建人
-	req.SetCreateBy(user.GetUserId(c))
-	err = s.Insert(&req).Error
-	if err != nil {
-		e.Error(500, err, "创建失败")
-		return
-	}
-	e.OK(req.GetId(), "创建成功")
-}
-
-// Update 修改菜单
-// @Summary 修改菜单
-// @Description 修改菜单
-// @Tags 菜单
-// @Accept  application/json
-// @Product application/json
-// @Param data body dto.SysMenuUpdateReq true "body"
-// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
-// @Router /api/menu/{id} [put]
-// @Security Bearer
-func (e SysMenuController) Update(c *gin.Context) {
-	s := service.SysMenu{}
-	req := dto.SysMenuUpdateReq{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, binding.JSON, nil).
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	req.SetUpdateBy(user.GetUserId(c))
-	err = s.Update(&req).Error
-	if err != nil {
-		e.Error(500, err, "更新失败")
-		return
-	}
-	e.OK(req.GetId(), "更新成功")
-}
-
-// Delete 删除菜单
-// @Summary 删除菜单
-// @Description 删除菜单
-// @Tags 菜单
-// @Accept  application/json
-// @Product application/json
-// @Param data body dto.SysMenuDeleteReq true "body"
-// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
-// @Router /api/menu [delete]
-// @Security Bearer
-func (e SysMenuController) Delete(c *gin.Context) {
-	s := service.SysMenu{}
-	req := dto.SysMenuDeleteReq{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, binding.JSON).
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	req.SetUpdateBy(user.GetUserId(c))
-	err = s.Remove(&req).Error
-	if err != nil {
-		e.Logger.Errorf("RemoveSysMenu error, %s", err)
-		e.Error(500, err, "删除失败")
-		return
-	}
-	e.OK(req.GetId(), "删除成功")
-}
-
-// GetMenuRole 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Summary 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Description 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Tags 菜单
-// @Success 200 {object} response.Response{data=[]model.SysMenu} "{"code": 200, "data": [...]}"
-// @Router /api/menu-role [get]
-// @Security Bearer
-func (e SysMenuController) GetMenuRole(c *gin.Context) {
-	s := new(service.SysMenu)
-	err := e.MakeContext(c).
-		MakeOrm().
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-	p := actions.GetPermissionFromContext(c)
-	result, err := s.SetMenuRole(user.GetRoleKey(c), user.GetUserId(c), p)
-
-	if err != nil {
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	e.OK(result, "")
-}
-
-// GetMenuRole 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Summary 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Description 根据登录角色名称获取菜单列表数据【左菜单使用】
-// @Tags 菜单
-// @Success 200 {object} response.Response{data=[]model.SysMenu} "{"code": 200, "data": [...]}"
-// @Router /api/select-menu [get]
-// @Security Bearer
-func (e SysMenuController) MenuSelect(c *gin.Context) {
-	s := new(service.SysMenu)
-	err := e.MakeContext(c).
-		MakeOrm().
-		MakeService(&s.Service).
-		Errors
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-	p := actions.GetPermissionFromContext(c)
-	result, err := s.MenuSelect(user.GetRoleKey(c), user.GetUserId(c), p)
-
-	if err != nil {
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	e.OK(result, "")
-}

+ 8 - 51
app/admin/controller/sys_user.go

@@ -70,45 +70,6 @@ func (e SysUser) GetPage(c *gin.Context) {
 	e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
 }
 
-// GetDeliveryPage 获取送气员列表
-// @Summary 获取送气员列表
-// @Description 获取送气员列表
-// @Tags 用户
-// @Param pageSize query int false "页条数"
-// @Param pageIndex query int false "页码"
-// @Success 200 {object} response.Response{data=response.Page{list=[]model.SysUser}}  "{"code": 200, "data": [...]}"
-// @Router /api/sys-user/delivery [get]
-// @Security Bearer
-func (e SysUser) GetDeliveryPage(c *gin.Context) {
-	s := service.SysUser{}
-	req := dto.SysUserGetDeliveryPageReq{}
-	err := e.MakeContext(c).
-		MakeOrm().
-		Bind(&req, binding.Query).
-		MakeService(&s.Service).
-		Errors
-
-	if err != nil {
-		e.Logger.Error(err)
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	//数据权限检查
-	//p := actions.GetPermissionFromContext(c)
-
-	list := make([]model.SysUser, 0)
-	var count int64
-
-	err = s.GetDeliveryPage(&req, nil, &list, &count)
-	if err != nil {
-		e.Error(500, err, err.Error())
-		return
-	}
-
-	e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
-}
-
 // Get 通过id获取用户
 // @Summary 通过id获取用户
 // @Description 通过id获取用户
@@ -132,10 +93,10 @@ func (e SysUser) Get(c *gin.Context) {
 	}
 
 	//数据权限检查
-	p := actions.GetPermissionFromContext(c)
+	//p := actions.GetPermissionFromContext(c)
 
 	var object model.SysUser
-	err = s.Get(&req, p, &object)
+	err = s.Get(&req, nil, &object)
 	if err != nil {
 		e.Error(http.StatusUnprocessableEntity, err, err.Error())
 		return
@@ -155,21 +116,17 @@ func (e SysUser) Get(c *gin.Context) {
 // @Security Bearer
 func (e SysUser) Insert(c *gin.Context) {
 	s := service.SysUser{}
-	roleSvc := service.SysRole{}
 	req := dto.SysUserInsertReq{}
 	err := e.MakeContext(c).
 		MakeOrm().
 		Bind(&req, binding.JSON).
 		MakeService(&s.Service).
-		MakeService(&roleSvc.Service).
 		Errors
 	if err != nil {
 		e.Logger.Error(err)
 		e.Error(500, err, err.Error())
 		return
 	}
-	p := actions.GetPermissionFromContext(c)
-	req.DeptId = p.DeptId
 	// 设置创建人
 	req.SetCreateBy(user.GetUserId(c))
 	err = s.Insert(&req)
@@ -208,9 +165,9 @@ func (e SysUser) Update(c *gin.Context) {
 	req.SetUpdateBy(user.GetUserId(c))
 
 	//数据权限检查
-	p := actions.GetPermissionFromContext(c)
+	//p := actions.GetPermissionFromContext(c)
 
-	err = s.Update(&req, p)
+	err = s.Update(&req, nil)
 	if err != nil {
 		e.Error(500, err, err.Error())
 		return
@@ -249,9 +206,9 @@ func (e SysUser) Delete(c *gin.Context) {
 	// 设置编辑人
 	req.SetUpdateBy(userId)
 	//数据权限检查
-	p := actions.GetPermissionFromContext(c)
+	//p := actions.GetPermissionFromContext(c)
 
-	err = s.Remove(&req, p)
+	err = s.Remove(&req, nil)
 	if err != nil {
 		e.Error(500, err, err.Error())
 		return
@@ -324,9 +281,9 @@ func (e SysUser) ResetPwd(c *gin.Context) {
 	req.SetUpdateBy(user.GetUserId(c))
 
 	//数据权限检查
-	p := actions.GetPermissionFromContext(c)
+	//p := actions.GetPermissionFromContext(c)
 
-	err = s.ResetPwd(&req, p)
+	err = s.ResetPwd(&req, nil)
 	if err != nil {
 		e.Logger.Error(err)
 		e.Error(500, err, err.Error())

+ 17 - 9
app/admin/model/address.go

@@ -2,17 +2,25 @@ package model
 
 import model2 "cold-logistics/common/model"
 
+var (
+	AddressTypeSender    = "sender"
+	AddressTypeConsignee = "consignee"
+)
+
 type Address struct {
 	model2.Model
-	Name       string  `json:"name" gorm:"size:32;"`        // 收货人名称
-	Phone      string  `json:"phone" gorm:"size:32;"`       // 联系电话
-	City       string  `json:"city" gorm:"size:6;"`         // 所在地市
-	Area       string  `json:"area" gorm:"size:6;"`         // 所属区/县
-	Address    string  `json:"address" gorm:"size:128"`     // 详细地址
-	Lng        float64 `json:"lng" gorm:"size:9;"`          // 经度
-	Lat        float64 `json:"lat" gorm:"size:9;"`          // 纬度
-	IsDefault  bool    `json:"isDefault" gorm:"size:128"`   // 默认
-	AddressImg string  `json:"addressImg" gorm:"size:255;"` // 现场图片
+	Name         string `json:"name" gorm:"size:32;"`           // 收货人名称
+	Phone        string `json:"phone" gorm:"size:32;"`          // 联系电话
+	Address      string `json:"address" gorm:"size:128"`        // 详细地址
+	IsDefault    bool   `json:"isDefault" gorm:"-"`             // 默认
+	ProvinceId   string `json:"provinceId"  gorm:"size:255;"`   // 省Id
+	ProvinceName string `json:"provinceName"  gorm:"size:255;"` // 省中文名
+	CityId       string `json:"cityId"  gorm:"size:255;"`       // 市Id
+	CityName     string `json:"cityName"  gorm:"size:255;"`     // 市中文名
+	RegionId     string `json:"regionId"  gorm:"size:255;"`     // 区Id
+	RegionName   string `json:"regionName"  gorm:"size:255;"`   // 区中文名
+	AddressType  string `json:"addressType" gorm:"size:255;" `  //地址类型:sender-发货人 consignee-收货人
+
 	model2.ControlBy
 	model2.ModelTime
 	model2.DeptBy

+ 15 - 0
app/admin/model/address_default.go

@@ -0,0 +1,15 @@
+package model
+
+import model2 "cold-logistics/common/model"
+
+type AddressDefault struct {
+	model2.Model
+	UserId           int `json:"userId" gorm:"size:128;comment:用户id;uniqueIndex"` // 用户id
+	AddressId        int `json:"addressId" gorm:"size:128;comment:地址id"`          // 仓库id
+	model2.ControlBy `json:"-"`
+	model2.ModelTime `json:"-"`
+}
+
+func (AddressDefault) TableName() string {
+	return "address_default"
+}

+ 20 - 0
app/admin/model/car.go

@@ -0,0 +1,20 @@
+package model
+
+import model2 "cold-logistics/common/model"
+
+// 仓库
+type Car struct {
+	model2.Model
+	CarNo  string      `json:"carNo" gorm:"size:128"`                                // 商品名称
+	Sn     string      `json:"sn" gorm:"size:128"`                                   // sn
+	Status string      `json:"status" gorm:"size:4;not null;default:'2';comment:状态"` // 1-停用 2-正启用
+	UserId int         `json:"userId" gorm:"size:255;"`                              // 司机id
+	User   SysUserOmit `json:"user"`
+	model2.ControlBy
+	model2.ModelTime
+	model2.DeptBy
+}
+
+func (Car) TableName() string {
+	return "car"
+}

+ 6 - 5
app/admin/model/sys_dept.go

@@ -8,11 +8,12 @@ import (
 
 type SysDept struct {
 	model2.Model
-	ParentId int    `json:"parentId" gorm:""`                                     // 上级部门
-	Path     string `json:"path,omitempty" gorm:"size:255;" swaggerignore:"true"` // 路径
-	Name     string `json:"name"  gorm:"size:128;"`                               // 部门名称
-	Sort     int    `json:"sort,omitempty" gorm:"size:4;"`                        // 排序
-	Status   int    `json:"status,omitempty" gorm:"size:4;"`                      // 状态 1-停用 2-正常
+	ParentId int    `json:"parentId" gorm:""`                        // 上级部门
+	Path     string `json:"-" gorm:"size:255;" swaggerignore:"true"` // 路径
+	Name     string `json:"name"  gorm:"size:128;"`                  // 部门名称
+	Sort     int    `json:"-" gorm:"size:4;"`                        // 排序
+	Status   int    `json:"-" gorm:"size:4;"`                        // 状态 1-停用 2-正常
+	Remark   string `json:"remark"  gorm:"size:1024;"`               // 备注
 	model2.ControlBy
 	model2.ModelTime
 }

+ 3 - 26
app/admin/model/sys_user.go

@@ -4,10 +4,7 @@ import (
 	model2 "cold-logistics/common/model"
 	"errors"
 	"fmt"
-	log "gogs.baozhida.cn/zoie/OAuth-core/logger"
 	coreModel "gogs.baozhida.cn/zoie/OAuth-core/model"
-	"gogs.baozhida.cn/zoie/OAuth-core/sdk"
-	"gogs.baozhida.cn/zoie/OAuth-core/sdk/config"
 	"golang.org/x/crypto/bcrypt"
 	"gorm.io/gorm"
 )
@@ -15,8 +12,9 @@ import (
 type SysUser struct {
 	model2.Model
 	coreModel.User
-	Dept SysDept `json:"dept" gorm:"->"` // 部门
-	Role SysRole `json:"role" gorm:"->"` // 角色
+	Type int     `json:"type" gorm:"size:128;comment:类型"` // 管理员1 仓管2 司机3
+	Dept SysDept `json:"dept" gorm:"->"`                  // 部门
+	Role SysRole `json:"-" gorm:"-"`                      // 角色
 	model2.ControlBy
 	model2.ModelTime
 }
@@ -79,30 +77,9 @@ func GetUserCacheKey(id int) string {
 	return fmt.Sprintf("oauth:user:%d", id)
 }
 
-func GetUserCode(id int) (SysUser, error) {
-	var err error
-	var userModel SysUser
-	//准备db
-	db := sdk.Runtime.GetDbByKey(config.ApplicationConfig.Host)
-	if db == nil {
-		err = errors.New("db not exist")
-		log.Errorf("host[%s]'s %s", err.Error())
-		return userModel, err
-	}
-	err = db.First(&userModel, id).Error
-	if err != nil {
-		log.Errorf("db error: %s", err)
-		err = errors.New("获取用户信息失败")
-		return userModel, err
-	}
-
-	return userModel, nil
-}
-
 type SysUserOmit struct {
 	Id       int    `json:"id,omitempty"`       // 主键编码
 	NickName string `json:"nickName,omitempty"` // 昵称
-	Phone    string `json:"phone"`              // 手机号
 }
 
 func (SysUserOmit) TableName() string {

+ 16 - 0
app/admin/model/user_warehouse.go

@@ -0,0 +1,16 @@
+package model
+
+import model2 "cold-logistics/common/model"
+
+type UserWarehouse struct {
+	model2.Model
+	UserId           int         `json:"userId" gorm:"size:128;comment:用户id"`      // 用户id
+	WarehouseId      int         `json:"warehouseId" gorm:"size:128;comment:仓库id"` // 仓库id
+	User             SysUserOmit `json:"user"`
+	model2.ControlBy `json:"-"`
+	model2.ModelTime `json:"-"`
+}
+
+func (UserWarehouse) TableName() string {
+	return "user_warehouse"
+}

+ 5 - 2
app/admin/model/warehouse.go

@@ -5,8 +5,11 @@ import model2 "cold-logistics/common/model"
 // 仓库
 type Warehouse struct {
 	model2.Model
-	Name    string `json:"name" gorm:"size:128"`     // 商品名称
-	Address string `json:"address" gorm:"size:255;"` // 地址
+	Name     string          `json:"name" gorm:"size:128"`                                 // 商品名称
+	Sn       string          `json:"sn" gorm:"size:128"`                                   // sn
+	Address  string          `json:"address" gorm:"size:255;"`                             // 地址
+	Status   string          `json:"status" gorm:"size:4;not null;default:'2';comment:状态"` // 1-停用 2-正启用
+	UserList []UserWarehouse `json:"userList" gorm:"-"`
 	model2.ControlBy
 	model2.ModelTime
 	model2.DeptBy

+ 2 - 1
app/admin/router/address.go

@@ -2,6 +2,7 @@ package router
 
 import (
 	"cold-logistics/app/admin/controller"
+	"cold-logistics/common/actions"
 	"github.com/gin-gonic/gin"
 	jwt "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth"
 )
@@ -13,7 +14,7 @@ func init() {
 // 需认证的路由代码
 func registerAddressRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
 	cont := controller.AddressController{}
-	r := v1.Group("/address").Use(authMiddleware.MiddlewareFunc())
+	r := v1.Group("/address").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
 	{
 		r.GET("", cont.GetPage)
 		r.GET("/:id", cont.Get)

+ 25 - 0
app/admin/router/car.go

@@ -0,0 +1,25 @@
+package router
+
+import (
+	"cold-logistics/app/admin/controller"
+	"cold-logistics/common/actions"
+	"github.com/gin-gonic/gin"
+	jwt "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth"
+)
+
+func init() {
+	routerCheckRole = append(routerCheckRole, registerCarRouter)
+}
+
+// 需认证的路由代码
+func registerCarRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
+	cont := controller.CarController{}
+	r := v1.Group("/car").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
+	{
+		r.GET("", cont.GetPage)
+		r.GET("/:id", cont.Get)
+		r.POST("", cont.Insert)
+		r.PUT("", cont.Update)
+		r.DELETE("", cont.Delete)
+	}
+}

+ 29 - 0
app/admin/router/company.go

@@ -0,0 +1,29 @@
+package router
+
+import (
+	"cold-logistics/app/admin/controller"
+	"cold-logistics/common/actions"
+	"github.com/gin-gonic/gin"
+	jwt "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth"
+)
+
+func init() {
+	routerCheckRole = append(routerCheckRole, registerCompanyRouter)
+}
+
+// 需认证的路由代码
+func registerCompanyRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
+	cont := controller.CompanyController{}
+
+	r := v1.Group("/company").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
+	{
+		r.GET("", cont.GetPage)
+		r.GET("/all", cont.GetAll)
+		r.GET("/:id", cont.Get)
+		r.POST("", cont.Insert)
+		r.PUT("", cont.Update)
+		r.DELETE("", cont.Delete)
+
+	}
+
+}

+ 0 - 33
app/admin/router/sys_menu.go

@@ -1,33 +0,0 @@
-package router
-
-import (
-	"cold-logistics/app/admin/controller"
-	"cold-logistics/common/actions"
-	"github.com/gin-gonic/gin"
-	jwt "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth"
-)
-
-func init() {
-	routerCheckRole = append(routerCheckRole, registerSysMenuRouter)
-}
-
-// 需认证的路由代码
-func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
-	cont := controller.SysMenuController{}
-
-	r := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc())
-	{
-		r.GET("", cont.GetPage)
-		r.GET("/:id", cont.Get)
-		r.POST("", cont.Insert)
-		r.PUT("", cont.Update)
-		r.DELETE("", cont.Delete)
-	}
-
-	r1 := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
-	{
-		r1.GET("/menu-role", cont.GetMenuRole)
-		r1.GET("/menu-select", cont.MenuSelect)
-	}
-
-}

+ 1 - 2
app/admin/router/sys_user.go

@@ -21,11 +21,11 @@ func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
 	r := v1.Group("/sys-user").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
 	{
 		r.GET("", cont.GetPage)
-		r.GET("/delivery", cont.GetDeliveryPage)
 		r.GET("/:id", cont.Get)
 		r.POST("", cont.Insert)
 		r.PUT("", cont.Update)
 		r.DELETE("", cont.Delete)
+		r.PUT("/pwd/reset", cont.ResetPwd)
 	}
 
 	user := v1.Group("/user").Use(authMiddleware.MiddlewareFunc()).Use(actions.PermissionAction())
@@ -34,7 +34,6 @@ func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
 		user.GET("/info", cont.GetInfo)
 		user.PUT("/status", cont.UpdateStatus)
 		user.PUT("/pwd/set", cont.UpdatePwd)
-		user.PUT("/pwd/reset", cont.ResetPwd)
 
 	}
 

+ 101 - 26
app/admin/service/address.go

@@ -7,36 +7,83 @@ import (
 	cDto "cold-logistics/common/dto"
 	"cold-logistics/common/global"
 	"errors"
+	"fmt"
 	"gogs.baozhida.cn/zoie/OAuth-core/service"
 	"gorm.io/gorm"
+	"gorm.io/gorm/clause"
 )
 
 type Address struct {
 	service.Service
 }
 
+func AddressNameScopes(name string) func(db *gorm.DB) *gorm.DB {
+	return func(db *gorm.DB) *gorm.DB {
+		if len(name) == 0 {
+			return db
+		}
+		name = "%" + name + "%"
+		return db.Where("phone like ? or address like ? or province_name like ? or city_name like ? or region_name like ?",
+			name, name, name, name, name)
+	}
+}
+
+func AddressDataScopes(dataType string, userId int) func(db *gorm.DB) *gorm.DB {
+	return func(db *gorm.DB) *gorm.DB {
+
+		if dataType == "all" {
+			return db
+		}
+		return db.Where("create_by = ?", userId)
+	}
+}
+
 // GetPage 获取Address列表
-func (e *Address) GetPage(c *dto.AddressGetPageReq, list *[]model.Address, count *int64) error {
+func (e *Address) GetPage(c *dto.AddressGetPageReq, list *[]model.Address, count *int64, p *actions.DataPermission) error {
 	var err error
 	var data model.Address
 
+	var ad model.AddressDefault
+	err = e.Orm.Model(&ad).Where("user_id = ?", p.UserId).First(&ad).Error
+	if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+
 	err = e.Orm.Model(&data).
 		Scopes(
+			AddressNameScopes(c.Name),
+			AddressDataScopes(c.DataType, p.UserId),
 			cDto.MakeCondition(c.GetNeedSearch()),
 			cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
 		).
+		Order(fmt.Sprintf("id = %d desc", ad.AddressId)).
 		Find(list).Limit(-1).Offset(-1).
 		Count(count).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		return global.GetFailedErr
 	}
+
+	if *count > 0 {
+		if (*list)[0].Id == ad.AddressId {
+			(*list)[0].IsDefault = true
+		}
+	}
 	return nil
 }
 
 // Get 获取Address对象
 func (e *Address) Get(d *dto.AddressGetReq, carInfoModel *model.Address, p *actions.DataPermission) error {
-	err := e.Orm.
+
+	var ad model.AddressDefault
+	err := e.Orm.Model(&ad).Where("user_id = ?", p.UserId).First(&ad).Error
+	if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+
+	err = e.Orm.
 		Scopes(actions.Permission(carInfoModel.TableName(), p)).
 		First(carInfoModel, d.GetId()).Error
 
@@ -48,6 +95,10 @@ func (e *Address) Get(d *dto.AddressGetReq, carInfoModel *model.Address, p *acti
 		return global.GetFailedErr
 	}
 
+	if ad.AddressId == carInfoModel.Id {
+		carInfoModel.IsDefault = true
+	}
+
 	return nil
 }
 
@@ -65,33 +116,42 @@ func (e *Address) Insert(c *dto.AddressInsertReq) error {
 		}
 	}()
 
-	// 查询是否有其他默认地址
-	var count int64
-	err = tx.Model(&model.Address{}).Where("is_default = ? and customer_id = ?", 1, c.CustomerId).Count(&count).Error
+	// 添加地址
+	c.Generate(&data)
+	err = tx.Create(&data).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		return global.CreateFailedErr
 	}
+	c.Id = data.Id
 
-	if count > 0 && c.IsDefault == true {
-		err = tx.Model(&model.Address{}).Where("customer_id = ?", c.CustomerId).
-			Updates(map[string]interface{}{
-				"is_default": 0,
-			}).Error
+	if c.AddressType == model.AddressTypeSender && c.IsDefault == true {
+		ad := &model.AddressDefault{UserId: c.CreateBy, AddressId: c.Id}
+		//err = tx.Model(&ad).
+		//	Where("user_id = ?", c.CreateBy).Update("address_id", c.Id).Error
+		//if err != nil {
+		//	if errors.Is(gorm.ErrRecordNotFound, err) {
+		//		err = tx.Create(&ad).Error
+		//		if err != nil {
+		//			e.Log.Errorf("db error: %s", err)
+		//			return global.CreateFailedErr
+		//		}
+		//		return nil
+		//	}
+		//	e.Log.Errorf("db error: %s", err)
+		//	return global.CreateFailedErr
+		//}
+		err = tx.Debug().Clauses(clause.OnConflict{
+			Columns: []clause.Column{{Name: "user_id"}},
+			//DoUpdates: clause.AssignmentColumns([]string{"address_id"}),
+			UpdateAll: true,
+		}).Create(&ad).Error
 		if err != nil {
 			e.Log.Errorf("db error: %s", err)
 			return global.CreateFailedErr
 		}
 	}
 
-	// 添加角色
-	c.Generate(&data)
-	err = tx.Create(&data).Error
-	if err != nil {
-		e.Log.Errorf("db error: %s", err)
-		return global.CreateFailedErr
-	}
-	c.Id = data.Id
 	return nil
 
 }
@@ -109,8 +169,15 @@ func (e *Address) Update(c *dto.AddressUpdateReq, p *actions.DataPermission) err
 		}
 	}()
 
+	var ad model.AddressDefault
+	err = e.Orm.Model(&ad).Where("user_id = ?", p.UserId).First(&ad).Error
+	if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+
 	var carInfoModel = model.Address{}
-	// 查询角色是否存在
+	// 查询地址是否存在
 	err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
 		First(&carInfoModel, c.GetId()).Error
 	if err != nil {
@@ -121,14 +188,22 @@ func (e *Address) Update(c *dto.AddressUpdateReq, p *actions.DataPermission) err
 		return global.UpdateFailedErr
 	}
 
-	if c.IsDefault == true && c.IsDefault != carInfoModel.IsDefault {
-		err = tx.Model(&model.Address{}).Where("create_by = ?", carInfoModel.UpdateBy).
-			Updates(map[string]interface{}{
-				"is_default": 0,
-			}).Error
+	// 默认地址更换
+	if c.IsDefault == true && carInfoModel.Id != ad.AddressId && ad.AddressId > 0 {
+		err = tx.Model(&model.AddressDefault{}).Where("id = ?", ad.Id).
+			Update("address_id", carInfoModel.Id).Error
 		if err != nil {
 			e.Log.Errorf("db error: %s", err)
-			return global.CreateFailedErr
+			return global.UpdateFailedErr
+		}
+	}
+
+	// 取消默认地址
+	if c.IsDefault == false && carInfoModel.Id == ad.AddressId {
+		err = tx.Unscoped().Where("id = ?", ad.Id).Delete(&model.AddressDefault{}).Error
+		if err != nil {
+			e.Log.Errorf("db error: %s", err)
+			return global.UpdateFailedErr
 		}
 	}
 
@@ -159,7 +234,7 @@ func (e *Address) Remove(c *dto.AddressDeleteReq, p *actions.DataPermission) err
 
 	var carInfoModel model.Address
 
-	// 查询角色是否存在
+	// 查询地址是否存在
 	err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
 		First(&carInfoModel, c.GetId()).Error
 	if err != nil {

+ 179 - 0
app/admin/service/car.go

@@ -0,0 +1,179 @@
+package service
+
+import (
+	"cold-logistics/app/admin/model"
+	"cold-logistics/app/admin/service/dto"
+	"cold-logistics/common/actions"
+	cDto "cold-logistics/common/dto"
+	"cold-logistics/common/global"
+	"errors"
+	"gogs.baozhida.cn/zoie/OAuth-core/service"
+	"gorm.io/gorm"
+)
+
+type Car struct {
+	service.Service
+}
+
+// GetPage 获取Car列表
+func (e *Car) GetPage(c *dto.CarGetPageReq, list *[]model.Car, count *int64, p *actions.DataPermission) error {
+	var err error
+	var data model.Car
+
+	err = e.Orm.Model(&data).
+		Scopes(
+			cDto.MakeCondition(c.GetNeedSearch()),
+			cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
+			actions.Permission(data.TableName(), p),
+		).
+		Preload("User").
+		Find(list).Limit(-1).Offset(-1).
+		Count(count).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+	return nil
+}
+
+// Get 获取Car对象
+func (e *Car) Get(d *dto.CarGetReq, warehouseModel *model.Car, p *actions.DataPermission) error {
+	err := e.Orm.
+		Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		Preload("User").
+		First(warehouseModel, d.GetId()).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		if errors.Is(err, gorm.ErrRecordNotFound) {
+			return global.GetNotFoundOrNoPermissionErr
+		}
+		return global.GetFailedErr
+	}
+
+	return nil
+}
+
+// Insert 创建Car对象
+func (e *Car) Insert(c *dto.CarInsertReq) error {
+	var err error
+	var data model.Car
+
+	tx := e.Orm.Begin()
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+
+	var i int64
+	err = tx.Model(&data).Where("car_no = ?", c.CarNo).Count(&i).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	if i > 0 {
+		err = errors.New("车牌号已存在!")
+		e.Log.Errorf("db error: %s", err)
+		return err
+	}
+	var j int64
+	err = tx.Model(&data).Where("user_id = ?", c.UserId).Count(&j).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	if j > 0 {
+		err = errors.New("该用户已绑定其他车辆!")
+		e.Log.Errorf("db error: %s", err)
+		return err
+	}
+
+	// 添加仓库
+	c.Generate(&data)
+	err = tx.Create(&data).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	c.Id = data.Id
+
+	return nil
+
+}
+
+// Update 修改Car对象
+func (e *Car) Update(c *dto.CarUpdateReq, p *actions.DataPermission) error {
+	var err error
+
+	tx := e.Orm.Begin()
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+
+	var warehouseModel = model.Car{}
+	// 查询仓库是否存在
+	err = e.Orm.Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		First(&warehouseModel, c.GetId()).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		if errors.Is(err, gorm.ErrRecordNotFound) {
+			return global.UpdateNotFoundOrNoPermissionErr
+		}
+		return global.UpdateFailedErr
+	}
+
+	c.Generate(&warehouseModel)
+	err = tx.Save(&warehouseModel).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.UpdateFailedErr
+	}
+
+	c.Id = warehouseModel.Id
+	return nil
+}
+
+// Remove 删除Car
+func (e *Car) Remove(c *dto.CarDeleteReq, p *actions.DataPermission) error {
+	var err error
+
+	tx := e.Orm.Begin()
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+
+	var warehouseModel model.Car
+
+	// 查询仓库是否存在
+	err = e.Orm.Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		First(&warehouseModel, c.GetId()).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		if errors.Is(err, gorm.ErrRecordNotFound) {
+			return global.DeleteNotFoundOrNoPermissionErr
+		}
+		return global.DeleteFailedErr
+	}
+
+	db := tx.Delete(&warehouseModel)
+
+	if err = db.Error; err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.DeleteFailedErr
+	}
+	if db.RowsAffected == 0 {
+		return global.DeleteNotFoundOrNoPermissionErr
+	}
+
+	return nil
+}

+ 42 - 2
app/admin/service/company.go

@@ -21,7 +21,7 @@ type Company struct {
 // GetPage 获取Address列表
 func (e *Company) GetPage(c *dto.CompanyGetPageReq, list *[]model.SysDept, count *int64) error {
 	var err error
-	var data model.Address
+	var data model.SysDept
 
 	err = e.Orm.Model(&data).
 		Scopes(
@@ -37,6 +37,33 @@ func (e *Company) GetPage(c *dto.CompanyGetPageReq, list *[]model.SysDept, count
 	return nil
 }
 
+func CompanyIdScopes(id int) func(db *gorm.DB) *gorm.DB {
+
+	return func(db *gorm.DB) *gorm.DB {
+		if id == 0 {
+			return db
+		}
+		return db.Where("id = ? ", id)
+	}
+}
+func (e *Company) GetAll(c *dto.CompanyGetAllReq, list *[]model.SysDept, count *int64, p *actions.DataPermission) error {
+	var err error
+	var data model.SysDept
+
+	err = e.Orm.Model(&data).
+		Scopes(
+			CompanyIdScopes(p.DeptId),
+			cDto.MakeCondition(c.GetNeedSearch()),
+		).
+		Find(list).Limit(-1).Offset(-1).
+		Count(count).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+	return nil
+}
+
 // Get 获取SysDept对象
 func (e *Company) Get(d *dto.CompanyGetReq, deptModel *model.SysDept) error {
 	err := e.Orm.
@@ -52,7 +79,7 @@ func (e *Company) Get(d *dto.CompanyGetReq, deptModel *model.SysDept) error {
 }
 
 // Insert 创建SysDept对象
-func (e *Company) Insert(c *dto.CompanyInsertReq, deptId int) error {
+func (e *Company) Insert(c *dto.CompanyInsertReq) error {
 	var err error
 	var data model.SysDept
 	tx := e.Orm.Debug().Begin()
@@ -64,6 +91,19 @@ func (e *Company) Insert(c *dto.CompanyInsertReq, deptId int) error {
 		}
 	}()
 
+	var i int64
+	err = e.Orm.Model(&data).Where("name = ?", c.Name).Count(&i).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	if i > 0 {
+		err = errors.New("公司名称已存在!")
+		e.Log.Errorf("db error: %s", err)
+		return err
+	}
+
+	c.Generate(&data)
 	err = tx.Create(&data).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)

+ 53 - 33
app/admin/service/dto/address.go

@@ -8,10 +8,11 @@ import (
 
 type AddressGetPageReq struct {
 	dto.Pagination `search:"-"`
-	Name           string `form:"name" search:"-"` // 角色名称
+	Name           string `form:"name" search:"-"`                                                   // 地址名称
+	AddressType    string `form:"addressType" search:"type:exact;column:address_type;table:address"` //地址类型:sender-发货人 consignee-收货人
+	DataType       string `form:"dataType" search:"-"`                                               // 我的my 全部all
 	AddressOrder
 }
-
 type AddressOrder struct {
 	CreatedAtOrder string `search:"type:order;column:created_at;table:address" form:"createdAtOrder" default:"desc"`
 }
@@ -21,16 +22,21 @@ func (m *AddressGetPageReq) GetNeedSearch() interface{} {
 }
 
 type AddressInsertReq struct {
-	Id         int     `json:"id" comment:"编码" swaggerignore:"true"` // 编码
-	CustomerId string  `json:"customerId"  swaggerignore:"true"`     // 客户id
-	Name       string  `json:"name"`                                 // 收货人名称
-	Phone      string  `json:"phone" vd:"len($)>0;msg:'手机号不能为空'"`    // 联系电话
-	City       string  `json:"city" vd:"len($)>0;msg:'所在地市不能为空'"`    // 所在地市
-	Area       string  `json:"area" vd:"len($)>0;msg:'所属区/县不能为空'"`   // 所属区/县
-	Address    string  `json:"address"`                              // 详细地址
-	IsDefault  bool    `json:"isDefault"`                            // 默认地址
-	Lng        float64 `json:"lng"`                                  // 经度
-	Lat        float64 `json:"lat"`                                  // 纬度
+	Id           int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
+	Name         string `json:"name" vd:"len($)>0;msg:'姓名不能为空'"`      // 收货人名称
+	Phone        string `json:"phone" vd:"len($)>0;msg:'手机号不能为空'"`    // 联系电话
+	Address      string `json:"address" vd:"len($)>0;msg:'详细地址不能为空'"` // 详细地址
+	IsDefault    bool   `json:"isDefault"`                            // 默认地址
+	ProvinceId   string `json:"provinceId"`                           // 省Id
+	ProvinceName string `json:"provinceName"`                         // 省中文名
+	CityId       string `json:"cityId"`                               // 市Id
+	CityName     string `json:"cityName"`                             // 市中文名
+	RegionId     string `json:"regionId"`                             // 区Id
+	RegionName   string `json:"regionName"`                           // 区中文名
+	AddressType  string `json:"addressType"`                          // 地址类型:sender-发货人 consignee-收货人
+
+	common.ControlBy `swaggerignore:"true"`
+	common.DeptBy    `swaggerignore:"true"`
 }
 
 func (s *AddressInsertReq) Generate(m *model.Address) {
@@ -39,16 +45,24 @@ func (s *AddressInsertReq) Generate(m *model.Address) {
 	}
 	m.Name = s.Name
 	m.Phone = s.Phone
-	m.City = s.City
-	m.Area = s.Area
 	m.Address = s.Address
 	m.IsDefault = s.IsDefault
-	m.Lng = s.Lng
-	m.Lat = s.Lat
-}
-
-func (e *AddressInsertReq) SetCustomerId(CustomerId string) {
-	e.CustomerId = CustomerId
+	m.ProvinceId = s.ProvinceId
+	m.ProvinceName = s.ProvinceName
+	m.CityId = s.CityId
+	m.CityName = s.CityName
+	m.RegionId = s.RegionId
+	m.RegionName = s.RegionName
+	m.AddressType = s.AddressType
+	if s.ControlBy.UpdateBy != 0 {
+		m.UpdateBy = s.UpdateBy
+	}
+	if s.ControlBy.CreateBy != 0 {
+		m.CreateBy = s.CreateBy
+	}
+	if s.DeptBy.DeptId != 0 {
+		m.DeptId = s.DeptId
+	}
 }
 
 func (s *AddressInsertReq) GetId() interface{} {
@@ -56,15 +70,18 @@ func (s *AddressInsertReq) GetId() interface{} {
 }
 
 type AddressUpdateReq struct {
-	Id        int     `json:"id" comment:"编码"` // 编码
-	Name      string  `json:"name"`            // 收货人名称
-	Phone     string  `json:"phone"`           // 联系电话
-	City      string  `json:"city"`            // 所在地市
-	Area      string  `json:"area"`            // 所属区/县
-	Address   string  `json:"address"`         // 详细地址
-	IsDefault bool    `json:"isDefault"`       // 默认地址
-	Lng       float64 `json:"lng"`             // 经度
-	Lat       float64 `json:"lat"`             // 纬度
+	Id           int    `json:"id" comment:"编码"`                      // 编码
+	Name         string `json:"name" vd:"len($)>0;msg:'姓名不能为空'"`      // 收货人名称
+	Phone        string `json:"phone" vd:"len($)>0;msg:'手机号不能为空'"`    // 联系电话
+	Address      string `json:"address" vd:"len($)>0;msg:'详细地址不能为空'"` // 详细地址
+	IsDefault    bool   `json:"isDefault"`                            // 默认地址
+	ProvinceId   string `json:"provinceId"`                           // 省Id
+	ProvinceName string `json:"provinceName"`                         // 省中文名
+	CityId       string `json:"cityId"`                               // 市Id
+	CityName     string `json:"cityName"`                             // 市中文名
+	RegionId     string `json:"regionId"`                             // 区Id
+	RegionName   string `json:"regionName"`                           // 区中文名
+	AddressType  string `json:"addressType"`                          // 地址类型:sender-发货人 consignee-收货人
 
 	common.ControlBy `swaggerignore:"true"`
 }
@@ -75,12 +92,15 @@ func (s *AddressUpdateReq) Generate(m *model.Address) {
 	}
 	m.Name = s.Name
 	m.Phone = s.Phone
-	m.City = s.City
-	m.Area = s.Area
 	m.Address = s.Address
 	m.IsDefault = s.IsDefault
-	m.Lng = s.Lng
-	m.Lat = s.Lat
+	m.ProvinceId = s.ProvinceId
+	m.ProvinceName = s.ProvinceName
+	m.CityId = s.CityId
+	m.CityName = s.CityName
+	m.RegionId = s.RegionId
+	m.RegionName = s.RegionName
+	m.AddressType = s.AddressType
 	if s.ControlBy.UpdateBy != 0 {
 		m.UpdateBy = s.UpdateBy
 	}

+ 100 - 0
app/admin/service/dto/car.go

@@ -0,0 +1,100 @@
+package dto
+
+import (
+	"cold-logistics/app/admin/model"
+	"cold-logistics/common/dto"
+	common "cold-logistics/common/model"
+)
+
+type CarGetPageReq struct {
+	dto.Pagination `search:"-"`
+	CarNo          string `form:"carNo" search:"type:contains;column:car_no;table:car"` // 商品名称
+	CarOrder
+}
+
+type CarOrder struct {
+	CreatedAtOrder string `search:"type:order;column:created_at;table:car" form:"createdAtOrder" default:"desc"`
+}
+
+func (m *CarGetPageReq) GetNeedSearch() interface{} {
+	return *m
+}
+
+type CarInsertReq struct {
+	Id               int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
+	CarNo            string `json:"carNo"`                                // 商品名称
+	Sn               string `json:"sn"`                                   // sn
+	Status           string `json:"status"`                               // 1-停用 2-正启用
+	UserId           int    `json:"userId"`                               // 绑定的用户id
+	common.ControlBy `swaggerignore:"true"`
+	common.DeptBy    `swaggerignore:"true"`
+}
+
+func (s *CarInsertReq) Generate(model *model.Car) {
+	if s.Id != 0 {
+		model.Id = s.Id
+	}
+	model.CarNo = s.CarNo
+	model.Sn = s.Sn
+	model.Status = s.Status
+	model.UserId = s.UserId
+	if s.ControlBy.UpdateBy != 0 {
+		model.UpdateBy = s.UpdateBy
+	}
+	if s.ControlBy.CreateBy != 0 {
+		model.CreateBy = s.CreateBy
+	}
+	if s.DeptBy.DeptId != 0 {
+		model.DeptId = s.DeptId
+	}
+}
+
+func (s *CarInsertReq) GetId() interface{} {
+	return s.Id
+}
+
+type CarUpdateReq struct {
+	Id               int    `json:"id" comment:"编码"` // 编码
+	CarNo            string `json:"carNo"`           // 商品名称
+	Sn               string `json:"sn"`              // sn
+	Status           string `json:"status"`          // 1-停用 2-正启用
+	UserId           int    `json:"userId"`          // 绑定的用户id
+	common.ControlBy `swaggerignore:"true"`
+}
+
+func (s *CarUpdateReq) Generate(model *model.Car) {
+	if s.Id != 0 {
+		model.Id = s.Id
+	}
+	model.CarNo = s.CarNo
+	model.Sn = s.Sn
+	model.Status = s.Status
+	model.UserId = s.UserId
+	if s.ControlBy.UpdateBy != 0 {
+		model.UpdateBy = s.UpdateBy
+	}
+	if s.ControlBy.CreateBy != 0 {
+		model.CreateBy = s.CreateBy
+	}
+}
+
+func (s *CarUpdateReq) GetId() interface{} {
+	return s.Id
+}
+
+type CarGetReq struct {
+	Id int `uri:"id"`
+}
+
+func (s *CarGetReq) GetId() interface{} {
+	return s.Id
+}
+
+type CarDeleteReq struct {
+	Id               int `json:"id"`
+	common.ControlBy `swaggerignore:"true"`
+}
+
+func (s *CarDeleteReq) GetId() interface{} {
+	return s.Id
+}

+ 16 - 3
app/admin/service/dto/company.go

@@ -13,6 +13,11 @@ type CompanyGetPageReq struct {
 	CompanyOrder
 }
 
+type CompanyGetAllReq struct {
+	Name string `form:"name" search:"type:contains;column:name;table:sys_dept" example:"公司名称"` //公司名称
+	CompanyOrder
+}
+
 type CompanyOrder struct {
 	SortOrder string `search:"type:order;column:sort;table:sys_dept" form:"sort" default:"asc"` //排序 ASC 升序 DESC 降序
 }
@@ -21,10 +26,15 @@ func (m *CompanyGetPageReq) GetNeedSearch() interface{} {
 	return *m
 }
 
+func (m *CompanyGetAllReq) GetNeedSearch() interface{} {
+	return *m
+}
+
 type CompanyInsertReq struct {
-	Id               int    `json:"id" swaggerignore:"true"`
-	ParentId         int    `json:"parentId" example:"0" vd:"?"` //上级
-	Name             string `json:"name" example:"名称" `          //名称
+	Id     int    `json:"id" swaggerignore:"true"`
+	Name   string `json:"name" example:"名称" vd:"len($)>0;msg:'公司名称不能为空'"` //名称
+	Remark string `json:"remark"`                                         // 备注
+
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -34,6 +44,7 @@ func (s *CompanyInsertReq) Generate(model *model.SysDept) {
 	}
 	model.Name = s.Name
 	model.ParentId = 0
+	model.Remark = s.Remark
 }
 
 // GetId 获取数据对应的ID
@@ -44,6 +55,7 @@ func (s *CompanyInsertReq) GetId() interface{} {
 type CompanyUpdateReq struct {
 	Id               int    `json:"id" comment:"编码"`   // 编码
 	Name             string `json:"name" example:"名称"` //名称
+	Remark           string `json:"remark"`            // 备注
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -53,6 +65,7 @@ func (s *CompanyUpdateReq) Generate(model *model.SysDept) {
 		model.Id = s.Id
 	}
 	model.Name = s.Name
+	model.Remark = s.Remark
 }
 
 // GetId 获取数据对应的ID

+ 11 - 20
app/admin/service/dto/sys_user.go

@@ -10,11 +10,7 @@ type SysUserGetPageReq struct {
 	dto2.Pagination `search:"-"`
 	Username        string `form:"username" search:"type:contains;column:username;table:sys_user" comment:"用户名"`
 	Name            string `form:"name" search:"type:contains;column:nick_name;table:sys_user" comment:"昵称"`
-	Uuid            string `form:"uuid" search:"type:contains;column:uuid;table:sys_user" comment:"昵称"`
-	RoleId          int    `form:"roleId" search:"type:exact;column:role_id;table:sys_user" comment:"角色ID"`
-	DeptId          int    `form:"deptId" search:"type:exact;column:dept_id;table:sys_user" comment:"部门ID"`
-	Status          string `form:"status" search:"type:exact;column:status;table:sys_user" comment:"状态"`
-	UserType        int    `form:"userType" search:"-"`
+	Type            int    `form:"type" search:"type:exact;column:type;table:sys_user" comment:"状态"`
 	SysUserOrder
 }
 type SysUserOrder struct {
@@ -98,12 +94,12 @@ type SysUserInsertReq struct {
 	Id               int    `json:"id" swaggerignore:"true" comment:"用户ID"`                    // 用户ID
 	Username         string `json:"username" example:"username" vd:"@:len($)>0;msg:'用户名不能为空'"` // 用户名
 	Password         string `json:"password" example:"123456" vd:"@:len($)>5;msg:'密码格式不正确'"`   // 密码
-	Name             string `json:"name" swaggerignore:"true"`                                 // 姓名
+	Name             string `json:"name" vd:"@:len($)>0;msg:'姓名不能为空'"`                         // 姓名
 	Phone            string `json:"phone" swaggerignore:"true"`                                // 手机号
-	RoleId           int    `json:"roleId" example:"1"`                                        // 角色id
-	DeptId           int    `json:"deptId" example:"1"  swaggerignore:"true"`                  // 机构id
+	RoleId           int    `json:"roleId" example:"1" swaggerignore:"true"`                   // 角色id
+	DeptId           int    `json:"deptId" example:"1"`                                        // 机构id
 	Status           string `json:"status" example:"2" swaggerignore:"true"`                   // 状态 	// 货车司机绑定《道路运输从业人员从业资格证》信息
-	ProvUserId       string `json:"provUserId"  swaggerignore:"true"`                          // 省平台用户id
+	Type             int    `json:"type" example:"2"`                                          // 管理员1 仓管2 司机3
 	model2.ControlBy `swaggerignore:"true"`
 }
 
@@ -118,6 +114,7 @@ func (s *SysUserInsertReq) Generate(userModel *model.SysUser) {
 	userModel.DeptId = s.DeptId
 	userModel.RoleId = s.RoleId
 	userModel.Status = "2"
+	userModel.Type = s.Type
 
 	if s.ControlBy.UpdateBy != 0 {
 		userModel.UpdateBy = s.UpdateBy
@@ -132,13 +129,10 @@ func (s *SysUserInsertReq) GetId() interface{} {
 }
 
 type SysUserUpdateReq struct {
-	Id               int    `json:"id" swaggerignore:"true" comment:"用户ID"`   // 用户ID
-	Name             string `json:"name" swaggerignore:"true"`                // 姓名
-	Phone            string `json:"phone" swaggerignore:"true"`               // 手机号
-	RoleId           int    `json:"roleId" example:"1"`                       // 角色id
-	DeptId           int    `json:"deptId" example:"1"  swaggerignore:"true"` // 机构id
-	Status           string `json:"status" example:"2" swaggerignore:"true"`  // 状态
-	ProvUserId       string `json:"provUserId"  swaggerignore:"true"`         // 省平台用户id
+	Id   int    `json:"id"  comment:"用户ID"`                // 用户ID
+	Name string `json:"name" vd:"@:len($)>0;msg:'姓名不能为空'"` // 姓名
+	Type int    `json:"type" example:"2"`                  // 管理员1 仓管2 司机3
+
 	model2.ControlBy `swaggerignore:"true"`
 }
 
@@ -147,10 +141,7 @@ func (s *SysUserUpdateReq) Generate(userModel *model.SysUser) {
 		userModel.Id = s.Id
 	}
 	userModel.NickName = s.Name
-	userModel.Phone = s.Phone
-	userModel.DeptId = s.DeptId
-	userModel.RoleId = s.RoleId
-	userModel.Status = "2"
+	userModel.Type = s.Type
 	if s.ControlBy.UpdateBy != 0 {
 		userModel.UpdateBy = s.UpdateBy
 	}

+ 12 - 2
app/admin/service/dto/warehouse.go

@@ -22,8 +22,11 @@ func (m *WarehouseGetPageReq) GetNeedSearch() interface{} {
 
 type WarehouseInsertReq struct {
 	Id               int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
-	Name             string `json:"name"`                                 // 名称
+	Name             string `json:"name"`                                 // 商品名称
+	Sn               string `json:"sn"`                                   // sn
 	Address          string `json:"address"`                              // 地址
+	Status           string `json:"status"`                               // 1-停用 2-正启用
+	UserIds          []int  `json:"userIds"`                              // 绑定的用户id
 	common.ControlBy `swaggerignore:"true"`
 	common.DeptBy    `swaggerignore:"true"`
 }
@@ -33,6 +36,8 @@ func (s *WarehouseInsertReq) Generate(model *model.Warehouse) {
 		model.Id = s.Id
 	}
 	model.Name = s.Name
+	model.Sn = s.Sn
+	model.Status = s.Status
 	model.Address = s.Address
 	if s.ControlBy.UpdateBy != 0 {
 		model.UpdateBy = s.UpdateBy
@@ -52,7 +57,10 @@ func (s *WarehouseInsertReq) GetId() interface{} {
 type WarehouseUpdateReq struct {
 	Id               int    `json:"id" comment:"编码"` // 编码
 	Name             string `json:"name"`            // 商品名称
-	Address          string `json:"address"`         // 备注
+	Sn               string `json:"sn"`              // sn
+	Address          string `json:"address"`         // 地址
+	Status           string `json:"status"`          // 1-停用 2-正启用
+	UserIds          []int  `json:"userIds"`         // 绑定的用户id
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -61,7 +69,9 @@ func (s *WarehouseUpdateReq) Generate(model *model.Warehouse) {
 		model.Id = s.Id
 	}
 	model.Name = s.Name
+	model.Sn = s.Sn
 	model.Address = s.Address
+	model.Status = s.Status
 	if s.ControlBy.UpdateBy != 0 {
 		model.UpdateBy = s.UpdateBy
 	}

+ 33 - 23
app/admin/service/sys_user.go

@@ -22,14 +22,12 @@ func (e *SysUser) GetPage(c *dto.SysUserGetPageReq, p *actions.DataPermission, l
 	var err error
 	var data model.SysUser
 	var userList []model.SysUser
-	if c.UserType > 0 {
+	if p.DeptId == 0 {
 		err = e.Orm.
 			Scopes(
 				cDto.MakeCondition(c.GetNeedSearch()),
 				cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
-				actions.UserPermission(data.TableName(), p),
-			).
-			Where("JSON_EXTRACT(prov_user, '$.userType') = ?", c.UserType).
+			).Where("create_by = ?", p.UserId).
 			Find(&userList).Limit(-1).Offset(-1).
 			Count(count).Error
 	} else {
@@ -179,6 +177,20 @@ func (e *SysUser) Insert(c *dto.SysUserInsertReq) error {
 			tx.Commit()
 		}
 	}()
+
+	var dept model.SysDept
+	var deptCount int64
+	err = e.Orm.Model(&dept).Where("id = ?", c.DeptId).Count(&deptCount).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	if deptCount == 0 {
+		err = errors.New("公司不存在!")
+		e.Log.Errorf("db error: %s", err)
+		return err
+	}
+
 	var data model.SysUser
 	var i int64
 	err = e.Orm.Model(&data).Where("username = ?", c.Username).Count(&i).Error
@@ -324,8 +336,10 @@ func (e *SysUser) Remove(c *dto.SysUserDeleteReq, p *actions.DataPermission) err
 	db := e.Orm.Model(&data).
 		Scopes(actions.UserPermission(data.TableName(), p)).
 		Find(&data, c.GetId())
-
-	if err := db.Error; err != nil {
+	if data.CreateBy == 1 && data.Type == 1 {
+		return errors.New("禁止删除管理员")
+	}
+	if err = db.Error; err != nil {
 		e.Log.Errorf("db error: %s", err)
 		return err
 	}
@@ -333,7 +347,18 @@ func (e *SysUser) Remove(c *dto.SysUserDeleteReq, p *actions.DataPermission) err
 		return global.DeleteNotFoundOrNoPermissionErr
 	}
 
-	// TODO 1.1.1.9注销用户信息
+	var car model.Car
+	var j int64
+	err = e.Orm.Model(&car).Where("user_id = ?", c.GetId()).Count(&j).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.CreateFailedErr
+	}
+	if j > 0 {
+		err = errors.New("该用户已绑定车辆,禁止删除!")
+		e.Log.Errorf("db error: %s", err)
+		return err
+	}
 
 	if err := tx.Delete(&data, c.GetId()).Error; err != nil {
 		if errors.Is(err, model.ErrForbidDeleteSysRole) {
@@ -390,25 +415,10 @@ func (e *SysUser) UpdatePwd(id int, oldPassword, newPassword string) error {
 }
 
 func (e *SysUser) GetProfile(c *dto.SysUserById, user *model.SysUser) error {
-	err := e.Orm.First(user, c.GetId()).Error
-	if err != nil {
-		return err
-	}
-	var dept model.SysDept
-	var role model.SysRole
-	//var post model.SysPost
-
-	err = e.Orm.First(&dept, user.DeptId).Error
-	if err != nil {
-		return err
-	}
-	user.Dept = dept
-
-	err = e.Orm.First(&role, user.RoleId).Error
+	err := e.Orm.First(user, c.GetId()).Preload("Dept").Error
 	if err != nil {
 		return err
 	}
-	user.Role = role
 
 	return nil
 }

+ 82 - 17
app/admin/service/warehouse.go

@@ -36,11 +36,10 @@ func (e *Warehouse) GetPage(c *dto.WarehouseGetPageReq, list *[]model.Warehouse,
 }
 
 // Get 获取Warehouse对象
-func (e *Warehouse) Get(d *dto.WarehouseGetReq, carInfoModel *model.Warehouse, p *actions.DataPermission) error {
+func (e *Warehouse) Get(d *dto.WarehouseGetReq, warehouseModel *model.Warehouse, p *actions.DataPermission) error {
 	err := e.Orm.
-		Scopes(actions.Permission(carInfoModel.TableName(), p)).
-		First(carInfoModel, d.GetId()).Error
-
+		Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		First(warehouseModel, d.GetId()).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		if errors.Is(err, gorm.ErrRecordNotFound) {
@@ -48,6 +47,13 @@ func (e *Warehouse) Get(d *dto.WarehouseGetReq, carInfoModel *model.Warehouse, p
 		}
 		return global.GetFailedErr
 	}
+	userWarehouse := make([]model.UserWarehouse, 0)
+	err = e.Orm.Model(&model.UserWarehouse{}).Where("warehouse_id = ?", d.GetId()).Preload("User").Find(&userWarehouse).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.GetFailedErr
+	}
+	warehouseModel.UserList = userWarehouse
 
 	return nil
 }
@@ -66,7 +72,7 @@ func (e *Warehouse) Insert(c *dto.WarehouseInsertReq) error {
 		}
 	}()
 
-	// 添加角色
+	// 添加仓库
 	c.Generate(&data)
 	err = tx.Create(&data).Error
 	if err != nil {
@@ -74,6 +80,32 @@ func (e *Warehouse) Insert(c *dto.WarehouseInsertReq) error {
 		return global.CreateFailedErr
 	}
 	c.Id = data.Id
+
+	// 添加用户和仓库的关联
+	var userList []model.SysUser
+	err = e.Orm.Where("id in (?) and dept_id = ?", c.UserIds, c.DeptId).Find(&userList).Error
+	if err != nil {
+		return global.GetFailedErr
+	}
+	if len(userList) == 0 {
+		return errors.New("用户不存在!")
+	}
+
+	var userWarehouseList []model.UserWarehouse
+	// 添加用户和仓库的关联
+	for _, v := range userList {
+		userWarehouseObj := model.UserWarehouse{
+			UserId:      v.Id,
+			WarehouseId: data.Id,
+		}
+		userWarehouseObj.SetCreateBy(c.CreateBy)
+		userWarehouseList = append(userWarehouseList, userWarehouseObj)
+	}
+	err = tx.Save(&userWarehouseList).Error
+	if err != nil {
+		e.Log.Errorf("save userWarehouse userIds error, %s", err)
+		return global.CreateFailedErr
+	}
 	return nil
 
 }
@@ -91,10 +123,10 @@ func (e *Warehouse) Update(c *dto.WarehouseUpdateReq, p *actions.DataPermission)
 		}
 	}()
 
-	var carInfoModel = model.Warehouse{}
-	// 查询角色是否存在
-	err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
-		First(&carInfoModel, c.GetId()).Error
+	var warehouseModel = model.Warehouse{}
+	// 查询仓库是否存在
+	err = e.Orm.Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		First(&warehouseModel, c.GetId()).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		if errors.Is(err, gorm.ErrRecordNotFound) {
@@ -103,14 +135,47 @@ func (e *Warehouse) Update(c *dto.WarehouseUpdateReq, p *actions.DataPermission)
 		return global.UpdateFailedErr
 	}
 
-	c.Generate(&carInfoModel)
-	err = tx.Save(&carInfoModel).Error
+	c.Generate(&warehouseModel)
+	err = tx.Save(&warehouseModel).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		return global.UpdateFailedErr
 	}
 
-	c.Id = carInfoModel.Id
+	c.Id = warehouseModel.Id
+
+	// 删除用户和仓库的关联
+	err = tx.Where("warehouse_id = ?", warehouseModel.Id).Delete(&model.UserWarehouse{}).Error
+	if err != nil {
+		e.Log.Errorf("db error: %s", err)
+		return global.UpdateFailedErr
+	}
+
+	// 添加用户和仓库的关联
+	var userList []model.SysUser
+	err = e.Orm.Where("id in (?) and dept_id = ?", c.UserIds, warehouseModel.DeptId).Find(&userList).Error
+	if err != nil {
+		return global.GetFailedErr
+	}
+	if len(userList) == 0 {
+		return errors.New("用户不存在!")
+	}
+
+	var userWarehouseList []model.UserWarehouse
+	// 添加用户和仓库的关联
+	for _, v := range userList {
+		userWarehouseObj := model.UserWarehouse{
+			UserId:      v.Id,
+			WarehouseId: warehouseModel.Id,
+		}
+		userWarehouseObj.SetCreateBy(c.UpdateBy)
+		userWarehouseList = append(userWarehouseList, userWarehouseObj)
+	}
+	err = tx.Save(&userWarehouseList).Error
+	if err != nil {
+		e.Log.Errorf("save userWarehouse userIds error, %s", err)
+		return global.CreateFailedErr
+	}
 
 	return nil
 }
@@ -128,11 +193,11 @@ func (e *Warehouse) Remove(c *dto.WarehouseDeleteReq, p *actions.DataPermission)
 		}
 	}()
 
-	var carInfoModel model.Warehouse
+	var warehouseModel model.Warehouse
 
-	// 查询角色是否存在
-	err = e.Orm.Scopes(actions.Permission(carInfoModel.TableName(), p)).
-		First(&carInfoModel, c.GetId()).Error
+	// 查询仓库是否存在
+	err = e.Orm.Scopes(actions.Permission(warehouseModel.TableName(), p)).
+		First(&warehouseModel, c.GetId()).Error
 	if err != nil {
 		e.Log.Errorf("db error: %s", err)
 		if errors.Is(err, gorm.ErrRecordNotFound) {
@@ -141,7 +206,7 @@ func (e *Warehouse) Remove(c *dto.WarehouseDeleteReq, p *actions.DataPermission)
 		return global.DeleteFailedErr
 	}
 
-	db := tx.Delete(&carInfoModel)
+	db := tx.Delete(&warehouseModel)
 
 	if err = db.Error; err != nil {
 		e.Log.Errorf("db error: %s", err)

+ 0 - 8
cmd/api/jobs.go

@@ -1,8 +0,0 @@
-package api
-
-import "cold-logistics/app/jobs/router"
-
-func init() {
-	//注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法
-	AppRouters = append(AppRouters, router.InitRouter)
-}

+ 7 - 2
common/actions/permission.go

@@ -46,9 +46,13 @@ func newDataPermission(tx *gorm.DB, userId interface{}) (*DataPermission, error)
 	var err error
 	p := &DataPermission{}
 
+	//err = tx.Table("sys_user").
+	//	Select("sys_user.id as user_id", "sys_role.id as role_id", "sys_user.dept_id", "sys_role.data_scope").
+	//	Joins("left join sys_role on sys_role.id = sys_user.role_id").
+	//	Where("sys_user.id = ?", userId).
+	//	Scan(p).Error
 	err = tx.Table("sys_user").
-		Select("sys_user.id as user_id", "sys_role.id as role_id", "sys_user.dept_id", "sys_role.data_scope").
-		Joins("left join sys_role on sys_role.id = sys_user.role_id").
+		Select("sys_user.id as user_id", "sys_user.dept_id").
 		Where("sys_user.id = ?", userId).
 		Scan(p).Error
 	if err != nil {
@@ -112,6 +116,7 @@ func getPermissionFromContext(c *gin.Context) *DataPermission {
 			p = pm.(*DataPermission)
 		}
 	}
+	p.DataScope = "3"
 	return p
 }
 

+ 0 - 2
common/middleware/auth.go

@@ -32,8 +32,6 @@ func AuthInit() (*jwt.GinJWTMiddleware, error) {
 		TokenLookup:     "header: Authorization, query: token, cookie: jwt",
 		TokenHeadName:   "Bearer",
 		TimeFunc:        time.Now,
-		SaveNewestToken: handler.SaveNewestToken,
-		GetNewestToken:  handler.GetNewestToken,
 	})
 
 }

+ 3 - 1
common/middleware/handler/auth.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"github.com/go-redis/redis/v7"
+	"github.com/go-sql-driver/mysql"
 	"github.com/mssola/user_agent"
 	"gogs.baozhida.cn/zoie/OAuth-core/api"
 	"gogs.baozhida.cn/zoie/OAuth-core/pkg"
@@ -247,8 +248,9 @@ func GetSingleLogin(c *gin.Context) (bool, error) {
 	var result string
 	err = ormDB.Table("sys_config").Select("config_value").Where("config_key = ? ", "sys_single_login").Scan(&result).Error
 	if err != nil {
+
 		log.Errorf("get sys_config error, %s", err.Error())
-		if errors.Is(err, gorm.ErrRecordNotFound) {
+		if errors.Is(err, gorm.ErrRecordNotFound) || err.(*mysql.MySQLError).Number == 1146 {
 			// 默认为非单一登录
 			return false, nil
 		}

+ 5 - 5
common/middleware/handler/login.go

@@ -35,11 +35,11 @@ func (u *Login) GetUser(tx *gorm.DB) (user SysUser, role SysRole, dept SysDept,
 		log.Errorf("user login error, %s", err.Error())
 		return
 	}
-	err = tx.Table("sys_role").Where("id = ? ", user.RoleId).First(&role).Error
-	if err != nil {
-		log.Errorf("get role error, %s", err.Error())
-		return
-	}
+	//err = tx.Table("sys_role").Where("id = ? ", user.RoleId).First(&role).Error
+	//if err != nil {
+	//	log.Errorf("get role error, %s", err.Error())
+	//	return
+	//}
 	if user.DeptId > 0 {
 		err = tx.Table("sys_dept").Where("id = ? ", user.DeptId).First(&dept).Error
 		if err != nil {

+ 0 - 7
conf/extend.go

@@ -12,7 +12,6 @@ var ExtConfig Extend
 type Extend struct {
 	SubMail SubMail `yaml:"subMail"`
 	Qiniu   Qiniu   `yaml:"qiniu"`
-	Applet  Applet  `yaml:"applet"`
 }
 
 type SubMail struct {
@@ -29,9 +28,3 @@ type Qiniu struct {
 	// BucketName 桶名称 `json:""
 	BucketName string `json:"bucketName"`
 }
-
-type Applet struct {
-	Appid       string `json:"appid"`
-	AppSecret   string `json:"appSecret"`
-	TokenExpire int    `json:"tokenExpire"` // 天
-}

+ 6 - 4
db/migration.go

@@ -12,15 +12,17 @@ func AutoMigrateDB() {
 	err := DB.Set("gorm:table_options", "charset=utf8mb4").
 		AutoMigrate(
 			&model.SysUser{},
-			&model.SysRole{},
-			&model.SysRoleMenu{},
-			&model.SysMenu{},
+			//&model.SysRole{},
+			//&model.SysRoleMenu{},
+			//&model.SysMenu{},
 			&model.SysDept{},
 			&model.SysLoginLog{},
 			&model.SysOperaLog{},
 			&model.Warehouse{},
 			&model.Address{},
-
+			&model.AddressDefault{},
+			&model.UserWarehouse{},
+			&model.Car{},
 		)
 	if err != nil {
 		zap.L().Panic("migrate db fail", zap.Error(err))