UserLogic.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\model\UserAddressModel;
  4. use app\common\model\UserModel;
  5. class UserLogic
  6. {
  7. public function register($arr)
  8. {
  9. $fillfields = ['phone', 'passwd'];
  10. foreach ($fillfields as $key => $value) {
  11. if (!isset($arr[$value]) || empty($arr[$value])) {
  12. return backarr(0, "参数缺少");
  13. }
  14. }
  15. $m_u = new UserModel();
  16. $phone = $arr['phone'];
  17. $passwd = $phone . $arr['passwd'];
  18. $where = ['phone' => $phone];
  19. $uinfo = $m_u->getInfo($where);
  20. if (empty($uinfo)) {
  21. //注册
  22. $arr['passwd'] = $this->createpasswd($passwd);
  23. $uid = $m_u->insertData($arr);
  24. if (empty($uid)) {
  25. return backarr(0, "注册失败");
  26. }
  27. } else {
  28. //登录
  29. $uid = $uinfo['id'];
  30. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  31. if (!$checked) {
  32. return backarr(0, "密码错误");
  33. }
  34. }
  35. $result = $this->changetoken($uid, $phone);
  36. if (empty($result['status'])) {
  37. return backarr(0, $result['msg']);
  38. }
  39. $field = ['id', 'phone', 'token'];
  40. $where = ['id' => $uid];
  41. $uinfo = $m_u->getInfo($where, $field);
  42. return backarr($uinfo, "注册成功", $uinfo);
  43. }
  44. public function login($arr)
  45. {
  46. $fillfields = ['phone', 'passwd'];
  47. foreach ($fillfields as $key => $value) {
  48. if (!isset($arr[$value]) || empty($arr[$value])) {
  49. return backarr(0, "参数缺少");
  50. }
  51. }
  52. $m_u = new UserModel();
  53. $phone = $arr['phone'];
  54. $passwd = $phone . $arr['passwd'];
  55. $where = ['phone' => $phone];
  56. $uinfo = $m_u->getInfo($where);
  57. if (empty($uinfo)) {
  58. return backarr(0, "无用户信息");
  59. }
  60. $uid = $uinfo['id'];
  61. $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
  62. if (!$checked) {
  63. return backarr(0, "密码错误");
  64. }
  65. $result = $this->changetoken($uid, $phone);
  66. if (empty($result['status'])) {
  67. return backarr(0, $result['msg']);
  68. }
  69. $field = ['id', 'phone', 'token'];
  70. $where = ['id' => $uid];
  71. $uinfo = $m_u->getInfo($where, $field);
  72. return backarr($uinfo, "登录成功", $uinfo);
  73. }
  74. private function checkpasswd($pwd, $hash)
  75. {
  76. return password_verify($pwd, $hash);
  77. }
  78. private function createpasswd($pwd)
  79. {
  80. $newpasswd = password_hash($pwd, PASSWORD_DEFAULT);
  81. return $newpasswd;
  82. }
  83. private function changetoken($uid, $str)
  84. {
  85. $token = $this->gettoken($str);
  86. $m_u = new UserModel();
  87. $updateData = ['token' => $token];
  88. $where = ['id' => $uid];
  89. $row = $m_u->updateinfo($where, $updateData);
  90. if (empty($row)) {
  91. return backarr(0, "修改token失败");
  92. }
  93. return backarr(1, "修改token成功");
  94. }
  95. private function gettoken($str)
  96. {
  97. $str = md5(uniqid(md5(microtime(true)), true));
  98. $token = sha1($str . $str);
  99. return $token;
  100. }
  101. /**
  102. * 编辑地址
  103. *
  104. * @return void
  105. * @author wj
  106. * @date 2022-12-01
  107. */
  108. public function editaddress($arr)
  109. {
  110. $fillfields = ['receiver_address', 'address', 'receiver_name', 'receiver_telno', 'lat', 'long', 'user_id'];
  111. foreach ($fillfields as $key => $value) {
  112. if (!isset($arr[$value]) || empty($arr[$value])) {
  113. return backarr(0, "参数缺少");
  114. }
  115. }
  116. $isadd = true;
  117. $m_ua = new UserAddressModel();
  118. if (isset($arr['id'])) {
  119. if (isset($arr['user_id'])) {
  120. //user_id 不可更改
  121. unset($arr['user_id']);
  122. }
  123. $id = $arr['id'];
  124. $uawhere = ['id' => $id];
  125. $uainfo = $m_ua->getInfo($uawhere);
  126. if (!empty($uainfo)) {
  127. $isadd = false;
  128. //修改
  129. $updateData = [];
  130. foreach ($arr as $key => $value) {
  131. if (isset($uainfo[$key]) && $uainfo[$key] != $value) {
  132. $updateData[$key] = $value;
  133. }
  134. }
  135. $row = $m_ua->updateinfo(['id' => $id], $updateData);
  136. if (empty($row)) {
  137. return backarr(0, "地址修改失败");
  138. }
  139. }
  140. $uaid = $uainfo['id'];
  141. }
  142. if ($isadd) {
  143. //添加
  144. $uaid = $m_ua->insertData($arr);
  145. if (empty($uaid)) {
  146. return backarr(0, "地址添加失败");
  147. }
  148. }
  149. return backarr(1, "地址编辑成功", ['uaid' => $uaid]);
  150. }
  151. /**
  152. * 修改默认地址
  153. *
  154. * @return void
  155. * @author wj
  156. * @date 2022-12-01
  157. */
  158. public function updateaddressdefault($arr)
  159. {
  160. $fillfields = ['id', 'user_id'];
  161. foreach ($fillfields as $key => $value) {
  162. if (!isset($arr[$value]) || empty($arr[$value])) {
  163. return backarr(0, "参数缺少");
  164. }
  165. }
  166. $id = $arr['id'];
  167. $user_id = $arr['user_id'];
  168. $updateData = ['is_default' => 0];
  169. $where = ['user_id' => $user_id];
  170. $m_ua = new UserAddressModel();
  171. $m_ua->updateinfo($where, $updateData);
  172. $where = ['id' => $id, 'user_id' => $user_id];
  173. $updateData = ['is_default' => 1];
  174. $row = $m_ua->updateinfo($where, $updateData);
  175. if (empty($row)) {
  176. return backarr(0, "默认地址修改失败");
  177. }
  178. return backarr(1, "默认地址修改成功", ['uaid' => $id]);
  179. }
  180. /**
  181. * 删除地址
  182. *
  183. * @return void
  184. * @author wj
  185. * @date 2022-12-01
  186. */
  187. public function deleteaddress($arr)
  188. {
  189. $fillfields = ['id', 'user_id'];
  190. foreach ($fillfields as $key => $value) {
  191. if (!isset($arr[$value]) || empty($arr[$value])) {
  192. return backarr(0, "参数缺少");
  193. }
  194. }
  195. $id = $arr['id'];
  196. $user_id = $arr['user_id'];
  197. $m_ua = new UserAddressModel();
  198. $where = ['id' => $id, 'user_id' => $user_id];
  199. $updateData = ['is_active' => 0];
  200. $row = $m_ua->updateinfo($where, $updateData);
  201. if (empty($row)) {
  202. return backarr(0, "地址删除失败");
  203. }
  204. return backarr(1, "地址删除成功", ['uaid' => $id]);
  205. }
  206. /**
  207. * 获取全部地址列表
  208. *
  209. * @return void
  210. * @author wj
  211. * @date 2022-12-01
  212. */
  213. public function getaddresslist($arr)
  214. {
  215. $userid = isset($arr['userid']) && is_numeric($arr['userid']) && !empty($arr['userid']) && $arr['userid'] > 0 ? $arr['userid'] : 0;
  216. $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  217. $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  218. $where = [];
  219. if (!empty($userid)) {
  220. $where['userid'] = $userid;
  221. }
  222. if(isset($arr['is_active'])){
  223. $where['is_active'] = $arr['is_active'];
  224. }
  225. $m_ua = new UserAddressModel();
  226. $count = $m_ua->getList($where, 'count');
  227. if ($count <= 0) {
  228. return backarr(0, "无数据");
  229. }
  230. $totalpage = ceil($count / $size);
  231. $page > $totalpage && $page = $totalpage;
  232. $list = $m_ua->getList($where, "*", $page, $size, 'is_default,id desc');
  233. $data = [
  234. 'page' => $page,
  235. 'size' => $size,
  236. 'count' => $count,
  237. 'list' => $list,
  238. ];
  239. return backarr(1, "查询成功", $data);
  240. }
  241. }