he2802 3 лет назад
Родитель
Сommit
a0a29de02a

+ 0 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/SecurityUtils.java

@@ -43,7 +43,6 @@ public class SecurityUtils
             }else{
                 return getTopLoginUser().getUsername();
             }
-
         }
         catch (Exception e)
         {

+ 40 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -168,6 +168,46 @@ public class HttpUtils
         return null;
     }
 
+    public static String sendPostHeader(String url, JSONObject param, Map<String, String> headersMap)
+    {
+        HttpClient client = HttpClients.createDefault();
+        HttpPost post = new HttpPost(url);
+        try {
+            //此处应设定参数的编码格式,不然中文会变乱码
+            StringEntity s = new StringEntity(param.toString(), "UTF-8");
+            s.setContentEncoding("UTF-8");
+            s.setContentType("application/json");
+            post.setEntity(s);
+            post.addHeader("content-type", "application/json");
+            headersMap.forEach(post::setHeader);
+            HttpResponse res = client.execute(post);
+            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+                if (res.getEntity().getContentType().getValue().equalsIgnoreCase("image/jpeg")) {
+                    InputStream inputStream = res.getEntity().getContent();
+                    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+                    byte[] buffer = new byte[1024];
+                    int len = 0;
+                    while ((len = inputStream.read(buffer)) != -1){
+                        outputStream.write(buffer, 0, len);
+                    }
+                    inputStream.close();
+                    java.util.Base64.Encoder encoder1 = java.util.Base64.getEncoder();
+                    String encoder = "data:image/jpeg;base64,"
+                            + encoder1.encodeToString(outputStream.toByteArray());
+                    return encoder;
+                }
+                String result = EntityUtils.toString(res.getEntity());// 返回json格式
+                System.out.println("推送成功" + result);
+                return result;
+            } else {
+                System.out.println("推送失败");
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
     /**
      * 向指定 URL 发送POST方法的请求
      *

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamSiteService.java

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.exam.bo.ExamSiteQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamSiteAddBo;
 import com.zhongzheng.modules.exam.bo.ExamSiteEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.wisdom.vo.WisdomRoomVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -35,6 +36,8 @@ public interface IExamSiteService extends IService<ExamSite> {
 	 */
 	Boolean insertByAddBo(ExamSiteAddBo bo);
 
+	Boolean insertByWisdomAddBo(WisdomRoomVo bo);
+
 	/**
 	 * 根据编辑业务对象修改考试地点
 	 * @param bo 考试地点编辑业务对象

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamSiteServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.wisdom.vo.WisdomRoomVo;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -88,6 +89,24 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteMapper, ExamSite> i
         return this.save(add);
     }
 
+    @Override
+    public Boolean insertByWisdomAddBo(WisdomRoomVo bo) {
+        ExamSite add = new ExamSite();
+        LambdaQueryWrapper<ExamSite> lqw = Wrappers.lambdaQuery();
+        lqw.eq(ExamSite::getSiteAddress, bo.getExamCenterAddress());
+        lqw.eq(ExamSite::getStatus, 1);
+        List<ExamSite> list = this.list(lqw);
+        if (CollectionUtils.isNotEmpty(list)){
+            throw new IllegalArgumentException("地址重复,请重新填写");
+        }
+        validEntityBeforeSave(add);
+        add.setCode(ServletUtils.getEncoded("DD"));
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        add.setFromPlat(2);
+        return this.save(add);
+    }
+
     @Override
     public Boolean updateByEditBo(ExamSiteEditBo bo) {
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -2047,7 +2047,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
 
     @Override
     public void wisdomExamSite(UserQueryBo bo) {
-        iWisdomService.authorization();
+        iWisdomService.SiteList(1);
     }
 
     private Long formatTime(Long startTime, String addTime) throws ParseException{

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/service/IWisdomService.java

@@ -8,5 +8,7 @@ import java.text.ParseException;
 
 
 public interface IWisdomService {
-    void authorization();
+    String authorization();
+
+    void SiteList(Integer pageNo);
 }

+ 67 - 10
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/service/impl/WisdomServiceImpl.java

@@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +15,7 @@ import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
+import com.zhongzheng.common.utils.wisdom.SignatureUtil;
 import com.zhongzheng.modules.alisms.vo.ResultBean;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.vo.ProfileTpVo;
@@ -35,6 +38,7 @@ import com.zhongzheng.modules.exam.domain.ExamNumber;
 import com.zhongzheng.modules.exam.mapper.ExamApplyMapper;
 import com.zhongzheng.modules.exam.mapper.ExamBeforeMapper;
 import com.zhongzheng.modules.exam.mapper.ExamNumberMapper;
+import com.zhongzheng.modules.exam.service.IExamSiteService;
 import com.zhongzheng.modules.exam.vo.ExamApplyVo;
 import com.zhongzheng.modules.exam.vo.ExamBeforeVo;
 import com.zhongzheng.modules.exam.vo.ExamUserApplyVo;
@@ -82,6 +86,7 @@ import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
 import com.zhongzheng.modules.polyv.domain.PolyvVideo;
 import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
 import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.polyv.vo.PolyvCataData;
 import com.zhongzheng.modules.schedule.service.IScheduleService;
 import com.zhongzheng.modules.system.service.ISysUserService;
 import com.zhongzheng.modules.user.bo.*;
@@ -91,6 +96,7 @@ import com.zhongzheng.modules.user.mapper.UserStudyRecordMapper;
 import com.zhongzheng.modules.user.service.*;
 import com.zhongzheng.modules.user.vo.*;
 import com.zhongzheng.modules.wisdom.service.IWisdomService;
+import com.zhongzheng.modules.wisdom.vo.WisdomRoomVo;
 import com.zhongzheng.modules.wx.service.IWxLoginService;
 import net.polyv.live.v1.entity.channel.playback.LiveChannelVideoListResponse;
 import net.polyv.live.v1.entity.channel.playback.LiveListChannelVideoLibraryResponse;
@@ -102,6 +108,7 @@ import org.springframework.util.CollectionUtils;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
@@ -127,19 +134,69 @@ public class WisdomServiceImpl  implements IWisdomService {
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private IExamSiteService iExamSiteService;
+
     @Override
-    public void authorization() {
-        String url = host + authorizationUrl;
-        System.out.println(url);
-        Map<String, String> paramMap = new HashMap<>();
-        paramMap.put("mchid",mchid);
-        paramMap.put("appid",appid);
-        paramMap.put("app_secret",app_secret);
+    public String authorization() {
+        String key = "WISDOM_AUTH_CODE";
+        String auth_code = redisCache.getCacheObject(key);
+        if (Validator.isEmpty(auth_code) || auth_code.equals("null")) {
+            String url = host + authorizationUrl;
+            try{
+                JSONObject obj = new JSONObject();
+                obj.put("mchid", mchid);
+                obj.put("appid", appid);
+                obj.put("app_secret", app_secret);
+                String result = HttpUtils.sendPost(url,obj);
+                JSONObject userInfoJSON = null;
+                userInfoJSON = JSON.parseObject(result);
+                if (userInfoJSON.containsKey("code")&&"200".equals(String.valueOf(userInfoJSON.get("code")))) {
+                    auth_code = String.valueOf(userInfoJSON.getJSONObject("result").get("auth_code"));
+                    if (Validator.isNotEmpty(auth_code) && !auth_code.equals("null")) {
+                        redisCache.setCacheObject(key, auth_code, 7200, TimeUnit.SECONDS);//7200有效期
+                    }
+                }
+            }catch (Exception e){
+                throw new CustomException("获取智慧考场auth_code失败");
+            }
+        }
+        return auth_code;
+    }
+
+    @Override
+    public void SiteList(Integer pageNo) {
+        String auth_code = authorization();
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("pageNo",pageNo);
+        paramMap.put("pageSize",20);
         try{
-            String result = HttpUtils.postFormBody(url,paramMap);
-            System.out.println(result);
+            String url = host + getRoomListUrl;
+            String signature = SignatureUtil.createSignature(paramMap, appid);
+            JSONObject obj = new JSONObject();
+            obj.put("pageNo",pageNo);
+            obj.put("pageSize",20);
+            Map<String, String> hearders = new HashMap<>();
+            hearders.put("auth_code", auth_code);
+            hearders.put("appid", appid);
+            hearders.put("sign", signature);
+            String result = HttpUtils.sendPostHeader(url,obj,hearders);
+            JSONObject userInfoJSON = null;
+            userInfoJSON = JSON.parseObject(result);
+            if (userInfoJSON.containsKey("code")&&"200".equals(String.valueOf(userInfoJSON.get("code")))) {
+                Integer page = Integer.valueOf(userInfoJSON.getJSONObject("result").get("pages").toString());
+                JSONArray jsonArray = userInfoJSON.getJSONObject("result").getJSONArray("records");
+                List<WisdomRoomVo> list=jsonArray.toJavaList(WisdomRoomVo.class);
+                for (WisdomRoomVo vo : list){
+                    iExamSiteService.insertByWisdomAddBo(vo);
+                    System.out.println(vo);
+                }
+                if(page>pageNo){
+                    SiteList(pageNo++);
+                }
+            }
         }catch (Exception e){
-
+            throw new CustomException("获取智慧考场考场列表失败");
         }
     }
 }

+ 28 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/vo/WisdomRoomVo.java

@@ -0,0 +1,28 @@
+package com.zhongzheng.modules.wisdom.vo;
+
+import lombok.Data;
+
+@Data
+public class WisdomRoomVo {
+    private static final long serialVersionUID = 1L;
+
+    private String centerId;
+
+    private String centerName;
+
+    private String examCenterAddress;
+
+    private String roomId;
+
+    private String roomCode;
+
+    private String roomName;
+
+    private String roomAddress;
+
+    private Integer seatNum;
+
+    private Integer useSeatNumber;
+
+    private Integer freeSeatNumber;
+}