181 lines
5.4 KiB
PHP
181 lines
5.4 KiB
PHP
<?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>";
|
|
}
|
|
} |