作者 赵彬吉

update

@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 namespace App\Console\Commands; 3 namespace App\Console\Commands;
4 4
5 use App\Helper\Arr; 5 use App\Helper\Arr;
  6 +use App\Helper\Common;
6 use App\Helper\OaGlobalsoApi; 7 use App\Helper\OaGlobalsoApi;
7 use App\Models\Channel\Channel; 8 use App\Models\Channel\Channel;
8 use App\Models\Com\NoticeLog; 9 use App\Models\Com\NoticeLog;
@@ -16,6 +17,7 @@ use App\Utils\LogUtils; @@ -16,6 +17,7 @@ use App\Utils\LogUtils;
16 use Hashids\Hashids; 17 use Hashids\Hashids;
17 use Illuminate\Console\Command; 18 use Illuminate\Console\Command;
18 use Illuminate\Support\Facades\DB; 19 use Illuminate\Support\Facades\DB;
  20 +use Illuminate\Support\Facades\Http;
19 21
20 /** 22 /**
21 * 同步项目信息 23 * 同步项目信息
@@ -66,6 +68,15 @@ class SyncProject extends Command @@ -66,6 +68,15 @@ class SyncProject extends Command
66 } 68 }
67 if($data['data']['order_type'] == '首次'){ 69 if($data['data']['order_type'] == '首次'){
68 $this->sync($data['data']); 70 $this->sync($data['data']);
  71 +
  72 + //同步aicc
  73 + if($data['data']['exclusive_aicc']){
  74 + $this->toAicc($data['data']);
  75 + }
  76 + //同步hagro
  77 + if($data['data']['exclusive_hagro']){
  78 + $this->toHagro($data['data']);
  79 + }
69 } 80 }
70 if($data['data']['order_type'] == '续费'){ 81 if($data['data']['order_type'] == '续费'){
71 $this->renewSync($data['data']); 82 $this->renewSync($data['data']);
@@ -163,7 +174,9 @@ class SyncProject extends Command @@ -163,7 +174,9 @@ class SyncProject extends Command
163 'cooperate_date' => date('Y-m-d', $param['create_time']), 174 'cooperate_date' => date('Y-m-d', $param['create_time']),
164 'from_order_id' => $param['from_order_id'], 175 'from_order_id' => $param['from_order_id'],
165 'aicc' => $param['exclusive_aicc'], 176 'aicc' => $param['exclusive_aicc'],
  177 + "exclusive_aicc_day" => $param['exclusive_aicc_day'],
166 'hagro' => $param['exclusive_hagro'], 178 'hagro' => $param['exclusive_hagro'],
  179 + "exclusive_hagro_day" => $param['exclusive_hagro_day'],
167 'notice_order_id' => $param['id'], 180 'notice_order_id' => $param['id'],
168 ], 181 ],
169 'deploy_build' => [ 182 'deploy_build' => [
@@ -315,4 +328,60 @@ class SyncProject extends Command @@ -315,4 +328,60 @@ class SyncProject extends Command
315 $deployOptimizeModel = new DeployOptimize(); 328 $deployOptimizeModel = new DeployOptimize();
316 return $deployOptimizeModel->add($param); 329 return $deployOptimizeModel->add($param);
317 } 330 }
  331 +
  332 + /**
  333 + * 同步到AICC
  334 + * @param $data
  335 + * @author zbj
  336 + * @date 2023/9/1
  337 + */
  338 + protected function toAicc($data){
  339 + $url = 'https://biz.ai.cc/api/sync_company_for_order';
  340 + $param = [
  341 + 'company_name' => $data['company_name'],
  342 + 'company_address' => '',
  343 + 'company_tel' => $data['principal_mobile'],
  344 + 'company_email' => '',
  345 + 'remark' => $data['remark'],
  346 + 'level_id' => 6,
  347 + 'level_day' => $data['exclusive_aicc_day'] ?: 1,
  348 + 'from_order_id' => $data['from_order_id'],
  349 + ];
  350 +
  351 + //sign
  352 + ksort($param);
  353 + $tem = [];
  354 + foreach ($param as $key => $val) {
  355 + $tem[] = $key . '=' . urlencode($val);
  356 + }
  357 + $string = implode('&', $tem);
  358 + $key = md5('quanqiusou.com');
  359 + $param['sign'] = md5($string . $key);
  360 + $res = Http::withoutVerifying()->post($url, $param)->json();
  361 + if(empty($res['status']) || $res['status'] != 200){
  362 + LogUtils::error('ProjectToAicc error', $res);
  363 + }
  364 + }
  365 +
  366 + /**
  367 + * 同步到Hagro
  368 + * @param $data
  369 + * @author zbj
  370 + * @date 2023/9/1
  371 + */
  372 + protected function toHagro($data){
  373 + $url = 'https://beta.hagro.cn/globalso/create_project';
  374 + $param = [
  375 + 'company' => $data['company_name'],
  376 + 'phone' => $data['principal_mobile'],
  377 + 'planday' => $data['exclusive_aicc_day'] ?: 1,
  378 + 'from_order_id' => $data['from_order_id'],
  379 + ];
  380 + $common = new Common();
  381 + $token = $common->encrypt($param);
  382 + $res = Http::withoutVerifying()->get($url, ['token' => $token])->json();
  383 + if(empty($res['code']) || $res['code'] != 200){
  384 + LogUtils::error('ProjectToHagro error', $res);
  385 + }
  386 + }
318 } 387 }
@@ -17,6 +17,7 @@ use App\Helper\Common; @@ -17,6 +17,7 @@ use App\Helper\Common;
17 use App\Helper\Socket; 17 use App\Helper\Socket;
18 use App\Helper\Translate; 18 use App\Helper\Translate;
19 use App\Helper\Wechat; 19 use App\Helper\Wechat;
  20 +use App\Http\Logic\Bside\User\UserLogic;
20 use App\Http\Logic\Bside\User\UserLoginLogic; 21 use App\Http\Logic\Bside\User\UserLoginLogic;
21 use App\Models\File\Image; 22 use App\Models\File\Image;
22 use App\Models\Project\Project; 23 use App\Models\Project\Project;
@@ -24,8 +25,10 @@ use App\Models\Service\Service; @@ -24,8 +25,10 @@ use App\Models\Service\Service;
24 use App\Models\Sms\SmsLog; 25 use App\Models\Sms\SmsLog;
25 use App\Models\Template\Template; 26 use App\Models\Template\Template;
26 use App\Models\Template\TemplateModule; 27 use App\Models\Template\TemplateModule;
  28 +use App\Models\User\User;
27 use App\Models\User\User as UserModel; 29 use App\Models\User\User as UserModel;
28 use App\Utils\EncryptUtils; 30 use App\Utils\EncryptUtils;
  31 +use Illuminate\Database\Eloquent\Model;
29 use \Illuminate\Support\Facades\Cache; 32 use \Illuminate\Support\Facades\Cache;
30 use Mrgoon\AliSms\AliSms; 33 use Mrgoon\AliSms\AliSms;
31 34
@@ -231,15 +234,34 @@ class LoginController extends BaseController @@ -231,15 +234,34 @@ class LoginController extends BaseController
231 if(empty($arr)){ 234 if(empty($arr)){
232 $this->response('登录失败',Code::USER_ERROR); 235 $this->response('登录失败',Code::USER_ERROR);
233 } 236 }
234 - $userModel = new UserModel();  
235 - $info = $userModel->read(['mobile'=>$arr['phone']]);  
236 - if($info === false){  
237 - $this->response('当前用户不存在请联系管理员',Code::USER_ERROR); 237 + //没有from_order_id的项目 进入演示版 运营中心
  238 + $arr['from_order_id'] = 0;
  239 + if(!$arr['from_order_id']){
  240 + //有账号就直接登录, 没有账号创建账号登录
  241 + $user = (new User())->where('project_id', Project::DEMO_PROJECT_ID)->where('mobile', $arr['phone'])->first();
  242 + if(!$user){
  243 + $user = new User();
  244 + $user->project_id = Project::DEMO_PROJECT_ID;
  245 + $user->mobile = $arr['phone'];
  246 + $user->password = base64_encode(md5('v6.' . substr($arr['phone'], -6)));
  247 + $user->name = $arr['phone'];
  248 + $user->save();
  249 + }
  250 + $data = [
  251 + 'user_id'=>$user['id'],
  252 + 'manager_id'=>0,
  253 + ];
  254 + }else{
  255 + //有from_order_id, 找到对应的项目并登录主账号
  256 + $project = (new Project())->read(['from_order_id'=>$arr['from_order_id']]);
  257 + if(!$project){
  258 + $this->response('项目不存在,请联系管理员',Code::USER_ERROR);
  259 + }
  260 + $data = [
  261 + 'project_id'=>$project['id'],
  262 + 'manager_id'=>0,
  263 + ];
238 } 264 }
239 - $data = [  
240 - 'user_id'=>$info['id'],  
241 - 'manager_id'=>0,  
242 - ];  
243 $info = $logic->autologin($data); 265 $info = $logic->autologin($data);
244 $this->response('success',Code::SUCCESS,['info'=>$info]); 266 $this->response('success',Code::SUCCESS,['info'=>$info]);
245 } 267 }
@@ -266,6 +288,6 @@ class LoginController extends BaseController @@ -266,6 +288,6 @@ class LoginController extends BaseController
266 } 288 }
267 return $data; 289 return $data;
268 } 290 }
269 - 291 +
270 292
271 } 293 }
@@ -97,7 +97,7 @@ class UserLoginLogic @@ -97,7 +97,7 @@ class UserLoginLogic
97 { 97 {
98 //项目自动登录 98 //项目自动登录
99 if(isset($data['project_id']) && !empty($data['project_id'])){ 99 if(isset($data['project_id']) && !empty($data['project_id'])){
100 - $has_user = $this->model->read(['project_id'=>$data['project_id'],'role_id'=>0]); 100 + $has_user = $this->model->read(['project_id'=>$data['project_id'],'role_id'=>$this->model::ROLE_MANAGER]);
101 } 101 }
102 //根据特定用户自动登录 102 //根据特定用户自动登录
103 if(isset($data['user_id']) && !empty($data['user_id'])){ 103 if(isset($data['user_id']) && !empty($data['user_id'])){
@@ -155,7 +155,7 @@ class UserLoginLogic @@ -155,7 +155,7 @@ class UserLoginLogic
155 $info['from_order_id'] = $project['from_order_id'] ?? ''; 155 $info['from_order_id'] = $project['from_order_id'] ?? '';
156 $info['aicc'] = $project['aicc'] ?? ''; 156 $info['aicc'] = $project['aicc'] ?? '';
157 $info['hagro'] = $project['hagro'] ?? ''; 157 $info['hagro'] = $project['hagro'] ?? '';
158 - $info['plan'] = Project::planMap()[$project['deploy_build']['plan']]; 158 + $info['plan'] = $project['deploy_build']['plan'];
159 $info['domain'] = (!empty($project['deploy_optimize']['domain']) ? 159 $info['domain'] = (!empty($project['deploy_optimize']['domain']) ?
160 $project['deploy_optimize']['domain'] : ($project['deploy_build']['test_domain'] ?? '')); 160 $project['deploy_optimize']['domain'] : ($project['deploy_build']['test_domain'] ?? ''));
161 //保存项目缓存 161 //保存项目缓存
@@ -16,6 +16,8 @@ class Project extends Base @@ -16,6 +16,8 @@ class Project extends Base
16 16
17 const DATABASE_NAME_FIX = 'gl_data_'; 17 const DATABASE_NAME_FIX = 'gl_data_';
18 18
  19 + const DEMO_PROJECT_ID = 1;
  20 +
19 const STATUS_ONE = 1;//审核通过 21 const STATUS_ONE = 1;//审核通过
20 const TYPE_ZERO = 0;//初始导入项目 22 const TYPE_ZERO = 0;//初始导入项目
21 const TYPE_ONE = 1;//建站中 23 const TYPE_ONE = 1;//建站中