Example #1
0
 /**
  * 用户修改信息
  * 
  * @param array $params 用户修改的信息
  * @return array
  */
 public function modify($params)
 {
     $date = [];
     if (empty($params['open_id'])) {
         return responseArray(1001, 'id_not_find', '用户open_id丢失');
     }
     $genderArr = [UserBaseInfo::GENDER_UNKNOWN, UserBaseInfo::GENDER_MALE, UserBaseInfo::GENDER_FEMALE];
     $date['birthday'] = '';
     if (isset($params['year'], $params['month'], $params['day']) && $params['year'] && $params['month'] && $params['day']) {
         if (!is_numeric($params['year'])) {
             return responseArray(2002, 'year_illegal_modify', '年份非法修改');
         }
         $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) {
                 $date['birthday'] = $params['year'] . '-' . $month . '-' . $day;
             } else {
                 return responseArray(2003, 'date_not_whithin_specified_time', '日期不在规定时间之内');
             }
         } else {
             return responseArray(2004, 'date_illegal_modify', '非法日期');
         }
     }
     foreach ($params as $key => $value) {
         $date[$key] = $value;
         if ($key === 'username') {
             $preg = '/^((?!^\\d+$)(?!^\\-+$)(?!^\\_+$)[\\x{4e00}-\\x{9fa5}a-zA-Z0-9\\_\\-]{2,20})$/u';
             $res = preg_match($preg, $value);
             if (!$res) {
                 return responseArray(2101, 'username_format_error', '昵称格式错误');
             }
         }
         if ($key === 'gender') {
             if (!in_array($value, $genderArr)) {
                 return responseArray(2201, 'sex_illegally_modified', '性别非法修改');
             }
         }
         if ($key === 'city' && !empty($value)) {
             $district = new District();
             $city = $district->getByName($value);
             if (!$city) {
                 return responseArray(2104, 'city_not_found', '城市不存在');
             }
             $date[$key] = $city['id'];
         }
         if ($key === 'industry' && !empty($value)) {
             $industry = \Yii::$app->util->loadConfig('user-industry', '/platform_i/config/');
             if (!isset($industry[$value])) {
                 return responseArray(2103, 'industry_information_not_exist', '行业信息不存在');
             }
         }
         if ($key === 'company') {
             $comStrLength = mb_strlen($value, 'utf8');
             if ($comStrLength < 0 || $comStrLength > 50) {
                 return responseArray(2105, 'company_too_long', '公司名称过长');
             }
             $date['company'] = strip_tags($value);
         }
         if ($key === 'position') {
             $posStrLength = mb_strlen($value, 'utf8');
             if ($posStrLength < 0 || $posStrLength > 30) {
                 return responseArray(2016, 'job_title_too_long', '就任职位名称过长');
             }
             $date['position'] = strip_tags($value);
         }
         if ($key === 'avatar') {
             $avatar = new Avatar();
             $picture = $avatar->uploadByUrl($value);
             if ($picture === 1) {
                 return responseArray(1701, 'type_not_allowed', '上传图片类型不允许');
             }
             $date['avatar'] = $picture;
         }
     }
     unset($date['year']);
     unset($date['month']);
     unset($date['day']);
     $date['update_time'] = time();
     $user = UserBaseInfo::find()->where('open_id=:open_id', [':open_id' => $params['open_id']])->one();
     if (!$user) {
         return responseArray(1101, 'user_not_found', '没找到用户');
     }
     $field = ['password', 'password_salt', 'mobile', 'email'];
     $attributes = $user->getAttributes();
     foreach ($date as $key => $value) {
         if ($value === '' || in_array($key, $field) || !array_key_exists($key, $attributes)) {
             unset($date[$key]);
         } else {
             $user->{$key} = $value;
         }
     }
     if (!$user->username) {
         $user->username = UserBaseInfo::genUsername($user->id);
     }
     if ($user->save()) {
         $res = array_merge($this->generateToken(), $date);
         $res['realname'] = $user->realname;
         return responseArray(0, 'success', '修改用户信息成功', $res);
     } else {
         return responseArray(2106, 'modify_password_failure', '修改用户信息失败');
     }
 }