新濠天地 > PHP编程 > 新濠天地:分别给一款商品的多个属性组合设置

原标题:新濠天地:分别给一款商品的多个属性组合设置

浏览次数:103 时间:2019-09-20

最近在做ecshop的商品库存模块,分别给一款商品的多个属性组合设置库存,如下图:

# 技术文档

 新濠天地 1

## 系统环境

 一款手机有不同颜色,屏幕尺寸,系统和电量,都要设置不同的库存,如果都要手动选择属性组合,则会耗费很多不必要的时间。假如打开页面时就已经设置好属性排列组合那就最好不过,因此想了整天,写了如下函数:

### web服务器

 

CentOS 7 64位

 1 /*
 2 Author:GaZeon
 3 Date:2016-6-20
 4 Function:getArrSet
 5 Param:$arrs 二维数组
 6 getArrSet(array(array(),...))
 7 数组不重复排列集合
 8 */
 9 function getArrSet($arrs,$_current_index=-1)
10 {
11     //总数组
12     static $_total_arr;
13     //总数组下标计数
14     static $_total_arr_index;
15     //输入的数组长度
16     static $_total_count;
17     //临时拼凑数组
18     static $_temp_arr;
19     
20     //进入输入数组的第一层,清空静态数组,并初始化输入数组长度
21     if($_current_index<0)
22     {
23         $_total_arr=array();
24         $_total_arr_index=0;
25         $_temp_arr=array();
26         $_total_count=count($arrs)-1;
27         getArrSet($arrs,0);
28     }
29     else
30     {
31         //循环第$_current_index层数组
32         foreach($arrs[$_current_index] as $v)
33         {
34             //如果当前的循环的数组少于输入数组长度
35             if($_current_index<$_total_count)
36             {
37                 //将当前数组循环出的值放入临时数组
38                 $_temp_arr[$_current_index]=$v;
39                 //继续循环下一个数组
40                 getArrSet($arrs,$_current_index+1);
41                 
42             }
43             //如果当前的循环的数组等于输入数组长度(这个数组就是最后的数组)
44             else if($_current_index==$_total_count)
45             {
46                 //将当前数组循环出的值放入临时数组
47                 $_temp_arr[$_current_index]=$v;
48                 //将临时数组加入总数组
49                 $_total_arr[$_total_arr_index]=$_temp_arr;
50                 //总数组下标计数+1
51                 $_total_arr_index++;
52             }
53 
54         }
55     }
56     
57     return $_total_arr;
58 }
59 
60 /*************TEST**************/
61 $arr=array(
62     array('a','b','c'),
63     array('A','B','C'),
64     array('1','2','3'),
65     array('I','II','III')
66 );
67 
68 var_dump(getArrSet($arr));

###数据库服务器

 

MySQL

##架构

为了实现平台的稳定性,可扩展性,操作便捷,安全性高,便于维护等目标,应充分考虑业务发展需要,应用模块化思维,将各模块隔离。

## 功能模块

### 商品

商品模块是租赁平台的核心。用户的操作行为都围绕商品进行。在前端,商品模块为商品展示,订单,营销活动提供商品数据支撑。在后端,商品模块为订单发货,库存管理,供应商管理提供基础数据支撑。

#### 功能范围

![商品模块](/Users/zxxair/工作/租赁/开发文档/商品模块范围.png)

#### 功能设计

#####添加商品

类目:前后台分离,后台类目面向商家,供应链人员。前台类目面向用户。

后台类目:三层树状分类,商品只能挂载于最后一层的叶子类目下。

前台类目:根据不同客户端设置,PC端,移动端分别设置前台类目。支持平台商家自定义店铺前台类目。

前后台对应关系:前台类目对应后台叶子类目和某项属性的组合。

属性:挂在具体类目下,包括属性名和属性值,属性分类(关键,销售,非关键,商品),显示类型(单选、多选、自定义),是否必填。

属性库:将常用属性建立为属性库。

属性分组:一个类目有很多属性,将折现属性归为一个组。

属性继承:将商品类目每个层级的属性提取出来,下层属性继承上层属性。

SPU:挂在最后一层的具体类目下,并选择关键属性。如iphone 7 Plush。

SKU:录入SPU后选择销售属性(规格属性),并通过规格属性来连接(区分)SPU。如iphone 7 Plush (64G 与128G)。

SPU与SKU关系:一对一(商品只有一个销售属性),一对多(商品有多个销售属性),多对多(同一商品有多个名字)。同一SPU在前台显示时可以共用同一商品详情,只是通过销售属性映射到具体的SKU上。设置SPU后可依据不同的销售属性确定不同的价格。

##### 商品管理

上下架:商品批量上下架,定时上下架,缺货后自动下架。

价格管理:爬虫获取竞品销售价,调整商品售价。

商品标签:活动(热销,新品),服务(上门维修),性能(正品)标签。

### 库存

库存管理是供应链管理的重要组成部分。库存与仓库密不可分,而仓库和销售、采购相关。所以库存体系构建复杂,影响库存变动主要有采购,销售订单,仓间调拨,盘盈盘亏,预售,售后退货等因素。

####功能范围

![库存模块范围](/Users/zxxair/工作/租赁/开发文档/库存模块范围.png)

#### 功能设计

销售库存:前台显示的销售库存。可销售库存与实物库存保持一致,不能超卖。设置活动库存,决定参与活动库存数量,设置预售库存,决定是否可下定金预定。

调度层:将订单转换为发货单。账面库存与实物库存一致,订单流到调度层后经调度后推动至仓库发货。

仓库层:发货单推送到仓库层后,操作wms系统同步响应,扣减库存并出库。

联系:一般情况下,销售层库存和调度层实物一致。不一致的情况有:允许超卖,预售,活动占用库存。

###订单

### 会员

会员模块主要是管理用户信息,增加用户活跃度,开发新用户的系统。

个人

公司

### 运营

客服

营销

评价

### 系统管理

网站设置

权限

本文由新濠天地发布于PHP编程,转载请注明出处:新濠天地:分别给一款商品的多个属性组合设置

关键词:

上一篇:没有了

下一篇:是交互式语言,Python(英帝国发音