he2802 преди 3 години
родител
ревизия
2ee050220e

+ 1 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -185,8 +185,7 @@ public class QuestionController extends BaseController {
         return AjaxResult.success(errorLog);
     }
 
-    @Log(title = "" +
-            "", businessType = BusinessType.IMPORT)
+    @Log(title = "" +"", businessType = BusinessType.IMPORT)
     @ApiOperation("导入题目Word模板列表")
     @PreAuthorize("@ss.hasPermi('system:question:import')")
     @PostMapping("/importWordQuestionList")

+ 1 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -248,6 +248,7 @@ tencent:
     SecretId: AKIDd6XkjTw9D1atwkJceS2NSIuHPK1ThfOr
     SecretKey: GG2ZqrdCWcS6Yx72h6F7k7E4ey2qPnwq
 
+
 aliyun:
   sms:
     signName: 祥粤学校

+ 4 - 0
zhongzheng-common/pom.xml

@@ -200,6 +200,10 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-spring-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.undertow</groupId>
+            <artifactId>undertow-core</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 71 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/AES.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.common.utils;
 
+import org.apache.commons.codec.binary.Base64;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
@@ -7,7 +8,13 @@ import javax.crypto.IllegalBlockSizeException;
 import javax.crypto.NoSuchPaddingException;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 import java.security.*;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
 
 
 public class AES {
@@ -84,4 +91,68 @@ public class AES {
         }
         return "";
     }
+
+    /**
+     * RSA公钥加密
+     *
+     * @param str
+     *            加密字符串
+     * @param publicKey
+     *            公钥
+     * @return 密文
+     * @throws Exception
+     *             加密过程中的异常信息
+     */
+    public static String encrypt( String str, String publicKey ) throws Exception{
+        //base64编码的公钥
+        byte[] decoded = Base64.decodeBase64(publicKey);
+        RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
+        //RSA加密
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.ENCRYPT_MODE, pubKey);
+        String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
+        return outStr;
+    }
+
+    /**
+     * RSA私钥解密
+     *
+     * @param str
+     *            加密字符串
+     * @param privateKey
+     *            私钥
+     * @return 铭文
+     * @throws Exception
+     *             解密过程中的异常信息
+     */
+    public static String decrypt(String str, String privateKey) throws Exception{
+        //64位解码加密后的字符串
+        byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
+        //base64编码的私钥
+        byte[] decoded = Base64.decodeBase64(privateKey);
+        RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
+        //RSA解密
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.DECRYPT_MODE, priKey);
+        String outStr = new String(cipher.doFinal(inputByte));
+        return outStr;
+    }
+
+    public static String getStringByInputStream_1(InputStream inputStream){
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        try {
+            byte[] b = new byte[10240];
+            int n;
+            while ((n = inputStream.read(b)) != -1) {
+                outputStream.write(b, 0, n);
+            }
+        } catch (Exception e) {
+            try {
+                inputStream.close();
+                outputStream.close();
+            } catch (Exception e1) {
+            }
+        }
+        return outputStream.toString();
+    }
 }

+ 14 - 0
zhongzheng-common/src/main/resources/config/pri.key

@@ -0,0 +1,14 @@
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALiqRvAgoSuy0rWw
+URI8SE5KGlGmPj6w5WkkfGXmv/bEsF8D8ytdwAStrlGj1xc1BKqYsu3zB5yguT+C
+V9rkh2FdXSFFVCmUhWznPczFxRr2m0o8dROCHzEwIG+XyxQkrCSafi9hZ4N8dPbY
+QvsevWlMzBSEXpaI2VZ9BNWgXWuHAgMBAAECgYAxNW7h3lAUjPqJYAq6iUXbVvPc
+fihoHEuF0Ss1HGBbKd618x+BluHsXTvulXJjxMURkM9diT2mB05WFi3DLtLEM243
+w9tDsYq+0nwrRx9NNcxXlMtwlFC1EeAHPn4aKz1gfsT9ISBJvlDr8KK86hyvXnYG
+bzhcNRrb9e8LOZHjAQJBAN2y1uqHD7eeMYPYUCpXGNhvCTd9Z6n9GRfClohuB7sZ
+64zEDD4KSK+9DGRmwq+ETEeLrGdXBcb6oiUat6OZ+/ECQQDVPJipF875bDXqzJmG
+SIkjT1snZoecio+sK0nHKgbDhhbeCQCwPjp35K4JKgGZLqeWWkBmOTzUS4PmPGxu
+jrb3AkEAhrFmI50lLnDdMnZU1jSOcsibN+xn8/5CpY3iuUboSYOI+cAOlA7ZdHQO
+OF26gLqHQZyZhTt41hhmNNbTpYEjcQJBAJROYerxOS22ukVE6d5AYskhL0fXAqi4
+ojZfoR+ZNj0U7KCe6FCr5yRt8zFCevwcO8jRmoq+cnVA1Er0aYH3Vn8CQHU/jOtg
+wAtnR3lOcM4428X39l6rJPAuR1CzubMNGMS5grHDhrOVy0gYbZPWU4QUgC82wPq0
+yrzs/ckG/wLyzpw=

+ 16 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java

@@ -2,8 +2,12 @@ package com.zhongzheng.framework.web.service;
 
 import javax.annotation.Resource;
 
+import com.zhongzheng.common.utils.AES;
 import com.zhongzheng.framework.manager.factory.AsyncFactory;
+import org.apache.commons.compress.utils.IOUtils;
+import org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -19,6 +23,8 @@ import com.zhongzheng.common.exception.user.UserPasswordNotMatchException;
 import com.zhongzheng.common.utils.MessageUtils;
 import com.zhongzheng.framework.manager.AsyncManager;
 
+import java.io.InputStream;
+
 /**
  * 登录校验方法
  *
@@ -64,7 +70,17 @@ public class SysLoginService
         Authentication authentication = null;
         try
         {
+            String rsaPrivate = null;
+           try {
+                InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config/pri.key");
+                rsaPrivate = AES.getStringByInputStream_1(certStream);
+                certStream.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
             // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+            password = AES.decrypt(password,rsaPrivate);
             authentication = authenticationManager
                     .authenticate(new UsernamePasswordAuthenticationToken(username, password));
         }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionAddBo.java

@@ -70,4 +70,7 @@ public class QuestionAddBo {
     /** 导入编号 */
     @ApiModelProperty("导入编号")
     private String importNo;
+    /** 导入顺序 */
+    @ApiModelProperty("导入顺序")
+    private Integer importSort;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionEditBo.java

@@ -77,5 +77,7 @@ public class QuestionEditBo {
     /** 业务层级列表 */
     @ApiModelProperty("业务层级列表")
     private List<QuestionBusinessEditBo> businessList;
-
+    /** 导入顺序 */
+    @ApiModelProperty("导入顺序")
+    private Integer importSort;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionQueryBo.java

@@ -88,5 +88,7 @@ public class QuestionQueryBo extends BaseEntity {
 	/** 编码 */
 	@ApiModelProperty("编码")
 	private String code;
-
+	/** 导入顺序 */
+	@ApiModelProperty("导入顺序")
+	private Integer importSort;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Question.java

@@ -59,4 +59,6 @@ private static final long serialVersionUID=1L;
     private String createBy;
     /** 导入编号 */
     private String importNo;
+    /** 导入顺序 */
+    private Integer importSort;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java

@@ -355,6 +355,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         String errorLog = ""; //错误提示
         String buffer = "";
         String importNo = ServletUtils.getEncoded("IMPORT");
+        int sort = 1;
         try{
             String path = file.getOriginalFilename();
             if (path.endsWith(".doc")) {
@@ -659,7 +660,9 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                        bo.setImportNo(importNo);
                        bo.setPublishStatus(1);
                        bo.setBusinessList(businessList);
+                       bo.setImportSort(sort);
                        insertByAddBoImport(bo,i);
+                       sort++;
 
                         //清空数据
                         isOption = false;

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/QuestionVo.java

@@ -107,5 +107,8 @@ public class QuestionVo {
 	@ApiModelProperty("修改时间")
 	@Excel(name = "修改时间")
 	private Long updateTime;
-
+	/** 导入顺序 */
+	@Excel(name = "导入顺序")
+	@ApiModelProperty("导入顺序")
+	private Integer importSort;
 }

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

@@ -1487,6 +1487,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                         informUserAddBo.setUpdateTime(DateUtils.getNowTime());
                         informUserAddBo.setRemindId(17L);
                         informUserAddBo.setSystemStatus(1);
+                        informUserAddBo.setOrderGoodsId(userSubscribeVo.getOrderGoodsId());
                         informUserAddBo.setRemind("七大员新考考试通过提醒");
                         informUserAddBo.setGoodsId(userSubscribeVo.getGoodsId());
                         GoodsVo goodsVo1 = iGoodsService.queryById(userSubscribeVo.getGoodsId());
@@ -1502,6 +1503,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                         informUserAddBo.setUpdateTime(DateUtils.getNowTime());
                         informUserAddBo.setRemindId(17L);
                         informUserAddBo.setSystemStatus(3);
+                        informUserAddBo.setOrderGoodsId(userSubscribeVo.getOrderGoodsId());
                         informUserAddBo.setRemind("七大员新考考试通过提醒");
                         informUserAddBo.setGoodsId(userSubscribeVo.getGoodsId());
                         GoodsVo goodsVo1 = iGoodsService.queryById(userSubscribeVo.getGoodsId());
@@ -1525,6 +1527,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                         informUserAddBo.setUpdateTime(DateUtils.getNowTime());
                         informUserAddBo.setRemindId(18L);
                         informUserAddBo.setSystemStatus(1);
+                        informUserAddBo.setOrderGoodsId(userSubscribeVo.getOrderGoodsId());
                         informUserAddBo.setRemind("七大员新考考试不通过提醒");
                         informUserAddBo.setGoodsId(userSubscribeVo.getGoodsId());
                         GoodsVo goodsVo1 = iGoodsService.queryById(userSubscribeVo.getGoodsId());
@@ -1540,6 +1543,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                         informUserAddBo.setUpdateTime(DateUtils.getNowTime());
                         informUserAddBo.setRemindId(18L);
                         informUserAddBo.setSystemStatus(3);
+                        informUserAddBo.setOrderGoodsId(userSubscribeVo.getOrderGoodsId());
                         informUserAddBo.setRemind("七大员新考考试不通过提醒");
                         informUserAddBo.setGoodsId(userSubscribeVo.getGoodsId());
                         GoodsVo goodsVo1 = iGoodsService.queryById(userSubscribeVo.getGoodsId());

+ 3 - 1
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml

@@ -21,6 +21,7 @@
         <result property="code" column="code"/>
         <result property="importNo" column="import_no"/>
         <result property="createBy" column="create_by"/>
+        <result property="importSort" column="import_sort"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.bank.vo.QuestionVo" id="QuestionResultVo">
@@ -38,6 +39,7 @@
         <result property="code" column="code"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="importSort" column="import_sort"/>
         <collection property="businessList" column="question_id" select="findBusinessList" />
         <collection property="knowledgeList" column="knowledge_ids" select="findKnowledge"/>
         <collection property="examList" column="question_id" select="findExamList" />
@@ -205,7 +207,7 @@
         </if>
         GROUP BY
         q.question_id
-        ORDER BY q.question_id DESC
+        ORDER BY q.import_sort,q.question_id DESC
     </select>
 
     <select id="selectList_COUNT" resultType="Long">