Browse Source

:bug: #2208【企业微信】 获取打卡人员排班信息接口修复返回结果类结构

longliveh 3 years ago
parent
commit
d3730b361d

+ 1 - 1
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOaService.java

@@ -165,7 +165,7 @@ public interface WxCpOaService {
    * @return 排班表信息
    * @throws WxErrorException the wx error exception
    */
-  WxCpCheckinSchedule getCheckinScheduleList(Date startTime, Date endTime, List<String> userIdList) throws WxErrorException;
+  List<WxCpCheckinSchedule> getCheckinScheduleList(Date startTime, Date endTime, List<String> userIdList) throws WxErrorException;
 
 
 }

+ 3 - 6
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOaServiceImpl.java

@@ -285,7 +285,7 @@ public class WxCpOaServiceImpl implements WxCpOaService {
   }
 
   @Override
-  public WxCpCheckinSchedule getCheckinScheduleList(Date startTime, Date endTime, List<String> userIdList) throws WxErrorException {
+  public List<WxCpCheckinSchedule> getCheckinScheduleList(Date startTime, Date endTime, List<String> userIdList) throws WxErrorException {
     if (startTime == null || endTime == null) {
       throw new WxRuntimeException("starttime and endtime can't be null");
     }
@@ -298,9 +298,6 @@ public class WxCpOaServiceImpl implements WxCpOaService {
     long endTimestamp = endTime.getTime() / 1000L;
     long startTimestamp = startTime.getTime() / 1000L;
 
-    if (endTimestamp - startTimestamp < 0 || endTimestamp - startTimestamp >= MONTH_SECONDS) {
-      throw new WxRuntimeException("获取记录时间跨度不超过一个月");
-    }
 
     JsonObject jsonObject = new JsonObject();
     JsonArray jsonArray = new JsonArray();
@@ -318,8 +315,8 @@ public class WxCpOaServiceImpl implements WxCpOaService {
     JsonObject tmpJson = GsonParser.parse(responseContent);
     return WxCpGsonBuilder.create()
       .fromJson(
-        tmpJson,
-        new TypeToken<WxCpCheckinSchedule>() {
+        tmpJson.get("schedule_list"),
+        new TypeToken<List<WxCpCheckinSchedule>>() {
         }.getType()
       );
   }

+ 81 - 91
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/WxCpCheckinSchedule.java

@@ -13,132 +13,122 @@ import java.util.List;
 @Data
 public class WxCpCheckinSchedule implements Serializable {
 
-  private static final long serialVersionUID = 5399197385827384108L;
+  private static final long serialVersionUID = 5515056962298169806L;
 
   /**
-   * schedule_list 排班表信息
+   * userid 打卡人员userid
    */
-  @SerializedName("schedule_list")
-  private List<UserScheduleInfo> scheduleList;
+  @SerializedName("userid")
+  private String userid;
 
-  @Data
-  public class UserScheduleInfo implements Serializable {
-    private static final long serialVersionUID = 5515056962298169806L;
-    /**
-     * userid 打卡人员userid
-     */
-    @SerializedName("userid")
-    private String userid;
+  /**
+   * yearmonth 排班表月份,格式为年月,如202011
+   */
+  @SerializedName("yearmonth")
+  private Integer yearmonth;
 
-    /**
-     * yearmonth 排班表月份,格式为年月,如202011
-     */
-    @SerializedName("yearmonth")
-    private Integer yearmonth;
+  /**
+   * groupid 打卡规则id
+   */
+  @SerializedName("groupid")
+  private Integer groupid;
 
-    /**
-     * groupid 打卡规则id
-     */
-    @SerializedName("groupid")
-    private Integer groupid;
+  /**
+   * groupname 打卡规则名
+   */
+  @SerializedName("groupname")
+  private String groupName;
 
-    /**
-     * groupname 打卡规则名
-     */
-    @SerializedName("groupname")
-    private String groupName;
+  /**
+   * schedule 个人排班信息
+   */
+  @SerializedName("schedule")
+  private UserSchedule schedule;
 
+  @Data
+  public class UserSchedule implements Serializable {
+    private static final long serialVersionUID = 9138985222324576857L;
     /**
-     * schedule 个人排班信息
+     * scheduleList 个人排班信息
      */
-    @SerializedName("schedule")
-    private UserSchedule schedule;
+    @SerializedName("scheduleList")
+    private List<Schedule> scheduleList;
 
     @Data
-    public class UserSchedule implements Serializable {
-      private static final long serialVersionUID = 9138985222324576857L;
+    public class Schedule implements Serializable {
+
+      private static final long serialVersionUID = 8344153237512495728L;
+
       /**
-       * scheduleList 个人排班表信息
+       * day 排班日期,为表示当月第几天的数字
        */
-      @SerializedName("scheduleList")
-      private List<Schedule> scheduleList;
+      @SerializedName("day")
+      private Integer day;
 
-      @Data
-      public class Schedule implements Serializable{
+      /**
+       * schedule_info 排班日期,为表示当月第几天的数字
+       */
+      @SerializedName("schedule_info")
+      private ScheduleInfo scheduleInfo;
 
-        private static final long serialVersionUID = 8344153237512495728L;
+      @Data
+      public class ScheduleInfo implements Serializable {
+        private static final long serialVersionUID = 1317096341116256963L;
+        /**
+         * schedule_id 当日安排班次id,班次id也可在打卡规则中查询获得
+         */
+        @SerializedName("schedule_id")
+        private Integer scheduleId;
 
         /**
-         * day 排班日期,为表示当月第几天的数字
+         * schedule_name 排班日期,为表示当月第几天的数字
          */
-        @SerializedName("day")
-        private Integer day;
+        @SerializedName("schedule_name")
+        private String scheduleName;
 
         /**
-         * schedule_info 排班日期,为表示当月第几天的数字
+         * time_section 排班日期,为表示当月第几天的数字
          */
-        @SerializedName("schedule_info")
-        private ScheduleInfo scheduleInfo;
+        @SerializedName("time_section")
+        private List<TimeSection> timeSection;
+
 
         @Data
-        public class ScheduleInfo implements Serializable {
-          private static final long serialVersionUID = 1317096341116256963L;
+        public class TimeSection implements Serializable {
+          private static final long serialVersionUID = -3447467962751285748L;
           /**
-           * schedule_id 当日安排班次id,班次id也可在打卡规则中查询获得
+           * id 时段id,为班次中某一堆上下班时间组合的id
            */
-          @SerializedName("schedule_id")
-          private Integer scheduleId;
+          @SerializedName("id")
+          private Integer id;
 
           /**
-           * schedule_name 排班日期,为表示当月第几天的数字
+           * work_sec 上班时间。距当天00:00的秒数
            */
-          @SerializedName("schedule_name")
-          private String scheduleName;
+          @SerializedName("work_sec")
+          private Integer workSec;
 
           /**
-           * time_section 排班日期,为表示当月第几天的数字
+           * off_work_sec 下班时间。距当天00:00的秒数
            */
-          @SerializedName("time_section")
-          private List<TimeSection> timeSection;
-
-
-          @Data
-          public class TimeSection implements Serializable {
-            private static final long serialVersionUID = -3447467962751285748L;
-            /**
-             * id 时段id,为班次中某一堆上下班时间组合的id
-             */
-            @SerializedName("id")
-            private Integer id;
-
-            /**
-             * work_sec 上班时间。距当天00:00的秒数
-             */
-            @SerializedName("work_sec")
-            private Integer workSec;
-
-            /**
-             * off_work_sec 下班时间。距当天00:00的秒数
-             */
-            @SerializedName("off_work_sec")
-            private Integer offWorkSec;
-
-            /**
-             * remind_work_sec 上班提醒时间。距当天00:00的秒数
-             */
-            @SerializedName("remind_work_sec")
-            private Integer remindWorkSec;
-
-            /**
-             * remind_off_work_sec 下班提醒时间。距当天00:00的秒数
-             */
-            @SerializedName("remind_off_work_sec")
-            private Integer remindOffWorkSec;
-          }
+          @SerializedName("off_work_sec")
+          private Integer offWorkSec;
+
+          /**
+           * remind_work_sec 上班提醒时间。距当天00:00的秒数
+           */
+          @SerializedName("remind_work_sec")
+          private Integer remindWorkSec;
+
+          /**
+           * remind_off_work_sec 下班提醒时间。距当天00:00的秒数
+           */
+          @SerializedName("remind_off_work_sec")
+          private Integer remindOffWorkSec;
         }
       }
+    }
 
 
-    }
   }
 }

+ 1 - 1
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpOaServiceImplTest.java

@@ -85,7 +85,7 @@ public class WxCpOaServiceImplTest {
     Date startTime = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.parse("2021-07-01");
     Date endTime = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.parse("2021-07-31");
 
-    WxCpCheckinSchedule results = wxService.getOaService()
+    List<WxCpCheckinSchedule> results = wxService.getOaService()
       .getCheckinScheduleList(startTime, endTime, Lists.newArrayList("12003648"));
 
     assertThat(results).isNotNull();