123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 |
- <?php
- namespace app\api\logic;
- use app\common\model\CourierModel;
- use app\common\model\EngageUserModel;
- use app\common\model\MealcenterModel;
- use app\common\model\UserAddressModel;
- use app\common\model\UserModel;
- use think\Db;
- class UserLogic
- {
- public function register($arr)
- {
- $fillfields = ['phone', 'passwd'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $m_u = new UserModel();
- $phone = $arr['phone'];
- $passwd = $phone . $arr['passwd'];
- $where = ['phone' => $phone];
- $uinfo = $m_u->getInfo($where);
- if (empty($uinfo)) {
- //注册
- $arr['passwd'] = $this->createpasswd($passwd);
- $uid = $m_u->insertData($arr);
- if (empty($uid)) {
- return backarr(0, "注册失败");
- }
- } else {
- //登录
- $uid = $uinfo['id'];
- $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
- if (!$checked) {
- return backarr(0, "密码错误");
- }
- }
- $result = $this->changetoken($uid, $phone);
- if (empty($result['status'])) {
- return backarr(0, $result['msg']);
- }
- $field = ['id', 'phone', 'token'];
- $where = ['id' => $uid];
- $uinfo = $m_u->getInfo($where, $field);
- return backarr($uinfo, "注册成功", $uinfo);
- }
- public function login($arr)
- {
- $fillfields = ['phone', 'passwd'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $m_u = new UserModel();
- $phone = $arr['phone'];
- $passwd = $phone . $arr['passwd'];
- $where = ['phone' => $phone];
- $uinfo = $m_u->getInfo($where);
- if (empty($uinfo)) {
- return backarr(0, "无用户信息");
- }
- $uid = $uinfo['id'];
- $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
- if (!$checked) {
- return backarr(0, "密码错误");
- }
- $result = $this->changetoken($uid, $phone);
- if (empty($result['status'])) {
- return backarr(0, $result['msg']);
- }
- $field = ['id', 'phone', 'token'];
- $where = ['id' => $uid];
- $uinfo = $m_u->getInfo($where, $field);
- return backarr(1, "登录成功", $uinfo);
- }
- private function checkpasswd($pwd, $hash)
- {
- return password_verify($pwd, $hash);
- }
- private function createpasswd($pwd)
- {
- $newpasswd = password_hash($pwd, PASSWORD_DEFAULT);
- return $newpasswd;
- }
- private function changetoken($uid, $str)
- {
- $token = $this->gettoken($str);
- $m_u = new UserModel();
- $updateData = ['token' => $token];
- $where = ['id' => $uid];
- $row = $m_u->updateinfo($where, $updateData);
- if (empty($row)) {
- return backarr(0, "修改token失败");
- }
- return backarr(1, "修改token成功");
- }
- private function gettoken($str)
- {
- $str = md5(uniqid(md5(microtime(true)), true));
- $token = sha1($str . $str);
- return $token;
- }
- /**
- * 编辑地址
- *
- * @return void
- * @author wj
- * @date 2022-12-01
- */
- public function editaddress($arr)
- {
- $fillfields = ['receiver_address', 'address', 'receiver_name', 'receiver_telno', 'gcj_lat', 'gcj_long', 'user_id'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $isadd = true;
- $m_ua = new UserAddressModel();
- if (isset($arr['id'])) {
- if (isset($arr['user_id'])) {
- //user_id 不可更改
- unset($arr['user_id']);
- }
- $id = $arr['id'];
- $uawhere = ['id' => $id];
- $uainfo = $m_ua->getInfo($uawhere);
- if (!empty($uainfo)) {
- $isadd = false;
- //修改
- $updateData = [];
- foreach ($arr as $key => $value) {
- if (isset($uainfo[$key]) && $uainfo[$key] != $value) {
- $updateData[$key] = $value;
- }
- }
- $row = $m_ua->updateinfo(['id' => $id], $updateData);
- if (empty($row)) {
- return backarr(0, "地址修改失败");
- }
- }
- $uaid = $uainfo['id'];
- }
- if ($isadd) {
- //添加
- $uaid = $m_ua->insertData($arr);
- if (empty($uaid)) {
- return backarr(0, "地址添加失败");
- }
- }
- return backarr(1, "地址编辑成功", ['uaid' => $uaid]);
- }
- /**
- * 修改默认地址
- *
- * @return void
- * @author wj
- * @date 2022-12-01
- */
- public function updateaddressdefault($arr)
- {
- $fillfields = ['id', 'user_id'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $id = $arr['id'];
- $user_id = $arr['user_id'];
- $updateData = ['is_default' => 0];
- $where = ['user_id' => $user_id];
- $m_ua = new UserAddressModel();
- $m_ua->updateinfo($where, $updateData);
- $where = ['id' => $id, 'user_id' => $user_id];
- $updateData = ['is_default' => 1];
- $row = $m_ua->updateinfo($where, $updateData);
- if (empty($row)) {
- return backarr(0, "默认地址修改失败");
- }
- return backarr(1, "默认地址修改成功", ['uaid' => $id]);
- }
- /**
- * 删除地址
- *
- * @return void
- * @author wj
- * @date 2022-12-01
- */
- public function deleteaddress($arr)
- {
- $fillfields = ['id', 'user_id'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $id = $arr['id'];
- $user_id = $arr['user_id'];
- $m_ua = new UserAddressModel();
- $where = ['id' => $id, 'user_id' => $user_id];
- $updateData = ['is_active' => 0];
- $row = $m_ua->updateinfo($where, $updateData);
- if (empty($row)) {
- return backarr(0, "地址删除失败");
- }
- return backarr(1, "地址删除成功", ['uaid' => $id]);
- }
- /**
- * 获取全部地址列表
- *
- * @return void
- * @author wj
- * @date 2022-12-01
- */
- public function getaddresslist($arr)
- {
- $userid = isset($arr['userid']) && is_numeric($arr['userid']) && !empty($arr['userid']) && $arr['userid'] > 0 ? $arr['userid'] : 0;
- $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
- $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
- $where = [];
- if (!empty($userid)) {
- $where['user_id'] = $userid;
- }
- if (isset($arr['is_active'])) {
- $where['is_active'] = $arr['is_active'];
- }
- $m_ua = new UserAddressModel();
- $count = $m_ua->getList($where, 'count');
- if ($count <= 0) {
- return backarr(0, "无数据");
- }
- $totalpage = ceil($count / $size);
- $page > $totalpage && $page = $totalpage;
- $list = $m_ua->getList($where, "*", $page, $size, 'is_default,id desc');
- $data = [
- 'page' => $page,
- 'size' => $size,
- 'count' => $count,
- 'list' => $list,
- ];
- return backarr(1, "查询成功", $data);
- }
- /**
- * 招聘人员登陆
- *
- * @param [type] $arr
- * @return void
- * @author wj
- * @date 2022-12-09
- */
- public function loginforengage($arr)
- {
- $fillfields = ['phone', 'passwd', 'type'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $m_u = new UserModel();
- $phone = $arr['phone'];
- $passwd = $phone . $arr['passwd'];
- $type = $arr['type'];
- $where = ['phone' => $phone, 'is_engage' => 1];
- $uinfo = $m_u->getInfo($where);
- if (empty($uinfo)) {
- return backarr(0, "无用户信息");
- }
- $uid = $uinfo['id'];
- $checked = $this->checkpasswd($passwd, $uinfo['passwd']);
- if (!$checked) {
- return backarr(0, "密码错误");
- }
- //校验type
- $result = $this->getengageinfo($type, $uid);
- if (empty($result['status'])) {
- return backarr(0, $result['msg']);
- }
- $engageinfo = $result['data'];
- $result = $this->changetoken($uid, $phone);
- if (empty($result['status'])) {
- return backarr(0, $result['msg']);
- }
- $field = ['id', 'phone', 'token'];
- $where = ['id' => $uid];
- $uinfo = $m_u->getInfo($where, $field);
- $uinfo['engageinfo'] = $engageinfo;
- return backarr(1, "登录成功", $uinfo);
- }
- /**
- * 获取招聘人员信息
- *
- * @return void
- * @author wj
- * @date 2022-12-09
- */
- public function getengageinfo($type, $userid)
- {
- $m_eu = new EngageUserModel();
- $euwhere = ['user_id' => $userid, 'et_id' => $type];
- $euinfo = $m_eu->getInfo($euwhere);
- if (empty($euinfo)) {
- return backarr(0, "无用户权限");
- }
- switch ($type) {
- case 1:
- # 套餐配送
- $m_c = new CourierModel();
- $cwhere = ['user_id' => $userid];
- $cinfo = $m_c->getInfo($cwhere);
- if (empty($cinfo)) {
- return backarr(0, "无配送员信息");
- }
- if (1 != $cinfo['is_active']) {
- return backarr(0, "配送员已被禁用");
- }
- $m_mc = new MealcenterModel();
- $mcinfo = $m_mc->getInfo(['id' => $cinfo['center_id']]);
- $cinfo['mcinfo'] = $mcinfo;
- return backarr(1, "配送员已被禁用", $cinfo);
- break;
- default:
- return backarr(0, "类型错误");
- break;
- }
- }
- /**
- * 聘用人员注册
- *
- * @param [type] $arr
- * @return void
- * @author wj
- * @date 2022-12-21
- */
- public function registerengage($arr)
- {
- $fillfields = ['phone', 'passwd', 'name', 'type'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- return backarr(0, "参数缺少");
- }
- }
- $m_u = new UserModel();
- $m_eu = new EngageUserModel();
- $phone = $arr['phone'];
- $name = $arr['name'];
- $type = $arr['type'];
- $passwd = $phone . $arr['passwd'];
- $where = ['name' => $name];
- $uinfo = $m_u->getInfo($where);
- if (!empty($uinfo)) {
- return backarr(0, "登陆名已存在");
- }
- Db::startTrans();
- try {
- //注册
- $passwd = $this->createpasswd($passwd);
- $insertData = [
- 'name' => $name,
- 'phone' => $phone,
- 'passwd' => $passwd,
- 'is_engage' => 1,
- ];
- $uid = $m_u->insertData($insertData);
- if (empty($uid)) {
- throw new \Exception("注册失败");
- }
- $euinsertData = [
- 'user_id' => $uid,
- 'et_id' => $type,
- ];
- $euid = $m_eu->insertData($euinsertData);
- if (empty($euid)) {
- throw new \Exception("聘用人员信息添加失败");
- }
- switch ($type) {
- case 1:
- $m_c = new CourierModel();
- //username 用户姓名
- $fillfields = ['username'];
- foreach ($fillfields as $key => $value) {
- if (!isset($arr[$value]) || empty($arr[$value])) {
- throw new \Exception("参数缺少");
- }
- }
- $username = $arr['username'];
- $cinsertData = [
- 'name' => $username,
- 'telno' => $phone,
- 'is_active' => 1,
- 'user_id' => $uid,
- ];
- $cid = $m_c->insertData($cinsertData);
- if (empty($cid)) {
- throw new \Exception("配送员信息添加失败");
- }
- break;
- default:
- throw new \Exception("聘用人员类型错误");
- break;
- }
- Db::commit();
- $result = $this->getengageinfo($type, $uid);
- if (empty($result['status'])) {
- return backarr(0, $result['msg']);
- }
- $engageinfo = $result['data'];
- $result = $this->changetoken($uid, $phone);
- if (empty($result['status'])) {
- throw new \Exception($result['msg']);
- }
- $field = ['id', 'phone', 'token'];
- $where = ['id' => $uid];
- $uinfo = $m_u->getInfo($where, $field);
- $uinfo['engageinfo'] = $engageinfo;
- return backarr($uinfo, "注册成功", $uinfo);
- } catch (\Exception $e) {
- Db::rollback();
- $msg = $e->getMessage();
- //var_dump($msg, $e->getTraceAsString());
- return backarr(0, $msg);
- }
- }
- }
|