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.

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