chore: 添加静态资源文件和版本配置文件
添加大量图片、字体、音频等静态资源文件,包括用户界面图片、模板文件和安装界面素材 添加系统版本配置文件(.version)和常量定义文件(.constant) 更新供应商依赖文件,包括Symfony VarDumper组件和相关许可证文件 添加验证码配置文件(captcha.php)和.gitignore规则
This commit is contained in:
172
app/model/activity/StoreActivity.php
Normal file
172
app/model/activity/StoreActivity.php
Normal file
@@ -0,0 +1,172 @@
|
||||
<?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\model\activity;
|
||||
|
||||
use app\model\activity\seckill\StoreSeckill;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 活动model
|
||||
* Class StoreActivity
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class StoreActivity extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_activity';
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店信息
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setApplicableStoreIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店信息
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getApplicableStoreIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function seckill()
|
||||
{
|
||||
return $this->hasMany(StoreSeckill::class, 'activity_id', 'id')->where('is_show', 1)->where('is_del', 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchApplicableTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('applicable_type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('applicable_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀时间段
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTimeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('find_in_set(' . $value . ',`time_id`)');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
256
app/model/activity/bargain/StoreBargain.php
Normal file
256
app/model/activity/bargain/StoreBargain.php
Normal file
@@ -0,0 +1,256 @@
|
||||
<?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\model\activity\bargain;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 砍价商品Model
|
||||
* Class StoreBargain
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargain extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain';
|
||||
|
||||
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 2)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'ot_price'])->bind(['ot_price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_hot', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动有效时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBargainTimeAttr($query, $value)
|
||||
{
|
||||
if ($value == 1) {
|
||||
$time = time();
|
||||
$query->where('start_time', '<=', $time)->where('stop_time', '>=', $time);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
103
app/model/activity/bargain/StoreBargainUser.php
Normal file
103
app/model/activity/bargain/StoreBargainUser.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?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\model\activity\bargain;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 参与砍价Model
|
||||
* Class StoreBargainUser
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargainUser extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain_user';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getBargain()
|
||||
{
|
||||
return $this->hasOne(StoreBargain::class, 'id', 'bargain_id')->bind(['title', 'image', 'datatime' => 'stop_time', 'people_num']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 获取砍价用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['avatar', 'nickname', 'delete_time']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchBargainIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('bargain_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
92
app/model/activity/bargain/StoreBargainUserHelp.php
Normal file
92
app/model/activity/bargain/StoreBargainUserHelp.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?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\model\activity\bargain;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 砍价帮砍Model
|
||||
* Class StoreBargainUserHelp
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargainUserHelp extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain_user_help';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 关联用户
|
||||
* @return \crmeb\basic\BaseHasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['nickname', 'avatar', 'delete_time']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchBargainIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('bargain_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBargainUserIdAttr($query, $value)
|
||||
{
|
||||
$query->where('bargain_user_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
112
app/model/activity/card/CardBatch.php
Normal file
112
app/model/activity/card/CardBatch.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?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\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
|
||||
/**
|
||||
* 卡次批次模型
|
||||
* Class CardBatch
|
||||
* @package app\model\activity\card
|
||||
*/
|
||||
class CardBatch extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_batch';
|
||||
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡次名称搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('name', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡号前缀搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCardPrefixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_prefix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
public function searchPrefixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('prefix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡号后缀搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCardSuffixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_suffix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据删除状态搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
118
app/model/activity/card/CardCode.php
Normal file
118
app/model/activity/card/CardCode.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?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\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardCode extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_code';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
public function getActiveTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//uid搜索器
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//type搜索器
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//status搜索器
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//card_id搜索器
|
||||
public function searchCardIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//batch_id
|
||||
public function searchBatchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('batch_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//active_time搜索器
|
||||
public function searchActiveTimeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$active_time = explode('-', $value);
|
||||
$active_time[0] = isset($active_time[0]) ? strtotime($active_time[0]) : 0;
|
||||
$active_time[1] = isset($active_time[1]) ? strtotime($active_time[1]) : 0;
|
||||
$query->whereBetween('active_time', [$active_time[0], $active_time[1]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
109
app/model/activity/card/CardGift.php
Normal file
109
app/model/activity/card/CardGift.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?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\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGift extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡名称搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('name', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡类型搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡状态搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据有效期类型搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchValidTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('valid_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
64
app/model/activity/card/CardGiftAuxiliary.php
Normal file
64
app/model/activity/card/CardGiftAuxiliary.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?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\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGiftAuxiliary extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift_auxiliary';
|
||||
|
||||
|
||||
//id搜索器
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('gift_id', $value);
|
||||
} else {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
76
app/model/activity/card/CardGiftRecord.php
Normal file
76
app/model/activity/card/CardGiftRecord.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?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\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡记录
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGiftRecord extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift_record';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//gift_id搜索器
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('gift_id', $value);
|
||||
} else {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
260
app/model/activity/combination/StoreCombination.php
Normal file
260
app/model/activity/combination/StoreCombination.php
Normal file
@@ -0,0 +1,260 @@
|
||||
<?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\model\activity\combination;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 拼团商品Model
|
||||
* Class StoreCombination
|
||||
* @package app\model\activity\combination
|
||||
*/
|
||||
class StoreCombination extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_combination';
|
||||
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'ot_price', 'price'])->bind(['ot_price', 'product_price' => 'price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function total()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_del', 0)->field(['(sales+ficti) as total', 'id', 'price'])->bind([
|
||||
'total' => 'total', 'product_price' => 'price',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 3)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHostAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_host', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('is_show', $value ?: 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
139
app/model/activity/combination/StorePink.php
Normal file
139
app/model/activity/combination/StorePink.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?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\model\activity\combination;
|
||||
|
||||
use app\model\product\product\StoreProduct;use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 拼团Model
|
||||
* Class StorePink
|
||||
* @package app\model\activity\combination
|
||||
*/
|
||||
class StorePink extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_pink';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 用户一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['delete_time']);
|
||||
}
|
||||
|
||||
public function getProduct()
|
||||
{
|
||||
return $this->hasOne(StoreCombination::class, 'id', 'cid')->bind(['title']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'pid')->field(['id', 'ot_price', 'price', 'quota_show', 'quota'])->bind(['ot_price', 'product_price' => 'price', 'quota_show', 'quota']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单号搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单编号搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderIdKeyAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('order_id_key', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchPidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('pid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否团长搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchKIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('k_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否退款搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsRefundAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_refund', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
}
|
||||
140
app/model/activity/coupon/StoreCoupon.php
Normal file
140
app/model/activity/coupon/StoreCoupon.php
Normal file
@@ -0,0 +1,140 @@
|
||||
<?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\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券模板Model
|
||||
* Class StoreCoupon
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCoupon extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon';
|
||||
|
||||
/**
|
||||
* 优惠卷类型
|
||||
* @var string[]
|
||||
*/
|
||||
protected $couponType = [0 => '通用券', 1 => '品类券', 2 => '商品券'];
|
||||
|
||||
/**
|
||||
* 一对多关联
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function productId()
|
||||
{
|
||||
return $this->hasMany(StoreCouponProduct::class, 'coupon_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeAttr($value)
|
||||
{
|
||||
return $this->couponType[$value];
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板标题搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 最低消费金额搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUseMinPriceAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('use_min_price', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券面值搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponPriceAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('coupon_price', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('type', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCategoryIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('category_id', $value);
|
||||
}
|
||||
}
|
||||
193
app/model/activity/coupon/StoreCouponIssue.php
Normal file
193
app/model/activity/coupon/StoreCouponIssue.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?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\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 发布优惠券Model
|
||||
* Class StoreCouponIssue
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponIssue extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_issue';
|
||||
|
||||
/**
|
||||
* 用户是否拥有
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function used()
|
||||
{
|
||||
return $this->hasMany(StoreCouponUser::class, 'cid', 'id')
|
||||
->field('id,cid,uid,start_time,end_time,use_time,status,is_fail');
|
||||
}
|
||||
|
||||
/**
|
||||
* id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('id', $value);
|
||||
else
|
||||
$query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('type', $value);
|
||||
else
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCouponTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('coupon_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* receive_type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchReceiveTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('receive_type', $value);
|
||||
else
|
||||
$query->where('receive_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否不限量
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsPermanentAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_permanent', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否新人券
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsGiveSubscribeAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_give_subscribe', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否满赠
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsFullGiveAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_full_give', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券状态
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否删除
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->whereLike('coupon_title', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCategoryAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('category', $value);
|
||||
else
|
||||
$query->where('category', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
74
app/model/activity/coupon/StoreCouponIssueUser.php
Normal file
74
app/model/activity/coupon/StoreCouponIssueUser.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?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\model\activity\coupon;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券前台用户领取Model
|
||||
* Class StoreCouponIssueUser
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponIssueUser extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_issue_user';
|
||||
|
||||
/**
|
||||
* 获取领取人名称头像
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar')->bind(['nickname', 'avatar']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取优惠券搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIssueCouponIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('issue_coupon_id', $value);
|
||||
}
|
||||
}
|
||||
31
app/model/activity/coupon/StoreCouponProduct.php
Normal file
31
app/model/activity/coupon/StoreCouponProduct.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 优惠券关联商品Model
|
||||
* Class StoreCouponProduct
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponProduct extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_product';
|
||||
|
||||
}
|
||||
206
app/model/activity/coupon/StoreCouponUser.php
Normal file
206
app/model/activity/coupon/StoreCouponUser.php
Normal file
@@ -0,0 +1,206 @@
|
||||
<?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\model\activity\coupon;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券发放Model
|
||||
* Class StoreCouponUser
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponUser extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_user';
|
||||
|
||||
/**
|
||||
* 获取类型
|
||||
* @var string[]
|
||||
*/
|
||||
protected array $gainType = [
|
||||
'send' => '后台发放',
|
||||
'get' => '手动领取',
|
||||
'newcomer' => '新人礼赠送',
|
||||
'activate_level' => '会员卡激活赠送',
|
||||
'user_first' => '用户注册赠送',
|
||||
'order' => '下单赠送',
|
||||
'luck_lottery' => '抽奖赠送'
|
||||
];
|
||||
|
||||
/**
|
||||
* 类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeAttr($value)
|
||||
{
|
||||
return $this->gainType[$value] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用状态
|
||||
* @var string[]
|
||||
*/
|
||||
protected $statusType = [0 => '未使用', 1 => '已使用', 2 => '已过期'];
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusAttr($value)
|
||||
{
|
||||
return $this->statusType[$value];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function issue()
|
||||
{
|
||||
return $this->hasOne(StoreCouponIssue::class, 'id', 'cid')->field(['id', 'end_use_time', 'start_use_time', 'coupon_type', 'type', 'coupon_time', 'product_id', 'category_id', 'brand_id', 'receive_type', 'rule'])->bind([
|
||||
'applicable_type' => 'type',
|
||||
'coupon_time' => 'coupon_time',
|
||||
'product_id',
|
||||
'category_id',
|
||||
'brand_id',
|
||||
'receive_type',
|
||||
'coupon_type',
|
||||
'start_use_time',
|
||||
'end_use_time',
|
||||
'rule',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取领取人名称头像
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar')->bind(['nickname', 'avatar']);
|
||||
}
|
||||
|
||||
/**
|
||||
* id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('id', $value);
|
||||
else
|
||||
$query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('cid', $value);
|
||||
else
|
||||
$query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponTitleAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('coupon_title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取方式搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '' && $value != -1) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('status', $value);
|
||||
} else {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 是否失效
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsFailAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_fail', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否在使用期限内搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTimeAttr($query, $value, $data)
|
||||
{
|
||||
$query->whereTime('add_time', '>=', $value)->whereTime('end_time', '<=', $value);
|
||||
}
|
||||
}
|
||||
103
app/model/activity/discounts/StoreDiscounts.php
Normal file
103
app/model/activity/discounts/StoreDiscounts.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?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\model\activity\discounts;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠套餐
|
||||
* Class StoreDiscounts
|
||||
* @package app\model\activity\discounts
|
||||
*/
|
||||
class StoreDiscounts extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_discounts';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 套餐商品关联
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function products()
|
||||
{
|
||||
return $this->hasMany(StoreDiscountsProducts::class, 'discount_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdsAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereFindInSet('product_ids', $value);
|
||||
}
|
||||
}
|
||||
70
app/model/activity/discounts/StoreDiscountsProducts.php
Normal file
70
app/model/activity/discounts/StoreDiscountsProducts.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?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\model\activity\discounts;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠套餐商品
|
||||
* Class StoreDiscountsProducts
|
||||
* @package app\model\activity\discounts
|
||||
*/
|
||||
class StoreDiscountsProducts extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_discounts_products';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 一对一关联商品表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'pid', 'type', 'cate_id', 'relation_id', 'freight', 'postage', 'temp_id', 'delivery_type', 'price'])->bind([
|
||||
'pid',
|
||||
'cate_id',
|
||||
'plat_type' => 'type',
|
||||
'relation_id' => 'relation_id',
|
||||
'freight' => 'freight',
|
||||
'postage' => 'postage',
|
||||
'p_temp_id' => 'temp_id',
|
||||
'delivery_type',
|
||||
'price'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchDiscountIdAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('discount_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
637
app/model/activity/holiday/HolidayGift.php
Normal file
637
app/model/activity/holiday/HolidayGift.php
Normal file
@@ -0,0 +1,637 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼模型
|
||||
* Class HolidayGift
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGift extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
* @var array
|
||||
*/
|
||||
public const TASK_TYPE = [
|
||||
1 => '用户生日',
|
||||
2 => '活动日期'
|
||||
];
|
||||
|
||||
/**
|
||||
* 活动日期类型
|
||||
* @var array
|
||||
*/
|
||||
public const ACTIVITY_DATE_TYPE = [
|
||||
1 => '自定义日期',
|
||||
2 => '每月',
|
||||
3 => '每周'
|
||||
];
|
||||
|
||||
/**
|
||||
* 生日类型
|
||||
* @var array
|
||||
*/
|
||||
public const BIRTHDAY_TYPE = [
|
||||
1 => '生日当天',
|
||||
2 => '生日当周',
|
||||
3 => '生日当月',
|
||||
0 => '无'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送时段类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_TIME_TYPE = [
|
||||
1 => '全时段',
|
||||
2 => '指定时段'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送人群类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_USER_TYPE = [
|
||||
1 => '全部人群',
|
||||
2 => '指定人群'
|
||||
];
|
||||
|
||||
/**
|
||||
* 条件满足类型
|
||||
* @var array
|
||||
*/
|
||||
public const CONDITION_TYPE = [
|
||||
1 => '满足任一条件',
|
||||
2 => '满足全部条件'
|
||||
];
|
||||
|
||||
/**
|
||||
* 礼品类型
|
||||
* @var array
|
||||
*/
|
||||
public const GIFT_TYPE = [
|
||||
1 => '优惠券',
|
||||
2 => '积分',
|
||||
3 => '多倍积分',
|
||||
4 => '余额',
|
||||
5 => '全场包邮'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送渠道
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_CHANNEL = [
|
||||
1 => '短信',
|
||||
2 => '公众号',
|
||||
3 => '弹框广告'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送频次
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_FREQUENCY = [
|
||||
1 => '永久一次',
|
||||
2 => '每次进入',
|
||||
3 => '每天',
|
||||
4 => '每月',
|
||||
5 => '每周'
|
||||
];
|
||||
|
||||
/**
|
||||
* 显示页面
|
||||
* @var array
|
||||
*/
|
||||
public const SHOW_PAGE = [
|
||||
1 => '商城首页',
|
||||
2 => '分类页',
|
||||
3 => '购物车',
|
||||
4 => '个人中心',
|
||||
5 => '支付成功',
|
||||
6 => '专题页面'
|
||||
];
|
||||
|
||||
/**
|
||||
* 状态
|
||||
* @var array
|
||||
*/
|
||||
public const STATUS = [
|
||||
0 => '关闭',
|
||||
1 => '开启'
|
||||
];
|
||||
|
||||
/**
|
||||
* 是否提前推送
|
||||
* @var array
|
||||
*/
|
||||
public const ADVANCE_PUSH = [
|
||||
0 => '否',
|
||||
1 => '是'
|
||||
];
|
||||
|
||||
/**
|
||||
* 是否永久
|
||||
* @var array
|
||||
*/
|
||||
public const IS_PERMANENT = [
|
||||
0 => '否',
|
||||
1 => '是'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_TYPE = [
|
||||
1 => '短信',
|
||||
2 => '公众号',
|
||||
3 => '弹框广告'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送状态
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_STATUS = [
|
||||
0 => '推送失败',
|
||||
1 => '推送成功'
|
||||
];
|
||||
|
||||
/**
|
||||
* 记录状态
|
||||
* @var array
|
||||
*/
|
||||
public const RECORD_STATUS = [
|
||||
0 => '未使用',
|
||||
1 => '已使用'
|
||||
];
|
||||
|
||||
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户标签属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 用户标签数组
|
||||
*/
|
||||
public function getUserLabelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置用户标签属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 用户标签数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setUserLabelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户自定义标签属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 用户自定义标签数组
|
||||
*/
|
||||
public function getUserTagAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
public function getUserLevelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
public function setUserLevelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置用户自定义标签属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 用户自定义标签数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setUserTagAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼品类型属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 礼品类型数组
|
||||
*/
|
||||
public function getGiftTypeAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置礼品类型属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 礼品类型数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setGiftTypeAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取优惠券ID属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 优惠券ID数组
|
||||
*/
|
||||
public function getCouponIdsAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置优惠券ID属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 优惠券ID数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setCouponIdsAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推送渠道属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 推送渠道数组
|
||||
*/
|
||||
public function getPushChannelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置推送渠道属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 推送渠道数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setPushChannelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推送周期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 推送周期数组
|
||||
*/
|
||||
public function getPushWeekDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置推送周期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 推送周期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setPushWeekDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取显示页面属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 显示页面数组
|
||||
*/
|
||||
public function getShowPageAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置展示页面属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 展示页面数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setShowPageAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信图片属性
|
||||
* 将JSON字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 微信图片数组
|
||||
*/
|
||||
public function getWechatImageAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = json_decode($value, true);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归将数组中的数字字符串转换为整型
|
||||
* @param array $array 需要处理的数组
|
||||
* @return array|int
|
||||
*/
|
||||
private function convertNumericStringsToInt($array)
|
||||
{
|
||||
if (!is_array($array)) {
|
||||
return is_numeric($array) ? (int)$array : $array;
|
||||
}
|
||||
|
||||
foreach ($array as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
$array[$key] = $this->convertNumericStringsToInt($value);
|
||||
} else if (is_numeric($value)) {
|
||||
$array[$key] = (int)$value;
|
||||
}
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置微信图片属性
|
||||
* 将数组转换为JSON字符串
|
||||
* @param array|string $value 微信图片数组或字符串
|
||||
* @return string JSON格式的字符串
|
||||
*/
|
||||
public function setWechatImageAttr($value)
|
||||
{
|
||||
return is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取话题ID属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 话题ID数组
|
||||
*/
|
||||
public function getTopicIdsAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置专题ID属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 专题ID数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setTopicIdsAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取活动月份日期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 活动月份日期数组
|
||||
*/
|
||||
public function getActivityMonthDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置活动月份日期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 活动月份日期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setActivityMonthDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取活动周日期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 活动周日期数组
|
||||
*/
|
||||
public function getActivityWeekDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置活动周日期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 活动周日期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setActivityWeekDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名称搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('name', '%' . $value . '%');
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据删除状态搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务类型搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchTaskTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('task_type', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据生日类型搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchBirthdayTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('birthday_type', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索有效期内的活动
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 是否在有效期内,true表示在有效期内,false表示不限制
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIsValidAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where(function ($query) {
|
||||
$query->where('is_permanent', 1)->whereOr(function ($query) {
|
||||
$now = time();
|
||||
$query->where('start_time', '<=', $now)
|
||||
->where('end_time', '>=', $now);
|
||||
});
|
||||
});
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function searchGiftTimeAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$time = explode('-', $value);
|
||||
$start_time = strtotime($time[0]);
|
||||
$end_time = strtotime($time[1]);
|
||||
$query->where('start_time', '<=', $start_time)
|
||||
->where('end_time', '>=', $end_time);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送渠道,多个用逗号分隔:1-短信,2-公众号,3-弹框广告',
|
||||
*
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return mixed
|
||||
* User: liusl
|
||||
* DateTime: 2025/8/12 15:34
|
||||
*/
|
||||
public function searchPushChannelsAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('push_channel', '%' . $value . '%');
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
99
app/model/activity/holiday/HolidayGiftPush.php
Normal file
99
app/model/activity/holiday/HolidayGiftPush.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼推送记录模型
|
||||
* Class HolidayGiftPush
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGiftPush extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift_push';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getPushTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getPushTypeNameAttr($value, $data)
|
||||
{
|
||||
return HolidayGift::$pushChannelMap[$data['push_type']] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusNameAttr($value, $data)
|
||||
{
|
||||
return $data['status'] ? '推送成功' : '推送失败';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname',
|
||||
'avatar',
|
||||
'phone'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联节日有礼表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function holidayGift()
|
||||
{
|
||||
return $this->hasOne(HolidayGift::class, 'id', 'gift_id')->bind([
|
||||
'gift_name' => 'name'
|
||||
]);
|
||||
}
|
||||
}
|
||||
222
app/model/activity/holiday/HolidayGiftRecord.php
Normal file
222
app/model/activity/holiday/HolidayGiftRecord.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼领取记录模型
|
||||
* Class HolidayGiftRecord
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGiftRecord extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift_record';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getReceiveTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getUseTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusNameAttr($value, $data)
|
||||
{
|
||||
return $data['status'] ? '已使用' : '未使用';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname',
|
||||
'avatar',
|
||||
'phone'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联节日有礼表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function holidayGift()
|
||||
{
|
||||
return $this->hasOne(HolidayGift::class, 'id', 'gift_id')->bind([
|
||||
'gift_name' => 'name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送内容类型获取器
|
||||
* @param $value
|
||||
* @return array
|
||||
*/
|
||||
public function getGiftTypeNameAttr($value, $data)
|
||||
{
|
||||
$giftTypes = explode(',', $data['gift_type']);
|
||||
$names = [];
|
||||
foreach ($giftTypes as $type) {
|
||||
if (isset(HolidayGift::$giftTypeMap[$type])) {
|
||||
$names[] = HolidayGift::$giftTypeMap[$type];
|
||||
}
|
||||
}
|
||||
return $names;
|
||||
}
|
||||
|
||||
/**
|
||||
* 节日有礼活动ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchReceiveTimeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$query->whereBetween('receive_time', $value);
|
||||
} elseif ($value !== '' && $value !== null) {
|
||||
$query->where('receive_time', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchAddTimeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$query->whereBetween('add_time', $value);
|
||||
} elseif ($value !== '' && $value !== null) {
|
||||
$query->where('add_time', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼物类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchGiftTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
if (is_array($value)) {
|
||||
$query->where(function ($q) use ($value) {
|
||||
foreach ($value as $type) {
|
||||
$q->whereOr('gift_type', 'like', '%' . $type . '%');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$query->where('gift_type', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间范围搜索器(通用)
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @param $field
|
||||
* @return void
|
||||
*/
|
||||
public function searchTimeRangeAttr($query, $value, $field = 'add_time')
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$startTime = is_numeric($value[0]) ? $value[0] : strtotime($value[0]);
|
||||
$endTime = is_numeric($value[1]) ? $value[1] : strtotime($value[1]);
|
||||
$query->whereBetween($field, [$startTime, $endTime]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器(搜索礼品内容)
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('gift_content', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
}
|
||||
257
app/model/activity/integral/StoreIntegral.php
Normal file
257
app/model/activity/integral/StoreIntegral.php
Normal file
@@ -0,0 +1,257 @@
|
||||
<?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\model\activity\integral;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 积分商品Model
|
||||
* Class StoreIntegral
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegral extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联商品表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->bind(['ot_price', 'product_price' => 'price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 4)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 积分商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHostAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_host', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('is_show', $value ?: 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
207
app/model/activity/integral/StoreIntegralOrder.php
Normal file
207
app/model/activity/integral/StoreIntegralOrder.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?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\model\activity\integral;
|
||||
|
||||
use app\model\product\sku\StoreProductVirtual;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单Model
|
||||
* Class StoreIntegralOrder
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegralOrder extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral_order';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* @var bool | string | int
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 创建时间修改器
|
||||
* @return int
|
||||
*/
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车信息获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getCartInfoAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname', 'phone', 'spread_uid'])->bind([
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone',
|
||||
'spread_uid' => 'spread_uid',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联卡密
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function virtual()
|
||||
{
|
||||
return $this->hasMany(StoreProductVirtual::class, 'order_id', 'order_id')->where('order_type', 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联订单记录
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function orderStatus()
|
||||
{
|
||||
return $this->hasMany(StoreIntegralOrderStatus::class, 'oid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 核销码搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVerifyCodeAttr($query, $value)
|
||||
{
|
||||
$query->where('verify_code', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单id或者用户名搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdRealNameAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id|real_name', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('uid', $value);
|
||||
else
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户来源
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChannelTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('channel_type', $value);
|
||||
}
|
||||
|
||||
}
|
||||
57
app/model/activity/integral/StoreIntegralOrderStatus.php
Normal file
57
app/model/activity/integral/StoreIntegralOrderStatus.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?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\model\activity\integral;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单修改状态记录Model
|
||||
* Class StoreIntegralOrderStatus
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegralOrderStatus extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral_order_status';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'change_time';
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 变动类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChangeTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('change_type', $value);
|
||||
}
|
||||
}
|
||||
83
app/model/activity/live/LiveAnchor.php
Normal file
83
app/model/activity/live/LiveAnchor.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?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\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 主播
|
||||
* Class LiveAnchor
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveAnchor extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_anchor';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
public function room()
|
||||
{
|
||||
return $this->hasOne(LiveRoom::class, 'anchor_wechat', 'wechat');
|
||||
}
|
||||
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|name|wechat|phone', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
}
|
||||
129
app/model/activity/live/LiveGoods.php
Normal file
129
app/model/activity/live/LiveGoods.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?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\model\activity\live;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 直播商品
|
||||
* Class LiveGoods
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveGoods extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_goods';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信商品id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchGoodIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('goods_id', $value);
|
||||
else
|
||||
$query->where('good_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|goods_id|product_id|name', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ($value) {
|
||||
case 1:
|
||||
$query->where('audit_status', 2);
|
||||
break;
|
||||
case -1:
|
||||
$query->where('audit_status', 3);
|
||||
break;
|
||||
case 0:
|
||||
$query->whereIn('audit_status', [0, 1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchLiveIdAttr($query, $value)
|
||||
{
|
||||
if ($value > 0) {
|
||||
$query->whereNotIn('id', function ($query) use ($value) {
|
||||
$query->name('live_room_goods')->where('live_room_id', $value)->field('live_goods_id')->select();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
155
app/model/activity/live/LiveRoom.php
Normal file
155
app/model/activity/live/LiveRoom.php
Normal file
@@ -0,0 +1,155 @@
|
||||
<?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\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 直播间
|
||||
* Class LiveRoom
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveRoom extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_room';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getStartTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getEndTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function roomGoods()
|
||||
{
|
||||
return $this->hasMany(LiveRoomGoods::class, 'live_room_id', 'id');
|
||||
}
|
||||
|
||||
public function anchor()
|
||||
{
|
||||
return $this->hasOne(LiveAnchor::class, 'wechat', 'anchor_wechat')->where('is_show', 1)->where('is_del', 0)->bind(['anchor_img' => 'cover_img']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播间id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRoomIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('room_id', $value);
|
||||
else
|
||||
$query->where('room_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|room_id|name|anchor_name|anchor_wechat', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播状态
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLiveStatusAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('live_status', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('live_status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ($value) {
|
||||
case 1:
|
||||
$query->whereIn('live_status', [101, 105, 106]);
|
||||
break;
|
||||
case 2:
|
||||
$query->whereIn('live_status', [102]);
|
||||
break;
|
||||
case 3:
|
||||
$query->whereIn('live_status', [103, 104, 107]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
38
app/model/activity/live/LiveRoomGoods.php
Normal file
38
app/model/activity/live/LiveRoomGoods.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?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\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 直播间关联商品
|
||||
* Class LiveRoomGoods
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveRoomGoods extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $name = 'live_room_goods';
|
||||
|
||||
public function goods()
|
||||
{
|
||||
return $this->hasOne(LiveGoods::class, 'id', 'live_goods_id');
|
||||
}
|
||||
|
||||
public function room()
|
||||
{
|
||||
return $this->hasOne(LiveRoom::class, 'id', 'live_room_id');
|
||||
}
|
||||
}
|
||||
152
app/model/activity/lottery/LuckLottery.php
Normal file
152
app/model/activity/lottery/LuckLottery.php
Normal file
@@ -0,0 +1,152 @@
|
||||
<?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\model\activity\lottery;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 抽奖活动
|
||||
* Class LuckLottery
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckLottery extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_lottery';
|
||||
|
||||
/**
|
||||
* 抽奖用户等级修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setUserLevelAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户等级获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getUserLevelAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户标签修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setUserLabelAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户标签获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getUserLabelAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联奖品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function prize()
|
||||
{
|
||||
return $this->hasMany(LuckPrize::class, 'lottery_id', 'id')->where('status', 1)->where('is_del', 0)->order('sort asc,id asc');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('id|name|desc|content', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖形式搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchFactorAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('factor', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
public function records()
|
||||
{
|
||||
return $this->hasMany(LuckLotteryRecord::class, 'lottery_id', 'id');
|
||||
}
|
||||
}
|
||||
218
app/model/activity/lottery/LuckLotteryRecord.php
Normal file
218
app/model/activity/lottery/LuckLotteryRecord.php
Normal file
@@ -0,0 +1,218 @@
|
||||
<?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\model\activity\lottery;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class LuckLotteryRecordDao
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckLotteryRecord extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_lottery_record';
|
||||
|
||||
/**
|
||||
* 收货信息修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setReceiveInfoAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 收货信息获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getReceiveInfoAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货信息修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliverInfoAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货信息获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliverInfoAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联抽奖
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function lottery()
|
||||
{
|
||||
return $this->hasOne(LuckLottery::class, 'id', 'lottery_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联奖品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function prize()
|
||||
{
|
||||
return $this->hasOne(LuckPrize::class, 'id', 'prize_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->field('uid,real_name,nickname,phone,delete_time');
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户uid搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where(function ($query1) use ($value) {
|
||||
$query1->where('id|uid|lottery_id|prize_id', 'LIKE', '%' . $value . '%')->whereOr('uid', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('user')->field('uid')->where('account|nickname|phone|real_name|uid', 'LIKE', "%$value%")->select();
|
||||
})->whereOr('lottery_id', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('luck_lottery')->field('id')->where('name|desc|content', 'LIKE', "%$value%")->select();
|
||||
})->whereOr('prize_id', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('luck_prize')->field('id')->where('name|prompt', 'LIKE', "%$value%")->select();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLotteryIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('lottery_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPrizeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('prize_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品不再这个类型中搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNotTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereNotIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', '<>', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否领取
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsReceiveAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_receive', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否发货处理
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDeliverAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_deliver', $value);
|
||||
}
|
||||
}
|
||||
90
app/model/activity/lottery/LuckPrize.php
Normal file
90
app/model/activity/lottery/LuckPrize.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?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\model\activity\lottery;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class LuckPrizeDao
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckPrize extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_prize';
|
||||
|
||||
|
||||
/**
|
||||
* 关联抽奖
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function lottery()
|
||||
{
|
||||
return $this->hasOne(LuckLottery::class, 'id', 'lottery_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLotteryIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('lottery_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
104
app/model/activity/newcomer/StoreNewcomer.php
Normal file
104
app/model/activity/newcomer/StoreNewcomer.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?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\model\activity\newcomer;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 新人礼商品Model
|
||||
* Class StoreNewcomer
|
||||
* @package app\model\activity\newcomer
|
||||
*/
|
||||
class StoreNewcomer extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_newcomer';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'product_id')->where('type', 1)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_show', 1)->where('is_del', 0)->where('is_verify', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'id')->where('type', 7);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
409
app/model/activity/promotions/StorePromotions.php
Normal file
409
app/model/activity/promotions/StorePromotions.php
Normal file
@@ -0,0 +1,409 @@
|
||||
<?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\model\activity\promotions;
|
||||
|
||||
use app\model\activity\coupon\StoreCouponIssue;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 促销活动活动
|
||||
* Class StorePromotions
|
||||
* @package app\model\activity\promotions
|
||||
*/
|
||||
class StorePromotions extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_promotions';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 优惠叠加
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setDiscountUseAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠叠加
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getDiscountUseAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 叠加使用
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getOverlayAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送优惠券
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveCouponIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveProductUniqueAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function products()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联优惠券
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function giveCoupon()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function giveProducts()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',3);
|
||||
}
|
||||
|
||||
/**
|
||||
* 阶梯优惠
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function promotions()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->order('id asc');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联品牌
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function brands()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 4);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联商品标签
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function productLabels()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* pid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* store_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('store_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_type搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('promotions_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('promotions_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_cate搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsCateAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('promotions_cate', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* name搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|name|desc', "%" . $value . "%");
|
||||
}
|
||||
|
||||
/**
|
||||
* threshold_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchThresholdTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('threshold_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* discount_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDiscountTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('discount_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* n_piece_n_discount搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNPieceNDiscountAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('n_piece_n_discount', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* product_partake_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductPartakeTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_partake_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('product_partake_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动事件搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return void
|
||||
*/
|
||||
public function searchActivityTimeAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
$startTime = $endTime = 0;
|
||||
if (is_array($value)) {
|
||||
$startTime = trim($value[0] ?? 0);
|
||||
$endTime = trim($value[1] ?? 0);
|
||||
} elseif (is_string($value)) {
|
||||
if (strstr($value, '-') !== false) {
|
||||
[$startTime, $endTime] = explode('-', $value);
|
||||
$startTime = trim($startTime);
|
||||
$endTime = trim($endTime);
|
||||
}
|
||||
}
|
||||
if ($startTime || $endTime) {
|
||||
try {
|
||||
date('Y-m-d', $startTime);
|
||||
} catch (\Throwable $e) {
|
||||
$startTime = strtotime($startTime);
|
||||
}
|
||||
try {
|
||||
date('Y-m-d', $endTime);
|
||||
} catch (\Throwable $e) {
|
||||
$endTime = strtotime($endTime);
|
||||
}
|
||||
if ($startTime == $endTime || $endTime == strtotime(date('Y-m-d', $endTime))) {
|
||||
$endTime = $endTime + 86399;
|
||||
}
|
||||
$query->where(function ($b) use($startTime, $endTime) {
|
||||
$b->whereBetween('start_time', [$startTime, $endTime])->whereOr(function ($q) use ($startTime, $endTime) {
|
||||
$q->whereBetween('stop_time', [$startTime, $endTime]);
|
||||
})->whereOr(function ($q) use ($startTime, $endTime) {
|
||||
$q->where('start_time', '<=', $startTime)->where('stop_time', '>=', $endTime);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
215
app/model/activity/promotions/StorePromotionsAuxiliary.php
Normal file
215
app/model/activity/promotions/StorePromotionsAuxiliary.php
Normal file
@@ -0,0 +1,215 @@
|
||||
<?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\model\activity\promotions;
|
||||
|
||||
|
||||
use app\model\activity\coupon\StoreCouponIssue;
|
||||
use app\model\product\brand\StoreBrand;use app\model\product\label\StoreProductLabel;use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠活动辅助表
|
||||
*/
|
||||
class StorePromotionsAuxiliary extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $key = 'id';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_promotions_auxiliary';
|
||||
|
||||
/**
|
||||
* 商品规格
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getUniqueAttr($value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) && (!isset($data['type']) || $data['type'] != 3) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联优惠券
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function coupon()
|
||||
{
|
||||
return $this->hasOne(StoreCouponIssue::class, 'id', 'coupon_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function productInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送sku一对一
|
||||
* @return \think\model\relation\hasOne
|
||||
*/
|
||||
public function giveAttrValue()
|
||||
{
|
||||
return $this->hasOne(StoreProductAttrValue::class, 'unique', 'unique')->where('type', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'product_id')->where('type', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品品牌
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function brandInfo()
|
||||
{
|
||||
return $this->hasOne(StoreBrand::class, 'id', 'brand_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品标签
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function productLabelInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProductLabel::class, 'id', 'store_label_id');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* product_partake_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductPartakeTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_partake_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('product_partake_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('promotions_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('promotions_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* coupon_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCouponIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('coupon_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('coupon_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* product_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_all搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsAllAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_all', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* brand_id
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBrandIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('brand_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('brand_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* store_label_id
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreLabelIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('store_label_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('store_label_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
347
app/model/activity/seckill/StoreSeckill.php
Normal file
347
app/model/activity/seckill/StoreSeckill.php
Normal file
@@ -0,0 +1,347 @@
|
||||
<?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\model\activity\seckill;
|
||||
|
||||
use app\model\activity\StoreActivity;
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 秒杀商品Model
|
||||
* Class StoreSeckill
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class StoreSeckill extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_seckill';
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?: [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 1)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_show', 1)->where('is_del', 0)->field(['(sales+ficti) as total', 'id'])->bind([
|
||||
'total' => 'total'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'id')->where('type', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联活动
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function activity()
|
||||
{
|
||||
return $this->hasOne(StoreActivity::class, 'id', 'activity_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联活动
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function activityName()
|
||||
{
|
||||
return $this->hasOne(StoreActivity::class, 'id', 'activity_id')->field(['id', 'name'])->bind([
|
||||
'activity_name' => 'name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchActivityIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('activity_id', $value);
|
||||
} else {
|
||||
$query->where('activity_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀时间段
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTimeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('find_in_set(' . $value . ',`time_id`)');
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_hot', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_show', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动有效时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSeckillTimeAttr($query, $value)
|
||||
{
|
||||
if ($value == 1) {
|
||||
$time = time();
|
||||
$query->where('start_time', '<=', $time)->where('stop_time', '>=', $time - 86400);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
100
app/model/activity/seckill/StoreSeckillTime.php
Normal file
100
app/model/activity/seckill/StoreSeckillTime.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?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\model\activity\seckill;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 秒杀时间Model
|
||||
* Class StoreSeckillTime
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class StoreSeckillTime extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_seckill_time';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
137
app/model/activity/video/Video.php
Normal file
137
app/model/activity/video/Video.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?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\model\activity\video;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 视频Model
|
||||
* Class StoreSeckill
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class Video extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'video';
|
||||
|
||||
/**
|
||||
* 关联商品ID
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品ID
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_show', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsRecommendAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_recommend', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否审核搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVerifyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_verify', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
}
|
||||
195
app/model/activity/video/VideoComment.php
Normal file
195
app/model/activity/video/VideoComment.php
Normal file
@@ -0,0 +1,195 @@
|
||||
<?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\model\activity\video;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 视频评价Model
|
||||
* Class VideoComment
|
||||
* @package app\model\activity\video
|
||||
*/
|
||||
class VideoComment extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'video_comment';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联视频
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function video()
|
||||
{
|
||||
return $this->hasOne(Video::class, 'id', 'video_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userVip()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,avatar,nickname,is_money_level')->bind(['is_money_level']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function reply()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->where('is_del', 0)->where('uid', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function replyContent()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->field('id,pid,content')->where('is_del', 0)->where('uid', 0)->bind(['reply' => 'content']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\hasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->where('is_del', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上级评论搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('pid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVideoIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('video_id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('video_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('uid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_reply搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsReplyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_reply', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
89
app/model/agent/AgentLevel.php
Normal file
89
app/model/agent/AgentLevel.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?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\model\agent;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 分销员等级
|
||||
* Class AgentLevel
|
||||
* @package app\model\agent
|
||||
*/
|
||||
class AgentLevel extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'agent_level';
|
||||
|
||||
/**
|
||||
* 关联等级任务
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function task()
|
||||
{
|
||||
return $this->hasMany(AgentLevelTask::class, 'level_id', 'id')->where('is_del', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|name', "%" . trim($value) . "%");
|
||||
}
|
||||
|
||||
/**
|
||||
* 等级搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchGradeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('grade', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
128
app/model/agent/AgentLevelTask.php
Normal file
128
app/model/agent/AgentLevelTask.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?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\model\agent;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 分销员等级任务
|
||||
* Class AgentLevelTask
|
||||
* @package app\model\agent
|
||||
*/
|
||||
class AgentLevelTask extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'agent_level_task';
|
||||
|
||||
/**
|
||||
* 关联分销员等级
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function level()
|
||||
{
|
||||
return $this->hasOne(AgentLevel::class, 'id', 'level_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联分销员等级
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function levelGrade()
|
||||
{
|
||||
return $this->hasOne(AgentLevel::class, 'id', 'level_id')->field('id,grade')->where('status', 1)->where('is_del', 0)->bind(['grade']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联任务完成记录
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function record()
|
||||
{
|
||||
return $this->hasMany(AgentLevelTaskRecord::class, 'task_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('id|name|desc', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 分销员等级搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLevelIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('Level_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('Level_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
104
app/model/agent/AgentLevelTaskRecord.php
Normal file
104
app/model/agent/AgentLevelTaskRecord.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?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\model\agent;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 分销员完成等级任务记录
|
||||
* Class AgentLevelTaskRecord
|
||||
* @package app\model\agent
|
||||
*/
|
||||
class AgentLevelTaskRecord extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'agent_level_task_record';
|
||||
|
||||
/**
|
||||
* 关联分销员等级
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function level()
|
||||
{
|
||||
return $this->hasOne(AgentLevel::class, 'id', 'level_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联分销员等级任务
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function task()
|
||||
{
|
||||
return $this->hasOne(AgentLevelTask::class, 'id', 'task_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分销员等级搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLevelIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('level_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 等级任务搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTaskIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('task_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('task_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
36
app/model/agent/DivisionApply.php
Normal file
36
app/model/agent/DivisionApply.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace app\model\agent;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
class DivisionApply extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'division_apply';
|
||||
|
||||
/**
|
||||
* 搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @author wuhaotian
|
||||
* @email 442384644@qq.com
|
||||
* @date 2024/8/21
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
23
app/model/agent/PromoterApply.php
Normal file
23
app/model/agent/PromoterApply.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace app\model\agent;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
class PromoterApply extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'promoter_apply';
|
||||
}
|
||||
123
app/model/article/Article.php
Normal file
123
app/model/article/Article.php
Normal file
@@ -0,0 +1,123 @@
|
||||
<?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\model\article;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 文章Model
|
||||
* Class Article
|
||||
* @package app\model\article
|
||||
*/
|
||||
class Article extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'article';
|
||||
|
||||
/**
|
||||
* 商品一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')
|
||||
->field('store_name,image,price,id,ot_price');
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章详情一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function contents()
|
||||
{
|
||||
return $this->hasOne(ArticleContent::class, 'nid', 'id')->bind(['content']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章详情一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function cateName()
|
||||
{
|
||||
return $this->hasOne(ArticleCategory::class, 'id', 'cid')->bind(['catename'=>'title']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章图片获取器
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getImageInputAttr($value)
|
||||
{
|
||||
return explode(',', $value) ?: [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章分类搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('cid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章标题搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 热门文章搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_hot', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播文章搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsBannerAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_banner', $value);
|
||||
}
|
||||
|
||||
}
|
||||
82
app/model/article/ArticleCategory.php
Normal file
82
app/model/article/ArticleCategory.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?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\model\article;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 文章分类Model
|
||||
* Class ArticleCategory
|
||||
* @package app\model\article
|
||||
*/
|
||||
class ArticleCategory extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'article_category';
|
||||
|
||||
/**
|
||||
* 分类状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchHiddenAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('hidden', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
31
app/model/article/ArticleContent.php
Normal file
31
app/model/article/ArticleContent.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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\model\article;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 文章详情Model
|
||||
* Class ArticleContent
|
||||
* @package app\model\article
|
||||
*/
|
||||
class ArticleContent extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'article_content';
|
||||
|
||||
}
|
||||
207
app/model/community/Community.php
Normal file
207
app/model/community/Community.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?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\model\community;
|
||||
|
||||
use app\services\community\CommunityRelevanceServices;
|
||||
use app\services\user\UserServices;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 社区内容Model
|
||||
* Class Community
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class Community extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community';
|
||||
|
||||
/**
|
||||
* 关联话题ID
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setTopicIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i', $value) : '';
|
||||
}
|
||||
public function getVerifyTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联话题ID
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getTopicIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
public function product()
|
||||
{
|
||||
return $this->hasMany(CommunityRelevance::class,'left_id','id')->where('type',CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT);
|
||||
}
|
||||
|
||||
public function topic()
|
||||
{
|
||||
return $this->hasMany(CommunityRelevance::class,'left_id','id')->where('type',CommunityRelevanceServices::TYPE_COMMUNITY_TOPIC);
|
||||
}
|
||||
public function relevance()
|
||||
{
|
||||
return $this->hasMany(CommunityRelevance::class,'left_id','id')->whereIn('type',[CommunityRelevanceServices::TYPE_COMMUNITY_PRODUCT,CommunityRelevanceServices::TYPE_COMMUNITY_TOPIC]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getSliderImageAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchContentTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('content_type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('content_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 推荐指数搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStarAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('star', $value ?? 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsRecommendAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_recommend', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否审核搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVerifyAttr($query, $value)
|
||||
{
|
||||
if ($value !== ''){
|
||||
$query->where('is_verify', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
}
|
||||
236
app/model/community/CommunityComment.php
Normal file
236
app/model/community/CommunityComment.php
Normal file
@@ -0,0 +1,236 @@
|
||||
<?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\model\community;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 社区评价Model
|
||||
* Class CommunityComment
|
||||
* @package app\model\activity\video
|
||||
*/
|
||||
class CommunityComment extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community_comment';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 社区内容评论关联社区内容
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function community()
|
||||
{
|
||||
return $this->hasOne(Community::class, 'id', 'community_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 社区内容评论关联社区内容
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function communityTitle()
|
||||
{
|
||||
return $this->hasOne(Community::class, 'id', 'community_id')->field('id,title')->bind(['title']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 社区内容评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 社区内容评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userVip()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,avatar,nickname,is_money_level')->bind(['is_money_level']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function reply()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->where('is_del', 0)->where('uid', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function replyContent()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->field('id,pid,content')->where('is_del', 0)->where('uid', 0)->bind(['reply' => 'content']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\hasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->where('is_del', 0);
|
||||
}
|
||||
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 社区内容ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCommunityIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('community_id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('community_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('uid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_reply搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsReplyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_reply', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 帖子评论
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/19 11:15
|
||||
*/
|
||||
public function searchReplyIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('reply_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('reply_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 评论回复
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/19 11:15
|
||||
*/
|
||||
public function searchCommentReplyIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('comment_reply_id', $value);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 是否审核
|
||||
// * @param $query
|
||||
// * @param $value
|
||||
// * @return void
|
||||
// * User: liusl
|
||||
// * DateTime: 2024/8/19 11:16
|
||||
// */
|
||||
// public function searchIsVerifyAttr($query, $value)
|
||||
// {
|
||||
// if ($value !== '') $query->where('is_verify', $value);
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
146
app/model/community/CommunityRecord.php
Normal file
146
app/model/community/CommunityRecord.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?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\model\community;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 社区记录Model
|
||||
* Class CommunityRecord
|
||||
* @package app\model\community
|
||||
*/
|
||||
class CommunityRecord extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community_record';
|
||||
|
||||
|
||||
/**
|
||||
* 关联用户搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联帖子搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPostIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('post_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联评论搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCommentIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('comment_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 评论类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCommentTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('comment_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchContentAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('content', "%{$value}%");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否已查看搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsViewedAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_viewed', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchAddTimeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('add_time', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
127
app/model/community/CommunityRelevance.php
Normal file
127
app/model/community/CommunityRelevance.php
Normal file
@@ -0,0 +1,127 @@
|
||||
<?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\model\community;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\user\User;
|
||||
use app\services\community\CommunityRelevanceServices;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 社区关联Model
|
||||
* Class CommunityTopic
|
||||
* @package app\model\community
|
||||
*/
|
||||
class CommunityRelevance extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community_relevance';
|
||||
|
||||
public function product()
|
||||
{
|
||||
$where = ['is_show' => 1, 'is_del' => 0, 'is_verify' => 1];
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'right_id')->where($where)->field('id,price,store_name,image,stock');
|
||||
}
|
||||
|
||||
public function topic()
|
||||
{
|
||||
$where = ['is_del' => 0, 'status' => 1];
|
||||
return $this->hasOne(CommunityTopic::class, 'id', 'right_id')->where($where)->field('id,name');
|
||||
}
|
||||
|
||||
public function community()
|
||||
{
|
||||
return $this->hasOne(Community::class, 'id', 'right_id');
|
||||
}
|
||||
|
||||
public function communityUser()
|
||||
{
|
||||
return $this->hasOne(CommunityUser::class, 'relation_id', 'right_id');
|
||||
}
|
||||
|
||||
public function communityFans()
|
||||
{
|
||||
return $this->hasOne(CommunityUser::class, 'relation_id', 'left_id');
|
||||
}
|
||||
/**
|
||||
* 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLeftIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) {
|
||||
$query->whereIn('left_id', $value);
|
||||
}
|
||||
} else {
|
||||
if ($value !== '') {
|
||||
$query->where('left_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/7 11:13
|
||||
*/
|
||||
public function searchRightIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) {
|
||||
$query->whereIn('right_id', $value);
|
||||
}
|
||||
} else {
|
||||
if ($value !== '') {
|
||||
$query->where('right_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/7 11:13
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) {
|
||||
$query->whereIn('type', $value);
|
||||
}
|
||||
} else {
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
118
app/model/community/CommunityTopic.php
Normal file
118
app/model/community/CommunityTopic.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?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\model\community;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 社区话题Model
|
||||
* Class CommunityTopic
|
||||
* @package app\model\community
|
||||
*/
|
||||
class CommunityTopic extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community_topic';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_recommend搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsRecommendAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_recommend', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('name', "%{$value}%");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
133
app/model/community/CommunityUser.php
Normal file
133
app/model/community/CommunityUser.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?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\model\community;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 社区用户Model
|
||||
* Class CommunityUser
|
||||
* @package app\model\community
|
||||
*/
|
||||
class CommunityUser extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'community_user';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户关联帖子
|
||||
* @return \think\model\relation\HasMany
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/26 15:44
|
||||
*/
|
||||
public function community()
|
||||
{
|
||||
$where = [
|
||||
'status' => 1,
|
||||
'is_del' => 0,
|
||||
'is_verify'=>1
|
||||
];
|
||||
return $this->hasMany(Community::class, 'relation_id', 'relation_id')->where($where)->field('id,content_type,image,relation_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/8/26 15:44
|
||||
*/
|
||||
public function searchNotRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereNotIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', '<>', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
112
app/model/diy/Diy.php
Normal file
112
app/model/diy/Diy.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?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\model\diy;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
class Diy extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'diy';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getUpdateTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 版本号搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVersionAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('version', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否使用搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('name', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
63
app/model/diy/PageCategory.php
Normal file
63
app/model/diy/PageCategory.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?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\model\diy;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
class PageCategory extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'page_category';
|
||||
|
||||
/**
|
||||
* 父类搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('pid', $value);
|
||||
} else {
|
||||
$query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 是否使用搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
60
app/model/diy/PageLink.php
Normal file
60
app/model/diy/PageLink.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?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\model\diy;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
class PageLink extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'page_link';
|
||||
|
||||
/**
|
||||
* 分类搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCateIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('cate_id', $value);
|
||||
} else {
|
||||
$query->where('cate_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否使用搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
}
|
||||
87
app/model/message/SystemMessage.php
Normal file
87
app/model/message/SystemMessage.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?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\model\message;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 站内信
|
||||
* Class SystemMessage
|
||||
* @package app\model\message
|
||||
*/
|
||||
class SystemMessage extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'system_message';
|
||||
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Look搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchLookAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('look', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
|
||||
}
|
||||
40
app/model/message/SystemNotification.php
Normal file
40
app/model/message/SystemNotification.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?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\model\message;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 消息设置模型
|
||||
* Class SystemNotification
|
||||
* @package app\model\message
|
||||
*/
|
||||
class SystemNotification extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'system_notification';
|
||||
|
||||
|
||||
}
|
||||
91
app/model/message/TemplateMessage.php
Normal file
91
app/model/message/TemplateMessage.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?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\model\message;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 消息模板Model
|
||||
* Class TemplateMessage
|
||||
* @package app\model\message
|
||||
*/
|
||||
class TemplateMessage extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'template_message';
|
||||
|
||||
/**
|
||||
* notification_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNotificationIdAttr($query, $value)
|
||||
{
|
||||
$query->whereFindInSet('notification_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 模板ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTempIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('temp_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (in_array($value, [0, 1])) {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('name', 'LIKE', "%$value%");
|
||||
}
|
||||
}
|
||||
}
|
||||
160
app/model/message/service/StoreService.php
Normal file
160
app/model/message/service/StoreService.php
Normal file
@@ -0,0 +1,160 @@
|
||||
<?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\model\message\service;
|
||||
|
||||
|
||||
use app\model\user\User;
|
||||
use app\model\work\WorkMember;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 客服
|
||||
* Class StoreService
|
||||
* @package app\model\message\service
|
||||
*/
|
||||
class StoreService extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_service';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function workMember()
|
||||
{
|
||||
return $this->hasOne(WorkMember::class, 'uid', 'uid');
|
||||
}
|
||||
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', $value);
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户名一对多关联
|
||||
* @return mixed
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname'])->bind([
|
||||
'nickname' => 'nickname'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* uid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
$query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchAccountStatusAttr($query, $value)
|
||||
{
|
||||
$query->where('account_status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* account搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchAccountAttr($query, $value)
|
||||
{
|
||||
$query->where('account', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* phone搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPhoneAttr($query, $value)
|
||||
{
|
||||
$query->where('phone', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* customer
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCustomerAttr($query, $value)
|
||||
{
|
||||
$query->where('customer', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户昵称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNicknameAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereLike('nickname', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOnlineAttr($query, $value)
|
||||
{
|
||||
$query->where('online', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户uid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNoUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereNotIn('uid', $value);
|
||||
}
|
||||
}
|
||||
58
app/model/message/service/StoreServiceFeedback.php
Normal file
58
app/model/message/service/StoreServiceFeedback.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?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\model\message\service;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 客服留言反馈
|
||||
* Class StoreServiceFeedback
|
||||
* @package app\model\message\service
|
||||
*/
|
||||
class StoreServiceFeedback extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_service_feedback';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 标题搜索
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTitleAttr($query, $value)
|
||||
{
|
||||
$value && $query->whereLike('rela_name|phone|content|uid', "%" . $value . "%");
|
||||
}
|
||||
|
||||
}
|
||||
106
app/model/message/service/StoreServiceLog.php
Normal file
106
app/model/message/service/StoreServiceLog.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?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\model\message\service;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 客服聊天记录
|
||||
* Class StoreServiceLog
|
||||
* @package app\model\message\service
|
||||
*/
|
||||
class StoreServiceLog extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_service_log';
|
||||
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* @return mixed
|
||||
*/
|
||||
public function service()
|
||||
{
|
||||
return $this->hasOne(StoreService::class, 'uid', 'uid')->field(['uid', 'nickname', 'avatar'])->bind([
|
||||
'nickname' => 'nickname',
|
||||
'avatar' => 'avatar'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* @return mixed
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname', 'avatar'])->bind([
|
||||
'nickname' => 'nickname',
|
||||
'avatar' => 'avatar'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* uid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
$query->where('uid|to_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 聊天记录搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChatAttr($query, $value)
|
||||
{
|
||||
$query->whereIn('uid', $value)->whereIn('to_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsTouristAttr($query, $value)
|
||||
{
|
||||
$query->where('is_tourist', $value);
|
||||
}
|
||||
}
|
||||
106
app/model/message/service/StoreServiceRecord.php
Normal file
106
app/model/message/service/StoreServiceRecord.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?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\model\message\service;
|
||||
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 客服聊天用户记录
|
||||
* Class StoreServiceRecord
|
||||
* @package app\model\message\service
|
||||
*/
|
||||
class StoreServiceRecord extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $name = 'store_service_record';
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* @var bool | string | int
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 用户关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'to_uid')->field(['nickname', 'uid', 'avatar'])->bind([
|
||||
'wx_nickname' => 'nickname',
|
||||
'wx_avatar' => 'avatar',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 客服用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function service()
|
||||
{
|
||||
return $this->hasOne(StoreService::class, 'uid', 'to_uid')->field(['nickname', 'uid', 'avatar'])->bind([
|
||||
'kefu_nickname' => 'nickname',
|
||||
'kefu_avatar' => 'avatar',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送者id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUserIdAttr($query, $value)
|
||||
{
|
||||
$query->where('user_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 送达人uid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchToUidAttr($query, $value)
|
||||
{
|
||||
$query->where('to_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户昵称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTitleAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->whereIn('to_uid', function ($query) use ($value) {
|
||||
$query->name('user')->whereLike('nickname|uid', '%' . $value . '%')->field('uid');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否游客
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsTouristAttr($query, $value)
|
||||
{
|
||||
$query->where('is_tourist', $value);
|
||||
}
|
||||
}
|
||||
95
app/model/message/service/StoreServiceSpeechcraft.php
Normal file
95
app/model/message/service/StoreServiceSpeechcraft.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?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\model\message\service;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 客服话术
|
||||
* Class StoreServiceSpeechcraft
|
||||
* @package app\model\message\service
|
||||
*/
|
||||
class StoreServiceSpeechcraft extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_service_speechcraft';
|
||||
|
||||
/**
|
||||
* 主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 时间格式化
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value, $data)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 话术搜索
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTitleAttr($query, $value)
|
||||
{
|
||||
$query->whereLike('title', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 归属客服搜索
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKefuIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('kefu_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类搜索
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCateIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('cate_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchMessageAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('message', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
130
app/model/message/sms/SmsRecord.php
Normal file
130
app/model/message/sms/SmsRecord.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?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\model\message\sms;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 短信记录Model
|
||||
* Class SmsRecord
|
||||
* @package app\model\message\sms
|
||||
*/
|
||||
class SmsRecord extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'sms_record';
|
||||
|
||||
/**
|
||||
* 短信状态
|
||||
* @var array
|
||||
*/
|
||||
protected $resultcode = ['100' => '成功', '130' => '失败', '131' => '空号', '132' => '停机', '133' => '关机', '134' => '无状态'];
|
||||
|
||||
/**
|
||||
* 时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态码获取器
|
||||
* @param $value
|
||||
* @return mixed|string
|
||||
*/
|
||||
protected function getResultcodeAttr($value)
|
||||
{
|
||||
return $this->resultcode[$value] ?? '无状态';
|
||||
}
|
||||
|
||||
/**
|
||||
* 电话号码搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchPhoneAttr($query, $value)
|
||||
{
|
||||
$query->where('phone', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 短信状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchResultcodeAttr($query, $value)
|
||||
{
|
||||
$query->where('resultcode', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* uid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ip
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchAddIpAttr($query, $value)
|
||||
{
|
||||
$query->where('add_ip', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* resultcode
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('resultcode', $value)->when(in_array('134', $value), function ($query) {
|
||||
$query->whereOr('resultcode', NULL);
|
||||
});
|
||||
} else {
|
||||
$query->where('resultcode', $value)->when($value == 134, function ($query) {
|
||||
$query->whereOr('resultcode', NULL);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
230
app/model/order/OtherOrder.php
Normal file
230
app/model/order/OtherOrder.php
Normal file
@@ -0,0 +1,230 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\model\store\SystemStoreStaff;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
class OtherOrder extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'other_order';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
// protected $hidden = ['add_time', 'is_del', 'uid'];
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname', 'avatar', 'phone', 'spread_uid', 'overdue_time', 'now_money', 'integral']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'avatar', 'nickname', 'phone'])->bind([
|
||||
'avatar' => 'avatar',
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return model\relation\HasOne
|
||||
*/
|
||||
public function staff()
|
||||
{
|
||||
return $this->hasOne(SystemStoreStaff::class, 'id', 'staff_id')
|
||||
->field(['id', 'uid', 'store_id', 'staff_name'])
|
||||
->bind([
|
||||
'staff_uid' => 'uid',
|
||||
'staff_store_id' => 'store_id',
|
||||
'staff_name' => 'staff_name'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {//所有门店
|
||||
$query->where('store_id', '>', 0);
|
||||
} else {
|
||||
$query->where('store_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店店员ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStaffIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('staff_id', $value);
|
||||
} else {
|
||||
$query->where('staff_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单类型
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->where('type', 'in', $value);
|
||||
} else {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchPaidAttr($query, $value)
|
||||
{
|
||||
$query->where('paid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付方式不属于
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPayTypeNoAttr($query, $value)
|
||||
{
|
||||
$query->where('pay_type', '<>', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户来源
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChannelTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('channel_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
if ($value != "") {
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员类型
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchMemberTypeAttr($query, $value)
|
||||
{
|
||||
if ($value && $value != 'card' && $value != 'free') {
|
||||
if ($value == -1){
|
||||
$query->where('member_type', "<>" , 0);
|
||||
}else{
|
||||
$query->where('member_type', $value);
|
||||
}
|
||||
} elseif ($value == 'card') {
|
||||
$query->where('member_type', 'free')->where('code', '<>', '');
|
||||
} elseif ($value == 'free') {
|
||||
$query->where('member_type', 'free')->where('code', '');
|
||||
} elseif ($value == 'admin') {
|
||||
$query->where('member_type', 'admin')->where('code', '');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPayTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if ($value == "free") {
|
||||
$query->where(function ($query) {
|
||||
$query->where('type', 'in', [0, 2, 4])->whereOr(function ($query) {
|
||||
$query->where(['type' => 1, 'is_free' => 1]);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
$query->where('pay_type', $value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchAddTimeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->whereTime('add_time', 'between', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('uid', 'in', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
57
app/model/order/OtherOrderStatus.php
Normal file
57
app/model/order/OtherOrderStatus.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?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\model\order;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单修改状态记录Model
|
||||
* Class OtherOrderStatus
|
||||
* @package app\model\order
|
||||
*/
|
||||
class OtherOrderStatus extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'other_order_status';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'change_time';
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 变动类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChangeTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('change_type', $value);
|
||||
}
|
||||
}
|
||||
271
app/model/order/StoreCart.php
Normal file
271
app/model/order/StoreCart.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?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\model\order;
|
||||
|
||||
use app\model\product\branch\StoreBranchProductAttrValue;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 购物车Model
|
||||
* Class StoreCart
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreCart extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_cart';
|
||||
|
||||
/**
|
||||
* 自动添加字段
|
||||
* @var string[]
|
||||
*/
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname' => 'nickname',
|
||||
'avatar' => 'avatar'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间修改器
|
||||
* @return int
|
||||
*/
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 购物车关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function productInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 购物车关联商品商品规格
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function attrInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProductAttrValue::class, 'unique', 'product_attr_unique');
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店规格表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeBranchProductAttr()
|
||||
{
|
||||
return $this->hasOne(StoreBranchProductAttrValue::class, 'unique', 'product_attr_unique');
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCartIdsAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否支付
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsPayAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_pay', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否立即支付
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsNewAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_new', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户购物车
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTouristUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('tourist_uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductTypeAttr($query, $value, $data)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_type', $value);
|
||||
} else {
|
||||
$query->where('product_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品规格唯一值搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductAttrUniqueAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('product_attr_unique', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* store_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('store_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 店员搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStaffIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('staff_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
public function searchIsChannelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_channel', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对多关联
|
||||
* 商品关联优惠卷模板id
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasMany(StoreProduct::class, 'id', 'product_id');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车是否赠送搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsSendGiftAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_send_gift', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
155
app/model/order/StoreDeliveryOrder.php
Normal file
155
app/model/order/StoreDeliveryOrder.php
Normal file
@@ -0,0 +1,155 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\model\store\SystemStore;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
|
||||
class StoreDeliveryOrder extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_delivery_order';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function orderInfo()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'oid');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeInfo()
|
||||
{
|
||||
return $this->hasOne(SystemStore::class, 'id', 'relation_id')->where(['is_show' => 1, 'is_del' => 0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
$query->where('');
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('oid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('oid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('uid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 平台类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchStationTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('station_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('status', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
84
app/model/order/StoreHangOrder.php
Normal file
84
app/model/order/StoreHangOrder.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
|
||||
/**
|
||||
* Class StoreHangOrder
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreHangOrder extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 表名
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_hang_order';
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname' => 'nickname',
|
||||
'avatar' => 'avatar'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
$query->where('store_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStaffIdAttr($query, $value)
|
||||
{
|
||||
$query->where('staff_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsCheckAttr($query, $value)
|
||||
{
|
||||
$query->where('is_check', $value);
|
||||
}
|
||||
|
||||
}
|
||||
802
app/model/order/StoreOrder.php
Normal file
802
app/model/order/StoreOrder.php
Normal file
@@ -0,0 +1,802 @@
|
||||
<?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\model\order;
|
||||
|
||||
use app\model\activity\combination\StorePink;
|
||||
use app\model\product\sku\StoreProductVirtual;
|
||||
use app\model\store\DeliveryService;
|
||||
use app\model\store\SystemStore;
|
||||
use app\model\store\SystemStoreStaff;
|
||||
use app\model\supplier\SystemSupplier;
|
||||
use app\model\user\User;
|
||||
use app\model\user\UserBrokerage;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单Model
|
||||
* Class StoreOrder
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrder extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 支付类型
|
||||
* @var string[]
|
||||
*/
|
||||
protected $pay_type = [
|
||||
1 => 'weixin',
|
||||
2 => 'yue',
|
||||
3 => 'offline',
|
||||
4 => 'alipay',
|
||||
5 => 'integral'
|
||||
];
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* @var bool | string | int
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 创建时间修改器
|
||||
* @return int
|
||||
*/
|
||||
protected function setAddTimeAttr($time = 0)
|
||||
{
|
||||
if ($time) return $time;
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义表单信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function setCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义表单信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠活动赠送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getPromotionsGiveAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠活动赠送优惠券
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getGiveCouponAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取卡密信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getVirtualInfoAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对多关联查询子订单
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function split()
|
||||
{
|
||||
return $this->hasMany(StoreOrder::class, 'pid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->field(['uid', 'avatar', 'nickname', 'phone', 'now_money', 'integral', 'delete_time'])->bind([
|
||||
'avatar' => 'avatar',
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone',
|
||||
'now_money' => 'now_money',
|
||||
'integral' => 'integral',
|
||||
'delete_time' => 'delete_time'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对多关联退款订单
|
||||
* @return \think\model\relation\hasMany
|
||||
*/
|
||||
public function refund()
|
||||
{
|
||||
return $this->hasMany(StoreOrderRefund::class, 'store_order_id', 'id')->where('refund_type', '<>', 3)->where('is_cancel', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对多关联订单优惠详情
|
||||
* @return \think\model\relation\hasMany
|
||||
*/
|
||||
public function promotions()
|
||||
{
|
||||
return $this->hasMany(StoreOrderPromotions::class, 'oid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联上级用户信息
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function spread()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'spread_uid')->field(['uid', 'nickname'])->bind([
|
||||
'spread_nickname' => 'nickname'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一拼团获取状态
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function pink()
|
||||
{
|
||||
return $this->hasOne(StorePink::class, 'id', 'pink_id')->field(['id', 'order_id_key', 'status'])->bind([
|
||||
'pinkStatus' => 'status'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function store()
|
||||
{
|
||||
return $this->hasOne(SystemStore::class, 'id', 'store_id')->hidden(['bank_code,bank_address', 'alipay_account', 'alipay_qrcode_url', 'wechat', 'wechat_qrcode_url']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeName()
|
||||
{
|
||||
return $this->hasOne(SystemStore::class, 'id', 'store_id')->field('id,name')->bind(['store_name' => 'name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关联门店店员
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeStaff()
|
||||
{
|
||||
return $this->hasOne(SystemStoreStaff::class, 'id', 'staff_id')->field(['id', 'uid', 'store_id', 'staff_name'])->bind([
|
||||
'staff_uid' => 'uid',
|
||||
'staff_store_id' => 'store_id',
|
||||
'clerk_name' => 'staff_name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关联店员
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function staff()
|
||||
{
|
||||
return $this->hasOne(SystemStoreStaff::class, 'uid', 'clerk_id')->field(['id', 'uid', 'store_id', 'staff_name'])->bind([
|
||||
'staff_uid' => 'uid',
|
||||
'staff_store_id' => 'store_id',
|
||||
'clerk_name' => 'staff_name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 店员关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function staffUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'staff_uid')->field(['uid', 'nickname'])->bind([
|
||||
'clerk_name' => 'nickname'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联配送员
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function deliveryService()
|
||||
{
|
||||
return $this->hasOne(DeliveryService::class, 'uid', 'delivery_uid')->field(['uid', 'nickname'])->bind([
|
||||
'delivery_name' => 'nickname'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联订单发票
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function invoice()
|
||||
{
|
||||
return $this->hasOne(StoreOrderInvoice::class, 'order_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联分佣表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function brokerage()
|
||||
{
|
||||
return $this->hasOne(UserBrokerage::class, 'link_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联卡密
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function virtual()
|
||||
{
|
||||
return $this->hasMany(StoreProductVirtual::class, 'order_id', 'order_id')->where('order_type', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联订单记录
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function orderStatus()
|
||||
{
|
||||
return $this->hasMany(StoreOrderStatus::class, 'oid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联配送订单记录
|
||||
* @return \think\model\relation\hasOne
|
||||
*/
|
||||
public function deliveryOrder()
|
||||
{
|
||||
return $this->hasOne(StoreDeliveryOrder::class, 'oid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车ID修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setCartIdAttr($value)
|
||||
{
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCartIdAttr($value, $data)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 活动ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchActivityIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('activity_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 父类ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if ($value === 0) {
|
||||
$query->where('pid', '>=', 0);
|
||||
} else {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('pid', $value);
|
||||
} else {
|
||||
$query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 没拆分订单 与子订单(0:为拆分订单-1:已拆分主订单 >0 :拆分后子订单)
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNotPidAttr($query, $value)
|
||||
{
|
||||
$query->where('pid', '<>', -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else if ($value !== '') {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付方式搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
// public function searchPayTypeAttr($query, $value)
|
||||
// {
|
||||
// if (is_array($value)) {
|
||||
// $query->whereIn('pay_type', $value);
|
||||
// } else {
|
||||
// if ($value !== '') {
|
||||
// $pay_type = $this->pay_type;
|
||||
// if (in_array($value, array_keys($pay_type)) && $type = $pay_type[$value] ?? '') {
|
||||
// $query->where('pay_type', $type);
|
||||
// } else {
|
||||
// $query->where('pay_type', $value);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 不等于余额支付
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPayTypeNoAttr($query, $value)
|
||||
{
|
||||
$query->where('pay_type', "<>", $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单id或者用户名搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdRealNameAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id|real_name', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('uid|receive_gift_uid', $value);
|
||||
else
|
||||
$query->where('uid|receive_gift_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPaidAttr($query, $value)
|
||||
{
|
||||
if (in_array($value, [0, 1])) {
|
||||
$query->where('paid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchRefundStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('refund_status', $value);
|
||||
} else {
|
||||
$query->where('refund_status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchRefundStatusInAttr($query, $value)
|
||||
{
|
||||
$query->whereIn('refund_status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是拼团订单
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPinkIdAttr($query, $value)
|
||||
{
|
||||
$query->where('pink_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 核销码搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVerifyCodeAttr($query, $value)
|
||||
{
|
||||
$query->where('verify_code', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== ''){
|
||||
if(is_array($value)){
|
||||
$query->whereIn('is_del', $value);
|
||||
}else{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsSystemDelAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('is_system_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款状态搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRefundTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('refund_type', $value);
|
||||
} else {
|
||||
if ($value == -1) {
|
||||
$query->where('refund_type', 'in', '0,3');
|
||||
} else {
|
||||
if ($value == 0 || $value == '') {
|
||||
$query->where('refund_type', '<>', 0);
|
||||
} else {
|
||||
$query->where('refund_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户来源
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChannelTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('channel_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRefundIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('id', 'in', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上级|上上级推广人
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSpreadOrUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('spread_uid|spread_two_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上级|上上级推广人|事业部|代理商|员工
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDivisionSpreadAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('spread_uid|spread_two_uid|division_id|division_agent_id|division_staff_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上级推广人
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSpreadUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('spread_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上上级推广人
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSpreadTwoUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('spread_two_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {//所有门店
|
||||
$query->where('store_id', '>', 0);
|
||||
} else {
|
||||
$query->where('store_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店店员ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStaffIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('staff_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送方式
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchShippingTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->where('shipping_type', $value);
|
||||
} else {
|
||||
$query->where('shipping_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送员UID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDeliveryUidAttr($query, $value)
|
||||
{
|
||||
$query->where('delivery_uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送类型
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDeliveryTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('delivery_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {
|
||||
$query->where('supplier_id', '>', 0);
|
||||
} else {
|
||||
$query->where('supplier_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchRefundReasonTimeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereBetween('refund_reason_time', [strtotime($value[0]), strtotime($value[1]) + 86400]);
|
||||
} else {
|
||||
$query->where('refund_reason_time', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付渠道
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsChannelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_channel', $value);
|
||||
}
|
||||
|
||||
public function searchChannelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('channel', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联供应商
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function supplier()
|
||||
{
|
||||
return $this->hasOne(SystemSupplier::class, 'id', 'supplier_id')->field(['id', 'supplier_name'])->bind([
|
||||
'supplier_name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联供应商
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function supplierInfo()
|
||||
{
|
||||
return $this->hasOne(SystemSupplier::class, 'id', 'supplier_id')->field(['id', 'supplier_name', 'name', 'phone', 'email']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商统计
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('supplier_id', '>', 0);
|
||||
}
|
||||
|
||||
public function searchDivisionIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== 0) {
|
||||
if ($value == -1) {
|
||||
$query->where('division_id', '>', $value);
|
||||
} else {
|
||||
$query->where('division_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function searchDivisionAgentIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== 0) {
|
||||
if ($value == -1) {
|
||||
$query->where('division_agent_id', '>', $value);
|
||||
} else {
|
||||
$query->where('division_agent_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchDivisionStaffIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== 0) {
|
||||
if ($value == -1) {
|
||||
$query->where('division_staff_id', '>', $value);
|
||||
} else {
|
||||
$query->where('division_staff_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchDivisionTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== 0) $query->where('division_id|division_agent_id|division_staff_id', '>', 0);
|
||||
}
|
||||
}
|
||||
188
app/model/order/StoreOrderCartInfo.php
Normal file
188
app/model/order/StoreOrderCartInfo.php
Normal file
@@ -0,0 +1,188 @@
|
||||
<?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\model\order;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单记录Model
|
||||
* Class StoreOrderCartInfo
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderCartInfo extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order_cart_info';
|
||||
|
||||
/**
|
||||
* 购物车信息获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getCartInfoAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('oid', $value);
|
||||
} else {
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('uid', $value);
|
||||
} else {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* product_id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠活动ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->where(function($q) use ($value) {
|
||||
foreach ($value as $key => $v) {
|
||||
$q->whereOr(function ($c) use ($v) {
|
||||
$c->whereFindInSet('promotions_id', $v);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$query->whereFindInSet('promotions_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCartIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('cart_id', $value);
|
||||
} else {
|
||||
$query->where('cart_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 原购物车ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOldCartIdAttr($query, $value, $data)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('old_cart_id', $value);
|
||||
} else {
|
||||
$query->where('old_cart_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拆分状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchSplitStatusAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('split_status', $value);
|
||||
} else {
|
||||
if (in_array($value, [0, 1, 2])) {
|
||||
$query->where('split_status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否赠送搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsGiftAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_gift', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否核销搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsWriteoffAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_writeoff', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
71
app/model/order/StoreOrderEconomize.php
Normal file
71
app/model/order/StoreOrderEconomize.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?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\model\order;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class StoreOrder
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderEconomize extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order_economize';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* @var bool | string | int
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname', 'phone', 'spread_uid'])->bind([
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单搜索
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
193
app/model/order/StoreOrderInvoice.php
Normal file
193
app/model/order/StoreOrderInvoice.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\model\user\UserInvoice;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* Class StoreOrderInvoice
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderInvoice extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'store_order_invoice';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return is_string($value) ? $value : date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 发票信息获取器
|
||||
* @param mixed $value 原始值
|
||||
* @return array
|
||||
*/
|
||||
public function getInfoAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return json_decode($value, true);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联订单表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function order()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'order_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户发票表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function invoiceInfo()
|
||||
{
|
||||
return $this->hasOne(UserInvoice::class, 'id', 'invoice_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 发票类型搜索器
|
||||
* @param \think\db\Query $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
*/
|
||||
public function searchCategoryAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('category', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('order_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchInvoiceIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('invoice_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchHeaderTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('header_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchInvoiceTimeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereTime('invoice_time', 'between', $value);
|
||||
} else {
|
||||
$query->where('invoice_time', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchIsPayAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_pay', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchIsRefundAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_refund', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
104
app/model/order/StoreOrderPromotions.php
Normal file
104
app/model/order/StoreOrderPromotions.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?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\model\order;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use app\model\activity\promotions\StorePromotions;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单优惠活动记录Model
|
||||
* Class SoreOrderPromotions
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderPromotions extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order_promotions';
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联优惠活动
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function promotions()
|
||||
{
|
||||
return $this->hasOne(StorePromotions::class, 'id', 'promotions_id')->field('id,name,title,desc,promotions_type')->bind([
|
||||
'promotions_type' => 'promotions_type',
|
||||
'name' => 'name',
|
||||
'title' => 'title',
|
||||
'desc' => 'desc'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('oid', $value);
|
||||
} else {
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('uid', $value);
|
||||
} else {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠活动ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('promotions_id', $value);
|
||||
} else {
|
||||
$query->where('promotions_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
231
app/model/order/StoreOrderRefund.php
Normal file
231
app/model/order/StoreOrderRefund.php
Normal file
@@ -0,0 +1,231 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\model\supplier\SystemSupplier;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* Class StoreOrderRefund
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderRefund extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'store_order_refund';
|
||||
|
||||
/**
|
||||
* 购物车信息获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getCartInfoAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getRefundImgAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getRefundGoodsImgAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return StoreOrderRefund|\think\model\relation\HasOne
|
||||
*/
|
||||
public function order()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'store_order_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单配送类型
|
||||
* @return StoreOrderRefund|\think\model\relation\HasOne
|
||||
*/
|
||||
public function orderShippingType()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'store_order_id')->field('id,shipping_type')->bind(['shipping_type']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->field(['uid', 'avatar', 'nickname', 'phone', 'now_money', 'integral', 'delete_time'])->bind([
|
||||
'avatar' => 'avatar',
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone',
|
||||
'now_money' => 'now_money',
|
||||
'integral' => 'integral',
|
||||
'delete_time' => 'delete_time',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联订单表
|
||||
* @return StoreOrderRefund|\think\model\relation\HasOne
|
||||
*/
|
||||
public function orderData()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'store_order_id')->field('id, order_id, pay_type, paid, real_name,user_phone, user_address, pay_time')
|
||||
->bind([
|
||||
'store_order_sn' => 'order_id',
|
||||
'pay_type',
|
||||
'paid',
|
||||
'real_name',
|
||||
'user_phone',
|
||||
'user_address',
|
||||
'pay_uid',
|
||||
'pay_time'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreOrderIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('store_order_id', $value);
|
||||
} else {
|
||||
$query->where('store_order_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {//所有门店
|
||||
$query->where('store_id', '>', 0);
|
||||
} else {
|
||||
$query->where('store_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('uid', $value);
|
||||
} else {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_cancel
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsCancelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('is_cancel', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 退款快递单号搜索器
|
||||
* @param \think\db\Query $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
*/
|
||||
public function searchRefundExpressAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('refund_express', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && !is_null($value)) $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商ID
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {
|
||||
$query->where('supplier_id', '>', 0);
|
||||
} else {
|
||||
$query->where('supplier_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联供应商
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function supplier()
|
||||
{
|
||||
return $this->hasOne(SystemSupplier::class, 'id', 'supplier_id')->field(['id', 'supplier_name'])->bind([
|
||||
'supplier_name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 渠道搜索器
|
||||
* @param \think\db\Query $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
*/
|
||||
public function searchChannelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('channel', $value);
|
||||
}
|
||||
}
|
||||
57
app/model/order/StoreOrderStatus.php
Normal file
57
app/model/order/StoreOrderStatus.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?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\model\order;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单修改状态记录Model
|
||||
* Class StoreOrderStatus
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderStatus extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order_status';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'change_time';
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 变动类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChangeTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('change_type', $value);
|
||||
}
|
||||
}
|
||||
199
app/model/order/StoreOrderWriteoff.php
Normal file
199
app/model/order/StoreOrderWriteoff.php
Normal file
@@ -0,0 +1,199 @@
|
||||
<?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\model\order;
|
||||
|
||||
use app\model\store\SystemStoreStaff;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单核销记录Model
|
||||
* Class StoreOrderWriteoff
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StoreOrderWriteoff extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_order_writeoff';
|
||||
|
||||
|
||||
/**
|
||||
* 获取领取人名称头像
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar,phone')->bind(['nickname', 'avatar', 'phone']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单信息
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function orderInfo()
|
||||
{
|
||||
return $this->hasOne(StoreOrder::class, 'id', 'oid');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单商品信息
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function cartInfo()
|
||||
{
|
||||
return $this->hasOne(StoreOrderCartInfo::class, 'id', 'order_cart_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 店员信息
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function staffInfo()
|
||||
{
|
||||
return $this->hasOne(SystemStoreStaff::class, 'id', 'staff_id')->field('id,store_id,staff_name')->bind(['staff_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('oid', $value);
|
||||
} else {
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('uid', $value);
|
||||
} else {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* product_id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderCartIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('order_cart_id', $value);
|
||||
} else {
|
||||
$query->where('order_cart_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* staff_id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStaffIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('staff_id', $value);
|
||||
} else {
|
||||
$query->where('staff_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品类型搜索器(product_type)
|
||||
* @param \think\Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
*/
|
||||
public function searchProductTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_type', $value);
|
||||
} else {
|
||||
$query->where('product_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
60
app/model/order/StorePink.php
Normal file
60
app/model/order/StorePink.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?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\model\order;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
|
||||
/**
|
||||
* Class StorePink
|
||||
* @package app\model\order
|
||||
*/
|
||||
class StorePink extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_pink';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* 创建时间修改器
|
||||
* @return int
|
||||
*/
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
/**
|
||||
* 拼团订单id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderIdKeyAttr($query, $value, $data)
|
||||
{
|
||||
$query->whereIn('order_id_key', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
32
app/model/other/Agreement.php
Normal file
32
app/model/other/Agreement.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?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\model\other;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 协议Model
|
||||
* Class Cache
|
||||
* @package app\model\other
|
||||
*/
|
||||
class Agreement extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
const EXPIRE = 0;
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'agreement';
|
||||
}
|
||||
43
app/model/other/Cache.php
Normal file
43
app/model/other/Cache.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?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\model\other;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 缓存Model
|
||||
* Class Cache
|
||||
* @package app\model\other
|
||||
*/
|
||||
class Cache extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
const EXPIRE = 0;
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'cache';
|
||||
|
||||
/**
|
||||
* 缓存KEY搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchKeyAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('key', $value);
|
||||
}
|
||||
}
|
||||
176
app/model/other/Category.php
Normal file
176
app/model/other/Category.php
Normal file
@@ -0,0 +1,176 @@
|
||||
<?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\model\other;
|
||||
|
||||
|
||||
use app\model\product\label\StoreProductLabel;
|
||||
use app\model\product\specs\StoreProductSpecs;
|
||||
use app\model\user\label\UserLabel;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 分类表
|
||||
* Class Category
|
||||
* @package app\model\other
|
||||
*/
|
||||
class Category extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'category';
|
||||
|
||||
/**
|
||||
* 主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 用户标签
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function label()
|
||||
{
|
||||
return $this->hasMany(UserLabel::class, 'label_cate', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function productLabel()
|
||||
{
|
||||
return $this->hasMany(StoreProductLabel::class, 'label_cate', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品参数
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function specs()
|
||||
{
|
||||
return $this->hasMany(StoreProductSpecs::class, 'temp_id', 'id')->order('sort desc');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子集分类查询条件
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->where('is_show', 1)->order('sort DESC,id DESC');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 归属人
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOwnerIdAttr($query, $value)
|
||||
{
|
||||
$query->where('owner_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 2);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 1);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 标签类型0:用户1:客服话术
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchGroupAttr($query, $value)
|
||||
{
|
||||
$query->where('group', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNotIdAttr($query, $value)
|
||||
{
|
||||
$query->where('id', '<>', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
}
|
||||
43
app/model/other/CityArea.php
Normal file
43
app/model/other/CityArea.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?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\model\other;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
|
||||
/**
|
||||
* 城市数据(包含街道)
|
||||
* Class CityArea
|
||||
* @package app\model\other
|
||||
*/
|
||||
class CityArea extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'city_area';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $key = 'id';
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'parent_id', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
79
app/model/other/Express.php
Normal file
79
app/model/other/Express.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?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\model\other;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 物流公司Model
|
||||
* Class Express
|
||||
* @package app\model\other
|
||||
*/
|
||||
class Express extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'express';
|
||||
|
||||
/**
|
||||
* 物流公司是否显示
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 物流公司信息是否完善
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
$query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* keyword 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->whereLike('name|code', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
public function searchCodeAttr($query, $value)
|
||||
{
|
||||
if ($value === '') {
|
||||
$query->where('code', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
88
app/model/other/Qrcode.php
Normal file
88
app/model/other/Qrcode.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?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\model\other;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* Class Qrcode
|
||||
* @package app\model\other
|
||||
*/
|
||||
class Qrcode extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'qrcode';
|
||||
|
||||
/**
|
||||
* type 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->whereLike('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* status 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->whereLike('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* third_type 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchThirdTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->whereLike('third_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* third_id 搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchThirdIdAttr($query, $value)
|
||||
{
|
||||
if ($value != '') {
|
||||
$query->whereLike('third_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
75
app/model/other/SystemCity.php
Normal file
75
app/model/other/SystemCity.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?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\model\other;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 城市数据(已废弃留存)
|
||||
* Class SystemCity
|
||||
* @package app\model\other
|
||||
*/
|
||||
class SystemCity extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'system_city';
|
||||
|
||||
/**
|
||||
* 获取子集分类查询条件
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'parent_id', 'city_id')->order('id ASC');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* city搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCityIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('city_id', $value);
|
||||
} else {
|
||||
$query->where('city_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ParentId搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchParentIdAttr($query, $value)
|
||||
{
|
||||
$query->where('parent_id', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
107
app/model/other/import/ImportRecord.php
Normal file
107
app/model/other/import/ImportRecord.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?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\model\other\import;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* Class Import
|
||||
* @package app\model\other
|
||||
*/
|
||||
class ImportRecord extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'import_record';
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/12/9 下午2:23
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/12/9 下午2:22
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('status', $value);
|
||||
} else {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/12/9 下午2:22
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('name', "%{$value}%");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/12/19 下午4:58
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
58
app/model/other/import/ImportRecordError.php
Normal file
58
app/model/other/import/ImportRecordError.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?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\model\other\import;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* Class ImportError
|
||||
* @package app\model\other
|
||||
*/
|
||||
class ImportRecordError extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'import_record_error';
|
||||
|
||||
|
||||
/**
|
||||
* 关联 id 搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/12/9 下午2:23
|
||||
*/
|
||||
public function searchRecordIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('record_id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('record_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
92
app/model/other/queue/Queue.php
Normal file
92
app/model/other/queue/Queue.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?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\model\other\queue;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 队列model
|
||||
* Class Queue
|
||||
* @package app\model\other\queue
|
||||
*/
|
||||
class Queue extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
const EXPIRE = 0;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'queue_list';
|
||||
|
||||
/**
|
||||
* 缓存KEY搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchExecuteKeyAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('execute_key', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 队列类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 队列主键搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 队列状态搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('status', $value);
|
||||
} else {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
89
app/model/other/queue/QueueAuxiliary.php
Normal file
89
app/model/other/queue/QueueAuxiliary.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?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\model\other\queue;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 队列辅助表
|
||||
* Class QueueAuxiliary
|
||||
* @package app\model\other\queue
|
||||
*/
|
||||
class QueueAuxiliary extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 表明
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'queue_auxiliary';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型绑定id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBindingIdAttr($query, $value)
|
||||
{
|
||||
$query->where('binding_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型状态搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('status', $value);
|
||||
} else {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型关联id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
$query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
78
app/model/out/OutAccount.php
Normal file
78
app/model/out/OutAccount.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?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\model\out;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 对外接口
|
||||
* Class StoreService
|
||||
* @package app\model\service
|
||||
*/
|
||||
class OutAccount extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'out_account';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 模糊条件搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('appid|title|id', 'LIKE', "%$value%");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
23
app/model/out/OutInterface.php
Normal file
23
app/model/out/OutInterface.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace app\model\out;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
class OutInterface extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'out_interface';
|
||||
}
|
||||
130
app/model/product/brand/StoreBrand.php
Normal file
130
app/model/product/brand/StoreBrand.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?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\model\product\brand;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品品牌Model
|
||||
* Class StoreCategory
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreBrand extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_brand';
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子集分类查询条件
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->order('sort DESC,id DESC');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联品牌
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasMany(StoreProduct::class, 'brand_id', 'id');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 品牌是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 品牌是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchPidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchBrandNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('brand_name', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
186
app/model/product/category/StoreProductCategory.php
Normal file
186
app/model/product/category/StoreProductCategory.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?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\model\product\category;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品分类Model
|
||||
* Class StoreProductCategory
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreProductCategory extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_category';
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 父级
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function parentCate()
|
||||
{
|
||||
return $this->hasOne(self::class, 'id', 'pid')->where('is_show', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 父级
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function parentCateName()
|
||||
{
|
||||
return $this->hasOne(self::class, 'id', 'pid')->field('id,pid,cate_name')->where('is_show', 1)->bind(['one' => 'cate_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子集分类查询条件
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function AdminChildren()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->order('sort DESC,id DESC');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子集分类查询条件
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->where('is_show', 1)->order('sort DESC,id DESC');
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchPidAttr($query, $value, $data)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('pid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchLevelAttr($query, $value){
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('level', $value);
|
||||
} else {
|
||||
if(in_array($value, [1, -1, 0])) {
|
||||
switch ($value) {
|
||||
case -1://所有
|
||||
break;
|
||||
case 0://所有一级
|
||||
$query->where('level', 0);
|
||||
break;
|
||||
case 1://所有二级
|
||||
$query->whereIn('level', [0, 1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCateNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('cate_name', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 分类是否显示搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
141
app/model/product/ensure/StoreProductEnsure.php
Normal file
141
app/model/product/ensure/StoreProductEnsure.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?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\model\product\ensure;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* Class StoreProductEnsure
|
||||
* @package app\model\product\label
|
||||
*/
|
||||
class StoreProductEnsure extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_ensure';
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
$query->whereLike('id|name', '%' . $value . '%');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 2);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 1);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* status搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @author 等风来
|
||||
* @email 136327134@qq.com
|
||||
* @date 2022/11/2
|
||||
*/
|
||||
public function searchIdsAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
178
app/model/product/label/StoreProductLabel.php
Normal file
178
app/model/product/label/StoreProductLabel.php
Normal file
@@ -0,0 +1,178 @@
|
||||
<?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\model\product\label;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* Class StoreProductLabel
|
||||
* @package app\model\product\label
|
||||
*/
|
||||
class StoreProductLabel extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_label';
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 标签分类
|
||||
* @param \think\Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLabelCateAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('label_cate', $value);
|
||||
} else {
|
||||
if ($value) {
|
||||
$query->where('label_cate', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 2);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 1);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value)->where('type', 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ids搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdsAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 样式搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStyleTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('style_type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('style_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
}
|
||||
38
app/model/product/label/StoreProductLabelAuxiliary.php
Normal file
38
app/model/product/label/StoreProductLabelAuxiliary.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?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\model\product\label;
|
||||
|
||||
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 标签辅助表
|
||||
* Class StoreProductLabelAuxiliary
|
||||
* @package app\model\product\label
|
||||
*/
|
||||
class StoreProductLabelAuxiliary extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $key = 'id';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_label_auxiliary';
|
||||
|
||||
}
|
||||
56
app/model/product/product/StoreDescription.php
Normal file
56
app/model/product/product/StoreDescription.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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\model\product\product;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 商品详情Model
|
||||
* Class StoreDescription
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreDescription extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_description';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
public function getDescriptionAttr($value)
|
||||
{
|
||||
return htmlspecialchars_decode($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('product_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
812
app/model/product/product/StoreProduct.php
Normal file
812
app/model/product/product/StoreProduct.php
Normal file
@@ -0,0 +1,812 @@
|
||||
<?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\model\product\product;
|
||||
|
||||
use app\model\product\brand\StoreBrand;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use app\model\store\product\Product;
|
||||
use app\model\store\SystemStore;
|
||||
use app\model\supplier\SystemSupplier;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use app\model\activity\coupon\StoreCouponProduct;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品Model
|
||||
* Class StoreProduct
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreProduct extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product';
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义表单信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 门店商品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeBranchProduct()
|
||||
{
|
||||
return $this->hasOne(Product::class, 'product_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 0)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品品牌
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function brand()
|
||||
{
|
||||
return $this->hasOne(StoreBrand::class, 'id', 'brand_id')->field('id,brand_name')->where(['is_show' => 1, 'is_del' => 0])->bind(['brand_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联供应商
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function supplier()
|
||||
{
|
||||
return $this->hasOne(SystemSupplier::class, 'id', 'relation_id')->where('type', 2)->field('id,supplier_name')->where(['is_show' => 1, 'is_del' => 0])->bind(['supplier_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联供应商
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function supplierInfo()
|
||||
{
|
||||
return $this->hasOne(SystemSupplier::class, 'id', 'relation_id')->where(['is_show' => 1, 'is_del' => 0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联门店
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function store()
|
||||
{
|
||||
return $this->hasOne(SystemStore::class, 'id', 'relation_id')->field('id,name,is_store')->where(['is_show' => 1, 'is_del' => 0])->bind(['store_name' => 'name', 'store_is_store' => 'is_store']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联门店
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function storeInfo()
|
||||
{
|
||||
return $this->hasOne(SystemStore::class, 'id', 'relation_id')->where(['is_show' => 1, 'is_del' => 0]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 一对多关联
|
||||
* 商品关联优惠卷模板id
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function couponId()
|
||||
{
|
||||
return $this->hasMany(StoreCouponProduct::class, 'product_id', 'id')->field(['product_id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券名称一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function coupons()
|
||||
{
|
||||
return $this->hasMany(StoreProductCoupon::class, 'product_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 评论一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function star()
|
||||
{
|
||||
return $this->hasMany(StoreProductReply::class, 'product_id', 'id')->where('is_del', 0)->field('product_score,product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function cateName()
|
||||
{
|
||||
return $this->hasMany(StoreProductCate::class, 'product_id', 'id')->with('cateName');
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'id')->where('type', 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getSliderImageAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return bool
|
||||
*/
|
||||
public function getStoreDeliveryAttr($value)
|
||||
{
|
||||
//1=快递,2=门店自提,3=门店配送
|
||||
return in_array(3, $this->delivery_type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return bool
|
||||
*/
|
||||
public function getStoreMentionAttr($value)
|
||||
{
|
||||
//1=快递,2=门店自提,3=门店配送
|
||||
return in_array(2, $this->delivery_type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return bool
|
||||
*/
|
||||
public function getExpressDeliveryAttr($value)
|
||||
{
|
||||
//1=快递,2=门店自提,3=门店配送
|
||||
return in_array(1, $this->delivery_type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送方式
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDeliveryTypeAttr($query, $value)
|
||||
{
|
||||
if (in_array($value, [1, 2, 3])) {
|
||||
$query->where('find_in_set(' . $value . ',`delivery_type`)');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_type', $value);
|
||||
} else {
|
||||
$query->where('product_type', $value ?? 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否开启会员价
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVipAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_vip', $value ?? 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 规格
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
* User: liusl
|
||||
* DateTime: 2024/10/28 10:55
|
||||
*/
|
||||
public function searchSpecTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('spec_type', $value ?? 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是svip商品搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVipProductAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ($value) {
|
||||
case -1:
|
||||
break;
|
||||
case 0:
|
||||
$query->where('is_vip_product', 0);
|
||||
break;
|
||||
case 1:
|
||||
$query->where('is_vip_product', 1);
|
||||
break;
|
||||
default:
|
||||
$query->where('is_vip_product', 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否预售搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsPresaleProductAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_presale_product', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否显示搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否审核搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVerifyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_verify', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 供应商
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSupplierIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 2);
|
||||
} else {
|
||||
if ($value) $query->where('relation_id', $value)->where('type', 2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value)->where('type', 1);
|
||||
} else {
|
||||
if ($value) $query->where('relation_id', $value)->where('type', 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value ?: 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 条形码搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBarCodeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where(function ($query) use ($value) {
|
||||
$query->where('bar_code', $value)->whereOr('id', 'IN', function ($q) use ($value) {
|
||||
$q->name('store_product_attr_value')->field('product_id')->where('bar_code', $value)->select();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('pid', $value);
|
||||
} else {
|
||||
if ($value !== '') {
|
||||
if ($value == -1) {
|
||||
$query->where('pid', '>', 0);
|
||||
} else {
|
||||
$query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchMerIdAttr($query, $value)
|
||||
{
|
||||
$query->where('mer_id', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* keyword搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '' && !isset($data['store_id'])) {
|
||||
$field = 'id|keyword|store_name|store_info|bar_code';
|
||||
if (is_string($value)) {
|
||||
$query->whereLike($field, htmlspecialchars("%" . trim($value) . "%"));
|
||||
} elseif (is_array($value) && count($value) > 0) {
|
||||
$query->where(function ($q) use ($value, $field) {
|
||||
$data = [];
|
||||
foreach ($value as $k) {
|
||||
$data[] = [$field, 'like', "%" . trim($k) . "%"];
|
||||
}
|
||||
$q->whereOr($data);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 热卖商品搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 3)->whereIn('relation_id', 1)->field('product_id')->select();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 促销商品搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchIsBenefitAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 3)->whereIn('relation_id', 2)->field('product_id')->select();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 精品商品搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchIsBestAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 3)->whereIn('relation_id', 3)->field('product_id')->select();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新品商品搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchIsNewAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 3)->whereIn('relation_id', 4)->field('product_id')->select();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 精品商品搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchIsGoodAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 3)->whereIn('relation_id', 5)->field('product_id')->select();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户标签搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchLabelIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereFindInSet('label_id', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保障服务搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchEnsureIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereFindInSet('ensure_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* SPU搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchSpuAttr($query, $value)
|
||||
{
|
||||
$query->where('spu', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 库存搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchStockAttr($query, $value)
|
||||
{
|
||||
$query->where('stock', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类搜索器
|
||||
* @param Model $query
|
||||
* @param int $value
|
||||
*/
|
||||
public function searchCateIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', function ($query) use ($value) {
|
||||
$query->name('store_product_relation')->where('type', 1)->where('relation_id', 'IN', $value)->field('product_id')->select();
|
||||
});
|
||||
} else {
|
||||
$query->whereFindInSet('cate_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品数量条件搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ((int)$value) {
|
||||
case -2://强制下架
|
||||
$query->where(['is_verify' => -2,'is_del' => 0]);
|
||||
break;
|
||||
case -1://审核未通过
|
||||
$query->where(['is_verify' => -1,'is_del' => 0]);
|
||||
break;
|
||||
case 0://待审核
|
||||
$query->where(['is_verify' => 0, 'is_del' => 0]);
|
||||
break;
|
||||
case 1:
|
||||
$query->where(['is_show' => 1, 'is_del' => 0, 'is_verify' => 1]);
|
||||
break;
|
||||
case 2:
|
||||
$query->where(['is_show' => 0, 'is_del' => 0, 'is_verify' => 1]);
|
||||
break;
|
||||
case 3:
|
||||
$query->where(['is_del' => 0, 'is_verify' => 1]);
|
||||
break;
|
||||
case 4:
|
||||
$query->where(['is_del' => 0, 'is_verify' => 1])->where(function ($query) {
|
||||
$query->where('is_sold', 1)->whereOr('stock', 0);
|
||||
});
|
||||
break;
|
||||
case 5:
|
||||
// if (isset($data['store_stock']) && $data['store_stock']) {
|
||||
// $store_stock = $data['store_stock'];
|
||||
// $query->where(['is_show' => 1, 'is_del' => 0, 'is_verify' => 1, 'is_police' => 1])->where('stock', '<=', $store_stock)->where('stock', '>', 0);
|
||||
// } else {
|
||||
$query->where(['is_show' => 1, 'is_del' => 0, 'is_verify' => 1, 'is_police' => 1])->where('stock', '>', 0);
|
||||
// }
|
||||
break;
|
||||
case 6:
|
||||
$query->where(['is_del' => 1]);
|
||||
break;
|
||||
case 7://回收站 & 下架商品
|
||||
$query->where(function ($q) {
|
||||
$q->where(['is_del' => 1])->whereOr('is_show', 0);
|
||||
});
|
||||
break;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 品牌搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBrandIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('brand_id', $value);
|
||||
} else {
|
||||
$query->where('brand_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 库存预警
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @author 等风来
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/4/18
|
||||
*/
|
||||
public function searchIsPoliceAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('is_police', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否售罄
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @author 等风来
|
||||
* @email 136327134@qq.com
|
||||
* @date 2023/4/18
|
||||
*/
|
||||
public function searchIsSoldAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('is_sold', $value);
|
||||
}
|
||||
|
||||
public function searchLevelTypeAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('level_type', $value);
|
||||
}
|
||||
|
||||
public function searchIsBrokerageAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('is_brokerage', $value);
|
||||
}
|
||||
|
||||
public function searchisChannelProductAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('is_channel_product', $value);
|
||||
}
|
||||
|
||||
public function searchisGeneralProductAttr($query, $value)
|
||||
{
|
||||
if ('' !== $value) $query->where('is_general_product', $value);
|
||||
}
|
||||
|
||||
public function searchProductClearAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if ($value == 'is_general_product') {
|
||||
$query->where('is_general_product', 1);
|
||||
}
|
||||
if ($value == 'is_channel_product') {
|
||||
$query->where('is_channel_product', 1);
|
||||
}
|
||||
if ($value == 'is_vip_product') {
|
||||
$query->where('is_vip_product', 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
50
app/model/product/product/StoreProductCate.php
Normal file
50
app/model/product/product/StoreProductCate.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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\model\product\product;
|
||||
|
||||
use app\model\product\category\StoreProductCategory;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 商品分类关联Model
|
||||
* Class StoreProductCate
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreProductCate extends Model
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_cate';
|
||||
|
||||
/**
|
||||
* 一对一关联获取分类名称
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function cateName()
|
||||
{
|
||||
return $this->hasOne(StoreProductCategory::class, 'id', 'cate_id')->bind([
|
||||
'cate_name' => 'cate_name'
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
47
app/model/product/product/StoreProductCoupon.php
Normal file
47
app/model/product/product/StoreProductCoupon.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?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\model\product\product;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* Class StoreProductCoupon
|
||||
* @package app\model\product\product
|
||||
*/
|
||||
class StoreProductCoupon extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_product_coupon';
|
||||
|
||||
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if(is_array($value))
|
||||
$query->whereIn('product_id',$value);
|
||||
else
|
||||
$query->where('product_id',$value);
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user