Browse Source

sup 批量同步考场

he2802 3 years ago
parent
commit
db114ee9e1

+ 67 - 17
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/wisdom/SignatureUtil.java

@@ -34,6 +34,21 @@ public class SignatureUtil {
         }
         return false;
     }
+
+    /**
+     * 校验签名是否有效
+     *
+     * @param paramMapList
+     * @param key
+     * @param signature
+     * @return
+     */
+    public static boolean isSignatureValid(List<Map<String, Object>> paramMapList, String key,
+                                           String signature) throws SignatureException {
+        Map<String, Object> paramMap = getMap(paramMapList, key);
+        return isSignatureValid(paramMap, key, signature);
+    }
+
     /**
      * 创建签名字符串
      *
@@ -42,8 +57,7 @@ public class SignatureUtil {
      * @return
      * @throws SignatureException
      */
-    public static String createSignature(Map<String, Object> paramMap, String key)
-            throws SignatureException {
+    public static String createSignature(Map<String, Object> paramMap, String key) throws SignatureException {
         String data = getParamString(paramMap);
         try {
             SecretKeySpec signingKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA512");
@@ -61,6 +75,20 @@ public class SignatureUtil {
             throw new SignatureException("unsupported encoding.", e);
         }
     }
+
+    /**
+     * 创建签名字符串
+     *
+     * @param paramMapList
+     * @param key
+     * @return
+     * @throws SignatureException
+     */
+    public static String createSignature(List<Map<String, Object>> paramMapList, String key) throws SignatureException {
+        Map<String, Object> paramMap = getMap(paramMapList, key);
+        return createSignature(paramMap, key);
+    }
+
     public static String getParamString(Map<String, Object> paramMap) {
         if (paramMap == null || paramMap.isEmpty()) {
             return null;
@@ -80,28 +108,50 @@ public class SignatureUtil {
                 }
                 buffer.append("&").append(key).append("=").append(value);
             }
+
         }
         return buffer.substring(1);
     }
 
-
-    /**
-     * 创建签名字符串
-     *
-     * @param paramMapList
-     * @param key
-     * @return
-     * @throws SignatureException
-     */
-    public static String createSignature(List<Map<String, Object>> paramMapList, String key) throws
-            SignatureException {
-        Map<String, Object> paramMap = getMap(paramMapList, key);
-        return createSignature(paramMap, key);
-    }
-
     private static Map<String, Object> getMap(List<Map<String, Object>> paramMapList, String key){
         Map<String, Object> paramMap = new HashMap<>();
         paramMap.put(key, paramMapList);
+
         return paramMap;
     }
+
+    public static void main(String[] args) throws Exception {
+        //参数
+//        Map<String, Object> paramMap = new HashMap<>();
+//
+//        String key = "ZZ-YXT-GZ-20220820-0001";
+//
+//        paramMap.put("appid", key);
+//        paramMap.put("appname", "中正云学堂");
+//        paramMap.put("tenantId", 10001);
+//
+//        //服务端返回的签名
+//        String signature = createSignature(paramMap, key);
+//
+//        System.out.println("sign:"+ signature);
+//
+//        boolean signatureValid = isSignatureValid(paramMap, key, signature);
+//
+//        System.out.println("valid:"+ signatureValid);
+//
+//        paramMap.put("l", "30");
+//
+//        boolean signatureValid1 = isSignatureValid(paramMap, key, signature);
+//
+//        System.out.println("valid1:"+ signatureValid1);
+
+//        String s = "/bbacc/yy/sss.zip";
+//
+//        int index1 = s.lastIndexOf("/");
+//        int index2 = s.lastIndexOf(".");
+//
+//        String res = s.substring(index1 + 1, index2);
+//
+//        System.out.println(res);
+    }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserSubscribeAddBo.java

@@ -128,4 +128,10 @@ public class UserSubscribeAddBo {
     /** 考场名称 */
     @ApiModelProperty("考场名称")
     private String roomName;
+    /** 考室号 */
+    @ApiModelProperty("考室号")
+    private Long roomId;
+    /** 考室编号 */
+    @ApiModelProperty("考室编号")
+    private String roomCode;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserSubscribeEditBo.java

@@ -151,4 +151,10 @@ public class UserSubscribeEditBo {
     /** 考场名称 */
     @ApiModelProperty("考场名称")
     private String roomName;
+    /** 考室号 */
+    @ApiModelProperty("考室号")
+    private Long roomId;
+    /** 考室编号 */
+    @ApiModelProperty("考室编号")
+    private String roomCode;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserSubscribe.java

@@ -98,4 +98,8 @@ private static final long serialVersionUID=1L;
     private String syncResult;
     /** 考场名称 */
     private String roomName;
+    /** 考室号 */
+    private Long roomId;
+    /** 考室编号 */
+    private String roomCode;
 }

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -259,7 +259,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         add.setExamStatus(0);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        add.setExamineeCode(ServletUtils.getEncoded("ZS"+add.getUserId()));
+        add.setExamineeCode(ServletUtils.getEncoded("ZZ"+add.getApplyId()+""+add.getUserId()));
         this.save(add);
         //发送预约考试消息
         sendExamSucceed(bo);
@@ -308,7 +308,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         add.setExamStatus(0);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        add.setExamineeCode(ServletUtils.getEncoded("ZS"+add.getUserId()));
+        add.setExamineeCode(ServletUtils.getEncoded("ZZ"+add.getApplyId()+""+add.getUserId()));
         this.save(add);
         //发送预约考试消息
         sendExamSucceed(bo);

+ 9 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeVo.java

@@ -258,6 +258,13 @@ public class UserSubscribeVo {
 	private String telphone;
 	/** 智慧考场ID */
 	private Long centerId;
-	private String siteCode;
-
+	private String applyCode;
+	/** 考室号 */
+	@Excel(name = "考室号")
+	@ApiModelProperty("考室号")
+	private Long roomId;
+	/** 考室编号 */
+	@Excel(name = "考室编号")
+	@ApiModelProperty("考室编号")
+	private String roomCode;
 }

+ 79 - 41
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/service/impl/WisdomServiceImpl.java

@@ -27,6 +27,7 @@ import com.zhongzheng.modules.course.bo.CourseChapterSectionQueryBo;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.bo.CourseModuleChapterQueryBo;
 import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
+import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.CourseSubject;
 import com.zhongzheng.modules.course.service.*;
@@ -140,7 +141,7 @@ public class WisdomServiceImpl  implements IWisdomService {
 
     private String getCentersListUrl = "/exam/api/centers";
 
-    private String batchUserUrl = "/exam/api/examinees";
+    private String batchUserUrl = "/exam/api/center-examinees";
 
     @Autowired
     private RedisCache redisCache;
@@ -219,40 +220,54 @@ public class WisdomServiceImpl  implements IWisdomService {
     @Override
     public void syncApplyUserInfo(Long applyId) {
         List<UserSubscribeVo> list = iUserSubscribeService.selectApplyUserList(applyId);
-        Map<Long,CenterVo> cMap = new HashMap<>();
+        Map<String,CenterVo> cMap = new HashMap<>();
         List<CenterVo> cList = new ArrayList<>();
         for(UserSubscribeVo vo : list){
-            ExamineesVo userVo = new ExamineesVo();
-            userVo.setExamineeCode(vo.getExamineeCode());
-            userVo.setIdNumber(vo.getIdCard());
-            userVo.setPhone_num(vo.getTelphone());
-            userVo.setExamineeName(vo.getRealname());
-            userVo.setIdCardImg1(vo.getIdCardImg1());
-            userVo.setIdCardImg2(vo.getIdCardImg2());
+            Map<String, Object> userVo = new HashMap<>();
+            userVo.put("examineeCode",vo.getExamineeCode());
+            userVo.put("idNumber",vo.getIdCard());
+            userVo.put("examineeName","ddsfs");
+            userVo.put("idCardImg1",vo.getIdCardImg1());
+            userVo.put("idCardImg2",vo.getIdCardImg2());
+            userVo.put("phone_num",vo.getTelphone());
+            userVo.put("status",0);
+            userVo.put("reportTime",DateUtils.getTime());
+            userVo.put("temperature","0℃");
             if(vo.getReportStatus()==0){
-                userVo.setReportStatus("未签署");
+                userVo.put("reportStatus","未签署");
             }
             if(vo.getReportStatus()==1){
-                userVo.setReportStatus("已签署");
+                userVo.put("reportStatus","已签署");
             }
-            if(cMap.containsKey(vo.getCenterId())){
-                CenterVo centerVo = cMap.get(vo.getCenterId());
-                List<ExamineesVo> examinees = centerVo.getExaminees();
+            String key = vo.getCenterId()+"-"+vo.getApplySiteExamTime()+"-"+vo.getApplySiteStartTime()+"-"+vo.getApplySiteEndTime();
+            if(cMap.containsKey(key)){
+                CenterVo centerVo = cMap.get(key);
+                List<Map<String, Object>> examinees = centerVo.getExaminees();
                 examinees.add(userVo);
             }else{
-                List<ExamineesVo> examinees = new ArrayList<>();
+                List<Map<String, Object>> examinees = new ArrayList<>();
                 examinees.add(userVo);
                 CenterVo centerVo = new CenterVo();
                 centerVo.setExaminees(examinees);
                 centerVo.setCenterId(vo.getCenterId());
-                centerVo.setExamCode(vo.getSiteCode());
+                centerVo.setExamCode(vo.getApplyCode());
+                centerVo.setExamName(vo.getApplyName());
                 centerVo.setZipFileName(vo.getApplyName()+"考生证件照");
-                cMap.put(vo.getCenterId(),centerVo);
+                centerVo.setExamTime(DateUtils.timestampToDate(vo.getApplySiteExamTime()));
+                centerVo.setExamStartTime(centerVo.getExamTime()+" "+vo.getApplySiteStartTime());
+                centerVo.setExamEndTime(centerVo.getExamTime()+" "+vo.getApplySiteEndTime());
+                if(vo.getSubscribeStatus()==1){
+                    centerVo.setStatus(0);
+                }
+                if(vo.getSubscribeStatus()==2){
+                    centerVo.setStatus(2);
+                }
+                cMap.put(key,centerVo);
             }
         }
-        Iterator<Long> iterator = cMap.keySet().iterator();
+        Iterator<String> iterator = cMap.keySet().iterator();
         while (iterator.hasNext()) {
-            Long key = iterator.next();
+            String key = iterator.next();
             CenterVo vo = cMap.get(key);
             String filename = FileUtils.encodingZipFilename(vo.getZipFileName());
             String zipFile = FileUtils.getZipAbsoluteFile(filename);
@@ -260,50 +275,73 @@ public class WisdomServiceImpl  implements IWisdomService {
             try {
                 ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFile));
                 List<FileBean> fileBeanList = new ArrayList<>();
-                for(ExamineesVo userVo : vo.getExaminees()){
+                for(Map<String, Object> userVo : vo.getExaminees()){
                     FileBean f1 = new FileBean();
-                    f1.setPath(userVo.getIdCardImg1());
-                    f1.setFileName(userVo.getExamineeCode()+"_0.jpg");
+                    String idCardImg1 = Validator.isEmpty(userVo.get("idCardImg1"))?null:String.valueOf(userVo.get("idCardImg1"));
+                    f1.setPath(idCardImg1);
+                    f1.setFileName(userVo.get("examineeCode")+"_0.jpg");
                     FileBean f2 = new FileBean();
-                    f2.setPath(userVo.getIdCardImg2());
-                    f2.setFileName(userVo.getExamineeCode()+"_1.jpg");
+                    String idCardImg2 = Validator.isEmpty(userVo.get("idCardImg2"))?null:String.valueOf(userVo.get("idCardImg2"));
+                    f2.setPath(idCardImg2);
+                    f2.setFileName(userVo.get("examineeCode")+"_1.jpg");
                     fileBeanList.add(f1);
                     fileBeanList.add(f2);
                 }
-                System.out.println(fileBeanList);
                 ossService.zipWisdomDownload(fileBeanList,outStream);
                 outStream.close();
                 byte[] dataByte = ToolsUtils.getBytesByFile(zipFile);
-   //             vo.setExamineeZipFiles();
+                vo.setExamineeZipFiles(dataByte);
             } catch (IOException e) {
-                System.out.println(e.getMessage() + "压缩");
             }
             cList.add(vo);
         }
         String url = host + batchUserUrl;
         String auth_code = authorization();
-        List<Map<String, Object>> paramMapList = new ArrayList<>();
-        for(CenterVo vo : cList){
-            Map<String, Object> map = new HashMap<>();
-            map.put("centerId",vo.getCenterId());
-            map.put("examCode",vo.getExamCode());
-            map.put("examinees",vo.getExaminees());
-            map.put("zipFileName",vo.getZipFileName());
-    //        map.put("examineeZipFiles",vo.getExamineeZipFiles());
-            paramMapList.add(map);
-        }
         try{
+            List<Map<String, Object>> paramMapList = new ArrayList<>();
+            for(CenterVo vo : cList){
+                Map<String, Object> map = new HashMap<>();
+                map.put("centerId",vo.getCenterId());
+                map.put("examCode",vo.getExamCode());
+                map.put("examinees",vo.getExaminees());
+                map.put("examName",vo.getExamName());
+                map.put("zipFileName",vo.getZipFileName());
+                map.put("examTime",vo.getExamTime()+" 00:00:00");
+                map.put("examStartTime",vo.getExamStartTime()+":00");
+                map.put("examEndTime",vo.getExamEndTime()+":00");
+                map.put("roomStatus",0);
+                map.put("examStatus",0);
+                map.put("examineeSum",0);
+    //            map.put("examineeZipFiles",vo.getExamineeZipFiles());
+                map.put("examineeZipFiles","2");
+                paramMapList.add(map);
+            }
             String signature = SignatureUtil.createSignature(paramMapList, appid);
-            /*JSONObject obj = new JSONObject();
-            JSONArray jsonArray = new JSONArray();
-            jsonArray.add(paramMapList);*/
             Map<String, String> hearders = new HashMap<>();
             hearders.put("auth_code", auth_code);
             hearders.put("appid", appid);
             hearders.put("sign", signature);
-            System.out.println(signature);
             String result = HttpUtils.sendPostJsonHeader(url,JSON.toJSONString(paramMapList),hearders);
+            JSONObject userInfoJSON = null;
+            userInfoJSON = JSON.parseObject(result);
+            if (userInfoJSON.containsKey("code")&&"200".equals(String.valueOf(userInfoJSON.get("code")))) {
+                JSONArray jsonArray = userInfoJSON.getJSONObject("result").getJSONArray("records");
+                List<ExamineesVo> listRs=jsonArray.toJavaList(ExamineesVo.class);
+                for (ExamineesVo vo : listRs){
+                    LambdaUpdateWrapper<UserSubscribe> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                    objectLambdaUpdateWrapper.eq(UserSubscribe::getExamineeCode, vo.getExamineeCode());
 
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getSeatNumber, vo.getSeatNumber());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getSyncStatus, 1);
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getRoomAddress, vo.getRoomAddress());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getSyncResult, "同步成功"+DateUtils.getTime());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getRoomName, vo.getRoomName());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getRoomCode, vo.getRoomCode());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getRoomId, vo.getRoomId());
+                    objectLambdaUpdateWrapper.set(UserSubscribe::getUpdateTime,DateUtils.getNowTime());
+                    iUserSubscribeService.update(null, objectLambdaUpdateWrapper);
+                }
+            }
         }catch (Exception e){
 
         }

+ 12 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/vo/CenterVo.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.wisdom.vo;
 import lombok.Data;
 
 import java.util.List;
+import java.util.Map;
 
 @Data
 public class CenterVo {
@@ -12,9 +13,19 @@ public class CenterVo {
 
     private String examCode;
 
-    private List<ExamineesVo> examinees;
+    private List<Map<String, Object>> examinees;
 
     private String zipFileName;
 
     private byte[] examineeZipFiles;
+
+    private String examName;
+
+    private String examTime;
+
+    private String examStartTime;
+
+    private String examEndTime;
+
+    private Integer status;
 }

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/vo/ExamineesVo.java

@@ -21,4 +21,16 @@ public class ExamineesVo {
     private String idCardImg1;
 
     private String idCardImg2;
+
+    private String seatNumber;
+
+    private Long roomId;
+
+    private String roomCode;
+
+    private String roomName;
+
+    private String roomAddress;
+
+
 }

+ 3 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -1360,6 +1360,9 @@
         <if test="goodsId != null and goodsId !='' ">
             AND usr.goods_id = #{goodsId}
         </if>
+        <if test="orderGoodsId != null and orderGoodsId !='' ">
+            AND usr.order_goods_id = #{goodsId}
+        </if>
         ORDER BY
         usr.update_time DESC
         LIMIT 1

+ 6 - 3
zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

@@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="roomAddress" column="room_address"/>
         <result property="syncResult" column="sync_result"/>
         <result property="roomName" column="room_name"/>
+        <result property="roomId" column="room_id"/>
+        <result property="roomCode" column="room_code"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserSubscribeVo" id="UserSubscribeVo">
@@ -86,7 +88,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="idCardImg1" column="id_card_img1"/>
         <result property="idCardImg2" column="id_card_img2"/>
         <result property="centerId" column="center_id"/>
-        <result property="siteCode" column="site_code"/>
+        <result property="applyCode" column="apply_code"/>
+        <result property="roomId" column="room_id"/>
+        <result property="roomCode" column="room_code"/>
     </resultMap>
 
     <select id="listSubscribe" parameterType="com.zhongzheng.modules.user.bo.UserSubscribeQueryBo" resultMap="UserSubscribeVo">
@@ -380,7 +384,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                u.id_card_img1,
                u.id_card_img2,
                es.center_id,
-               es.code as site_code,
+               ea.code as apply_code,
                ea.apply_name
         FROM
             user_subscribe us
@@ -388,7 +392,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 LEFT JOIN exam_apply ea on us.apply_id = ea.apply_id
                 LEFT JOIN exam_site es on us.site_id = es.site_id
         WHERE 1=1
-          and us.subscribe_status =1
           and us.apply_id = #{applyId}
           and es.from_plat = 2
     </select>