(1)V1.4.0相关接口增加数据权限校验; (2)进销存报表中零售销售数量查询规则更新; (3)零售订单商品表部分uint类型调整为float64类型; (4)管理员账号默认返回所有菜单; (5)uer_vm_record表新增erp_order_id字段,用户积分规则调整;
308 lines
9.1 KiB
Go
308 lines
9.1 KiB
Go
package inventorymanage
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"github.com/gin-gonic/gin"
|
||
"go-admin/app/admin/models"
|
||
orm "go-admin/common/global"
|
||
"go-admin/logger"
|
||
"go-admin/tools"
|
||
"go-admin/tools/app"
|
||
"net/http"
|
||
)
|
||
|
||
// 库存变动相关代码
|
||
|
||
// InventoryChangeAdd 新增
|
||
// @Summary 新增
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeAddReq true "新增模型"
|
||
// @Success 200 {object} models.ErpInventoryChangeOrder
|
||
// @Router /api/v1/inventory/change/add [post]
|
||
func InventoryChangeAdd(c *gin.Context) {
|
||
req := &models.InventoryChangeAddReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
err := tools.Validate(req) //必填参数校验
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
sysUser, err := models.GetSysUserByCtx(c)
|
||
if err != nil {
|
||
logger.Error("sys user err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "操作失败")
|
||
return
|
||
}
|
||
|
||
// 校验是否有入参门店权限
|
||
err = models.AuthUserStore(c, req.StoreId)
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
changeProductOrder, err := models.AddInventoryChange(req, sysUser)
|
||
if err != nil {
|
||
logger.Error("InventoryChangeAdd err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "新增失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, changeProductOrder, "新增成功")
|
||
return
|
||
}
|
||
|
||
// InventoryChangeEdit 编辑
|
||
// @Summary 编辑
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeEditReq true "编辑模型"
|
||
// @Success 200 {object} models.ErpInventoryChangeOrder
|
||
// @Router /api/v1/inventory/change/edit [post]
|
||
func InventoryChangeEdit(c *gin.Context) {
|
||
req := &models.InventoryChangeEditReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
err := tools.Validate(req) //必填参数校验
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
// 校验是否有入参门店权限
|
||
err = models.AuthUserStore(c, req.StoreId)
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
if len(req.Commodities) == 0 {
|
||
logger.Error("InventoryChangeEdit err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, errors.New("请添加商品"), "请添加商品")
|
||
return
|
||
}
|
||
|
||
changeProductOrder, err := models.EditChangeInventory(req)
|
||
if err != nil {
|
||
logger.Error("InventoryChangeEdit err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "编辑失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, changeProductOrder, "编辑成功")
|
||
return
|
||
}
|
||
|
||
// InventoryChangeAudit 审核
|
||
// @Summary 审核
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeAuditReq true "审核模型"
|
||
// @Success 200 {object} app.Response
|
||
// @Router /api/v1/inventory/change/audit [post]
|
||
func InventoryChangeAudit(c *gin.Context) {
|
||
req := &models.InventoryChangeAuditReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
//logger.Error(err)
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
err := models.AuditChangeInventory(req, c)
|
||
if err != nil {
|
||
app.Error(c, http.StatusInternalServerError, err, "审核失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "操作成功")
|
||
return
|
||
}
|
||
|
||
// InventoryChangeDelete 删除
|
||
// @Summary 删除
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeDeleteReq true "删除模型"
|
||
// @Success 200 {object} app.Response
|
||
// @Router /api/v1/inventory/change/delete [post]
|
||
func InventoryChangeDelete(c *gin.Context) {
|
||
req := &models.InventoryChangeDeleteReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
//logger.Error(err)
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
err := tools.Validate(req) //必填参数校验
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
var inventoryChangeOrder models.ErpInventoryChangeOrder
|
||
err = orm.Eloquent.Table("erp_inventory_change_order").Where("serial_number = ?", req.SerialNumber).
|
||
Find(&inventoryChangeOrder).Error
|
||
if err != nil {
|
||
logger.Error("order err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
// 校验是否有入参门店权限
|
||
err = models.AuthUserStore(c, inventoryChangeOrder.StoreId)
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
if inventoryChangeOrder.SerialNumber == "" {
|
||
logger.Error("order is null")
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:订单不存在")
|
||
return
|
||
}
|
||
|
||
// 仅待审核订单可删除
|
||
if inventoryChangeOrder.State != models.ErpInventoryChangeOrderUnAudit {
|
||
logger.Error("order err, inventoryChangeOrder.State is:", logger.Field("inventoryChangeOrder.State",
|
||
inventoryChangeOrder.State))
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:仅待审核订单可删除")
|
||
return
|
||
}
|
||
|
||
begin := orm.Eloquent.Begin()
|
||
// 1-删除采购订单表
|
||
err = begin.Delete(inventoryChangeOrder).Error
|
||
if err != nil {
|
||
logger.Error("order delete1 err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
// 2-删除采购订单商品表
|
||
var commodities []models.ErpInventoryChangeCommodity
|
||
err = orm.Eloquent.Table("erp_inventory_change_commodity").Where("change_order_id = ?",
|
||
inventoryChangeOrder.ID).Find(&commodities).Error
|
||
if err != nil {
|
||
logger.Error("query erp_inventory_change_commodity err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
if len(commodities) != 0 {
|
||
err = begin.Delete(&commodities).Error
|
||
if err != nil {
|
||
logger.Error("更新商品订单信息-删除 error")
|
||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||
return
|
||
}
|
||
}
|
||
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Error("commit err:", logger.Field("err", err))
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "删除成功")
|
||
return
|
||
}
|
||
|
||
// InventoryChangeList 库存变动列表
|
||
// @Summary 库存变动列表
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeListReq true "库存变动列表模型"
|
||
// @Success 200 {object} models.InventoryChangeListResp
|
||
// @Router /api/v1/inventory/change/list [post]
|
||
func InventoryChangeList(c *gin.Context) {
|
||
req := &models.InventoryChangeListReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
//logger.Error(err)
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
resp, err := req.List(c)
|
||
if err != nil {
|
||
app.Error(c, http.StatusInternalServerError, err, "获取失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, resp, "查询成功")
|
||
return
|
||
}
|
||
|
||
// InventoryChangeDetail 库存变动详情
|
||
// @Summary 库存变动详情
|
||
// @Tags 库存变动,V1.4.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.InventoryChangeDetailReq true "库存变动详情模型"
|
||
// @Success 200 {object} models.ErpInventoryChangeOrder
|
||
// @Router /api/v1/inventory/change/detail [post]
|
||
func InventoryChangeDetail(c *gin.Context) {
|
||
req := &models.InventoryChangeDetailReq{}
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
app.Error(c, http.StatusBadRequest, errors.New("param err"), "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
var changeOrder models.ErpInventoryChangeOrder
|
||
err := orm.Eloquent.Table("erp_inventory_change_order").Where("serial_number=?", req.SerialNumber).
|
||
Find(&changeOrder).Error
|
||
if err != nil {
|
||
logger.Error("change order err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusBadRequest, err, "获取失败")
|
||
return
|
||
}
|
||
if changeOrder.ID == 0 {
|
||
logger.Error("change commodities err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusBadRequest, err, fmt.Sprintf("未查询到订单[%s]", req.SerialNumber))
|
||
return
|
||
}
|
||
|
||
// 校验是否有入参门店权限
|
||
err = models.AuthUserStore(c, changeOrder.StoreId)
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
// 校验时间,如果为01-01-01 08:05,则赋值为空
|
||
if changeOrder.MakerTime != nil && changeOrder.MakerTime.IsZero() {
|
||
changeOrder.MakerTime = nil
|
||
}
|
||
if changeOrder.AuditTime != nil && changeOrder.AuditTime.IsZero() {
|
||
changeOrder.AuditTime = nil
|
||
}
|
||
|
||
var changeCommodities []models.ErpInventoryChangeCommodity
|
||
err = orm.Eloquent.Table("erp_inventory_change_commodity").Where("change_order_id=?", changeOrder.ID).
|
||
Find(&changeCommodities).Error
|
||
if err != nil {
|
||
logger.Error("change commodities err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusBadRequest, err, "获取失败")
|
||
return
|
||
}
|
||
|
||
changeOrder.Commodities = models.MergeChangeCommodities(changeCommodities)
|
||
app.OK(c, changeOrder, "查询成功")
|
||
return
|
||
}
|