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.

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