deason 2 jaren geleden
bovenliggende
commit
25f4bde094

+ 68 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/reset_student_password/ResetStudentPasswordTask.java

@@ -0,0 +1,68 @@
+package cn.com.qmth.examcloud.tool.service.reset_student_password;
+
+import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
+import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.reset_student_password.vo.StudentVO;
+import cn.com.qmth.examcloud.tool.utils.HttpHelper;
+import cn.com.qmth.examcloud.tool.utils.JsonMapper;
+import cn.com.qmth.examcloud.tool.vo.PageInfo;
+import cn.com.qmth.examcloud.tool.vo.User;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.apache.commons.collections4.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class ResetStudentPasswordTask {
+
+    private final static Logger log = LoggerFactory.getLogger(ResetStudentPasswordTask.class);
+
+    @Autowired
+    private SysProperty sysProperty;
+
+    @Autowired
+    private CommonService commonService;
+
+    public void start(TaskEntity task) {
+        User user = new User();
+        user.setKey("U_C_0_9");
+        user.setToken("c7377229debb4c6594c071a57e9d983f");
+        this.execute(user, 0L);
+    }
+
+    private void execute(User user, Long rootOrgId) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", user.getKey());
+        headers.put("token", user.getToken());
+
+        JsonMapper jsonMapper = new JsonMapper();
+        int sum = 0, pageNo = 0, pageSize = 100;
+
+        String url = sysProperty.getServerUrl() + "/api/ecs_core/student/studentPage/%s/%s?rootOrgId=%s&identityNumber=&studentCode=&name=";
+        while (true) {
+            String json = HttpHelper.get(String.format(url, pageNo, pageSize, rootOrgId), headers, null);
+
+            PageInfo<StudentVO> page = jsonMapper.parseJson(json, new TypeReference<PageInfo<StudentVO>>() {
+            });
+            if (page == null || CollectionUtils.isEmpty(page.getList())) {
+                break;
+            }
+
+            for (StudentVO student : page.getList()) {
+                HttpHelper.put(sysProperty.getServerUrl() + "/api/ecs_core/student/resetPass/" + student.getId(), headers, null);
+            }
+
+            pageNo++;
+            sum += page.getList().size();
+            float rate = sum * 100f / page.getTotal();
+            log.info("rootOrgId:{} 已重置学生密码数:{} 进度:{}%", rootOrgId, sum, rate);
+        }
+    }
+
+}

+ 31 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/reset_student_password/vo/StudentVO.java

@@ -0,0 +1,31 @@
+package cn.com.qmth.examcloud.tool.service.reset_student_password.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+@Setter
+@Getter
+public class StudentVO implements Serializable {
+
+    private static final long serialVersionUID = -4647126917276922968L;
+
+    private Long id;
+
+    /**
+     * 学生姓名
+     */
+    private String name;
+
+    /**
+     * 身份证号
+     */
+    private String identityNumber;
+
+    /**
+     * 照片
+     */
+    private String photoPath;
+
+}

+ 14 - 1
src/main/java/cn/com/qmth/examcloud/tool/utils/HttpHelper.java

@@ -22,7 +22,8 @@ public class HttpHelper {
         String urlParams = toUrlParams(params);
         log.debug("[GET] {}, headers: {}, params: {}", url, headers, urlParams);
 
-        Request.Builder builder = new Request.Builder().get().url(url + "?" + urlParams);
+        String and = url.indexOf("?") < 1 ? "?" : "&";
+        Request.Builder builder = new Request.Builder().get().url(url + and + urlParams);
         return call(url, headers, builder);
     }
 
@@ -38,6 +39,18 @@ public class HttpHelper {
         return call(url, headers, builder);
     }
 
+    public static String put(String url, Map<String, String> headers, Map<String, Object> params) {
+        String jsonParams = "{}";
+        if (MapUtils.isNotEmpty(params)) {
+            jsonParams = new JsonMapper().toJson(params);
+        }
+        log.debug("[PUT] {}, headers: {}, params: {}", url, headers, jsonParams);
+
+        RequestBody requestBody = FormBody.create(jsonParams, MediaType.parse(Constants.CONTENT_TYPE_JSON));
+        Request.Builder builder = new Request.Builder().put(requestBody).url(url);
+        return call(url, headers, builder);
+    }
+
     private static String call(String url, Map<String, String> headers, Request.Builder builder) {
         if (MapUtils.isNotEmpty(headers)) {
             for (Map.Entry<String, String> entry : headers.entrySet()) {

+ 32 - 0
src/main/java/cn/com/qmth/examcloud/tool/vo/PageInfo.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.examcloud.tool.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Setter
+@Getter
+public class PageInfo<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private List<T> list;
+
+    private int limit;//每页条数
+
+    private int index;//当前第几页
+
+    private long total;//总条数
+
+    private long size;//当前页的数量
+
+    private long pages;//总页数
+
+    public boolean hasNext(int pageNo, int pageSize) {
+        int totalPages = (int) Math.ceil((double) this.total / (double) pageSize);
+        return pageNo + 1 < totalPages;
+    }
+
+}

+ 4 - 0
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.tool;
 
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.reset_student_password.ResetStudentPasswordTask;
 import cn.com.qmth.examcloud.tool.vo.User;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -19,6 +20,9 @@ public class ToolTest {
     @Autowired
     private SysProperty sysProperty;
 
+    @Autowired
+    private ResetStudentPasswordTask resetStudentPasswordTask;
+
     @Test
     public void demo() throws Exception {
         // testLogin();