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.

580 lines
19 KiB

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