chore: 添加静态资源文件和版本配置文件

添加大量图片、字体、音频等静态资源文件,包括用户界面图片、模板文件和安装界面素材
添加系统版本配置文件(.version)和常量定义文件(.constant)
更新供应商依赖文件,包括Symfony VarDumper组件和相关许可证文件
添加验证码配置文件(captcha.php)和.gitignore规则
This commit is contained in:
2026-03-06 20:14:23 +08:00
commit c9a98f342c
4485 changed files with 490986 additions and 0 deletions

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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]]);
}
}
}

View 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);
}
}
}

View 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);
}
}
}
}

View 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);
}
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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';
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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;
}
}

View 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'
]);
}
}

View 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 . '%');
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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();
});
}
}
}

View 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;
}
}
}
}

View 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');
}
}

View 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');
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
});
});
}
}
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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';
}

View 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);
}
}

View 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);
}
}

View 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';
}

View 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);
}
}

View 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);
// }
}

View 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);
}
}
}

View 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);
}
}
}
}

View 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}%");
}
}
}

View 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
View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}

View 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';
}

View 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%");
}
}
}

View 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);
}
}

View 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 . "%");
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
});
}
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}
}
}

View 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);
}
}

View 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);
}
}

View 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);
}
}
}
}

View 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);
}
}

View 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
View 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);
}
}

View 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);
}
}

View 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');
}
}

View 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);
}
}
}

View 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);
}
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}
}
}

View 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);
}
}
}
}

View 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);
}
}

View 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);
}
}

View 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';
}

View 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);
}
}
}
}

View 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);
}
}

View 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);
}
}
}

View 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);
}
}

View 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';
}

View 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);
}
}

View 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);
}
}
}

View 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'
]);
}
}

View 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