小程序会员权益接口
This commit is contained in:
@@ -20,16 +20,18 @@ class MemberBenefits extends Api
|
||||
|
||||
protected $join_config_model = null;
|
||||
protected $level_model = null;
|
||||
protected $benefits_model = null;
|
||||
protected $article_model = null;
|
||||
protected $benefits_model = null;
|
||||
protected $benefits_project_model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->join_config_model = new \app\api\model\wdsxh\member\JoinConfig();
|
||||
$this->level_model = new \app\api\model\wdsxh\member\Level();
|
||||
$this->benefits_model = new \app\api\model\wdsxh\member\MemberBenefits();
|
||||
$this->article_model = new \app\api\model\wdsxh\article\Article();
|
||||
$this->benefits_model = new \app\api\model\wdsxh\member\MemberBenefits();
|
||||
$this->benefits_project_model = new \app\api\model\wdsxh\member\MemberBenefitsProject();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,36 +65,60 @@ class MemberBenefits extends Api
|
||||
|
||||
// 查询该入会类型下的所有会员级别(按权重升序)
|
||||
$levels = $this->level_model
|
||||
->field(['id', 'join_config_id', 'name', 'image', 'fees', 'content'])
|
||||
->field(['id', 'join_config_id', 'benefits_project', 'name', 'image', 'fees', 'content'])
|
||||
->where('join_config_id', $join_config_id)
|
||||
->where('status', 'normal')
|
||||
->order('weigh', 'asc')
|
||||
->select();
|
||||
|
||||
// 查询该入会类型下的所有会员权益(按排序值升序,排除禁用的)
|
||||
$levels_id = array_column($levels, 'id');
|
||||
$all_benefits = $this->benefits_model
|
||||
->field(['id', 'join_config_id', 'level_id', 'title', 'image', 'desc'])
|
||||
->where('join_config_id', $join_config_id)
|
||||
->where('level_id', 'in', $levels_id)
|
||||
->where('disabled', 0)
|
||||
->order('sort', 'asc')
|
||||
->select();
|
||||
$benefis_maps = [];
|
||||
foreach ($all_benefits as $key => $val) {
|
||||
$benefis_maps['b_' . $val['level_id']][] = $val;
|
||||
}
|
||||
|
||||
// 查询该入会类型下的所有会员权益项目(按排序值升序,排除禁用的)
|
||||
$all_benefits_project = $this->benefits_project_model
|
||||
->field(['id', 'join_config_id', 'name'])
|
||||
->where('join_config_id', $join_config_id)
|
||||
->where('disabled', 0)
|
||||
->order('sort', 'asc')
|
||||
->select();
|
||||
|
||||
$levels = collection($levels)->toArray();
|
||||
// 为每个级别构建完整的权益列表(含 has 标记)
|
||||
$result_levels = [];
|
||||
foreach ($levels as $level) {
|
||||
$benefits_with_flag = [];
|
||||
foreach ($all_benefits as $key => $val) {
|
||||
$benefits_with_flag[] = [
|
||||
'id' => $val['id'],
|
||||
'join_config_id' => $val['join_config_id'],
|
||||
'title' => $val['title'],
|
||||
'image' => $val['image'],
|
||||
'desc' => $val['desc'],
|
||||
'has' => $level['id'] == $val['level_id'],
|
||||
if (!isset($level['benefits'])) {
|
||||
$level['benefits'] = [];
|
||||
}
|
||||
if (!empty($benefis_maps['b_' . $level['id']])) {
|
||||
$level['benefits'][] = $benefis_maps['b_' . $level['id']];
|
||||
}
|
||||
|
||||
$owned_ids = json_decode($level['benefits_project'], true) ?: [];
|
||||
$owned_ids = array_map('intval', $owned_ids);
|
||||
unset($level['benefits_project']);
|
||||
if (!isset($level['all_benefits_projects'])) {
|
||||
$level['all_benefits_projects'] = [];
|
||||
}
|
||||
foreach ($all_benefits_project as $v) {
|
||||
$level['all_benefits_projects'][] = [
|
||||
'id' => $v['id'],
|
||||
'join_config_id' => $v['join_config_id'],
|
||||
'name' => $v['name'],
|
||||
'has' => !empty($owned_ids) && in_array($val['id'], $owned_ids, true),
|
||||
];
|
||||
}
|
||||
|
||||
$level['benefits'] = $benefits_with_flag;
|
||||
$result_levels[] = $level;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user