商城项目要点

最近屡次被人问到项目开发的要点、难点,自己一直没做整理,一切的偷懒都要偿还:

 

【图片库管理】

一开始把用户上传的图片和管理员配置的系统级图片放在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  阅读(1049)  评论(0编辑  收藏

导航