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.

482 lines
16 KiB

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