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 bodyData; public UpdateUserInfoRequest() { bodyData = new HashMap<>(); } /** * 设置name字段 */ public UpdateUserInfoRequest setName(String name) { if (name != null) { bodyData.put("name", name); } return this; } /** * 设置avatar字段 */ public UpdateUserInfoRequest setAvatar(String avatar) { if (avatar != null) { bodyData.put("avatar", avatar); } return this; } /** * 设置sign字段 */ public UpdateUserInfoRequest setSign(String sign) { if (sign != null) { bodyData.put("sign", sign); } return this; } /** * 设置email字段 */ public UpdateUserInfoRequest setEmail(String email) { if (email != null) { bodyData.put("email", email); } return this; } /** * 设置birthday字段 */ public UpdateUserInfoRequest setBirthday(String birthday) { if (birthday != null) { bodyData.put("birthday", birthday); } 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 fields) { if (fields != null) { for (Map.Entry 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 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 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); } }