shuzhan 2 gadi atpakaļ
vecāks
revīzija
d5c5ac4646

+ 3 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/JobEnterpriseRelation.java

@@ -66,4 +66,7 @@ public class JobEnterpriseRelation {
 	@ApiModelProperty(value = "岗位信息")
 	private RecruitInformationInfo recruitInformationInfo;
 
+	@Transient
+	@ApiModelProperty(value = "受邀人信息")
+	private PersonInfo workPersonInfo;
 }

+ 91 - 0
common/src/main/java/com/jpsoft/employment/modules/common/utils/AESDATAUtil.java

@@ -0,0 +1,91 @@
+package com.jpsoft.employment.modules.common.utils;
+
+import com.sun.istack.NotNull;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+import java.security.Security;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang.StringUtils;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import java.security.*;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Arrays;
+
+public class AESDATAUtil {
+    /**
+     * 解密
+     *
+     * @param content 目标密文
+     * @param key     秘钥
+     * @param iv      偏移量
+     * @return
+     */
+    public static String decrypt(@NotNull String content, @NotNull String key, @NotNull String iv) {
+        String result = "";
+        // 被加密的数据
+        byte[] dataByte = Base64.decodeBase64(content);
+        // 加密秘钥
+        byte[] keyByte = Base64.decodeBase64(key);
+        // 偏移量
+        byte[] ivByte = Base64.decodeBase64(iv);
+        try {
+            // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
+            int base = 16;
+            if (keyByte.length % base != 0) {
+                int groups = keyByte.length / base
+                        + (keyByte.length % base != 0 ? 1 : 0);
+                byte[] temp = new byte[groups * base];
+                Arrays.fill(temp, (byte) 0);
+                System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
+                keyByte = temp;
+            }
+            if (ivByte.length % base != 0) {
+                int groups = ivByte.length / base
+                        + (ivByte.length % base != 0 ? 1 : 0);
+                byte[] temp = new byte[groups * base];
+                Arrays.fill(temp, (byte) 0);
+                System.arraycopy(ivByte, 0, temp, 0, ivByte.length);
+                ivByte = temp;
+            }
+            // 初始化
+            Security.addProvider(new BouncyCastleProvider());
+            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
+            SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
+            AlgorithmParameters parameters = AlgorithmParameters
+                    .getInstance("AES");
+            parameters.init(new IvParameterSpec(ivByte));
+            cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
+            byte[] resultByte = cipher.doFinal(dataByte);
+            if (null != resultByte && resultByte.length > 0) {
+                result = new String(resultByte, "UTF-8");
+            }
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (NoSuchPaddingException e) {
+            e.printStackTrace();
+        } catch (InvalidParameterSpecException e) {
+            e.printStackTrace();
+        } catch (IllegalBlockSizeException e) {
+            e.printStackTrace();
+        } catch (BadPaddingException e) {
+            e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (InvalidKeyException e) {
+            e.printStackTrace();
+        } catch (InvalidAlgorithmParameterException e) {
+            e.printStackTrace();
+        } catch (NoSuchProviderException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+}

+ 3 - 0
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/RecruitApiController.java

@@ -741,6 +741,9 @@ public class RecruitApiController {
 
                     jobEnterpriseRelation.setJobInformationInfo(jobInformationInfo);
 
+                    PersonInfo workPersonInfo = personInfoService.get(jobInformationInfo.getPersonId());
+                    jobEnterpriseRelation.setWorkPersonInfo(workPersonInfo);
+
                     RecruitInformationInfo recruitInformationInfo = recruitInformationInfoService.get(jobEnterpriseRelation.getRecruitInformationId());
                     jobEnterpriseRelation.setRecruitInformationInfo(recruitInformationInfo);
                 }

+ 25 - 2
web/src/main/java/com/jpsoft/employment/modules/wechat/controller/WxController.java

@@ -4,14 +4,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.jpsoft.employment.config.WxProperties;
 import com.jpsoft.employment.config.WxPropertiesApplet;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
-import com.jpsoft.employment.modules.common.utils.Sign;
-import com.jpsoft.employment.modules.common.utils.WeixinUtil;
+import com.jpsoft.employment.modules.common.utils.*;
 import com.jpsoft.employment.modules.wechat.entity.AccessToken;
 import com.jpsoft.employment.modules.wechat.entity.SessionKey;
 import com.jpsoft.employment.modules.wechat.vo.UserInfo;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.web.bind.annotation.*;
@@ -244,4 +244,27 @@ public class WxController {
         }
     }
 
+    @ApiOperation(value = "解密")
+    @PostMapping(value = "decryptData")
+    @ResponseBody
+    public MessageResult decryptData(@RequestParam(defaultValue = "") String encryptedData,
+                        @RequestParam(defaultValue = "") String iv,
+                        @RequestParam(defaultValue = "") String code) {
+        try {
+//            String accessToken = (String)valueOperations.get("accessToken");
+//            if(StringUtils.isEmpty(accessToken)){
+//                AccessToken token = WeixinUtil.getAccessToken(wxPropertiesApplet.getAppId(), wxPropertiesApplet.getAppSecret());
+//                accessToken = token.getToken();
+//                valueOperations.set("accessToken",token.getToken(),2, TimeUnit.HOURS);
+//            }
+
+            encryptedData = encryptedData.replace(" ", "+");
+            String data = AESDATAUtil.decrypt(encryptedData, code, iv);
+
+            return new MessageResult(true, "成功", "", 200);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return new MessageResult(false, "系统错误", "", 500);
+        }
+    }
 }