$saas_user_id, 'is_delete' => 0, 'type' => $type_name]); $sales_man_arr = Salesman::find()->where(['admin_id' => $admin->id, 'is_delete' => 0])->select("id, saas_user_id")->asArray()->all(); $sales_man_ids = array_column($sales_man_arr, 'id'); $store_admin_ids = array_column($sales_man_arr, 'saas_user_id'); $query = Store::find()->where(['is_delete'=>0]); $store_ids = SalesmanNewStore::find()->where(['salesman_saas_id' => array_column($sales_man_ids, 'saas_user_id')]) ->andWhere(['>', 'store_id', 0])->select('store_id')->column(); $area_level = $admin->area_level; if ($admin->type === Admin::ADMIN_TYPE_DEFAULT) { if ($area_level == 1) { $query->andWhere(['province_id' => $admin->province_id, 'city_id' => $admin->city_id, 'district_id' => $admin->district_id]); } elseif ($area_level == 2) { $query->andWhere(['province_id' => $admin->province_id, 'city_id' => $admin->city_id]); } elseif ($area_level == 3){ $query->andWhere(['province_id' => $admin->province_id]); } else { $query->andWhere(['admin_id' => $admin->id]); } } elseif ($admin->type === Admin::ADMIN_TYPE_BD_AGENT) { $query->andWhere(['OR', ['salesman_id' => $sales_man_ids], ['store_admin' => $store_admin_ids], ['admin_id' => $admin->id], ['id' => $store_ids] ]); } return $query; } //下级店铺 public function lowerLevelShop(){ $saas_user_id = get_saas_user_id(); $type_name = Admin::ADMIN_TYPE_DEFAULT; if ((int)$this->type === 1) { $type_name = Admin::ADMIN_TYPE_BD_AGENT; } $store = $this->commonSql($type_name); $count = $store->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]); /* @var Order[] $list */ $store_list = $store->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all(); foreach($store_list as &$item){ $item['created_at'] = date("Y-m-d",$item['created_at']); } return [ 'code'=>0, 'msg'=>"SUCCESS", 'data'=>$store_list ]; } //店铺订单 public function shopOrder(){ $saas_user_id = get_saas_user_id(); $type_name = Admin::ADMIN_TYPE_DEFAULT; if ((int)$this->type === 1) { $type_name = Admin::ADMIN_TYPE_BD_AGENT; } $store_query = $this->commonSql($type_name); $store_ids = $store_query->select('id')->column(); $query = Order::find() ->where(['is_delete'=>0,'store_id'=>$store_ids])->andWhere(['and',['<>', 'trade_status', '1'], ['is_pay' => 1]])->select('id, order_no, store_id, name, created_at, is_pay, pay_price, is_price, trade_status, is_sale');//->asArray()->all(); // $query = Store::find()->where(['salesman_id'=>$sales_man_ids,'is_delete'=>0])->select('id,name,logo');//->asArray()->all(); $query->with(['store'=>function($query){ $query->select('id, name, logo')->asArray(); }]); $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]); /* @var Order[] $list */ $order_list = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all(); foreach($order_list as &$o){ $o['status'] = Order::TRADE_STATUS_TEXT[$o['trade_status']]; if (intval($o['is_sale'])) { $o['status'] = "已发放"; } $o['created_at'] = date("Y-m-d H:i:s",$o['created_at']); $o['amount'] = StoreShareMoney::find()->where(['order_id' => $o['id'], 'user_id' => $saas_user_id])->sum("commission") ?: '0.00'; $o['goods_list'] = OrderDetail::find()->select('goods_name, pic')->andWhere(['order_id' => $o['id']])->asArray()->all(); } return [ 'code'=>0, 'msg'=>"SUCCESS", 'data'=>$order_list ]; } //店铺续费订单 public function storeReOrder(){ $saas_user_id = get_saas_user_id(); $type_name = Admin::ADMIN_TYPE_BD_AGENT; $admin = Admin::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0, 'type' => $type_name]); $sales_man_ids = Salesman::find()->where(['admin_id'=>$admin->id,'is_delete'=>0])->select("id, saas_user_id")->asArray()->all(); $store_ids = SalesmanNewStore::find()->where(['salesman_saas_id' => array_column($sales_man_ids, 'saas_user_id')]) ->andWhere(['>', 'store_id', 0])->select('store_id')->column(); $store_query = Store::find()->where(['is_delete'=>0]); $store_query->andWhere([ 'or', ['admin_id' => $admin->id],//添加店铺时候修改的 ['in', 'salesman_id', array_column($sales_man_ids, 'id')],//修改店铺业务员时候修改的 ['in', 'store_admin', array_column($sales_man_ids, 'saas_user_id')],//修改店铺业务员时候修改的 ['in', 'id', $store_ids]//业务员帮助店铺进件时候增加 ]); $store_ids = $store_query->select('id')->column(); $query = StoreReOrder::find()->where(['store_id'=>$store_ids,'is_pay'=>1])->select('id,order_no,total_price,desc,store_id,', new Expression('FROM_UNIXTIME(created_at,"%Y-%m-%d %H:%i:%s") as created_at,'));//->asArray()->all(); $query->with(['store'=>function($query){ $query->with(['admin'=>function($querys){ $querys->select('name')->asArray(); }])->select("id,name,logo,admin_id")->asArray(); }]); $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]); $order = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all(); foreach ($order as &$item) { $store = Store::findOne($item['store_id']); $item['store'] = [ 'id' => $store->id ?? '', 'name' => $store->name ?? '', 'logo' => $store->logo ?: Option::get('web_log', $store->id, 'web', '')['value'], ]; } return [ 'code'=>0, 'msg'=>"SUCCESS", 'data'=>$order ]; } public function getDataInfo() { try { $saas_user = get_saas_user(); //店铺入驻费用返利 $query = StoreShareMoney::find()->where(['user_id' => $saas_user->id, 'is_delete' => 0]); $all_query = clone $query; $all_commission = (float)$saas_user->share_profit ?: 0; //推广店铺店铺佣金 $store_query = clone $query; $store_commission = (float)$store_query->andWhere(['type' => [StoreShareMoney::TYPE_AGENT, StoreShareMoney::TYPE_BD_AGENT], 'status' => StoreShareMoney::STATUS_STORE_ORDER]) ->select('commission')->sum('commission'); //店铺缴费 $store_fee_query = clone $query; $store_fee_commission = (float)$store_fee_query->andWhere(['status' => StoreShareMoney::STATUS_STORE_SETTLED])->select('commission') ->sum('commission'); //店铺区域佣金 $store_area_query = clone $query; $store_area_commission = (float)$store_area_query->andWhere(['status' => StoreShareMoney::STATUS_STORE_ORDER, 'type' => StoreShareMoney::TYPE_AREA_AGENT, 'cloud_type' => 0])->select('commission') ->sum('commission'); //供货商区域佣金 $supplier_query = clone $query; $supplier_commission = (float)$supplier_query->andWhere(['status' => StoreShareMoney::STATUS_STORE_ORDER, 'type' => StoreShareMoney::TYPE_AREA_AGENT, 'cloud_type' => 1])->select('commission') ->sum('commission'); //产品代理佣金 $goods_agent_query = clone $query; $goods_agent_commission = (float)$goods_agent_query->andWhere(['type' => StoreShareMoney::TYPE_GOODS_AGENT])->select('commission') ->sum('commission'); return [ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'saas_money' => $all_commission, 'store_commission' => $store_commission,//推荐店铺返利佣金 'store_fee_commission' => $store_fee_commission,//店铺缴费佣金 'store_area_commission' => $store_area_commission,//店铺区域佣金 'supplier_commission' => $supplier_commission,//入住商区域佣金 'goods_agent_commission' => $goods_agent_commission//产品代理佣金 ] ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //分佣 public function commission(){ $saas_user = get_saas_user(); $profit_type = (int)$this->profit_type; //店铺入驻费用返利 $storeShareMoneyTable = StoreShareMoney::tableName(); $sharingReceiverTable = SharingReceiver::tableName(); $sql = "select * from (SELECT id, store_id, user_id, commission AS money, order_id, created_at, is_send, order_type, cloud_type, `type`, status, 0 AS profit_type FROM ${storeShareMoneyTable} where is_delete = 0 UNION ALL SELECT id, store_id, saas_id AS user_id, amount AS money, order_no AS order_id, created_at, is_pay AS is_send, 0 AS order_type, 0 AS cloud_type, 3 AS `type`, 1 AS status, 5 AS profit_type FROM ${sharingReceiverTable} where is_delete = 0 AND execute_type = 1 ) AS sm where sm.user_id = " . $saas_user->id;//后面的SharingReceiver信息profit_type之前的自定义字段都随便填写的 不进入where条件就行 // $query = StoreShareMoney::find()->where(['user_id'=>$saas_user->id,'is_delete'=>0])->select('id, // store_id, commission as money, order_id, created_at, is_send, order_type, cloud_type, type, status') // ; switch ($profit_type) { case 1: $sql .= " AND sm.type = " . StoreShareMoney::TYPE_AREA_AGENT . " AND cloud_type = 0 "; break; case 2: $sql .= " AND sm.type = " . StoreShareMoney::TYPE_AREA_AGENT . " AND cloud_type = 1 "; break; case 3: $sql .= " AND sm.status = " . StoreShareMoney::STATUS_STORE_SETTLED; break; case 4: $sql .= " AND sm.type = " . StoreShareMoney::TYPE_GOODS_AGENT; break; case 5: // $sql .= " AND sm.profit_type = " . $profit_type; break; default: $sql .= " AND sm.type in (" . implode(',', [StoreShareMoney::TYPE_AGENT, StoreShareMoney::TYPE_BD_AGENT]) . ") "; break; } $sql .= " ORDER BY sm.created_at DESC "; $count = \Yii::$app->db->createCommand($sql)->query()->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $this->page - 1, 'pageSize' => $this->limit]); /* @var Order[] $list */ $sql .= " LIMIT " . $pagination->limit . " OFFSET " . $pagination->offset; $data = \Yii::$app->db->createCommand($sql)->queryAll(); foreach ($data as &$item) { //类型 if ($item['profit_type'] < 5) {//分账转帐类型 //店铺区域佣金 / 入驻商(供货商)区域佣金 / 店铺推荐返利 if ((int)$item['type'] === StoreShareMoney::TYPE_AREA_AGENT) { if ((int)$item['cloud_type'] === 0) { $model = Order::find(); $item['profit_type'] = 1; //店铺区域佣金 } else { $model = PurchaseOrder::find(); $item['profit_type'] = 2;//入驻商(供货商)区域佣金 } $item['order'] = $model->where(['AND', ['id' => $item['order_id']],['<>', 'trade_status', '1']]) ->select('id, order_no, total_price')->asArray()->one(); } if (in_array($item['type'], [StoreShareMoney::TYPE_AGENT, StoreShareMoney::TYPE_BD_AGENT, StoreShareMoney::TYPE_AREA_AGENT])) { if ((int)$item['cloud_type'] === 0) { $model = Order::find(); $item['profit_type'] = 1; //店铺区域佣金 } else { $model = PurchaseOrder::find(); $item['profit_type'] = 2;//入驻商(供货商)区域佣金 } if (intval($item['type']) === StoreShareMoney::TYPE_AREA_AGENT) { if ((int)$item['cloud_type'] === 0) { $item['profit_type'] = 1; //店铺区域佣金 } else { $item['profit_type'] = 2;//入驻商(供货商)区域佣金 } } else { $item['order'] = $model->where(['AND', ['id' => $item['order_id']],['<>', 'trade_status', '1']]) ->select('id, order_no, total_price')->asArray()->one(); $item['profit_type'] = 0; } } //店铺缴费 if ($item['status'] === StoreShareMoney::STATUS_STORE_SETTLED) { $item['order'] = StoreReOrder::find()->where(['id' => $item['order_id']]) ->select('id, order_no, total_price')->asArray()->one(); $item['profit_type'] = 3; } //产品代理佣金 if ((int)$item['type'] === StoreShareMoney::TYPE_GOODS_AGENT) { $item['order'] = Order::find()->where(['AND', ['id' => $item['order_id']],['<>', 'trade_status', '1']]) ->select('id, order_no, total_price')->asArray()->one(); $item['profit_type'] = 4; } $item['order'] = !empty($item['reorder'])?$item['reorder']:$item['order']; $item['new_order'] = \app\plugins\scanCodePay\models\Order::findOne($item['order_id']); if(!$item['order']){ $item['order'] = \app\plugins\scanCodePay\models\Order::findOne($item['order_id']); } if ((int)$item['status'] === StoreShareMoney::STATUS_STORE_ORDER) { if ((int)$item['order_type'] === 1) { $item['order'] = PurchaseOrder::find()->select('id, order_no, total_price, supplier_id')->where(['id' => $item['order_id']]) ->asArray()->one(); if ((int)$item['cloud_type'] === 1) { $supplier = Supplier::find()->select('id,supplier_name name,logo')->where(['cloud_supplier_id' => $item['order']['supplier_id']]) ->asArray()->one(); } } else { $OrderTransit = OrderTransit::find()->where(['order_id' => $item['order_id']]) ->asArray()->one(); if ((int)$item['cloud_type'] === 1) { $supplier = Supplier::find()->select('id,name,logo')->where(['cloud_supplier_id' => $OrderTransit['supplier_id']]) ->asArray()->one(); } } if (!empty($supplier)) { $item['store'] = $supplier; } } } else { $item['order'] = [ 'order_no' => $item['order_id'] ]; $item['store'] = Store::find()->where(['id' => $item['store_id']])->select('id, name, logo') ->asArray()->one(); } $item['created_at'] = date("Y-m-d H:i:s",$item['created_at']); } return [ 'code'=>0, 'msg'=>"SUCCESS", 'data'=>[ 'list' => $data, 'row_count' => $count, 'page_count' => $pagination->pageCount, ] ]; } }