| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- namespace bizHd\member\classes;
- use common\components\dict;
- use Yii;
- use bizHd\base\classes\BaseClass;
- class MemberLevelClass extends BaseClass
- {
- public static $baseFile = '\bizHd\member\models\MemberLevel';
- public static function initData($shop)
- {
- $mainId = $shop['mainId'];
- $shopId = $shop['id'];
- $has = self::getByCondition(['mainId' => $mainId], true);
- if (!empty($has)) {
- return true;
- }
- $map = dict::getDict('memberLevelMap');
- foreach ($map as $k => $v) {
- $v['mainId'] = $mainId;
- $v['shopId'] = $shopId;
- if (!isset($v['discount'])) {
- $v['discount'] = 10;
- }
- if (!isset($v['birthdayBenefit'])) {
- $v['birthdayBenefit'] = '';
- }
- if (!isset($v['benefitDesc'])) {
- $v['benefitDesc'] = '';
- }
- self::add($v);
- }
- return true;
- }
- /**
- * 获取门店会员等级展示列表(与 hd 后台「会员等级设置」同源)
- * mall 权益页、hd 初始化接口共用,避免两套等级数据不一致
- * @param object|array $shop 门店(含 id、mainId、memberLevelSet)
- * @return array 按 level 升序的等级行
- */
- public static function getShopMemberList($shop)
- {
- $shopId = intval(is_array($shop) ? ($shop['id'] ?? 0) : ($shop->id ?? 0));
- $mainId = intval(is_array($shop) ? ($shop['mainId'] ?? 0) : ($shop->mainId ?? 0));
- $memberLevelSet = intval(is_array($shop) ? ($shop['memberLevelSet'] ?? 0) : ($shop->memberLevelSet ?? 0));
- // memberLevelSet=1:已按门店自定义;否则用默认字典(与 MemberLevelController::actionGetInitData 一致)
- if ($memberLevelSet == 1) {
- $list = self::getAllByCondition(['shopId' => $shopId], 'level ASC', '*', null);
- $member = [];
- if (!empty($list)) {
- foreach ($list as $val) {
- $member[] = self::formatMemberRow($val);
- }
- }
- return $member;
- }
- $member = dict::getDict('memberLevelMap');
- foreach ($member as $k => $row) {
- $member[$k] = self::formatMemberRow($row);
- }
- return array_values($member);
- }
- /**
- * 统一等级行字段,便于前台展示折扣/成长值/权益文案
- * @param array|object $val 等级原始数据
- * @return array
- */
- public static function formatMemberRow($val)
- {
- $name = is_array($val) ? ($val['name'] ?? '会员') : ($val->name ?? '会员');
- $levelSn = is_array($val) ? ($val['levelSn'] ?? 'general') : ($val->levelSn ?? 'general');
- $level = intval(is_array($val) ? ($val['level'] ?? 1) : ($val->level ?? 1));
- $amount = floatval(is_array($val) ? ($val['amount'] ?? 0) : ($val->amount ?? 0));
- $discount = floatval(is_array($val) ? ($val['discount'] ?? 10) : ($val->discount ?? 10));
- $birthdayBenefit = trim(is_array($val) ? ($val['birthdayBenefit'] ?? '') : ($val->birthdayBenefit ?? ''));
- $benefitDesc = trim(is_array($val) ? ($val['benefitDesc'] ?? '') : ($val->benefitDesc ?? ''));
- return [
- 'name' => $name,
- 'levelSn' => $levelSn,
- 'level' => $level,
- 'member' => $level,
- 'amount' => $amount,
- // 兼容旧 mall 字段 growth(成长值门槛)
- 'growth' => $amount,
- 'discount' => $discount,
- 'birthdayBenefit' => $birthdayBenefit,
- 'benefitDesc' => $benefitDesc,
- ];
- }
- }
|