where('end_time','>',$now)->where($filter)->find(); if($one){ return $one; }else{ $one = KjActivity::find(); return $one; } return false; } /** * 一对多关联商品表 */ public function goods(){ return $this->hasMany('KjActivityGood', 'activity_id')->order('id', 'desc'); } /** * 获取列表 * @param array $param * @return \think\Paginator * @throws \think\db\exception\DbException */ public function getList($param = []) { // 检索查询砍价列表 $filter = $this->getFilter($param); // 排序条件 // $sort = $this->setQuerySort($param); $sort = ['id'=>'desc']; // 查询列表数据 $param['status'] = $param['status']??-1; if($param['status']!=3){ $list = $this->where($filter) ->with([]) ->order($sort) ->paginate(15)->each(function($item) { $id = $item['id']; $item['join_cnt'] = KjActivityJoinModel::where('activity_id',$id)->count(); }); }else{ $list = $this->where(function($query){ $now = Date("Y-m-d H:i:s",time()); $query->where('is_up','=',0)->whereOr("end_time","<",$now); })->where($filter)->with([])->order($sort)->paginate(15)->each(function($item) { $id = $item['id']; $item['join_cnt'] = KjActivityJoinModel::where('activity_id',$id)->count(); }); } return $list ; } //当前的进行中的活动id public function getActivityGoodIdArray($activity_id =0){ $filter[] = ['start_time','<=',date('Y-m-d H:i:s')]; $filter[] = ['end_time','>=',date('Y-m-d H:i:s')]; // $filter[] = ['audit_status_zg','=',10]; // $filter[] = ['is_up','=',1]; $id_array = $this->where($filter)->column("id"); if($activity_id>0){ $id_array = array_diff($id_array,[$activity_id]); } $goods_id_array = ActivityDiscountGoodsModel::where("activity_id","in",$id_array)->column("goods_id"); return $goods_id_array; } /** * 检索查询条件 * @param array $param * @return array */ private function getFilter($param = []) { // 默认查询条件 $params = $this->setQueryDefaultValue($param, ['name' => '','audit_status_zg'=>-1,'status'=>-1]); // 检索查询条件 $filter = []; !empty($params['name']) && $filter[] = ['name', 'like', "%{$params['name']}%"]; if(isset($params['audit_status_zg']) && $params['audit_status_zg']>-1){ $filter[] = ['audit_status_zg', '=', $params['audit_status_zg']]; } if(isset($params['kj_type']) && $params['kj_type']>-1){ $filter[] = ['kj_type', '=', $params['kj_type']]; } if (!empty($params['betweenTime'])) { $times = between_time($params['betweenTime']); $filter[] = ['start_time', '>=', Date('Y-m-d H:i:s',$times['start_time'])]; $filter[] = ['end_time', '<', Date('Y-m-d H:i:s',$times['end_time'] + 86400)]; } //活动状态 if(isset($params['status'])&&$params['status']>-1){ switch ($params['status']){ case 1://进行中 $filter[] = ['start_time','<=',date('Y-m-d H:i:s')]; $filter[] = ['end_time','>=',date('Y-m-d H:i:s')]; // $filter[] = ['audit_status_zg','=',10]; $filter[] = ['is_up','=',1]; $filter[] = ['audit_status_zg','=',10]; break; case 2://未开始 $filter[] = ['start_time','>',date('Y-m-d H:i:s')]; $filter[] = ['is_up','=',1]; $filter[] = ['audit_status_zg','=',10]; break; case 3://已结束 // $filter[] = ['end_time','<',date('Y-m-d H:i:s')]; // $filter[] = ['is_up','in',[0,1]]; $filter[] = ['audit_status_zg','=',10]; break; } } return $filter; } //活动状态 即将开始或已结束 public function getStatusAttr() { if($this->audit_status_zg!=10){ return 0; } if($this->is_up==0){ return 3; } $now = date("Y-m-d H:i:s",time()); if ($now < $this->start_time) { return 2; } if ($now > $this->end_time) { return 3; } if($this->is_up==1){ return 1; }else{ return 2; } } /** * 审核 * @param array $data * @return bool */ public function audit(array $data): bool { $this->transaction(function () use ($data) { $id = (int)$this['id']; $this->save($data); $user = StoreUserService::getLoginInfo(); $real_name = $user['user']['real_name']??''; $id = (int)$this['id']; if($data['audit_status_zg']==10){ (new CommonHis())->add(2, $id, $real_name,'同意并发布活动'); } if($data['audit_status_zg']==20){ $remark = '不同意'." ".$data['refuse_desc_zg']; (new CommonHis())->add(2, $id, $real_name,$remark); } }); return true; } /** * 作废 * @param array $data * @return bool */ public function down(array $data): bool { $this->transaction(function () use ($data) { $id = (int)$this['id']; $this->save($data); }); return true; } /** * 详情 * @param int $id * @return null|static */ public static function detail(int $id,array $with=[]) { return self::get($id,$with); } /** * 添加 * @param $data * @return false|int */ public function addOne($data) { isset($data['start_time']) && empty($data['start_time']) && $data['start_time'] = null; isset($data['end_time']) && empty($data['end_time']) && $data['end_time'] = null; $this->transaction(function () use ($data) { $this->save($data); if(isset($data['goods'])){ $goods = new KjActivityGoodModel; $flag = $goods->add($this->id,$data['goods']); if(!$flag){ $this->error = $goods->error; Db::rollback(); return false; } } $user = StoreUserService::getLoginInfo(); $real_name = $user['user']['real_name']??''; $id = (int)$this['id']; (new CommonHis())->add(2, $id, $real_name,'提交审核'); }); return true; } /** * 编辑 * @param $data * @return bool|int */ public function edit($data) { isset($data['start_time']) && empty($data['start_time']) && $data['start_time'] = null; isset($data['end_time']) && empty($data['end_time']) && $data['end_time'] = null; $this->transaction(function () use ($data) { $this->save($data); if(isset($data['goods'])){ $goods = new KjActivityGoodModel; $flag = $goods->add($this->id,$data['goods']); if(!$flag){ $this->error = $goods->error; return false; } } $user = StoreUserService::getLoginInfo(); $real_name = $user['user']['real_name']??''; $id = (int)$this['id']; (new CommonHis())->add(1, $id, $real_name,'提交审核'); }); return true; } /** * 关联记录 * @return \think\model\relation\BelongsTo */ public function his() { return $this->hasMany('app\common\model\CommonHis','target_id','id')->where('target_type',2)->order('id', 'desc'); } // /** // * 删除 // * @param $id // * @return bool|int // */ // public function remove() // { // return $this->delete(); // } }