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.

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