chore: 添加静态资源文件和版本配置文件
添加大量图片、字体、音频等静态资源文件,包括用户界面图片、模板文件和安装界面素材 添加系统版本配置文件(.version)和常量定义文件(.constant) 更新供应商依赖文件,包括Symfony VarDumper组件和相关许可证文件 添加验证码配置文件(captcha.php)和.gitignore规则
This commit is contained in:
172
app/model/activity/StoreActivity.php
Normal file
172
app/model/activity/StoreActivity.php
Normal file
@@ -0,0 +1,172 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity;
|
||||
|
||||
use app\model\activity\seckill\StoreSeckill;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 活动model
|
||||
* Class StoreActivity
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class StoreActivity extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_activity';
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店信息
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setApplicableStoreIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店信息
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getApplicableStoreIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function seckill()
|
||||
{
|
||||
return $this->hasMany(StoreSeckill::class, 'activity_id', 'id')->where('is_show', 1)->where('is_del', 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 适用门店类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchApplicableTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('applicable_type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('applicable_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀时间段
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTimeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('find_in_set(' . $value . ',`time_id`)');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
256
app/model/activity/bargain/StoreBargain.php
Normal file
256
app/model/activity/bargain/StoreBargain.php
Normal file
@@ -0,0 +1,256 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\bargain;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 砍价商品Model
|
||||
* Class StoreBargain
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargain extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain';
|
||||
|
||||
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 2)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'ot_price'])->bind(['ot_price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_hot', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动有效时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBargainTimeAttr($query, $value)
|
||||
{
|
||||
if ($value == 1) {
|
||||
$time = time();
|
||||
$query->where('start_time', '<=', $time)->where('stop_time', '>=', $time);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
103
app/model/activity/bargain/StoreBargainUser.php
Normal file
103
app/model/activity/bargain/StoreBargainUser.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\bargain;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 参与砍价Model
|
||||
* Class StoreBargainUser
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargainUser extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain_user';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getBargain()
|
||||
{
|
||||
return $this->hasOne(StoreBargain::class, 'id', 'bargain_id')->bind(['title', 'image', 'datatime' => 'stop_time', 'people_num']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 获取砍价用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['avatar', 'nickname', 'delete_time']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchBargainIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('bargain_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
92
app/model/activity/bargain/StoreBargainUserHelp.php
Normal file
92
app/model/activity/bargain/StoreBargainUserHelp.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\bargain;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 砍价帮砍Model
|
||||
* Class StoreBargainUserHelp
|
||||
* @package app\model\activity\bargain
|
||||
*/
|
||||
class StoreBargainUserHelp extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_bargain_user_help';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 关联用户
|
||||
* @return \crmeb\basic\BaseHasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['nickname', 'avatar', 'delete_time']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchBargainIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('bargain_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBargainUserIdAttr($query, $value)
|
||||
{
|
||||
$query->where('bargain_user_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
112
app/model/activity/card/CardBatch.php
Normal file
112
app/model/activity/card/CardBatch.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
|
||||
/**
|
||||
* 卡次批次模型
|
||||
* Class CardBatch
|
||||
* @package app\model\activity\card
|
||||
*/
|
||||
class CardBatch extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_batch';
|
||||
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡次名称搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
$query->where('name', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡号前缀搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCardPrefixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_prefix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
public function searchPrefixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('prefix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据卡号后缀搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCardSuffixAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_suffix', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据删除状态搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
118
app/model/activity/card/CardCode.php
Normal file
118
app/model/activity/card/CardCode.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardCode extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_code';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
public function getActiveTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//uid搜索器
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//type搜索器
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//status搜索器
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//card_id搜索器
|
||||
public function searchCardIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('card_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//batch_id
|
||||
public function searchBatchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('batch_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
//active_time搜索器
|
||||
public function searchActiveTimeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$active_time = explode('-', $value);
|
||||
$active_time[0] = isset($active_time[0]) ? strtotime($active_time[0]) : 0;
|
||||
$active_time[1] = isset($active_time[1]) ? strtotime($active_time[1]) : 0;
|
||||
$query->whereBetween('active_time', [$active_time[0], $active_time[1]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
109
app/model/activity/card/CardGift.php
Normal file
109
app/model/activity/card/CardGift.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGift extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡名称搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('name', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡类型搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据礼品卡状态搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索器 - 根据有效期类型搜索
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchValidTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('valid_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
64
app/model/activity/card/CardGiftAuxiliary.php
Normal file
64
app/model/activity/card/CardGiftAuxiliary.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡模型
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGiftAuxiliary extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift_auxiliary';
|
||||
|
||||
|
||||
//id搜索器
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('gift_id', $value);
|
||||
} else {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
76
app/model/activity/card/CardGiftRecord.php
Normal file
76
app/model/activity/card/CardGiftRecord.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\card;
|
||||
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 礼品卡记录
|
||||
* Class CardGift
|
||||
* @package appmodelactivitycard
|
||||
*/
|
||||
class CardGiftRecord extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'card_gift_record';
|
||||
|
||||
public function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
//查询器时间戳转时间
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
|
||||
//id搜索器
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//gift_id搜索器
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('gift_id', $value);
|
||||
} else {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
260
app/model/activity/combination/StoreCombination.php
Normal file
260
app/model/activity/combination/StoreCombination.php
Normal file
@@ -0,0 +1,260 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\combination;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 拼团商品Model
|
||||
* Class StoreCombination
|
||||
* @package app\model\activity\combination
|
||||
*/
|
||||
class StoreCombination extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_combination';
|
||||
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'ot_price', 'price'])->bind(['ot_price', 'product_price' => 'price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function total()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_del', 0)->field(['(sales+ficti) as total', 'id', 'price'])->bind([
|
||||
'total' => 'total', 'product_price' => 'price',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 3)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHostAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_host', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('is_show', $value ?: 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
139
app/model/activity/combination/StorePink.php
Normal file
139
app/model/activity/combination/StorePink.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\combination;
|
||||
|
||||
use app\model\product\product\StoreProduct;use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 拼团Model
|
||||
* Class StorePink
|
||||
* @package app\model\activity\combination
|
||||
*/
|
||||
class StorePink extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_pink';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 用户一对一关联
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->bind(['delete_time']);
|
||||
}
|
||||
|
||||
public function getProduct()
|
||||
{
|
||||
return $this->hasOne(StoreCombination::class, 'id', 'cid')->bind(['title']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'pid')->field(['id', 'ot_price', 'price', 'quota_show', 'quota'])->bind(['ot_price', 'product_price' => 'price', 'quota_show', 'quota']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单号搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单编号搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOrderIdKeyAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('order_id_key', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchPidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('pid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否团长搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchKIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('k_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否退款搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsRefundAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_refund', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
}
|
||||
140
app/model/activity/coupon/StoreCoupon.php
Normal file
140
app/model/activity/coupon/StoreCoupon.php
Normal file
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券模板Model
|
||||
* Class StoreCoupon
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCoupon extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon';
|
||||
|
||||
/**
|
||||
* 优惠卷类型
|
||||
* @var string[]
|
||||
*/
|
||||
protected $couponType = [0 => '通用券', 1 => '品类券', 2 => '商品券'];
|
||||
|
||||
/**
|
||||
* 一对多关联
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function productId()
|
||||
{
|
||||
return $this->hasMany(StoreCouponProduct::class, 'coupon_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeAttr($value)
|
||||
{
|
||||
return $this->couponType[$value];
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板标题搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 最低消费金额搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUseMinPriceAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('use_min_price', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券面值搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponPriceAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('coupon_price', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('type', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCategoryIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('category_id', $value);
|
||||
}
|
||||
}
|
||||
193
app/model/activity/coupon/StoreCouponIssue.php
Normal file
193
app/model/activity/coupon/StoreCouponIssue.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 发布优惠券Model
|
||||
* Class StoreCouponIssue
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponIssue extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_issue';
|
||||
|
||||
/**
|
||||
* 用户是否拥有
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function used()
|
||||
{
|
||||
return $this->hasMany(StoreCouponUser::class, 'cid', 'id')
|
||||
->field('id,cid,uid,start_time,end_time,use_time,status,is_fail');
|
||||
}
|
||||
|
||||
/**
|
||||
* id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('id', $value);
|
||||
else
|
||||
$query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券模板搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCidAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('type', $value);
|
||||
else
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCouponTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('coupon_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* receive_type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchReceiveTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('receive_type', $value);
|
||||
else
|
||||
$query->where('receive_type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否不限量
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsPermanentAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_permanent', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否新人券
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsGiveSubscribeAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_give_subscribe', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否满赠
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsFullGiveAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_full_give', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券状态
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券是否删除
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券名称
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->whereLike('coupon_title', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* type
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCategoryAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value))
|
||||
$query->whereIn('category', $value);
|
||||
else
|
||||
$query->where('category', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
74
app/model/activity/coupon/StoreCouponIssueUser.php
Normal file
74
app/model/activity/coupon/StoreCouponIssueUser.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\coupon;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券前台用户领取Model
|
||||
* Class StoreCouponIssueUser
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponIssueUser extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_issue_user';
|
||||
|
||||
/**
|
||||
* 获取领取人名称头像
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar')->bind(['nickname', 'avatar']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return date('Y-m-d H:i:s', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取用户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取优惠券搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIssueCouponIdAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('issue_coupon_id', $value);
|
||||
}
|
||||
}
|
||||
31
app/model/activity/coupon/StoreCouponProduct.php
Normal file
31
app/model/activity/coupon/StoreCouponProduct.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\model\activity\coupon;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 优惠券关联商品Model
|
||||
* Class StoreCouponProduct
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponProduct extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_product';
|
||||
|
||||
}
|
||||
206
app/model/activity/coupon/StoreCouponUser.php
Normal file
206
app/model/activity/coupon/StoreCouponUser.php
Normal file
@@ -0,0 +1,206 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\coupon;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠券发放Model
|
||||
* Class StoreCouponUser
|
||||
* @package app\model\activity\coupon
|
||||
*/
|
||||
class StoreCouponUser extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_coupon_user';
|
||||
|
||||
/**
|
||||
* 获取类型
|
||||
* @var string[]
|
||||
*/
|
||||
protected array $gainType = [
|
||||
'send' => '后台发放',
|
||||
'get' => '手动领取',
|
||||
'newcomer' => '新人礼赠送',
|
||||
'activate_level' => '会员卡激活赠送',
|
||||
'user_first' => '用户注册赠送',
|
||||
'order' => '下单赠送',
|
||||
'luck_lottery' => '抽奖赠送'
|
||||
];
|
||||
|
||||
/**
|
||||
* 类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getTypeAttr($value)
|
||||
{
|
||||
return $this->gainType[$value] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用状态
|
||||
* @var string[]
|
||||
*/
|
||||
protected $statusType = [0 => '未使用', 1 => '已使用', 2 => '已过期'];
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusAttr($value)
|
||||
{
|
||||
return $this->statusType[$value];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function issue()
|
||||
{
|
||||
return $this->hasOne(StoreCouponIssue::class, 'id', 'cid')->field(['id', 'end_use_time', 'start_use_time', 'coupon_type', 'type', 'coupon_time', 'product_id', 'category_id', 'brand_id', 'receive_type', 'rule'])->bind([
|
||||
'applicable_type' => 'type',
|
||||
'coupon_time' => 'coupon_time',
|
||||
'product_id',
|
||||
'category_id',
|
||||
'brand_id',
|
||||
'receive_type',
|
||||
'coupon_type',
|
||||
'start_use_time',
|
||||
'end_use_time',
|
||||
'rule',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取领取人名称头像
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,nickname,avatar')->bind(['nickname', 'avatar']);
|
||||
}
|
||||
|
||||
/**
|
||||
* id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('id', $value);
|
||||
else
|
||||
$query->where('id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('cid', $value);
|
||||
else
|
||||
$query->where('cid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchUidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠券名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchCouponTitleAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('coupon_title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取方式搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '' && $value != -1) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('status', $value);
|
||||
} else {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 是否失效
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsFailAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_fail', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否在使用期限内搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTimeAttr($query, $value, $data)
|
||||
{
|
||||
$query->whereTime('add_time', '>=', $value)->whereTime('end_time', '<=', $value);
|
||||
}
|
||||
}
|
||||
103
app/model/activity/discounts/StoreDiscounts.php
Normal file
103
app/model/activity/discounts/StoreDiscounts.php
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
namespace app\model\activity\discounts;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠套餐
|
||||
* Class StoreDiscounts
|
||||
* @package app\model\activity\discounts
|
||||
*/
|
||||
class StoreDiscounts extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_discounts';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 套餐商品关联
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function products()
|
||||
{
|
||||
return $this->hasMany(StoreDiscountsProducts::class, 'discount_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('title', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdsAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->whereFindInSet('product_ids', $value);
|
||||
}
|
||||
}
|
||||
70
app/model/activity/discounts/StoreDiscountsProducts.php
Normal file
70
app/model/activity/discounts/StoreDiscountsProducts.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\discounts;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠套餐商品
|
||||
* Class StoreDiscountsProducts
|
||||
* @package app\model\activity\discounts
|
||||
*/
|
||||
class StoreDiscountsProducts extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_discounts_products';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 一对一关联商品表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->field(['id', 'pid', 'type', 'cate_id', 'relation_id', 'freight', 'postage', 'temp_id', 'delivery_type', 'price'])->bind([
|
||||
'pid',
|
||||
'cate_id',
|
||||
'plat_type' => 'type',
|
||||
'relation_id' => 'relation_id',
|
||||
'freight' => 'freight',
|
||||
'postage' => 'postage',
|
||||
'p_temp_id' => 'temp_id',
|
||||
'delivery_type',
|
||||
'price'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchDiscountIdAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('discount_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
637
app/model/activity/holiday/HolidayGift.php
Normal file
637
app/model/activity/holiday/HolidayGift.php
Normal file
@@ -0,0 +1,637 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼模型
|
||||
* Class HolidayGift
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGift extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
* @var array
|
||||
*/
|
||||
public const TASK_TYPE = [
|
||||
1 => '用户生日',
|
||||
2 => '活动日期'
|
||||
];
|
||||
|
||||
/**
|
||||
* 活动日期类型
|
||||
* @var array
|
||||
*/
|
||||
public const ACTIVITY_DATE_TYPE = [
|
||||
1 => '自定义日期',
|
||||
2 => '每月',
|
||||
3 => '每周'
|
||||
];
|
||||
|
||||
/**
|
||||
* 生日类型
|
||||
* @var array
|
||||
*/
|
||||
public const BIRTHDAY_TYPE = [
|
||||
1 => '生日当天',
|
||||
2 => '生日当周',
|
||||
3 => '生日当月',
|
||||
0 => '无'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送时段类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_TIME_TYPE = [
|
||||
1 => '全时段',
|
||||
2 => '指定时段'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送人群类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_USER_TYPE = [
|
||||
1 => '全部人群',
|
||||
2 => '指定人群'
|
||||
];
|
||||
|
||||
/**
|
||||
* 条件满足类型
|
||||
* @var array
|
||||
*/
|
||||
public const CONDITION_TYPE = [
|
||||
1 => '满足任一条件',
|
||||
2 => '满足全部条件'
|
||||
];
|
||||
|
||||
/**
|
||||
* 礼品类型
|
||||
* @var array
|
||||
*/
|
||||
public const GIFT_TYPE = [
|
||||
1 => '优惠券',
|
||||
2 => '积分',
|
||||
3 => '多倍积分',
|
||||
4 => '余额',
|
||||
5 => '全场包邮'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送渠道
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_CHANNEL = [
|
||||
1 => '短信',
|
||||
2 => '公众号',
|
||||
3 => '弹框广告'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送频次
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_FREQUENCY = [
|
||||
1 => '永久一次',
|
||||
2 => '每次进入',
|
||||
3 => '每天',
|
||||
4 => '每月',
|
||||
5 => '每周'
|
||||
];
|
||||
|
||||
/**
|
||||
* 显示页面
|
||||
* @var array
|
||||
*/
|
||||
public const SHOW_PAGE = [
|
||||
1 => '商城首页',
|
||||
2 => '分类页',
|
||||
3 => '购物车',
|
||||
4 => '个人中心',
|
||||
5 => '支付成功',
|
||||
6 => '专题页面'
|
||||
];
|
||||
|
||||
/**
|
||||
* 状态
|
||||
* @var array
|
||||
*/
|
||||
public const STATUS = [
|
||||
0 => '关闭',
|
||||
1 => '开启'
|
||||
];
|
||||
|
||||
/**
|
||||
* 是否提前推送
|
||||
* @var array
|
||||
*/
|
||||
public const ADVANCE_PUSH = [
|
||||
0 => '否',
|
||||
1 => '是'
|
||||
];
|
||||
|
||||
/**
|
||||
* 是否永久
|
||||
* @var array
|
||||
*/
|
||||
public const IS_PERMANENT = [
|
||||
0 => '否',
|
||||
1 => '是'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送类型
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_TYPE = [
|
||||
1 => '短信',
|
||||
2 => '公众号',
|
||||
3 => '弹框广告'
|
||||
];
|
||||
|
||||
/**
|
||||
* 推送状态
|
||||
* @var array
|
||||
*/
|
||||
public const PUSH_STATUS = [
|
||||
0 => '推送失败',
|
||||
1 => '推送成功'
|
||||
];
|
||||
|
||||
/**
|
||||
* 记录状态
|
||||
* @var array
|
||||
*/
|
||||
public const RECORD_STATUS = [
|
||||
0 => '未使用',
|
||||
1 => '已使用'
|
||||
];
|
||||
|
||||
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', $value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户标签属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 用户标签数组
|
||||
*/
|
||||
public function getUserLabelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置用户标签属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 用户标签数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setUserLabelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户自定义标签属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 用户自定义标签数组
|
||||
*/
|
||||
public function getUserTagAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
public function getUserLevelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
public function setUserLevelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设置用户自定义标签属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 用户自定义标签数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setUserTagAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取礼品类型属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 礼品类型数组
|
||||
*/
|
||||
public function getGiftTypeAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置礼品类型属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 礼品类型数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setGiftTypeAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取优惠券ID属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 优惠券ID数组
|
||||
*/
|
||||
public function getCouponIdsAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置优惠券ID属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 优惠券ID数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setCouponIdsAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推送渠道属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 推送渠道数组
|
||||
*/
|
||||
public function getPushChannelAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置推送渠道属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 推送渠道数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setPushChannelAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推送周期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 推送周期数组
|
||||
*/
|
||||
public function getPushWeekDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置推送周期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 推送周期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setPushWeekDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取显示页面属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 显示页面数组
|
||||
*/
|
||||
public function getShowPageAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置展示页面属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 展示页面数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setShowPageAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信图片属性
|
||||
* 将JSON字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 微信图片数组
|
||||
*/
|
||||
public function getWechatImageAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = json_decode($value, true);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归将数组中的数字字符串转换为整型
|
||||
* @param array $array 需要处理的数组
|
||||
* @return array|int
|
||||
*/
|
||||
private function convertNumericStringsToInt($array)
|
||||
{
|
||||
if (!is_array($array)) {
|
||||
return is_numeric($array) ? (int)$array : $array;
|
||||
}
|
||||
|
||||
foreach ($array as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
$array[$key] = $this->convertNumericStringsToInt($value);
|
||||
} else if (is_numeric($value)) {
|
||||
$array[$key] = (int)$value;
|
||||
}
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置微信图片属性
|
||||
* 将数组转换为JSON字符串
|
||||
* @param array|string $value 微信图片数组或字符串
|
||||
* @return string JSON格式的字符串
|
||||
*/
|
||||
public function setWechatImageAttr($value)
|
||||
{
|
||||
return is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取话题ID属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 话题ID数组
|
||||
*/
|
||||
public function getTopicIdsAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置专题ID属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 专题ID数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setTopicIdsAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取活动月份日期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 活动月份日期数组
|
||||
*/
|
||||
public function getActivityMonthDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置活动月份日期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 活动月份日期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setActivityMonthDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取活动周日期属性
|
||||
* 将逗号分隔的字符串转换为数组,并将字符串数字转为整型
|
||||
* @param string|null $value 原始值
|
||||
* @return array 活动周日期数组
|
||||
*/
|
||||
public function getActivityWeekDaysAttr($value)
|
||||
{
|
||||
if (!$value) return [];
|
||||
$array = explode(',', $value);
|
||||
return $this->convertNumericStringsToInt($array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置活动周日期属性
|
||||
* 将数组转换为逗号分隔的字符串
|
||||
* @param array|string $value 活动周日期数组或字符串
|
||||
* @return string 逗号分隔的字符串
|
||||
*/
|
||||
public function setActivityWeekDaysAttr($value)
|
||||
{
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名称搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('name', '%' . $value . '%');
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据删除状态搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务类型搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchTaskTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('task_type', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据生日类型搜索
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 搜索值
|
||||
* @return Model
|
||||
*/
|
||||
public function searchBirthdayTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('birthday_type', $value);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索有效期内的活动
|
||||
* @param Model $query 查询对象
|
||||
* @param mixed $value 是否在有效期内,true表示在有效期内,false表示不限制
|
||||
* @return Model
|
||||
*/
|
||||
public function searchIsValidAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where(function ($query) {
|
||||
$query->where('is_permanent', 1)->whereOr(function ($query) {
|
||||
$now = time();
|
||||
$query->where('start_time', '<=', $now)
|
||||
->where('end_time', '>=', $now);
|
||||
});
|
||||
});
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function searchGiftTimeAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$time = explode('-', $value);
|
||||
$start_time = strtotime($time[0]);
|
||||
$end_time = strtotime($time[1]);
|
||||
$query->where('start_time', '<=', $start_time)
|
||||
->where('end_time', '>=', $end_time);
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送渠道,多个用逗号分隔:1-短信,2-公众号,3-弹框广告',
|
||||
*
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return mixed
|
||||
* User: liusl
|
||||
* DateTime: 2025/8/12 15:34
|
||||
*/
|
||||
public function searchPushChannelsAttr($query, $value = true)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->whereLike('push_channel', '%' . $value . '%');
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
99
app/model/activity/holiday/HolidayGiftPush.php
Normal file
99
app/model/activity/holiday/HolidayGiftPush.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼推送记录模型
|
||||
* Class HolidayGiftPush
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGiftPush extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift_push';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getPushTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送类型获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getPushTypeNameAttr($value, $data)
|
||||
{
|
||||
return HolidayGift::$pushChannelMap[$data['push_type']] ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusNameAttr($value, $data)
|
||||
{
|
||||
return $data['status'] ? '推送成功' : '推送失败';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname',
|
||||
'avatar',
|
||||
'phone'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联节日有礼表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function holidayGift()
|
||||
{
|
||||
return $this->hasOne(HolidayGift::class, 'id', 'gift_id')->bind([
|
||||
'gift_name' => 'name'
|
||||
]);
|
||||
}
|
||||
}
|
||||
222
app/model/activity/holiday/HolidayGiftRecord.php
Normal file
222
app/model/activity/holiday/HolidayGiftRecord.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\holiday;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 节日有礼领取记录模型
|
||||
* Class HolidayGiftRecord
|
||||
* @package app\model\activity
|
||||
*/
|
||||
class HolidayGiftRecord extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'holiday_gift_record';
|
||||
|
||||
/**
|
||||
* 自动写入时间戳
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getReceiveTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用时间获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getUseTimeAttr($value)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s', (int)$value) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态获取器
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
public function getStatusNameAttr($value, $data)
|
||||
{
|
||||
return $data['status'] ? '已使用' : '未使用';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->bind([
|
||||
'nickname',
|
||||
'avatar',
|
||||
'phone'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联节日有礼表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function holidayGift()
|
||||
{
|
||||
return $this->hasOne(HolidayGift::class, 'id', 'gift_id')->bind([
|
||||
'gift_name' => 'name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送内容类型获取器
|
||||
* @param $value
|
||||
* @return array
|
||||
*/
|
||||
public function getGiftTypeNameAttr($value, $data)
|
||||
{
|
||||
$giftTypes = explode(',', $data['gift_type']);
|
||||
$names = [];
|
||||
foreach ($giftTypes as $type) {
|
||||
if (isset(HolidayGift::$giftTypeMap[$type])) {
|
||||
$names[] = HolidayGift::$giftTypeMap[$type];
|
||||
}
|
||||
}
|
||||
return $names;
|
||||
}
|
||||
|
||||
/**
|
||||
* 节日有礼活动ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchGiftIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('gift_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchReceiveTimeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$query->whereBetween('receive_time', $value);
|
||||
} elseif ($value !== '' && $value !== null) {
|
||||
$query->where('receive_time', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchAddTimeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$query->whereBetween('add_time', $value);
|
||||
} elseif ($value !== '' && $value !== null) {
|
||||
$query->where('add_time', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼物类型搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchGiftTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
if (is_array($value)) {
|
||||
$query->where(function ($q) use ($value) {
|
||||
foreach ($value as $type) {
|
||||
$q->whereOr('gift_type', 'like', '%' . $type . '%');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$query->where('gift_type', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间范围搜索器(通用)
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @param $field
|
||||
* @return void
|
||||
*/
|
||||
public function searchTimeRangeAttr($query, $value, $field = 'add_time')
|
||||
{
|
||||
if (is_array($value) && count($value) == 2) {
|
||||
$startTime = is_numeric($value[0]) ? $value[0] : strtotime($value[0]);
|
||||
$endTime = is_numeric($value[1]) ? $value[1] : strtotime($value[1]);
|
||||
$query->whereBetween($field, [$startTime, $endTime]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器(搜索礼品内容)
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @return void
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '' && $value !== null) {
|
||||
$query->where('gift_content', 'like', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
}
|
||||
257
app/model/activity/integral/StoreIntegral.php
Normal file
257
app/model/activity/integral/StoreIntegral.php
Normal file
@@ -0,0 +1,257 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\integral;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use crmeb\basic\BaseModel;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 积分商品Model
|
||||
* Class StoreIntegral
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegral extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral';
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图获取器
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联商品表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一获取原价
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->bind(['ot_price', 'product_price' => 'price']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 4)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 积分商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHostAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_host', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('is_show', $value ?: 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
207
app/model/activity/integral/StoreIntegralOrder.php
Normal file
207
app/model/activity/integral/StoreIntegralOrder.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\integral;
|
||||
|
||||
use app\model\product\sku\StoreProductVirtual;
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单Model
|
||||
* Class StoreIntegralOrder
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegralOrder extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral_order';
|
||||
|
||||
protected $insert = ['add_time'];
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* @var bool | string | int
|
||||
*/
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 创建时间修改器
|
||||
* @return int
|
||||
*/
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车信息获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function getCartInfoAttr($value)
|
||||
{
|
||||
return is_string($value) ? json_decode($value, true) ?? [] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联用户表
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field(['uid', 'nickname', 'phone', 'spread_uid'])->bind([
|
||||
'nickname' => 'nickname',
|
||||
'phone' => 'phone',
|
||||
'spread_uid' => 'spread_uid',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联卡密
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function virtual()
|
||||
{
|
||||
return $this->hasMany(StoreProductVirtual::class, 'order_id', 'order_id')->where('order_type', 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联订单记录
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function orderStatus()
|
||||
{
|
||||
return $this->hasMany(StoreIntegralOrderStatus::class, 'oid', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品id搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 核销码搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVerifyCodeAttr($query, $value)
|
||||
{
|
||||
$query->where('verify_code', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('id', $value);
|
||||
} else {
|
||||
$query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单id或者用户名搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchOrderIdRealNameAttr($query, $value)
|
||||
{
|
||||
$query->where('order_id|real_name', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('uid', $value);
|
||||
else
|
||||
$query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户来源
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChannelTypeAttr($query, $value)
|
||||
{
|
||||
if ($value != '') $query->where('channel_type', $value);
|
||||
}
|
||||
|
||||
}
|
||||
57
app/model/activity/integral/StoreIntegralOrderStatus.php
Normal file
57
app/model/activity/integral/StoreIntegralOrderStatus.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\integral;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 订单修改状态记录Model
|
||||
* Class StoreIntegralOrderStatus
|
||||
* @package app\model\activity\integral
|
||||
*/
|
||||
class StoreIntegralOrderStatus extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_integral_order_status';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'change_time';
|
||||
|
||||
/**
|
||||
* 订单ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchOidAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('oid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 变动类型搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchChangeTypeAttr($query, $value)
|
||||
{
|
||||
$query->where('change_type', $value);
|
||||
}
|
||||
}
|
||||
83
app/model/activity/live/LiveAnchor.php
Normal file
83
app/model/activity/live/LiveAnchor.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 主播
|
||||
* Class LiveAnchor
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveAnchor extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_anchor';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
public function room()
|
||||
{
|
||||
return $this->hasOne(LiveRoom::class, 'anchor_wechat', 'wechat');
|
||||
}
|
||||
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|name|wechat|phone', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
}
|
||||
129
app/model/activity/live/LiveGoods.php
Normal file
129
app/model/activity/live/LiveGoods.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\live;
|
||||
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 直播商品
|
||||
* Class LiveGoods
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveGoods extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_goods';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信商品id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchGoodIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('goods_id', $value);
|
||||
else
|
||||
$query->where('good_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|goods_id|product_id|name', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ($value) {
|
||||
case 1:
|
||||
$query->where('audit_status', 2);
|
||||
break;
|
||||
case -1:
|
||||
$query->where('audit_status', 3);
|
||||
break;
|
||||
case 0:
|
||||
$query->whereIn('audit_status', [0, 1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function searchLiveIdAttr($query, $value)
|
||||
{
|
||||
if ($value > 0) {
|
||||
$query->whereNotIn('id', function ($query) use ($value) {
|
||||
$query->name('live_room_goods')->where('live_room_id', $value)->field('live_goods_id')->select();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
155
app/model/activity/live/LiveRoom.php
Normal file
155
app/model/activity/live/LiveRoom.php
Normal file
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 直播间
|
||||
* Class LiveRoom
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveRoom extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $pk = 'id';
|
||||
|
||||
protected $name = 'live_room';
|
||||
|
||||
protected $autoWriteTimestamp = 'int';
|
||||
|
||||
protected $createTime = 'add_time';
|
||||
|
||||
protected function setAddTimeAttr()
|
||||
{
|
||||
return time();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
public function getAddTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getStartTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getEndTimeAttr($value)
|
||||
{
|
||||
if (!empty($value)) {
|
||||
return date('Y-m-d H:i:s', (int)$value);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function roomGoods()
|
||||
{
|
||||
return $this->hasMany(LiveRoomGoods::class, 'live_room_id', 'id');
|
||||
}
|
||||
|
||||
public function anchor()
|
||||
{
|
||||
return $this->hasOne(LiveAnchor::class, 'wechat', 'anchor_wechat')->where('is_show', 1)->where('is_del', 0)->bind(['anchor_img' => 'cover_img']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播间id
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRoomIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value))
|
||||
$query->whereIn('room_id', $value);
|
||||
else
|
||||
$query->where('room_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_show', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKerwordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|room_id|name|anchor_name|anchor_wechat', "%{$value}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* 直播状态
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLiveStatusAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('live_status', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('live_status', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
switch ($value) {
|
||||
case 1:
|
||||
$query->whereIn('live_status', [101, 105, 106]);
|
||||
break;
|
||||
case 2:
|
||||
$query->whereIn('live_status', [102]);
|
||||
break;
|
||||
case 3:
|
||||
$query->whereIn('live_status', [103, 104, 107]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
38
app/model/activity/live/LiveRoomGoods.php
Normal file
38
app/model/activity/live/LiveRoomGoods.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\live;
|
||||
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
|
||||
/**
|
||||
* 直播间关联商品
|
||||
* Class LiveRoomGoods
|
||||
* @package app\model\activity\live
|
||||
*/
|
||||
class LiveRoomGoods extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
protected $name = 'live_room_goods';
|
||||
|
||||
public function goods()
|
||||
{
|
||||
return $this->hasOne(LiveGoods::class, 'id', 'live_goods_id');
|
||||
}
|
||||
|
||||
public function room()
|
||||
{
|
||||
return $this->hasOne(LiveRoom::class, 'id', 'live_room_id');
|
||||
}
|
||||
}
|
||||
152
app/model/activity/lottery/LuckLottery.php
Normal file
152
app/model/activity/lottery/LuckLottery.php
Normal file
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\lottery;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 抽奖活动
|
||||
* Class LuckLottery
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckLottery extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_lottery';
|
||||
|
||||
/**
|
||||
* 抽奖用户等级修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setUserLevelAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户等级获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getUserLevelAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户标签修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setUserLabelAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖用户标签获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getUserLabelAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联奖品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function prize()
|
||||
{
|
||||
return $this->hasMany(LuckPrize::class, 'lottery_id', 'id')->where('status', 1)->where('is_del', 0)->order('sort asc,id asc');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('id|name|desc|content', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖形式搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchFactorAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('factor', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
public function records()
|
||||
{
|
||||
return $this->hasMany(LuckLotteryRecord::class, 'lottery_id', 'id');
|
||||
}
|
||||
}
|
||||
218
app/model/activity/lottery/LuckLotteryRecord.php
Normal file
218
app/model/activity/lottery/LuckLotteryRecord.php
Normal file
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\lottery;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class LuckLotteryRecordDao
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckLotteryRecord extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_lottery_record';
|
||||
|
||||
/**
|
||||
* 收货信息修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setReceiveInfoAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 收货信息获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getReceiveInfoAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货信息修改器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliverInfoAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? json_encode($value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货信息获取器
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliverInfoAttr($value)
|
||||
{
|
||||
return $value ? json_decode($value, true) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联抽奖
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function lottery()
|
||||
{
|
||||
return $this->hasOne(LuckLottery::class, 'id', 'lottery_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联奖品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function prize()
|
||||
{
|
||||
return $this->hasOne(LuckPrize::class, 'id', 'prize_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid', false)->field('uid,real_name,nickname,phone,delete_time');
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户uid搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('uid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关键词搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchKeywordAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where(function ($query1) use ($value) {
|
||||
$query1->where('id|uid|lottery_id|prize_id', 'LIKE', '%' . $value . '%')->whereOr('uid', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('user')->field('uid')->where('account|nickname|phone|real_name|uid', 'LIKE', "%$value%")->select();
|
||||
})->whereOr('lottery_id', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('luck_lottery')->field('id')->where('name|desc|content', 'LIKE', "%$value%")->select();
|
||||
})->whereOr('prize_id', 'IN', function ($query1) use ($value) {
|
||||
$query1->name('luck_prize')->field('id')->where('name|prompt', 'LIKE', "%$value%")->select();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLotteryIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('lottery_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPrizeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('prize_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品不再这个类型中搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNotTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereNotIn('type', $value);
|
||||
} else {
|
||||
$query->where('type', '<>', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否领取
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsReceiveAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_receive', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否发货处理
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDeliverAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_deliver', $value);
|
||||
}
|
||||
}
|
||||
90
app/model/activity/lottery/LuckPrize.php
Normal file
90
app/model/activity/lottery/LuckPrize.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare (strict_types=1);
|
||||
|
||||
namespace app\model\activity\lottery;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class LuckPrizeDao
|
||||
* @package app\model\activity\lottery
|
||||
*/
|
||||
class LuckPrize extends BaseModel
|
||||
{
|
||||
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'luck_prize';
|
||||
|
||||
|
||||
/**
|
||||
* 关联抽奖
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function lottery()
|
||||
{
|
||||
return $this->hasOne(LuckLottery::class, 'id', 'lottery_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 抽奖id搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchLotteryIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('lottery_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖品类型搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStatusAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param $query Model
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
104
app/model/activity/newcomer/StoreNewcomer.php
Normal file
104
app/model/activity/newcomer/StoreNewcomer.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\newcomer;
|
||||
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 新人礼商品Model
|
||||
* Class StoreNewcomer
|
||||
* @package app\model\activity\newcomer
|
||||
*/
|
||||
class StoreNewcomer extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_newcomer';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'product_id')->where('type', 1)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_show', 1)->where('is_del', 0)->where('is_verify', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'id')->where('type', 7);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_del', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
409
app/model/activity/promotions/StorePromotions.php
Normal file
409
app/model/activity/promotions/StorePromotions.php
Normal file
@@ -0,0 +1,409 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\promotions;
|
||||
|
||||
use app\model\activity\coupon\StoreCouponIssue;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 促销活动活动
|
||||
* Class StorePromotions
|
||||
* @package app\model\activity\promotions
|
||||
*/
|
||||
class StorePromotions extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_promotions';
|
||||
|
||||
protected $updateTime = false;
|
||||
|
||||
/**
|
||||
* 优惠叠加
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setDiscountUseAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 优惠叠加
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getDiscountUseAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 叠加使用
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getOverlayAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送优惠券
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveCouponIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getIGiveProductUniqueAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function products()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联优惠券
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function giveCoupon()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送商品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function giveProducts()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',3);
|
||||
}
|
||||
|
||||
/**
|
||||
* 阶梯优惠
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function promotions()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->order('id asc');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联品牌
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function brands()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 4);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关联商品标签
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function productLabels()
|
||||
{
|
||||
return $this->hasMany(StorePromotionsAuxiliary::class, 'promotions_id', 'id')->where('type',1)->where('product_partake_type', 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* pid搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* store_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreIdAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('store_id', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_type搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('promotions_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('promotions_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_cate搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsCateAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('promotions_cate', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* name搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNameAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->whereLike('id|name|desc', "%" . $value . "%");
|
||||
}
|
||||
|
||||
/**
|
||||
* threshold_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchThresholdTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('threshold_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* discount_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchDiscountTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('discount_type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* n_piece_n_discount搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchNPieceNDiscountAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('n_piece_n_discount', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* product_partake_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductPartakeTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_partake_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('product_partake_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动事件搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return void
|
||||
*/
|
||||
public function searchActivityTimeAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
$startTime = $endTime = 0;
|
||||
if (is_array($value)) {
|
||||
$startTime = trim($value[0] ?? 0);
|
||||
$endTime = trim($value[1] ?? 0);
|
||||
} elseif (is_string($value)) {
|
||||
if (strstr($value, '-') !== false) {
|
||||
[$startTime, $endTime] = explode('-', $value);
|
||||
$startTime = trim($startTime);
|
||||
$endTime = trim($endTime);
|
||||
}
|
||||
}
|
||||
if ($startTime || $endTime) {
|
||||
try {
|
||||
date('Y-m-d', $startTime);
|
||||
} catch (\Throwable $e) {
|
||||
$startTime = strtotime($startTime);
|
||||
}
|
||||
try {
|
||||
date('Y-m-d', $endTime);
|
||||
} catch (\Throwable $e) {
|
||||
$endTime = strtotime($endTime);
|
||||
}
|
||||
if ($startTime == $endTime || $endTime == strtotime(date('Y-m-d', $endTime))) {
|
||||
$endTime = $endTime + 86399;
|
||||
}
|
||||
$query->where(function ($b) use($startTime, $endTime) {
|
||||
$b->whereBetween('start_time', [$startTime, $endTime])->whereOr(function ($q) use ($startTime, $endTime) {
|
||||
$q->whereBetween('stop_time', [$startTime, $endTime]);
|
||||
})->whereOr(function ($q) use ($startTime, $endTime) {
|
||||
$q->where('start_time', '<=', $startTime)->where('stop_time', '>=', $endTime);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
215
app/model/activity/promotions/StorePromotionsAuxiliary.php
Normal file
215
app/model/activity/promotions/StorePromotionsAuxiliary.php
Normal file
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\promotions;
|
||||
|
||||
|
||||
use app\model\activity\coupon\StoreCouponIssue;
|
||||
use app\model\product\brand\StoreBrand;use app\model\product\label\StoreProductLabel;use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;use think\Model;
|
||||
|
||||
/**
|
||||
* 优惠活动辅助表
|
||||
*/
|
||||
class StorePromotionsAuxiliary extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $key = 'id';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_promotions_auxiliary';
|
||||
|
||||
/**
|
||||
* 商品规格
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getUniqueAttr($value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) && (!isset($data['type']) || $data['type'] != 3) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联优惠券
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function coupon()
|
||||
{
|
||||
return $this->hasOne(StoreCouponIssue::class, 'id', 'coupon_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function productInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送sku一对一
|
||||
* @return \think\model\relation\hasOne
|
||||
*/
|
||||
public function giveAttrValue()
|
||||
{
|
||||
return $this->hasOne(StoreProductAttrValue::class, 'unique', 'unique')->where('type', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'product_id')->where('type', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品品牌
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function brandInfo()
|
||||
{
|
||||
return $this->hasOne(StoreBrand::class, 'id', 'brand_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品标签
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function productLabelInfo()
|
||||
{
|
||||
return $this->hasOne(StoreProductLabel::class, 'id', 'store_label_id');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('type', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* product_partake_type搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductPartakeTypeAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_partake_type', $value);
|
||||
} else {
|
||||
if ($value) $query->where('product_partake_type', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* promotions_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPromotionsIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('promotions_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('promotions_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* coupon_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchCouponIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('coupon_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('coupon_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* product_id搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('product_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_all搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsAllAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') {
|
||||
$query->where('is_all', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* brand_id
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchBrandIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('brand_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('brand_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* store_label_id
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchStoreLabelIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('store_label_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('store_label_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
347
app/model/activity/seckill/StoreSeckill.php
Normal file
347
app/model/activity/seckill/StoreSeckill.php
Normal file
@@ -0,0 +1,347 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\seckill;
|
||||
|
||||
use app\model\activity\StoreActivity;
|
||||
use app\model\product\product\StoreDescription;
|
||||
use app\model\product\product\StoreProduct;
|
||||
use app\model\product\sku\StoreProductAttrValue;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 秒杀商品Model
|
||||
* Class StoreSeckill
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class StoreSeckill extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_seckill';
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getDeliveryTypeAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 配送信息
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getCustomFormAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品标签
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getStoreLabelIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品保障服务
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getEnsureIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数信息
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getSpecsAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? json_decode($value, true) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片获取器
|
||||
* @param $value
|
||||
* @return array|mixed
|
||||
*/
|
||||
protected function getImagesAttr($value)
|
||||
{
|
||||
return json_decode($value, true) ?: [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return string
|
||||
*/
|
||||
protected function setTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间段ID
|
||||
* @param $value
|
||||
* @return array|false|string[]
|
||||
*/
|
||||
protected function getTimeIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? array_map('intval', array_filter(explode(',', $value))) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function descriptions()
|
||||
{
|
||||
return $this->hasOne(StoreDescription::class, 'product_id', 'id')->where('type', 1)->bind(['description']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联商品商品详情
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function product()
|
||||
{
|
||||
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_show', 1)->where('is_del', 0)->field(['(sales+ficti) as total', 'id'])->bind([
|
||||
'total' => 'total'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* sku一对多
|
||||
* @return \think\model\relation\HasMany
|
||||
*/
|
||||
public function attrValue()
|
||||
{
|
||||
return $this->hasMany(StoreProductAttrValue::class, 'product_id', 'id')->where('type', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联活动
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function activity()
|
||||
{
|
||||
return $this->hasOne(StoreActivity::class, 'id', 'activity_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 商品关联活动
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function activityName()
|
||||
{
|
||||
return $this->hasOne(StoreActivity::class, 'id', 'activity_id')->field(['id', 'name'])->bind([
|
||||
'activity_name' => 'name'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchActivityIdAttr($query, $value)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('activity_id', $value);
|
||||
} else {
|
||||
$query->where('activity_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀时间段
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTimeIdAttr($query, $value)
|
||||
{
|
||||
if ($value) $query->where('find_in_set(' . $value . ',`time_id`)');
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStoreNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsHotAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_hot', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_show', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchProductIdAttr($query, $value, $data)
|
||||
{
|
||||
if ($value) {
|
||||
if (is_array($value)) {
|
||||
$query->whereIn('product_id', $value);
|
||||
} else {
|
||||
$query->where('product_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动有效时间搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSeckillTimeAttr($query, $value)
|
||||
{
|
||||
if ($value == 1) {
|
||||
$time = time();
|
||||
$query->where('start_time', '<=', $time)->where('stop_time', '>=', $time - 86400);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统表单搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchSystemFormIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('system_form_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('system_form_id', $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
100
app/model/activity/seckill/StoreSeckillTime.php
Normal file
100
app/model/activity/seckill/StoreSeckillTime.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\seckill;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 秒杀时间Model
|
||||
* Class StoreSeckillTime
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class StoreSeckillTime extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'store_seckill_time';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 添加时间获取器
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function getAddTimeAttr($value)
|
||||
{
|
||||
if ($value) return date('Y-m-d H:i:s', (int)$value);
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchTitleAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀商品名称搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchNameAttr($query, $value, $data)
|
||||
{
|
||||
if ($value !== '') $query->where('title|id', 'like', '%' . $value . '%');
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
if ($value != '') $query->where('status', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
137
app/model/activity/video/Video.php
Normal file
137
app/model/activity/video/Video.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\video;
|
||||
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 视频Model
|
||||
* Class StoreSeckill
|
||||
* @package app\model\activity\seckill
|
||||
*/
|
||||
class Video extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'video';
|
||||
|
||||
/**
|
||||
* 关联商品ID
|
||||
* @param $value
|
||||
* @return false|string
|
||||
*/
|
||||
protected function setProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_array($value) ? implode(',', $value) : $value;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联商品ID
|
||||
* @param $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function getProductIdAttr($value)
|
||||
{
|
||||
if ($value) {
|
||||
return is_string($value) ? explode(',', $value) : $value;
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 状态搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsShowAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_show', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 推荐搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsRecommendAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_recommend', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否审核搜索器
|
||||
* @param $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsVerifyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_verify', $value ?? 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否删除搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
* @param $data
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value, $data)
|
||||
{
|
||||
$query->where('is_del', $value ?? 0);
|
||||
}
|
||||
|
||||
}
|
||||
195
app/model/activity/video/VideoComment.php
Normal file
195
app/model/activity/video/VideoComment.php
Normal file
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\activity\video;
|
||||
|
||||
use app\model\user\User;
|
||||
use crmeb\basic\BaseModel;
|
||||
use crmeb\traits\ModelTrait;
|
||||
use think\Model;
|
||||
|
||||
/**
|
||||
* 视频评价Model
|
||||
* Class VideoComment
|
||||
* @package app\model\activity\video
|
||||
*/
|
||||
class VideoComment extends BaseModel
|
||||
{
|
||||
use ModelTrait;
|
||||
|
||||
/**
|
||||
* 数据表主键
|
||||
* @var string
|
||||
*/
|
||||
protected $pk = 'id';
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'video_comment';
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联视频
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function video()
|
||||
{
|
||||
return $this->hasOne(Video::class, 'id', 'video_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid');
|
||||
}
|
||||
|
||||
/**
|
||||
* 一对一关联
|
||||
* 视频评论关联用户
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function userVip()
|
||||
{
|
||||
return $this->hasOne(User::class, 'uid', 'uid')->field('uid,avatar,nickname,is_money_level')->bind(['is_money_level']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function reply()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->where('is_del', 0)->where('uid', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理回复
|
||||
* @return \think\model\relation\HasOne
|
||||
*/
|
||||
public function replyContent()
|
||||
{
|
||||
return $this->hasOne(self::class, 'pid', 'id')->field('id,pid,content')->where('is_del', 0)->where('uid', 0)->bind(['reply' => 'content']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \think\model\relation\hasMany
|
||||
*/
|
||||
public function children()
|
||||
{
|
||||
return $this->hasMany(self::class, 'pid', 'id')->where('is_del', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchTypeAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('type', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('type', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联门店ID、供应商ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchRelationIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('relation_id', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('relation_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上级评论搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchPidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('pid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('pid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频ID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchVideoIdAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('video_id', $value);
|
||||
} else {
|
||||
if ($value) $query->where('video_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UID搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchUidAttr($query, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
if ($value) $query->whereIn('uid', $value);
|
||||
} else {
|
||||
if ($value !== '') $query->where('uid', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* is_reply搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsReplyAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_reply', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_del搜索器
|
||||
* @param Model $query
|
||||
* @param $value
|
||||
*/
|
||||
public function searchIsDelAttr($query, $value)
|
||||
{
|
||||
if ($value !== '') $query->where('is_del', $value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user