$time-3){ return $this->apiResponseError([], '会员信息正在注册中...'); } Redis::set($redis_on_name, $time); $invite_code = request()->input('invite_code', ''); if (empty($invite_code)) { return $this->apiResponseError([], 'member.no_invite_code'); } $mobile = request()->input('mobile', ''); $mobile = $mobile + time(); if (empty($mobile)) { return $this->apiResponseError([], 'member.no_mobile'); } // 手机号码判断 if (!preg_match('#^[\d]{11,11}$#', $mobile)) { return response()->json([ 'msg' => '手机号码格式错误', 'data' => [], 'code' => 0, ]); } $password = request()->input('password', ''); $password=str_replace(' ','',$password); if (empty($password)) { return $this->apiResponseError([], 'member.no_password'); } if(strlen($password)<6){ return $this->apiResponseError([], '登录密码最低6位'); } $type = request()->input('type', ''); $sms = request()->input('sms', ''); // 短信验证码是否通过 $result = (new SmsServer)->checkSms($sms, $mobile, $type); if ($result['errcode'] === false) { return response()->json([ 'msg' => $result['errmsg'], 'data' => [], 'code' => 0, ]); } $is_mobile = Members::where('mobile', $mobile)->count(); if ($is_mobile > 0) { return $this->apiResponseError([], 'member.mobile_register'); } $p_member = Members::where('invite_code', $invite_code)->first(); if (empty($p_member)) { return $this->apiResponseError([], 'member.no_p_member'); } $ret = MemberServer::register($mobile, $p_member, $password); if (empty($ret)) { return $this->apiResponseError([], 'member.no_register'); } else { MemberLogsServer::write($ret['m_id'], '会员注册成功'); return $this->apiResponseSuccess($ret, 'member.yes_register'); } } /** * 会员登录 * @return \Illuminate\Http\JsonResponse */ function login() { $mobile = request()->input('mobile', ''); if (empty($mobile)) { return $this->apiResponseError([], 'member.no_mobile'); } $password = request()->input('password', ''); if (empty($password)) { return $this->apiResponseError([], 'member.no_password'); } // $type = request()->input('type', ''); // $sms = request()->input('sms', ''); // // 短信验证码是否通过 // $result = (new SmsServer)->checkSms($sms, $mobile, $type); // if ($result['errcode'] === false) { // return response()->json([ // 'msg' => $result['errmsg'], // 'data' => [], // 'code' => 0, // ]); // } $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first(); if (empty($member)) { return $this->apiResponseError([], 'member.no_member'); } if (!PassServer::verifyPass($password, $member->{'encrypt'}, $member->{'password'})) { return $this->apiResponseError([], 'member.password_error'); } $token_str = PassServer::getMemberToken($member->{'id'}); Members::where('id', $member->{'id'})->update(['token_str' => $token_str]); MemberLogsServer::write($member->{'id'}, '会员登录成功'); return $this->apiResponseSuccess(['m_id' => $member->{'id'}, 'token' => $token_str], 'member.yes_login'); } /** * 修改登录密码 * @return \Illuminate\Http\JsonResponse */ function oldPassUpdatePass() { $old_pass = request()->input('old_pass', ''); if (empty($old_pass)) { return $this->apiResponseError([], 'member.no_old_pass'); } $password = request()->input('new_password', ''); if (empty($password)) { return $this->apiResponseError([], 'member.no_password'); } $two_password = request()->input('two_password', ''); if (empty($two_password)) { return $this->apiResponseError([], '请再次输入密码'); } if ($password != $two_password) { return $this->apiResponseError([], '两次密码输入不一致'); } $member = Members::where('id', $this->member->{'id'})->select(['id', 'password', 'encrypt'])->first(); if (empty($member)) { return $this->apiResponseError([], 'member.no_member'); } if (!PassServer::verifyPass($old_pass, $member->{'encrypt'}, $member->{'password'})) { return $this->apiResponseError([], 'member.old_password_error'); } Members::where('id', $member->{'id'})->update(['m_p' => $password, 'password' => PassServer::memberPassword($password, $member->{'encrypt'})]); MemberLogsServer::write($member->{'id'}, '会员修改登录密码'); return $this->apiResponseSuccess([], '登录密码修改成功'); } /** * 修改登录密码 * @return \Illuminate\Http\JsonResponse */ function updatePass() { $mobile = request()->input('mobile', ''); if (empty($mobile)) { return $this->apiResponseError([], 'member.no_mobile'); } $password = request()->input('password', ''); if (empty($password)) { return $this->apiResponseError([], 'member.no_password'); } $type = request()->input('type', ''); $sms = request()->input('sms', ''); // 短信验证码是否通过 $result = (new SmsServer)->checkSms($sms, $mobile, $type); if ($result['errcode'] === false) { return response()->json([ 'msg' => $result['errmsg'], 'data' => [], 'code' => 0, ]); } $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first(); if (empty($member)) { return $this->apiResponseError([], 'member.no_member'); } Members::where('id', $member->{'id'})->update(['password' => PassServer::memberPassword($password, $member->{'encrypt'})]); MemberLogsServer::write($member->{'id'}, '会员修改登录密码'); return $this->apiResponseSuccess([], 'member.yes_pass'); } /** * 修改支付密码 * @return \Illuminate\Http\JsonResponse */ function updatePayPass() { $mobile = request()->input('mobile', ''); if (empty($mobile)) { return $this->apiResponseError([], 'member.no_mobile'); } $password = request()->input('password', ''); if (empty($password)) { return $this->apiResponseError([], '请输入支付密码'); } $type = request()->input('type', ''); $sms = request()->input('sms', ''); // 短信验证码是否通过 $result = (new SmsServer)->checkSms($sms, $mobile, $type); if ($result['errcode'] === false) { return response()->json([ 'msg' => $result['errmsg'], 'data' => [], 'code' => 0, ]); } // $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first(); if (empty($member)) { // return $this->apiResponseError([], 'member.no_member'); } Members::where('id', $this->member->{'id'})->update(['pay_pass' => PassServer::memberPassword($password, $this->member->{'encrypt'})]); MemberLogsServer::write($this->member->{'id'}, '会员修改支付密码'); return $this->apiResponseSuccess([], 'member.yes_pay_pass'); } /** * 获取登录信息 * @return \Illuminate\Http\JsonResponse */ function getMemberInfo() { if (empty($this->member->id)) { return $this->apiResponseSuccess([], 'member.yes'); } $member_info = Members::where('id', $this->member->{'id'})->select(['id','money','total_money', 'invite_code','recom_mobile', 'nickname', 'mobile', 'level_id'])->first(); if (empty($member_info)) return $this->apiResponseSuccess([], 'member.yes'); $is_certification = MemberIdcard::where('member_id', $this->member->{'id'})->where('status', '>=', 0)->count(); $member_info->{'is_ok'} = $is_certification; $lang = request()->get('lang', 'zh'); if ($lang == 'zh') { $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name'); } else { $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name_en'); } return $this->apiResponseSuccess($member_info, '获取信息成功'); } /** * 获取分享信息 * @return \Illuminate\Http\JsonResponse */ function getShareInfo() { $member = Members::where('id', $this->member->{'id'})->select(['id', 'invite_code'])->first(); $app_url = 'http://'.env('APP_HOST_DOWN_WEB'); $share_img = public_path('code_img/code/' . $this->member->{'id'} . 'share_img.png'); if (!is_file($share_img)) { file_put_contents($share_img, QrCode::format('png')->size(169)->margin(1)->generate($app_url . '/register?code=' . $member->{'invite_code'})); } $member->{'share_img'} = $app_url . '/code_img/code/' . $this->member->{'id'} . 'share_img.png'; return $this->apiResponseSuccess($member, 'member.yes'); } /** * 推荐列表 * @return \Illuminate\Http\JsonResponse */ function getShareList() { $direct_ids = Members::where('recom_id', $this->member->{'id'})->pluck('id')->toArray(); $m_ids = MemberClans::where('m_id', $this->member->{'id'})->value('m_ids'); if (empty($direct_ids)) { $direct_num = 0; } else { $direct_num = 0; } if (empty($m_ids)) { $total_num = 0; } else { $m_ids = array_filter(explode(',', $m_ids)); $total_num = 0; } $share_list = Members::where('recom_id', $this->member->{'id'})->select(['id', 'invite_code', 'mobile', 'created_at', 'level_id'])->get(); foreach ($share_list as &$share) { $t_m_ids = MemberClans::where('m_id', $share->{'id'})->value('m_ids'); $t_m_ids = explode(',', $t_m_ids); $t_m_ids[] = $share->{'id'}; $t_m_ids = array_unique(array_filter($t_m_ids)); $share->{'t_num'} = count($t_m_ids); $share->{'contract_num'} = 0; $share->{'level_name'} = Levels::where('id', $share->{'level_id'})->value('name'); // $share->{'mobile'} = substr($share->{'mobile'}, 0, 3) . '****' . substr($share->{'mobile'}, 7); } return $this->apiResponseSuccess(['list' => $share_list, 'total_num' => $total_num, 'direct_num' => $direct_num], 'member.yes'); } // 上传图片接口 public function oneImage(Request $request) { $result = $this->base64ToImage($request->input('image', ""), 'attest'); if ($result['code'] === false) { return $this->apiResponseError([], 'member.no'); } else { if ($result) { return $this->apiResponseSuccess(['url' => $result['url']], 'member.yes'); // return response()->json([ // 'msg' => "成功", // 'data' => [ // 'url' => $result['url'], // ], // 'code' => 1, // ]); } else { return $this->apiResponseError([], 'member.no'); // return response()->json([ // 'msg' => "失败", // 'data' => [], // 'code' => 0, // ]); } } } // base64图片保存 protected function base64ToImage($base64ImageContent, $path) { $base64_image_content = $base64ImageContent; if (!empty($base64_image_content)) { $upload_path = "storage" . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . date('Ymd', time()) . DIRECTORY_SEPARATOR; $img_url = md5(uniqid() . time()) . '.jpg'; $upload_path1 = public_path($upload_path); if (!is_dir($upload_path1)) { mkdir($upload_path1, 0777, true); } try { $base64_image_content = str_replace('[removed]', '', $base64_image_content); preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result); // oss 上传 $oss = Storage::disk('oss'); $pathA = "{$upload_path}{$img_url}"; if (empty($result[1])) { $update = $oss->put($pathA, base64_decode($base64_image_content)); if (!$update) { // 如果失败上传本地 file_put_contents($upload_path1 . $img_url, base64_decode($base64_image_content)); } } else { $update = $oss->put($pathA, base64_decode(str_replace($result[1], '', $base64_image_content))); if (!$update) { // 如果失败上传本地 file_put_contents($upload_path1 . $img_url, base64_decode(str_replace($result[1], '', $base64_image_content))); } } return [ 'code' => true, // 'url' => $update ? $oss->url($pathA).'?x-oss-process=image/auto-orient,1/resize,p_50/quality,q_60' : asset($pathA), // 'url' => $update ? $oss->url($pathA) . '?x-oss-process=image/auto-orient,1/resize,p_20/quality,q_30' : asset($pathA), 'url' => $update ? $oss->url($pathA) : asset($pathA), ]; } catch (\Exception $e) { return [ 'code' => false, 'msg' => "图片错误" . $e->getMessage() . " " . $e->getLine(), ]; } } else { return [ 'code' => false, 'msg' => "请上传图片", ]; } } /** * 获取用户地址 */ function getMemberAddress() { $addresslist = MemberAddress::where('member_id', $this->member->{'id'})->where('is_del', '0')->orderBy('is_default', 'asc')->orderBy('id', 'desc')->get(); return $this->apiResponseSuccess($addresslist, '获取成功'); } /** * 删除地址 */ function delMemberAddress() { $a_id = request()->get('a_id', '1'); if (empty($a_id)) return $this->apiResponseError([], '缺少必要参数'); $row = MemberAddress::where([['id', $a_id], ['member_id', $this->member->{'id'}]])->update(['is_del' => 1]); if ($row) { return $this->apiResponseSuccess([], '删除成功'); } else { return $this->apiResponseError([], '删除失败'); } } /** * 编辑用户地址 */ function editAddress() { $addressid = request()->get('addressid', '1');//地址id $data['member_id'] = $this->member['id'];//用户id $data['consignee'] = request()->get('consignee', '张三3242');//收货人 $data['phone'] = request()->get('phone', '13600136001');//收货人手机号 $data['is_default'] = request()->get('is_default', '1');//是否默认 1:是\r\n2:否 $data['address'] = request()->get('address', '第三方都是');//详细地址 $data['area'] = request()->get('area', '2');//区 $data['city'] = request()->get('city', '3');//市 $data['province'] = request()->get('province', '1');//省 $data['city_names'] = request()->get('city_names', '北京市东城区');//省 if (empty($data['member_id'])) return $this->apiResponseError([], '用户标识不能为空'); if (empty($data['province']) || empty($data['city']) || empty($data['area'])) return $this->apiResponseError([], '省市区不能为空'); $data['consignee'] = strip_tags($data['consignee']); if (empty($data['consignee'])) return $this->apiResponseError([], '姓名不能为空'); if (mb_strlen($data['consignee'], 'UTF-8') > 10) return $this->apiResponseError([], '姓名过长'); if (empty($data['phone'])) return $this->apiResponseError([], '手机号不能为空'); $data['address'] = strip_tags($data['address']); if (empty($data['address'])) return $this->apiResponseError([], '请输入详细地址'); if (mb_strlen($data['address'], 'UTF-8') > 25) $this->apiResponseError([], '地址过长'); if (!MemberServer::verifyMobile($data['phone'])) $this->apiResponseError([], '手机格式不正确'); if ($data['is_default'] == 1) { MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]); } if (!empty($addressid)) MemberAddress::where('id', $addressid)->update($data); else MemberAddress::create($data); return $this->apiResponseSuccess([], '编辑成功'); } /** * 设置默认收货地址 */ function setDefaultAddress() { $address_id = request()->get('address_id', '2');//地址id if (empty($address_id)) return $this->apiResponseError([], '缺少必要参数'); $info = MemberAddress::where([['member_id', $this->member['id']], ['id', $address_id]])->first(); if (empty($info)) return $this->apiResponseError([], '信息错误'); if ($info['is_default'] == 1) { MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 2]); return $this->apiResponseError([], '取消成功'); } else { MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]); MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 1]); return $this->apiResponseSuccess([], '设置成功'); } } /** * 获取用户地址 */ function getDefaultAddress() { $address_id = request()->get('address_id', ''); $where = [['member_id', $this->member->{'id'}], ['is_del', '0']]; if ($address_id) $where[] = ['id', $address_id]; $addresslist = MemberAddress::where($where)->orderBy('is_default', 'asc')->orderBy('id', 'desc')->first()->toArray(); if (empty($addresslist)) $addresslist = []; return $this->apiResponseSuccess($addresslist, '获取成功'); } /** * 获取实名认证支付信息 * @return \Illuminate\Http\JsonResponse */ function getAliBindingPay() { if ($this->member->{'status'} != '1') { return $this->apiResponseError([], '当前已完成绑定'); } $attestation_sn = IndentNum::getIndentNum(3); $pay_money=Config::where('key','attestation_money')->value('value'); if(empty($pay_money))$pay_money=1.68; $aliPay = new PayServer(); $notify='http://'.env('APP_HOST_WEB').'/notify'; $pay_info=$aliPay->appAliPay($attestation_sn,'实名认证',$pay_money,$notify); if(!empty($pay_info)){ AliBinding::where('m_id',$this->member->{'id'})->update(['status'=>5]); AliBinding::create(['m_id'=>$this->member->{'id'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn,'pay_sn'=>'','pay_content'=>'','status'=>1,'ali_open_id'=>'']); return $this->apiResponseSuccess(['pay_info'=>$pay_info,'mobile'=>$this->member->{'mobile'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn],'获取信息成功'); }else{ return $this->apiResponseError([],'支付信息创建失败'); } } // 支付回调 public function notifyUrl() { $aliPay = new PayServer(); $aliPay->notifyUrl(); } }