Sellerlogin.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace app\api\controller;
  3. use think\facade\Lang;
  4. /**
  5. * ============================================================================
  6. *
  7. * ============================================================================
  8. * 版权所有 2014-2028 浙江惠利玛产业互联网有限公司,并保留所有权利。
  9. * 网站地址: https://www.valimart.net/
  10. * ----------------------------------------------------------------------------
  11. *
  12. * ============================================================================
  13. * 卖家登录控制器
  14. */
  15. class Sellerlogin extends MobileMall {
  16. public function initialize() {
  17. parent::initialize(); // TODO: Change the autogenerated stub
  18. Lang::load(base_path() . 'home/lang/'.config('lang.default_lang').'/sellerlogin.lang.php');
  19. }
  20. /**
  21. * @api {POST} api/Sellerlogin/index 店铺登录
  22. * @apiVersion 1.0.0
  23. * @apiGroup Sellerlogin
  24. *
  25. * @apiParam {String} client_type 客户端类型 android wap wechat ios windows jswechat
  26. * @apiParam {String} seller_name 卖家账号
  27. * @apiParam {String} password 登录密码
  28. *
  29. * @apiSuccess {String} code 返回码,10000为成功
  30. * @apiSuccess {String} message 返回消息
  31. * @apiSuccess {Object} result 返回数据
  32. * @apiSuccess {String} result.member_token 用户token
  33. * @apiSuccess {Object} result.member_info 用户信息
  34. * @apiSuccess {Int} result.member_info.member_id 用户ID
  35. * @apiSuccess {String} result.member_info.member_name 用户名称
  36. * @apiSuccess {String} result.member_info.member_truename 真实姓名
  37. * @apiSuccess {String} result.member_info.member_avatar 头像
  38. * @apiSuccess {Int} result.member_info.member_points 积分
  39. * @apiSuccess {String} result.member_info.member_email 邮箱
  40. * @apiSuccess {String} result.member_info.member_mobile 手机号
  41. * @apiSuccess {String} result.member_info.member_qq QQ
  42. * @apiSuccess {String} result.member_info.member_ww 旺旺
  43. * @apiSuccess {String} result.token 卖家token
  44. * @apiSuccess {Object} result.info 卖家信息
  45. * @apiSuccess {Int} result.info.store_id 店铺ID
  46. * @apiSuccess {Int} result.info.member_id 用户ID
  47. * @apiSuccess {Int} result.info.seller_id 卖家ID
  48. * @apiSuccess {String} result.info.seller_name 卖家账号
  49. * @apiSuccess {String} result.info.store_avatar 店铺头像
  50. * @apiSuccess {Int} result.info.is_platform_store 是否自营店铺 0否1是
  51. * @apiSuccess {Int} result.info.storeclass_id 店铺分类ID
  52. */
  53. public function index() {
  54. $prefix = 'login-times';
  55. $ip=request()->ip();
  56. $data = rkcache($prefix.$ip);
  57. if(!empty($data) && $data['times']>5){
  58. ds_json_encode(10001, lang('frequent_operation'));
  59. }
  60. $client=input('post.client_type');
  61. if (empty(input('post.seller_name')) || empty(input('post.password')) || !in_array($client, $this->client_type_array)) {
  62. ds_json_encode(10001, lang('param_error'));
  63. }
  64. $seller_model = model('seller');
  65. $seller_info = $seller_model->getSellerInfo(array('seller_name' => input('post.seller_name')));
  66. if (!$seller_info) {
  67. ds_json_encode(10001, lang('seller_account_not_exisit'));
  68. }
  69. //验证身份
  70. $member_model = model('member');
  71. $member_info = $member_model->getMemberInfo(array(
  72. 'member_id' => $seller_info['member_id'],
  73. 'member_password' => md5(input('post.password'))
  74. ));
  75. if (!$member_info) {
  76. if(empty($data)){
  77. $data=array('times'=>0);
  78. }
  79. $data['times']++;
  80. wkcache($prefix.$ip, $data, 3600*24);
  81. ds_json_encode(10001, lang('password_error'));
  82. }
  83. //读取店铺信息
  84. $store_model = model('store');
  85. $store_info = $store_model->getStoreInfoByID($seller_info['store_id']);
  86. //更新卖家登陆时间
  87. $seller_model->editSeller(array('last_logintime' => TIMESTAMP), array('seller_id' => $seller_info['seller_id']));
  88. //生成登录令牌
  89. $token = self::_get_seller_token($seller_info['seller_id'], $seller_info['seller_name'], $client);
  90. if ($token) {
  91. $result = array();
  92. $result['token'] = $token;
  93. $result['info'] = $this->getSellerUser($seller_info,$store_info);
  94. $result['member_info'] = $this->getMemberUser($member_info);
  95. $token = $member_model->getBuyerToken($member_info['member_id'], $member_info['member_name'], $client);
  96. if(!$token){
  97. ds_json_encode(10001, lang('ds_common_op_fail'));
  98. }
  99. $result['member_token'] = $token;
  100. ds_json_encode(10000, '', $result);
  101. } else {
  102. ds_json_encode(10001, lang('ds_common_op_fail'));
  103. }
  104. }
  105. /**
  106. * 登录生成token
  107. */
  108. public static function _get_seller_token($seller_id, $seller_name, $client) {
  109. $mbsellertoken_model = model('mbsellertoken');
  110. //重新登录后以前的令牌失效
  111. $condition = array();
  112. $condition[] = array('seller_id','=',$seller_id);
  113. $condition[] = array('seller_clienttype','=',$client);
  114. $mbsellertoken_model->delMbsellertoken($condition);
  115. //生成新的token
  116. $mb_seller_token_info = array();
  117. $token = md5($seller_name . strval(TIMESTAMP) . strval(rand(0, 999999)));
  118. $mb_seller_token_info['seller_id'] = $seller_id;
  119. $mb_seller_token_info['seller_name'] = $seller_name;
  120. $mb_seller_token_info['seller_token'] = $token;
  121. $mb_seller_token_info['seller_logintime'] = TIMESTAMP;
  122. $mb_seller_token_info['seller_clienttype'] = $client;
  123. $result = $mbsellertoken_model->addMbsellertoken($mb_seller_token_info);
  124. if ($result) {
  125. return $token;
  126. } else {
  127. return null;
  128. }
  129. }
  130. }