# 数据库字典
## 权限表 acl
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| slug | varchar(255), NOT NULL | 模型层控制器方法 |
| title | varchar(255), NOT NULL | 权限名称 |
| pid | int(11) , DEFAULT '0' | 上一层 |
>[info]权限是读取的是数据库 让方法写进权限表里 一定要在控制器的方法注释相应的权限名称 注释一定要规范
例如 :
/**
* @desc 账号权限
*
*/
/**
* @desc 账号权限
*/
## 权限关联角色表 acl_roles
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11) NOT NULL | 自增 |
| acl_id | int(11) NOT NULL | acl表 关联ID |
| roles_id | int(11) NOT NULL | 角色ID |
| users_id | int(11) NOT NULL | 商家ID|
| status | int(4) DEFAULT '0' | 权限状态,1开启,2关闭 |
| created | int(11) NOT NULL | 创建时间 |
>[info]刚才介绍的权限表只是存权限的方法 要通过 acl_id 和 roles_id 关联角色 来使权限表起到作用
users_id 是商家id 这个角色的所有的权限 只能在这家门店下使用
/*
*@desc 权限列表
*/
static public function acl_list(){
$id = login::getUid(null,1);
$list = users::where('id',$id)->first()->yf_shop_base;
if($list){
foreach($list as $k=>$v){
$arr[] = yf_shop_base::where('id',$v->id)->first()->shop_users;
}
}
if($arr){
foreach($arr as $k=>$v){
foreach($v as $k1=>$v1){
$in[] = $v1->id;
}
}
}
if($in){
foreach($in as $v){
$role_list[] = role_users::where('user_id',$v)->first();
}
}
if($role_list){
foreach($role_list as $k=>$v){
$role[] = roles::where('id',$v->role_id)->first();
}
}
if($role){
$role = array_unique($role);
return $role;
}else{
return array();
}
}
## 超级管理员表 admin_users
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| user | varchar(20) CHARACTER SET utf8 NOT NULL | 账号 |
| pwd | varchar(100) CHARACTER SET utf8 NOT NULL | 密码 |
| level | tinyint(1) DEFAULT '1' | 等级 |
| created | int(11) NOT NULL | 创建时间 |
>[info] 设置超级管理员账号 超级管理员账号等级默认为1
1, 超级管理员可行使的权利:
1),创建商家账号 创建门店;
2),查看所有门店的 商品 订单 会员 营业状况 销售单据 交接班记录;
3),员工账号 新建 编辑 删除
4),会员账号 新建 编辑 删除
5),商品分类 新建 编辑 删除
2, 超级管理员不可行使的权利:
1),不可执行退货操作
/*
*
*@desc 验证登录账号
*
*/
static function login($user,$pwd){
$one = self::where('user','=',$user)->first();
if(!$one){
return false;
}else{
if (password_verify($pwd, $one['pwd'])) {
$login = new login();
$login->admin_setcookie($one);
return true;
}else{
return false;
}
}
}
## 商家账号表 users
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| ucenter_id | bigint(20) NOT NULL | 绑定商城的ucenter_id |
| ucenter_name | varchar(200) NOT NULL | 账号 |
| service_start_time | datetime NOT NULL | 服务开始时间 |
| service_end_time | datetime NOT NULL | 服务结束时间 |
| max_stores | int(11) NOT NULL | 最多拥有门店数 |
| max_nums | int(11) NOT NULL | 单个门店最多人数 |
| authorization_module | int(11) NOT NULL | 授权模块 |
| level | tinyint(1) DEFAULT '2' | 等级 |
| created | int(11) NOT NULL | 创建时间 |
| updated | int(11) NOT NULL | 更新时间 |
| deleted_at | datetime NOT NULL | 软删除 |
| local_ucenter_id | bigint(20) NOT NULL | 本地ucenter_id |
>[info]商家账号分为两种:
1,绑定商城的商家账号:
可同步所属商城账号下 门店 用户 商品 分类 订单等。
2,未绑定商城的商家账号:
只可针对本地 门店 用户 员工 商品 分类 订单 的 进行操作 。
/**
* @desc 添加数据
*/
public function add(){
return view('users_save');
}
/**
* @desc 编辑数据
*/
public function edit(){
$id = get_data('id');
$data['info'] = model::find($id);
return view('users_save',$data);
}
/**
* @desc 删除数据
*/
public function delete(){
$id = get_data('id');
model::deleteForm($id);
echo 1;
exit;
}
/**
* @desc 保存数据
*/
public function save(){
if(is_ajax()){
model::saveForm();
exit(json_encode(['status'=>1,'msg'=>__('操作成功') ,'url'=>url('doc/users/index') ]));
}
}
## 角色表 roles
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| title | varchar(200) NOT NULL | 角色名称 |
| slug | varchar(200) NOT NULL | 唯一标识 |
| created | int(11) NOT NULL | 创建时间 |
| updated | int(11) NOT NULL | 更新时间 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]创建角色 可与员工表 权限表 关联
/*
*@desc 关联role_users
*
*/
public function role_users(){
return $this->hasMany('models\role_users','role_id');
}
## 角色关联用户表 role_users
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| user_id | int(11) NOT NULL | 员工ID |
| role_id | int(11) NOT NULL | 角色ID |
>[info] 此表是作为 员工账号表 关联 角色表的一个中间表 一个员工账号 对应一个角色
/**
* 获取所属店铺信息
*/
public function roles()
{
return $this->hasOne('models\roles','id','role_id');
}
## 员工账号表 shop_users
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| yf_shop_base_id | int(11) NOT NULL | 所属店铺id |
| user | varchar(200) NOT NULL | 账号 |
| pwd | varchar(200) NOT NULL | 密码 |
| created | int(11) NOT NULL | 创建时间 |
| nickname | varchar(50) NOT NULL | 员工姓名 |
| sex | tinyint(1) NOT NULL | 性别 |
| phone | varchar(50) NOT NULL | 手机号 |
| id_card | varchar(200) NOT NULL | 身份证 |
| num | varchar(200) NOT NULL | 员工编号 |
| level | tinyint(1) DEFAULT '3' | 等级 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]商家创建的员工账号 可由商家进行分配 所属门店 ,角色和权限
/**
* @desc 获取所属店铺信息
*/
public function yf_shop_base()
{
return $this->hasOne('models\yf_shop_base','id','yf_shop_base_id');
}
/**
* @desc 获取退货订单信息
*/
public function wp_order_return()
{
$start_time = request_data('start_time')?:date('Y-m-d 00:00:00', time());
$end_time = request_data('end_time')?:date('Y-m-d 23:59:59', time());
return $this->hasMany('models\wp_order_return','shop_users_id')
->where('created','>=',strtotime($start_time))
->where('created','<=',strtotime($end_time))
->where('type','!=',1);
}
/**
*@desc 获取所属角色信息
*/
public function role_users()
{
return $this->hasOne('models\role_users','user_id');
}
/**
*@desc 获取订单信息
*/
public function wp_order()
{
$start_time = request_data('start_time')?:date('Y-m-d 00:00:00', time());
$end_time = request_data('end_time')?:date('Y-m-d 23:59:59', time());
return $this->hasMany('models\wp_order','shop_users_id')
->where('ended','>=',strtotime($start_time))
->where('ended','<=',strtotime($end_time))
->where('type','!=',1);
}
## 员工交接班记录表 record_succession
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| shop_users_id | int(11) NOT NULL | 收银员帐号 |
| start_time | int(11) DEFAULT NULL | 开始时间 |
| end_time | int(11) DEFAULT NULL | 结束时间 |
| cash_payments | decimal(16,2) DEFAULT '0.00' | 现金支付 |
| unionpay_pay | decimal(16,2) DEFAULT '0.00' | 银联支付 |
| weixin_pay | decimal(16,2) DEFAULT '0.00' | 微信支付 |
| alipay_pay |decimal(16,2) DEFAULT '0.00' | 支付宝支付 |
| wp_users_pay | decimal(16,2) DEFAULT '0.00' | 会员余额支付 |
| standby_money | decimal(16,2) DEFAULT '0.00' | 备用金 |
| yf_shop_base_id | int(11) DEFAULT NULL | 等级所属门店id|
>[info]记录当前门店 的收银员 从登录到退出的各种支付方式的营收情况。
/**
* @desc 获取账号信息
*/
public function shop_users()
{
return $this->hasOne('models\shop_users','id','shop_users_id');
}
/**
*@desc 获取所属门店信息
*/
public function yf_shop_base()
{
return $this->hasOne('models\yf_shop_base','id','yf_shop_base_id');
}
## 店铺表 yf_shop_base
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| user_id | int(11) NOT NULL | 属于哪个用户的 |
| title | varchar(200) NOT NULL | 门店名称 |
| address | varchar(255) NOT NULL | 门店地址 |
| phone | varchar(20) NOT NULL | 电话 |
| created | int(11) NOT NULL | 门店开启时间 |
| updated | int(11) DEFAULT NULL | 门店结束时间 |
| type_id | int(11) NOT NULL | 0门店创建,1商城同步 |
| shop_num | int(11) NOT NULL | 店员数 |
>[info] 门店隶属于商家 一个商家可拥有多家门店
/**
* @desc 列表页数据显示
*
*/
public function index(){
$data['wq'] = get_data('wq');
return view('yf_shop_base_list',$data);
}
/**
* @desc ajax列表搜索
*
*/
public function ajax(){
$data = [];
$model = model::DefaultWhere()->paginate(config('app.page_size'));
//设置当前分页中的URL路径
$model->setPath(url(url_string()) );
$data['model'] = $model;
$output['html'] = view('yf_shop_base_ajax',$data);
echo json_encode(['status'=>true,'html'=>$output['html'],'render'=>'ajax_load_table']);
exit;
}
## 订单表 wp_order
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| order_id | varchar(200) NOT NULL | 订单编号 |
| shop_users_id | int(11) NOT NULL | 收银员ID |
| user_id | int(11) DEFAULT NULL | 购买者 |
| payid | int(11) NOT NULL | 支付方式 |
| good_price | decimal(18,2) NOT NULL | 实际支付的费用 |
| user_price | decimal(18,2) DEFAULT NULL | 顾客支付的金额 |
| return_price | decimal(18,2) DEFAULT '0.00' | 找零 |
| good_num | varchar(200) NOT NULL | 数量 |
| created | int(11) NOT NULL | 下单时间 |
| ended | int(11) NOT NULL | 结单时间 |
| good_price_ori | decimal(18,2) NOT NULL DEFAULT '0.00' | 产品总价 |
| order_status | tinyint(1) NOT NULL | 订单状态 6.已完成 1.待支付 |
| coupon | varchar(255) DEFAULT NULL | 优惠券 |
| type | tinyint(4) NOT NULL | 1代表商城导入 |
| deleted_at | datetime NOT NULL | 软删除 |
| shop_id | int(11) NOT NULL | 店铺id |
| payment_way | int(11) DEFAULT NULL | 记录小票扫码 |
>[info] 记录门店的订单 订单信息也可从商城同步到线下
/*
*
*@desc 获取门店信息
*/
public function yf_shop_base(){
return $this->belongsTo('models\yf_shop_base','shop_id');
}
/*
*
*@desc 获取收银员信息
*/
public function shop_users(){
return $this->belongsTo('models\shop_users','shop_users_id');
}
/*
*
*@desc 关联订单详情
*/
public function wp_order_value(){
return $this->hasMany('models\wp_order_value','order_id','order_id');
}
/**
* @desc获取会员信息
*/
public function wp_users()
{
return $this->belongsTo('models\wp_users','user_id','ucenter_id');
}
## 订单详情表 wp_order_value
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| order_id | varchar(200) NOT NULL | 订单ID |
| goods_id | int(11) NOT NULL | 商品ID |
| goods_name | varchar(255) NOT NULL | 商品名称 |
| goods_values | text NOT NULL | 商品其他信息 |
| good_price | decimal(18,2) NOT NULL | 实际支付的费用 |
| shop_id | int(11) NOT NULL | 店铺ID |
| shop_name | varchar(255) NOT NULL | 店铺名称 |
| shop_users_id | int(11) NOT NULL | 员工id |
| num | int(11) NOT NULL | 购买数量 |
| status | tinyint(1) NOT NULL DEFAULT '1' | 1为正常,-1为退货 |
| good_price_ori | decimal(18,2) NOT NULL | 原价 |
| type | tinyint(4) NOT NULL | 1代表商城导入 |
| created | int(11) NOT NULL | 下单时间 |
| updated | int(11) NOT NULL | 更新时间 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]记录门店下 各订单中详细的购买商品的信息
/**
* 获取订单信息
*/
public function wp_order_info()
{
return $this->belongsTo('models\wp_order','order_id','order_id');
}
## 订单退货表 wp_order_return
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| order_id | varchar(200) NOT NULL | 订单ID |
| goods_id | int(11) NOT NULL | 商品ID |
| goods_name | varchar(255) NOT NULL | 商品名称 |
| goods_values | text NOT NULL | 商品其他信息 |
| good_price | decimal(18,2) NOT NULL | 实际支付的费用 |
| shop_id | int(11) NOT NULL | 店铺ID |
| shop_name | varchar(255) NOT NULL | 店铺名称 |
| shop_users_id | int(11) NOT NULL | 员工id |
| num | int(11) NOT NULL | 购买数量 |
| status | tinyint(1) NOT NULL DEFAULT '0' | 0为退货 |
| return_payid | tinyint(4) NOT NULL | 退货方式 |
| good_price_ori | decimal(18,2) NOT NULL | 原价 |
| type | tinyint(4) NOT NULL | 1代表商城导入 |
| created | int(11) NOT NULL | 下单时间 |
| updated | int(11) NOT NULL | 更新时间 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]记录门店下 各订单中详细的退货商品的信息。
/*
* 关联订单表
* */
public function wp_order(){
return $this->belongsTo('models\wp_order','order_id','order_id','goods_id');
}
## 会员表 wp_users
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| ucenter_id | int(11) NOT NULL | ucenter用户ID |
| sex | tinyint(1) NOT NULL | 性别 |
| phone | varchar(200) NOT NULL | 手机号 |
| email | varchar(200) NOT NULL | 邮箱 |
| bron | int(11) DEFAULT NULL | 生日 |
| realname | varchar(200) DEFAULT NULL | 真实性名 |
| ucenter_name | varchar(200) NOT NULL | 用户名 |
| account_balance | decimal(18,2) DEFAULT '0.00' | 会员余额 |
| type | tinyint(4) DEFAULT '0' | 1代表商城导入 |
| created | int(11) NOT NULL | 注册时间 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]会员可在线下门店创建 也可商城同步 同步商城后注册的会员都储存在ucenter里 可直接用会员账号登录商城
/**
* @desc 会员列表
*/
public function ajax(){
$data = [];
$model = model::DefaultWhere()->paginate(config('app.page_size'));
$model->setPath(url(url_string()) );
$data['model'] = $model;
$output['html'] = view('wp_users_discount_ajax',$data);
echo json_encode(['status'=>true,'html'=>$output['html'],'render'=>'ajax_load_table']);
exit;
}
## 会员折扣表 wp_users_discount
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| wp_user_id | int(11) NOT NULL | ucenter用户ID |
| discount | int(11) DEFAULT '100' | 折扣卡 |
| users_id | int(11) DEFAULT NULL | 商家id |
| numbers | varchar(200) NOT NULL | 会员卡号,自动生成 |
| type | tinyint(4) DEFAULT '0' | 1代表商城导入 |
| status | tinyint(4) NOT NULL DEFAULT '1' | 是否享受折扣,1享受,0不享受 |
| started | int(11) NOT NULL | 开始时间 |
| ended | int(11) NOT NULL | 结束时间 |
>[info]会员可享受折扣 此表与wp_users表关联 关联表的主要作用是用来区别不同商家下会员享受的不同折扣
/*
* @desc 关联会员信息表
*/
public function wp_users(){
return $this->belongsTo('models\wp_users', 'wp_user_id')->orderBy('created', 'desc');
}
## 商品分类表 yf_goods_cat
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| cat_name | varchar(50) NOT NULL | 分类名称 |
| cat_parent_id | int(11) NOT NULL DEFAULT '0' | 父类 |
| cat_displayorder | smallint(3) NOT NULL DEFAULT '255' | 排序 |
| level | int(11) NOT NULL | 分类级别 |
| type | tinyint(4) DEFAULT NULL | 1代表商城导入 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info]可用此表把商品分类 分类也可根据门店所经营商品进行创建 也可从商城同步到线下分类表
/**
* @desc 同步商城分类
*/
public function ajax_sync(){
$model = type::getCat();
$data = [];
if($model){
$insertnum = 0;
$updatenum = 0;
foreach($model as $k=>$v){
$li = model::where('id',$v['cat_id'])->withTrashed()->first();
$data['cat_name'] = $v['cat_name'];
$data['cat_parent_id'] = $v['cat_parent_id'];
$data['cat_displayorder'] = $v['cat_displayorder'];
$data['level'] = $v['level'];
$data['type'] = 1;
if(!$li){
$data['id'] = $v['cat_id'];
model::insert($data);
$insertnum++;
}else{
model::where('id',$v['cat_id'])->update($data);
$updatenum++;
}
}
exit(json_encode(['status'=>1,'msg'=>__('本次同步插入')."$insertnum".__('条数据,更新')."$updatenum".__('条数据')]));
}else{
exit(json_encode(['status'=>0,'msg'=>__('无数据导入')]));
}
}
## 店铺关联商品表 yf_goods_shop_common
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11), NOT NULL | 自增 |
| common_id | int(11) NOT NULL | 商品id |
| shop_id | int(11) NOT NULL | 店铺id |
| type | tinyint(4) DEFAULT '0' | 1代表商城导入 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info] 店铺关联商品表 作用:一件商品存在于多个门店
/*
*获取商品信息
*
*/
public function yf_goods_common(){
return $this->belongsTo('models\yf_goods_common','common_id');
}
/*
*获取店铺信息
*
*/
public function yf_shop_base(){
return $this->belongsTo('models\yf_shop_base','shop_id');
}
## 商品详情表 yf_goods_common
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(10) unsigned NOT NULL | 自增 商品id |
| goods_id | int(11) NOT NULL | 商品同步商城id |
| common_name | varchar(50) NOT NULL | 商品名称 |
| cat_id | int(10) unsigned NOT NULL | 商品分类 |
| common_spec_name | varchar(255) DEFAULT NULL | 规格名称 |
| file | varchar(255) NOT NULL | 商品主图 |
| common_state | tinyint(3) unsigned DEFAULT NULL | 商品状态 2下架,1正常 |
| common_add_time | int(11) DEFAULT NULL | 商品添加时间 |
| common_sell_time | int(11) NOT NULL | 上架时间 |
| common_price | decimal(10,2) NOT NULL | 商品价格 |
| common_market_price | decimal(10,2) DEFAULT NULL | 市场价 |
| common_cost_price | decimal(10,2) DEFAULT NULL | 成本价 |
| common_stock | int(10) unsigned DEFAULT NULL | 商品库存 |
| common_alarm | int(10) unsigned DEFAULT '0' | 库存预警值 |
| common_cubage | decimal(10,2) DEFAULT NULL | 商品重量 |
| common_salenum | int(10) unsigned DEFAULT '0' | 商品销量 |
| common_discounts | tinyint(1) DEFAULT '0' | 折扣状态 |
| common_invoices | tinyint(3) unsigned DEFAULT '0' | 是否开具增值税发票 |
| common_goods_from | tinyint(1) DEFAULT '0' | 1代表商城导入 |
| common_code | varchar(200) DEFAULT NULL | 商品条码 |
| deleted_at | datetime NOT NULL | 软删除 |
>[info] 商品详情表 可从商城店铺同步数据 也可在线下创建
/**
* @desc 商品信息管理
*/
public function index(){
$data['shop_list'] = yf_shop_base::shop_list();
return view('yf_goods_shop_common_list',$data);
}
/**
* @desc 商品列表
*/
public function ajax(){
$model = model::DefaultWhere()->paginate(config('app.page_size'));
//设置当前分页中的URL路径
$model->setPath(url(url_string()) );
$data['model'] = $model;
$output['html'] = view('yf_goods_shop_common_ajax',$data);
echo json_encode(['status'=>true,'html'=>$output['html'],'render'=>'ajax_load_table']);
exit;
}
## 支付方式表 yf_payment_way
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11) NOT NULL | 自增 |
| paycenter_id | int(11) NOT NULL | 绑定商城的paycenter_id |
| pay_way | varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL | 支付名称 |
| user_id | int(11) DEFAULT NULL | 商家id |
| status | tinyint(1) NOT NULL | 是否开启’1 开启, 0关闭 |
| created | int(11) NOT NULL | 创建时间 |
>[info] 设置门店的支付方式 根据user_is 每家门店可设置自己门店允许的支付方式
/*
*@desc 支付方式
*/
static function pay_list(){
$model = new self;
$list = self::get()->toArray();
if(!$list){
foreach(config('payment') as $k=>$v){
$model->insert(['pay_way'=>$k,'paycenter_id'=>$v,'status'=>1,'created'=>time()]);
}
}
}
## 优惠券表 wp_coupon
| 字段 | 类型 | 注释 |
| ------------- |:-------------:| -----:|
| id | int(11) NOT NULL | 自增 |
| title | varchar(255) NOT NULL | 优惠券 |
| price | decimal(18,2) NOT NULL | 面值 |
| start_time | int(11) NOT NULL | 有效期开始时间 |
| end_time | int(11) NOT NULL | 有效期结束时间 |
| created | int(11) NOT NULL | 创建时间 |
| status | tinyint(1) NOT NULL | 1为启用,0不启用 |
| max_num | int(11) NOT NULL | 数量 |
| shop_id | int(11) NOT NULL | 店铺 |
| cat_id | tinyint(1) NOT NULL | 分类 |
| condition | decimal(18,2) NOT NULL | 使用条件 |
>[info]可供各门店用于门店活动