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.

506 lines
16 KiB

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
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\Http\Model\User;
  8. class UserController extends CommonController
  9. {
  10. public function __construct()
  11. {
  12. parent::__construct();
  13. }
  14. //用户信息
  15. public function userInfo(Request $request)
  16. {
  17. if ($user = User::getOne(Token::$uid))
  18. {
  19. return ReturnData::create(ReturnData::SUCCESS, $user);
  20. }
  21. else
  22. {
  23. return ReturnData::create(ReturnData::RECORD_NOT_EXIST);
  24. }
  25. }
  26. //修改用户信息
  27. public function updateUserInfo(Request $request)
  28. {
  29. $data = $data2 = '';
  30. if($request->input('sex', null)!=null){$data['sex'] = $request->input('sex');}
  31. if($request->input('head_img', null)!=null){$data['head_img'] = $request->input('head_img');}
  32. if($request->input('name', null)!=null){$data['name'] = $request->input('name');}
  33. if($request->input('nickname', null)!=null){$data['nickname'] = $request->input('nickname');}
  34. if($request->input('verify_mobile', null)!=null){$data['verify_mobile'] = $request->input('verify_mobile');}
  35. if($request->input('community_id', null)!=null){$data['community_id'] = $request->input('community_id');}
  36. if($request->input('address', null)!=null){$data['address'] = $request->input('address');}
  37. if ($data != '')
  38. {
  39. MallDataManager::userUpdate(['id'=>Token::$uid],$data);
  40. }
  41. return ReturnCode::create(ReturnCode::SUCCESS);
  42. }
  43. //用户列表
  44. public function userList(Request $request)
  45. {
  46. //参数
  47. $data['limit'] = $request->input('limit', 10);
  48. $data['offset'] = $request->input('offset', 0);
  49. $res = User::getList($data);
  50. if(!$res)
  51. {
  52. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  53. }
  54. return ReturnData::create(ReturnData::SUCCESS,$res);
  55. }
  56. //签到
  57. public function signin(Request $request)
  58. {
  59. $res = User::signin();
  60. if($res !== true)
  61. {
  62. return ReturnData::create(ReturnData::PARAMS_ERROR,null,$res);
  63. }
  64. return ReturnData::create(ReturnData::SUCCESS);
  65. }
  66. //注册
  67. public function register(Request $request)
  68. {
  69. $mobile = $request->input('mobile', null);
  70. $password = $request->input('password', null);
  71. $community_id = $request->input('community_id', null);
  72. $address = $request->input('address', null);
  73. $type = $request->input('type', null);
  74. $verificationCode = $request->input('verificationCode', null);
  75. $verificationType = $request->input('verificationType', null); //7表示验证码登录
  76. $yezhu_mobile = $request->input('yezhu_mobile', null);
  77. Log::info("注册手机号==========mobile=======".$mobile);
  78. if ($mobile==null || $password==null || $verificationCode==null || $verificationType===null || $community_id===null)
  79. {
  80. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  81. }
  82. if (!Helper::isValidMobile($mobile))
  83. {
  84. return response(ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL));
  85. }
  86. $verifyCode = VerifyCode::isVerify($mobile, $verificationCode, $verificationType);
  87. if(!$verifyCode)
  88. {
  89. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  90. }
  91. if($yezhu_mobile!=null)
  92. {
  93. $yezhu = MallDataManager::userFirst(['mobile'=>$yezhu_mobile,'community_id'=>$community_id]);
  94. if (!$yezhu)
  95. {
  96. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR,'业主不匹配'));
  97. }
  98. }
  99. //判断是否已经注册
  100. $user = MallDataManager::userFirst(['mobile'=>$mobile]);
  101. if ($user)
  102. {
  103. return response(ReturnCode::create(ReturnCode::MOBILE_EXIST));
  104. }
  105. try
  106. {
  107. DB::beginTransaction();
  108. //创建用户
  109. $userdata['mobile'] = $mobile;
  110. $userdata['password'] = $password;
  111. $userdata['verify_mobile'] = 1;
  112. $userdata['name'] = $mobile;
  113. $userdata['nickname'] = $mobile;
  114. $userdata['community_id'] = $community_id;
  115. $userdata['address'] = $address;
  116. $userdata['type'] = $type;
  117. $userid = DB::table('user')->insertGetId($userdata);
  118. //注册环信用户
  119. $Easemob = new Easemob();
  120. $Easemob->imRegister(['username'=>'cuobian'.$userid,'password'=>md5('cuobian'.$userid)]);
  121. //生成token
  122. if ($user = MallDataManager::userFirst(['mobile'=>$mobile,'password'=>$password]))
  123. {
  124. //获取token
  125. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  126. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  127. }
  128. DB::commit();
  129. $response = ReturnCode::create(ReturnCode::SUCCESS);
  130. $response['data'] = [
  131. 'id' => $user->id,
  132. 'mobile' => $user->mobile,
  133. 'expired_at' => $expired_at,
  134. 'token' => $token,
  135. ];
  136. }
  137. catch (Exception $e)
  138. {
  139. DB::rollBack();
  140. Log::info($e->getMessage());
  141. return response(ReturnCode::error($e->getCode(), $e->getMessage()));
  142. }
  143. return response($response);
  144. }
  145. //登录
  146. public function login(Request $request)
  147. {
  148. $mobile = $request->input('mobile');
  149. $password = $request->input('password');
  150. if (!$mobile || !$password)
  151. {
  152. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  153. }
  154. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  155. {
  156. //判断密码
  157. if ($password == $user->password)
  158. {
  159. //获取token
  160. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  161. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  162. $response = ReturnCode::success();
  163. $response['data']=[
  164. '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)
  165. ];
  166. return response($response);
  167. }
  168. else
  169. {
  170. return response(ReturnCode::create(ReturnCode::PASSWORD_NOT_MATCH));
  171. }
  172. }
  173. else
  174. {
  175. return response(ReturnCode::create(ReturnCode::USER_NOT_EXIST));
  176. }
  177. }
  178. //验证码登录
  179. public function verificationCodeLogin(Request $request)
  180. {
  181. $mobile = $request->input('mobile');
  182. $code = $request->input('code', null);
  183. $type = $request->input('type', null); //7表示验证码登录
  184. if (!$mobile || !$code)
  185. {
  186. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  187. }
  188. //判断验证码
  189. if ($type != VerifyCode::TYPE_LOGIN)
  190. {
  191. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  192. }
  193. $verifyCode = VerifyCode::isVerify($mobile, $code, $type);
  194. if (!$verifyCode)
  195. {
  196. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  197. }
  198. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  199. {
  200. //获取token
  201. $expired_at = Carbon::now()->addDay()->toDateTimeString();
  202. $token = Token::generate(Token::TYPE_SHOP, $user->id);
  203. $response = ReturnCode::success();
  204. $response['data']=[
  205. '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)
  206. ];
  207. return response($response);
  208. }
  209. else
  210. {
  211. return response(ReturnCode::create(ReturnCode::USER_NOT_EXIST));
  212. }
  213. }
  214. //修改密码
  215. public function changePassword(Request $request)
  216. {
  217. $mobile = $request->input('mobile', null);
  218. $password = $request->input('password', null); //新密码
  219. $oldPassword = $request->input('oldPassword', null); //旧密码
  220. if (!$mobile || !$password || !$oldPassword)
  221. {
  222. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  223. }
  224. if($password == $oldPassword)
  225. {
  226. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'新旧密码相同');
  227. }
  228. if (!Helper::isValidMobile($mobile))
  229. {
  230. return ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL);
  231. }
  232. $user = MallDataManager::userFirst(['mobile'=>$mobile,'password'=>$oldPassword,'id'=>Token::$uid]);
  233. if(!$user)
  234. {
  235. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'手机或密码错误');
  236. }
  237. DB::table('user')->where(['mobile'=>$mobile,'password'=>$oldPassword,'id'=>Token::$uid])->update(['password'=>$password]);
  238. MallDataManager::tokenDelete(['uid'=>Token::$uid]);
  239. return ReturnCode::create(ReturnCode::SUCCESS);
  240. }
  241. //找回密码,不用输入旧密码
  242. public function findPassword(Request $request)
  243. {
  244. $mobile = $request->input('mobile', null);
  245. $password = $request->input('password', null);
  246. if ($mobile && $password)
  247. {
  248. if (!Helper::isValidMobile($mobile))
  249. {
  250. return response(ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL));
  251. }
  252. //判断验证码是否有效
  253. $code = $request->input('code', '');
  254. $type = $request->input('type', null);
  255. if($type != VerifyCode::TYPE_CHANGE_PASSWORD)
  256. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE,'验证码类型错误'));
  257. $verifyCode = VerifyCode::isVerify($mobile, $code, $type);
  258. if($verifyCode)
  259. {
  260. try
  261. {
  262. DB::beginTransaction();
  263. $verifyCode->status = VerifyCode::STATUS_USE;
  264. $verifyCode->save();
  265. if ($user = MallDataManager::userFirst(['mobile'=>$mobile]))
  266. {
  267. DB::table('user')->where(['mobile'=>$mobile])->update(['password'=>$password]);
  268. MallDataManager::tokenDelete(['uid'=>$user->id]);
  269. $response = response(ReturnCode::create(ReturnCode::SUCCESS));
  270. }
  271. else
  272. {
  273. $response = response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  274. }
  275. DB::commit();
  276. return $response;
  277. }
  278. catch (Exception $e)
  279. {
  280. DB::rollBack();
  281. return response(ReturnCode::error($e->getCode(), $e->getMessage()));
  282. }
  283. }
  284. else
  285. {
  286. return response(ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE));
  287. }
  288. }
  289. else
  290. {
  291. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  292. }
  293. }
  294. //用户意见反馈
  295. public function feedback(Request $request)
  296. {
  297. $content = $request->input('content', null);
  298. if(!$content)
  299. return response(ReturnCode::create(ReturnCode::PARAMS_ERROR));
  300. if ($user = MallDataManager::userFirst(['id'=>Token::$uid]))
  301. {
  302. $id = MallDataManager::mallFeedbackinsertGetId(['content' => $content, 'user_id' => Token::$uid]);
  303. return response(ReturnCode::create(ReturnCode::SUCCESS,$id));
  304. }
  305. else
  306. {
  307. return response(ReturnCode::create(ReturnCode::AUTHORIZE_FAIL));
  308. }
  309. }
  310. //关于
  311. public function about(Request $request)
  312. {
  313. return response(ReturnCode::create(ReturnCode::SUCCESS,['url'=>'http://www.baidu.com']));
  314. }
  315. //修改手机号
  316. public function changeMobile(Request $request)
  317. {
  318. $mobile = $request->input('mobile', null); //新手机号码
  319. $verificationCode = $request->input('verificationCode', null); //新手机验证码
  320. $oldMobile = $request->input('oldMobile', null); //旧手机号码
  321. $oldVerificationCode = $request->input('oldVerificationCode', null); //旧手机验证码
  322. $type = $request->input('type', null); //验证码类型
  323. if (!$mobile || !$verificationCode || !$oldMobile || !$oldVerificationCode || !$type)
  324. {
  325. return ReturnCode::create(ReturnCode::PARAMS_ERROR);
  326. }
  327. if (!Helper::isValidMobile($mobile))
  328. {
  329. return ReturnCode::create(ReturnCode::MOBILE_FORMAT_FAIL);
  330. }
  331. if($mobile == $oldMobile)
  332. {
  333. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'新旧手机号码相同');
  334. }
  335. if($type != VerifyCode::TYPE_CHANGE_MOBILE)
  336. {
  337. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE,'验证码类型错误');
  338. }
  339. $verifyCode = VerifyCode::isVerify($oldMobile, $oldVerificationCode, $type);
  340. if(!$verifyCode)
  341. {
  342. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  343. }
  344. $verifyCode = null;
  345. $verifyCode = VerifyCode::isVerify($mobile, $verificationCode, $type);
  346. if(!$verifyCode)
  347. {
  348. return ReturnCode::create(ReturnCode::INVALID_VERIFY_CODE);
  349. }
  350. $user = MallDataManager::userFirst(['mobile'=>$oldMobile,'id'=>Token::$uid]);
  351. if(!$user)
  352. {
  353. return ReturnCode::create(ReturnCode::PARAMS_ERROR,'旧手机号码错误');
  354. }
  355. DB::table('user')->where(['mobile'=>$oldMobile,'id'=>Token::$uid])->update(['mobile'=>$mobile]);
  356. MallDataManager::tokenDelete(['uid'=>Token::$uid]);
  357. return ReturnCode::create(ReturnCode::SUCCESS);
  358. }
  359. //添加收货地址
  360. public function userAddressAdd(Request $request)
  361. {
  362. //参数
  363. $data['name'] = $request->input('name',null);
  364. $data['mobile'] = $request->input('mobile',null);
  365. $data['country'] = $request->input('country',null);
  366. $data['province'] = $request->input('province',null);
  367. $data['city'] = $request->input('city',null);
  368. $data['district'] = $request->input('district',null);
  369. $data['address'] = $request->input('address',null);
  370. if($request->input('telphone',null)!==null){$data['telphone'] = $request->input('telphone');}
  371. if($request->input('zipcode',null)!==null){$data['zipcode'] = $request->input('zipcode');}
  372. if($request->input('email',null)!==null){$data['email'] = $request->input('email');}
  373. if($request->input('best_time',null)!==null){$data['best_time'] = $request->input('best_time');}
  374. if($request->input('is_default',null)!==null){$data['is_default'] = $request->input('is_default');}
  375. if($data['name']===null || $data['mobile']===null || $data['address']===null || $data['country']===null || $data['province']===null || $data['city']===null || $data['district']===null)
  376. {
  377. return ReturnData::create(ReturnData::PARAMS_ERROR);
  378. }
  379. $res = UserAddress::add($data);
  380. if(!$res)
  381. {
  382. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  383. }
  384. return ReturnData::create(ReturnData::SUCCESS,$res);
  385. }
  386. //修改收货地址
  387. public function userAddressUpdate(Request $request)
  388. {
  389. //参数
  390. $data['id'] = $request->input('id',null);
  391. $data['name'] = $request->input('name',null);
  392. $data['mobile'] = $request->input('mobile',null);
  393. $data['country'] = $request->input('country',null);
  394. $data['province'] = $request->input('province',null);
  395. $data['city'] = $request->input('city',null);
  396. $data['district'] = $request->input('district',null);
  397. $data['address'] = $request->input('address',null);
  398. if($request->input('telphone',null)!==null){$data['telphone'] = $request->input('telphone');}
  399. if($request->input('zipcode',null)!==null){$data['zipcode'] = $request->input('zipcode');}
  400. if($request->input('email',null)!==null){$data['email'] = $request->input('email');}
  401. if($request->input('best_time',null)!==null){$data['best_time'] = $request->input('best_time');}
  402. if($request->input('is_default',null)!==null){$data['is_default'] = $request->input('is_default');}
  403. if($data['id']===null || $data['name']===null || $data['mobile']===null || $data['address']===null || $data['country']===null || $data['province']===null || $data['city']===null || $data['district']===null)
  404. {
  405. return ReturnData::create(ReturnData::PARAMS_ERROR);
  406. }
  407. $res = UserAddress::modify($data);
  408. if(!$res)
  409. {
  410. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  411. }
  412. return ReturnData::create(ReturnData::SUCCESS,$res);
  413. }
  414. //删除收货地址
  415. public function userAddressDelete(Request $request)
  416. {
  417. //参数
  418. $id = $request->input('id',null);
  419. $res = UserAddress::remove($id);
  420. if(!$res)
  421. {
  422. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  423. }
  424. return ReturnData::create(ReturnData::SUCCESS,$res);
  425. }
  426. }