| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?php
- namespace addons\HiGo\backend\controllers;
- use addons\HiGo\common\models\HigoMall;
- use addons\HiGo\common\models\HigoMerchantRewardLog;
- use addons\Store\common\models\StoreCate;
- use addons\Store\common\services\MerchantReduceProfitService;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\models\mall\MallAddons;
- use common\models\order\Order;
- use common\models\user\User;
- use Yii;
- /**
- * 默认控制器
- *
- * Class MerchantController
- * @package addons\HiGo\backend\controllers
- */
- class MerchantController extends BaseController
- {
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- if (Yii::$app->request->isAjax) {
- $get = Yii::$app->request->get();
- $user_id = $get['user_id'] ?? 0;
- $keyword = $get['keyword'] ?? '';
- $filter = [];
- if ($user_id > 0) {
- $filter[] = ['user_id' => $user_id];
- }
- if (!empty($keyword)) {
- $search_user_ids = User::find()->where([
- 'or', ['like', 'nickname', $keyword], ['like', 'mobile', $keyword]
- ])->select(['id'])->asArray()->all();
- $search_user_ids = array_column($search_user_ids, 'id');
- if ($search_user_ids) {
- $filter[] = ['user_id' => $search_user_ids];
- } else {
- $filter[] = ['user_id' => []];
- }
- }
- $params = [
- 'where' => array_merge([
- ['mall_id' => $this->mall_id],
- ], $filter),
- 'order' => 'id DESC'
- ];
- $list = HigoMerchantRewardLog::listPage($params);
- if ($list === false) {
- return $this->error(HigoMerchantRewardLog::getStaticError());
- }
- // $source_table_ids = array_column($list['list'], 'source_table_id');
- $source_table_ids = [];
- $cashier_ids = [];
- /** @var \addons\Store\common\models\StoreCashierOrder $cashier_order_class */
- $cashier_order_class = \addons\Store\common\models\StoreCashierOrder::class;
- foreach($list['list'] as $val){
- if($val['source_table'] == Order::tableName()){
- $source_table_ids[] = $val['source_table_id'];
- }elseif($val['source_table'] == $cashier_order_class::tableName()){
- $cashier_ids[] = $val['source_table_id'];
- }
- }
- $order_list = Order::lists([
- 'where' => [['id' => $source_table_ids], ['mall_id' => $this->mall_id]],
- 'with' => ['user', 'detail'],
- 'index' => 'id'
- ], true);
-
- $cashier_order_list = $cashier_order_class::lists([
- 'where' => [['id' => $cashier_ids], ['mall_id' => $this->mall_id]],
- 'select' => 'id, pay_money, order_no,user_id',
- 'index' => 'id',
- 'with' => [
- 'user' => function ($query){
- return $query->select('id, nickname, avatar_url');
- }
- ]
- ]);
- foreach ($list['list'] as &$item) {
- $item['goods_name'] = '';
- $item['order_no'] = '';
- $item['price'] = '';
- $item['nickname'] = '';
- $item['avatar_url'] = '';
- $item['desc'] = '商家让利扣除商家嗨贝';
- if (isset($order_list[$item['source_table_id']])) {
- $item['order_no'] = $order_list[$item['source_table_id']]['order_no'];
- $item['goods_name'] = $order_list[$item['source_table_id']]['detail'][0]['goods_name'];
- $item['price'] = $order_list[$item['source_table_id']]['detail'][0]['price'];
- $item['nickname'] = $order_list[$item['source_table_id']]['user']['nickname'];
- $item['avatar_url'] = $order_list[$item['source_table_id']]['user']['avatar_url'];
- }else if(isset($cashier_order_list[$item['source_table_id']])){
- $item['order_no'] = $cashier_order_list[$item['source_table_id']]['order_no'];
- $item['goods_name'] = '收银台';
- $item['price'] = $cashier_order_list[$item['source_table_id']]['pay_money'];
- $item['nickname'] = $cashier_order_list[$item['source_table_id']]['user']['nickname'];
- $item['avatar_url'] = $cashier_order_list[$item['source_table_id']]['user']['avatar_url'];
- }
- }
- unset($item);
- $higo_mall = HigoMall::getOne([['mall_id' => $this->mall_id]],true);
- $total = HigoMerchantRewardLog::find()->where(['mall_id' => $this->mall_id])
- ->select('sum(profit_price) as total_profit_price,sum(profit) as total_profit')->asArray()->one();
- $list['orderStatistics'] = [
- 'total_send_hi_bei' => $higo_mall['hi_bei'] ?? 0,
- 'total_profit' => $total['total_profit_price'] ?? 0,
- 'total_deduct_hi_bei' => $total['total_profit'] ?? 0
- ];
- return $this->success('success', $list);
- }
- return $this->render('index', []);
- }
- /**
- * 让利列表
- * @return mixed|string|null
- */
- public function actionReduceProfit()
- {
- if (\Yii::$app->request->isAjax) {
- // 判断有没有安装 门店插件
- if (!MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_STORE)) {
- return $this->error('请安装门店插件');
- }
- if (\Yii::$app->request->isPost) { // 审核
- $setting = $this->request->post();
- // 数据校验
- $res = \Yii::$app->services->validate->validate($setting, [
- [['id', 'status', 'remark'], 'required'],
- [['id', 'status'], 'integer'],
- [['remark'], 'string']
- ], [
- 'id' => '审核对象',
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- try {
- $ret = (new MerchantReduceProfitService())->audit($this->mall_id, $setting['id'],
- $this->admin->id, $setting['status'], $setting['remark']);
- return is_string($ret) ? $this->error($ret) : $this->success('操作成功');
- } catch (\Exception $e) {
- return $this->error($e->getMessage());
- }
- } else {
- $params = $this->request->get();
- // 数据校验
- $res = \Yii::$app->services->validate->validate($params, [
- [['store_keyword', 'date_start', 'date_end'], 'string'],
- [['rate'], 'number'],
- [['status', 'page', 'limit', 'cate'], 'integer'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $ret = (new MerchantReduceProfitService())->page($this->mall_id, $params);
- if (is_array($ret)) {
- $cate_list = StoreCate::find()
- ->select('id,name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
- $ret['cate_list'] = $cate_list;
- }
- return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret);
- }
- }
- return $this->render($this->action->id);
- }
- }
|