From 18aae7e3e0dd2202f5983ad59eede7e35e768ce2 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Sat, 25 Apr 2026 14:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E6=9D=83=E7=9B=8A=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wdsxh/member/MemberBenefits.php | 96 +++++++++++++++++++ .../api/model/wdsxh/member/MemberBenefits.php | 35 +++++++ 2 files changed, 131 insertions(+) create mode 100644 application/api/controller/wdsxh/member/MemberBenefits.php create mode 100644 application/api/model/wdsxh/member/MemberBenefits.php diff --git a/application/api/controller/wdsxh/member/MemberBenefits.php b/application/api/controller/wdsxh/member/MemberBenefits.php new file mode 100644 index 0000000..24ddd81 --- /dev/null +++ b/application/api/controller/wdsxh/member/MemberBenefits.php @@ -0,0 +1,96 @@ + www.maiwd.cn +// +---------------------------------------------------------------------- +namespace app\api\controller\wdsxh\member; + +use app\common\controller\Api; + +class MemberBenefits extends Api +{ + protected $noNeedLogin = ['index']; + protected $noNeedRight = ['*']; + + protected $level_model = null; + protected $benefits_model = null; + protected $article_model = null; + + public function _initialize() + { + parent::_initialize(); + $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(); + } + + /** + * 根据入会类型查询会员级别及权益(每个级别下展示入会类型所有权益,并标记拥有状态) + * + * @param int $join_config_id 入会类型ID + * @return \think\Response + */ + public function index() + { + $join_config_id = $this->request->param('join_config_id', 0); + + if (empty($join_config_id)) { + $this->error('入会类型参数不能为空'); + } + + // 查询该入会类型下的所有会员级别(按权重升序) + $levels = $this->level_model + ->field(['id', 'join_config_id', 'benefits_id', 'name', 'image', 'fees', 'content']) + ->where('join_config_id', $join_config_id) + ->where('status', 'normal') + ->order('weigh', 'asc') + ->select(); + + // 查询该入会类型下的所有会员权益(按排序值升序,排除禁用的) + $all_benefits = $this->benefits_model + ->field(['id', 'join_config_id', 'title', 'image', 'desc']) + ->where('join_config_id', $join_config_id) + ->where('disabled', 0) + ->order('sort', 'asc') + ->select(); + + // 为每个级别构建完整的权益列表(含 has 标记) + $result_levels = []; + foreach ($levels as $level) { + $owned_ids = json_decode($level['benefits_id'], true) ?: []; + $owned_ids = array_map('intval', $owned_ids); + + $benefits_with_flag = []; + foreach ($all_benefits as $benefit) { + $benefit['has'] = in_array(intval($benefit['id']), $owned_ids); + $benefits_with_flag[] = $benefit; + } + + $level['benefits'] = $benefits_with_flag; + $result_levels[] = $level; + } + + // 会员动态 + $result_articles = $this->article_model->alias('a') + ->field(['a.id', 'a.type', 'a.title', 'a.image', 'a.link', 'a.createtime']) + ->join('wdsxh_article_cat c', 'c.id = a.cat_id') + ->where('c.id', 4) + ->where('c.status', '1') + ->where('a.status', '1') + ->order([ + 'a.weigh' => 'desc', + 'a.id' => 'desc' + ]) + ->find(); + + $this->success('请求成功', [ + 'levels_benefits' => $result_levels, + 'articles' => $result_articles, + ]); + } +} diff --git a/application/api/model/wdsxh/member/MemberBenefits.php b/application/api/model/wdsxh/member/MemberBenefits.php new file mode 100644 index 0000000..8867108 --- /dev/null +++ b/application/api/model/wdsxh/member/MemberBenefits.php @@ -0,0 +1,35 @@ + www.maiwd.cn +// +---------------------------------------------------------------------- +/** + * Class MemberBenefits + * Desc 会员权益模型 + * Create on 2024/3/8 9:56 + * Create by wangyafang + */ + +namespace app\api\model\wdsxh\member; + + +use app\api\model\wdsxh\Base; + +class MemberBenefits extends Base +{ + // 表名 + protected $name = 'wdsxh_member_benefits'; + + // 自动写入时间戳字段 + protected $autoWriteTimestamp = false; + + // 定义时间戳字段名 + protected $createTime = false; + protected $updateTime = false; + protected $deleteTime = false; +} \ No newline at end of file