mh_goadmin_server/app/admin/apis/stockmanage/stock.go

293 lines
8.1 KiB
Go
Raw Normal View History

2023-09-16 02:56:39 +00:00
package stockmanage
import (
"errors"
"fmt"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
orm "go-admin/common/global"
"go-admin/logger"
"go-admin/tools/app"
"net/http"
"time"
)
// GameCardGoodsStockInfoList 查询小程序租卡库存列表
// @Summary 查询小程序租卡库存列表
// @Tags 租卡系统-库存管理
// @Produce json
// @Accept json
// @Param request body models.GameCardGoodsStockListReq true "查询小程序租卡库存列表"
// @Success 200 {object} models.GameCardGoodsStockListResp
// @Router /api/v1/stock/list [post]
2023-09-16 02:56:39 +00:00
func GameCardGoodsStockInfoList(c *gin.Context) {
req := &models.GameCardGoodsStockListReq{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
resp, err := req.List(c)
2023-09-16 02:56:39 +00:00
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Errorf("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
//ret := map[string]interface{}{
// "count": count,
// "list": list,
// "pageIndex": req.PageIndex,
2023-09-16 02:56:39 +00:00
// "total_page": req.PageSize,
//}
app.OK(c, resp, "")
}
func GameCardGoodsStockCardList(c *gin.Context) {
req := &models.GameCardGoodsStockCardListReq{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
list, count, err := req.List()
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Errorf("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
ret := map[string]interface{}{
"count": count,
"list": list,
"pageIndex": req.Page,
"total_page": req.PageSize,
}
app.OK(c, ret, "")
}
func GameCardGoodsStockAdds(c *gin.Context) {
req := struct {
Cards []models.GameCardGoods `json:"cards"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
cardGoods := &models.GameCardGoods{}
for i, _ := range req.Cards {
req.Cards[i].CardType = models.GameCardGoodsTypeCommon
req.Cards[i].ShareProfitType = 1
}
err := cardGoods.Adds(req.Cards)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Errorf("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "入库失败")
return
}
app.OK(c, nil, "入库成功")
}
func GameCardGoodsStockDels(c *gin.Context) {
req := struct {
SerialNumberList []string `json:"serial_number_list"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
cardGoods := &models.GameCardGoods{}
err := cardGoods.Dels(req.SerialNumberList)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Errorf("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
app.OK(c, nil, "删除库存成功")
}
func ExportDataGameCardGoodsStock(c *gin.Context) {
req := struct {
StoreId uint32 `json:"store_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
goodsStock := models.ExportGoodsStock(req.StoreId)
//cardGoods := &models.GameCardGoods{}
//err := cardGoods.Adds(req.Cards)
//if err != nil {
2023-10-14 08:19:04 +00:00
// logger.Errorf("err:",logger.Field("err",err))
2023-09-16 02:56:39 +00:00
// app.Error(c, http.StatusInternalServerError, err, "入库失败")
// return
//}
ret := &map[string]interface{}{
"goods_stock_url": goodsStock,
}
app.OK(c, ret, "数据导出成功")
}
// 1.创建调拨任务
func CannibalizeTaskCreate(c *gin.Context) {
req := struct {
FromStoreId uint32 `json:"from_store_id"`
ToStoreId uint32 `json:"to_store_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
if req.FromStoreId == 0 || req.ToStoreId == 0 {
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
task := &models.CannibalizeStockTask{
FromStoreId: req.FromStoreId,
ToStoreId: req.ToStoreId,
TaskId: uint32(time.Now().Unix()),
Count: 0,
Status: models.CannibalizeTaskStatusNotImportGoods,
}
err := orm.Eloquent.Create(task).Error
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "创建调拨任务错误")
return
}
app.OK(c, nil, "创建调拨任务成功")
}
// 2.导入调拨卡
func CannibalizeTaskImportGameCardGoods(c *gin.Context) {
req := struct {
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
SerialNumberList []string `json:"serial_number_list"` // 编号
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
unImportGoods, err := models.CannibalizeTaskImportGoods(req.CannibalizeStockTaskId, req.SerialNumberList)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "导入调拨卡错误")
}
if unImportGoods > 0 {
app.OK(c, nil, fmt.Sprintf("有 %d 个卡未导入", unImportGoods))
return
}
app.OK(c, nil, "导入调拨卡成功")
}
// 3.确认发货
func CannibalizeTaskDeliverGoods(c *gin.Context) {
req := struct {
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
err := models.CannibalizeDeliverGoods(req.CannibalizeStockTaskId)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "发货错误")
}
app.OK(c, nil, "发货成功")
}
// 4.确认入库
func CannibalizeTaskPutInStorage(c *gin.Context) {
req := struct {
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
err := models.CannibalizePutInStorage(req.CannibalizeStockTaskId)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "发货错误")
}
app.OK(c, nil, "发货成功")
}
// CannibalizeTaskList 查询游戏卡库存调拨
// @Summary 查询游戏卡库存调拨
// @Tags 租卡系统-库存管理
// @Produce json
// @Accept json
// @Param request body models.CannibalizeTaskListReq true "查询游戏卡库存调拨"
// @Success 200 {object} models.CannibalizeTaskListResp
// @Router /api/v1/stock/cannibalize_task/list [post]
2023-09-16 02:56:39 +00:00
func CannibalizeTaskList(c *gin.Context) {
req := models.CannibalizeTaskListReq{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
resp, err := req.GetCannibalizeTaskList(c)
2023-09-16 02:56:39 +00:00
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "任务列表错误")
return
}
app.OK(c, resp, "")
}
// 6.调拨任务卡列表
func CannibalizeTaskGameCardGoodsList(c *gin.Context) {
req := models.CannibalizeTaskGameCardGoodsListReq{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
resp, err := req.GetCannibalizeTaskGameCardGoodsList()
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "任务列表错误")
return
}
app.OK(c, resp, "")
}
func CannibalizeTaskDel(c *gin.Context) {
req := struct {
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Errorf("para err")
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
err := models.CannibalizeTaskDel(req.CannibalizeStockTaskId)
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("err:", logger.Field("err", err))
2023-09-16 02:56:39 +00:00
app.Error(c, http.StatusInternalServerError, err, "改任务状态不能删除")
}
app.OK(c, nil, "发货成功")
}