where(['user_id' => $saas_user_id, 'is_pay' => 1, 'from' => SharingReceiver::FROM_RECOMMEND])->andWhere(['like', 'order_no', 'ML'])->sum('amount'); $no_pay_money = SharingReceiver::find()->where(['user_id' => $saas_user_id, 'is_pay' => 0, 'from' => SharingReceiver::FROM_RECOMMEND])->andWhere(['like', 'order_no', 'ML'])->sum('amount'); $count = SharingReceiver::find()->where(['user_id' => $saas_user_id, 'from' => SharingReceiver::FROM_RECOMMEND])->andWhere(['like', 'order_no', 'ML'])->count(); $avatar = get_saas_user()->avatar; $name = get_saas_user()->name; $up_name = SaasUser::findOne(Admin::findOne(Salesman::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0])->admin_id)->saas_user_id)->name; return $this->asJson([ 'code' => 0, 'msg' => 'success', 'data' => [ 'is_pay_money' => $is_pay_money, 'no_pay_money' => $no_pay_money, 'count' => $count, 'avatar' => $avatar, 'name' => $name, 'up_name' => $up_name ?: '' ] ]); } /** * 进件提交 */ public function actionApply() { $contact_info = Json::decode(post_params('contact_info')); $subject_info = Json::decode(post_params('subject_info')); $business_info = Json::decode(post_params('business_info')); $bank_account_info = Json::decode(post_params('bank_account_info')); $apply_id = post_params('id', 0); try { $merchant = new Merchant(); } catch (\Exception $e) { return $this->asJson([ 'code' => 1, 'msg' => $e->getMessage() ]); } return $this->asJson($merchant->submit($contact_info, $subject_info, $business_info, $bank_account_info, $apply_id)); } // /** // * 图片提交 // */ // public function actionImage() { // $path = post_params('path'); // $merchant = new Merchant(); // return $this->asJson($merchant->mediaUpload($path)); // } /** * 进件列表 * @return \yii\web\Response */ public function actionList() { $saas_user_id = get_saas_user_id(); $store_id = get_store_id(); $page = get_params('page', 1); $status = get_params('status', -1); $query = MerchantInfo::find()->where(['store_id' => $store_id, 'saas_user_id' => $saas_user_id, 'is_delete' => 0]); if (in_array($status, [0, 1, 2, 3])) { $query->andWhere(['status' => $status]); } $query->andWhere(['or', ['!=', 'subject_info', ''], ['!=', 'subject_info', null]]); $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $page - 1, 'pageSize' => 20]); $list = $query->orderBy('created_at DESC, updated_at DESC')->limit($pagination->limit)->offset($pagination->offset)->asArray()->all(); $result = [ 'code' => 0, 'msg' => 'success', 'data' => [ 'row_count' => $count, 'page_count' => $pagination->pageCount, 'list' => $list, ], ]; if (empty($list)) { return $this->asJson($result); } foreach ($list as &$merchant) { $merchant['contact_info'] = Json::decode($merchant['contact_info']); $merchant['subject_info'] = Json::decode($merchant['subject_info']); $merchant['business_info'] = Json::decode($merchant['business_info']); $merchant['settlement_info'] = Json::decode($merchant['settlement_info']); $merchant['bank_account_info'] = Json::decode($merchant['bank_account_info']); if ($merchant['state']) { $merchant['loading_desc'] = Merchant::$valid_state_desc[$merchant['state']]; } else { $merchant['loading_desc'] = '待完善'; } $merchant['refuse_desc'] = $merchant['refuse_desc'] ? [['reject_reason'=>$merchant['refuse_desc']]] : []; $merchant['created_at'] = date('Y-m-d H:i', $merchant['created_at']); } $result['data']['list'] = $list; return $this->asJson($result); } /** * 申请单详情 * @return \yii\web\Response */ public function actionDetail() { $merchant_info = MerchantInfo::find()->where(['id' => get_params('id'), 'is_delete' => 0])->asArray()->one(); if (!$merchant_info) { return $this->asJson([ 'code' => 1, 'msg' => '数据不存在' ]); } $merchant_info['contact_info'] = Json::decode($merchant_info['contact_info']); $merchant_info['subject_info'] = Json::decode($merchant_info['subject_info']); $merchant_info['business_info'] = Json::decode($merchant_info['business_info']); $merchant_info['settlement_info'] = Json::decode($merchant_info['settlement_info']); $merchant_info['bank_account_info'] = Json::decode($merchant_info['bank_account_info']); return $this->asJson([ 'code' => 0, 'data' => $merchant_info ]); } /** * 业务员推荐商城,订单所获取的佣金 */ public function actionOrderList() { $saas_user_id = get_saas_user_id(); $page = get_params('page', 1); $status = get_params('status', -1); $query = SharingReceiver::find()->alias('sr')->where(['sr.user_id' => $saas_user_id, 'sr.from' => SharingReceiver::FROM_RECOMMEND]) ->leftJoin(['o' => Order::tableName()], 'o.order_no=sr.order_no')->andWhere(['like', 'sr.order_no', 'ML']); if (in_array($status, [0, 1])) { $query->andWhere(['sr.is_pay' => $status]); } $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $page - 1, 'pageSize' => 20]); $list = $query->select('sr.amount, o.id, o.order_no, o.pay_price, o.created_at, sr.is_pay')->orderBy('sr.updated_at DESC, sr.created_at DESC')->limit($pagination->limit)->offset($pagination->offset)->asArray()->all(); foreach ($list as &$order) { $order['created_at'] = date('Y-m-d H:i:s', $order['created_at']); $order['goods_list'] = OrderDetail::find()->where(['order_id' => $order['id']])->select('goods_name, num, pic, total_price')->asArray()->all(); } return $this->asJson([ 'code' => 0, 'msg' => 'success', 'data' => [ 'row_count' => $count, 'page_count' => $pagination->pageCount, 'list' => $list, ], ]); } public function actionCat() { $query = SaasCategory::find()->where([ 'is_delete' => 0, ]); $list = $query->orderBy('sort ASC')->asArray()->all(); return $this->asJson([ 'code' => 0, 'msg' => 'success', 'data' => $list, ]); } public function actionGetAudit() { try { $saas_user_id = get_saas_user_id(); $audit = StoreAudit::find()->where(['sa.saas_user_id' => $saas_user_id, 'su.is_delete' => 0])->alias('sa') ->leftJoin(['su' => SaasUser::tableName()], 'su.id = sa.saas_user_id') ->leftJoin(['sc' => SaasCategory::tableName()], 'sa.cat_id = sc.id') ->select('sa.status, sa.mobile, sa.cat_id, sa.logo, sa.name, sa.id, sc.name category_name, su.store_id') ->orderBy('sa.id desc')->asArray()->one(); return $this->asJson([ 'code' => 0, 'msg' => "获取成功", 'data' => $audit ?: null ]); } catch (\Exception $e) { return $this->asJson([ 'code' => 1, 'msg' => $e->getMessage() ]); } } public function actionSubmitMerchant() { $saas_user_id = get_saas_user_id(); // todo: salesman 如何绑定 $name = post_params('name'); $cat_id = post_params('cat_id'); $mobile = post_params('mobile'); $password = post_params('password'); $logo = post_params('logo', ''); if (empty($name) || empty($cat_id) || empty($mobile) || empty($password) || empty($logo)) { return $this->asJson([ 'code' => 1, 'msg' => '参数错误' ]); } $admin = Admin::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0, 'type' => 'store']); if ($admin) { return $this->asJson([ 'code' => 1, 'msg' => '当前注册手机号店铺已存在' ]); } $store = Store::findOne(['name' => $name, 'is_delete' => 0]); if ($store) { return $this->asJson([ 'code' => 1, 'msg' => '当前注册用户已存在' ]); } $audit = StoreAudit::findOne(['saas_user_id' => $saas_user_id]); if (!$audit) { $audit = new StoreAudit(); } $audit->saas_user_id = $saas_user_id; $audit->name = $name; $audit->logo = $logo; $audit->cat_id = $cat_id; $audit->mobile = $mobile; $audit->is_single_store = is_single_store() ? 1 : 0; $audit->password = \Yii::$app->security->generatePasswordHash($password); $audit->status = 0; if ($audit->save()) { return $this->asJson([ 'code' => 0, 'msg' => '提交成功' ]); } return $this->asJson([ 'code' => 1, 'msg' => "提交失败,请联系管理员处理" ]); } /** * 审核店铺 * @return \yii\web\Response */ public function actionAudit() { $id = post_params('id'); $status = post_params('status'); $audit = StoreAudit::findOne(['id' => $id, 'status' => 0]); if (!$audit) { return $this->asJson([ 'code' => 1, 'msg' => '数据不存在' ]); } $t = \Yii::$app->db->beginTransaction(); $saas_user_id = get_saas_user_id(); if ($status == 1) { // 自动创建admin账号 $admin = new Admin(); $admin->access_token = \Yii::$app->security->generateRandomString(); $admin->username = $audit->name; // $admin->password = \Yii::$app->security->generatePasswordHash($audit->mobile); // 默认密码改为cyyvipcom 与后台添加商城统一 $admin->password = \Yii::$app->security->generatePasswordHash('123456'); $admin->mobile = $audit->mobile; $admin->name = $audit->name; $admin->type = 'store'; if ($admin->save()) { $salesman = Salesman::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0]); $store = new Store(); $store->admin_id = $admin->id; $store->logo = $audit->logo; $store->created_at = time(); $store->name = $audit->name; $store->salesman_id = $salesman->id; $store->open_status = 0; $store->end_time = strtotime("+1 year"); if ($store->save()) { $admin->type_id = $store->id; $admin->save(); // 绑定关系 $saas_store_referral = new SaasStoreReferral(); $saas_store_referral->store_id = $store->id; $saas_store_referral->referral_id = $saas_user_id; if (!$saas_store_referral->save()) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $saas_store_referral->errors[0] ]); } else { $sales_admin = Admin::findOne($salesman->admin_id); $sales_saas_user_id = $sales_admin->saas_user_id; if ($sales_saas_user_id) { // 代理商绑定 $saas_store_referral = new SaasStoreReferral(); $saas_store_referral->store_id = $store->id; $saas_store_referral->referral_id = $sales_saas_user_id; if (!$saas_store_referral->save()) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $saas_store_referral->errors[0] ]); } } } try { $merchant = new Merchant(); } catch (\Exception $e) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $e->getMessage() ]); } $merchant_info = new MerchantInfo(); $merchant_info->store_id = get_store_id(); $merchant_info->saas_user_id = $saas_user_id; $merchant_info->business_code = $merchant->getBusinessCode(); $merchant_info->bind_store_id = $store->id; $merchant_info->from = 1; if (!$merchant_info->save()) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $merchant_info->errors[0] ]); } else { $audit->merchant_info_id = $merchant_info->id; if (!$audit->save()) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $audit->errors[0] ]); } } } else { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $store->errors[0] ]); } } else { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $admin->errors[0] ]); } } $audit->status = $status; if (!$audit->save()) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $audit->errors[0] ]); } else { $t->commit(); //申请通过发送短信 $res = NoticeSend::AgentExamine($audit->id, 2); if (isset($res['code']) && $res['code'] !== 0) { debug_log($res, 'sms.log'); } return $this->asJson([ 'code' => 0, 'msg' => '操作成功' ]); } } /** * 审核列表接口 * @return \yii\web\Response */ public function actionAuditList() { $page = get_params('page', 1); $status = get_params('status', -1); $saas_user_id = get_saas_user_id(); $salesman = Salesman::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0]); $query = StoreAudit::find()->alias('sa')->leftJoin(['mi' => MerchantInfo::tableName()], 'mi.id=sa.merchant_info_id')->where(['sa.salesman_id' => $salesman->id, 'mi.is_delete' => 0]); if ($status == 0) { // 待审核 $query->andWhere(['sa.status' => 0]); } if ($status == 1) { // 待完善 $query->andWhere(['sa.status' => 1]); $query->andWhere(['!=', 'mi.status', 3]); } if ($status == 2) { // 已完成 $query->andWhere(['sa.status' => 1, 'mi.status' => 3]); } $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $page - 1, 'pageSize' => 20]); $list = $query->select('sa.*, mi.id merchant_info_id, mi.status merchant_status, mi.state state, mi.from from')->orderBy('sa.created_at DESC, sa.updated_at DESC')->limit($pagination->limit)->offset($pagination->offset)->asArray()->all(); foreach ($list as &$value) { $value['created_at'] = date('Y-m-d H:i:s', $value['created_at']); $value['cat_name'] = SaasCategory::findOne($value['cat_id'])->name; } $result = [ 'code' => 0, 'msg' => 'success', 'data' => [ 'row_count' => $count, 'page_count' => $pagination->pageCount, 'list' => $list, ], ]; return $this->asJson($result); } /** * 审核列表接口 * @return \yii\web\Response */ public function actionStoreList() { $page = get_params('page', 1); $saas_user_id = get_saas_user_id(); $query = SaasStoreReferral::find()->alias('ssr')->leftJoin(['s' => Store::tableName()], 's.id=ssr.store_id') ->andWhere(['ssr.referral_id' => $saas_user_id]); $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $page - 1, 'pageSize' => 20]); $list = $query->select('s.*')->orderBy('s.created_at DESC, s.updated_at DESC')->limit($pagination->limit)->offset($pagination->offset)->asArray()->all(); foreach ($list as &$value) { $value['mobile'] = Admin::findOne($value['admin_id'])->mobile; $value['cat_name'] = SaasCategory::findOne($value['category_id'])->name; $value['created_at'] = date('Y-m-d H:i:s', $value['created_at']); } $result = [ 'code' => 0, 'msg' => 'success', 'data' => [ 'row_count' => $count, 'page_count' => $pagination->pageCount, 'list' => $list, ], ]; return $this->asJson($result); } /** * 关系绑定小程序码 * @return \yii\web\Response */ public function actionQr() { $saas_user_id = get_saas_user_id(); $salesman_id = Salesman::findOne(['saas_user_id' => $saas_user_id, 'is_delete' => 0])->id; $scene = "salesman_id={$salesman_id}"; $res = ShareQrcode::wxQrcode('salesman/salesman/applyShop', $scene); if (isset($res['code']) && $res['code'] == 1) { return $this->asJson([ 'code' => 1, 'msg' => $res['response']['errmsg'], ]); } return $this->asJson([ 'code' => 0, 'data' => [ 'qr_url' => $res['url_path'] ] ]); } /** * 业务员列表 * @return \yii\web\Response */ public function actionSalesman() { $salesman = Salesman::find()->where(['is_delete' => 0])->asArray()->all(); foreach ($salesman as &$value) { $value['name'] = SaasUser::findOne($value['saas_user_id'])->name; } return $this->asJson([ 'code' => 0, 'data' => $salesman ]); } }