| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\alliance\models\store;
- use app\models\Admin;
- use app\models\BrowseLog;
- use app\models\Cart;
- use app\models\Cat;
- use app\models\Goods;
- use app\models\Option;
- use app\models\Order;
- use app\models\OrderDetail;
- use app\models\Store;
- use app\models\SalesmanNewStore;
- use app\models\StoreMini;
- use app\models\StoreReOrder;
- use app\models\User;
- use app\models\SaasUser;
- use app\models\UserShareLog;
- use app\models\WechatConfig;
- use app\modules\alliance\behaviors\StoreAdmin;
- use EasyWeChat\Factory;
- use EasyWeChat\Kernel\BaseClient;
- use yii\base\Model;
- use yii\db\Expression;
- use app\models\OrderRefund;
- use app\modules\admin\models\StoreForm;
- use app\utils\ShareQrcode;
- use app\modules\admin\models\WechatThirdForm;
- use app\utils\WechatMerchant\Merchant;
- use app\models\District;
- use app\modules\admin\models\WechatMiniMerchantForm;
- use app\models\MerchantInfo;
- use app\models\Salesman;
- use app\modules\admin\models\AlipayThirdForm;
- class SalesmanNewStoreForm extends Model
- {
- public $saas_user_id;
-
- public $store_params_fields = [
- //是否餐饮行业(0否、1是)、微信渠道(0不启用、1启用)、支付宝渠道(0不启用、1启用)
- 'is_food','plat_wechat','plat_alipay',
- //商城logo
- 'store_logo',
- //门店logo、门店内环境、营业执照、资质证件、身份证正面、身份证反面
- 'md_logo', 'md_pic', 'license_copy', 'qualify', 'id_card_copy', 'id_card_national',
- //营业执照名称、主体类型(个体户SUBJECT_TYPE_INDIVIDUAL、企业SUBJECT_TYPE_ENTERPRISE、政府机关SUBJECT_TYPE_INSTITUTIONS、其他组织SUBJECT_TYPE_OTHERS)、企业代码类型( 1统一社会信用代码(18位)、2组织架构代码(9位xxxxxxxxxx-x)、3营业执照注册号(15位))、
- 'license_name', 'subject_type', 'code_type',
- //企业代码、营业执照长期(0否、1是)、营业执照有效期开始、营业执照有效期结束、营业执照是否三证合一(0否、1是)
- 'code', 'code_is_long', 'period_begin', 'period_end', 'is_composite',
- //小程序名称、法人姓名、法人身份证号、法人微信号、法人手机号
- 'mini_nickname', 'legal_persona_name', 'legal_persona_id_card_number', 'legal_persona_wechat', 'legal_persona_phone',
- //身份证长期有效(0否、1是)、身份证有效期开始、身份证有效期结束、身份证地址、联系邮箱
- 'card_is_long', 'card_period_begin', 'card_period_end', 'id_card_address', 'contact_email',
- //银行名称、银行开户行名称、账户类型(BANK_ACCOUNT_TYPE_CORPORATE对公、BANK_ACCOUNT_TYPE_PERSONAL个人)、银行账号名称、银行账号
- 'bank_name', 'bank_address_name', 'bank_account_type', 'bank_account_name', 'bank_account_no',
- //开户行地址编码(410311)、开户行地址编码列表(["410000", "410300", "410311"])、开户行地址列表["河南省", "洛阳市", "洛龙区"]
- 'bank_address_code', 'bank_address_code_list', 'bank_address_list',
- //门店小程序类目(B0043)、小程序类目(["XS1014_XS2111"])
- // 'md_mini_categoryId', 'mini_categoryIds',
- //门店区域({'province_id':"1506", 'city_id':"1507", 'district_id':"1508"})、门店地址描述、门店坐标lat、门店坐标lng
- 'md_area', 'md_address', 'md_location_lat', 'md_location_lng',
- //支付宝的邮箱帐号或手机号
- 'alipay_account',
- ];
-
- //业务员新建商家详情
- public function info($id) {
- $model = SalesmanNewStore::findOne(['salesman_saas_id' => $this->saas_user_id, 'id' => $id]);
- $bind = 0;
- $store_info = [];
-
- if($model['store_id']){
- $store = Store::findOne($model['store_id']);
- $store_info = [
- 'name' => $store->name,
- 'logo' => $store->logo,
- 'contact_tel' => $store->contact_tel,
- ];
- }else{
- $store_info = [
- 'name' => $model->getParams('mini_nickname'),
- 'logo' => $model->getParams('store_logo'),
- 'contact_tel' => $model->getParams('legal_persona_phone'),
- ];
- }
- $saas_user = null;
- if($model->store_id){
- $admin = Admin::findOne([
- 'type' => 'store',
- 'type_id' => $model->store_id,
- ]);
- if($admin->saas_user_id){
- $bind = 1;
- $saas_user_ = SaasUser::findOne($admin->saas_user_id);
- $saas_user = [
- 'name' => $saas_user_->name,
- 'avatar' => $saas_user_->avatar
- ];
- }
- }
- $extData = [];
- $model = $this->checkUpdatStatus($model, $extData);
- $store_params = json_decode($model->store_params, true);
- $store_info['is_food'] = $store_params['is_food'];
- $store_info['plat_alipay'] = $store_params['plat_alipay'];
- $store_info['plat_wechat'] = $store_params['plat_wechat'];
- return [
- 'code' => 0,
- 'data' => $model,
- 'bind' => $bind,
- 'store_info' => $store_info,
- 'saas_user' => $saas_user,
- 'mini_pay_sign_url' => $extData['mini_pay_sign_url'], //商户扫码验证
- ];
- }
- public function checkUpdatStatus($model, &$extData = []) {
- $mini_pay_sign_url = '';
-
- //更新微信小程序状态
- if(!empty($model->store_mini_id) && empty($model->store_mini_appid)){
- $form = new WechatThirdForm();
- $form->store_id = $model->store_id;
- $res = $form->getRegisterStatus($model->store_mini_id);
- $model->store_mini_errmsg = WechatThirdForm::staticGetZnMsg($res);
- $model->save();
- }
-
-
- //更新微信小程序基础信息状态
- if(!empty($model->store_mini_appid) && empty($model->store_mini_info)){
- $form = new WechatThirdForm();
- $form->store_id = $model->store_id;
- $res = $form->getMiniInfo('', $model->store_mini_appid);
- if($res['code'] == 0){
- $item = $res['store_mini'];
- if (!empty($item['signature']) && !empty($item['mini_url']) && !empty($item['mini_nickname'] && !empty($item['categories']))) {
- $model->store_mini_info = 1;
- $model->store_mini_info_errmsg = '已完成';
- $model->save();
- }
- }
- }
-
- //更新进件状态
- if($model->store_mini_pay_apply_id && empty($model->store_mini_pay_sub_mchid)){
- $Merchant = new Merchant();
- $pay_apply_info = $Merchant->queryApplyment($model->store_mini_pay_apply_id);
- debug_log([__METHOD__, $model->id, $pay_apply_info], __CLASS__ . '.log');
- if (!isset($pay_apply_info['code']) && !isset($pay_apply_info['msg'])) {
- if($pay_apply_info['applyment_state'] == 'APPLYMENT_STATE_TO_BE_SIGNED'){
- $mini_pay_sign_url = $pay_apply_info['sign_url'];
- }
- if($pay_apply_info['applyment_state_msg'] && $model->store_mini_pay_errmsg != $pay_apply_info['applyment_state_msg']){
- $model->store_mini_pay_errmsg = $pay_apply_info['applyment_state_msg'];
- if($pay_apply_info['applyment_state'] == 'APPLYMENT_STATE_FINISHED'){
- $model->store_mini_pay_sub_mchid = $pay_apply_info['sub_mchid'];
- $this->wxMiniPayIsUse($model);
- }
- $model->save();
- }
- }
- }
-
-
- //更新支付宝小程序状态
- if(!empty($model->store_ali_mini_id) && empty($model->store_ali_mini_appid)){
- $form = new AlipayThirdForm();
- $form->mini_id = $model->store_ali_mini_id;
- $getMiniShenheStatus = $form->getMiniShenheStatus($form->mini_id);
- if(is_object($getMiniShenheStatus)){
- if($getMiniShenheStatus->min_app_id){
- $model->store_ali_mini_appid = $getMiniShenheStatus->min_app_id;
- $model->store_ali_mini_errmsg = '已完成';
- $model->save();
- }
- if(!$getMiniShenheStatus->min_app_id && $getMiniShenheStatus->status == 'PROCESS' && $model->store_ali_mini_errmsg != '待确认'){
- $model->store_ali_mini_errmsg = '待确认';
- $model->save();
- }
- }
- }
-
-
- //更新支付宝当面付状态
- if(!empty($model->store_ali_mini_appid) && empty($model->store_ali_mini_pay)){
- $form = new AlipayThirdForm();
- $form->mini_id = $model->store_ali_mini_id;
- $signstatus = $form->signstatusOk($model->store_ali_mini_pid, 'I1011000100000000001');
- if($signstatus){
- $model->store_ali_mini_pay = 1;
- $model->store_ali_mini_pay_errmsg = '已完成';
- $model->save();
- }
- }
-
-
- //更新支付宝门店状态
- if(!empty($model->store_ali_mini_appid) && empty($model->store_ali_mini_shop_id)){
- $form = new AlipayThirdForm();
- $form->mini_id = $model->store_ali_mini_id;
- $antMerchantExpandShop = $form->antMerchantExpandShop();
- if(is_object($antMerchantExpandShop)){
- $model = SalesmanNewStore::findOne(['salesman_saas_id' => $this->saas_user_id, 'id' => $model->id]);
- }
- }
- $extData['mini_pay_sign_url'] = $mini_pay_sign_url;
- return $model;
- }
- //业务员新建商家
- public function save($id, $data, $type = 0) {
- $t = \Yii::$app->db->beginTransaction();
- if($data){
- if(is_string($data)){
- $data = json_decode($data, true);
- }
- foreach($this->store_params_fields as $k){
- if(!isset($data[$k])){
- return [
- 'code' => 1,
- 'msg' => '参数缺失,' . $k,
- ];
- }
- }
- }
- $msgExt = [];
- $model = $id ? SalesmanNewStore::findOne($id) : new SalesmanNewStore();
- $model->salesman_saas_id = $this->saas_user_id;
- if($data){
- $model->store_params = json_encode($data, JSON_UNESCAPED_UNICODE);
- }
- $model->type = $type;
- if(!$model->save()){
- return [
- 'code' => 1,
- 'msg' => '数据保存失败,' . array_shift($model->getFirstErrors()),
- ];
- }
- if($type == 0){
-
- $initSaasUser = $this->initSaasUser($model, $msgExt);
- if(isset($initSaasUser['code']) && $initSaasUser['code'] != 0){
- return $initSaasUser;
- }
-
- $saas_user = $initSaasUser['data'];
- $initStore = $this->initStore($model, $saas_user, $msgExt);
- if(isset($initStore['code']) && $initStore['code'] != 0){
- return $initStore;
- }
- $notRollback = 0;
- if($model->getParams('plat_wechat')){
- $wxFastRegisterMini = $this->wxFastRegisterMini($model);
- if(isset($wxFastRegisterMini['code']) &&$wxFastRegisterMini['code'] != 0){
- // $model->store_mini_errmsg = $wxFastRegisterMini['msg'];
- return $wxFastRegisterMini;
- }
- $notRollback = 1;
- }
- if($model->getParams('plat_alipay')){
- $isvCreateMini = $this->isvCreateMini($model);
- if(isset($isvCreateMini['code']) &&$isvCreateMini['code'] != 0){
- if($notRollback){
- $model->store_ali_mini_errmsg = $isvCreateMini['msg'];
- $model->save();
- }else{
- return $isvCreateMini;
- }
- }
- }
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '操作成功。' . implode(',', $msgExt),
- 'data' => $model,
- ];
- }
- public function wxFastRegisterMini($model, &$msgExt = [], $refresh = 0){
- if(!empty($model->store_mini_id) && !$refresh){
- return;
- }
- $form = new WechatThirdForm();
- $form->store_id = $model->store_id;
- $form->name = $model->getParams('license_name');
- $form->code = $model->getParams('code');
- $form->code_type = $model->getParams('code_type');
- $form->legal_persona_wechat = $model->getParams('legal_persona_wechat');
- $form->license_pic = $model->getParams('license_copy');
- $form->legal_persona_name = $model->getParams('legal_persona_name');
- $res = $form->fastRegisterMini($refresh);
- debug_log([__METHOD__, $model->id, $refresh, $res], __CLASS__ . '.log');
- if($res['code'] == 0){
- $store_mini_id = $res['data'];
- $model->store_mini_id = $store_mini_id;
- $model->store_mini_errmsg = '注册审核中';
- if(!$model->save()){
- return [
- 'code' => 1,
- 'msg' => 'store_mini_id数据保存失败,' . array_shift($model->getFirstErrors()),
- ];
- }
- $msgExt[] = 'store_mini_id关联成功';
- }
- debug_log([__METHOD__, $model->id, $refresh, $msgExt], __CLASS__ . '.log');
- return $res;
- }
- public static function setMiniInfo($model, $refresh = 0){
- if(!empty($model->store_mini_info) && !$refresh){
- return;
- }
- if(!$model->store_mini_appid){
- return [
- 'code' => 1,
- 'msg' => '请先完成小程序创建',
- ];
- }
- $item = StoreMini::findOne($model->store_mini_id);
-
- $self = new self();
- $return = [
- 'code' => 0,
- 'msg' => '',
- ];
- if(empty($item['mini_nickname'])){
- $res = $self->setNickname($model);
- if($res['code'] != 0){
- $return['code'] = 1;
- $return['msg'] .= $res['msg'] . '。';
- }
- }
- if(empty($item['mini_url'])){
- $res = $self->setHeadImage($model);
- if($res['code'] != 0){
- $return['code'] = 1;
- $return['msg'] .= $res['msg'] . '。';
- }
- }
- if(empty($item['signature'])){
- $res = $self->setSignature($model);
- if($res['code'] != 0){
- $return['code'] = 1;
- $return['msg'] .= $res['msg'] . '。';
- }
- }
- if(empty($item['categories'])){
- $res = $self->addCategory($model);
- if($res['code'] != 0){
- $return['code'] = 1;
- $return['msg'] .= $res['msg'] . '。';
- }
- }
- $res = $return;
- if($res['code'] == 0){
- $model->store_mini_info = 1;
- $model->store_mini_info_errmsg = '已完成';
- }else{
- $model->store_mini_info_errmsg = $res['msg'];
- }
- $model->save();
- return $res;
- }
- /**
- * 修改头像
- */
- public function setHeadImage($model){
- $form = new WechatThirdForm();
- $form->mini_id = $model->store_mini_id;
- $form->head_img_media_id = $model->getParams('store_logo');
- $form->x1 = 0;
- $form->y1 = 0;
- $form->x2 = 1;
- $form->y2 = 1;
- $res = $form->setHeadImage();
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- return $res;
- }
- /**
- * 设置名称
- * 使用各项media_id,设置名称
- */
- public function setNickname($model){
- $form = new WechatThirdForm();
- $form->mini_id = $model->store_mini_id;
- $form->mini_nickname = $model->getParams('mini_nickname');
- $form->id_card = $model->getParams('id_card_copy');
- $form->license = $model->getParams('license_copy');
- $res = $form->setMiniNianname();
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- return $res;
- }
- /**
- * 修改简介
- */
- public function setSignature($model){
- $form = new WechatThirdForm();
- $form->mini_id = $model->store_mini_id;
- $form->signature = $model->getParams('mini_nickname');
- $res = $form->setSignature();
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- return $res;
- }
- /**
- * 添加类目
- */
- public function addCategory($model){
- $form = new WechatThirdForm();
- $form->mini_id = $model->store_mini_id;
- if($model->getParams('is_food')){
- $form->categories = [
- [
- 'first' => '220',
- 'second' => '632',
- 'certicates' => [
- [
- 'key' => '食品经营许可证',
- 'value' => $model->getParams('qualify'),
- ]
- ],
- ],
- ];
- }else{
- $form->categories = [
- [
- 'first' => '287',
- 'second' => '298',
- ],
- [
- 'first' => '150',
- 'second' => '670',
- ]
- ];
- }
- $res = $form->addCategory();
- return $res;
- }
- public function initSaasUser($model, &$msgExt = []) {
- $phone = $model->getParams('legal_persona_phone');
- $saas_user = SaasUser::find()->where(['mobile' => $phone, 'is_delete' => 0])->one();
- if (!$saas_user) {
- $saas_user = new SaasUser();
- $saas_user->access_token = \Yii::$app->security->generateRandomString();
- $saas_user->name = substr_replace($phone, '******', 3, 6);
- $saas_user->mobile = $phone;
- $saas_user->bytedance_open_id = '';
- $saas_user->platform_open_id = '';
- $saas_user->avatar = \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/web/v1/statics/images/avatar.png';
- $saas_user->store_id = -1;
- if(!$saas_user->save()){
- return [
- 'code' => 1,
- 'msg' => 'saas_user数据保存失败,' . array_shift($saas_user->getFirstErrors()),
- ];
- }
- $msgExt[] = 'saas_user创建成功';
- }
- return [
- 'code' => 0,
- 'data' => $saas_user,
- ];
- }
- public function initStore($model, $saas_user, &$msgExt = []) {
- if(!empty($model->store_id)){
- return;
- }
- $phone = $model->getParams('legal_persona_phone');
- $area = $model->getParams('md_area');
- $form = new StoreForm();
- $storeAdd = $form->add($model->getParams('mini_nickname'), '', 'cyy'.$phone, $area, 0);
- if($storeAdd['code'] != 0){
- return $storeAdd;
- }
- $msgExt[] = 'store创建成功';
- $model->store_id = $storeAdd['store']['id'];
- if(!$model->save()){
- return [
- 'code' => 1,
- 'msg' => 'store_id数据保存失败,' . array_shift($model->getFirstErrors()),
- ];
- }
- $store = Store::findOne($storeAdd['store']['id']);
- $salesman = Salesman::findOne(['saas_user_id' => $model->salesman_saas_id, 'is_delete' => 0]);
- $store->salesman_id = $salesman->id;
- if(!$store->save()){
- return [
- 'code' => 1,
- 'msg' => 'store_id数据保存失败,' . json_encode($store->errors, JSON_UNESCAPED_UNICODE),
- ];
- }
- $msgExt[] = 'store_id关联成功';
- $this->upStore($model);
- }
- public function upStore($model) {
- debug_log([__METHOD__, $model->id], __CLASS__ . '.log');
- Option::setGroup('store', [
- [
- 'name' => 'logo',
- 'value' => $model->getParams('store_logo'),
- ],
- [
- 'name' => 'coordinate',
- 'value' => $model->getParams('md_location_lat') . ',' . $model->getParams('md_location_lng'),
- ],
- [
- 'name' => 'address_info',
- 'type' => 'address_info',
- 'value' => [
- "province_id" => $model->getParams('md_area')['province_id'],
- "city_id" => $model->getParams('md_area')['city_id'],
- "district_id" => $model->getParams('md_area')['district_id']
- ],
- ],
- [
- 'name' => 'address',
- 'value' => $model->getParams('md_address'),
- ],
- [
- 'name' => 'contact_tel',
- 'value' => $model->getParams('legal_persona_phone'),
- ],
- ], $model->store_id);
- \app\modules\admin\models\SettingForm::staticUpStore($model->store_id);
- }
- public static function wechatPush($msg, $store_mini) {
- debug_log([__METHOD__, $msg, $store_mini->id], __CLASS__ . '.log');
- $model = SalesmanNewStore::findOne(['store_mini_id' => $store_mini->id]);
- if(!$model){
- return;
- }
- if(!$msg['appid']){
- $msg['errcode'] = $msg['status'];
- $msg['errmsg'] = $msg['msg'];
- $model->store_mini_errmsg = WechatThirdForm::staticGetZnMsg($msg);
- }else{
- $model->store_mini_errmsg = '注册成功';
- $model->store_mini_appid = $msg['appid'];
- }
- if(!$model->save()){
- \Yii::error([__METHOD__, $msg, $store_mini->id, array_shift($model->getFirstErrors())]);
- }
- if($msg['appid']){
- $form = new self();
- $wechatPayApply = $form->wechatPayApply($model);
- $setMiniInfo = self::setMiniInfo($model);
- }
- }
- //微信进件
- public function wechatPayApply($model, $refresh = 0) {
- if(!empty($model->store_mini_pay_apply_id) && !$refresh){
- return;
- }
- if($refresh && !$model->store_mini_appid){
- return [
- 'code' => 1,
- 'msg' => '请先完成小程序创建',
- ];
- }
- $Merchant = new Merchant();
- $contact_info = [
- "contact_name" => $model->getParams('legal_persona_name'),
- "contact_id_number" => $model->getParams('legal_persona_id_card_number'),
- "mobile_phone" => $model->getParams('legal_persona_phone'),
- "contact_email" => $model->getParams('contact_email'),
- ];
- $subject_info = [
- "subject_type" => $model->getParams('subject_type'),
- "business_license_info" => [
- "license_copy" => $model->getParams('license_copy'),
- "license_number" => $model->getParams('code'),
- "merchant_name" => $model->getParams('license_name'),
- "legal_person" => $model->getParams('legal_persona_name'),
- "period_end" => $model->getParams('code_is_long') ? '长期' : $model->getParams('period_end'),
- "is_long" => $model->getParams('code_is_long'),
- "period_begin" => $model->getParams('period_begin'),"2022-12-14"
- ],
- "organization_info" => [
- "is_composite" => 1,
- "organization_copy" => "",
- "organization_code" => "",
- "org_period_begin" => "",
- "org_period_end" => "",
- "is_long" => 0
- ],
- "certificate_info" => [
- "is_long" => 0,
- "cert_copy" => "",
- "cert_type" => "",
- "cert_number" => "",
- "merchant_name" => "",
- "company_address" => "",
- "legal_person" => "",
- "period_begin" => "",
- "period_end" => ""
- ],
- "identity_info" => [
- "is_long" => 0,
- "id_doc_type" => "IDENTIFICATION_TYPE_IDCARD",
- "id_card_info" => [
- "id_card_copy" => $model->getParams('id_card_copy'),
- "id_card_national" => $model->getParams('id_card_national'),
- "id_card_name" => $model->getParams('legal_persona_name'),
- "id_card_number" => $model->getParams('legal_persona_id_card_number'),
- "card_period_begin" => $model->getParams('card_period_begin'),
- "card_period_end" => $model->getParams('card_is_long') ? '长期' : $model->getParams('card_period_end'),
- "id_card_address" => $model->getParams('id_card_address'),
- ],
- "id_doc_info" => [
- "id_doc_copy" => "",
- "id_doc_name" => "",
- "id_doc_number" => "",
- "doc_period_begin" => "",
- "doc_period_end" => ""
- ],
- "owner" => true
- ]
- ];
- $business_info = [
- "merchant_shortname" => $model->getParams('mini_nickname'),
- "service_phone" => $model->getParams('legal_persona_phone'),
- "sales_info" => [
- "sales_scenes_type" => [
- "SALES_SCENES_MINI_PROGRAM"
- ],
- "mini_program_info" => [
- "mini_program_sub_appid" => $model->store_mini_appid
- ]
- ]
- ];
- $bank_account_info = [
- "bank_account_type" => $model->getParams('bank_account_type'),
- "account_name" => $model->getParams('bank_account_name'),
- "account_bank" => $model->getParams('bank_name'),
- "bank_name" => $model->getParams('bank_address_name'),
- "code_list" => $model->getParams('bank_address_code_list'),
- "address_list" => $model->getParams('bank_address_list'),
- "account_number" => $model->getParams('bank_account_no'),
- "bank_address_code" => $model->getParams('bank_address_code'),
- ];
- $Merchant->submitErrRollback = 1;
- $res = $Merchant->submit($contact_info, $subject_info, $business_info, $bank_account_info, 0, $model->store_mini_appid, $model->store_id);
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- if($res['code'] == 0){
- $merchant_info = $res['data'];
- $model->store_mini_pay_apply_id = $merchant_info->applyment_id;
- $model->store_mini_pay_errmsg = '审核中';
- }else{
- $model->store_mini_pay_errmsg = $res['msg'];
- }
- $model->save();
- return $res;
- }
- // 微信进件开始使用/暂停使用
- public function wxMiniPayIsUse($model){
- try{
- $count = MerchantInfo::find()->where(['bind_store_id' => $model->store_id, 'is_delete' => 0])->count();
- if($count == 0 || $count >= 2){
- return;
- }
- $merchantInfo = MerchantInfo::findOne(['applyment_id' => $model->store_mini_pay_apply_id, 'bind_store_id' => $model->store_id, 'is_delete' => 0]);
- if($merchantInfo && $merchantInfo->is_use == 2){
- $form = new WechatMiniMerchantForm();
- $form->id = $merchantInfo->id;
- $form->is_use = 1;
- $res = $form->unbind();
- return $res;
- }
- } catch (Exception $ex) {
- }
- }
- //业务员新建商家列表
- public function getList($type = 0, $data = []) {
- $query = SalesmanNewStore::find()->where(['is_delete' => 0, 'salesman_saas_id' => $this->saas_user_id]);
- if($type > -1){
- $query->andWhere(['type' => $type]);
- }
- if(isset($data['begin_time']) && $data['begin_time'] > -1){
- $query->andWhere(['>', 'created_at', strtotime($data['begin_time'])]);
- }
- if(isset($data['end_time']) && $data['end_time'] > -1){
- $query->andWhere(['<', 'created_at', strtotime($data['end_time'])]);
- }
- //audit_statuc
- if(isset($data['audit_statuc']) && $data['audit_statuc'] > -1){
- //审核完成
- if($data['audit_statuc'] == 1){
- $query->andWhere([
- 'and',
- 'JSON_EXTRACT(store_params, "$.plat_wechat") = 1',
- ['>', 'store_mini_appid', 0],
- ['>', 'store_mini_pay_sub_mchid', 0],
- ]);
- $query->andWhere([
- 'and',
- 'JSON_EXTRACT(store_params, "$.plat_alipay") = 1',
- ['>', 'store_ali_mini_appid', 0],
- ['>', 'store_ali_mini_shop_id', 0],
- ]);
- }
- //审核中
- if($data['audit_statuc'] == 3){
- $query->andWhere([
- 'or',
- ['=', 'store_mini_appid', 0],
- ['=', 'store_mini_pay_sub_mchid', 0],
- ['=', 'store_ali_mini_appid', 0],
- ['=', 'store_ali_mini_shop_id', 0],
- ]);
- }
- }
- if(isset($data['is_food']) && $data['is_food'] > -1){
- if($data['is_food'] == 1){
- $query->andWhere('JSON_EXTRACT(store_params, "$.is_food") = 1');
- }else{
- $query->andWhere('JSON_EXTRACT(store_params, "$.is_food") = 0');
- }
- }
- if(isset($data['plat_wechat']) && $data['plat_wechat'] > -1){
- if($data['plat_wechat'] == 1){
- $query->andWhere('JSON_EXTRACT(store_params, "$.plat_wechat") = 1');
- }else{
- $query->andWhere('JSON_EXTRACT(store_params, "$.plat_wechat") = 0');
- }
- }
- if(isset($data['plat_alipay']) && $data['plat_alipay'] > -1){
- if($data['plat_alipay'] == 1){
- $query->andWhere('JSON_EXTRACT(store_params, "$.plat_alipay") = 1');
- }else{
- $query->andWhere('JSON_EXTRACT(store_params, "$.plat_alipay") = 0');
- }
- }
- if(isset($data['sort_time']) && $data['sort_time'] > -1){
- if($data['sort_time'] == 1){
- $query->orderBy('created_at ASC');
- }else{
- $query->orderBy('created_at DESC');
- }
- }
- if(isset($data['store_name']) && $data['store_name']){
- $querystore_name = (new \yii\db\Query())->select('id')->from(Store::tableName())->where(['like', 'name', trim($data['store_name'])]);
- $query->andWhere(['store_id' => $querystore_name]);
- }
- debug_log($query->createCommand()->getRawSql(), 'sal.log');
- $list = pagination_make($query);
- foreach($list['list'] as &$item){
- if($item['store_id']){
- $store = Store::findOne($item['store_id']);
- $item['store_info'] = [
- 'name' => $store->name,
- 'logo' => $store->logo,
- 'contact_tel' => $store->contact_tel,
- ];
- }else{
- $store_params = json_decode($item['store_params'], true);
- $item['store_info'] = [
- 'name' => $store_params['mini_nickname'] ?? '',
- 'logo' => $store_params['store_logo'] ?? '',
- 'contact_tel' => $store_params['legal_persona_phone'] ?? '',
- ];
- }
-
- unset($item['store_params']);
- }
- return [
- 'code' => 0,
- 'data' => $list,
- 'msg' => 'ok',
- 'q' => $query->createCommand()->getRawSql(),
- ];
- }
- //业务员新建商家绑定商户二维码
- public function qr($id) {
- $model = SalesmanNewStore::findOne(['salesman_saas_id' => $this->saas_user_id, 'id' => $id]);
- $_time = microtime(true);
- $cacheKey = 'SalesmanNewStore_qr' . $_time;
- $cacheV = [
- 'salesman_saas_id' => $this->saas_user_id,
- 'store_id' => $model->store_id,
- 'id' => $model->id,
- ];
- cache()->set($cacheKey, $cacheV, 120);
- $scene = "cyyk:" . $_time;
- $res = ShareQrcode::wxQrcode('pages/index/index', $scene, 600, true, true);
- // $res = ShareQrcode::wxQrcode('salesman/salesman/applyShop', $scene, 600, true, true);
- if (isset($res['code']) && $res['code'] == 1) {
- return $res;
- }
- return [
- 'code' => 0,
- 'data' => [
- 'qr_url' => $res['url_path']
- ]
- ];
- }
- //业务员新建商家扫码绑定商户(商户扫码)
- public function qrBind($id = 0) {
- $_time = post_params('cyyk', 0);
- $cacheKey = 'SalesmanNewStore_qr' . $_time;
- $cache = cache()->get($cacheKey);
- if(!$cache){
- return [
- 'code' => 1,
- 'msg' => '参数错误,请重新扫码',
- ];
- }
- $id = $cache['id'];
- $salesman_saas_id = $cache['salesman_saas_id'];
- $store_id = $cache['store_id'];
- $model = SalesmanNewStore::findOne(['salesman_saas_id' => $salesman_saas_id, 'id' => $id]);
- $store_id = $model->store_id;
- $form = new StoreForm();
- $setPassword = $form->setPassword($store_id, '', '', '', $this->saas_user_id);
- if($setPassword['code'] != 0){
- return $setPassword;
- }
- cache()->delete($cacheKey);
- return [
- 'code' => 0,
- 'msg' => 'ok',
- ];
- }
-
-
-
-
-
-
- //支付宝
- //快速注册小程序
- public function isvCreateMini($model, &$msgExt = [], $refresh = 0){
- if(!empty($model->store_ali_mini_id) && !$refresh){
- return;
- }
- $form = new AlipayThirdForm();
- $form->bind_store_id = $model->store_id;
- $form->alipay_account = $model->getParams('alipay_account');
- $form->legal_personal_name = $model->getParams('legal_persona_name');
- $form->license_name = $model->getParams('license_name');
- $form->license_no = $model->getParams('code');
- $form->license_pic = $model->getParams('license_copy');
- $form->AppName = $model->getParams('mini_nickname');
- $form->ServicePhone = $model->getParams('legal_persona_phone');
- $form->contact_name = $model->getParams('legal_persona_name');
- $res = $form->isvCreateMini();
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- if($res['code'] == 0){
- $store_mini_id = $res['id'];
- $model->store_ali_mini_id = $store_mini_id;
- $model->store_ali_mini_errmsg = '注册审核中';
- if(!$model->save()){
- return [
- 'code' => 1,
- 'msg' => 'store_ali_mini_id数据保存失败,' . array_shift($model->getFirstErrors()),
- ];
- }
- $msgExt[] = 'store_ali_mini_id关联成功';
- }
- debug_log([__METHOD__, $model->id, $msgExt], __CLASS__ . '.log');
- return $res;
- }
- public static function aliPush($msg, $store_ali_mini) {
- debug_log([__METHOD__, $msg, $store_ali_mini->id], __CLASS__ . '.log');
- $model = SalesmanNewStore::findOne(['store_ali_mini_id' => $store_ali_mini->id]);
- if(!$model){
- return;
- }
- if(!$msg['min_app_id']){
- $model->store_ali_mini_errmsg = '商家拒绝或超时';
- }else{
- $model->store_ali_mini_errmsg = '注册成功';
- $model->store_ali_mini_appid = $msg['min_app_id'];
- $model->store_ali_mini_pid = $msg['pid'];
- $form = new self();
- $signFaceToFace = $form->signFaceToFace($model);
- $aliCreatedShop = $form->aliCreatedShop($model);
- }
- if(!$model->save()){
- \Yii::error([__METHOD__, $msg, $store_ali_mini->id, array_shift($model->getFirstErrors())]);
- }
- }
- public static function aliPushFaceToFace($msg, $store_ali_mini) {
- debug_log([__METHOD__, $msg, $store_ali_mini->id], __CLASS__ . '.log');
- $model = SalesmanNewStore::findOne(['store_ali_mini_id' => $store_ali_mini->id]);
- if(!$model){
- return;
- }
- $status = $msg->order_status;
- switch ($status) {
- case "MERCHANT_INFO_HOLD": //异常单 4
- $store_ali_mini_pay_errmsg = '异常单';
- break;
- case "MERCHANT_AUDITING": //审核中 3
- $store_ali_mini_pay_errmsg = '审核中';
- break;
- case "MERCHANT_CONFIRM": //待确认 5
- $store_ali_mini_pay_errmsg = '待确认';
- break;
- case "MERCHANT_CONFIRM_SUCCESS": //商户确认成功 6
- $store_ali_mini_pay_errmsg = '商户确认成功';
- break;
- case "MERCHANT_CONFIRM_TIME_OUT": //商户超时未确认 7
- $store_ali_mini_pay_errmsg = '商户超时未确认';
- break;
- case "MERCHANT_APPLY_ORDER_CANCELED": //审核失败或商户拒绝 8
- $store_ali_mini_pay_errmsg = '审核失败或商户拒绝';
- break;
- }
- if($store_ali_mini_pay_errmsg != $model->store_ali_mini_pay_errmsg){
- $model->store_ali_mini_pay_errmsg = $store_ali_mini_pay_errmsg;
- if(!$model->save()){
- \Yii::error([__METHOD__, $msg, $store_ali_mini->id, array_shift($model->getFirstErrors())]);
- }
- }
- }
- public static function aliPushAntShop($msg, $store_ali_mini) {
- debug_log([__METHOD__, $msg, $store_ali_mini->id], __CLASS__ . '.log');
- $model = SalesmanNewStore::findOne(['store_ali_mini_id' => $store_ali_mini->id]);
- if(!$model || $model->store_ali_mini_shop_id){
- return;
- }
- $shop_id = $msg->shop_id;
- $model->store_ali_mini_shop_id = $shop_id;
- $model->store_ali_mini_shop_errmsg = '创建成功';
- if(!$model->save()){
- \Yii::error([__METHOD__, $msg, $store_ali_mini->id, array_shift($model->getFirstErrors())]);
- }
- }
-
- //签约当面付
- public function signFaceToFace($model, $refresh = 0){
- if(!empty($model->store_ali_mini_shop_id) && !$refresh){
- return;
- }
- if(!$model->store_ali_mini_appid){
- return [
- 'code' => 1,
- 'msg' => '请先完成小程序创建',
- ];
- }
- debug_log([__METHOD__, $model->id], __CLASS__ . '.log');
- $form = new AlipayThirdForm();
- $form->mini_id = $model->store_ali_mini_id;
- $form->params_data = [
- "alipay_account" => $model->getParams('alipay_account'),
- "contact_name" => $model->getParams('license_name'),
- "service_phone" => $model->getParams('legal_persona_phone'),
- "service_email" => $model->getParams('contact_email'),
- "app_logo" => $model->getParams('md_logo'),
- ];
- $res = $form->agentCreate($model->store_ali_mini_id);
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- if($res['code'] == 0){
- $model->store_ali_mini_pay_errmsg = '审核中';
- }else{
- $model->store_ali_mini_pay_errmsg = $res['msg'];
- }
- $model->save();
- return $res;
- }
-
- //params_data mini_id 创建门店
- public function aliCreatedShop($model, $refresh = 0)
- {
- if(!empty($model->store_ali_mini_shop_id) && !$refresh){
- return;
- }
- if(!$model->store_ali_mini_appid){
- return [
- 'code' => 1,
- 'msg' => '请先完成小程序创建',
- ];
- }
- debug_log([__METHOD__, $model->id], __CLASS__ . '.log');
- $form = new AlipayThirdForm();
- $form->mini_id = $model->store_ali_mini_id;
- $form->attributes = [
- "mini_id" => $model->store_ali_mini_id,
- "params_data" => [
- "business_address" => [
- "city_code" => District::getAdcodeById($model->getParams('md_area')['city_id']),
- "district_code" => District::getAdcodeById($model->getParams('md_area')['district_id']),
- "province_code" => District::getAdcodeById($model->getParams('md_area')['province_id']),
- "longitude" => $model->getParams('md_location_lng'),
- "latitude" => $model->getParams('md_location_lat'),
- "address" => $model->getParams('md_address'),
- ],
- "store_id" => "",
- "shop_category" => ["A0002","B0043"],
- "shop_name" => $model->getParams('license_name'),
- "shop_type" => "01",
- "qualifications" => [
- "industry_qualification_image" => "",
- "industry_qualification_type" => ""
- ],
- "out_door_images" => $model->getParams('md_logo'),
- ]
- ];
- $res = $form->AntMerchantExpandShopCreate();
- debug_log([__METHOD__, $model->id, $res], __CLASS__ . '.log');
- if($res['code'] == 0){
- $model->store_ali_mini_shop_errmsg = '审核中';
- }else{
- $model->store_ali_mini_shop_errmsg = $res['msg'];
- }
- $model->save();
- return $res;
- }
- }
|