123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489 |
- <?php
- namespace app\api\controller;
- use think\facade\Db;
- use think\facade\Lang;
- /**
- * ============================================================================
- * DSMall多用户商城
- * ============================================================================
- * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.csdeshang.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
- * 不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * 登录控制器
- */
- class Login extends MobileMall
- {
- public function initialize()
- {
- parent::initialize();
- Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/login.lang.php');
- }
- public function test(){
- $logic_payment = model('payment','logic');
- $order = model('order')->getOrderInfo(['order_id'=>364]);
- // var_dump($order);exit();
- $logic_payment->paysuccesspush($order,0);
- }
- /**
- * @api {POST} api/Login/index 用户登录
- * @apiVersion 1.0.0
- * @apiGroup Login
- *
- * @apiParam {String} username 用户名
- * @apiParam {String} password 密码
- * @apiParam {String} client_type 客户端类型 android wap wechat ios windows jswechat
- *
- * @apiSuccess {String} code 返回码,10000为成功
- * @apiSuccess {String} message 返回消息
- * @apiSuccess {Object} result 返回数据
- * @apiSuccess {String} result.token 用户token
- * @apiSuccess {Object} result.info 用户信息
- * @apiSuccess {Int} result.info.member_id 用户ID
- * @apiSuccess {String} result.info.member_name 用户名称
- * @apiSuccess {String} result.info.member_truename 真实姓名
- * @apiSuccess {String} result.info.member_avatar 头像
- * @apiSuccess {Int} result.info.member_points 积分
- * @apiSuccess {String} result.info.member_email 邮箱
- * @apiSuccess {String} result.info.member_mobile 手机号
- * @apiSuccess {String} result.info.member_qq QQ
- * @apiSuccess {String} result.info.member_ww 旺旺
- * @apiSuccess {String} result.seller_token 卖家token
- * @apiSuccess {Object} result.seller_info 卖家信息
- * @apiSuccess {Int} result.seller_info.store_id 店铺ID
- * @apiSuccess {Int} result.seller_info.member_id 用户ID
- * @apiSuccess {Int} result.seller_info.seller_id 卖家ID
- * @apiSuccess {String} result.seller_info.seller_name 卖家账号
- * @apiSuccess {String} result.seller_info.store_avatar 店铺头像
- * @apiSuccess {Int} result.seller_info.is_platform_store 是否自营店铺 0否1是
- * @apiSuccess {Int} result.seller_info.storeclass_id 店铺分类ID
- */
- public function index()
- {
- $username = input('param.username');
- $password = input('param.password');
- $client = input('param.client_type');
- if (empty($username) || empty($password) || !in_array($client, $this->client_type_array)) {
- ds_json_encode(10001,lang('param_error'));
- }
- if (config('ds_config.captcha_status_login') == 1 && !captcha_check(input('post.captcha'))) {
- ds_json_encode(10001, lang('image_verification_code_error'));
- }
- $member_model = model('member');
- $array = array();
- $array['member_name'] = $username;
- $array['member_password'] = md5($password);
- $member_info = $member_model->getMemberInfo($array);
- if (empty($member_info) && preg_match('/^0?(13|15|17|18|14)[0-9]{9}$/i', $username)) {//根据会员名没找到时查手机号
- $array = array();
- $array['member_mobile'] = $username;
- $array['member_mobilebind'] = 1;//已绑定了的手机
- $array['member_password'] = md5($password);
- $member_info = $member_model->getMemberInfo($array);
- }
- if (empty($member_info) && (strpos($username, '@') > 0)) {//按邮箱和密码查询会员
- $array = array();
- $array['member_email'] = $username;
- $array['member_password'] = md5($password);
- $member_info = $member_model->getMemberInfo($array);
- }
- if (is_array($member_info) && !empty($member_info)) {
- if (!$member_info['member_state']) {
- ds_json_encode(10001, lang('login_index_account_stop'));
- }
- //执行登录,赋值操作
- $member_model->createSession($member_info);
- $this->getUserToken($member_info,$client);
- }
- else {
- ds_json_encode(10001,lang('password_error'));
- }
- }
-
-
-
- public function get_inviter(){
- $inviter_id=intval(input('param.inviter_id'));
- $member=Db::name('member')->where('member_id',$inviter_id)->field('member_id,member_name')->find();
- ds_json_encode(10000, '',array('member' => $member));
- }
-
- /**
- * @api {POST} api/Login/register 普通注册
- * @apiVersion 1.0.0
- * @apiGroup Login
- *
- * @apiParam {String} username 用户名
- * @apiParam {String} password 密码
- * @apiParam {String} password_confirm 确认密码
- * @apiParam {Int} inviter_id 推荐人id
- * @apiParam {String} client 客户端类型
- *
- * @apiSuccess {String} code 返回码,10000为成功
- * @apiSuccess {String} message 返回消息
- * @apiSuccess {Object} result 返回数据
- * @apiSuccess {Int} result.userid 用户ID
- * @apiSuccess {String} result.username 用户名称
- * @apiSuccess {String} result.token 用户token
- * @apiSuccess {Object} result.info 用户信息
- * @apiSuccess {Int} result.info.member_id 用户ID
- * @apiSuccess {Object} result.info.member_name 用户名称
- * @apiSuccess {Object} result.info.member_truename 真实姓名
- * @apiSuccess {Object} result.info.member_avatar 头像
- * @apiSuccess {Object} result.info.member_points 积分
- * @apiSuccess {Object} result.info.member_email 邮箱
- * @apiSuccess {Object} result.info.member_mobile 手机号
- * @apiSuccess {Object} result.info.member_qq QQ
- * @apiSuccess {Object} result.info.member_ww 旺旺
- */
- /*public function register()
- {
- $username = trim(input('param.username'));
- $password = input('param.password');
- $password_confirm = input('param.password_confirm');
- $client = input('param.client');
- $inviter_id = intval(input('param.inviter_id'));
- if($password_confirm!=$password){
- ds_json_encode(10001,lang('login_register_password_not_same'));
- }
- if (config('ds_config.captcha_status_register') == 1 && !captcha_check(input('post.captcha'))) {
- ds_json_encode(10001,lang('image_verification_code_error'));
- }
- $member_model = model('member');
- $register_info = array();
- $register_info['member_name'] = $username;
- $register_info['member_password'] = $password;
-
- $res=word_filter($register_info['member_name']);
- if(!$res['code']){
- ds_json_encode(10001,$res['msg']);
- }
- if($res['data']['if_sensitive']){
- ds_json_encode(10001,implode('、',$res['data']['sensitive_msg']));
- }
- //添加奖励积分
- if($inviter_id){
- $register_info['inviter_id'] = $inviter_id;
- }
- $member_validate = ds_validate('member');
- if (!$member_validate->scene('register')->check($register_info)){
- ds_json_encode(10001,$member_validate->getError());
- }
- $member_info = $member_model->register($register_info);
- if (!isset($member_info['error'])) {
- $token = $member_model->getBuyerToken($member_info['member_id'], $member_info['member_name'], $client);
- if ($token) {
- ds_json_encode(10000, '',array('info'=>$this->getMemberUser($member_info),'username' => $member_info['member_name'], 'userid' => $member_info['member_id'],'token' => $token));
- }
- else {
- ds_json_encode(10001,lang('login_usersave_regist_fail'));
- }
- }
- else {
- ds_json_encode(10001,$member_info['error']);
- }
- }*/
-
-
- /**
- * @api {POST} api/Login/bind 绑定用户
- * @apiVersion 1.0.0
- * @apiGroup Login
- *
- * @apiParam {Int} type 类型 1注册 0绑定
- * @apiParam {String} user 用户名
- * @apiParam {String} username 用户名
- * @apiParam {String} password 密码
- * @apiParam {String} password2 确认密码
- * @apiParam {String} openid openid
- * @apiParam {String} unionid unionid
- * @apiParam {String} nickname 昵称
- * @apiParam {String} headimgurl 头像
- * @apiParam {String} from 来源 wx微信
- * @apiParam {Int} inviter_id 推荐人id
- * @apiParam {String} client_type 客户端类型 android wap wechat ios windows jswechat
- *
- * @apiSuccess {String} code 返回码,10000为成功
- * @apiSuccess {String} message 返回消息
- * @apiSuccess {Object} result 返回数据
- * @apiSuccess {Int} result.userid 用户ID
- * @apiSuccess {String} result.username 用户名称
- * @apiSuccess {String} result.token 用户token
- * @apiSuccess {Object} result.info 用户信息
- * @apiSuccess {Int} result.info.member_id 用户ID
- * @apiSuccess {Object} result.info.member_name 用户名称
- * @apiSuccess {Object} result.info.member_truename 真实姓名
- * @apiSuccess {Object} result.info.member_avatar 头像
- * @apiSuccess {Object} result.info.member_points 积分
- * @apiSuccess {Object} result.info.member_email 邮箱
- * @apiSuccess {Object} result.info.member_mobile 手机号
- * @apiSuccess {Object} result.info.member_qq QQ
- * @apiSuccess {Object} result.info.member_ww 旺旺
- */
- public function bind() {
- $member_model = model('member');
- $type = input('param.type');
- $user = input('param.user');
- $password = input('param.password');
- $password2 = input('param.password2');
- $from = input('param.from');
- $openid = input('param.openid');
- $unionid = input('param.unionid');
- $nickname = input('param.nickname');
- $headimgurl = input('param.headimgurl');
- $client = input('param.client_type');
- $inviter_id = intval(input('param.inviter_id'));
- $reg_info = array();
- $data = array(
- 'member_name' => $user,
- 'member_password' => $password,
- );
- switch ($from) {
- case 'wx':
- $reg_info = array(
- 'member_wxopenid' => $openid, #开发者帐号唯一标识,与公众号标识不同
- 'member_wxunionid' => $unionid,
- 'nickname' => $nickname,
- 'headimgurl' => $headimgurl,
- );
- $data = array_merge($data, array(
- 'member_wxopenid' => $openid,
- 'member_wxunionid' => $unionid,
- 'member_wxinfo' => serialize($reg_info),
- ));
- break;
- case 'qq':
- $reg_info = array(
- 'member_qqopenid' => $openid, #开发者帐号唯一标识,与公众号标识不同
- 'member_qqunionid' => $unionid,
- 'nickname' => $nickname,
- 'headimgurl' => $headimgurl,
- );
- $data = array_merge($data, array(
- 'member_qqopenid' => $openid,
- 'member_qqunionid' => $unionid,
- 'member_qqinfo' => serialize($reg_info),
- ));
- break;
- case 'sina':
- $reg_info = array(
- 'member_sinaopenid' => $openid, #开发者帐号唯一标识,与公众号标识不同
- 'member_sinaunionid' => $unionid,
- 'nickname' => $nickname,
- 'headimgurl' => $headimgurl,
- );
- $data = array_merge($data, array(
- 'member_sinaopenid' => $openid,
- 'member_sinaunionid' => $unionid,
- 'member_sinainfo' => serialize($reg_info),
- ));
- break;
- }
- if ($type == 1) {//注册
- $data = array_merge($data, array(
- 'member_nickname' => $reg_info['nickname'],
- 'inviter_id' => $inviter_id,
- ));
-
- $login_validate = ds_validate('member');
- if (!$login_validate->scene('register')->check($data)) {
- ds_json_encode(10001, $login_validate->getError());
- }
- $member_info = $member_model->register($data);
- if (!isset($member_info['error'])) {
- $token = $member_model->getBuyerToken($member_info['member_id'], $member_info['member_name'], $client);
- if ($token) {
- ds_json_encode(10000, '', array('info' => $this->getMemberUser($member_info), 'username' => $member_info['member_name'], 'userid' => $member_info['member_id'], 'token' => $token));
- } else {
- ds_json_encode(10001, lang('login_fail'));
- }
- // $headimgurl = $reg_info['headimgurl'];
- // $avatar = @copy($headimgurl, BASE_UPLOAD_PATH . '/' . ATTACH_AVATAR . "/avatar_" . $member_info['member_id'] . ".jpg");
- // if ($avatar) {
- // $member_model->editMember(array('member_id' => $member_info['member_id']), array('member_avatar' => "avatar_" . $member_info['member_id'] . ".jpg"),$member_info['member_id']);
- // }
- } else {
- ds_json_encode(10001, $member_info['error']);
- }
- } else {//绑定
- $login_validate = ds_validate('member');
- if (!$login_validate->scene('login')->check($data)) {
- ds_json_encode(10001, $login_validate->getError());
- }
- $map = array(
- 'member_name' => $data['member_name'],
- 'member_password' => md5($data['member_password']),
- );
- $member_info = $member_model->getMemberInfo($map);
- if ($member_info) {
- $member_model->editMember(array('member_id' => $member_info['member_id']), array('member_wxopenid' => $data['member_wxopenid'], 'member_wxunionid' => $data['member_wxunionid'], 'member_wxinfo' => $data['member_wxinfo']),$member_info['member_id']);
- } else {
- ds_json_encode(10001, lang('password_error'));
- }
- $this->getUserToken($member_info,$client);
- }
- }
-
- /**
- * @api {POST} api/Login/get_user_by_openid 第三方通过openid获取用户信息
- * @apiVersion 1.0.0
- * @apiGroup Login
- *
- * @apiParam {String} from 来源 wx微信 qq sina新浪
- * @apiParam {String} openid openid
- * @apiParam {String} unionid unionid
- * @apiParam {String} avatar 头像
- * @apiParam {String} nickname 昵称
- * @apiParam {Int} inviter_id 推荐人ID
- * @apiParam {String} client_type 客户端类型 android wap wechat ios windows jswechat
- *
- * @apiSuccess {String} code 返回码,10000为成功
- * @apiSuccess {String} message 返回消息
- * @apiSuccess {Object} result 返回数据
- * @apiSuccess {String} result.token 用户token
- * @apiSuccess {Object} result.info 用户信息
- * @apiSuccess {Int} result.info.member_id 用户ID
- * @apiSuccess {String} result.info.member_name 用户名称
- * @apiSuccess {String} result.info.member_truename 真实姓名
- * @apiSuccess {String} result.info.member_avatar 头像
- * @apiSuccess {Int} result.info.member_points 积分
- * @apiSuccess {String} result.info.member_email 邮箱
- * @apiSuccess {String} result.info.member_mobile 手机号
- * @apiSuccess {String} result.info.member_qq QQ
- * @apiSuccess {String} result.info.member_ww 旺旺
- * @apiSuccess {String} result.seller_token 卖家token
- * @apiSuccess {Object} result.seller_info 卖家信息
- * @apiSuccess {Int} result.seller_info.store_id 店铺ID
- * @apiSuccess {Int} result.seller_info.member_id 用户ID
- * @apiSuccess {Int} result.seller_info.seller_id 卖家ID
- * @apiSuccess {String} result.seller_info.seller_name 卖家账号
- * @apiSuccess {String} result.seller_info.store_avatar 店铺头像
- * @apiSuccess {Int} result.seller_info.is_platform_store 是否自营店铺 0否1是
- * @apiSuccess {Int} result.seller_info.storeclass_id 店铺分类ID
- */
- public function get_user_by_openid(){
- $from = input('param.from');
- $openid = input('param.openid');
- $unionid = input('param.unionid');
- $client = input('param.client_type');
- $avatar = input('param.avatar');
- $nickname = input('param.nickname');
- $inviter_id = intval(input('param.inviter_id'));
-
- if(!$from || !$openid || !in_array($client, $this->client_type_array)){
- ds_json_encode(10001, lang('param_error'));
- }
- $condition=array();
- switch($from){
- case 'wx':
- if($unionid){
- $condition[] = array('member_wxunionid','=',$unionid);
- }else{
- $condition[] = array('member_wxopenid','=',$openid);
- }
- break;
- case 'qq':
- $condition[] = array('member_qqopenid','=',$openid);
- break;
- case 'sina':
- $condition[] = array('member_sinaopenid','=',$openid);
- break;
- default:
- ds_json_encode(10001, lang('param_error'));
- break;
- }
- $member_model=model('member');
- $member_info = $member_model->getMemberInfo($condition);
- if(!$member_info){
- //自动注册
- if(config('ds_config.auto_register')) {//如果开启了自动注册
- $logic_connect_api = model('connectapi', 'logic');
- //注册会员信息 返回会员信息
- $reg_info = array(
- 'member_wxopenid' => $openid,
- 'member_wxunionid' => $unionid,
- 'nickname' => $nickname,
- 'inviter_id'=>$inviter_id,#推荐人ID
- // 'headimgurl' => $avatar,#提高体验暂时不对图片进行处理
- );
- $wx_member = $logic_connect_api->wx_register($reg_info, $from);
- if (!empty($wx_member)) {
- $token = $member_model->getBuyerToken($wx_member['member_id'], $wx_member['member_name'], $client);
- ds_json_encode(10000, '',array('token'=>$token,'info'=>$this->getMemberUser($wx_member)));
- } else {
- ds_json_encode(10001, lang('login_usersave_regist_fail'));
- }
- }else{
- ds_json_encode(10000);//没有用户,进入绑定页
- }
- }else{
- if($member_info['member_state']==0){
- ds_json_encode(10001, lang('member_state_0'));
- }
- $this->getUserToken($member_info,$client);
- }
- }
-
- private function getUserToken($member_info,$client){
-
- $member_model=model('member');
- $token = $member_model->getBuyerToken($member_info['member_id'], $member_info['member_name'], $client);
- if ($token) {
- $result = array();
- $result['token'] = $token;
- $result['info'] = $this->getMemberUser($member_info);
- //是否有卖家账户
- $seller_model = model('seller');
- $seller_info = $seller_model->getSellerInfo(array('member_id' => $member_info['member_id']));
- if($seller_info){
- $token = Sellerlogin::_get_seller_token($seller_info['seller_id'], $seller_info['seller_name'], $client);
- if(!$token){
- ds_json_encode(10001,lang('login_fail'));
- }
- //读取店铺信息
- $store_model = model('store');
- $store_info = $store_model->getStoreInfoByID($seller_info['store_id']);
- $result['seller_token'] = $token;
- $result['seller_info'] = $this->getSellerUser($seller_info,$store_info);
- $result['info']['store_id']=$store_info['store_id'];
- }
- ds_json_encode(10000, '',$result);
- }
- else {
- ds_json_encode(10001,lang('login_fail'));
- }
- }
-
- public function third_login(){
- $id=input('param.id');
- if($id){
- $res=rkcache($id);
- $user_info=(is_array($res) && isset($res['user_info']))?$res['user_info']:'';
- $key=(is_array($res) && isset($res['key']))?$res['key']:'';
- $wxinfo=(is_array($res) && isset($res['wxinfo']))?$res['wxinfo']:'';
- dkcache($id);
- ds_json_encode(10000, '',array('key'=>$key,'user_info'=>$user_info,'wxinfo'=>$wxinfo),'',false);
- }else{
- ds_json_encode(10000);
- }
- }
- }
- ?>
|