| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- <?php
- namespace addons\ValetOrder\backend\controllers;
- use addons\ValetOrder\common\logic\order\OrderMarketingLogic;
- use addons\ValetOrder\common\service\OrderService;
- use common\enums\AppEnum;
- use common\enums\PayTypeEnum;
- use common\enums\StatusEnum;
- use addons\ValetOrder\common\logic\order\OrderFormLogic;
- use addons\ValetOrder\common\logic\order\OrderInitDataLogic;
- use backend\modules\mall\services\OrderService as MallOrderService;
- use common\models\common\Region;
- use common\models\goods\Goods;
- use common\models\goods\GoodsAttr;
- use common\models\order\Order;
- use common\models\user\User;
- use common\models\user\UserLevel;
- use Yii;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\ValetOrder\backend\controllers
- */
- class DefaultController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isGet) {
- $params = Yii::$app->request->get();
- $valid = Yii::$app->services->validate->validate($params, [
- [['page', 'limit'], 'integer'],
- [['user', 'user_id', 'buy_user', 'buy_user_id', 'goods_name', 'start_date', 'end_date'], 'string'],
- ]);
- if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $ret = (new OrderService())->page($this->mall_id, $params);
- return is_string($ret) ? $this->error($ret) : $this->success('获取成功',$ret);
- }
- return $this->render('index');
- }
- public function actionCreate()
- {
- if (\Yii::$app->request->isAjax && \Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $valid = Yii::$app->services->validate->validate($params, [
- [['province_id', 'city_id', 'district_id', 'num', 'attr_id'], 'integer'],
- [['province', 'city', 'district', 'address', 'name', 'phone', 'parent_mobile', 'mobile', 'buy_user_id'], 'string'],
- [['province_id', 'city_id', 'district_id', 'num', 'attr_id'], 'required'],
- [['province', 'city', 'district', 'address', 'name', 'phone', 'mobile'], 'required'],
- ['mobile', 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- ['phone', 'match', 'pattern' => '/^1\d{10}$/', 'message' => '请输入正确的手机号码'],
- ]);
- if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- // 执行创建订单
- $orderFormLogic = new OrderFormLogic();
- $form = $orderFormLogic->getDefaultform($this->mall_id, intval($params['buy_user_id']));
- $form->attributes = [
- 'data' => [
- 'attr_id' => $params['attr_id'],
- 'num' => $params['num'],
- 'address_id'=> 0,
- 'extra_info'=> [
- 'valet_order' => [
- 'mobile' => $params['mobile'],
- 'parent' => $params['parent_mobile'] ?? '',
- 'backend' => StatusEnum::ENABLED,
- ]
- ]
- ],
- 'type' => 'buy_now',
- 'name' => $params['name'],
- 'mobile' => $params['phone'],
- 'province' => $params['province'],
- 'city' => $params['city'],
- 'district' => $params['district'],
- 'province_id' => $params['province_id'],
- 'city_id' => $params['city_id'],
- 'district_id' => $params['district_id'],
- 'address' => $params['address'],
- ];
- $form['action'] = AppEnum::ACTION_CREATE;
- // 初始化订单数据
- $orderInitDataLogic = new OrderInitDataLogic();
- $form = $orderInitDataLogic->execute($form, $form->type);
- if ($form === false) return $this->error($orderInitDataLogic->getError());
- $orderMarketingLogic = new OrderMarketingLogic();
- $form = $orderMarketingLogic->run($form, true);
- if ($form === false) return $this->error($orderMarketingLogic->getError());
- $res = Order::createOrder($form);
- if ($res === false) return $this->error(Order::getStaticError());
- // 处理成功则需要支付
- if (!empty($res['transaction']['trade_no'])) {
- // 执行支付
- $params['mall_id'] = $this->mall_id;
- $params['mch_id'] = $this->admin->mch_id;
- $params['operator_id'] = $this->admin->id;
- $params['operator_name'] = $this->admin->account;
- $params['id'] = $res['transaction']['order_ids'];
- $service = new MallOrderService(['mall_id' => $this->mall_id]);
- $res = $service->adminPay($params);
- if ($res === false) return $this->error(Goods::getStaticError());
- return $this->success();
- }
- return $this->error("下单失败");
- }
- return $this->render('create');
- }
- public function actionRegion()
- {
- $id = intval(\Yii::$app->request->get('region_id', 0));
- $ret = Region::lists([
- 'where' => [
- ['parent_id' => $id]
- ]
- ]);
- return $this->success('获取成功', $ret);
- }
- /**
- * @name:
- * @msg: 获取会员列表
- * @param {*}
- * @return {*}
- */
- public function actionUsers()
- {
- if (!\Yii::$app->request->isGet) {
- return $this->error('请求方式错误');
- }
- $user_id = \Yii::$app->request->get('user_id');
- $keyword = \Yii::$app->request->get('keyword');
- $page = \Yii::$app->request->get('page', 1);
- $limit = \Yii::$app->request->get('limit', $this->pageSize);
- $wheres[] = ['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED];
- if (!empty($user_id)) {
- $wheres[] = ['id' => $user_id];
- }
- if (!empty($keyword)) {
- $wheres[] = ['or', ['like', 'nickname', $keyword], ['like', 'mobile', $keyword]];
- }
- $params = [
- 'select' => 'id,nickname,avatar_url,mobile,level,parent_id',
- 'where' => $wheres,
- 'order' => 'created_at desc',
- 'page' => $page,
- 'limit' => $limit,
- ];
- $user_list = User::listPage($params);
- if (empty($user_list['list'])) {
- if (false === $user_list['list']) {
- return $this->error(User::getStaticError());
- }
- } else {
- $levels = UserLevel::find()
- ->select('id,level,name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->indexBy('level')
- ->all();
- $parent_ids = array_column($user_list['list'], 'parent_id');
- $parent_users = User::find()
- ->select('id,nickname,avatar_url,mobile,level,parent_id')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $parent_ids])
- ->asArray()
- ->indexBy('id')
- ->all();
- foreach ($user_list['list'] as &$user) {
- if (empty($user['avatar_url'])) {
- $user['avatar_url'] = \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
- }
- $level = $levels[$user['level']] ?? [];
- $parent_user = $parent_users[$user['parent_id']] ?? [];
- $user['level_name'] = $level['name'] ?? '';
- $user['parent_nickname'] = $parent_user['nickname'] ?? '';
- }
- }
- return $this->success('success', $user_list);
- }
- public function actionGoodsAttr()
- {
- $ret = GoodsAttr::lists([
- 'where' => [
- ['goods_id' => \Yii::$app->request->get('goods_id')],
- ['status' => StatusEnum::ENABLED]
- ]
- ]);
- return $this->success('获取成功', $ret);
- }
- }
|