diff --git a/weixin-java-cp/pom.xml b/weixin-java-cp/pom.xml
index 4d5d172ed..a75b7b034 100644
--- a/weixin-java-cp/pom.xml
+++ b/weixin-java-cp/pom.xml
@@ -125,6 +125,15 @@
src/test/resources/testng.xml
+
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+ --add-opens java.base/java.io=ALL-UNNAMED
+ --add-opens java.base/java.security=ALL-UNNAMED
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.management/javax.management=ALL-UNNAMED
+ --add-opens java.naming/javax.naming=ALL-UNNAMED
+
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java
index 971e5958d..bb4d3a60a 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java
@@ -5,10 +5,9 @@
import lombok.NoArgsConstructor;
import java.io.Serializable;
-import java.util.List;
/**
- * 人事助手-员工档案数据(单个员工).
+ * 人事助手-员工档案数据(单个字段).
*
* @author leejoker created on 2024-01-01
*/
@@ -18,19 +17,98 @@ public class WxCpHrEmployeeFieldData implements Serializable {
private static final long serialVersionUID = 4593693598671765396L;
/**
- * 员工userid.
+ * 字段ID.
*/
+ @SerializedName("fieldid")
+ private Integer fieldId;
+
+ /**
+ * 子字段索引.
+ */
+ @SerializedName("sub_idx")
+ private Integer subIdx;
+
+ /**
+ * 结果状态,1表示成功.
+ */
+ @SerializedName("result")
+ private Integer result;
+
+ /**
+ * 值类型:1-字符串,2-uint64,3-uint32,4-int64,5-mobile.
+ */
+ @SerializedName("value_type")
+ private Integer valueType;
+
+ /**
+ * 字符串值(value_type=1时使用).
+ */
+ @SerializedName("value_string")
+ private String valueString;
+
+ /**
+ * 无符号32位整数值(value_type=3时使用).
+ */
+ @SerializedName("value_uint32")
+ private Long valueUint32;
+
+ /**
+ * 有符号64位整数值(value_type=4时使用).
+ */
+ @SerializedName("value_int64")
+ private Long valueInt64;
+
+ /**
+ * 无符号64位整数值(value_type=2时使用).
+ */
+ @SerializedName("value_uint64")
+ private Long valueUint64;
+
+ /**
+ * 手机号值(value_type=5时使用).
+ */
+ @SerializedName("value_mobile")
+ private MobileValue valueMobile;
+
+ /**
+ * 手机号值.
+ */
+ @Data
+ @NoArgsConstructor
+ public static class MobileValue implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 国家代码.
+ */
+ @SerializedName("value_country_code")
+ private String valueCountryCode;
+
+ /**
+ * 手机号.
+ */
+ @SerializedName("value_mobile")
+ private String valueMobile;
+ }
+
+ /**
+ * 员工userid(兼容旧版本,实际API不返回此字段).
+ * @deprecated 此字段在API响应中不存在
+ */
+ @Deprecated
@SerializedName("userid")
private String userid;
/**
- * 字段数据列表.
+ * 字段数据列表(兼容旧版本,实际API不返回此字段).
+ * @deprecated 此字段在API响应中不存在
*/
+ @Deprecated
@SerializedName("field_list")
- private List fieldList;
+ private java.util.List fieldList;
/**
- * 字段数据项.
+ * 字段数据项(用于更新员工档案).
*/
@Data
@NoArgsConstructor
@@ -38,15 +116,21 @@ public static class FieldItem implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * 字段key.
+ * 字段ID.
*/
- @SerializedName("field_key")
- private String fieldKey;
+ @SerializedName("fieldid")
+ private Integer fieldId;
/**
- * 字段值.
+ * 字段值对象(推荐使用,支持多种类型).
*/
@SerializedName("field_value")
private WxCpHrEmployeeFieldValue fieldValue;
+
+ /**
+ * 字符串值(简化用法,适用于文本类型字段).
+ */
+ @SerializedName("value_string")
+ private String valueString;
}
}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java
index 07e286c2e..f8e763c29 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java
@@ -21,10 +21,28 @@ public class WxCpHrEmployeeFieldDataResp extends WxCpBaseResp {
private static final long serialVersionUID = 6593693598671765396L;
/**
- * 员工档案数据列表.
+ * 字段数据列表(API实际返回field_info).
*/
- @SerializedName("employee_field_list")
- private List employeeFieldList;
+ @SerializedName("field_info")
+ private List fieldInfoList;
+
+ /**
+ * 员工档案数据列表(兼容旧版本方法名).
+ * @deprecated 请使用 getFieldInfoList()
+ */
+ @Deprecated
+ public List getEmployeeFieldList() {
+ return this.fieldInfoList;
+ }
+
+ /**
+ * 员工档案数据列表(兼容旧版本方法名).
+ * @deprecated 请使用 setFieldInfoList()
+ */
+ @Deprecated
+ public void setEmployeeFieldList(List employeeFieldList) {
+ this.fieldInfoList = employeeFieldList;
+ }
/**
* From json wx cp hr employee field data resp.
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java
index e355d8cc6..3db3f2057 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java
@@ -18,30 +18,43 @@ public class WxCpHrEmployeeFieldInfo implements Serializable {
private static final long serialVersionUID = 2593693598671765396L;
/**
- * 字段key.
+ * 字段ID.
*/
- @SerializedName("field_key")
- private String fieldKey;
-
- /**
- * 字段英文名称.
- */
- @SerializedName("field_en_name")
- private String fieldEnName;
+ @SerializedName("fieldid")
+ private Integer fieldId;
/**
- * 字段中文名称.
+ * 字段名称.
*/
- @SerializedName("field_zh_name")
- private String fieldZhName;
+ @SerializedName("field_name")
+ private String fieldName;
/**
* 字段类型.
- * 具体取值参见 {@link WxCpHrFieldType}
+ * 1: 文本
+ * 2: 单选/多选
+ * 3: 日期
*/
@SerializedName("field_type")
private Integer fieldType;
+ /**
+ * 是否必填.
+ */
+ @SerializedName("is_must")
+ private Boolean isMust;
+
+ /**
+ * 值类型.
+ * 1: 字符串
+ * 2: uint64
+ * 3: uint32
+ * 4: int64
+ * 5: mobile
+ */
+ @SerializedName("value_type")
+ private Integer valueType;
+
/**
* 获取字段类型枚举.
*
@@ -52,22 +65,79 @@ public WxCpHrFieldType getFieldTypeEnum() {
}
/**
- * 是否系统字段.
- * 0: 否
- * 1: 是
+ * 选项列表(单选/多选字段专用).
+ */
+ @SerializedName("option_list")
+ private List