info("导入体脂秤信息"); $type = $this->argument("type"); switch($type) { case "user": $content = file_get_contents(storage_path("user.txt")); $contentList = explode("\n", $content); foreach($contentList as $content) { $res = json_decode($content); if (empty($res)) { dd($content); } $dataList = $res->data; foreach($dataList as $data) { $user = $this->importStoreUser($data); if ($user && $user->account_id) { $this->info("成功导入用户[{$user->id}]"); } } } break; case "fat_log": $users = User::whereNotNull("account_id")->get(); foreach($users as $user) { $file_path = storage_path("list/{$user->account_id}.txt"); $fat_content = file_get_contents($file_path); $fat_content = str_replace("'", '"', $fat_content); $res = json_decode($fat_content); if (empty($res)) { dd($fat_content); } if (!count($res->data)) { $this->info("用户[{$user->id}]没有体重信息"); continue; }; $this->importStoreFat($user, $res); $this->info("成功导入用户[{$user->id}]体重信息"); } break; case "order": $users = User::withCount("payOrders")->whereNotNull("account_id")->get(); foreach($users as $user) { if ($user->pay_orders_count) { $this->info("用户[{$user->id}]已有订单"); continue; } // 创建订单 $tradeNo = CommonService::getTradeNO(); DB::beginTransaction(); $order = Order::create([ 'user_id' => $user->id, 'type' => 'SERVICE', 'type_id' => 1, 'price' => 0, 'pay_status' => 'PAID', 'trade_no' => $tradeNo, 'name' => $user->name, 'area_code' => 86, "status" => Order::NOTSTART_STATUS, "service_status"=> "NOINFO", 'mobile' => ctype_digit($user->mobile) ? $user->mobile : aesDecryptCBC($user->mobile), 'agency_id' => null, 'desc' => '友福健康服务', 'is_hook'=>1, ]); // 创建线下订单 OfflineOrder::create([ 'order_id' => $order->id, 'name' => $order->name, 'area_code' => 86, 'mobile' =>$order->mobile, 'contract_no'=>$order->mobile, 'pay_type' => 1, 'bank_name' => null, 'bank_num' => null, 'agency_id' => null, 'price' => 0, ]); DB::commit(); $this->info("成功导入用户[{$user->id}]dma订单"); } break; default: return Command::SUCCESS; } return Command::SUCCESS; } public function importStoreFat($user, $res) { $fatService = new FatService(); foreach($res->data as $data) { $exists = NewFatLog::where("old_id", $data->id)->exists(); if ($exists) continue; $log = [ ["e_name"=>"Weight", "score"=>$data->weight], ["e_name"=>"BMI", "score"=>$data->bmi], ["e_name"=>"Bodyfat", "score"=>$data->bodyfat], ["e_name"=>"Subfat", "score"=>$data->subfat], ["e_name"=>"Water", "score"=>$data->water], ["e_name"=>"Muscle", "score"=>$data->muscle], ["e_name"=>"Visfat", "score"=>$data->visfat], ["e_name"=>"Bone", "score"=> number_format($data->bone / 10, 2, ".", "") ], ["e_name"=>"BMR", "score"=>$data->bmr * 10], ["e_name"=>"BodyShape", "score"=>$data->body_shape], ["e_name"=>"Protein", "score"=>$data->protein], ["e_name"=>"LBM", "score"=>$data->fat_free_weight], ["e_name"=>"Sinew", "score"=>$data->sinew], ["e_name"=>"BodyAge", "score"=>$data->bodyage], ["e_name"=>"Score", "score"=>$data->score], ]; $user->fat_device = 1; // 云康宝 $res = $fatService->saveFatLog($user,["data"=>$log, "time"=>$data->created_at, "old_id"=>$data->id, "init_data"=>"cs20h", "device_model"=>"CS20H"],Version::TYPE_APP,true); } } public function importStoreUser($data) { $user = User::where("account_id", $data->id)->first(); if ($user) return $user; if (!$data->phone) return null; $en_phone = aesEncryptCBC($data->phone); $user = User::where(function($sql) use($en_phone, $data) { $sql->where("mobile", $data->phone)->orWhere("mobile", $en_phone); })->whereIn("source", [1,4])->first(); if ($user) { User::where("id", $user->id)->update(["account_id"=>$data->id]); $user->account_id = $data->id; return $user; }; DB::beginTransaction(); $user = User::create([ "name"=>$data->account_name, "mobile"=>$en_phone, "birthday"=>$data->birthday, "sex"=>$data->gender?:2, "stature"=>$data->height, "avatar"=>$data->avatar, "source"=>4, "account_id"=>$data->id, "unit"=>"kg", "fat_device"=>1, ]); UserInfo::create(['user_id'=>$user->id]); DB::commit(); return $user; } }