542 lines
22 KiB
PHP
542 lines
22 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\H5;
|
|
|
|
use App\Facades\CommonService;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Controllers\HealthController;
|
|
use App\Http\Response\ResponseJson;
|
|
use App\Jobs\AddErrorLog;
|
|
use App\Models\FatKind;
|
|
use App\Models\FatLog;
|
|
use App\Models\Group;
|
|
use App\Models\HealthKind;
|
|
use App\Models\HealthLog;
|
|
use App\Models\User;
|
|
use App\Services\FatService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class FatController extends Controller
|
|
{
|
|
use ResponseJson;
|
|
|
|
const WEIGHT_RATE = 2.2;
|
|
const WEIGHT_JIN_LB_RATE = 1.1;
|
|
const WEIGHT_JIN_KG_RATE = 2;
|
|
|
|
/**
|
|
* 体脂记录
|
|
* @param Request $request
|
|
*/
|
|
public function fatLogs(Request $request)
|
|
{
|
|
$chat_id = $request->input('chat_id');
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::find($group->order->user_id);
|
|
$unit = $user->unit;
|
|
$logs = FatLog::where(['user_id' => $user->id, 'fat_name' => "体重"])->orderByDesc('id')->select('id', 'fat_name', 'fat_data', 'tested_at')->paginate();
|
|
foreach ($logs as $log) {
|
|
$log->yearMonth = date('Y年m月', strtotime($log->tested_at));
|
|
$log->dayHour = date('d日 H:i', strtotime($log->tested_at));
|
|
$log->unit = get_user_unit($user->language,$unit);
|
|
if ($unit != 'kg') {
|
|
if(($unit == 'lb' || $unit == '斤') && $user->language == 1){
|
|
$log->fat_data = get_two_float($log->fat_data * self::WEIGHT_RATE, 2);
|
|
}else{
|
|
$log->fat_data = get_two_float($log->fat_data * 2, 2);
|
|
}
|
|
}
|
|
}
|
|
return $this->success('ok', $logs);
|
|
}
|
|
|
|
/**
|
|
* 云康宝体脂记录,之前的结构设计就这样了,将错就错,时间来不及,等有时候再考虑重构合并吧,有缘人记得把公用的代码提取出来,这样只需要改一个地方
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|void
|
|
*/
|
|
public function healthFatLogs(Request $request){
|
|
try {
|
|
$chat_id = $request->input('chat_id');
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::find($group->order->user_id);
|
|
$unit = $user->unit;
|
|
$logs = HealthLog::where(['user_id' => $user->id, 'e_name' => "Weight"])->orderBy('id', 'desc')->select('id', 'e_name', 'score', 'tested_at')->paginate();
|
|
$language = $user->language;
|
|
foreach ($logs as $log) {
|
|
$log->yearMonth = date('Y年m月', strtotime($log->tested_at));
|
|
$log->dayHour = date('d日 H:i', strtotime($log->tested_at));
|
|
$log->unit = get_user_unit($language, $unit);
|
|
if ($unit != 'kg') {
|
|
if (($unit == 'lb' || $unit == '斤') && $language == User::LANGUAGE_EN) {
|
|
$log->score = get_two_float($log->score * self::WEIGHT_RATE, 2);
|
|
} else {
|
|
$log->score = get_two_float($log->score * self::WEIGHT_JIN_KG_RATE, 2);
|
|
}
|
|
}
|
|
}
|
|
return $this->success('ok',$logs);
|
|
}catch (\Exception $e){
|
|
Log::error('healthFatLogs:'.$e->getMessage());
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取云康宝体脂记录
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function healthFatLog(Request $request){
|
|
try {
|
|
$chat_id = $request->input('chat_id');
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
$tested_at = $request->input('tested_at');
|
|
if(empty($tested_at)) throw new \Exception("缺少参数.tested_at");
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::find($group->order->user_id);
|
|
$unit = $user->unit;
|
|
$language = $user->language;
|
|
$logs_arr = HealthLog::with('healthKind:name,e_name,unit,icon,h_icon', 'healthLevel:desc_key,name,color', 'healthLevels:name,e_name,color')
|
|
->where(['user_id' => $user->id, 'tested_at' => $tested_at])
|
|
->whereNotIn('e_name', ['WeightControl', 'FatControl', 'SinewControl', 'BodyfatMass'])
|
|
->select('e_name', 'score', 'desc', 'desc_key', 'tested_at', 'boundaries')
|
|
->get()->toArray();
|
|
$logs = [];
|
|
$health = new HealthController();
|
|
if (count($logs_arr)) {
|
|
foreach ($logs_arr as $log) {
|
|
if ($log['e_name'] != 'Score') {
|
|
$log = $health->changeUnit($log, $unit, $language);
|
|
$log['boundaries'] = json_decode($log['boundaries'], true);
|
|
$log['control'] = $health->calHealth($log);
|
|
$logs[$log['e_name']] = $log;
|
|
}
|
|
}
|
|
}
|
|
return $this->success('ok', $logs);
|
|
}catch (\Exception $e){
|
|
Log::error('healthFatLog:'.$e->getMessage());
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
public function fatLog(Request $request)
|
|
{
|
|
$chat_id = $request->input('chat_id');
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
$tested_at = $request->input('tested_at');
|
|
if(empty($tested_at)) throw new \Exception("缺少参数.tested_at");
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::find($group->order->user_id);
|
|
$unit = $user->unit;
|
|
|
|
$logs = FatLog::with('fatKind:fat_name,icon')->where(['user_id' => $user->id, 'tested_at' => $tested_at])->get()->toArray();
|
|
if (count($logs)) {
|
|
foreach ($logs as &$log) {
|
|
if ($log['unit'] == 'kg') {
|
|
$log = $this->changeUnit($log, $unit);
|
|
}
|
|
}
|
|
}
|
|
return $this->success('ok', $logs);
|
|
}
|
|
|
|
public function changeUnit($log, $unit)
|
|
{
|
|
if ($log['unit'] == 'kg' && $unit == '斤') {
|
|
$log['fat_data'] = number_format($log['fat_data'] * 2, 2);
|
|
$log['unit'] = '斤';
|
|
}
|
|
return $log;
|
|
}
|
|
|
|
public function fatKinds(Request $request)
|
|
{
|
|
$user = $request->group->order->user;
|
|
$kinds = FatKind::where(function ($sql) {
|
|
$sql->where('icon', '!=', '');
|
|
})->get();
|
|
$fat_names = [
|
|
'脂肪占比'=>'脂肪率',
|
|
'体内水分'=>'水分率',
|
|
'肌肉占比'=>'肌肉率',
|
|
'卡路里'=>'基础代谢',
|
|
'体脂重量'=>'脂肪重量',
|
|
'蛋白质'=>'蛋白质重量',
|
|
'脂肪控制'=>'体重控制量',
|
|
];
|
|
foreach ($kinds as $kind) {
|
|
if(!$user){
|
|
continue;
|
|
}
|
|
if ($kind->unit == 'kg' && $user->unit != $kind->unit) {
|
|
$kind->unit = change_unit($user->language,$user->unit);
|
|
}
|
|
if(isset($fat_names[$kind->fat_name])){
|
|
$kind->fat_name = $fat_names[$kind->fat_name];
|
|
}
|
|
}
|
|
return $this->success('ok', $kinds);
|
|
}
|
|
|
|
public function healthKinds(Request $request)
|
|
{
|
|
$user = $request->group->order->user;
|
|
$kinds = HealthKind::where(function ($sql) {
|
|
$sql->where('icon', '!=', '')->where('e_name', '!=', 'BodyShape');
|
|
})->get();
|
|
foreach ($kinds as $kind) {
|
|
if(!$user){
|
|
continue;
|
|
}
|
|
if ($kind->unit == 'kg' && $user->unit != $kind->unit) {
|
|
$kind->unit = '斤';
|
|
}
|
|
}
|
|
return $this->success('ok', $kinds);
|
|
}
|
|
|
|
/**
|
|
* 获取图表统计数据
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function healthStat(Request $request){
|
|
$user = $request->group->order->user;
|
|
$e_name = $request->input('e_name');
|
|
$start_date = $request->input('start_date');
|
|
$end_date = $request->input('end_date');
|
|
if ($start_date && $end_date) {
|
|
$day_arr = CommonService::daliy($start_date, $end_date);
|
|
} else {
|
|
$day_arr = CommonService::daliy(date('Y-m-d', strtotime('-180 days')), date('Y-m-d'));
|
|
}
|
|
$unit = $user->unit??'kg';
|
|
$x_arr = [];
|
|
$y_arr = [];
|
|
$z_arr = [];
|
|
$health = new HealthController();
|
|
foreach ($day_arr as $day) {
|
|
$x_arr[] = date('m/d', strtotime($day));
|
|
$day_end = date('Y-m-d', strtotime($day) + 24 * 3600);
|
|
$score = $mix_score = 0;
|
|
if(!$user){
|
|
$y_arr[] = $score;
|
|
continue;
|
|
}
|
|
$log = HealthLog::with('healthKind:name,e_name,unit,icon,h_icon', 'healthLevel:desc_key,name,color', 'healthLevels:name,e_name,color')
|
|
->where('user_id', $user->id)->where('e_name', $e_name)
|
|
->where('created_at', '>', $day)->where('created_at', '<', $day_end)
|
|
->orderByDesc('score')
|
|
->select('e_name', 'score', 'desc', 'desc_key', 'tested_at', 'boundaries')->first();
|
|
|
|
$mix_log = HealthLog::with('healthKind:name,e_name,unit,icon,h_icon', 'healthLevel:desc_key,name,color', 'healthLevels:name,e_name,color')
|
|
->where('user_id', $user->id)->where('e_name', $e_name)
|
|
->where('created_at', '>', $day)->where('created_at', '<', $day_end)
|
|
->orderBy('score','asc')
|
|
->select('e_name', 'score', 'desc', 'desc_key', 'tested_at', 'boundaries')->first();
|
|
if ($log) {
|
|
$log = $log->toArray();
|
|
if ($log['health_kind']['unit'] == 'kg') {
|
|
$log = $health->changeUnit($log, $unit, $user->language);
|
|
}
|
|
$score = $log['score'];
|
|
}
|
|
$y_arr[] = $score;
|
|
|
|
if ($mix_log) {
|
|
$mix_log = $mix_log->toArray();
|
|
if ($mix_log['health_kind']['unit'] == 'kg') {
|
|
$mix_log = $health->changeUnit($mix_log, $unit, $user->language);
|
|
}
|
|
$mix_score = $mix_log['score'];
|
|
}
|
|
$z_arr[] = $mix_score;
|
|
}
|
|
return $this->success('ok', compact('x_arr', 'y_arr','z_arr'));
|
|
}
|
|
|
|
public function fatStat(Request $request)
|
|
{
|
|
$user = $request->group->order->user;
|
|
$fat_name = $request->input('fat_name');
|
|
$start_date = $request->input('start_date');
|
|
$end_date = $request->input('end_date');
|
|
if ($start_date && $end_date) {
|
|
$day_arr = CommonService::daliy($start_date, $end_date);
|
|
}else {
|
|
$day_arr = CommonService::daliy(date('Y-m-d', strtotime('-180 days')), date('Y-m-d'));
|
|
//获取用户第一次称的时间
|
|
// $test_date = FatLog::where('user_id',auth()->id())->where('fat_name', $fat_name)->value('created_at');
|
|
// $day_arr = CommonService::daliy(date('Y-m-d', strtotime($test_date)), date('Y-m-d'));
|
|
}
|
|
$x_arr = [];
|
|
$y_arr = [];
|
|
$z_arr = [];
|
|
$unit = $user->unit??'kg';
|
|
|
|
//这只是为了兼容之前不好的旧结构设计,有缘人自己把整个结构改了,我没时间重构整个旧数据结构,将错就错
|
|
$fat_names = [
|
|
'脂肪率'=>['脂肪占比','脂肪率'],
|
|
'水分率'=>['体内水分','水分率'],
|
|
'肌肉率'=>['肌肉占比','肌肉率'],
|
|
'卡路里'=>['基础代谢','卡路里'],
|
|
'脂肪重量'=>['体脂重量','脂肪重量'],
|
|
'蛋白质重量'=>['蛋白质','蛋白质重量'],
|
|
'体重控制量'=>['脂肪控制','体重控制量'],
|
|
];
|
|
if(isset($fat_names[$fat_name])){
|
|
$fat_name = $fat_names[$fat_name];
|
|
}else{
|
|
$fat_name = explode(',',$fat_name);
|
|
}
|
|
$fat = new \App\Http\Controllers\FatController();
|
|
foreach ($day_arr as $day) {
|
|
$x_arr[] = date('m/d', strtotime($day));
|
|
$day_end = date('Y-m-d', strtotime($day) + 24 *3600);
|
|
$fat_data = 0;
|
|
if(!$user){
|
|
$y_arr[] = $fat_data;
|
|
continue;
|
|
}
|
|
$log = FatLog::where('user_id', $user->id)->whereIn('fat_name', $fat_name)->where('created_at', '>', $day)->where('created_at', '<', $day_end)->orderByDesc('fat_data')->first();
|
|
$mix_log = FatLog::where('user_id', auth()->id())->whereIn('fat_name', $fat_name)->where('created_at', '>', $day)->where('created_at', '<', $day_end)->orderBy('fat_data','asc')->first();
|
|
$fat_data = $fat_mix = 0;
|
|
if ($log) {
|
|
$log = $log->toArray();
|
|
if ($log['unit'] == 'kg') {
|
|
$log = $fat->changeUnit($log, $unit,$user->language);
|
|
}
|
|
$fat_data = $log['fat_data'];
|
|
}
|
|
$y_arr[] = $fat_data;
|
|
|
|
if ($mix_log) {
|
|
$mix_log = $mix_log->toArray();
|
|
if ($mix_log['unit'] == 'kg') {
|
|
$mix_log = $fat->changeUnit($mix_log, $unit,$user->language);
|
|
}
|
|
$fat_mix = $mix_log['fat_data'];
|
|
}
|
|
$z_arr[] = $fat_mix;
|
|
|
|
}
|
|
return $this->success('ok', compact('x_arr', 'y_arr','z_arr'));
|
|
}
|
|
|
|
/**
|
|
* 获取图表统计
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatStat(Request $request){
|
|
try {
|
|
$name = $request->input('fat_name');
|
|
$start_date = $request->input('start_date');
|
|
$end_date = $request->input('end_date');
|
|
|
|
$user = $request->group->order->user;
|
|
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatStat($name,$start_date,$end_date,$user);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('getFatStat:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取图标数据
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatKinds(Request $request)
|
|
{
|
|
try {
|
|
$user = $request->group->order->user;
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatKinds($user);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('fatKinds:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('查询失败');
|
|
}
|
|
}
|
|
/**
|
|
* 获取图表统计
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatStatV1(Request $request){
|
|
try {
|
|
$user_id = $request->input('user_id');
|
|
if(empty($user_id)){
|
|
return $this->failure('用户id不为空');
|
|
}
|
|
$name = $request->input('fat_name');
|
|
$start_date = $request->input('start_date');
|
|
$end_date = $request->input('end_date');
|
|
|
|
$user = User::find($user_id);
|
|
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatStat($name,$start_date,$end_date,$user);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('getFatStatV1:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取图标数据
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatKindsV1(Request $request)
|
|
{
|
|
try {
|
|
$user_id = $request->input('user_id');
|
|
if(empty($user_id)){
|
|
return $this->failure('用户id不为空');
|
|
}
|
|
$user = User::find($user_id);
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatKinds($user);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('getFatKindsV1:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('查询失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取称重记录
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatLogList(Request $request){
|
|
try {
|
|
$chat_id = $request->input('chat_id');
|
|
$service_user_id = $request->input('service_user_id');
|
|
if($service_user_id){
|
|
$group = Group::with('order')->where('im_chat_id', $chat_id)->first();
|
|
}else{
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
}
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::find($group->order->user_id);
|
|
if(empty($user)) return $this->failure('用户不存在');
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatLogList($user,$service_user_id);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('getFatLogList:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取体脂详情
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getFatDetail(Request $request){
|
|
try {
|
|
$chat_id = $request->input('chat_id');
|
|
$service_user_id = $request->input('service_user_id');
|
|
if($service_user_id){
|
|
$group = Group::with('order')->where('im_chat_id', $chat_id)->first();
|
|
}else{
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
}
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
|
|
$id = $request->get('id');
|
|
if(empty($id)){
|
|
return $this->failure('缺少参数id');
|
|
}
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
|
|
// $unit = $request->input('unit');
|
|
$unit = "斤";
|
|
$user_id = $request->input('user_id');
|
|
|
|
$user = User::find($group->order->user_id);
|
|
|
|
$fatService = new FatService();
|
|
$res = $fatService->getFatDetail($id,$user_id,$unit,$user);
|
|
|
|
if(!$res['status']){
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok',$res['data']??[]);
|
|
}catch (\Exception $e){
|
|
AddErrorLog::dispatch('getFatDetail:'.$e->getMessage())->onQueue('health');
|
|
return $this->failure('获取失败');
|
|
}
|
|
}
|
|
|
|
public function comparefatLogs(Request $request) {
|
|
$chat_id = $request->input('chat_id');
|
|
$service_user_id = $request->input('service_user_id');
|
|
if($service_user_id){
|
|
$group = Group::with('order')->where('im_chat_id', $chat_id)->first();
|
|
}else{
|
|
$group = Group::with('order')->where('chat_id', $chat_id)->first();
|
|
}
|
|
if (empty($group) || empty($group->order)) return $this->failure("缺少群信息或者订单信息");
|
|
|
|
if (empty($group->order->user_id)) return $this->failure("订单用户未完成小程序个人信息");
|
|
$user = User::where("id", $group->order->user_id)->select("id", "name", "avatar")->first();
|
|
if(empty($user)) return $this->failure('用户不存在');
|
|
|
|
$start_id = $request->input('start_id');
|
|
$end_id = $request->input('end_id');
|
|
if (empty($start_id) || empty($end_id)) {
|
|
return $this->failure('请选择对比时间');
|
|
}
|
|
|
|
$user->fat_device = User::FAT_DEVICE_YUNKANGBAO;
|
|
|
|
$fatService = new FatService();
|
|
$res = $fatService->getCompareFatData($user, $start_id, $end_id, "斤");
|
|
|
|
if (!$res['status']) {
|
|
return $this->failure($res['msg']);
|
|
}
|
|
return $this->success('ok', $res['data'] ?? []);
|
|
}
|
|
}
|