Java生鲜电商平台-微服务生鲜电商用户中心的系统设计(小程序/APP)
说明:在微服务生鲜电商用户中心的系统设计中,我一直强调一个观点,就是你这个系统使用用户到底是TO B的还是TO C的呢?这个是很关键的.
但是很多人都回答,我希望有商家入驻,又有B端用户购买,也支持C端用户购买。这个话没错,任何人都希望自己的平台可以支持N中业务形态,
但是根据我这么多年的生鲜电商生涯,我发现,其实B端跟C端用户都是不一样的业务形态,一定要强制柔和在一起也是可以的,只不过会把系统搞得很复杂。
那具体哪些业务场景会出现不一致呢?
1. 收货地址
2. 支付方式
3. 结算方式
4. 价格体系
5. 软件使用
说明:
1. 从收货地址方面,对于B端用户而言,收货地址以及收货人从某种意义来讲是相对固定的,几乎没什么变化,但是C端用户则很不一样,极其容易变化。
2. 从支付方式方面,对于B端用户而言,很多时候走的是账期支付,就是我们常说的押账,这个是目前的市场的非常普遍的一种模式.而且还需要发票。
但是对于C端用户而言,几乎都是支付宝与微信,而且都是直接下单支付。
3. 结算方式方面,对于B端用户而言,是需要进行对账需求的,也就是每笔交易都需要交易明细,而且从对账,到付款,再到发票这块都是很长的路要走的,通俗的讲
就是钱难要。
4. 价格体系方面,对于B端用户而言,不同的客户同一个商品,他的价格是不一样的,但是对于C端而言,价格体系几乎一样。
5. 软件使用方面,对于B端用户而言,B端喜欢用APP,而C端用户喜欢用小程序,因为很方面。
如此业务形态不一致,但是又必须要做到兼容的一种方式,目前除了增加代码的复杂度以外,就算采用微服务拆分也很难处理好目前的这种业务形态。
那么如何进行微服务架构设计呢?(数据库层面)
C端用户
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(63) NOT NULL COMMENT '用户名称', `password` varchar(63) NOT NULL DEFAULT '' COMMENT '用户密码', `gender` tinyint(3) NOT NULL DEFAULT '0' COMMENT '性别:0 未知, 1男, 1 女', `birthday` date DEFAULT NULL COMMENT '生日', `last_login_time` datetime DEFAULT NULL COMMENT '最近一次登录时间', `last_login_ip` varchar(63) NOT NULL DEFAULT '' COMMENT '最近一次登录IP地址', `user_level` tinyint(3) DEFAULT '0' COMMENT '0 普通用户,1 VIP用户,2 高级VIP用户', `nickname` varchar(63) NOT NULL DEFAULT '' COMMENT '用户昵称或网络名称', `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '用户手机号码', `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '用户头像图片', `weixin_openid` varchar(63) NOT NULL DEFAULT '' COMMENT '微信登录openid', `session_key` varchar(100) NOT NULL DEFAULT '' COMMENT '微信登录会话KEY', `status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '0 可用, 1 禁用, 2 注销', `add_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除', `balance_money` decimal(12,2) DEFAULT '0.00' COMMENT '用户余额', `user_integration` int(11) DEFAULT '0' COMMENT '用户积分', PRIMARY KEY (`id`), UNIQUE KEY `user_name` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
B端用户
CREATE TABLE `buyer` ( `buyer_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '来源于user表中的ID', `buyer_name` varchar(64) DEFAULT NULL COMMENT '买家名称(也就是餐馆名称)', `buyer_address` varchar(256) DEFAULT NULL COMMENT '餐馆地址', `lng` varchar(32) DEFAULT NULL COMMENT '经度', `lat` varchar(32) DEFAULT NULL COMMENT '纬度', `province_id` int(11) DEFAULT NULL COMMENT '所属省', `city_id` int(11) DEFAULT NULL COMMENT '所属市', `region_id` int(11) DEFAULT NULL COMMENT '所属区', `boss_name` varchar(32) DEFAULT NULL COMMENT '老板名称', `boss_tel` varchar(16) DEFAULT NULL COMMENT '老板电话号码', `balance_money` decimal(12,2) DEFAULT '0.00' COMMENT '账号余额', `buyer_level` tinyint(4) DEFAULT NULL COMMENT '客户级别,1为A类客户,2为B类客户,3为C类客户', `buyer_type` int(4) DEFAULT NULL COMMENT '客户的类型,1为火锅店,2为小餐馆,3为中餐馆,4,为烧烤', `sale_id` bigint(20) DEFAULT NULL COMMENT '销售人员id', `remark` varchar(256) DEFAULT NULL COMMENT '备注信息', `buyer_logo` varchar(126) DEFAULT NULL COMMENT '买家logo图片', `buyer_images` varchar(1024) DEFAULT NULL COMMENT '方便配送人员容易找到位置,所拍摄的多张图片', `open_time` varchar(20) DEFAULT NULL COMMENT '餐馆,早上开门时间', `end_time` varchar(20) DEFAULT NULL COMMENT '餐厅晚上关门时间', `delivery_time` varchar(20) DEFAULT NULL COMMENT '可以允许的物流最晚送达时间', `delivery_area_id` bigint(20) DEFAULT NULL, `buyer_menu` varchar(128) DEFAULT NULL COMMENT '买家菜单', PRIMARY KEY (`buyer_id`), KEY `index_sale_id` (`sale_id`), KEY `index_region_id` (`region_id`), KEY `index_delivery_id` (`delivery_area_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 代码与架构如何编写呢?
说明:用户中心业务设计是一个不可忽略的技术问题,需要在实战中进行提高,可以根据自己的业务自己进行调整,切记生搬硬套.
3 复盘与总结.
总结:
做互联网应用,无论是生鲜小程序还是APP,目的是为了留住与激活用户,形成用户购买力,提高满意度,最终达成交易的,当然本文只是抛砖引玉,希望本文可以给大家一点思考与建议。
我建议系统分开来研发,同时针对不同的客户有不同的架构设计,最终达到统一的订单架构,物流配送架构等等
QQ:137071249
共同学习QQ群:793305035