V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zjiajun
V2EX  ›  程序员

多租户 word 模版导出方案

  •  
  •   zjiajun ·
    zJiaJun · 2020-06-01 21:54:26 +08:00 · 1703 次点击
    这是一个创建于 1635 天前的主题,其中的信息可能已经有所发展或是发生改变。

    诉求,多租户,每个租户导出的模版都不一样,区别有的是数据范围上,数据范围上相同维度又不一样,并且这些数据在不同的数据库中。总而言之,每个租户都个性化。 有没有优雅统一的解决方案,避免每来一家租户,又开发一套代码,抽数据,计算,拼装,word 模版渲染。

    5 条回复    2020-06-04 17:37:46 +08:00
    wenerme
        1
    wenerme  
       2020-06-02 00:19:05 +08:00
    word 模版渲染服务 + 租户数据服务 = 租户 word 模版服务
    vislins
        2
    vislins  
       2020-06-02 09:55:14 +08:00
    每个字都看懂了,但是内容没有懂。可能我境界不高。
    johnsona
        3
    johnsona  
       2020-06-02 12:08:43 +08:00
    不同类型的租户不同的模板,模板关联到租户,如果说不想写代码,比如,可以在后台配,比如把数据范围,赋予给不同类型的租户,这样就不写代码,有点类似 rbac 。没搞过,胡说的
    zjiajun
        4
    zjiajun  
    OP
       2020-06-03 22:33:00 +08:00
    @wenerme 数据服务,是不是可以理解为数仓呢
    本身系统比较大,按业务维度拆分成了微服务,有各自的数据库。
    现在发现不同业务模块之间耦合挺多的,比如,一个列表页,需要 A 库+B 库的共同数据,同时支持多纬度的条件筛选和分页。最近思考是不是就不应该拆分。
    wenerme
        5
    wenerme  
       2020-06-04 17:37:46 +08:00
    @zjiajun 拆分与否看情况,即便是不拆分单个服务里也可以模块化

    租户数据服务=租户+数据服务
    如果你们数据是 DW 那就是 DW 提供,总体思想是吧需要的组件原子化,例如

    ```
    user = getCurrentUser()
    data = getDataByUserAndQuery(user,query)
    tpl = getRequestedTemplate()

    result = renderTemplate(tpl,data)
    ```

    至于你业务数据存在多少耦合,需要如何管理,这是数据服务层面关心的,word 的渲染引擎不需要感知这些。但确保一次性拿到所有数据就可以了。

    怎么样实现这样的数据查询,那这是另外一个方向的问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2871 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 06:58 · PVG 14:58 · LAX 22:58 · JFK 01:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.