UserLogic.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\model\CourierModel;
  4. use app\common\model\EngageUserModel;
  5. use app\common\model\MealcenterModel;
  6. use app\common\model\UserAddressModel;
  7. use app\common\model\UserModel;
  8. class UserLogic
  9. {
  10. public function register($arr)
  11. {
  12. $fillfields = ['phone', 'passwd'];
  13. foreach ($fillfields as $key => $value) {
  14. if (!isset($arr[$value]) || empty($arr[$value])) {
  15. return backarr(0, "参数缺少");
  16. }
  17. }
  18. $m_u = new UserModel();
  19. $phone = $arr['phone'];
  20. $passwd = $phone . $arr['passwd'];
  21. $where = ['phone' => $phone];
  22. $uinfo = $m_u->getInfo($where);
  23. if (empty($uinfo)) {
  24. //注册
  25. $arr['passwd'] = $this->createpasswd($passwd);
  26. $uid = $m_u->insertData($arr);
  27. if (empty($uid)) {
  28. return backarr(0, "注册失败");
  29. }
  30. } else {
  31. //登录
  32. $uid = $uinfo['id'];
  33. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  34. if (!$checked) {
  35. return backarr(0, "密码错误");
  36. }
  37. }
  38. $result = $this->changetoken($uid, $phone);
  39. if (empty($result['status'])) {
  40. return backarr(0, $result['msg']);
  41. }
  42. $field = ['id', 'phone', 'token'];
  43. $where = ['id' => $uid];
  44. $uinfo = $m_u->getInfo($where, $field);
  45. return backarr($uinfo, "注册成功", $uinfo);
  46. }
  47. public function login($arr)
  48. {
  49. $fillfields = ['phone', 'passwd'];
  50. foreach ($fillfields as $key => $value) {
  51. if (!isset($arr[$value]) || empty($arr[$value])) {
  52. return backarr(0, "参数缺少");
  53. }
  54. }
  55. $m_u = new UserModel();
  56. $phone = $arr['phone'];
  57. $passwd = $phone . $arr['passwd'];
  58. $where = ['phone' => $phone];
  59. $uinfo = $m_u->getInfo($where);
  60. if (empty($uinfo)) {
  61. return backarr(0, "无用户信息");
  62. }
  63. $uid = $uinfo['id'];
  64. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  65. if (!$checked) {
  66. return backarr(0, "密码错误");
  67. }
  68. $result = $this->changetoken($uid, $phone);
  69. if (empty($result['status'])) {
  70. return backarr(0, $result['msg']);
  71. }
  72. $field = ['id', 'phone', 'token'];
  73. $where = ['id' => $uid];
  74. $uinfo = $m_u->getInfo($where, $field);
  75. return backarr(1, "登录成功", $uinfo);
  76. }
  77. private function checkpasswd($pwd, $hash)
  78. {
  79. return password_verify($pwd, $hash);
  80. }
  81. private function createpasswd($pwd)
  82. {
  83. $newpasswd = password_hash($pwd, PASSWORD_DEFAULT);
  84. return $newpasswd;
  85. }
  86. private function changetoken($uid, $str)
  87. {
  88. $token = $this->gettoken($str);
  89. $m_u = new UserModel();
  90. $updateData = ['token' => $token];
  91. $where = ['id' => $uid];
  92. $row = $m_u->updateinfo($where, $updateData);
  93. if (empty($row)) {
  94. return backarr(0, "修改token失败");
  95. }
  96. return backarr(1, "修改token成功");
  97. }
  98. private function gettoken($str)
  99. {
  100. $str = md5(uniqid(md5(microtime(true)), true));
  101. $token = sha1($str . $str);
  102. return $token;
  103. }
  104. /**
  105. * 编辑地址
  106. *
  107. * @return void
  108. * @author wj
  109. * @date 2022-12-01
  110. */
  111. public function editaddress($arr)
  112. {
  113. $fillfields = ['receiver_address', 'address', 'receiver_name', 'receiver_telno', 'gcj_lat', 'gcj_long', 'user_id'];
  114. foreach ($fillfields as $key => $value) {
  115. if (!isset($arr[$value]) || empty($arr[$value])) {
  116. return backarr(0, "参数缺少");
  117. }
  118. }
  119. $isadd = true;
  120. $m_ua = new UserAddressModel();
  121. if (isset($arr['id'])) {
  122. if (isset($arr['user_id'])) {
  123. //user_id 不可更改
  124. unset($arr['user_id']);
  125. }
  126. $id = $arr['id'];
  127. $uawhere = ['id' => $id];
  128. $uainfo = $m_ua->getInfo($uawhere);
  129. if (!empty($uainfo)) {
  130. $isadd = false;
  131. //修改
  132. $updateData = [];
  133. foreach ($arr as $key => $value) {
  134. if (isset($uainfo[$key]) && $uainfo[$key] != $value) {
  135. $updateData[$key] = $value;
  136. }
  137. }
  138. $row = $m_ua->updateinfo(['id' => $id], $updateData);
  139. if (empty($row)) {
  140. return backarr(0, "地址修改失败");
  141. }
  142. }
  143. $uaid = $uainfo['id'];
  144. }
  145. if ($isadd) {
  146. //添加
  147. $uaid = $m_ua->insertData($arr);
  148. if (empty($uaid)) {
  149. return backarr(0, "地址添加失败");
  150. }
  151. }
  152. return backarr(1, "地址编辑成功", ['uaid' => $uaid]);
  153. }
  154. /**
  155. * 修改默认地址
  156. *
  157. * @return void
  158. * @author wj
  159. * @date 2022-12-01
  160. */
  161. public function updateaddressdefault($arr)
  162. {
  163. $fillfields = ['id', 'user_id'];
  164. foreach ($fillfields as $key => $value) {
  165. if (!isset($arr[$value]) || empty($arr[$value])) {
  166. return backarr(0, "参数缺少");
  167. }
  168. }
  169. $id = $arr['id'];
  170. $user_id = $arr['user_id'];
  171. $updateData = ['is_default' => 0];
  172. $where = ['user_id' => $user_id];
  173. $m_ua = new UserAddressModel();
  174. $m_ua->updateinfo($where, $updateData);
  175. $where = ['id' => $id, 'user_id' => $user_id];
  176. $updateData = ['is_default' => 1];
  177. $row = $m_ua->updateinfo($where, $updateData);
  178. if (empty($row)) {
  179. return backarr(0, "默认地址修改失败");
  180. }
  181. return backarr(1, "默认地址修改成功", ['uaid' => $id]);
  182. }
  183. /**
  184. * 删除地址
  185. *
  186. * @return void
  187. * @author wj
  188. * @date 2022-12-01
  189. */
  190. public function deleteaddress($arr)
  191. {
  192. $fillfields = ['id', 'user_id'];
  193. foreach ($fillfields as $key => $value) {
  194. if (!isset($arr[$value]) || empty($arr[$value])) {
  195. return backarr(0, "参数缺少");
  196. }
  197. }
  198. $id = $arr['id'];
  199. $user_id = $arr['user_id'];
  200. $m_ua = new UserAddressModel();
  201. $where = ['id' => $id, 'user_id' => $user_id];
  202. $updateData = ['is_active' => 0];
  203. $row = $m_ua->updateinfo($where, $updateData);
  204. if (empty($row)) {
  205. return backarr(0, "地址删除失败");
  206. }
  207. return backarr(1, "地址删除成功", ['uaid' => $id]);
  208. }
  209. /**
  210. * 获取全部地址列表
  211. *
  212. * @return void
  213. * @author wj
  214. * @date 2022-12-01
  215. */
  216. public function getaddresslist($arr)
  217. {
  218. $userid = isset($arr['userid']) && is_numeric($arr['userid']) && !empty($arr['userid']) && $arr['userid'] > 0 ? $arr['userid'] : 0;
  219. $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  220. $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  221. $where = [];
  222. if (!empty($userid)) {
  223. $where['userid'] = $userid;
  224. }
  225. if (isset($arr['is_active'])) {
  226. $where['is_active'] = $arr['is_active'];
  227. }
  228. $m_ua = new UserAddressModel();
  229. $count = $m_ua->getList($where, 'count');
  230. if ($count <= 0) {
  231. return backarr(0, "无数据");
  232. }
  233. $totalpage = ceil($count / $size);
  234. $page > $totalpage && $page = $totalpage;
  235. $list = $m_ua->getList($where, "*", $page, $size, 'is_default,id desc');
  236. $data = [
  237. 'page' => $page,
  238. 'size' => $size,
  239. 'count' => $count,
  240. 'list' => $list,
  241. ];
  242. return backarr(1, "查询成功", $data);
  243. }
  244. /**
  245. * 招聘人员登陆
  246. *
  247. * @param [type] $arr
  248. * @return void
  249. * @author wj
  250. * @date 2022-12-09
  251. */
  252. public function loginforengage($arr)
  253. {
  254. $fillfields = ['phone', 'passwd', 'type'];
  255. foreach ($fillfields as $key => $value) {
  256. if (!isset($arr[$value]) || empty($arr[$value])) {
  257. return backarr(0, "参数缺少");
  258. }
  259. }
  260. $m_u = new UserModel();
  261. $phone = $arr['phone'];
  262. $passwd = $phone . $arr['passwd'];
  263. $type = $arr['type'];
  264. $where = ['phone' => $phone, 'is_engage' => 1];
  265. $uinfo = $m_u->getInfo($where);
  266. if (empty($uinfo)) {
  267. return backarr(0, "无用户信息");
  268. }
  269. $uid = $uinfo['id'];
  270. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  271. if (!$checked) {
  272. return backarr(0, "密码错误");
  273. }
  274. //校验type
  275. $result = $this->getengageinfo($type, $uid);
  276. if (empty($result['status'])) {
  277. return backarr(0, $result['msg']);
  278. }
  279. $engageinfo = $result['data'];
  280. $result = $this->changetoken($uid, $phone);
  281. if (empty($result['status'])) {
  282. return backarr(0, $result['msg']);
  283. }
  284. $field = ['id', 'phone', 'token'];
  285. $where = ['id' => $uid];
  286. $uinfo = $m_u->getInfo($where, $field);
  287. $uinfo['engageinfo'] = $engageinfo;
  288. return backarr(1, "登录成功", $uinfo);
  289. }
  290. /**
  291. * 获取招聘人员信息
  292. *
  293. * @return void
  294. * @author wj
  295. * @date 2022-12-09
  296. */
  297. public function getengageinfo($type, $userid)
  298. {
  299. $m_eu = new EngageUserModel();
  300. $euwhere = ['user_id' => $userid, 'et_id' => $type];
  301. $euinfo = $m_eu->getInfo($euwhere);
  302. if (empty($euinfo)) {
  303. return backarr(0, "无用户权限");
  304. }
  305. switch ($type) {
  306. case 1:
  307. # 套餐配送
  308. $m_c = new CourierModel();
  309. $cwhere = ['user_id' => $userid];
  310. $cinfo = $m_c->getInfo($cwhere);
  311. if (empty($cinfo)) {
  312. return backarr(0, "无配送员信息");
  313. }
  314. if (1 != $cinfo['is_active']) {
  315. return backarr(0, "配送员已被禁用");
  316. }
  317. $m_mc = new MealcenterModel();
  318. $mcinfo = $m_mc->getInfo(['id' => $cinfo['center_id']]);
  319. $cinfo['mcinfo'] = $mcinfo;
  320. return backarr(1, "配送员已被禁用", $cinfo);
  321. break;
  322. default:
  323. return backarr(0, "类型错误");
  324. break;
  325. }
  326. }
  327. }