feat: 集成Eino文档解析与嵌入功能
新增Eino相关依赖,支持docx、pdf、xlsx等格式的文档加载与解析,并集成了Dashscope嵌入模型。同时修复了部分DAO查询中的OmitEmpty配置。
This commit is contained in:
@@ -63,7 +63,7 @@ database:
|
|||||||
name: "tenant"
|
name: "tenant"
|
||||||
role: "master"
|
role: "master"
|
||||||
prefix: "assets_" # (可选)表名前缀
|
prefix: "assets_" # (可选)表名前缀
|
||||||
debug: false # (可选)开启调试模式
|
debug: true # (可选)开启调试模式
|
||||||
dryRun: false # (可选)ORM空跑(只读不写)
|
dryRun: false # (可选)ORM空跑(只读不写)
|
||||||
charset: "utf8" # (可选)数据库编码(如: utf8mb4/utf8/gbk/gb2312),一般设置为utf8mb4。默认为utf8。
|
charset: "utf8" # (可选)数据库编码(如: utf8mb4/utf8/gbk/gb2312),一般设置为utf8mb4。默认为utf8。
|
||||||
timezone: "Asia/Shanghai" # (可选)时区配置,例如:Local
|
timezone: "Asia/Shanghai" # (可选)时区配置,例如:Local
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ func (d *assetDao) List(ctx context.Context, req *dto.ListAssetReq, fields ...st
|
|||||||
|
|
||||||
// buildListFilter 构建列表查询的过滤条件
|
// buildListFilter 构建列表查询的过滤条件
|
||||||
func (d *assetDao) buildListFilter(ctx context.Context, req *dto.ListAssetReq) *gdb.Model {
|
func (d *assetDao) buildListFilter(ctx context.Context, req *dto.ListAssetReq) *gdb.Model {
|
||||||
model := gfdb.DB(ctx).Model(ctx, public.TableNameAsset).Cache(ctx)
|
model := gfdb.DB(ctx).Model(ctx, public.TableNameAsset).Cache(ctx).OmitEmpty()
|
||||||
if !g.IsEmpty(req.Keyword) {
|
if !g.IsEmpty(req.Keyword) {
|
||||||
model.WhereLike(entity.AssetCol.Name, "%"+req.Keyword+"%")
|
model.WhereLike(entity.AssetCol.Name, "%"+req.Keyword+"%")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ func (d *assetSku) GetOne(ctx context.Context, req *dto.GetAssetSkuReq, fields .
|
|||||||
|
|
||||||
// GetListByAssetIdExcludeCurrentSku 根据资产ID获取SKU列表并且排除当前SKU
|
// GetListByAssetIdExcludeCurrentSku 根据资产ID获取SKU列表并且排除当前SKU
|
||||||
func (d *assetSku) GetListByAssetIdExcludeCurrentSku(ctx context.Context, assetId int64, req *dto.ListAssetSkuReq, fields ...string) (res []entity.AssetSku, total int, err error) {
|
func (d *assetSku) GetListByAssetIdExcludeCurrentSku(ctx context.Context, assetId int64, req *dto.ListAssetSkuReq, fields ...string) (res []entity.AssetSku, total int, err error) {
|
||||||
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Fields(fields)
|
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Fields(fields).OmitEmpty()
|
||||||
model.Where(entity.AssetSkuCol.AssetId, assetId)
|
model.Where(entity.AssetSkuCol.AssetId, assetId)
|
||||||
model.WhereNot(entity.AssetSkuCol.Id, req.Id)
|
model.WhereNot(entity.AssetSkuCol.Id, req.Id)
|
||||||
if req.Page != nil {
|
if req.Page != nil {
|
||||||
@@ -92,7 +92,7 @@ func (d *assetSku) List(ctx context.Context, req *dto.ListAssetSkuReq, fields ..
|
|||||||
|
|
||||||
// buildListFilter 构建列表查询的过滤条件
|
// buildListFilter 构建列表查询的过滤条件
|
||||||
func (d *assetSku) buildListFilter(ctx context.Context, req *dto.ListAssetSkuReq) *gdb.Model {
|
func (d *assetSku) buildListFilter(ctx context.Context, req *dto.ListAssetSkuReq) *gdb.Model {
|
||||||
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Cache(ctx)
|
model := gfdb.DB(ctx).Model(ctx, public.TableNameAssetSku).Cache(ctx).OmitEmpty()
|
||||||
if !g.IsEmpty(req.Keyword) {
|
if !g.IsEmpty(req.Keyword) {
|
||||||
model.WhereLike(entity.AssetCol.Name, "%"+req.Keyword+"%")
|
model.WhereLike(entity.AssetCol.Name, "%"+req.Keyword+"%")
|
||||||
model.WhereOrLike(entity.AssetSkuCol.SkuName, "%"+req.Keyword+"%")
|
model.WhereOrLike(entity.AssetSkuCol.SkuName, "%"+req.Keyword+"%")
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ func (d *category) List(ctx context.Context, req *dto.ListCategoryReq, fields ..
|
|||||||
|
|
||||||
// buildListFilter 构建列表查询的过滤条件
|
// buildListFilter 构建列表查询的过滤条件
|
||||||
func (d *category) buildListFilter(ctx context.Context, req *dto.ListCategoryReq) *gdb.Model {
|
func (d *category) buildListFilter(ctx context.Context, req *dto.ListCategoryReq) *gdb.Model {
|
||||||
model := gfdb.DB(ctx).Model(ctx, public.TableNameCategory).Cache(ctx)
|
model := gfdb.DB(ctx).Model(ctx, public.TableNameCategory).Cache(ctx).OmitEmpty()
|
||||||
if !g.IsEmpty(req.Keyword) {
|
if !g.IsEmpty(req.Keyword) {
|
||||||
model.WhereLike(entity.CategoryCol.Name, "%"+req.Keyword+"%")
|
model.WhereLike(entity.CategoryCol.Name, "%"+req.Keyword+"%")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ func (d *stockDetails) List(ctx context.Context, req *dto.GetSockDetailsReq, fie
|
|||||||
|
|
||||||
// buildListFilter 构建列表查询的过滤条件
|
// buildListFilter 构建列表查询的过滤条件
|
||||||
func (d *stockDetails) buildListFilter(ctx context.Context, req *dto.GetSockDetailsReq) *gdb.Model {
|
func (d *stockDetails) buildListFilter(ctx context.Context, req *dto.GetSockDetailsReq) *gdb.Model {
|
||||||
model := gfdb.DB(ctx).Model(ctx, public.TableNameStockDetails).Model
|
model := gfdb.DB(ctx).Model(ctx, public.TableNameStockDetails).Model.OmitEmpty()
|
||||||
model.Where(entity.StockDetailsCol.Id, req.Id)
|
model.Where(entity.StockDetailsCol.Id, req.Id)
|
||||||
model.Where(entity.StockDetailsCol.AssetId, req.AssetId)
|
model.Where(entity.StockDetailsCol.AssetId, req.AssetId)
|
||||||
model.Where(entity.StockDetailsCol.AssetSkuId, req.AssetSkuId)
|
model.Where(entity.StockDetailsCol.AssetSkuId, req.AssetSkuId)
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ type StockOperationReq struct {
|
|||||||
type StockPublishMessage struct {
|
type StockPublishMessage struct {
|
||||||
AssetId int64 `json:"assetId"`
|
AssetId int64 `json:"assetId"`
|
||||||
AssetSkuId int64 `json:"assetSkuId"`
|
AssetSkuId int64 `json:"assetSkuId"`
|
||||||
TenantId interface{} `json:"tenantId"`
|
TenantId uint64 `json:"tenantId"`
|
||||||
UserName interface{} `json:"userName"`
|
UserName string `json:"userName"`
|
||||||
StockCount int `json:"stockCount"`
|
StockCount int `json:"stockCount"`
|
||||||
OperationType string `json:"operationType"`
|
OperationType string `json:"operationType"`
|
||||||
Metadata []map[string]interface{} `json:"metadata"`
|
Metadata []map[string]interface{} `json:"metadata"`
|
||||||
|
|||||||
@@ -185,8 +185,10 @@ func (s *stockManage) AddStock(ctx context.Context, msg any) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// 设置 userId 和 tenantId 到 ctx
|
// 设置 userId 和 tenantId 到 ctx
|
||||||
ctx = context.WithValue(ctx, "userName", req.UserName)
|
ctx = context.WithValue(ctx, "user", &beans.User{
|
||||||
ctx = context.WithValue(ctx, "tenantId", req.TenantId)
|
UserName: req.UserName,
|
||||||
|
TenantId: req.TenantId,
|
||||||
|
})
|
||||||
// 获取redis-租户存储-锁key
|
// 获取redis-租户存储-锁key
|
||||||
fileLockKey := fmt.Sprintf(public.StockDetailLockKey, req.AssetSkuId)
|
fileLockKey := fmt.Sprintf(public.StockDetailLockKey, req.AssetSkuId)
|
||||||
success, err := utils.Lock(ctx, fileLockKey, int64(60), func(ctx context.Context) error {
|
success, err := utils.Lock(ctx, fileLockKey, int64(60), func(ctx context.Context) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user