bztang-admin/app/backend/modules/member/models/MemberLevel.php

196 lines
5.4 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 2017/2/27
* Time: 上午11:22
*/
namespace app\backend\modules\member\models;
use app\common\facades\Setting;
class MemberLevel extends \app\common\models\MemberLevel
{
static protected $needLog = true;
public $guarded = [''];
// protected $attributes = [];
public function getLevelNameAttribute()
{
return static::defaultLevelName($this->attributes['level_name']);
}
public static function defaultLevelName($levelName)
{
return $levelName ?: Setting::get('shop.member')['level_name'];
}
/**
* Get membership list
*
* @return
*/
public static function getMemberLevelList()
{
return static::uniacid()->orderBy('level')->get()->toArray();
}
/**
* 查询等级名称通过等级ID
* @Author::yitian 2017-02-27 qq:751818588
* @access public
* @param int $levelId 等级id
*
* @return mixed
*/
public static function getMemberLevelNameById($levelId)
{
$level = MemberLevel::when($levelId, function ($query) use ($levelId) {
return $query->select('level_name')->where('id', $levelId);
})
->first()->levelname;
return $level ? $level : '';
}
/*
* 获取等级分页列表
*
* @param int $pageSize
*
* @return object */
public static function getLevelPageList($pageSize)
{
//todo 需要关联商品去title值
return static::select(['id', 'level', 'level_name', 'order_money', 'order_count', 'goods_id', 'team_performance', 'balance_recharge', 'validity'])
->uniacid()
->with(['goods' => function ($query) {
return $query->select('id', 'title');
}])
->withCount(['member'])
->orderBy('level', 'asc')
->paginate($pageSize);
}
/**
* Get rank information by level ID
*
* @param int $levelId
*
* @return object
*/
public static function getMemberLevelById($levelId)
{
return static::select(['id', 'level', 'level_name', 'order_money', 'order_count', 'goods_id', 'discount', 'validity', 'freight_reduction', 'interests_rules', 'description', 'team_performance', 'balance_recharge', 'give_integral', 'give_point_today'])
->where('id', $levelId)
->first();
}
/**
* get members by definite member_level
* @param $level member_level的level值,而不是其主键ID
* @return mixed
* 不是主键ID是什么怎么可能是level值没看懂
*/
public static function getMembersByLevel($level)
{
return static::uniacid()
->select(['id', 'level'])
->where('id', $level)
->with(['member' => function ($query) {
return $query->select('member_id', 'level_id')
->where('uniacid', \YunShop::app()->uniacid);
}])
->first();
}
/**
* 定义字段名
*
* @return array
*/
public function atributeNames()
{
return [
'level' => '等级权重',
'level_name' => '等级名称',
'order_money' => '订单金额',
'order_count' => '订单数量',
'goods_id' => '商品ID',
'discount' => '折扣',
'freight_reduction' => '运费减免'
];
}
/**
* 字段规则
*
* @return array
*/
public function rules()
{
$rule = [
'level' => [
'required',
\Illuminate\Validation\Rule::unique($this->table)->where('uniacid', \YunShop::app()->uniacid)->where('deleted_at', '')->ignore($this->id),
'numeric',
'between:1,9999'
],
'level_name' => 'required',
'discount' => 'numeric|between:0,999',
'freight_reduction' => 'numeric|between:0,100'
];
$levelSet = Setting::get('shop.member');
switch ($levelSet['level_type']) {
case 0:
$rule = array_merge(['order_money' => 'numeric|between:1,9999999999'], $rule);
break;
case 1:
$rule = array_merge(['order_count' => 'integer|numeric|between:0,9999999999'], $rule);
break;
case 2:
// $rule = array_merge(['goods_id' => 'integer|numeric'], $rule);
$rule = array_merge(['goods_id' => ''], $rule);
break;
}
return $rule;
}
//模型关联 关联商品
public function goods()
{
return $this->belongsTo('app\common\models\Goods');
}
//关联会员
public function member()
{
return $this->hasMany('app\common\models\MemberShopInfo', 'level_id', 'id'); //注意yz_member数据表记录和关联的是member_level表的主键id, 而不是level值
}
//id column
//get array goods.id
public function getGoodsId($id)
{
$ids = explode(',', $id);
$goods = \app\common\models\Goods::whereIn('id', $ids)->select('id', 'thumb', 'title')->get();
if (!$goods) {
\Log::debug('无该' . $ids . '商品数据信息');
exit;
}
foreach ($goods->toArray() as $k => $v) {
$goods[$k]['thumb'] = yz_tomedia($v['thumb']);
}
return $goods;
}
}