<?php namespace app\repository; use app\model\Area; use app\model\BusinessCircle; use app\model\Category; use app\model\Model; use app\model\UsingRule; use app\service\Repository; use think\Collection; /** * 数据字典域 相关 * * Class DictionaryRepository * @package app\repository * @method self getInstance(Model $model = null) static */ class DictionaryRepository extends Repository { /** * 上下级按children进行递归分组 * @param $items * @param int $pid * @param string $pidField 上下级关联字段 * @param string $primaryField 关联关系字段 * @return array */ public function recursionChildrenList($items, int $pid=0, string $pidField = 'pid', string $primaryField='id'): array { $list = []; foreach ($items as $ki => $item) { if ($item[$pidField] == $pid) { unset($items[$ki]); $item['children'] = $this->recursionChildrenList($items, $item[$primaryField], $pidField, $primaryField); $list[] = $item; } } return $list; } /** * 获取所有的商圈数据 */ public function getAllBusinessCircleList(array $fields=[],$order = ['sort'=>'desc', 'id'=>'desc']) { try { return BusinessCircle::field($fields) ->order($order) ->select(); } catch (\Exception $e) { return new Collection(); } } /** * 获取商圈详情 * * @param int $id * @param array $fields * @param callable|null $call * @return array|\think\Model|null */ public function findBusinessCircleById(int $id, array $fields = [], callable $call = null) { try { return BusinessCircle::findById($id, $fields, $call); } catch (\Exception $e) { return null; } } /** * 获取商家分类数据 * @param array $where * @param array $fields * @param callable|null $call * @param array $order * @return mixed|Collection */ public function getBusinessTypeList(array $where=[], array $fields = [], callable $call=null, array $order = []) { try { $res = Category::findList($where, $fields, 1, 0, $call, $order); return $res['list']; } catch (\Exception $e) { return new Collection(); } } /** * 获取商家分类详情 * @param int $id * @param array $fields * @param callable|null $call * @return array|\think\Model|null */ public function findBusinessTypeById(int $id, array $fields = [], callable $call = null) { try { return Category::findById($id, $fields, $call); } catch (\Exception $e) { return null; } } /** * 省市区地址配置数据 */ public function findAreaList(array $where = []) { try { return Area::where($where)->select(); } catch (\Exception $e) { return new Collection(); } } /** * 通过地址编号查询地址信息 * @param string $areaCode * @return Area|array|\think\Model|null */ public function findAreaInfo(string $areaCode) { try { return Area::where('code', $areaCode)->find(); } catch (\Exception $e) { return null; } } /** * 解析地址编码 * [province, city, county] * @param array $list * @param array $areaList * @return array */ public function parseAreaText(array $list, array $areaList = []): array { if (empty($list)) { return []; } if (empty($areaList)) { $areaList = $this->findAreaList()->column('name', 'code'); } $list['province_text'] = (!isset($list['province']) || empty($list['province'])) ? '' : ($areaList[$list['province']] ?? ''); $list['city_text'] = (!isset($list['city']) || empty($list['city'])) ? '' : ($areaList[$list['city']] ?? ''); $list['county_text'] = (!isset($list['county']) || empty($list['county'])) ? '' : ($areaList[$list['county']] ?? ''); return $list; } /** * 获取一个签到券的使用规则 * @param int $couponMainId * @return string * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getUsingRuleByCouponMainId(int $couponMainId) { $usingRule =UsingRule::where("coupon_id",$couponMainId)->find(); if(empty($usingRule)){ return ''; } return "<div class='disPaperList'><div class='circleOrange'>●</div>该签到券可以在" . encodeCouponCycle($usingRule->cycle) . "进行使用</div> <div class='disPaperList'><div class='circleOrange'>●</div>该签到券可以在每天的" . $usingRule->day_start_time ."到" .$usingRule->day_end_time ."进行使用</div> <div class='disPaperList'><div class='circleOrange'>●</div>该签到券每天一共可以领取". $usingRule->day_total ."张</div> <div class='disPaperList'><div class='circleOrange'>●</div>该签到券每天每人可以领取". $usingRule->person_day_total ."张</div> <div class='disPaperList'><div class='circleOrange'>●</div>该签到券每人总共可以领取". $usingRule->person_total ."张</div>"; } }