goweb: https://gitee.com/leijmdas/goweb/settings#index
 

type IwebFacade[T baseindex.IndexMapping] interface {
    SaveIndex(indexTable baseindex.IndexIface) *basedto.IchubResult
    UpdateStru(ids any, doc any) *basedto.IchubResult
    Update(ids any, doc map[string]any) *basedto.IchubResult
    DeleteByQuery() *basedto.IchubResult
    Delete(id any) *basedto.IchubResult
    BulkDelete(ids ...any) *basedto.IchubResult
    BulkIndex(docs ...[]*cmddto.BulkDoc) *basedto.IchubResult
    BulkCreate(docs ...[]*cmddto.BulkDoc) *basedto.IchubResult
    BulkUpdate(docs ...[]*cmddto.BulkDoc) *basedto.IchubResult

    LogQueryMaster(q *elastic.BoolQuery, msg string)
    LogInfoQuery(q *elastic.BoolQuery, prompt ...string)

    CacheFindId(id any) *pagemodel.IchubResult[T]
    CacheFindKey(key string, id any) *pagemodel.IchubResult[T]
    CacheListAll() *pagemodel.PageResult[T]
    CacheListAllOf(fieldName string, value any) *pagemodel.IchubResult[T]

    CheckRecord(keyAny any, exps string) *basedto.IchubResult
}


func (self *TestDbSuite) Test301_CacheListAllOf() {
    var qq = esentity.NewWebFacadeWebsiteUtmsEsOf(elastic.NewBoolQuery())
    qq.SetPageSize(3)
    var ret = qq.CacheListAllOf("id", 1064580119482499075)
    golog.Info(ret)
    self.Equal(200, ret.Code)
    self.Equal(true, ret.ExistRecord())
}
func (self *TestDbSuite) Test302_CacheFindId() {
    var qq = esentity.NewWebFacadeWebsiteUtmsEsOf(elastic.NewBoolQuery())
    qq.SetPageSize(3)
    var ret = qq.CacheFindId(1)
    golog.Info(ret)
    self.Equal(200, ret.Code)
    self.Equal(true, ret.ExistRecord())
}
est001_CacheListAll1(t *testing.T) {

    var ret = apicache.FindBeanQueryDeptCache().CacheFindId(1)
    golog.Info(ret)

}
package apicache

import (
    "gitee.com/leijmdas/gobase/goconfig/common/base/basedto"
    "gitee.com/leijmdas/goweb/common/webclient/eswebclient/webfacade"
    "gitee.com/leijmdas/goweb/domain/es/esentity"
    "gitee.com/leijmdas/goweb/gopage/pagemodel"
    "github.com/olivere/elastic/v7"
)

type QueryDeptCache struct {
    basedto.BaseEntitySingle
    qq *webfacade.WebFacade[*esentity.IchubSysDeptEs]
}

func NewQueryDeptCache() *QueryDeptCache {
    var qdc = &QueryDeptCache{}
    qdc.Init()
    return qdc

}

func (self *QueryDeptCache) Init() {
    self.qq = self.webFacade()
}

func (self *QueryDeptCache) QueryOf(DeptName string) *pagemodel.IchubResult[*esentity.IchubSysDeptEs] {

    return self.qq.CacheListAllOf("DeptName", DeptName)

}
func (self *QueryDeptCache) CacheListAll() *pagemodel.PageResult[*esentity.IchubSysDeptEs] {

    return self.qq.CacheListAll()

}

func (self *QueryDeptCache) webFacade() *webfacade.WebFacade[*esentity.IchubSysDeptEs] {
    var q = elastic.NewBoolQuery()
    //q.Filter(elastic.NewTermQuery("active", true))
    q.Filter(elastic.NewRangeQuery("dept_id").Gt(0))
    var qq = esentity.NewWebFacadeIchubSysDeptEsOf(q)
    qq.SetSource("dept_id,dept_name")
    qq.SortOne("dept_id", true)
    qq.LogInfoQuery(q)
    return qq
}
func (self *QueryDeptCache) CacheFindId(id any) *pagemodel.IchubResult[*esentity.IchubSysDeptEs] {

    return self.qq.CacheFindId(id)
}
1  标准化:容器时区,ES、DB时间字段;地点、地区
2. 多语言组件:单独的代码, 访问模式: 代码统一处理,不分散
3. DAO组件:增删改查聚合一个接口,一个是DB、一个是ES
4. 首页UI通用查询组件:查询请求和返回,封装为一个接口
5. 测试组件:一个自动化的接口检查,便于单元测试;一个rest接口的单元测试框架二次封装
6. 跨领域接口组件:聚合根的服务,没时间,关键是通用域
7. golog日志组件
8. godi依赖注入组件
9. 通用缓存ES查询应用组件: webfacade CacheListAll/CacheListOne
10. goframe开源组件:gconv类型转换

好处:降低代码复杂度, 提升开发效率,减少重复代码重复测试,提高开发质量。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐