123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- <?php
- /**
- * Member.php
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2015-2025 山西牛酷信息科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: http://www.niushop.com.cn
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
- * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
- * =========================================================
- * @author : niuteam
- * @date : 2015.1.17
- * @version : v1.0.0.0
- */
- namespace app\api\controller;
- use app\model\member\BalanceRecharge;
- use app\model\member\Member as MemberModel;
- use app\model\member\Register as RegisterModel;
- use app\model\message\Message;
- use app\model\system\Pay as PayModel;
- use think\facade\Cache;
- use app\model\member\MemberVip;
- use app\model\member\FranchiseeExamine;
- class Member extends BaseApi
- {
-
- /**
- * 基础信息
- */
- public function info()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $member_model = new MemberModel();
- $info = $member_model->getMemberInfo([ [ 'member_id', '=', $token['data']['member_id'] ] ], 'member_id,source_member,username,nickname,mobile,email,password,status,headimg,member_level,member_level_name,member_label,member_label_name,qq,qq_openid,wx_openid,wx_unionid,ali_openid,baidu_openid,toutiao_openid,douyin_openid,realname,sex,location,birthday,point,balance,balance_money,growth,member_type,sign_days_series,password,vip_enddate');
- if (!empty($info['data'])) {
- $info['data']['password'] = empty($info['data']['password']) ? 0 : 1;
- }
-
- return $this->response($info);
- }
-
- /**
- * 修改会员头像
- * @return string
- */
- public function modifyheadimg()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $headimg = isset($this->params['headimg']) ? $this->params['headimg'] : '';
- $member_model = new MemberModel();
- $res = $member_model->editMember([ 'headimg' => $headimg ], [ [ 'member_id', '=', $token['data']['member_id'] ] ]);
- return $this->response($res);
- }
-
- /**
- * 修改昵称
- * @return string
- */
- public function modifynickname()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $nickname = isset($this->params['nickname']) ? $this->params['nickname'] : '';
- $headimg = isset($this->params['headimg']) ? $this->params['headimg'] : '';
- $data=[
- 'nickname' => $nickname,
- 'headimg' => $headimg
- ];
- $member_model = new MemberModel();
- $res = $member_model->editMember($data, [ [ 'member_id', '=', $token['data']['member_id'] ] ]);
- return $this->response($res);
- }
-
- /**
- * 修改手机号
- * @return string
- */
- public function modifymobile()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- // 校验验证码
- $captcha = new Captcha();
- $check_res = $captcha->checkCaptcha(false);
- if ($check_res['code'] < 0) return $this->response($check_res);
-
- $register = new RegisterModel();
- $exist = $register->mobileExist($this->params['mobile']);
- if ($exist) {
- return $this->response($this->error("", "手机号已存在"));
- } else {
- $key = $this->params['key'];
- $verify_data = Cache::get($key);
- if ($verify_data["mobile"] == $this->params["mobile"] && $verify_data["code"] == $this->params["code"]) {
- $mobile = isset($this->params['mobile']) ? $this->params['mobile'] : '';
- $member_model = new MemberModel();
- $res = $member_model->editMember([ 'mobile' => $mobile ], [ [ 'member_id', '=', $token['data']['member_id'] ] ]);
- } else {
- $res = $this->error("", "验证码不正确");
- }
- return $this->response($res);
- }
-
- }
-
- /**
- * 修改邮箱
- * @return string
- */
- public function modifyemail()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- // 校验验证码
- $captcha = new Captcha();
- $check_res = $captcha->checkCaptcha(false);
- if ($check_res['code'] < 0) return $this->response($check_res);
- $register = new RegisterModel();
- $exist = $register->emailExist($this->params['email']);
- if ($exist) {
- return $this->response($this->error("", "邮箱已存在"));
- } else {
- $key = $this->params['key'];
- $verify_data = Cache::get($key);
- if ($verify_data["email"] == $this->params["email"] && $verify_data["code"] == $this->params["code"]) {
- $email = isset($this->params['email']) ? $this->params['email'] : '';
- $member_model = new MemberModel();
- $res = $member_model->editMember([ 'email' => $email ], [ [ 'member_id', '=', $token['data']['member_id'] ] ]);
- } else {
- $res = $this->error("", "验证码不正确");
- }
- return $this->response($res);
- }
- }
-
- /**
- * 修改密码
- * @return string
- */
- public function modifypassword()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $new_password = isset($this->params['new_password']) ? $this->params['new_password'] : '';
- $member_model = new MemberModel();
- // $info = $member_model->getMemberInfo([ [ 'member_id', '=', $token['data']['member_id'] ] ], 'password');
- // // 未设置密码时设置密码需验证身份
- // if (empty($info['data']['password'])) {
- // $key = $this->params['key'] ?? '';
- // $code = $this->params['code'] ?? '';
- // $verify_data = Cache::get($key);
- // if (empty($verify_data) || $verify_data["code"] != $code) {
- // return $this->response($this->error("", "手机验证码不正确"));
- // }
- // }
- $res = $member_model->modifyMemberPassword($token['data']['member_id'], $new_password);
-
- return $this->response($res);
- }
-
-
- /**
- * 绑定短信验证码
- */
- public function bindmobliecode()
- {
- // 校验验证码
- $captcha = new Captcha();
- $check_res = $captcha->checkCaptcha(false);
- if ($check_res['code'] < 0) return $this->response($check_res);
-
- $mobile = $this->params['mobile'];//注册手机号
- $register = new RegisterModel();
- $exist = $register->mobileExist($mobile);
- if ($exist) {
- return $this->response($this->error("", "当前手机号已存在"));
- } else {
- $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0
- $message_model = new Message();
- $res = $message_model->sendMessage([ "mobile" => $mobile, "code" => $code, "support_type" => [ "sms" ], "keywords" => "MEMBER_BIND" ]);
- if ($res["code"] >= 0) {
- //将验证码存入缓存
- $key = 'bind_mobile_code_' . md5(uniqid(null, true));
- Cache::tag("bind_mobile_code")->set($key, [ 'mobile' => $mobile, 'code' => $code ], 600);
- return $this->response($this->success([ "key" => $key ]));
- } else {
- return $this->response($res);
- }
- }
- }
-
- /**
- * 邮箱绑定验证码
- */
- public function bingemailcode()
- {
- // 校验验证码
- $captcha = new Captcha();
- $check_res = $captcha->checkCaptcha(false);
- if ($check_res['code'] < 0) return $this->response($check_res);
-
- $email = $this->params['email'];//注册邮箱号
- $register = new RegisterModel();
- $exist = $register->emailExist($email);
- if ($exist) {
- return $this->response($this->error("", "当前邮箱已存在"));
- } else {
- $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0
- $message_model = new Message();
- $res = $message_model->sendMessage([ "email" => $email, "code" => $code, "support_type" => [ "email" ], "keywords" => "MEMBER_BIND" ]);
- if ($res["code"] >= 0) {
- //将验证码存入缓存
- $key = 'bind_email_code_' . md5(uniqid(null, true));
- Cache::tag("bind_email_code")->set($key, [ 'email' => $email, 'code' => $code ], 600);
- return $this->response($this->success([ "key" => $key ]));
- } else {
- return $this->response($res);
- }
- }
- }
-
- /**
- * 设置密码时获取验证码
- */
- public function pwdmobliecode()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- // 校验验证码
- $captcha = new Captcha();
- $check_res = $captcha->checkCaptcha(false);
- if ($check_res['code'] < 0) return $this->response($check_res);
-
- $member_model = new MemberModel();
- $info = $member_model->getMemberInfo([ [ 'member_id', '=', $token['data']['member_id'] ] ], 'mobile');
- if (empty($info['data'])) return $this->response($this->error([], '未获取到会员信息!'));
- if (empty($info['data']['mobile'])) return $this->response($this->error([], '会员信息尚未绑定手机号!'));
-
- $mobile = $info['data']['mobile'];
-
- $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0
- $message_model = new Message();
- $res = $message_model->sendMessage([ "mobile" => $mobile, "code" => $code, "support_type" => [ "sms" ], "keywords" => "SET_PASSWORD" ]);
- if (isset($res["code"]) && $res["code"] >= 0) {
- //将验证码存入缓存
- $key = 'password_mobile_code_' . md5(uniqid(null, true));
- Cache::tag("password_mobile_code_")->set($key, [ 'mobile' => $mobile, 'code' => $code ], 600);
- return $this->response($this->success([ "key" => $key, 'code' => $code ]));
- } else {
- return $this->response($this->error('', '发送失败'));
- }
- }
-
- /**
- * 验证邮箱
- * @return string
- */
- public function checkemail()
- {
- $email = isset($this->params['email']) ? $this->params['email'] : '';
- if (empty($email)) {
- return $this->response($this->error('', 'REQUEST_EMAIL'));
- }
- $member_model = new MemberModel();
- $condition = [
- [ 'email', '=', $email ]
- ];
- $res = $member_model->getMemberCount($condition);
- if ($res['data'] > 0) {
- return $this->response($this->error('', '当前邮箱已存在'));
- }
- return $this->response($this->success());
- }
-
- /**
- * 验证手机号
- * @return string
- */
- public function checkmobile()
- {
- $mobile = isset($this->params['mobile']) ? $this->params['mobile'] : '';
- if (empty($mobile)) {
- return $this->response($this->error('', 'REQUEST_MOBILE'));
- }
- $member_model = new MemberModel();
- $condition = [
- [ 'mobile', '=', $mobile ]
- ];
- $res = $member_model->getMemberCount($condition);
- if ($res['data'] > 0) {
- return $this->response($this->error('', '当前手机号已存在'));
- }
- return $this->response($this->success());
- }
-
- /**
- * 修改支付密码
- * @return string
- */
- public function modifypaypassword()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $key = $this->params['key'] ?? '';
- $code = $this->params['code'] ?? '';
- $password = isset($this->params['password']) ? trim($this->params['password']) : '';
- if (empty($password)) return $this->response($this->error('', '支付密码不可为空'));
-
-
- $verify_data = Cache::get($key);
- if ($verify_data["code"] == $this->params["code"]) {
- $member_model = new MemberModel();
- $res = $member_model->modifyMemberPayPassword($token['data']['member_id'], $password);
- } else {
- $res = $this->error("", "验证码不正确");
- }
- return $this->response($res);
- }
-
- /**
- * 检测会员是否设置支付密码
- */
- public function issetpayaassword()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $member_model = new MemberModel();
- $res = $member_model->memberIsSetPayPassword($this->member_id);
- return $this->response($res);
- }
-
- /**
- * 检测支付密码是否正确
- */
- public function checkpaypassword()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $password = isset($this->params['pay_password']) ? trim($this->params['pay_password']) : '';
- if (empty($password)) return $this->response($this->error('', '支付密码不可为空'));
-
- $member_model = new MemberModel();
- $res = $member_model->checkPayPassword($this->member_id, $password);
- return $this->response($res);
- }
-
-
- /**
- * 修改支付密码发送手机验证码
- */
- public function paypwdcode()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
-
- $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);// 生成4位随机数,左侧补0
- $message_model = new Message();
- $res = $message_model->sendMessage([ "member_id" => $this->member_id, "code" => $code, "support_type" => [ "sms" ], "keywords" => "MEMBER_PAY_PASSWORD" ]);
- if ($res["code"] >= 0) {
- //将验证码存入缓存
- $key = 'pay_password_code_' . md5(uniqid(null, true));
- Cache::tag("pay_password_code")->set($key, [ 'member_id' => $this->member_id, 'code' => $code ], 600);
- return $this->response($this->success([ "key" => $key ]));
- } else {
- return $this->response($res);
- }
- }
-
- /**
- * 验证修改支付密码动态码
- */
- public function verifypaypwdcode()
- {
- $key = isset($this->params['key']) ? trim($this->params['key']) : '';
-
- $verify_data = Cache::get($key);
- if ($verify_data["code"] == $this->params["code"]) {
- $res = $this->success([]);
- } else {
- $res = $this->error("", "验证码不正确");
- }
- return $this->response($res);
- }
-
- /**
- * 通过token得到会员id
- */
- public function id()
- {
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
- return $this->response($this->success($this->member_id));
- }
-
- /**
- * 账户奖励规则说明
- * @return false|string
- */
- public function accountrule()
- {
- //积分
- $point = event('MemberAccountRule', [ 'account' => 'point' ]);
-
- //余额
- $balance = event('MemberAccountRule', [ 'account' => 'balance' ]);
-
- //成长值
- $growth = event('MemberAccountRule', [ 'account' => 'growth' ]);
-
- $res = [
- 'point' => $point,
- 'balance' => $balance,
- 'growth' => $growth
- ];
-
- return $this->response($this->success($res));
- }
-
- /**
- * 拉取会员头像
- */
- public function pullhaedimg(){
- $member_id = input('member_id', '');
- $member = new MemberModel();
- $member->pullHeadimg($member_id);
- }
- /**
- * @return false|string
- * 会员折扣
- */
- public function member_discount(){
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
- $member = new MemberModel();
- $vip_level = $member->getMemberInfo([['member_id','=',$token['data']['member_id']]],'member_level,member_type');
- if($vip_level['data']['member_type']==1) {
- $vip_discount = new MemberVip();
- $member_discount = $vip_discount->getMemberVipInfo([['id', '=', $vip_level['data']['member_level']]], 'discount');
- }
- if($vip_level['data']['member_type']==2){
- $franchisee_discount = new FranchiseeExamine();
- $member_discount = $franchisee_discount->getFranchiseeExamineInfo([['member_id', '=', $token['data']['member_id']]], 'discount');
- }
- return $this->response($this->success($member_discount));
- }
- /**
- * 用户充值
- */
- public function balance_recharge(){
- $token = $this->checkToken();
- if ($token['code'] < 0) return $this->response($token);
- $member = new MemberModel();
- $pay = new PayModel();
- $out_trade_no = $pay->createOutTradeNo();
- $member_username = $member->getMemberInfo([['member_id','=',$token['data']['member_id']]],'username');
- $array = input();
- $data = [
- 'recharge_no'=>date('Ymd').time().$token['data']['member_id'],
- 'member_id'=>$token['data']['member_id'],
- 'member_username'=>$member_username['data']['username'],
- 'money'=>$array['money'],
- 'type'=>$array['type'],
- 'account_number'=>$array['account_number'],
- 'create_time'=>time(),
- 'out_trade_no'=>$out_trade_no,
- 'status'=>1
- ];
- $balance_model = new BalanceRecharge();
- $balance_model->add($data);
- $pay->addPay(0, $out_trade_no, $data['type'], '余额充值', '余额充值', $data['money'], '', 'BalancePayNotify', '');
- return $this->response($this->success($out_trade_no));
- }
- }
|