| | |
| | | package com.ruoyi.im.config; |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import com.fasterxml.jackson.annotation.JsonProperty; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | public class UpdateUserInfoRequest { |
| | | private Map<String, Object> bodyData; |
| | | @JsonProperty("avatar") |
| | | private String avatar; |
| | | |
| | | public UpdateUserInfoRequest() { |
| | | bodyData = new HashMap<>(); |
| | | @JsonProperty("name") |
| | | private String name; |
| | | |
| | | @JsonProperty("sign") |
| | | private String sign; |
| | | |
| | | @JsonProperty("email") |
| | | private String email; |
| | | |
| | | @JsonProperty("mobile") |
| | | private String mobile; |
| | | |
| | | // 无参构造函数 |
| | | public UpdateUserInfoRequest() {} |
| | | |
| | | // 全参构造函数(可选) |
| | | public UpdateUserInfoRequest(String avatar, String name, String sign, String email, String mobile) { |
| | | this.avatar = avatar; |
| | | this.name = name; |
| | | this.sign = sign; |
| | | this.email = email; |
| | | this.mobile = mobile; |
| | | } |
| | | |
| | | /** |
| | | * 设置name字段 |
| | | */ |
| | | public UpdateUserInfoRequest setName(String name) { |
| | | if (name != null) { |
| | | bodyData.put("name", name); |
| | | } |
| | | // Getter 和 Setter 方法 |
| | | public String getAvatar() { |
| | | return avatar; |
| | | } |
| | | |
| | | public void setAvatar(String avatar) { |
| | | this.avatar = avatar; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getSign() { |
| | | return sign; |
| | | } |
| | | |
| | | public void setSign(String sign) { |
| | | this.sign = sign; |
| | | } |
| | | |
| | | public String getEmail() { |
| | | return email; |
| | | } |
| | | |
| | | public void setEmail(String email) { |
| | | this.email = email; |
| | | } |
| | | |
| | | public String getMobile() { |
| | | return mobile; |
| | | } |
| | | |
| | | public void setMobile(String mobile) { |
| | | this.mobile = mobile; |
| | | } |
| | | |
| | | // toString 方法(可选,便于调试) |
| | | @Override |
| | | public String toString() { |
| | | return "UpdateUserInfoRequest{" + |
| | | "avatar='" + avatar + '\'' + |
| | | ", name='" + name + '\'' + |
| | | ", sign='" + sign + '\'' + |
| | | ", email='" + email + '\'' + |
| | | ", mobile=" + mobile + |
| | | '}'; |
| | | } |
| | | |
| | | // Builder 模式(可选,便于链式调用) |
| | | public UpdateUserInfoRequest avatar(String avatar) { |
| | | this.avatar = avatar; |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置avatar字段 |
| | | */ |
| | | public UpdateUserInfoRequest setAvatar(String avatar) { |
| | | if (avatar != null) { |
| | | bodyData.put("avatar", avatar); |
| | | } |
| | | public UpdateUserInfoRequest name(String name) { |
| | | this.name = name; |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置sign字段 |
| | | */ |
| | | public UpdateUserInfoRequest setSign(String sign) { |
| | | if (sign != null) { |
| | | bodyData.put("sign", sign); |
| | | } |
| | | public UpdateUserInfoRequest sign(String sign) { |
| | | this.sign = sign; |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置email字段 |
| | | */ |
| | | public UpdateUserInfoRequest setEmail(String email) { |
| | | if (email != null) { |
| | | bodyData.put("email", email); |
| | | } |
| | | public UpdateUserInfoRequest email(String email) { |
| | | this.email = email; |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置birthday字段 |
| | | */ |
| | | public UpdateUserInfoRequest setBirthday(String birthday) { |
| | | if (birthday != null) { |
| | | bodyData.put("birthday", birthday); |
| | | } |
| | | public UpdateUserInfoRequest mobile(String mobile) { |
| | | this.mobile = mobile; |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置mobile字段 |
| | | */ |
| | | public UpdateUserInfoRequest setMobile(String mobile) { |
| | | if (mobile != null) { |
| | | bodyData.put("mobile", mobile); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置gender字段 |
| | | */ |
| | | public UpdateUserInfoRequest setGender(String gender) { |
| | | if (gender != null) { |
| | | bodyData.put("gender", gender); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置extension字段 |
| | | */ |
| | | public UpdateUserInfoRequest setExtension(String extension) { |
| | | if (extension != null) { |
| | | bodyData.put("extension", extension); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 批量设置所有字段 |
| | | */ |
| | | public UpdateUserInfoRequest setAllFields(Map<String, Object> fields) { |
| | | if (fields != null) { |
| | | for (Map.Entry<String, Object> entry : fields.entrySet()) { |
| | | String key = entry.getKey(); |
| | | Object value = entry.getValue(); |
| | | |
| | | if (value != null) { |
| | | switch (key) { |
| | | case "name": |
| | | setName((String) value); |
| | | break; |
| | | case "avatar": |
| | | setAvatar((String) value); |
| | | break; |
| | | case "sign": |
| | | setSign((String) value); |
| | | break; |
| | | case "email": |
| | | setEmail((String) value); |
| | | break; |
| | | case "birthday": |
| | | setBirthday((String) value); |
| | | break; |
| | | case "mobile": |
| | | setMobile((String) value); |
| | | break; |
| | | case "gender": |
| | | setGender((String) value); |
| | | break; |
| | | case "extension": |
| | | setExtension((String) value); |
| | | break; |
| | | default: |
| | | // 忽略未知字段 |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 构建JSON字符串 |
| | | */ |
| | | public String build() { |
| | | JSONObject jsonObject = new JSONObject(bodyData); |
| | | return jsonObject.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取Map形式的数据 |
| | | */ |
| | | public Map<String, Object> getBodyData() { |
| | | return new HashMap<>(bodyData); |
| | | } |
| | | |
| | | /** |
| | | * 清空所有已设置的数据 |
| | | */ |
| | | public void clear() { |
| | | bodyData.clear(); |
| | | } |
| | | |
| | | /** |
| | | * 使用示例 |
| | | */ |
| | | public static void main(String[] args) { |
| | | // 示例1: 只设置部分字段 |
| | | UpdateUserInfoRequest builder = new UpdateUserInfoRequest(); |
| | | String partialBody = builder |
| | | .setName("zhangsan") |
| | | .setEmail("zhangsan@corp.xx.com") |
| | | .setMobile("13312345678") |
| | | .build(); |
| | | System.out.println("部分字段请求体: " + partialBody); |
| | | |
| | | // 示例2: 使用Map批量设置 |
| | | builder.clear(); |
| | | Map<String, Object> fields = new HashMap<>(); |
| | | fields.put("name", "lisi"); |
| | | fields.put("avatar", "http://xxxx.xx/lisi.png"); |
| | | fields.put("sign", "Hello World"); |
| | | fields.put("gender", "1"); |
| | | |
| | | String batchBody = builder.setAllFields(fields).build(); |
| | | System.out.println("批量设置请求体: " + batchBody); |
| | | |
| | | // 示例3: 完全不设置任何字段 |
| | | builder.clear(); |
| | | String emptyBody = builder.build(); |
| | | System.out.println("空请求体: " + emptyBody); |
| | | |
| | | // 示例4: 设置所有字段 |
| | | builder.clear(); |
| | | String fullBody = builder |
| | | .setName("zhangsan") |
| | | .setAvatar("http://xxxx.xx/x.png") |
| | | .setSign("Hello World") |
| | | .setEmail("zhangsan@corp.xx.com") |
| | | .setBirthday("1990-01-01") |
| | | .setMobile("13312345678") |
| | | .setGender("2") |
| | | .setExtension("xxxx") |
| | | .build(); |
| | | System.out.println("完整请求体: " + fullBody); |
| | | } |
| | | } |
| | | |
| | | } |