麦芽365是通讯行业SaaS平台,用户覆盖、手机厂商、手机批发商、手机零售专卖店、运营合作商、通讯市场。(http://www.miya365.com)
主要功能:
1、货物管理(含:采购管理、库存管理、批发管理、渠道管理、零售管理)
2、财务管理(含:应收应付管理、资金管理、收支管理、工资管理)
3、人员管理(考核策略、考勤、销售计划与跟踪)
4、决策分析(采购分析、库存分析、销售分析、资产分析、净利润分析、门店价值分析、人员价值分析)
1,技术架构:
数据库:postgresql + redis
后端服务:java + spring
pc端:vue + js
ios端: swift + oc
android: java + kotlin
2,设计架构
2.1 数据库设计: 为saas多租户模式设计,采用多数据源模式:1个应用服务器 对应: (1个主数据库+ n个 业务数据库)+ 1个redis内存数据库模式。单个业务数据库内每行记录都有租户号区分不同客户,同时为需要区分数据权限的表添加部门号,区分客户内部的数据访问权限。
2.2 后端应用服务器设计:
1、 数据库ORM方案:基于jdbcTemp 封装ORM框架,(不采用hibernate、MyBatis等)。原因:1,hibernate、MyBatis等性能不佳 2,不利于saas多租户、多数据源模式下代码控制。3,开发效率低下。
2、代码自动生成实现。实现Entity ,Dao/mapper, service 、controler 等代码一键生成。开发环节,先设计表结构、再通过Generate Dao对象一键生成 Entity ,Dao/mapper, 等代码,再通过Generate Service对象一键生成Service 层代码,最后通 Generate action 类,生成action 代码。设计完成后,简单逻辑只需要补充保存前有效性判断即可,数据库的增、删、改、查、日志记录已经全部完成。只有复杂逻辑需要开发人员手动逻辑。
3、业务规划:全部功能分类为:前台(单据、报表、设置、分析)、后台管理(数据修改、数据合并、数据结转、数据清空、打印格式设计、在线用户管理等)。
3,我在项目中位置:
3.1 担任产品总架构师,协调前端、后端、app开发任务的完成。
3.2 担任后端主程序员,完成后端所有基类的编码。
3.3 担任web端主程序员,完程前端所有基础组件的编码。
3.4 担任app端界面设计师,完成全部app端ui设计图。
3.5 担任android端主程序员。
3.1 遇到的问题以及解决方案。
1,orm选型的过程中确实遇到了不少的问题,首先我们考虑了hibernate 和 MyBatis, 发现两个都不是很理想,原因hibernate 需要写hsql语句,开发人员容易搞错,MyBatis相当于是个半自动化的工具,开发代码量很大,并且这两者默认都是按固定数据源连接池而设计。而我们是多租户模式、需要动态生成数据库连接池、动态选择数据库连接池,并且我们最希望模式是,只要设计好数据库表结构,数据实体类和dao层全部用代码自动生成,以提高我们的开发效率。最终我们决定自行开发orm架构并完成了全部代码的交付。