Files
assets/dao/stock/stock_details_dao.go
qhd 21ec536c57 feat: 集成Eino文档解析与嵌入功能
新增Eino相关依赖,支持docx、pdf、xlsx等格式的文档加载与解析,并集成了Dashscope嵌入模型。同时修复了部分DAO查询中的OmitEmpty配置。
2026-03-28 18:24:16 +08:00

71 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 库存明细DAO层(逻辑库存)
// 职责:批量插入/删除、按SKU统计数量、查询列表
// 紧密耦合service.StockDetails、service.StockManage(入库出库)
// 注意GetStockCountBySkuId使用NoCache()跳过缓存BatchInsert用于批量入库
package dao
import (
"assets/consts/public"
dto "assets/model/dto/stock"
entity "assets/model/entity/stock"
"context"
"gitea.com/red-future/common/db/gfdb"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/util/gconv"
)
var StockDetails = new(stockDetails)
type stockDetails struct {
}
// BatchInsert 批量插入库存
func (d *stockDetails) BatchInsert(ctx context.Context, req []*dto.CreateSockDetailsReq) (rows int64, err error) {
var res []*entity.StockDetails
if err = gconv.Structs(req, &res); err != nil {
return
}
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameStockDetails).Data(res).Save()
if err != nil {
return
}
return r.RowsAffected()
}
func (d *stockDetails) Delete(ctx context.Context, req []dto.DeleteSockDetailsReq) (rows int64, err error) {
r, err := gfdb.DB(ctx).Model(ctx, public.TableNameStockDetails).Where(entity.StockDetailsCol.Id, &req).Delete()
if err != nil {
return
}
return r.RowsAffected()
}
func (d *stockDetails) Count(ctx context.Context, req *dto.GetSockDetailsReq) (count int, err error) {
return d.buildListFilter(ctx, req).Count()
}
func (d *stockDetails) List(ctx context.Context, req *dto.GetSockDetailsReq, fields ...string) (res []entity.StockDetails, total int, err error) {
model := d.buildListFilter(ctx, req).Fields(fields)
model.OrderDesc(entity.StockDetailsCol.CreatedAt)
if req.Page != nil {
model.Page(int(req.Page.PageNum), int(req.Page.PageSize))
}
r, total, err := model.AllAndCount(false)
if err != nil {
return
}
err = r.Structs(&res)
return
}
// buildListFilter 构建列表查询的过滤条件
func (d *stockDetails) buildListFilter(ctx context.Context, req *dto.GetSockDetailsReq) *gdb.Model {
model := gfdb.DB(ctx).Model(ctx, public.TableNameStockDetails).Model.OmitEmpty()
model.Where(entity.StockDetailsCol.Id, req.Id)
model.Where(entity.StockDetailsCol.AssetId, req.AssetId)
model.Where(entity.StockDetailsCol.AssetSkuId, req.AssetSkuId)
model.Where(entity.StockDetailsCol.Status, req.Status)
return model
}