admin/app/model/newModel/member/MemberLevelPopularize.php

175 lines
6.1 KiB
PHP

<?php
/** ZJMall商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2022-2032 四川正今科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.zjphp.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道官方颁发授权证书,无纸质授权凭证书视为侵权行为。
* =========================================================
*/
namespace app\model\newModel\member;
use app\model\NewBaseModel;
use app\model\newModel\Config;
use app\model\newModel\goods\Goods;
use app\model\order\OrderCreate as OrderCreateModel;
use think\facade\Db;
class MemberLevelPopularize extends NewBaseModel{
protected $pk = 'id'; // 默认主键id
protected $name = 'member_level_popularize';
protected $autoWriteTimestamp = true; // 开启自动时间戳
protected $createTime = 'create_time'; // 默认添加时间字段
protected $updateTime = 'update_time'; // 默认编辑时间字段
protected $deleteTime = false; // 软删除字段
/**
* Common: 编辑信息
* Author: wu-hui
* Time: 2022/12/13 18:05
* @param $memberId
* @param $levelId
* @param $levelIndex
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function editPopularizeInfo($memberId,$levelId,$levelIndex){
$where = [
['site_id','=',$this->site_id],
['member_id','=',$memberId],
['level_id','=',$levelId],
['level_index','=',$levelIndex],
];
$info = self::where($where)->find();
if($info) {
self::update(['member_id'=>$memberId], $where);
}
else{
$data = [
'member_id' => $memberId,
'site_id' => $this->site_id,
'level_id' => $levelId,
'level_index' => $levelIndex,
];
self::create($data);
}
}
/**
* Common: 获取可用名额
* Author: wu-hui
* Time: 2022/12/13 18:15
* @param $memberId
* @return int
* @throws \think\db\exception\DbException
*/
public function availableQuotaTotal($memberId){
$set = (new Config())->getConfigInfo('SUPERMEMBER_POPULARIZE');
$fenXiaoId = Db::name('fenxiao')
->where('member_id',$memberId)
->where('is_delete',0)
->value('fenxiao_id');
if($fenXiaoId <= 0) return 0;
return (int)Db::name('fenxiao')->alias('fx')
->join('member_level_popularize mlp','mlp.member_id = fx.member_id','LEFT')
->where('fx.parent',$fenXiaoId)
->where('fx.is_delete',0)
->where('mlp.is_use',0)
->where('mlp.level_id',$set['give_member_level_id'])
->where('mlp.level_index',$set['give_member_level_index'])
->count();
}
/**
* Common: 获取全部下级
* Author: wu-hui
* Time: 2022/12/13 18:33
* @param $memberId
* @return array
* @throws \think\db\exception\DbException
*/
public function getWholeSubMember($memberId){
// 基本信息
$page = input('page',1);
$pageSize = input('page_size',PAGE_LIST_ROWS);
$set = (new Config())->getConfigInfo('SUPERMEMBER_POPULARIZE');
$fenXiaoId = Db::name('fenxiao')
->where('member_id',$memberId)
->where('is_delete',0)
->value('fenxiao_id');
if($fenXiaoId <= 0) return [];
// 列表获取
$field = [
'm.member_id',
'fx.fenxiao_id',
'm.nickname',
'm.headimg',
];
$result = Db::name('fenxiao')->alias('fx')
->join('member m','m.member_id = fx.member_id','LEFT')
->field($field)
->where('fx.parent',$fenXiaoId)
->where('fx.is_delete',0)
->order('fx.fenxiao_id','DESC')
->paginate(['list_rows' => $pageSize,'page' => $page]);
if($result) {
$result = $result->toArray();
// 获取:用户是否购买指定会员卡
$memberIds = array_column($result['data'],'member_id');
$popularizeList = $this->whereIn('member_id',$memberIds)
->where('level_id',$set['give_member_level_id'])
->where('level_index',$set['give_member_level_index'])
->column('id','member_id');
$result['data'] = array_map(function($item) use ($popularizeList){
$item['popularize_id'] = $popularizeList[$item['member_id']] ?? 0;
return $item;
},$result['data']);
}
$list = [
'count' => $result['total'],
'list' => $result['data'],
'page_count' => $result['last_page'],
];
return $this->success($list);
}
/**
* Common: 根据用户id获取最早的指定数量的购买指定会员卡的信息id
* Author: wu-hui
* Time: 2022/12/14 15:18
* @param $memberId
* @param $limit
* @return array|int
*/
public function availableQuotaIds($memberId,$limit){
$set = (new Config())->getConfigInfo('SUPERMEMBER_POPULARIZE');
$fenXiaoId = Db::name('fenxiao')
->where('member_id',$memberId)
->where('is_delete',0)
->value('fenxiao_id');
if($fenXiaoId <= 0) return [];
return Db::name('fenxiao')->alias('fx')
->join('member_level_popularize mlp','mlp.member_id = fx.member_id','LEFT')
->where('fx.parent',$fenXiaoId)
->where('fx.is_delete',0)
->where('mlp.is_use',0)
->where('mlp.level_id',$set['give_member_level_id'])
->where('mlp.level_index',$set['give_member_level_index'])
->order('id','ASC')
->limit($limit)
->column('mlp.id');
}
}