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,134 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\CommunityComment;
use crmeb\basic\BaseModel;
/**
* 社区评论
* Class CommunityCommentDao
* @package app\dao\community
*/
class CommunityCommentDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return CommunityComment::class;
}
/**
* @param array $where
* @param bool $search
* @return BaseModel
* @throws \ReflectionException
*/
public function search(array $where = [], bool $search = false)
{
$keyword = $where['keyword'] ?? '';
$fieldKey = $where['field_key'] ?? '';
$fieldKey = in_array($fieldKey, ['user', 'community', 'comment', 'id']) ? $fieldKey : '';
/** field_key
* user
* community
* comment
* id
*/
return parent::search($where, $search)
->when(isset($where['author_uid']), function ($query) use ($where) {
if ($where['author_uid'] == 0) {
$query->where('is_show', 1);
}
})
->when($keyword !== '' && $fieldKey !== '', function ($query) use ($fieldKey, $keyword) {
switch ($fieldKey) {
case 'user':
$query->whereIn('uid', function ($query) use ($keyword) {
$query->name('user')->whereLike('nickname', '%' . $keyword . '%')->field('uid');
});
break;
case 'community':
$query->whereIn('community_id', function ($query) use ($keyword) {
$query->name('community')->whereLike('title|content', '%' . $keyword . '%')->field('id');
});
break;
case 'comment':
$query->whereLike('content', '%' . $keyword . '%');
break;
case 'id':
$query->where('id', $keyword);
}
})->when(isset($where['is_verify']) && $where['is_verify'] !== '', function ($query) use ($where) {
if (isset($where['author_uid'])) {
$query->where(function ($query) use ($where) {
if ($where['author_uid'] == 0) {
$query->where('is_verify', 1);
} else {
$query->where(function ($query) use ($where) {
// 条件一uid 等于 author_uid且 is_verify 为 0 或 1
$query->where('uid', $where['author_uid'])
->whereIn('is_verify', [0, 1]);
})->whereOr(function ($query) use ($where) {
// 条件二uid 不等于 author_uid且 is_verify 为 1
$query->where('uid', '<>', $where['author_uid'])
->where('is_verify', 1);
});
}
});
} else {
$query->where('is_verify', $where['is_verify']);
}
});
}
/**
* 获取评论数量
* @param array $where 查询条件
* @return int
*/
public function count($where = []): int
{
return $this->search($where)->count();
}
/**
* 评论列表
* @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, $order = 'add_time DESC')
{
return $this->search($where)->field($field)
->when($with, function ($query) use ($with) {
$query->with($with);
})->when($page != 0 && $limit != 0, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->order($order)->select()->toArray();
}
}

View File

@@ -0,0 +1,135 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\Community;
use app\services\community\CommunityRelevanceServices;
use crmeb\basic\BaseModel;
/**
* 社区
* Class CommunityDao
* @package app\dao\community
*/
class CommunityDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return Community::class;
}
/**
* @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) {
$query->where(function ($query) use ($where) {
$query->whereLike('title|id', "%{$where['keyword']}%");
});
// ->whereOr(function ($query) use ($where) {
// //商品
// $query->whereIn('id', function ($product) use ($where) {
// $product->name('community_relevance')->where('type', CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT)->whereIn('right_id',
// function ($q) use ($where) {
// $q->name('store_product')->whereLike('store_name|keyword', "%{$where['keyword']}%")->field('id');
// }
// )->field('left_id');
// });
// })->whereOr(function ($query) use ($where) {
// //用户
// $query->whereIn('relation_id', function ($user) use ($where) {
// $user->name('user')->whereLike('nickname', "%{$where['keyword']}%")->field('uid');
// });
// });
})
->when(isset($where['topic_id']) && $where['topic_id'], function ($query) use ($where) {
$topicIds = is_array($where['topic_id']) ? $where['topic_id'] : [$where['topic_id']];
$query->whereIn('id', function ($topic) use ($topicIds) {
$topic->name('community_relevance')->where('type', CommunityRelevanceServices::TYPE_COMMUNITY_TOPIC)->whereIn('right_id', $topicIds)->field('left_id');
});
})
->when(isset($where['product_id']) && $where['product_id'], function ($query) use ($where) {
$productIds = is_array($where['product_id']) ? $where['product_id'] : [$where['product_id']];
$query->whereIn('id', function ($product) use ($productIds) {
$product->name('community_relevance')->where('type', CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT)->whereIn('right_id', $productIds)->field('left_id');
});
})
->when(isset($where['is_follow']) && $where['is_follow'], function ($query) use ($where) {
$query->whereIn('relation_id', function ($product) use ($where) {
$product->name('community_relevance')->where('type', CommunityRelevanceServices::TYPE_COMMUNITY_INTEREST)->where('left_id', $where['is_follow'])->field('right_id');
});
})
// ->when(isset($where['order_by_id']) && $where['order_by_id'], function ($query) use ($where) {
// $query->where('id', 'in', $where['order_by_id'])->orderField('id', $where['order_by_id']);
// })
->when(isset($where['notId']), function ($query) use ($where) {
$query->where('id', '<>', $where['notId']);
});
}
/**
* 社区列表
* @param array $where
* @param string $field
* @param int $page
* @param int $limit
* @param string $order
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getList(array $where, string $field = '*', int $page = 0, int $limit = 0, array $with = [], string $order = 'sort desc,id desc')
{
return $this->search($where)->field($field)
->when($with, function ($query) use ($with) {
$query->with($with);
})
->when($page != 0 && $limit != 0, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when($order, function ($query) use ($order) {
if ($order == 'rand') {
$query->orderRand();
} else if ($order) {
$query->order($order);
} else {
$query->order('sort desc,id desc');
}
})->select()->toArray();
}
/**
* @param array $where
* @param string $field
* @param int $limit
* @return array
* @throws \ReflectionException
* User: liusl
* DateTime: 2024/8/27 10:40
*/
public function getIdColumn(array $where, string $field, int $limit = 5): array
{
return $this->search($where)->limit($limit)->column($field);
}
}

View File

@@ -0,0 +1,35 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\CommunityRecord;
/**
* 社区记录
* Class CommunityRecordDao
* @package app\dao\community
*/
class CommunityRecordDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return CommunityRecord::class;
}
}

View File

@@ -0,0 +1,221 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\CommunityRelevance;
use app\services\community\CommunityRelevanceServices;
use crmeb\basic\BaseModel;
use think\exception\ValidateException;
/**
* 社区关联
* Class CommunityTopicDao
* @package app\dao\community
*/
class CommunityRelevanceDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return CommunityRelevance::class;
}
/**
* @param array $where
* @param bool $search
* @return BaseModel
* @throws \ReflectionException
*/
public function search(array $where = [], bool $search = false)
{
return parent::search($where, $search);
}
/**
* 关联社区列表查询
* @param array $where 查询条件
* @param int $page 页码
* @param int $limit 每页数量
* @param string $condition 关联条件字段
* @param string $order 排序
* @return array
*/
public function joinCommunityList(array $where = [], $page = 0, $limit = 0, $condition = 'right_id', $order = 'r.id DESC')
{
return $this->joinCommunity($where, $condition)
->field('r.*,c.id as c_id,c.type as c_type,c.title,c.image,c.relation_id,c.content_type,c.like_num,c.slider_image')
->when($limit, function ($query) use ($page, $limit) {
if ($page) {
$query->page($page, $limit);
} else {
$query->limit($limit);
}
})
->order($order)
->select()
->toArray();
}
/**
* 关联社区查询
* @param array $where 查询条件
* @param string $condition 关联条件字段
* @return \think\db\BaseQuery
*/
public function joinCommunity(array $where = [], $condition = 'right_id')
{
return $this->getModel()->alias('r')
->join('community c', "r.{$condition}=c.id")
->when(isset($where['keyword']) && $where['keyword'], function ($query) use ($where) {
$query->where(function ($query) use ($where) {
$query->whereLike('c.title|c.content', "%{$where['keyword']}%");
})->whereOr(function ($query) use ($where) {
//商品
$query->whereIn('c.id', function ($product) use ($where) {
$productIds = name('product')->where('store_name|keyword', "%{$where['keyword']}%")->column('id');
$product->name('community_relevance')->where('type', CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT)->whereIn('right_id', $productIds)->field('left_id');
});
})->whereOr(function ($query) use ($where) {
//用户
$query->whereIn('c.relation_id', function ($user) use ($where) {
$user->name('user')->where('nickname', "%{$where['keyword']}%")->field('uid');
});
});
})
->where('c.is_verify', 1)->where('c.is_del', 0)->where('c.status', 1)
//用户
->when(isset($where['uid']) && $where['uid'], function ($query) use ($where) {
$query->where('r.left_id', $where['uid'])->where('r.type', CommunityRelevanceServices::TYPE_COMMUNITY_LIKE);
})
//商品
->when(isset($where['product_id']) && $where['product_id'], function ($query) use ($where) {
$query->where('r.right_id', $where['product_id'])->where('r.type', CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT);
})
//话题
->when(isset($where['topic_id']) && $where['topic_id'], function ($query) use ($where) {
$query->where('r.right_id', $where['topic_id'])->where('r.type', CommunityRelevanceServices::TYPE_COMMUNITY_TOPIC);
});
}
/**
* 添加
* @param int $leftId
* @param int $rightId
* @param string $type
* @param bool $check
* @return bool
* User: liusl
* DateTime: 2024/8/7 14:41
*/
public function create(int $leftId, int $rightId, string $type, bool $check = false)
{
if ($check && $this->checkHas($leftId, $rightId, $type)) {
return false;
}
$data = [
'left_id' => $leftId,
'right_id' => $rightId,
'type' => $type,
];
try {
$this->save($data);
return true;
} catch (\Exception $exception) {
throw new ValidateException('创建失败');
}
}
/**
* 检测是否存在
* @param int $leftId
* @param int $rightId
* @param string $type
* @return mixed
* User: liusl
* DateTime: 2024/8/7 14:42
*/
public function checkHas(int $leftId, int $rightId, string $type)
{
return $this->search([
'left_id' => $leftId,
'right_id' => $rightId,
'type' => $type,
])->find();
}
/**
* 根据左键批量删除
* @param $leftId
* @param $type
* @return mixed
* User: liusl
* DateTime: 2024/8/7 14:43
*/
public function batchDelete($leftId, $type)
{
return $this->search([
'left_id' => $leftId,
'type' => $type,
])->delete();
}
/**
* 条件删除
* @param int $leftId
* @param int $rightId
* @param string $type
* @return mixed
* User: liusl
* DateTime: 2024/8/13 14:22
*/
public function destory(int $leftId, int $rightId, string $type)
{
return $this->search([
'left_id' => $leftId,
'right_id' => $rightId,
'type' => $type,
])->delete();
}
/**
* 批量插入
* @param int $leftId
* @param array $rightId
* @param string $type
* @return void
* User: liusl
* DateTime: 2024/8/7 14:44
*/
public function createMany(int $leftId, array $rightId, string $type)
{
if (!empty($rightId)) {
$res = [];
foreach ($rightId as $value) {
$res[] = [
'left_id' => $leftId,
'right_id' => $value,
'type' => $type,
];
}
if (count($res) > 0) {
$this->saveAll($res);
}
}
}
}

View File

@@ -0,0 +1,59 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\CommunityTopic;
use crmeb\basic\BaseModel;
/**
* 社区话题
* Class CommunityTopicDao
* @package app\dao\community
*/
class CommunityTopicDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return CommunityTopic::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)
{
return $this->search($where)->field($field)
->when($with, function ($query) use ($with) {
$query->with($with);
})->when($page != 0, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->order('sort desc,id desc')->select()->toArray();
}
}

View File

@@ -0,0 +1,102 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\dao\community;
use app\dao\BaseDao;
use app\model\community\CommunityUser;
use crmeb\basic\BaseModel;
/**
* 社区用户
* Class CommunityUserDao
* @package app\dao\community
*/
class CommunityUserDao extends BaseDao
{
/**
* 设置模型
* @return string
*/
protected function setModel(): string
{
return CommunityUser::class;
}
/**
* @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['name']) && $where['name'], function ($query) use ($where) {
$query->whereLike('id|nickname', '%' . $where['name'] . '%');
});
}
/**
*
* @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, string $order = 'id DESC')
{
return $this->search($where)->field($field)
->when($with, function ($query) use ($with) {
$query->with($with);
})
->when(isset($where['is_community_num']), function ($query) {
$query->where('community_num', '>', 0);
})
->when($page != 0 && $limit != 0, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->order($order)->select()->toArray();
}
/**
* 获取用户信息
* @param int $uid
* @return array|mixed
* @throws \ReflectionException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* User: liusl
* DateTime: 2024/8/26 15:44
*/
public function getUserInfo(int $uid)
{
$where = [
'is_del' => 0
];
if ($uid == 0) {
$where['type'] = 0;
$where['uid'] = 0;
} else {
$where['type'] = 2;
$where['relation_id'] = $uid;
}
return $this->search($where)->find();
}
}