You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

413 lines
13 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Api\CommonController;
  4. use Illuminate\Http\Request;
  5. use App\Common\ReturnData;
  6. use App\Common\Token;
  7. use App\Http\Model\User;
  8. class UserController extends CommonController
  9. {
  10. public function __construct()
  11. {
  12. parent::__construct();
  13. }
  14. //用户信息
  15. public function userInfo(Request $request)
  16. {
  17. if ($user = User::getOne(Token::$uid))
  18. {
  19. return ReturnData::create(ReturnData::SUCCESS, $user);
  20. }
  21. else
  22. {
  23. return ReturnData::create(ReturnData::RECORD_NOT_EXIST);
  24. }
  25. }
  26. //修改用户信息
  27. public function userInfoUpdate(Request $request)
  28. {
  29. $data = '';
  30. if($request->input('user_name', null)!==null){$data['user_name'] = $request->input('user_name');}
  31. if($request->input('email', null)!==null){$data['email'] = $request->input('email');}
  32. if($request->input('sex', null)!==null){$data['sex'] = $request->input('sex');}
  33. if($request->input('birthday', null)!==null){$data['birthday'] = $request->input('birthday');}
  34. if($request->input('money', null)!==null){$data['money'] = $request->input('money');}
  35. if($request->input('frozen_money', null)!==null){$data['frozen_money'] = $request->input('frozen_money');}
  36. if($request->input('point', null)!==null){$data['point'] = $request->input('point');}
  37. if($request->input('address_id', null)!==null){$data['address_id'] = $request->input('address_id');}
  38. if($request->input('user_rank', null)!==null){$data['user_rank'] = $request->input('user_rank');}
  39. if($request->input('parent_id', null)!==null){$data['parent_id'] = $request->input('parent_id');}
  40. if($request->input('nickname', null)!==null){$data['nickname'] = $request->input('nickname');}
  41. if($request->input('mobile', null)!==null){$data['mobile'] = $request->input('mobile');}
  42. if($request->input('status', null)!==null){$data['status'] = $request->input('status');}
  43. if($request->input('group_id', null)!==null){$data['group_id'] = $request->input('group_id');}
  44. if($request->input('password', null)!==null){$data['password'] = $request->input('password');}
  45. if ($data != '')
  46. {
  47. User::modify(['id'=>Token::$uid],$data);
  48. }
  49. return ReturnData::create(ReturnData::SUCCESS);
  50. }
  51. //用户列表
  52. public function userList(Request $request)
  53. {
  54. //参数
  55. $data['limit'] = $request->input('limit', 10);
  56. $data['offset'] = $request->input('offset', 0);
  57. $res = User::getList($data);
  58. if(!$res)
  59. {
  60. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  61. }
  62. return ReturnData::create(ReturnData::SUCCESS,$res);
  63. }
  64. //签到
  65. public function signin(Request $request)
  66. {
  67. $res = User::signin();
  68. if($res !== true)
  69. {
  70. return ReturnData::create(ReturnData::PARAMS_ERROR,null,$res);
  71. }
  72. return ReturnData::create(ReturnData::SUCCESS);
  73. }
  74. //注册
  75. public function register(Request $request)
  76. {
  77. $mobile = $request->input('mobile', null);
  78. $password = $request->input('password', null);
  79. $community_id = $request->input('community_id', null);
  80. $address = $request->input('address', null);
  81. $type = $request->input('type', null);
  82. $verificationCode = $request->input('verificationCode', null);
  83. $verificationType = $request->input('verificationType', null); //7表示验证码登录
  84. $yezhu_mobile = $request->input('yezhu_mobile', null);
  85. Log::info("注册手机号==========mobile=======".$mobile);
  86. if ($mobile==null || $password==null || $verificationCode==null || $verificationType===null || $community_id===null)
  87. {
  88. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  89. }
  90. if (!Helper::isValidMobile($mobile))
  91. {
  92. return response(ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL));
  93. }
  94. $verifyCode = VerifyCode::isVerify($mobile, $verificationCode, $verificationType);
  95. if(!$verifyCode)
  96. {
  97. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  98. }
  99. if($yezhu_mobile!=null)
  100. {
  101. $yezhu = MallDataManager::userFirst(['mobile'=>$yezhu_mobile,'community_id'=>$community_id]);
  102. if (!$yezhu)
  103. {
  104. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR,'业主不匹配'));
  105. }
  106. }
  107. //判断是否已经注册
  108. $user = MallDataManager::userFirst(['mobile'=>$mobile]);
  109. if ($user)
  110. {
  111. return response(ReturnCode::create(ReturnCode::MOBILE_EXIST));
  112. }
  113. try
  114. {
  115. DB::beginTransaction();
  116. //创建用户
  117. $userdata['mobile'] = $mobile;
  118. $userdata['password'] = $password;
  119. $userdata['verify_mobile'] = 1;
  120. $userdata['name'] = $mobile;
  121. $userdata['nickname'] = $mobile;
  122. $userdata['community_id'] = $community_id;
  123. $userdata['address'] = $address;
  124. $userdata['type'] = $type;
  125. $userid = DB::table('user')->insertGetId($userdata);
  126. //注册环信用户
  127. $Easemob = new Easemob();
  128. $Easemob->imRegister(['username'=>'cuobian'.$userid,'password'=>md5('cuobian'.$userid)]);
  129. //生成token
  130. if ($user = MallDataManager::userFirst(['mobile'=>$mobile,'password'=>$password]))
  131. {
  132. //获取token
  133. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  134. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  135. }
  136. DB::commit();
  137. $response = ReturnCode::create(ReturnCode::SUCCESS);
  138. $response['data'] = [
  139. 'id' => $user->id,
  140. 'mobile' => $user->mobile,
  141. 'expired_at' => $expired_at,
  142. 'token' => $token,
  143. ];
  144. }
  145. catch (Exception $e)
  146. {
  147. DB::rollBack();
  148. Log::info($e->getMessage());
  149. return response(ReturnCode::error($e->getCode(), $e->getMessage()));
  150. }
  151. return response($response);
  152. }
  153. //登录
  154. public function login(Request $request)
  155. {
  156. $mobile = $request->input('mobile');
  157. $password = $request->input('password');
  158. if (!$mobile || !$password)
  159. {
  160. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  161. }
  162. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  163. {
  164. //判断密码
  165. if ($password == $user->password)
  166. {
  167. //获取token
  168. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  169. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  170. $response = ReturnCode::success();
  171. $response['data']=[
  172. 'id' => $user->id, 'name' => $user->name, 'nickname' => $user->nickname, 'headimg' => (string)$user->head_img, 'token' => $token, 'expired_at' => $expired_at, 'mobile' => $user->mobile, 'hx_name' => 'cuobian'.$user->id, 'hx_pwd' => md5('cuobian'.$user->id)
  173. ];
  174. return response($response);
  175. }
  176. else
  177. {
  178. return response(ReturnCode::create(ReturnCode::PASSWORD_NOT_MATCH));
  179. }
  180. }
  181. else
  182. {
  183. return response(ReturnCode::create(ReturnCode::USER_NOT_EXIST));
  184. }
  185. }
  186. //验证码登录
  187. public function verificationCodeLogin(Request $request)
  188. {
  189. $mobile = $request->input('mobile');
  190. $code = $request->input('code', null);
  191. $type = $request->input('type', null); //7表示验证码登录
  192. if (!$mobile || !$code)
  193. {
  194. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  195. }
  196. //判断验证码
  197. if ($type != VerifyCode::TYPE_LOGIN)
  198. {
  199. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  200. }
  201. $verifyCode = VerifyCode::isVerify($mobile, $code, $type);
  202. if (!$verifyCode)
  203. {
  204. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  205. }
  206. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  207. {
  208. //获取token
  209. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  210. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  211. $response = ReturnCode::success();
  212. $response['data']=[
  213. 'id' => $user->id, 'name' => $user->name, 'nickname' => $user->nickname, 'headimg' => (string)$user->head_img, 'token' => $token, 'expired_at' => $expired_at, 'mobile' => $user->mobile, 'hx_name' => 'cuobian'.$user->id, 'hx_pwd' => md5('cuobian'.$user->id)
  214. ];
  215. return response($response);
  216. }
  217. else
  218. {
  219. return response(ReturnCode::create(ReturnCode::USER_NOT_EXIST));
  220. }
  221. }
  222. //修改密码
  223. public function changePassword(Request $request)
  224. {
  225. $mobile = $request->input('mobile', null);
  226. $password = $request->input('password', null); //新密码
  227. $oldPassword = $request->input('oldPassword', null); //旧密码
  228. if (!$mobile || !$password || !$oldPassword)
  229. {
  230. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  231. }
  232. if($password == $oldPassword)
  233. {
  234. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'新旧密码相同');
  235. }
  236. if (!Helper::isValidMobile($mobile))
  237. {
  238. return ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL);
  239. }
  240. $user = MallDataManager::userFirst(['mobile'=>$mobile,'password'=>$oldPassword,'id'=>Token::$uid]);
  241. if(!$user)
  242. {
  243. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'手机或密码错误');
  244. }
  245. DB::table('user')->where(['mobile'=>$mobile,'password'=>$oldPassword,'id'=>Token::$uid])->update(['password'=>$password]);
  246. MallDataManager::tokenDelete(['uid'=>Token::$uid]);
  247. return ReturnCode::create(ReturnCode::SUCCESS);
  248. }
  249. //找回密码,不用输入旧密码
  250. public function findPassword(Request $request)
  251. {
  252. $mobile = $request->input('mobile', null);
  253. $password = $request->input('password', null);
  254. if ($mobile && $password)
  255. {
  256. if (!Helper::isValidMobile($mobile))
  257. {
  258. return response(ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL));
  259. }
  260. //判断验证码是否有效
  261. $code = $request->input('code', '');
  262. $type = $request->input('type', null);
  263. if($type != VerifyCode::TYPE_CHANGE_PASSWORD)
  264. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE,'验证码类型错误'));
  265. $verifyCode = VerifyCode::isVerify($mobile, $code, $type);
  266. if($verifyCode)
  267. {
  268. try
  269. {
  270. DB::beginTransaction();
  271. $verifyCode->status = VerifyCode::STATUS_USE;
  272. $verifyCode->save();
  273. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  274. {
  275. DB::table('user')->where(['mobile'=>$mobile])->update(['password'=>$password]);
  276. MallDataManager::tokenDelete(['uid'=>$user->id]);
  277. $response = response(ReturnCode::create(ReturnCode::SUCCESS));
  278. }
  279. else
  280. {
  281. $response = response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  282. }
  283. DB::commit();
  284. return $response;
  285. }
  286. catch (Exception $e)
  287. {
  288. DB::rollBack();
  289. return response(ReturnCode::error($e->getCode(), $e->getMessage()));
  290. }
  291. }
  292. else
  293. {
  294. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  295. }
  296. }
  297. else
  298. {
  299. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  300. }
  301. }
  302. //修改手机号
  303. public function changeMobile(Request $request)
  304. {
  305. $mobile = $request->input('mobile', null); //新手机号码
  306. $verificationCode = $request->input('verificationCode', null); //新手机验证码
  307. $oldMobile = $request->input('oldMobile', null); //旧手机号码
  308. $oldVerificationCode = $request->input('oldVerificationCode', null); //旧手机验证码
  309. $type = $request->input('type', null); //验证码类型
  310. if (!$mobile || !$verificationCode || !$oldMobile || !$oldVerificationCode || !$type)
  311. {
  312. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  313. }
  314. if (!Helper::isValidMobile($mobile))
  315. {
  316. return ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL);
  317. }
  318. if($mobile == $oldMobile)
  319. {
  320. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'新旧手机号码相同');
  321. }
  322. if($type != VerifyCode::TYPE_CHANGE_MOBILE)
  323. {
  324. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE,'验证码类型错误');
  325. }
  326. $verifyCode = VerifyCode::isVerify($oldMobile, $oldVerificationCode, $type);
  327. if(!$verifyCode)
  328. {
  329. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  330. }
  331. $verifyCode = null;
  332. $verifyCode = VerifyCode::isVerify($mobile, $verificationCode, $type);
  333. if(!$verifyCode)
  334. {
  335. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  336. }
  337. $user = MallDataManager::userFirst(['mobile'=>$oldMobile,'id'=>Token::$uid]);
  338. if(!$user)
  339. {
  340. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'旧手机号码错误');
  341. }
  342. DB::table('user')->where(['mobile'=>$oldMobile,'id'=>Token::$uid])->update(['mobile'=>$mobile]);
  343. MallDataManager::tokenDelete(['uid'=>Token::$uid]);
  344. return ReturnCode::create(ReturnCode::SUCCESS);
  345. }
  346. }