商城项目要点
最近屡次被人问到项目开发的要点、难点,自己一直没做整理,一切的偷懒都要偿还:
【图片库管理】
一开始把用户上传的图片和管理员配置的系统级图片放在tomcat下项目目录下,做过的朋友都知道这样不合理:
1、项目重新部署的时候往往造成用户图片覆盖丢失;
2、做了一个自动升级代码的程序,也要求用户每次更新项目要首先备份图片文件夹,否则后果严重,图片丢失压根儿无法找回;
——改进的思路:
1、专门的图片服务器,与项目代码分离,数据库存储访问路径,这样也方便向分布式图片服务器优化;
2、图片访问可以用ftp或者rest API的形式访问;
3、升级自动备份、恢复,将大幅提升用户的体验;要容灾应该设定同步数据备份同步,但是这样要增加一套服务器成本;
【搜索分词】
你不会还在用like吧?做搜索引擎,建立分词索引,那么是用lucene+hadoop还是solr 的分布式功能?
Lucene是一个由java编写的高性能、全方位的单词搜索引擎库。
【商品SKU设计】
所谓“SKU”即Stock Keeping Unit(库存量单位),是物理上不可分割的最小存货单元。通俗点说就是我们常说的商品单品,是商品的最小粒度,作为唯一标示绑定订单。
这里涉及到店铺前台用户选择商品规格的效果,大家想想应该怎么实现?
这里,我们设计了从“商品分类表”、“商品规格表”到“商品表”,商品表绑定规格属性,一个商品多个规格,这张表的值,可以理解成sku;
当数据结构设计好之后,前端的展示,这个js的级联效果也挺有意思的,不信可以试试!
附:什么是SPU、SKU、ARPU? http://bbs.paidai.com/topic/34852
SPU是标准化产品单元,区分品种;SKU是库存量单位,区分单品;商品特指与商家有关的商品,可对应多个SKU。
【子账号设计与解耦】
由于管理端可以随意修改tuser或者删除tuser,造成的会员表tmember和商城用户表shop_user找不到对应的tuserId,需要命令行清理数据库:
/*#删除会员表Tmember废弃的tuser数据*/
select id, tuserId from tmember where tuserId not in (select id from tuser);
delete from tmember where tuserId not in (select id from tuser);
/*#删除商城用户表shop_user废弃的tuser数据*/
select id, t_user_id from shop_user where t_user_id not in (select id from tuser);
delete from shop_user where t_user_id not in (select id from tuser);
——由于起初设计的耦合,又没有适时解耦,造成维护上的麻烦,我们在以后的设计中应以此为界,尽量规避;
另外,现有的商城异常机制不完善,在找不到tuser的时候没有抛自定义的异常,而是直接404了,给用户体验很糟糕;
另一个层面也警示我们数据库约束要慎用,程序来控制就好;
posted on 2016-01-18 14:38 Brown Qin 阅读(1157) 评论(0) 编辑 收藏 举报