/** * 修改个人信息业务处理 * * @param array $params * @return array */ public function personalInfo($params) { $util = Yii::$app->util; if (!isset($params['id'])) { return $util->responseArray(1101, 'userid_params_missing', '用户ID参数缺失'); } $id = intval($params['id']); unset($params['id']); if ($id <= 0) { return $util->responseArray(2101, 'illegal_userid_params', '用户ID参数非法'); } if (empty($params)) { return $util->responseArray(1100, 'necessary_params_missing', '缺少必要参数'); } $key = array_keys($params)[0]; $allows = ['avatar' => ['1101' => ['tip' => '用户头像参数缺失', 'msg' => 'avatar_params_missing'], '2101' => ['tip' => '用户头像参数非法', 'msg' => 'illegal_avatar_params']], 'email' => ['1101' => ['tip' => '用户邮箱参数缺失', 'msg' => 'email_params_missing'], '2101' => ['tip' => '用户邮箱参数非法', 'msg' => 'illegal_email_params'], 'pattern' => function ($email) use($util) { return $util->regularEmail($email); }], 'username' => ['1101' => ['tip' => '用户昵称参数缺失', 'msg' => 'nickname_params_missing'], '2101' => ['tip' => '用户昵称参数非法', 'msg' => 'illegal_nickname_params'], 'pattern' => function ($username) use($util) { $length = $util->utf8Strlen($username); return $length > 6 ? false : true; }], 'realname' => ['1101' => ['tip' => '用户姓名参数缺失', 'msg' => 'realname_params_missing'], '2101' => ['tip' => '用户姓名参数非法', 'msg' => 'illegal_realname_params']], 'contact_phone' => ['1101' => ['tip' => '用户联系方式参数缺失', 'msg' => 'contactphone_params_missing'], '2101' => ['tip' => '用户联系方式参数非法', 'msg' => 'illegal_contactphone_params'], 'pattern' => function ($phone) use($util) { return $util->regularMobile($phone); }], 'gender' => ['1101' => ['tip' => '用户性别参数缺失', 'msg' => 'gender_params_missing'], '2101' => ['tip' => '用户性别参数非法', 'msg' => 'illegal_gender_params'], 'pattern' => function ($gender) { $sex = [0, 1, 2]; return in_array($gender, $sex); }], 'personality_sig' => ['1101' => ['tip' => '用户个性签名参数缺失', 'msg' => 'signature_params_missing'], '2101' => ['tip' => '用户个性签名内容过长', 'msg' => 'signature_too_long'], 'pattern' => function ($signature) use($util) { $length = $util->utf8Strlen($signature); return $length > 300 ? false : true; }], 'city' => ['1101' => ['tip' => '城市ID参数缺失', 'msg' => 'cityid_params_missing'], '2101' => ['tip' => '城市ID参数非法', 'msg' => 'illegal_cityid_params'], 'pattern' => function ($city) use($util) { $county = District::getById($city, false); if (!$county) { return $util->responseArray(6102, 'county_info_notexists', '所选区/县信息不存在'); } if ($county['level'] != District::AREA_LEVEL_COUNTY) { return $util->responseArray(6103, 'not_belong_county', '所选区/县ID不属于区/县'); } return true; }]]; if (!array_key_exists($key, $allows)) { return $util->responseArray(1100, 'necessary_params_missing', '缺少必要参数'); } $info = $params[$key]; if ($info === '' || $info === false) { return $util->responseArray(1101, $allows[$key]['1101']['msg'], $allows[$key]['1101']['tip']); } if (isset($allows[$key]['pattern'])) { $pattern = $allows[$key]['pattern']; if ($pattern instanceof \Closure) { $rt = call_user_func($pattern, $info); if (is_array($rt)) { return $rt; } if (!$rt) { return $util->responseArray(2101, $allows[$key]['2101']['msg'], $allows[$key]['2101']['tip']); } } } return $util->responseArray(0, '', '', ['id' => $id, $key => $info]); }
/** * 修改个人信息 */ public function actionModify() { $this->layout = false; if (!$this->isLogin) { $this->redirect(Url::toRoute('user/login')); return false; } $mUser = new UserBaseInfo(); //获取登录用户信息 //$user = $mUser::getLoginUser(); $params = Yii::$app->request->post(); $params = array_map('trim', $params); $mAvatar = new Avatar(); $ocutpos = json_decode($params['ocutpos'], true); $options = ['pointer' => [$ocutpos['x'], $ocutpos['y']], 'size' => $ocutpos['w']]; try { $avatar = $mAvatar->upload('avatarfile', $options); if (!empty($avatar)) { //存储图片 $mPicture = new UserImage(); $datas = ['uid' => $params['id'], 'url' => $avatar, 'type' => UserImage::USER_AVATAR, 'status' => UserImage::STATUS_USABLE]; $picture = $mPicture->store($datas); } else { //将失败的信息记录到日志 FileLogger::getInstance(date('Ymd') . '_uc_profile.log')->writeOne($params['oavatar'], Logger::LEVEL_ERROR, 'image'); } } catch (\Exception $e) { // throw new \Exception('上传图片失败,请重试!!!'); } $session = Yii::$app->session; $cookies = Yii::$app->getResponse()->cookies; //session更新 $tmp = $mUser->getUserInfoCache(); if ($avatar) { $data['avatar'] = $avatar; if ($tmp) { $tmp['avatar'] = $avatar; } $cookie = new Cookie(['name' => 'avatar', 'value' => $avatar]); $cookies->add($cookie); } $tmp['name'] = $params['username']; $session[UserBaseInfo::SESSION_KEY_USER] = $tmp; //cookie更新 $cookie = new Cookie(['name' => 'avatar', 'value' => $avatar]); $cookie = new Cookie(['name' => 'username', 'value' => $params['username']]); $cookies->add($cookie); //4-20个字符,可全部由字母组成,或数字、字母、“_”、“-”任意两种以上组合 $preg = '/^((?!^\\d+$)(?!^\\-+$)(?!^\\_+$)[\\x{4e00}-\\x{9fa5}a-zA-Z0-9\\_\\-]{2,20})$/u'; $res = preg_match($preg, $params['username']); if (!$res) { echo "<script>alert('4-20个字符,可全部由字母组成,或数字、字母、“_”、“-”任意两种以上组合');history.go(-1);</script>"; return false; } $data['id'] = $params['id']; if (!empty($params['username'])) { $data['username'] = strip_tags($params['username']); } else { echo "<script>alert('昵称不能为空');history.go(-1);</script>"; return false; } $relname = preg_match($preg, $params['realname']); if (!$relname) { echo "<script>alert('4-20个字符,可全部由字母组成,或数字、字母、“_”、“-”任意两种以上组合');history.go(-1);</script>"; return false; } if (!empty($params['realname'])) { $data['realname'] = strip_tags($params['realname']); } else { echo "<script>alert('昵称不能为空');history.go(-1);</script>"; return false; } $data['gender'] = intval($params['gender']); $genderArr = [UserBaseInfo::GENDER_UNKNOWN, UserBaseInfo::GENDER_MALE, UserBaseInfo::GENDER_FEMALE]; if (!in_array($data['gender'], $genderArr)) { echo "<script>alert('性别非法修改');history.go(-1);</script>"; return false; } if (!is_numeric($params['year'])) { echo "<script>alert('年份非法修改');history.go(-1);</script>"; return false; } $month = str_pad(intval($params['month']), 2, "0", STR_PAD_LEFT); $day = str_pad(intval($params['day']), 2, "0", STR_PAD_LEFT); if (checkdate($month, $day, $params['year'])) { if ($params['year'] <= date('Y', time()) && $params['year'] >= 1950) { $data['birthday'] = $params['year'] . '-' . $month . '-' . $day; } else { echo "<script>alert('日期不在规定时间之内');history.go(-1);</script>"; return false; } } else { echo "<script>alert('非法日期');history.go(-1);</script>"; return false; } $params['province'] = intval($params['province']); $params['city'] = intval($params['city']); if (!$params['province']) { echo "<script>alert('请选择省');history.go(-1);</script>"; return false; } if (!$params['city']) { echo "<script>alert('请选择市');history.go(-1);</script>"; return false; } $params['province'] = intval($params['province']); $params['city'] = intval($params['city']); $region = District::getById($params['city'], true); if (!$region) { echo "<script>alert('城市信息不存在');history.go(-1);</script>"; return false; } $data['city'] = $params['city']; //用户行业配置 $industry = Yii::$app->util->loadConfig('user-industry', '/platform_i/config/'); $data['industry'] = $params['industry']; if (!isset($industry[$data['industry']])) { echo "<script>alert('行业信息不存在');history.go(-1);</script>"; return false; } $comStrLength = mb_strlen($params['company'], 'utf8'); $posStrLength = mb_strlen($params['position'], 'utf8'); if ($comStrLength < 0 || $comStrLength > 50) { echo "<script>alert('公司名称填写仅限于50个字以内');history.go(-1);</script>"; return false; } if ($posStrLength < 0 || $posStrLength > 30) { echo "<script>alert('职位填写仅限于30个字以内');history.go(-1);</script>"; return false; } $data['company'] = strip_tags($params['company']); $data['position'] = strip_tags($params['position']); $data['gender'] = $params['gender']; $this->syncProfile($data); //根据id获取用户修改前的信息 $oriUser = $mUser->getUserById($tmp['id'], UserBaseInfo::USER_NORMAL_STATUS, true); array_pop($oriUser); if ($mUser->updateUserById($data)) { //将成功信息记录到日志 $this->profileLog($oriUser, $data); echo "<script type='text/javascript'>window.location.href='" . Url::toRoute('user/profile') . "'</script>"; } else { //将失败的信息记录到日志 FileLogger::getInstance(date('Ymd') . '_uc_profile.log')->writeOne($params, Logger::LEVEL_ERROR, 'profile'); echo "<script type='text/javascript'>alert('修改失败');history.go(-1);</script>"; return false; } }
/** * 用户地址接口 */ public function actionInfo($id) { $util = Yii::$app->util; $request = Yii::$app->getRequest(); $params = Yii::$app->request->get(); //判断用户是否登录 if (!UserBaseInfo::isLogin()) { $util->formatResData(1202, 'please_login', ['msg' => '请你登录']); } $id = intval($id); //判断参数的是否为空 if (!$id) { $util->formatResData(1101, 'address_param_missing', ['msg' => '地址信息参数缺失']); } //判断是否是Ajax请求 if (!$request->getIsAjax($id)) { $util->formatResData(1301, 'illegal_request', ['msg' => '非法请求']); } $address = new Address(); $data = $address->getByUserId($id); //通过地址ID获取对应的地址信息 $data = $address->getById($id); if (!$data) { $util->formatResData(1102, 'id_not_exists', ['msg' => 'ID信息不存在']); } //从session或cookie中获取用户id $userId = UserBaseInfo::getUserId(); if ($data['user_id'] != $userId) { $util->formatResData(1103, 'can_not_operate_other\'s_order_message', ['msg' => '不能操作其他人的订单信息']); } if (!$data['post_code']) { unset($data['post_code']); } //根据子区域id获取区域信息 $region = District::getById($data['county'], true); if (!$region) { $util->formatResData(1104, 'region_message_not_exists', ['msg' => '该子区域ID对应的区域信息不存在']); } $result = ['city' => $region['upid'], 'province' => $region['parent']['upid']]; $result = array_merge($data, $result); if ($result) { $util->formatResData(0, 'success', $result); } else { $util->formatResData(1201, 'get_address_fail', ['msg' => '获取地区信息失败']); } }