ufutx.dma/app/Http/Controllers/App/UserController.php
2026-03-04 14:42:40 +08:00

282 lines
9.8 KiB
PHP

<?php
namespace App\Http\Controllers\App;
use App\Facades\CommonService;
use App\Facades\UploadService;
use App\Facades\WechatService;
use App\Http\Controllers\Controller;
use App\Http\Response\ResponseJson;
use App\Jobs\SendEasySms;
use App\Models\Collaborator;
use App\Models\CustomerService;
use App\Models\CustomerServiceUser;
use App\Models\Feedback;
use App\Models\Message;
use App\Models\ReportLog;
use App\Models\User;
use App\Models\Version;
use App\Models\VideoCollect;
use App\Models\VideoVisitor;
use App\Models\WangYiYun;
use App\Services\ChatService;
use App\Services\ImService;
use Carbon\Carbon;
use cccdl\yunxin_sdk\Im\User as ImUser;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Overtrue\EasySms\EasySms;
use Exception;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class UserController extends Controller
{
use ResponseJson;
/**
* code 换取手机号
* @param Request $request
*/
public function codeMobile(Request $request)
{
$code = $request->input('code');
if (empty($code))
throw new \Exception("为获取到获取手机号的code");
$res = WechatService::phoneNuber($code);
return $this->success('ok', $res);
}
/**
* 修改用户信息包括手机号
* @param Request $request
*/
public function updateUserInfo(Request $request)
{
$user = auth()->user();
//手机号
$mobile = $request->input('mobile');
if ($mobile) {
//是否其他账户已存在手机号,把旧的账号号码置空
// $is_exists = User::where("id", '<>', auth()->id())->where('mobile', $mobile)->whereIn('source',User::SERVER_USER_SOURCE)->first();
// if($is_exists){
// return $this->failure('手机号已被占用');
// }
$user->mobile = $mobile;
//查看手机号是否存在服务人员信息
// $collaborator = Collaborator::where('mobile',$mobile)->where('status',1)->first();
// if($collaborator){
// User::sameDataToUser($collaborator->user_id,$user->id);
// }
}
//头像
$avatar = $request->input('avatar');
if ($avatar)
$user->avatar = $avatar;
//名称
$name = $request->input("name");
if ($name)
$user->name = $name;
//性别
$sex = $request->input("sex");
if ($sex)
$user->sex = $sex;
//生日
$birthday = $request->input("birthday");
if ($birthday)
$user->birthday = $birthday;
//升高
$stature = $request->input('stature');
if ($stature)
$user->stature = $stature;
//单位
$unit = $request->input('unit');
if ($unit)
$user->unit = $unit;
//更新网易云信数据
$imService = new ImService();
$imService->updateImUser($user->id, $user);
$user->save();
DB::commit();
return $this->success('ok');
}
/**
* 用户信息
* @param Request $request
*/
public function userInfo(Request $request)
{
$version = $request->get('version');
$user = auth()->user();
// $user->makeVisible('mobile');
$user->is_complete_profile = $user->baseUserInfo();
$status = "NOORDER";
$order = $user->payOrders()->whereIn('status', ['NOTSTART', 'STARTING', 'FINISHED'])->orderByDesc('id')->first();
if ($order) {
$status = $order->status;
}
$user->order_status = $status;
$user->service_status = $order->service_status ?? 'NOINFO';
//查找版本号状态
$user->version_status = Version::where('version', $version)->where('type', Version::TYPE_APP)->value('status');
//获取视频相关信息
$user->my_collect = VideoCollect::where('user_id', $user->id)->count();
$user->collect_my = VideoCollect::where('video_user_id', $user->id)->count();
// 获取当前时间
$now = Carbon::now();
// 获取7天前的时间
$lastWeek = $now->subDays(7);
$user->visitor = VideoVisitor::where('video_user_id', $user->id)->whereDate('created_at', '>=', $lastWeek)->count();
//更新网易云信数据
$imService = new ImService();
$imService->updateImUser($user->id, $user);
$user->qr_code = config('app.url') . "/go_html/role_apply#/appDownloadPageV2?user_id=" . $user->id;
$user->id = make_user_id($user->id);
return $this->success('ok', $user);
}
public function getAppUserQrCode($user_id)
{
$url = config('app.url') . "/go_html/role_apply#/appWatchesUse?user_id=" . $user_id;
$path = storage_path('qrcode/' . $user_id . '_qrcode.png');
QrCode::size(300)->format("png")->generate($url, $path);
// QrCode::generate($url, $path);
$pic = "";
if (file_exists($path)) {
$pic = UploadService::uploadFile($path);
@unlink($path);
}
return $pic;
}
public function mobileCode(Request $request)
{
$mobile = $request->input('mobile');
$code = CommonService::random(6, 1);
$data = [
'code' => $code,
'message' => '绑定手机号验证码:' . $code . ',十分钟有效【友福同享】',
];
SendEasySms::dispatch($mobile, $data)->onQueue('send.code.sms');
return $this->success('ok');
}
/**
* 用户切换语言
* @param Request $request
*/
public function changeLanguage(Request $request)
{
try {
$language = $request->get('language', 0);
$user = Auth()->user();
if (!$user) {
return $this->failure('用户信息不存在');
}
$user->language = $language;
$user->save();
return $this->success('ok', $user);
} catch (Exception $e) {
return $this->jsonResponse(1, $e->getMessage());
}
}
/**
* 意见反馈
* @param Request $request
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
*/
public function sendFeedback(Request $request)
{
try {
$user = Auth()->user();
$type = $request->input('type');
if (empty($type)) {
return $this->failure('请选择反馈类型');
}
$desc = $request->input('desc', '');
$images = $request->input('images');
if (is_array($images)) {
$images = json_encode($images);
}
$mobile = $request->input('mobile');
$url = $request->input("url");
$map = [];
$map['user_id'] = $user->id;
$map['type'] = $type;
$map['desc'] = $desc;
$map['images'] = $images;
$map['mobile'] = !empty($mobile) ? $mobile : $user->mobile;
$map['url'] = json_encode($url);
$source = $request->header("source");
$map['source'] = $source;
$is_server = $request->header("isServer");
if ($source == "ios" && $is_server == 1) {
$map['source'] = "ios_server";
} elseif ($source == "android" && $is_server == 1) {
$map['source'] = "android_server";
}
$map['version'] = $request->header("version");
Feedback::create($map);
// 通知
$services = CustomerService::where("type_name", "测试客服")->get();
foreach ($services as $service) {
$chatService = new ChatService();
$user_id = 12;
if (config('app.env') == 'production') {
$user_id = 4169;
}
$user_ac_cid = make_wangyiyun_accid(id: $user_id);
$to_user_ac_cid = make_wangyiyun_accid(id: $service->user_id);
$params['ext'] = json_encode(['is_system' => 1]);
$chatService->sendImMsg($user_ac_cid, $to_user_ac_cid, 0, "系统通知", "用户" . $user->name . "提交了反馈,请查阅", "'https://image.fulllinkai.com/202403/29/dea3e0c27107cdf178635d2a41199e5e.png", config('app.url') . "/go_html/dma_h5_biz/app/application/feedbackList", $params);
}
return $this->success('ok', $map);
} catch (\Exception $e) {
return $this->jsonResponse(1, $e->getMessage());
}
}
public function sendReport(Request $request)
{
try {
$data = $request->only(['user_id', 'type', 'img', 'remark']);
$validated = Validator::make($data, [
'user_id' => 'required',
'type' => 'required',
'img' => 'required',
'remark' => 'required',
], [
'user_id.required' => '举报用户不为空',
'type.required' => '请选择举报类型',
'img.required' => '请至少上传一张图',
'remark.required' => '请填写描述',
]);
if ($validated->fails()) {
$errors = $validated->errors()->all();
$error = count($errors) ? $errors[0] : null;
return $this->failure($error);
}
$user_id = auth()->user()->id;
$data['user_id'] = get_userid_by_accid($data['user_id']);
$data['by_user_id'] = $user_id;
$data['img'] = json_encode($data['img']);
ReportLog::create($data);
return $this->success('ok');
} catch (\Exception $e) {
return $this->jsonResponse(1, $e->getMessage());
}
}
}