new files

This commit is contained in:
panchengyong
2026-03-07 22:29:07 +08:00
parent cd7e80b502
commit 7acbf45ff7
12516 changed files with 1808447 additions and 194 deletions

View File

@@ -0,0 +1,69 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\dao\store;
use app\dao\BaseDao;
use app\model\store\DeliveryService;
/**
* 配送dao
* Class DeliveryServiceDao
* @package app\dao\store
*/
class DeliveryServiceDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return DeliveryService::class;
}
/**
* 获取配送员列表
* @param array $where
* @param int $page
* @param int $limit
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getServiceList(array $where, int $page = 0, int $limit = 0)
{
$realName = $where['keyword'] ?? '';
$fieldKey = $where['field_key'] ?? '';
$fieldKey = $fieldKey == 'all' ? '' : $fieldKey;
return $this->search($where)->with('user')->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when($realName && $fieldKey && in_array($fieldKey, ['id', 'phone']), function ($query) use ($where, $realName, $fieldKey) {
$query->whereLike($fieldKey, '%' . $where['keyword'] . '%');
})->when($realName && !$fieldKey, function ($query) use ($where) {
$query->whereLike('uid|id|nickname|phone', '%' . $where['keyword'] . '%');
})->when(isset($where['noId']), function ($query) use ($where) {
$query->where('id', '<>', $where['noId']);
})->order('id DESC')->field('id,uid,avatar,nickname as wx_name,status,add_time,phone')->select()->toArray();
}
/**
* 获取配送员select
* @param array $where
* @return array
*/
public function getSelectList(array $where)
{
return $this->search($where)->field('uid,nickname')->select()->toArray();
}
}

View File

@@ -0,0 +1,45 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\dao\store;
use app\dao\BaseDao;
use app\model\store\StoreConfig;
//use crmeb\traits\SearchDaoTrait;
/**
* Class StoreConfigDao
* @package app\dao\store
*/
class StoreConfigDao extends BaseDao
{
// use SearchDaoTrait;
/**
* @return string
*/
protected function setModel(): string
{
return StoreConfig::class;
}
// /**
// * 搜索
// * @param array $where
// * @return \crmeb\basic\BaseModel|mixed|\think\Model
// */
// public function search(array $where = [])
// {
// return $this->searchWhere($where);
// }
}

View File

@@ -0,0 +1,98 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\dao\store;
use app\dao\BaseDao;
use app\model\store\StoreUser;
/**
* 门店用户
* Class StoreUserDao
* @package app\dao\store
*/
class StoreUserDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return StoreUser::class;
}
/**
* 获取用户列表
* @param array $where
* @param string $field
* @param array $with
* @param int $page
* @param int $limit
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getList(array $where, string $field = '*', array $with = [], int $page = 0, int $limit = 0): array
{
return $this->search($where)->field($field)->when($with, function ($query) use ($with) {
$query->with(['label']);
})->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->select()->toArray();
}
/**
* 获取一段时间内新增人数
* @param array $where
* @param array $time
* @param string $timeType
* @param string $countField
* @param string $sumField
* @param string $groupField
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function userTimeList(array $where, array $time, string $timeType = "week", string $countField = '*', string $sumField = 'pay_price', string $groupField = 'add_time')
{
return $this->getModel()->where($where)
->where($groupField, 'between time', $time)
->when($timeType, function ($query) use ($timeType, $countField, $sumField, $groupField) {
switch ($timeType) {
case "hour":
$timeUnix = "%H";
break;
case "week" :
$timeUnix = "%w";
break;
case "month" :
$timeUnix = "%d";
break;
case "weekly" :
$timeUnix = "%W";
break;
case "year" :
$timeUnix = "%Y-%m";
break;
default:
$timeUnix = "%m-%d";
break;
}
$query->field("FROM_UNIXTIME(`" . $groupField . "`,'$timeUnix') as day,count(" . $countField . ") as count");
$query->group('day');
})->order('add_time asc')->select()->toArray();
}
}

View File

@@ -0,0 +1,177 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\dao\store;
use app\dao\BaseDao;
use app\model\store\SystemStore;
/**
* 自提点dao
* Class SystemStoreDao
* @package app\dao\system\store
*/
class SystemStoreDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return SystemStore::class;
}
/**
* 经纬度排序计算
* @param string $latitude
* @param string $longitude
* @return string
*/
public function distance(string $latitude, string $longitude, bool $type = false)
{
if ($type) {
return "(round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - ({$latitude} * pi()) / 180) / 2), 2) + cos(({$latitude} * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - ({$longitude} * pi()) / 180) / 2), 2)))))";
} else {
return "(round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - ({$latitude} * pi()) / 180) / 2), 2) + cos(({$latitude} * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - ({$longitude} * pi()) / 180) / 2), 2))))) AS distance";
}
}
/**
* 获取
* @param array $where
* @param array $field
* @param int $page
* @param int $limit
* @param string $latitude
* @param string $longitude
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getStoreList(array $where, array $field = ['*'], int $page = 0, int $limit = 0, string $latitude = '', string $longitude = '', int $order = 0)
{
return $this->search($where)->when(isset($where['ids']) && $where['ids'], function ($query) use ($where) {
$query->whereIn('id', $where['ids']);
})->when($latitude && $longitude, function ($query) use ($longitude, $latitude, $order) {
$query->field(['*', $this->distance($latitude, $longitude)]);
})->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when(isset($order), function ($query) use ($order) {
if ($order == 1) {
$query->order('distance ASC');
} else {
$query->order('id desc');
}
})->field($field)->select()->toArray();
}
/**
* 获取有效自提点
* @param array $where
* @return \crmeb\basic\BaseModel|mixed|\think\Model
*/
public function getValidSerch(array $where = [])
{
$validWhere = [
'is_show' => 1,
'is_del' => 0,
];
return $this->search($where)->where($validWhere);
}
/**
* 获取最近距离距离内的一个自提点
* @param string $latitude
* @param string $longitude
* @return array|\think\Model|null
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getDistanceShortStore(string $latitude = '', string $longitude = '')
{
return $this->getValidSerch()->when($longitude && $longitude, function ($query) use ($longitude, $latitude) {
$query->field(['*', $this->distance($latitude, $longitude)])->order('distance ASC');
})->order('id desc')->find();
}
/**
* 距离排序符合配送范围自提点
* @param string $latitude
* @param string $longitude
* @param string $field
* @param int $limit
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getDistanceShortStoreList(string $latitude = '', string $longitude = '', string $field = '*', int $limit = 0)
{
return $this->getValidSerch()->field($field)->when($longitude && $longitude, function ($query) use ($longitude, $latitude, $field) {
$query->field([$field, $this->distance($latitude, $longitude)])->where('valid_range', 'EXP', '>' . $this->distance($latitude, $longitude, true))->order('distance ASC');
})->when($limit, function ($query) use ($limit) {
$query->limit($limit);
})->order('id desc')->select()->toArray();
}
/**
* 根据地址区、街道信息获取自提点列表
* @param string $addressInfo
* @param array $where
* @param string $field
* @param int $page
* @param int $limit
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getStoreByAddressInfo(string $addressInfo = '', array $where = [], string $field = '*', int $page = 0, int $limit = 0)
{
return $this->getValidSerch($where)->field($field)->when(isset($where['ids']) && $where['ids'], function ($query) use ($where) {
$query->whereIn('id', $where['ids']);
})->when($addressInfo, function ($query) use ($addressInfo) {
$query->whereLike('address', '%' . $addressInfo . '%');
})->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when(!$page && $limit, function ($query) use ($limit) {
$query->limit($limit);
})->order('id desc')->select()->toArray();
}
/**
* 获取自提点不分页
* @param array $where
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getStore(array $where)
{
return $this->search($where)->order('add_time DESC')->field(['id', 'name'])->select()->toArray();
}
/**
* 获取ERP店铺
* @param array $where
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getErpStore(array $where, array $field = ['id','name','erp_shop_id'])
{
return $this->search(['type' => 0])->where($where)->field($field)->select()->toArray();
}
}

View File

@@ -0,0 +1,116 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\dao\store;
use app\dao\BaseDao;
use app\model\store\SystemStoreStaff;
use crmeb\basic\BaseModel;
/**
* 门店店员
* Class SystemStoreStaffDao
* @package app\dao\system\store
*/
class SystemStoreStaffDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return SystemStoreStaff::class;
}
/**
* @return BaseModel
*/
public function getWhere()
{
return $this->getModel();
}
/**
* 门店店员搜索器
* @param array $where
* @param bool $search
* @return BaseModel
* @throws \ReflectionException
*/
public function search(array $where = [], bool $search = false)
{
return parent::search($where, $search)->when(isset($where['keyword']) && $where['keyword'], function ($query) use ($where) {
if (!isset($where['field_key']) || $where['field_key'] == '') {
$query->whereLike('id|uid|staff_name|phone', '%' . $where['keyword'] . '%');
} else {
$query->where($where['field_key'], $where['keyword']);
}
});
}
/**
* 获取门店管理员列表
* @param array $where
* @param int $page
* @param int $limit
* @param array|string[] $with
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getStoreAdminList(array $where, int $page = 0, int $limit = 0, array $with = ['user'])
{
return $this->search($where)->when($with, function ($query) use ($with) {
$query->with($with);
})->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->order('add_time DESC')->select()->toArray();
}
/**
* 获取店员列表
* @param array $where
* @param string $field
* @param int $page
* @param int $limit
* @param array|string[] $with
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getStoreStaffList(array $where, string $field = '*', int $page = 0, int $limit = 0, array $with = ['store', 'user'])
{
return $this->search($where)->field($field)->when($with, function ($query) use ($with) {
$query->with(array_merge($with, ['store', 'user']));
})->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when(isset($where['notId']), function ($query) use ($where) {
$query->where('id', '<>', $where['notId']);
})->when(isset($where['store_id']), function ($query) use ($where) {
$query->where('store_id', $where['store_id']);
})->order('add_time DESC')->select()->toArray();
}
/**
* 获取店员select
* @param array $where
* @return array
*/
public function getSelectList(array $where)
{
return $this->search($where)->field('id,staff_name')->select()->toArray();
}
}