<?php
|
|
namespace app\shop\model\branch;
|
|
use app\common\model\branch\Activity as ActivityModel;
|
use app\common\model\user\User as UserModel;
|
|
/**
|
* 活动模型
|
*/
|
class Activity extends ActivityModel
|
{
|
/**
|
* 获取列表
|
*/
|
public function getList($params)
|
{
|
$model = $this->with(['image', 'category', 'branch'])
|
->where('is_delete', '=', 0);
|
|
// 按审核状态筛选
|
if (isset($params['audit_status']) && $params['audit_status'] !== '') {
|
$model = $model->where('audit_status', '=', $params['audit_status']);
|
}
|
|
return $model->order(['sort' => 'desc', 'create_time' => 'desc'])
|
->paginate($params);
|
|
}
|
|
/**
|
* 审核活动
|
*/
|
public function audit($activity_id, $data)
|
{
|
$model = $this->detail($activity_id);
|
if (!$model) {
|
$this->error = '活动不存在';
|
return false;
|
}
|
|
$updateData = [
|
'audit_status' => $data['audit_status'],
|
'audit_time' => time(),
|
'audit_remark' => $data['audit_remark'] ?? ''
|
];
|
|
return $model->save($updateData);
|
}
|
|
/**
|
* 新增记录
|
*/
|
public function add($data)
|
{
|
// 检查走访企业30天限制(编辑时排除当前活动)
|
if ($data['is_visit'] == 1) {
|
$visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name']);
|
if ($visitCheck) {
|
$this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访';
|
return false;
|
}
|
}
|
$data['app_id'] = self::$app_id;
|
//报名时间
|
$data['register_start_time'] = strtotime($data['reg_date'][0]);
|
$data['register_end_time'] = strtotime($data['reg_date'][1]);
|
//活动时间
|
$data['activity_start_time'] = strtotime($data['act_date'][0]);
|
$data['activity_end_time'] = strtotime($data['act_date'][1]);
|
// 格式化坐标信息
|
$coordinate = explode(',', $data['coordinate']);
|
$data['latitude'] = $coordinate[0];
|
$data['longitude'] = $coordinate[1];
|
return $this->save($data);
|
}
|
|
/**
|
* 更新记录
|
*/
|
public function edit($data)
|
{
|
// 检查走访企业30天限制(编辑时排除当前活动)
|
if ($data['is_visit'] == 1) {
|
$visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name'], $data['activity_id']);
|
if ($visitCheck) {
|
$this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访';
|
return false;
|
}
|
}
|
$data['app_id'] = self::$app_id;
|
//报名时间
|
$data['register_start_time'] = strtotime($data['reg_date'][0]);
|
$data['register_end_time'] = strtotime($data['reg_date'][1]);
|
//活动时间
|
$data['activity_start_time'] = strtotime($data['act_date'][0]);
|
$data['activity_end_time'] = strtotime($data['act_date'][1]);
|
// 格式化坐标信息
|
$coordinate = explode(',', $data['coordinate']);
|
$data['latitude'] = $coordinate[0];
|
$data['longitude'] = $coordinate[1];
|
return $this->save($data);
|
}
|
|
/**
|
* 软删除
|
*/
|
public function setDelete()
|
{
|
return $this->save(['is_delete' => 1]);
|
}
|
|
/**
|
* 获取活动总数量
|
*/
|
public static function getActivityTotal($where)
|
{
|
$model = new static;
|
return $model->where($where)->where('is_delete', '=', 0)->count();
|
}
|
|
/**
|
* 开启禁止
|
*/
|
public function setStatus($status)
|
{
|
// 开启事务
|
$this->startTrans();
|
try {
|
//更改分会状态
|
$this->save(['status' => $status]);
|
$this->commit();
|
return true;
|
} catch (\Exception $e) {
|
$this->error = $e->getMessage();
|
$this->rollback();
|
return false;
|
}
|
}
|
|
}
|