'/^1[3456789]\d{9}$/', 'message' => '手机号码格式不正确。'], ]; } public function getUserList() { $query = User::find()->alias('u')->where([ 'u.type' => User::USER_TYPE_NORMAL, 'u.store_id' => $this->store_id, 'u.is_delete' => User::USER_NOT_DELETE, ])->andWhere(['<>', 'u.binding' , '']) ->leftJoin(SaasUser::tableName() . ' su', 'su.mobile=u.binding'); if($this->is_yinbao){ $query->leftJoin(['pu' => PospalUser::tableName()], 'pu.user_id = u.id')->leftJoin(['o' => \app\models\OrderPospal::find() ->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) ->andWhere(['is_delete' => 0]) ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id])->select('user_id, count( id ) AS order_count, sum( pay_price ) AS pay_price_sum')->groupBy('user_id')], 'o.user_id = u.id') ->andWhere(['>', 'pu.id', 0]); } else { $query->leftJoin(['o' => Order::find() ->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) ->andWhere(['is_delete' => 0]) ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id, 'is_recycle' => 0])->select('user_id, count( id ) AS order_count, sum( pay_price ) AS pay_price_sum')->groupBy('user_id')], 'o.user_id = u.id'); } // 手机号 TODO:这是啥东西判断???看不懂,先注释了 // if ($this->type == 'mobile') { // if ($this->name) { // $query->andWhere(['or', ['like', 'u.contact_way', $this->name], ['like', 'u.binding', $this->name]]); // } // } // //名称或者昵称 // if ($this->type == 'type') { // if ($this->name) { // $query->andWhere(['or', ['like', 'u.nickname', $this->name], ['like', 'su.name', $this->name]]); // } // } if (intval($this->orderCountStart) > 0) { $query->andWhere(['>=', 'o.order_count', $this->orderCountStart]); } if (intval($this->orderCountEnd) > 0) { $query->andWhere(['<=', 'o.order_count', $this->orderCountEnd]); } if (intval($this->priceTotalStart) > 0) { $query->andWhere(['>=', 'o.pay_price_sum', $this->priceTotalStart]); } if (intval($this->priceTotalEnd) > 0) { $query->andWhere(['<=', 'o.pay_price_sum', $this->priceTotalEnd]); } if (floatval($this->moneyStart) > 0) { $query->andWhere(['>=', 'u.money', $this->moneyStart]); } if (floatval($this->moneyEnd) > 0) { $query->andWhere(['<=', 'u.money', $this->moneyEnd]); } if (floatval($this->integralStart) > 0) { $query->andWhere(['>=', 'u.integral', $this->integralStart]); } if (floatval($this->integralEnd) > 0) { $query->andWhere(['<=', 'u.integral', $this->integralEnd]); } if (isset($this->money_month_min)) { $query->andWhere(['>', 'u.money_month', $this->money_month_min]); } if ($this->user_id) { $query->andWhere(['u.id' => $this->user_id]); } if ($this->phone) { $query->andWhere(['like', 'u.binding', $this->phone]); } if ($this->user_remark) { $query->andWhere(['like', 'u.user_remark', $this->user_remark]); } if ($this->name) { $query->andWhere(['OR', ['like', 'su.name', $this->name], ['like', 'u.nickname', $this->name]]); } // 日期 if ($this->dateStart) { $query->andWhere(['>=', 'u.created_at', strtotime($this->dateStart)]); } if ($this->dateEnd) { $query->andWhere(['<=', 'u.created_at', strtotime($this->dateEnd)]); } if ($this->is_admin == 1) { $query->andWhere(['u.is_admin' => 1]); } elseif ($this->is_admin == 0) { $query->andWhere(['u.is_admin' => 0]); } if (!empty($this->user_label_id)) { $query->andWhere(['like','user_label_id' , ','.$this->user_label_id.',']); } // $orderQuery = Order::find()->where([ // 'store_id' => $this->store_id, 'is_delete' => 0, // 'mch_id' => 0 // ])->andWhere('user_id = u.id')->andWhere(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL])->select('count(1)'); // $cardQuery = UserCard::find()->where(['store_id' => $this->store_id, 'is_delete' => 0]) // ->andWhere('user_id = u.id')->select('count(1)'); // 等级 if ($this->level || $this->level === '0' || $this->level === 0) { $query->andWhere(['u.level' => $this->level]); } // if ($this->flag === Export::EXPORT) { // $orderConsumeQuery = Order::find()->where(['store_id' => $this->store_id, 'is_delete' => 0])->andWhere(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL])->andWhere('user_id = u.id')->select('sum(pay_price)'); // $list = $query->select([ // 'u.*', 's.name shop_name', 'l.name l_name', 'card_count' => $cardQuery, 'order_count' => $orderQuery, // 'orderConsume' => $orderConsumeQuery, // ])->orderBy('u.created_at DESC')->asArray()->all(); // $export = new ExportList(); // $export->fields = $this->fields; // $export->UserExportData($list); // } $slectExt = []; if($this->is_yinbao){ $slectExt = ['pu.json pu_json']; } $query->groupBy('u.id')->orderBy('u.id DESC'); if (intval($this->is_export) === 1) { return $this->exportUserInfo($query); } $query->select(array_merge(['u.*', 'o.order_count', 'o.pay_price_sum'], $slectExt)); $pagination = pagination_make($query); $list = $pagination['list']; // 会员列表 $level = Level::find()->select('level, name')->where([ 'store_id' => $this->store_id, 'is_delete' => Level::NOT_DELETE, 'status' => Level::STATUS_TRUE ])->asArray()->all(); $level[] = ['level' => '-1', 'name' => '普通用户']; foreach ($list as $key => &$value) { //id转化成邀请码 $list[$key]['invite_code'] = InviteCode::id2Code($value['id']); $level_ = Level::findOne(['level' => $value['level'], 'is_delete' => 0, 'store_id' => $this->store_id]); if ($level_) { $value['l_name'] = $level_->name; } if(!empty($value['user_label_id'])){ $userLabelRes = UserLabel::getLabelNames($this->store_id, trim($value['user_label_id'],',')); $value['user_label_name'] = $userLabelRes ?: []; $value['user_label_id'] = explode(',',trim($value['user_label_id'],',')); }else{ $value['user_label_name'] = []; } if (empty($value['l_name'])) { $list[$key]['l_name'] = '普通用户'; } // 25-4-23分支要求秀嘎 这里不管就显示商城的头像和昵称 $value['saas_name'] = $value['nickname']; $value['saas_avatar'] = $value['avatar_url']; // if (empty($value['binding'])) { // $value['saas_name'] = $value['nickname']; // $value['saas_avatar'] = $value['avatar_url']; // } else { $sass_user = SaasUser::findOne(['mobile' => $value['binding']]); if ($sass_user) { $value['saas_id'] = $sass_user->id; } // } $user = User::find()->where(['store_id' => $this->store_id, 'id' => $value['parent_id']]) ->select('nickname')->asArray()->One(); // 成交订单数 // $list[$key]['orderCount'] = Order::find() // ->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) // ->andWhere(['is_delete' => 0]) // ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id, 'user_id' => $value['id']]) // ->count(); // // // 成交金额 // $list[$key]['priceTotal'] = sprintf('%.2f', Order::find()->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) // ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id, 'user_id' => $value['id']]) // ->sum('pay_price')); $list[$key]['orderCount'] = $list[$key]['order_count'] ?: 0; $list[$key]['priceTotal'] = $list[$key]['pay_price_sum'] ?: '0.00'; unset($list[$key]['order_count'], $list[$key]['pay_price_sum']); $list[$key]['parent_name'] = !empty($user['nickname']) ? $user['nickname'] : '总店'; $list[$key]['nickname'] = $value['nickname'] ?: $value['saas_name']; $list[$key]['avatar_url'] = !empty($value['saas_avatar']) ? $value['saas_avatar'] : $value['avatar_url']; $list[$key]['create_at_text'] = date('Y-m-d H:i:s', $value['created_at']); if (strpos($value['binding'], 'X')) { $value['binding'] = ''; } //门店增加收银台 查询商品列表逻辑 if (!empty($this->md_id) && $this->md_id > 0) { $list[$key]['binding'] = substr_replace($value['binding'], '****', 3, 4); } // TODO: 其他数据 } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'level' => $level, 'data' => $list, 'pageNo' => $pagination['pageNo'], 'totalCount' => $pagination['totalCount'], ], ]; } /** * 查看用户详情列表(积分、余额、会员记录) * @return array */ public function getUserIntegralRechargeList() { $query = User::find()->orderBy('created_at DESC'); $pagination = pagination_make($query); $list = $pagination['list']; foreach ($list as $key => $value) { } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, 'pageNo' => $pagination['pageNo'], 'totalCount' => $pagination['totalCount'], ], ]; } /** * 更新用户信息 * @return array * @throws \yii\base\Exception */ public function updateUserInfo() { try { if ($this->validate()) { if ($this->id == $this->parent_id || $this->id == $this->old_parent_id || $this->id == $this->init_parent_id) { return [ 'code' => 1, 'msg' => '不能添加自己为上级' ]; } $user = User::findOne(['id' => $this->id, 'is_delete' => User::USER_NOT_DELETE]); if ($user->binding != $this->binding) { $t = \Yii::$app->db->beginTransaction(); try { $is = User::findOne(['binding' => $this->binding, 'is_delete' => 0]); if ($is) { throw new \Exception('该手机号已被使用'); } $users = User::find()->where(['binding' => $user->binding, 'is_delete' => 0])->all(); foreach ($users as $userItem) { $userItem->binding = $this->binding; $userItem->save(); } $saasUser = SaasUser::findOne(['mobile' => $user->binding, 'is_delete' => 0]); if ($saasUser) { $saasUser->mobile = $this->binding; $saasUser->save(); } $t->commit(); } catch (\Exception $ex) { $t->rollBack(); return [ 'code' => 1, 'msg' => $ex->getMessage(), ]; } } $oldParentChange = 0; $parentChange = 0; $beforeOldParentId = $user->old_parent_id; $beforeParentId = $user->parent_id; if($user->old_parent_id != $this->old_parent_id){ $oldParentChange = 1; } if($user->parent_id != $this->parent_id){ $parentChange = 1; } debug_log('parentChange => ' . $parentChange, 'aaaa.log'); debug_log('oldParentChange => ' . $oldParentChange, 'aaaa.log'); $diff_price = bcsub($this->price, $user->price, 2); if ($diff_price > 0) { $user->total_price = bcadd($user->total_price, $diff_price, 2); } if (!empty($this->password)) { $user->password = \Yii::$app->security->generatePasswordHash($this->password); } if (!empty($this->nickname)) { $user->nickname = $this->nickname; } $user->level = $this->level; $user->price = $this->price; $user->parent_id = $this->parent_id; $user->old_parent_id = $this->old_parent_id; $user->init_parent_id = $this->init_parent_id; $user->contact_way = $this->contact_way; $user->remark_name = $this->remark_name; $user->comments = $this->comments; $user->blacklist = $this->blacklist; $user->is_saas_clerk = $this->is_saas_clerk; if ($this->user_label_id) { $user->user_label_id = ','.implode(',',$this->user_label_id).','; } $group_setting = OptionSetting::getOptionSetting(); $group_arr = $group_setting['pay']['list'] ?: []; foreach ($group_arr as $val) { if ($val['name'] == 'payment') { $group_data = Option::findOne(['store_id' => $this->store_id, 'group' => 'user', 'name' => $val['name'].'_'.$user->id]); $payment[] = [ 'name' => $group_data ? $group_data->name : $val['name'].'_'.$user->id, 'text' => $val['text'], 'group' => $group_data ? $group_data->group : 'user', 'type' => $val['type'], 'value' => $this->payment, 'updated_at' => $group_data ? $group_data->updated_at : 0, ]; $empty = 1; foreach($this->payment as $item){ if($item['value']){ $empty = 0; break; } } if($empty){ if($group_data){ Option::deleteAll(['store_id' => $this->store_id, 'group' => $payment[0]['group'], 'name' => $payment[0]['name']]); } }else{ $res = Option::setGroup('user',$payment, $user->store_id); } } } $levelData = Level::findOne(['level' => $this->level, 'promotion_status' => 1, 'store_id' => $this->store_id, 'is_delete' => Level::NOT_DELETE]); if (!empty($levelData) && $user->is_distributor != 1) { $user->is_distributor = 1; $share = Share::findOne(['user_id' => $user->id, 'store_id' => $user->store_id, 'is_delete' => 0]); if (!$share) { $share = new Share(); $share->user_id = $user->id; $share->mobile = $user->binding; $share->name = $user->nickname; $share->is_delete = 0; $share->store_id = $user->store_id; $share->status = 1; $share->created_at = time(); if (!$share->save()) { throw new \Exception('添加用户分销商信息失败' . $share->getErrors()); } } } if ($user->save()) { $oldParentChange && \app\utils\Share\BonusPool::addShareHolderParentOutLog($user, $beforeOldParentId, ShareHolderParentOutLog::getConditionName(11), 1); $parentChange && \app\utils\Share\BonusPool::addShareHolderParentOutLog($user, $beforeParentId, ShareHolderParentOutLog::getConditionName(11), 0); if ($diff_price != 0) { if ($diff_price > 0) { $str = '后台修改佣金-增加'; $type = 0; } else { $str = '后台修改佣金-减少'; $type = 1; } $diff_price = abs($diff_price); UserShareMoney::set($diff_price, $user->id, 0, $type, 10, $user->store_id, 0, $str); } return [ 'code' => 0, 'msg' => '更新成功' ]; } return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => '更新失败'.$e->getMessage(), ]; } } /** * 删除管理员 * @return array|bool */ public function delAdmin() { $id = $this->id; $user = User::findOne($id); if (empty($user)) { return [ 'code' => 1, 'msg' => '未选择任何数据' ]; } $user->is_admin = 0; if (!$user->save()) { return [ 'code' => 1, 'msg' => '删除失败' . $user->errors ]; } return [ 'code' => 0, 'msg' => '删除成功' ]; } /** * 导出用户数据 */ public function exportUserInfo($query) { $query->select('u.id, su.id saas_id, su.name saas_name, u.binding, u.level l_name, u.created_at, u.price, u.total_price, u.integral, u.total_integral, u.money, u.nickname'); $list = $query->asArray()->all(); foreach ($list as $key => &$value) { $level = Level::findOne(['level' => $value['l_name'], 'is_delete' => 0, 'store_id' => $this->store_id]); $value['l_name'] = $level->name ?: '普通用户'; if (empty($value['binding'])) { $value['saas_name'] = $value['nickname']; } // 成交订单数 $value['orderCount'] = count(Order::find() ->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id, 'user_id' => $value['id']]) ->asArray()->all()); // 成交金额 $value['priceTotal'] = sprintf('%.2f', Order::find()->where(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) ->andWhere(['is_pay' => Order::IS_PAY_TRUE, 'store_id' => $this->store_id, 'user_id' => $value['id']]) ->sum('pay_price')); // $list[$key]['parent_name'] = !empty($user['nickname']) ? $user['nickname'] : '总店'; // $list[$key]['nickname'] = $value['nickname'] ?: $value['saas_name']; $value['created_at'] = date('Y-m-d H:i:s', $value['created_at']); if (strpos($value['binding'], 'X')) { $value['binding'] = ''; } unset($list[$key]['nickname']); // TODO: 其他数据 } $list = array_values($list); $list = array_merge([ [ 'id' => "主键", 'saas_id' => '联盟用户主键', 'saas_name' => '用户昵称', 'binding' => "手机号", 'l_name' => "用户等级", 'created_at' => "创建时间", 'price' => "可提现佣金", 'total_price' => "总佣金", 'integral' => "积分", 'total_integral' => "总积分", 'money' => "钱包余额", 'orderCount' => "订单总数量", 'priceTotal' => "订单总金额", ] ], $list); $writer = SimpleExcelWriter::streamDownload('store_user_' . time() . '.xlsx')->noHeaderRow() ->addRows($list)->toBrowser(); } public function addAddress() { try { $user_id = $this->user_id; $name = $this->name; $mobile = $this->mobile; $detail = $this->detail; $province_id = $this->province_id; $city_id = $this->city_id; $district_id = $this->district_id; $is_default = $this->is_default; $store_id = $this->store_id; $id = $this->id; $latitude = $this->latitude; $longitude = $this->longitude; $user = User::findOne($user_id); $saas_user = SaasUser::findOne(['mobile' => $user->binding]); $address = Address::findOne($id) ?: new Address(); $address->store_id = $store_id; $address->user_id = $saas_user->id; $address->is_delete = Address::DELETE_STATUS_FALSE; $address->addtime = time(); $address->name = trim($name); $address->mobile = $mobile; $address->detail = trim($detail); $province = District::findOne($province_id); if (!$province) { throw new \Exception('省份数据错误,请重新选择'); } $address->province_id = $province->id; $address->province = $province->name; if ($this->longitude) { $address->longitude = $this->longitude; } if ($this->latitude) { $address->latitude = $this->latitude; } $city = District::findOne($city_id); if (!$city) { throw new \Exception('城市数据错误,请重新选择'); } $address->city_id = $city->id; $address->city = $city->name; $district = District::findOne($district_id); if (!$district) { throw new \Exception('地区数据错误,请重新选择'); } $address->district_id = $district->id; $address->district = $district->name; $address->is_default = $is_default ?: 0; $address->latitude = $latitude ?: '0.00'; $address->longitude = $longitude ?: '0.00'; if (!$address->save()) { throw new \Exception(json_encode($address->errors, JSON_UNESCAPED_UNICODE)); } if (intval($is_default)) { $this->id = $address->id; $result = $this->setUserAddressStatus(); if ($result['code'] !== 0) { return $result; } } $address = Address::find()->where([ 'user_id' => $saas_user->id, 'is_delete' => 0, ])->asArray()->all(); return [ 'code' => 0, 'msg' => "设置成功", 'data' => $address ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage(), ]; } } public function setUserAddressStatus() { try { $type = intval($this->type); $id = $this->id; $address = Address::findOne(['is_delete' => 0, 'id' => $id]); if (empty($address)) { throw new \Exception('查询失败'); } if ($type) { //删除 $address->is_delete = 1; } else { //设置为默认 $user_id = $address->user_id; Address::updateAll(['is_default' => 0], ['user_id' => $user_id, 'is_delete' => 0]); $address = Address::findOne($id); $address->is_default = 1; } if (!$address->save()) { throw new \Exception(json_encode($address->errors, JSON_UNESCAPED_UNICODE)); } return [ 'code' => 0, 'msg' => '设置成功' ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage(), ]; } } public function getUserAddress() { try { $user_id = $this->user_id; $user = User::findOne($user_id); if (empty($user)) { throw new \Exception('用户查询失败'); } if($user->binding){ $saas_user = SaasUser::findOne(['mobile' => $user->binding]); }else{ if($user->alipay_open_id){ $saas_user = SaasUser::findOne(['ali_user_id' => $user->alipay_open_id]); } } if(empty($saas_user)) { throw new \Exception('用户查询失败'); } $address_list = Address::find()->where(['user_id' => $saas_user->id, 'is_delete' => 0])->select('name, mobile, province, city, district, town, village, detail, is_default, id, latitude, longitude, province_id, city_id, district_id, town_id, village_id')->orderBy('addtime desc')->asArray()->all(); foreach ($address_list as &$item) { $item['is_default'] = (int)$item['is_default']; } return [ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'address_list' => $address_list ] ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } public function userPriceTotal($params) { $store_id = $this->store_id; $user_id = $this->user_id; if($params['user_id']){ $user_id = $params['user_id']; } $query = User::find()->where(['store_id' => $store_id, 'is_delete' => 0]); if ($user_id) { $query->andWhere(['id' => $user_id]); } if ($params['mobile']) { $query->andWhere(['like', 'binding', $params['mobile']]); } if ($params['name']) { $query->andWhere(['!=', 'binding', ''])->andWhere(['binding' => SaasUser::find()->select('mobile')->where(['like', 'name', $params['name']])]); } $sum = (clone $query)->select('SUM(price) sum_price, SUM(total_price) sum_total_price')->asArray()->one(); $query->orderBy('id DESC'); $list = pagination_make($query); foreach($list['list'] as &$item){ $item['saasUser'] = $item['binding'] ? SaasUser::findOne(['mobile' => $item['binding']]) : null; $item['sum']['sumUserShareMoney'] = (float)\app\models\UserShareMoney::find()->where(['user_id' => $item['id'], 'is_delete' => 0, 'type' => 0])->sum('money'); $item['sum']['sumShareHold'] = (float)\app\models\ShareDetail::find()->where(['user_id' => $item['id'], 'is_send' => 1, 'is_delete' => 0, 'type' => [ \app\models\ShareDetail::TYPE_HOLDER_PROFIT, \app\models\ShareDetail::TYPE_RANGE_PROFIT, \app\models\ShareDetail::TYPE_SHARE_PROFIT, \app\models\ShareDetail::TYPE_RANGE_PROFIT_OLD, \app\models\ShareDetail::TYPE_RANGE_PROFIT_OLD_USER_LEVEL, ]])->sum('money'); $item['sum']['sumTwoPlusOne'] = (float)\app\models\ShareDetail::find()->where(['user_id' => $item['id'], 'is_send' => 1, 'is_delete' => 0, 'type' => [ \app\models\ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_PROFIT, \app\models\ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT, \app\models\ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT_OLD, ]])->sum('money'); $item['sum']['sumAreaProfit'] = (float)\app\models\ShareDetail::find()->where(['user_id' => $item['id'], 'is_send' => 1, 'type' => \app\models\ShareDetail::TYPE_AREA_PROFIT, 'is_delete' => 0])->sum('money'); $item['sum']['sumActivityRebateOrderN'] = (float)\app\models\ActivityRebateOrderNLog::find()->where(['user_id' => $item['id'], 'status' => 1, 'is_delete' => 0, 'finished' => 1])->sum('price'); $item['sum']['sumFreeQueue'] = (float)\app\models\QueueLog::find()->where(['user_id' => $item['id']])->sum('returned_money'); $item['sum']['sumActivityOrderRebateSelf'] = (float)\app\models\ActivityOrderRebateSelfLog::find()->where(['user_id' => $item['id'], 'send_type' => 1, 'is_send' => 1])->sum('price_send'); $item['sum']['sumReportPoolLevel'] = (float)\app\models\ReportPoolLevel::find()->where(['user_id'=>$item['id'], 'is_send'=>1, 'is_delete'=>0])->sum('dividend_money'); $item['sum']['sumVideoGoodsShare'] = (float)\app\models\VideoGoodsShare::find()->where(['author_user_id' => $item['id'], 'is_send' => 1])->sum('proportion'); $item['sum']['sumWorker'] = (float)\app\models\WorkerOrderExt::find()->where(['worker_id' => \app\models\Worker::find()->select('id')->where(['user_id' => $item['id']]), 'worker_is_price' => 1])->sum('worker_price'); $item['sum']['sumBalanceToCommission'] = (float)\app\models\AccountLog::find()->where([ 'user_id'=>$item['id'], 'order_type'=>\app\models\AccountLog::TYPE_BALANCE_TO_COMMISSION, 'type'=>\app\models\AccountLog::TYPE_BALANCE, 'log_type'=>\app\models\AccountLog::LOG_TYPE_EXPEND, ])->sum('amount'); $item['sum']['sumTeamBonus'] = (float)\app\models\ShareDetail::find()->where(['user_id' => $item['id'], 'is_send' => 1, 'is_delete' => 0, 'type' => [ \app\models\ShareDetail::TYPE_TEAM_BONUS_RANGE_PROFIT, \app\models\ShareDetail::TYPE_TEAM_BONUS_SAME_LEVEL, \app\models\ShareDetail::TYPE_TEAM_BONUS_PARENT, \app\models\ShareDetail::TYPE_TEAM_BONUS_THANKS, ]])->sum('money'); $item['_sum_sum'] = round(array_sum($item['sum']), 2); } return [ 'list' => $list, 'sum' => $sum, ]; } /** * 获取用户佣金列表 */ public function getUserPrice() { try { $user_id = $this->user_id; $store_id = $this->store_id; $pageNo = get_params('pageNo', 1); $pageSize = get_params('pageSize', \Yii::$app->params['pageSize']); $cashTable = Cash::tableName(); $userShareMoneyTable = UserShareMoney::tableName(); $shareDetailTable = ShareDetail::tableName(); // price_type = 0 收入类型 1支出类型 // status 如果是支出类型 0--申请中 1--确认申请 2--已打款 3--驳回 4--手动打款 5--余额通过 收入类型 则一直为2已打款 // table_type $sql = "select * from (SELECT 0 AS table_type, money, `desc`, 0 AS `price_type`, 2 AS `status`, 0 AS type, source, created_at FROM {$userShareMoneyTable} WHERE store_id = {$store_id} AND user_id = {$user_id} UNION ALL SELECT 1 AS table_type, money, `desc`, 0 AS `price_type`, 2 AS `status`, type, 0 AS source, send_time AS created_at FROM {$shareDetailTable} WHERE store_id = {$store_id} AND user_id = {$user_id} AND is_send = 1 UNION ALL SELECT 2 AS table_type, price AS money, '提现申请' AS `desc`, 1 AS `price_type`, `status`, 0 AS type, 0 as source, created_at FROM {$cashTable} WHERE store_id = {$store_id} AND user_id = {$user_id} AND status != 3) AS o ORDER BY o.created_at DESC"; $pageInitNum = ($pageNo - 1) * $pageSize; $count = \Yii::$app->db->createCommand($sql)->query()->count(); $sql .= " LIMIT {$pageSize} OFFSET {$pageInitNum}"; $list = \Yii::$app->db->createCommand($sql)->queryAll(); foreach ($list as &$item) { $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['status'] = intval($item['status']); $item['price_type'] = intval($item['price_type']); $item['status_name'] = "已打款"; if ($item['price_type']) { $item['status_name'] = Cash::getStatusName($item['status']); } if (!intval($item['table_type'])) { if (empty($item['desc'])) { $item['desc'] = UserShareMoney::getSourceName($item['source'], $store_id); } } if (intval($item['table_type']) === 1) { if (empty($item['desc'])) { $item['desc'] = ShareDetail::typeName($item['type']); } } } return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'data' => $list, 'pageNo' => $pageNo, 'totalCount' => $count, ], ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }