<?php
|
|
namespace app\branch\model\activity;
|
|
use app\common\model\branch\Activity as ActivityModel;
|
use app\common\model\branch\ActivityProductPrice as ActivityProductPriceModel;
|
|
/**
|
* 活动模型
|
*/
|
class Activity extends ActivityModel
|
{
|
/**
|
* 获取列表
|
*/
|
public function getList($params, $branch_id)
|
{
|
return $this->with(['image', 'category'])
|
->where('branch_id', '=', $branch_id)
|
->where('is_delete', '=', 0)
|
->order(['sort' => 'desc', 'create_time' => 'desc'])
|
->paginate($params);
|
|
}
|
|
/**
|
* 新增记录
|
*/
|
public function add($data, $branch_id)
|
{
|
$model = new ActivityModel();
|
$product = new ActivityProductPriceModel();
|
$data['app_id'] = self::$app_id;
|
$data['branch_id'] = $branch_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];
|
$product_list = $data['product_list']; // 促销商品
|
$model->startTrans();
|
try {
|
$res = $model->save($data);
|
if(!$res){
|
$this->rollback();
|
$this->error = '活动数据保存出错';
|
return false;
|
}
|
if ($product_list) {
|
$activity_id = $model->activity_id;
|
foreach ($product_list as &$item){
|
$item['app_id'] = $data['app_id'];
|
$item['shop_supplier_id'] = $data['visit_supplier_id'];
|
$item['activity_id'] = $activity_id;
|
}
|
unset($item);
|
$res1 = $product->saveAll($product_list);
|
if(!$res1){
|
$this->rollback();
|
$this->error = '促销商品保存出错';
|
return false;
|
}
|
}
|
// 提交事务
|
$this->commit();
|
return true;
|
} catch (\Exception $e) {
|
// 回滚事务
|
$this->rollback();
|
$this->error = $e->getMessage();
|
return false;
|
}
|
}
|
|
/**
|
* 更新记录
|
*/
|
public function edit($data)
|
{
|
$model = new ActivityModel();
|
$product = new ActivityProductPriceModel();
|
//报名时间
|
$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];
|
$product_list = $data['product_list']; // 促销商品
|
unset($data['create_time'], $data['update_time']);
|
$model->startTrans();
|
try {
|
$res = $model->update($data, ['activity_id' => $data['activity_id']]);
|
if(!$res){
|
$this->rollback();
|
$this->error = '活动数据保存出错';
|
return false;
|
}
|
// 先软删除原有的促销商品
|
$product->where('activity_id', '=', $data['activity_id'])->update(['is_delete' => 1]);
|
if ($product_list) {
|
foreach ($product_list as $key => &$item){
|
$item['app_id'] = $data['app_id'];
|
$item['shop_supplier_id'] = $data['visit_supplier_id'];
|
$item['activity_id'] = $data['activity_id'];
|
$item['is_delete'] = 0;
|
}
|
unset($item);
|
$res1 = $product->saveAll($product_list);
|
if(!$res1){
|
$this->rollback();
|
$this->error = '商品数据保存出错';
|
return false;
|
}
|
}
|
// 提交事务
|
$this->commit();
|
return true;
|
} catch (\Exception $e) {
|
// 回滚事务
|
$this->rollback();
|
$this->error = $e->getMessage();
|
return false;
|
}
|
}
|
|
/**
|
* 软删除
|
*/
|
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;
|
}
|
}
|
|
public function activityGroupNum($date, $branch_id)
|
{
|
$field = 'count(*) as total,from_unixtime(create_time,\'%m-%d\') as `day`';
|
if ($date == 'year') {
|
$field = 'count(*) as total,from_unixtime(create_time,\'%m\') as `day`';
|
}
|
$model = $this->field($field)
|
->where('is_delete', '=', 0)
|
->when($date, function ($query, $date) {
|
getModelTime($query, $date, 'create_time');
|
})->when($branch_id, function ($query, $branch_id) {
|
$query->where('branch_id', $branch_id);
|
});
|
return $model->order('create_time ASC')->group('day')->select();
|
}
|
}
|