| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <?php
- namespace addons\Area\backend\controllers;
- use addons\Area\common\enums\AreaEnum;
- use addons\Area\common\models\AreaAgent;
- use addons\Area\common\models\AreaCommissionLog;
- use addons\Area\common\models\AreaRegional;
- use addons\Area\common\service\CommunityService;
- use common\enums\OrderStatusEnum;
- use common\enums\RefundStatusEnum;
- use common\enums\StatusEnum;
- use common\models\order\Order;
- use common\models\order\OrderDetail;
- use common\models\order\OrderRefund;
- use common\models\user\User;
- /**
- * 社区
- */
- class DataController extends BaseController
- {
- public $enableCsrfValidation = false;
- public function actionIndex()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isGet) {
- $params = \Yii::$app->request->get();
- $mall_id = $this->mall_id;
- $where[] = ['mall_id' => $mall_id];
- $where[] = ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $user_ids = [];
- if (!empty($params['level'])) $where[] = ['level' => $params['level']];
- if (!empty($params['keyword'])) {
- $is_search = 1;
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['=', 'id', $params['keyword']],
- ['like', 'nickname', $params['keyword'] . '%', false],
- ['like', 'mobile', $params['keyword'] . '%', false]
- ]], 'select' => 'id']);
- $user_ids = array_column($user_list, 'id');
- }
- if (!empty($is_search)) $where[] = ['user_id' => $user_ids];
- $params['limit'] = 10;
- $params['where'] = $where;
- $params['order'] = 'id DESC';
- $params['select'] = 'id,user_id,realname,mobile,level,address,regional_id,province_id,city_id,district_id,town_id,total_commission,created_at,community_id, is_enable_dividend';
- $params['with'] = ['user' => function ($query) use ($mall_id) {
- $query->where(['mall_id' => $mall_id])->select('id,nickname,avatar_url,mobile,parent_id')->with(['parent']);
- }, 'goods' => function($query) {
- $query->with(['goods']);
- }];
- $pageData = AreaAgent::listPage($params, false);
- if ($pageData === false) return $this->error(AreaAgent::getStaticError());
- $pageData['level_map'] = AreaEnum::getLevelMap(null, $this->mall_id);
- if (!empty($pageData['list'])) {
- foreach ($pageData['list'] as &$item) {
- $_where = [
- 'and',
- ['mall_id' => $mall_id],
- ['status' => StatusEnum::ENABLED],
- ['pay_status' => StatusEnum::ENABLED],
- ['store_id' => 0],
- ['mch_id' => 0]
- ];
- switch ($item['level']) {
- case AreaEnum::PROVINCE:
- $_where[] = ['province' => $item['province_id']];
- break;
- case AreaEnum::CITY:
- $_where[] = ['city' => $item['city_id']];
- break;
- case AreaEnum::DISTRICT:
- $_where[] = ['area' => $item['district_id']];
- break;
- case AreaEnum::TOWN:
- $_where[] = ['town' => $item['town_id']];
- break;
- case AreaEnum::COMMUNITY:
- $_where[] = ['community' => $item['community_id']];
- break;
- case AreaEnum::REGIONAL:
- $res = AreaRegional::findOne($item['regional_id']);
- if(empty($res->province_ids) == false){
- $_where[] = ['in', 'province', explode(',',$res->province_ids)];
- }else{
- $_where[] = ['province' => -1]; //防止数据为空
- }
- break;
- default:
- $_where[] = ['id' => 0];
- }
- if (!empty($params['start'])) $_where[] = ['>=', 'created_at', strtotime($params['start'] . ' 00:00:00')];
- if (!empty($params['end'])) $_where[] = ['<=', 'created_at', strtotime($params['end'] . ' 23:59:59')];
- $order_ids = Order::find()->where($_where)->select('id')->column();
- $item['order_num'] = count($order_ids);
- $order_amount = Order::find()->where($_where)->sum('goods_price');
- $item['order_amount'] = !empty($order_amount)? $order_amount : 0;
- $pay_amount = Order::find()->where($_where)->sum('pay_money');
- $item['order_pay_amount'] = !empty($pay_amount)? $pay_amount : 0;
- $refund_amount = OrderRefund::find()->where(['order_id' => $order_ids, 'status' => StatusEnum::ENABLED, 'step_status' => [RefundStatusEnum::STEP_4, RefundStatusEnum::STEP_6]])->sum('refund_price');
- $item['refund_amount'] = !empty($refund_amount)? $refund_amount : 0;
- $item['date'] = date('Y-m-d');
- }
- }
- return $this->success('操作成功', $pageData);
- }
- }
- return $this->render('index');
- }
- /**
- * 不分页获取数据
- * @return mixed|void|null
- */
- public function actionList()
- {
- if (\Yii::$app->request->isAjax) {
- $params = \Yii::$app->request->get();
- if (!\Yii::$app->services->validate->validate($params, [
- [['user_id', 'order_status', 'page', 'limit'], 'integer'],
- [['user_id'], 'required'],
- [['order_no'], 'string'],
- [['keyword', 'start', 'end'], 'safe'],
- ])) {
- return $this->error(\Yii::$app->services->validate->getErrorMessage());
- }
- $agent = AreaAgent::findOne(['user_id' => $params['user_id'], 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]);
- if (!$agent) {
- return $this->error('代理不存在');
- }
- $where = [
- ['mall_id' => $this->mall_id],
- ['status' => StatusEnum::ENABLED],
- ['pay_status' => StatusEnum::ENABLED],
- ['store_id' => 0],
- ['mch_id' => 0]
- ];
- switch ($agent->level) {
- case AreaEnum::PROVINCE:
- $where[] = ['province' => $agent->province_id];
- break;
- case AreaEnum::CITY:
- $where[] = ['city' => $agent->city_id];
- break;
- case AreaEnum::DISTRICT:
- $where[] = ['area' => $agent->district_id];
- break;
- case AreaEnum::TOWN:
- $where[] = ['town' => $agent->town_id];
- break;
- case AreaEnum::COMMUNITY:
- $where[] = ['community' => $agent->community_id];
- break;
- case AreaEnum::REGIONAL:
- $res = AreaRegional::findOne($agent->regional_id);
- if(empty($res->province_ids) == false){
- $where[] = ['in', 'province', explode(',',$res->province_ids)];
- }else{
- $where[] = ['province' => -1]; //防止数据为空
- }
- break;
- default:
- $where[] = ['id' => 0];
- }
- if (!empty($params['keyword'])) {
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['=', 'id', $params['keyword']],
- ['like', 'nickname', $params['keyword'] . '%', false],
- ['like', 'mobile', $params['keyword'] . '%', false]
- ]], 'select' => 'id']);
- $user_ids = array_column($user_list, 'id');
- if (!empty($user_ids)) {
- $where[] = ['user_id' => $user_ids];
- } else {
- $where[] = ['id' => 0];
- }
- }
- if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'] . ' 00:00:00')];
- if (!empty($params['end'])) $where[] = ['<=', 'created_at', strtotime($params['end'] . ' 23:59:59')];
- if (!empty($params['order_status'])) {
- $where[] = ['order_status' => $params['order_status']];
- }
- if (!empty($params['order_no'])) {
- $where[] = ['like', 'order_no', $params['order_no']];
- }
- $ret = Order::listPage([
- 'where' => $where,
- 'select' => 'id,order_no,user_id,pay_money,goods_price,out_trade_no,created_at,order_source,order_status',
- 'order' => 'id desc',
- 'limit' => $params['limit'] ?? 10,
- 'with' => ['detail' => function($query) {
- $query->select('order_id,goods_name,num,goods_price,price,id');
- }, 'user' => function($query) {
- $query->select('id,nickname,avatar_url,mobile');
- }]
- ]);
- if (!$ret) return $this->error(Order::getStaticError());
- if (!empty($ret['list'])) {
- $order_ids = array_column($ret['list'], 'id');
- $refund_list = OrderRefund::lists([
- 'where' => [
- ['order_id' => $order_ids],
- ['step_status' => [RefundStatusEnum::STEP_4, RefundStatusEnum::STEP_6]],
- ['status' => StatusEnum::ENABLED]
- ],
- 'select' => 'order_detail_id,refund_price',
- 'index' => 'order_detail_id',
- ]);
- foreach ($ret['list'] as &$item) {
- foreach ($item['detail'] as &$detail) {
- $detail['refund_price'] = isset($refund_list[$detail['id']])? $refund_list[$detail['id']]['refund_price'] : 0;
- }
- unset($detail);
- }
- unset($item);
- }
- $ret['order_status_map'] = OrderStatusEnum::getMap();
- return $this->success('获取成功', $ret);
- }
- return $this->render('list');
- }
- }
|