Ver código fonte

新增梅花积分多外接口

Administrator 2 anos atrás
pai
commit
054ec82b02

+ 5 - 3
boman-web-core/src/main/java/com/boman/web/core/controller/CzrkController.java

@@ -232,10 +232,12 @@ public class CzrkController extends BaseController {
 
     /**
      * 梅花积分对外接口
+     * 接口放行,不要token
+     * 传appId,根据appId找到对应的私钥,对body体进行解密
      */
-    @GetMapping("/open/getInfoMeihua/{appId}/{idCard}")
-    public AjaxResult getInfoMeihua(@PathVariable("appId") String appId,@PathVariable("idCard") String idCard) {
-        return czrkService.getInfoMeihua(appId,idCard);
+    @PostMapping("/open/getInfoMeiHua")
+    public AjaxResult getInfoMeiHua(@RequestBody  JsonRequest jsonRequest) {
+        return czrkService.getInfoMeiHua(jsonRequest);
     }
 
     /**

+ 7 - 0
boman-web-core/src/main/java/com/boman/web/core/mapper/CzrkJzdzMapper.java

@@ -21,6 +21,13 @@ import java.util.List;
      */
      CzrkJzdz selectCzrkJzdzById(Long id);
 
+    /**
+     * 根据身份号查询是否是潜山常住人口
+     * @param idCard
+     * @return
+     */
+     int selectCzrkJzdzByIdCard(String idCard);
+
     /**
      * 查询常住人口对应的居住地址列表
      * 

+ 25 - 14
boman-web-core/src/main/java/com/boman/web/core/service/czrk/CzrkJzdzServiceImpl.java

@@ -48,7 +48,6 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
     private RemoteDeptService remoteDeptService;
 
 
-
     /**
      * 查询常住人口对应的居住地址
      *
@@ -60,6 +59,17 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
         return czrkJzdzMapper.selectCzrkJzdzById(id);
     }
 
+    /**
+     * 梅花积分使用,根据身份号查询是否是潜山常住人口
+     *
+     * @param idCard
+     * @return
+     */
+    @Override
+    public int selectCzrkJzdzByIdCard(String idCard) {
+        return czrkJzdzMapper.selectCzrkJzdzByIdCard(idCard);
+    }
+
     /**
      * 查询常住人口对应的居住地址列表
      *
@@ -188,7 +198,7 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
                 , sysUser.getUserName(), DateUtils.dateTimeNow(), JSON.toJSONString(czrk));
         setAgeScope(czrk);
         //当前用户只能看到居住地址在当前的人员
-        setQueryRole(czrk,sysUser,Czrk.CZ);
+        setQueryRole(czrk, sysUser, Czrk.CZ);
         long startTimeSql = System.currentTimeMillis();
         startPage();
         List<Czrk> czrks = czrkMapper.listByCzrkJzdz(czrk);
@@ -200,7 +210,7 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
 
     @Override
     public List<CzrkJzdz> getCzrkJzdzByTime(String todayStartStr, String todayEndStr, String regionId, String status) {
-        return czrkJzdzMapper.getCzrkJzdzByTime(todayStartStr,todayEndStr,regionId,status);
+        return czrkJzdzMapper.getCzrkJzdzByTime(todayStartStr, todayEndStr, regionId, status);
     }
 
     @Override
@@ -218,12 +228,13 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
     /**
      * 常住 人口信息导入
      * 根据身份证进行更改常住人口信息(必须常住人口表czrk_jzdz有数据)
+     *
      * @param czrkJzdzList
      * @return
      */
     @Override
     public AjaxResult importCzrkJzdz(List<CzrkJzdz> czrkJzdzList) {
-        if (czrkJzdzList == null || czrkJzdzList.size() < 1){
+        if (czrkJzdzList == null || czrkJzdzList.size() < 1) {
             return AjaxResult.error("当前表格数据为空");
         }
 
@@ -238,46 +249,46 @@ public class CzrkJzdzServiceImpl implements ICzrkJzdzService {
             czrkJzdz.setRegionId("340882000000");
             czrkJzdz.setRegionId("潜山市");
             String townId = czrkJzdz.getTownId();
-            if (StringUtils.isNotEmpty(townId)){
+            if (StringUtils.isNotEmpty(townId)) {
                 //根据行政规划Id去查询行政规划的名称
                 for (SysDept allDept : allDepts) {
-                    if(allDept.getAreaId().equals(townId)){
+                    if (allDept.getAreaId().equals(townId)) {
                         czrkJzdz.setTown(allDept.getAreaName());
                         break;
                     }
                 }
             }
             String villageId = czrkJzdz.getVillageId();
-            if (StringUtils.isNotEmpty(villageId)){
+            if (StringUtils.isNotEmpty(villageId)) {
                 //根据行政规划Id去查询行政规划的名称
                 for (SysDept allDept : allDepts) {
-                    if(allDept.getAreaId().equals(villageId)){
+                    if (allDept.getAreaId().equals(villageId)) {
                         czrkJzdz.setVillage(allDept.getAreaName());
                         break;
                     }
                 }
             }
             String villagerGroupId = czrkJzdz.getVillagerGroupId();
-            if (StringUtils.isNotEmpty(villagerGroupId)){
+            if (StringUtils.isNotEmpty(villagerGroupId)) {
                 //根据行政规划Id去查询行政规划的名称
 
                 for (SysDept allDept : allDepts) {
-                    if(allDept.getAreaId().equals(villagerGroupId)){
+                    if (allDept.getAreaId().equals(villagerGroupId)) {
                         czrkJzdz.setVillagerGroup(allDept.getAreaName());
                         break;
                     }
                 }
             }
             czrkJzdz.setStatus("Y");
-            czrkJzdz.setIdCard((czrkJzdz.getIdCard()).replaceAll("\\s*|\r|\n|\t",""));
+            czrkJzdz.setIdCard((czrkJzdz.getIdCard()).replaceAll("\\s*|\r|\n|\t", ""));
             int i = czrkJzdzMapper.updateByIdCard(czrkJzdz);
-            if (i == 0){
+            if (i == 0) {
                 sb.append(czrkJzdz.getIdCard()).append("---");
             }
         }
-        if (sb.length() > 0){
+        if (sb.length() > 0) {
             sb.append("不存在或者信息无需修改");
-        }else {
+        } else {
             return AjaxResult.success("导入成功");
         }
         return AjaxResult.success(sb.toString());

+ 35 - 14
boman-web-core/src/main/java/com/boman/web/core/service/czrk/CzrkServiceImpl.java

@@ -2793,41 +2793,62 @@ public class CzrkServiceImpl implements ICzrkService {
 
     /**
      * 对外梅花积分接口
-     * @param appId
-     * @param idCard
      * @return
      */
     @Override
-    public AjaxResult getInfoMeihua(String appId, String idCard) {
+    public AjaxResult getInfoMeiHua(JsonRequest jsonRequest) {
+        //获取这个用户的appId
+        String appId = jsonRequest.getAppId();
         if (StringUtils.isBlank(appId)) {
             return AjaxResult.error("缺少appId参数");
         }
-        if (StringUtils.isBlank(idCard)) {
-            return AjaxResult.error("缺少身份证信息参数");
-        }
         //拿着appid去查询对应的密钥对
         JSONObject ipTimes = ipTimesService.selectByAppId(appId);
         if (ipTimes == null || ipTimes.size() == 0) {
             return AjaxResult.error("该appId不存在");
         }
+        //获取私钥
+        String privateKey = ipTimes.getString("app_secret");
+        String body = jsonRequest.getBody();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        String idCard = "";
+        if (StringUtils.isNotEmpty(jsonObject)){
+             idCard = jsonObject.getString("idCard");
+             //拿私钥进行RSA解密
+            idCard = RSAUtil.decryptByPrivateKey(HexUtils.fromHexString(idCard), privateKey);
+        }
+        //判断身份证号是否符合要求
+        if (StringUtils.isBlank(idCard)||idCard.length() != 18){
+            return AjaxResult.error("传入的参数格式不正确");
+        }
+
+        //获取请求的id
+        String ipAddr = IpUtils.getIpAddr(((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest());
+        String isStrong = ipTimes.getString("is_strong");
+        String ip = ipTimes.getString("ip");
+        //是否是强校验
+        if ("Y".equals(isStrong)) {
+            if (!ipAddr.equals(ip)) {
+                return AjaxResult.error("ip不正确");
+            }
+        }
         String today = DateUtils.getDate();
         String redisKey = APPID_TIMES + appId + ":" + today;
         Integer cacheTimes = redisService.getCacheObject(redisKey);
         if (cacheTimes == null) cacheTimes = 0;
         int times = ipTimes.getIntValue("times");
         if (++cacheTimes > times) {
-            log.error("ip:{}, 时间:{}, 访问超次数, 已经查询了 {} 次", ipTimes.getString("ip"), today, cacheTimes);
+            log.error("ip:{}, 时间:{}, 访问超次数, 已经查询了 {} 次", ip, today, cacheTimes);
             return AjaxResult.error("今日访问次数已用尽,请明日再试");
         }
-        //增加查询次数
+        int result = czrkJzdzService.selectCzrkJzdzByIdCard(idCard);
+        if (result == 0) {
+            log.error("ip:{}, 时间:{}, 根据idCard:{}, 未查询到信息, 已经查询了 {} 次", ip, today, idCard, cacheTimes);
+            return AjaxResult.error("未查询到信息");
+        }
         long time = DateUtils.getTodayEnd().getTime(), time1 = DateUtils.getNowDate().getTime();
         redisService.setCacheObject(redisKey, cacheTimes, ((time - time1) / 1000), TimeUnit.SECONDS);
-
-        Czrk czrk = czrkMapper.selectCzrkByIdCard(idCard);
-        if (czrk != null){
-            return AjaxResult.success();
-        }
-        return AjaxResult.error();
+        return AjaxResult.success(result);
     }
 
     /**

+ 7 - 0
boman-web-core/src/main/java/com/boman/web/core/service/czrk/ICzrkJzdzService.java

@@ -23,6 +23,13 @@ public interface ICzrkJzdzService {
      */
     CzrkJzdz selectCzrkJzdzById(Long id);
 
+    /**
+     * 梅花积分使用,根据身份号查询是否是潜山常住人口
+     * @param idCard
+     * @return
+     */
+    int selectCzrkJzdzByIdCard(String idCard);
+
     /**
      * 查询常住人口对应的居住地址列表
      *

+ 1 - 3
boman-web-core/src/main/java/com/boman/web/core/service/czrk/ICzrkService.java

@@ -115,11 +115,9 @@ public interface ICzrkService {
 
     /**
      * 对外梅花积分接口
-     * @param appId
-     * @param idCard
      * @return
      */
-    AjaxResult getInfoMeihua(String appId,String idCard);
+    AjaxResult getInfoMeiHua(JsonRequest jsonRequest);
 
     /**
      * 一键确认家庭成员

+ 4 - 0
boman-web-core/src/main/resources/mapper/CzrkJzdzMapper.xml

@@ -377,4 +377,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectChinaArea" resultType="java.lang.String">
         select a.name from china_area as a where area_id = #{areaId}
     </select>
+
+    <select id="selectCzrkJzdzByIdCard" resultType="java.lang.Integer">
+        select ifnull(0,count(1) ) from czrk_jzdz where region_id = '340882000000' and id_card = #{idCard} limit 1
+    </select>
 </mapper>