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