商城项目要点

最近多次被人问到项目开发的要点、难点,本身一直没作整理,一切的偷懒都要偿还:前端

 

【图片库管理】java

一开始把用户上传的图片和管理员配置的系统级图片放在tomcat下项目目录下,作过的朋友都知道这样不合理:数据库

一、项目从新部署的时候每每形成用户图片覆盖丢失;tomcat

二、作了一个自动升级代码的程序,也要求用户每次更新项目要首先备份图片文件夹,不然后果严重,图片丢失压根儿没法找回;服务器

——改进的思路:数据结构

一、专门的图片服务器,与项目代码分离,数据库存储访问路径,这样也方便向分布式图片服务器优化;分布式

二、图片访问能够用ftp或者rest API的形式访问;oop

三、升级自动备份、恢复,将大幅提高用户的体验;要容灾应该设定同步数据备份同步,可是这样要增长一套服务器成本;性能

【搜索分词】优化

你不会还在用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了,给用户体验很糟糕;

另外一个层面也警示咱们数据库约束要慎用,程序来控制就好;

相关文章
相关标签/搜索