request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $get['mall_id'] = $this->mall_id; $params = []; if(!empty($get['keyword'])){ $params['where'][] = ['like','name',$get['keyword']]; } $params['where'][] = ['=', 'mall_id', $this->mall_id]; $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]]; $params['limit'] = 10; $params['order'] = 'created_at desc'; try{ $pageData = MembersCard::listPage($params, false); }catch(\Exception $e){ return $this->fail('获取数据失败'); } if ($pageData === false) return $this->error(MembersCard::getStaticError()); return $this->success('操作成功', $pageData); } } return $this->render('index'); } /** * 亲友卡编辑 * * @return string */ public function actionEdit() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { // 反显商品信息 $get = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($get, [[['id'], 'integer']]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $detail = []; if($get['id']){ $membersCard = MembersCard::find()->where(['id'=>$get['id']])->asArray()->one(); if($membersCard){ $membersCard['member_limit'] = json_decode($membersCard['member_limit'],true) ?? []; } $detail = $membersCard; } $levels = UserLevel::getUserLevel([['mall_id' => $this->mall_id],['status'=>StatusEnum::ENABLED]], [], true, 'id,level,name'); return $this->success('操作成功',compact('detail', 'levels')); } else { // 编辑商品 $form = \Yii::$app->request->post('form'); $id = \Yii::$app->request->post('id'); $form['mall_id'] = $this->mall['id']; if($id){ $form['id'] = $id; } $form['member_limit'] = $form['member_limit'] ? json_encode($form['member_limit']) : ''; $res = MembersCard::setData($form); if ($res === false) return $this->error(MembersCard::getStaticError()); return $this->success('操作成功'); } } return $this->render($this->action->id); } public function actionList() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $get['mall_id'] = $this->mall_id; $params = []; if (!empty($get['keyword'])) { $card_list = MembersCard::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'name', $get['keyword']] ]], 'select' => 'id']); $card_ids = array_column($card_list, 'id'); $params['where'][] = ['in', 'card_id', $card_ids]; } if (!empty($get['keyword2'])) { $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['=', 'id', $get['keyword2']], ['like', 'username', $get['keyword2']], ['like', 'nickname', $get['keyword2']], ['like', 'mobile', $get['keyword2']] ]], 'select' => 'id']); $user_ids = array_column($user_list, 'id'); $params['where'][] = ['in', 'user_id', $user_ids]; } if(!empty($get['type'])){ if($get['type'] == 1){ $params['where'][] = ['=', 'parent_card_id', 0]; }elseif($get['type'] == 2){ $params['where'][] = ['!=', 'parent_card_id', 0]; } } if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')]; if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')]; $params['where'][] = ['=', 'mall_id', $this->mall_id]; $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]]; $params['limit'] = 10; $params['order'] = 'created_at desc'; try{ $pageData = MembersCardGive::listPage($params, false); }catch(\Exception $e){ return $this->fail('获取数据失败'); } if ($pageData === false) return $this->error(MembersCard::getStaticError()); if (!empty($pageData['list'])) { $user_id_arr = array_column($pageData['list'], 'user_id'); $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']); $user_arr = []; foreach ($user_list as $item) { $user_arr[$item['id']] = $item; } $card_ids = array_column($pageData['list'], 'card_id'); $card_list = MembersCard::lists(['where' => [['id' => $card_ids]], 'select' => 'id,name,background_url','index'=>'id']); foreach ($pageData['list'] as &$v) { $v['nickname'] = $v['avatar_url'] = $v['parent_id'] = $v['parent_name'] = $v['mobile'] = ''; if (isset($user_arr[$v['user_id']])) { $v['mobile'] = $user_arr[$v['user_id']]['mobile']; $v['nickname'] = $user_arr[$v['user_id']]['nickname']; $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url']; } $v['background_url'] = $v['name'] = ''; if(isset($card_list[$v['card_id']])){ $v['name'] = $card_list[$v['card_id']]['name']; $v['background_url'] = $card_list[$v['card_id']]['background_url']; } } } return $this->success('操作成功', $pageData); } } return $this->render('list',[ ]); } public function actionIncomeList() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $get['mall_id'] = $this->mall_id; $params = []; if (!empty($get['keyword'])) { $order_list = Order::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['=', 'order_no', $get['keyword']] ]], 'select' => 'id']); $order_ids = array_column($order_list, 'id'); $params['where'][] = ['in', 'order_id', $order_ids]; } if (!empty($get['keyword2'])) { $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['=', 'id', $get['keyword2']], ['like', 'username', $get['keyword2']], ['like', 'nickname', $get['keyword2']], ['like', 'mobile', $get['keyword2']] ]], 'select' => 'id']); $user_ids = array_column($user_list, 'id'); $params['where'][] = ['in', 'user_id', $user_ids]; } if (!empty($get['keyword3'])) { $store_list = Store::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'store_name', $get['keyword3']] ]], 'select' => 'id']); $store_ids = array_column($store_list, 'id'); $params['where'][] = ['in', 'store_id', $store_ids]; } if(!empty($get['type'])){ if($get['type'] == 1){ $params['where'][] = ['=', 'is_frozen', 0]; }elseif($get['type'] == 2){ $params['where'][] = ['=', 'is_frozen', 1]; } } if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')]; if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')]; $params['where'][] = ['=', 'mall_id', $this->mall_id]; $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]]; $params['limit'] = 10; $params['order'] = 'created_at desc'; try{ $pageData = CommissionLog::listPage($params, false); }catch(\Exception $e){ return $this->fail('获取数据失败'); } if ($pageData === false) return $this->error(MembersCard::getStaticError()); if (!empty($pageData['list'])) { $user_id_arr = array_column($pageData['list'], 'user_id'); $user_id_arrs = array_column($pageData['list'], 'reward_user_id'); $user_id_arr = array_merge($user_id_arr,$user_id_arrs); $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']); $user_arr = []; foreach ($user_list as $item) { $user_arr[$item['id']] = $item; } foreach ($pageData['list'] as &$v) { $v['nickname'] = $v['avatar_url'] = $v['nickname'] = ''; $v['reward_nickname'] = $v['reward_avatar_url'] = $v['reward_nickname'] = ''; if (isset($user_arr[$v['user_id']])) { $v['mobile'] = $user_arr[$v['user_id']]['mobile']; $v['nickname'] = $user_arr[$v['user_id']]['nickname']; $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url']; } if (isset($user_arr[$v['reward_user_id']])) { $v['reward_mobile'] = $user_arr[$v['reward_user_id']]['mobile']; $v['reward_nickname'] = $user_arr[$v['reward_user_id']]['nickname']; $v['reward_avatar_url'] = $user_arr[$v['reward_user_id']]['avatar_url']; } if($v['store_id']){ $store = Store::findOne(['id'=>$v['store_id']]); $v['store_name'] = $store['store_name']; } if(!$v['is_cashier']){ $order = Order::findOne(['id'=>$v['order_id']]); $order_detail = OrderDetail::findOne(['id'=>$v['order_detail_id']]); $v['order_money'] = $order_detail['price']; }else{ $order = StoreCashierOrder::findOne(['id'=>$v['order_id']]); $v['order_money'] = $order['money']; } $v['order_no'] = $order['order_no']; if($v['is_frozen']){ $v['desc'] = '未结算'; }else{ $v['desc'] = '已结算'; } } } return $this->success('操作成功', $pageData); } } return $this->render('income-list',[ ]); } /** * 基础配置 * * @return string */ public function actionSetting() { $retuest = Yii::$app->request; if ($retuest->isAjax) { if ($retuest->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params,[ [['is_enable','settlement_method','is_remind','remind_days'], 'integer'], [['description'], 'string'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); // 保存配置 $config = Yii::$app->services->setting->addons->set($this->mall_id, MembersCardEnum::ADDONS_NAME, ['basic' => $params]); $this->success('保存成功', $config); } else { // 获取配置 $config = Yii::$app->services->setting->addons->get($this->mall_id, MembersCardEnum::ADDONS_NAME, 'basic'); $this->success('获取成功', $config); } } return $this->render($this->action->id); } /* *更改状态 */ public function actionUpdateStatus() { $params = Yii::$app->request->post(); if (!in_array($params['is_enable'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) { return $this->error('参数不对'); } $params['mall_id'] = $this->mall_id; $res = MembersCard::setData($params); if ($res === false) return $this->error(MembersCard::getStaticError()); return $this->success('操作成功'); } /** * 删除卡片 * @Author bing * @DateTime 2021-08-20 14:49:55 * @copyright: Copyright (c) 2020 广东七件事集团 * @return void */ public function actionLabel() { if (Yii::$app->request->isAjax) { if (Yii::$app->request->isPost) { $form = Yii::$app->request->post(); $rules = [[['id'], 'required'], [['id'], 'integer']]; $type = $form['type']; switch ($form['type']) { case 'sort': $rules[] = [['sort'], 'required']; break; case 'destroy': $form['status'] = StatusEnum::DELETE; $rules[] = [['status'], 'required']; break; } $res = Yii::$app->services->validate->validate($form, $rules); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $form['mall_id'] = $this->mall['id']; $res = MembersCard::setData($form); if ($res === false) return $this->error(MembersCard::getStaticError()); if($type == 'destroy'){ MembersCardGive::updateAll(['status' => StatusEnum::DELETE],['status' => StatusEnum::ENABLED,'card_id' => $res['id']]); } return $this->success('操作成功',$form); } } return $this->render($this->action->id); } /** * 删除卡片 * @Author bing * @DateTime 2021-08-20 14:49:55 * @copyright: Copyright (c) 2020 广东七件事集团 * @return void */ public function actionListLabel() { if (Yii::$app->request->isAjax) { if (Yii::$app->request->isPost) { $form = Yii::$app->request->post(); $rules = [[['id'], 'required'], [['id'], 'integer']]; $type = $form['type']; switch ($form['type']) { case 'sort': $rules[] = [['child_num'], 'required']; $members_card_give_num = MembersCardGive::find()->where(['mall_id'=>$this->mall_id,'status'=>StatusEnum::ENABLED,'parent_card_id'=>$form['id']])->count(); if($members_card_give_num > $form['child_num']){ return $this->error('已赠送子卡数量大于要设置的子卡数量'); } break; case 'destroy': $form['status'] = StatusEnum::DELETE; $rules[] = [['status'], 'required']; break; } $res = Yii::$app->services->validate->validate($form, $rules); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $form['mall_id'] = $this->mall['id']; $res = MembersCardGive::setData($form); if ($res === false) return $this->error(MembersCardGive::getStaticError()); if($type == 'destroy'){ MembersCardGive::updateAll(['status' => StatusEnum::DELETE],['status' => StatusEnum::ENABLED,'parent_card_id' => $res['id']]); } return $this->success('操作成功',$form); } } return $this->render($this->action->id); } public function actionChildList() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $get['mall_id'] = $this->mall_id; $params = []; if(!empty($get['id'])){ $params['where'][] = ['in', 'parent_card_id', $get['id']]; } if (!empty($get['keyword'])) { $card_list = MembersCard::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'name', $get['keyword']] ]], 'select' => 'id']); $card_ids = array_column($card_list, 'id'); $params['where'][] = ['in', 'card_id', $card_ids]; } if (!empty($get['keyword2'])) { $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['=', 'id', $get['keyword2']], ['like', 'username', $get['keyword2']], ['like', 'nickname', $get['keyword2']], ['like', 'mobile', $get['keyword2']] ]], 'select' => 'id']); $user_ids = array_column($user_list, 'id'); $params['where'][] = ['in', 'user_id', $user_ids]; } // if(!empty($get['type'])){ // if($get['type'] == 1){ // $params['where'][] = ['=', 'parent_card_id', 0]; // }elseif($get['type'] == 2){ // $params['where'][] = ['!=', 'parent_card_id', 0]; // } // } if (!empty($get['start'])) $params['where'][] = ['>=', 'created_at', strtotime($get['start'] . ' 00:00:00')]; if (!empty($get['end'])) $params['where'][] = ['<', 'created_at', strtotime($get['end'] . ' 00:00:00')]; $params['where'][] = ['=', 'mall_id', $this->mall_id]; $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]]; $params['limit'] = 10; $params['order'] = 'created_at desc'; try{ $pageData = MembersCardGive::listPage($params, false); }catch(\Exception $e){ return $this->fail('获取数据失败'); } if ($pageData === false) return $this->error(MembersCard::getStaticError()); if (!empty($pageData['list'])) { $user_id_arr = array_column($pageData['list'], 'user_id'); $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'select' => 'id,nickname,avatar_url,mobile,parent_id']); $user_arr = []; foreach ($user_list as $item) { $user_arr[$item['id']] = $item; } $card_ids = array_column($pageData['list'], 'card_id'); $card_list = MembersCard::lists(['where' => [['id' => $card_ids]], 'select' => 'id,name,background_url','index'=>'id']); foreach ($pageData['list'] as &$v) { $v['nickname'] = $v['avatar_url'] = $v['parent_id'] = $v['parent_name'] = $v['mobile'] = ''; if (isset($user_arr[$v['user_id']])) { $v['mobile'] = $user_arr[$v['user_id']]['mobile']; $v['nickname'] = $user_arr[$v['user_id']]['nickname']; $v['avatar_url'] = $user_arr[$v['user_id']]['avatar_url']; } $v['background_url'] = $v['name'] = ''; if(isset($card_list[$v['card_id']])){ $v['name'] = $card_list[$v['card_id']]['name']; $v['background_url'] = $card_list[$v['card_id']]['background_url']; } } } return $this->success('操作成功', $pageData); } } return $this->render('child-list',[ ]); } /** * 删除卡片 * @Author bing * @DateTime 2021-08-20 14:49:55 * @copyright: Copyright (c) 2020 广东七件事集团 * @return void */ public function actionChildLabel() { if (Yii::$app->request->isAjax) { if (Yii::$app->request->isPost) { $form = Yii::$app->request->post(); $rules = [[['id'], 'required'], [['id'], 'integer']]; switch ($form['type']) { case 'sort': $rules[] = [['sort'], 'required']; break; case 'destroy': $form['is_recycle'] = 1; $form['recycle_at'] = time(); $form['status'] = StatusEnum::DISABLED; $rules[] = [['is_recycle','recycle_at','status'], 'required']; break; } $res = Yii::$app->services->validate->validate($form, $rules); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $form['mall_id'] = $this->mall['id']; $res = MembersCardGive::setData($form); if ($res === false) return $this->error(MembersCardGive::getStaticError()); return $this->success('操作成功',$form); } } return $this->render($this->action->id); } public function actionUsedList() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $get = \Yii::$app->request->get(); $get['mall_id'] = $this->mall_id; $params = []; if(!empty($get['id'])){ $params['where'][] = ['=', 'card_give_id', $get['id']]; } if (!empty($get['keyword'])) { $store_list = Store::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'store_name', $get['keyword']] ]], 'select' => 'id']); $store_ids = array_column($store_list, 'id'); $params['where'][] = ['in', 'store_id', $store_ids]; } if (!empty($get['keyword1'])) { $order_detail_list = OrderDetail::lists(['where' => [['mall_id' => $this->mall_id], [ 'or', ['like', 'goods_name', $get['keyword1']], ]], 'select' => 'id']); $order_detail_ids = array_column($order_detail_list, 'id'); $params['where'][] = ['in', 'order_detail_id', $order_detail_ids]; } $params['where'][] = ['=', 'mall_id', $this->mall_id]; $params['where'][] = ['in', 'status', [StatusEnum::ENABLED]]; $params['limit'] = 10; $params['order'] = 'created_at desc'; try{ $pageData = MembersCardUsedLog::listPage($params, false); }catch(\Exception $e){ return $this->fail('获取数据失败'); } if ($pageData === false) return $this->error(MembersCard::getStaticError()); if (!empty($pageData['list'])) { foreach ($pageData['list'] as &$v) { if($v['store_id']){ $store = Store::findOne(['id'=>$v['store_id']]); $v['store_name'] = $store['store_name']; } if(!$v['is_cashier']){ $order = Order::findOne(['id'=>$v['order_id']]); $order_detail = OrderDetail::findOne(['id'=>$v['order_detail_id']]); $v['order_money'] = $order_detail['price']; $v['goods_name'] = $order_detail['goods_name']; }else{ $order = StoreCashierOrder::findOne(['id'=>$v['order_id']]); $v['order_money'] = $order['money']; $v['goods_name'] = '扫码付款'; } $v['order_no'] = $order['order_no']; } } return $this->success('操作成功', $pageData); } } return $this->render('used-list',[ ]); } //不用验证权限 public function actionSearchUser() { if (\Yii::$app->request->isAjax) { $keyword = \Yii::$app->request->get('keyword', ''); $list['list'] = User::searchUser(['keyword' => $keyword, 'mall_id' => $this->mall_id]); return $this->success('操作成功', $list); } return $this->error(); } public function actionSearchCard() { if (\Yii::$app->request->isAjax) { $keyword = \Yii::$app->request->get('keyword', ''); $list['list'] = MembersCard::search(['keyword' => $keyword, 'mall_id' => $this->mall_id]); return $this->success('操作成功', $list); } return $this->error(); } public function actionCardEdit() { if (\Yii::$app->request->isAjax) { $params = \Yii::$app->request->post(); if(!$params['user_id'] || !$params['card_give_id'] || !$params['expired_days']){ return $this->error('参数错误'); } $card = MembersCard::findOne(['id'=>$params['card_give_id']]); if(!$card){ return $this->error('亲友卡不存在'); } $give = MembersCardGive::findOne(['status'=>StatusEnum::ENABLED,'user_id'=>$params['user_id'],'card_id'=>$params['card_give_id']]); if($give){ return $this->error('该用户已拥有该亲友卡'); } $card_no = MembersCardGive::find() ->where(['mall_id'=>$this->mall_id]) ->andWhere(['>','card_no',0]) ->andWhere(['=','parent_card_id',0]) ->orderBy('created_at desc') ->one(); if($card_no){ $no = $card_no['card_no'] + 1; }else{ $no = 40001; } $where = []; $where['mall_id'] = $this->mall_id; $where['user_id'] = $params['user_id']; $where['discount'] = $card['discount']; $where['child_discount'] = $card['child_discount']; $where['child_num'] = $card['child_num']; $where['child_expired_days'] = $card['child_expired_days']; $where['card_id'] = $card['id']; $where['card_no'] = $no; $where['expired_at'] = strtotime("+".$params['expired_days']." day"); $res = MembersCardGive::setData($where); if(!$res){ return $this->error('亲友卡新增失败'); } return $this->success('请求成功'); } return $this->error(); } }