request->isAjax) { $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]]; $params = [ 'where' => $where, 'order' => 'id desc' ]; $page_data = CloudStockUpgradeBag::listPage($params, true,true); if(!empty($page_data['list'])){ $goods_id_arr = array_column($page_data['list'],'goods_id'); $give_goods_id_arr = array_column($page_data['list'],'give_goods_id'); $level_arr = array_column($page_data['list'],'level'); $goods_arr = Goods::lists(['where'=>[['id'=>$goods_id_arr]],'index'=>'id']); $give_goods_arr = Goods::lists(['where'=>[['id'=>$give_goods_id_arr]],'index'=>'id']); $level_list = CloudStockLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['level'=>$level_arr],['status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]],'index'=>'level']); $goods_ids = []; $give_goods_ids = []; $give_goods_num_arr = []; foreach ($page_data['list'] as $val){ if(!empty($val['goods_id'])){ if(!empty(intval($val['goods_id']))){ $goods_ids[]= intval($val['goods_id']); }else{ $goods_ids = array_merge($goods_ids,json_decode($val['goods_id'],true)); } } if(!empty($val['give_goods_id'])){ if(!empty(intval($val['give_goods_id']))){ $give_goods_ids[]= intval($val['give_goods_id']); }else{ $give_goods_ids = array_merge($give_goods_ids,json_decode($val['give_goods_id'],true)); } } if(!empty($val['give_goods_num'])){ if(!empty(intval($val['give_goods_num']))){ $give_goods_num_arr[$val['id']]= [$val['give_goods_id']=>intval($val['give_goods_num'])]; }else{ $give_goods_num_arr[$val['id']]= array_column(json_decode($val['give_goods_num'],true),'num','goods_id'); } } } $g_ids = array_merge($goods_ids,$give_goods_ids); $g_list = Goods::lists(['where'=>[['id'=>$g_ids]],'select'=>'id,goods_name as name,cover_pic','index'=>'id']); foreach ($page_data['list'] as &$item){ $goods_id = []; $give_goods_id = []; $goods_list = []; $give_goods_list = []; if(!empty($item['goods_id'])){ if(!empty(intval($item['goods_id']))){ $goods_id[]= intval($item['goods_id']); }else{ $goods_id = json_decode($item['goods_id'],true); } } if(!empty($item['give_goods_id'])){ if(!empty(intval($item['give_goods_id']))){ $give_goods_id[]= intval($item['give_goods_id']); }else{ $give_goods_id = json_decode($item['give_goods_id'],true); } } foreach ($goods_id as $g_id){ if(isset($g_list[$g_id])){ $goods_list[] = $g_list[$g_id]; } } foreach ($give_goods_id as $g_id){ if(isset($g_list[$g_id])){ $num = 0; if(isset($give_goods_num_arr[$item['id']][$g_id])){ $g_list[$g_id]['num'] = $give_goods_num_arr[$item['id']][$g_id]; }else{ $g_list[$g_id]['num'] = $num; } $give_goods_list[] = $g_list[$g_id]; } } $item['goods_list'] = $goods_list; $item['give_goods_list'] = $give_goods_list; $item['level_name'] = ''; $item['goods_name'] = $item['cover_pic'] = ''; $item['give_goods_name'] = $item['give_cover_pic'] = ''; if($goods_arr[$item['goods_id']]){ $item['goods_name'] = $goods_arr[$item['goods_id']]['goods_name']; $item['cover_pic'] = $goods_arr[$item['goods_id']]['cover_pic']; } if($give_goods_arr[$item['give_goods_id']]){ $item['give_goods_name'] = $give_goods_arr[$item['give_goods_id']]['goods_name']; $item['give_cover_pic'] = $give_goods_arr[$item['give_goods_id']]['cover_pic']; } if($level_list[$item['level']]){ $item['level_name'] = $level_list[$item['level']]['name']; } } } $level_list = CloudStockLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED]],'select'=>'level,name']); foreach ($level_list as &$item){ $item['direct_equal_reward'] = $item['direct_over_reward'] = $item['indirect_equal_reward'] = $item['indirect_over_reward'] = 0; } $page_data['level_reward'] = $level_list; return $this->success('操作成功', $page_data); } return $this->render($this->action->id, []); } public function actionEdit() { try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $id = Yii::$app->request->get('id', ''); $level_list = CloudStockLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED]],'order'=>'level asc','select'=>'level,name']); foreach ($level_list as &$item){ $item['direct_equal_reward'] = $item['direct_over_reward'] = $item['indirect_equal_reward'] = $item['indirect_over_reward'] = 0; } if(empty($id)){ $data['level_reward'] = $level_list; return $this->success('操作成功', $data); } $data = CloudStockUpgradeBag::getOne([['id'=>$id],['mall_id'=>$this->mall_id],['status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]]],true); $goods_id = []; $give_goods_id = []; $give_goods_num = []; if(!empty($data['goods_id'])){ if(!empty(intval($data['goods_id']))){ $goods_id[]= intval($data['goods_id']); }else{ $goods_id= json_decode($data['goods_id'],true); } } if(!empty($data['give_goods_id'])){ if(!empty(intval($data['give_goods_id']))){ $give_goods_id[]= intval($data['give_goods_id']); }else{ $give_goods_id= json_decode($data['give_goods_id'],true); } } if(!empty($data['give_goods_num'])){ if(!empty(intval($data['give_goods_num']))){ $give_goods_num[]= intval($data['give_goods_num']); }else{ $give_goods_num= json_decode($data['give_goods_num'],true); } } $goods_list = Goods::lists(['where'=>[['id'=>$goods_id]],'select'=>'id,goods_name as name,cover_pic']); $give_goods_list = Goods::lists(['where'=>[['id'=>$give_goods_id]],'select'=>'id,goods_name as name,cover_pic']); $give_goods_num_arr = array_column($give_goods_num,'num','goods_id'); foreach ($give_goods_list as &$item){ $item['num'] = $give_goods_num_arr[$item['id']]??0; } $level_reward_arr = json_decode($data['level_reward'],true); if(!is_array($level_reward_arr)) $level_reward_arr = []; $level_reward_arr = array_column($level_reward_arr,null,'level'); foreach ($level_list as &$item){ if(isset($level_reward_arr[$item['level']])) { $item['direct_equal_reward'] = $level_reward_arr[$item['level']]['direct_equal_reward']; $item['direct_over_reward'] = $level_reward_arr[$item['level']]['direct_over_reward']; $item['indirect_equal_reward'] = $level_reward_arr[$item['level']]['indirect_equal_reward']; $item['indirect_over_reward'] = $level_reward_arr[$item['level']]['indirect_over_reward']; } } $data['goods_list'] = $goods_list; $data['give_goods_list'] = $give_goods_list; $data['goods_id'] = $goods_id; $data['give_goods_id'] = $give_goods_id; $data['give_goods_num'] = $give_goods_num; $data['level_reward'] = $level_list; return $this->success('操作成功', $data); } if ($request->isPost) { $params = Yii::$app->request->post(); $give_goods_num = []; $give_goods_arr = []; if(!empty($params['give_goods_list'])){ foreach ($params['give_goods_list'] as $item){ $give_goods_arr[$item['id']] = $item['num']; $give_goods_num[] = ['goods_id'=>$item['id'],'num'=>$item['num']]; } } $cloud_stock_goods_list = CloudStockGoods::lists(['where'=>[['mall_id'=>$this->mall_id],['goods_id'=>$params['give_goods_id']],['status'=>StatusEnum::ENABLED]]]); $total_money= 0; if(!empty($cloud_stock_goods_list)){ foreach ($cloud_stock_goods_list as $item){ $agent_price_arr = json_decode($item['agent_price'],true); $agent_price = 0; foreach ($agent_price_arr as $val){ if($val['level']==$params['level']){ $agent_price = $val['price']; break; } } if(!empty($give_goods_arr[$item['goods_id']])){ $total_money+=$agent_price*$give_goods_arr[$item['goods_id']]; } } } $where = [['mall_id'=>$this->mall_id],['status'=>[StatusEnum::ENABLED,StatusEnum::DISABLED]]]; if(!empty($params['id'])){ $where[]=['<>','id',$params['id']]; } $cloud_stock_goods_list = CloudStockUpgradeBag::lists(['where'=>$where]); $up_goods_id = []; foreach ($cloud_stock_goods_list as $val){ if(!empty($val['goods_id'])){ if(!empty(intval($val['goods_id']))){ $up_goods_id[]= $val['goods_id']; }else{ $up_goods_id= array_merge($up_goods_id,json_decode($val['goods_id'],true)); } } } if(array_intersect($params['goods_id'],$up_goods_id)){ return $this->error('该升级商品已经存在其他升级礼包'); } $params['give_goods_num'] = json_encode($give_goods_num); $params['level_reward'] = !empty($params['level_reward'])?json_encode($params['level_reward']):json_encode([]); $params['goods_id'] = !empty($params['goods_id'])?json_encode($params['goods_id']):json_encode([]); $params['give_goods_id'] = !empty($params['give_goods_id'])?json_encode($params['give_goods_id']):json_encode([]); $params['mall_id'] = $this->mall_id; $res = CloudStockUpgradeBag::setData($params); if ($res === false) return $this->error(CloudStockAgent::getStaticError()); return $this->success('操作成功'); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } return $this->render('edit'); } public function actionUpdateStatus(){ $params = Yii::$app->request->post(); $params['mall_id'] = $this->mall_id; $res = CloudStockUpgradeBag::setData($params); if ($res === false) return $this->error(CloudStockLevel::getStaticError()); return $this->success('操作成功'); } public function actionDel(){ $params = Yii::$app->request->get(); $params['mall_id'] = $this->mall_id; $params['status'] = StatusEnum::DELETE; $res = CloudStockUpgradeBag::setData($params); if ($res === false) return $this->error(CloudStockLevel::getStaticError()); return $this->success('操作成功'); } //不用验证权限 public function actionGetCloudStockGoodsList(){ $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]]; $params = [ 'where' => $where, 'order' => 'id desc','select'=>'id,goods_id' ]; $page_data = CloudStockGoods::listPage($params, true,true); if(!empty($page_data['list'])){ $goods_id_arr = array_column($page_data['list'],'goods_id'); $goods_arr = Goods::lists(['where'=>[['id'=>$goods_id_arr]],'index'=>'id']); foreach ($page_data['list'] as &$item){ $item['goods_name'] = $item['cover_pic'] = ''; if(!empty($goods_arr[$item['goods_id']])){ $item['goods_name'] = $goods_arr[$item['goods_id']]['goods_name']; $item['cover_pic'] = $goods_arr[$item['goods_id']]['cover_pic']; } } } return $this->success('操作成功', $page_data); } }