lsw há 1 ano atrás
pai
commit
40bf9e521e

+ 3 - 1
admin-ui/src/api/login.js

@@ -1,7 +1,9 @@
 import request from '@/utils/request'
-
+import { encrypt } from '@/utils/jsencrypt'
 // 登录方法
 export function login(username, password, code, uuid) {
+  password = encrypt(password);
+  username = encrypt(username);
   const data = {
     username,
     password,

+ 1 - 18
admin-ui/src/utils/jsencrypt.js

@@ -2,17 +2,8 @@ import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
 
 // 密钥对生成 http://web.chacuo.net/netrsakeypair
 
-const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
-  'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+const publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuV25rGdxcvQTOurqf66AgTUsDR4ohE34tPhB2B8NVkFoYD4+LtC0Efknz7AvAXX0OkyYp6PgsrapBS3X+T76KK+FTCMrUf01SJvJIm16bno6nInK5LeA+ujtghzC8yQ8w7DuP3xf8m5+UoZ21xLmq/9qHCIzQCKfZKnmyV6H57br+P9MJmVq8G8Tynu7Q26DC9UWAhSWmpsygga5jO2uY3uvAvu2BPnze/xDECEf3Uqs3Mf0Pqg8g7NtpPsGmT4y/14hg0k8Z1AY+QPjzXqN3ikA61ZEGuoGcZ33tTAZ/I27vJI40oOTY9yw2DlxrpNW8naREeo5F/ANagsNtDjuBwIDAQAB'
 
-const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
-  '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
-  'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
-  'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
-  'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
-  'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
-  'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
-  'UP8iWi1Qw0Y='
 
 // 加密
 export function encrypt(txt) {
@@ -20,11 +11,3 @@ export function encrypt(txt) {
   encryptor.setPublicKey(publicKey) // 设置公钥
   return encryptor.encrypt(txt) // 对数据进行加密
 }
-
-// 解密
-export function decrypt(txt) {
-  const encryptor = new JSEncrypt()
-  encryptor.setPrivateKey(privateKey) // 设置私钥
-  return encryptor.decrypt(txt) // 对数据进行解密
-}
-

+ 1 - 1
admin-ui/src/views/work/company/edit.vue

@@ -64,7 +64,7 @@
           <ImageUpload v-model="form.b1" :isShowTip="false" :limit="1" :read="param.detail"></ImageUpload>
         </el-form-item>
       </div>
-      <div class="bos">
+      <div class="bos" v-if="param.detail">
         <div class="lab">
           <div class="bsg"></div>
           <div class="tit">

+ 5 - 5
admin-ui/src/views/work/company/index.vue

@@ -31,8 +31,8 @@
       <el-table-column label="企业名称" align="left" prop="companyName" />
       <el-table-column label="企业方负责人" align="center" prop="director" width="110" />
       <el-table-column label="手机号" align="center" prop="phone" width="130" />
-      <el-table-column label="邮箱" align="center" prop="email" />
-      <el-table-column label="账户余额(元)" align="center" prop="money" width="100" />
+      <el-table-column label="邮箱" align="center" prop="email" width="180"/>
+      <el-table-column label="账户余额(元)" align="center" prop="money" width="110" />
       <el-table-column label="关联用户" align="center" prop="peoples" width="100" />
       <el-table-column label="创建日期" align="center" prop="createTime" width="180" />
       <el-table-column label="账号状态" align="center" prop="state" width="100">
@@ -104,14 +104,14 @@
       },
       op(tag, row) {
         if (tag == 'add') {
-          this.iframe({ obj: edit, param: {}, title: '新增企业', width: '53%', height: '85%' });
+          this.iframe({ obj: edit, param: {}, title: '新增企业', width: '50%', height: '83%' });
         }
         const id = row.id;
         if (tag == 'detail') {
-          this.iframe({ obj: edit, param: { id: id, detail: true }, title: '查看企业信息', width: '55%', height: '85%' });
+          this.iframe({ obj: edit, param: { id: id, detail: true }, title: '查看企业信息', width: '50%', height: '83%' });
         }
         if (tag == 'edit') {
-          this.iframe({ obj: edit, param: { id: id }, title: '编辑企业', width: '53%', height: '85%' });
+          this.iframe({ obj: edit, param: { id: id }, title: '编辑企业', width: '50%', height: '70%' });
         }
         //账号状态
         if (tag == 'change') {

+ 11 - 11
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -1,22 +1,22 @@
 package com.ruoyi.web.controller.system;
 
-import java.util.List;
-import java.util.Set;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginBody;
+import com.ruoyi.common.utils.RsaUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.web.service.SysLoginService;
 import com.ruoyi.framework.web.service.SysPermissionService;
 import com.ruoyi.system.service.ISysMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * 登录验证
@@ -41,8 +41,8 @@ public class SysLoginController {
      * @return 结果
      */
     @PostMapping("/login")
-    public AjaxResult login(@RequestBody LoginBody loginBody) {
-        return loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+    public AjaxResult login(@RequestBody LoginBody loginBody) throws Exception {
+        return loginService.login(RsaUtils.decryptByPrivateKey(loginBody.getUsername()), RsaUtils.decryptByPrivateKey(loginBody.getPassword()), loginBody.getCode(),
                 loginBody.getUuid());
     }
 

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/controller/CompanyController.java

@@ -67,7 +67,7 @@ public class CompanyController extends BaseController {
     @PreAuthorize("@ss.hasPermi('work:company:query')")
     @GetMapping(value = "/detail/{id}")
     public AjaxResult detail(@PathVariable("id") Long id) {
-        Company company = companyService.getById(id);
+        Company company = companyService.selectCompanyById(id);
         return AjaxResult.success(company);
     }
 

+ 0 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Company.java

@@ -105,5 +105,4 @@ public class Company extends BaseData {
 
     @TableField(exist = false)
     private Integer peoples;
-
 }

+ 0 - 23
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/dto/ForgetDto.java

@@ -1,23 +0,0 @@
-package com.ruoyi.web.work.domain.dto;
-
-import com.ruoyi.common.core.validate.Regexp;
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-
-@Data
-@Accessors(chain = true)
-public class ForgetDto {
-
-    @NotBlank(message = "手机号不能为空")
-    @Pattern(regexp = Regexp.PHONE, message = "手机号不合法")
-    private String phonenumber;
-
-    @NotBlank(message = "验证码不能为空")
-    private String code;
-
-    @NotBlank(message = "密码不能为空")
-    private String password;
-}

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/mapper/CompanyMapper.java

@@ -17,6 +17,8 @@ public interface CompanyMapper extends BaseMapper<Company> {
 
     List<CompanyListVo> selectCompanyList(Company company);
 
+    Company selectCompanyById(@Param("id") Long id);
+
     @Select("SELECT * FROM tb_company WHERE company_name=#{companyName}")
     Company selectByCompanyName(@Param("companyName") String companyName);
 }

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/ICompanyService.java

@@ -14,6 +14,9 @@ import java.util.List;
  * @date 2024-04-16
  */
 public interface ICompanyService extends IService<Company> {
+
+    Company selectCompanyById(Long id);
+
     List<Company> selectList(Company company);
 
     List<CompanyListVo> selectCompanyList(Company company);

+ 6 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/CompanyServiceImpl.java

@@ -35,6 +35,12 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
     @Autowired
     private SysPermissionService permissionService;
 
+
+    @Override
+    public Company selectCompanyById(Long id) {
+        return companyMapper.selectCompanyById(id);
+    }
+
     @Override
     public List<Company> selectList(Company company) {
         return companyMapper.selectList(company);

+ 12 - 0
ruoyi-admin/src/main/resources/mapper/work/CompanyMapper.xml

@@ -36,4 +36,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ORDER BY id DESC
     </select>
 
+    <select id="selectCompanyById" resultType="com.ruoyi.web.work.domain.Company">
+        SELECT
+            c.*,
+            u.user_name AS userName
+        FROM
+            tb_company c
+                LEFT JOIN sys_user u ON u.company_id = c.id
+        WHERE
+            c.id =#{id}
+          AND u.create_by = ''
+    </select>
+
 </mapper>

+ 131 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/RsaUtils.java

@@ -0,0 +1,131 @@
+package com.ruoyi.common.utils;
+
+import org.apache.commons.codec.binary.Base64;
+
+import javax.crypto.Cipher;
+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 RsaUtils {
+    // Rsa 私钥
+    public static String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5XbmsZ3Fy9BM66up/roCBNSwNHiiETfi0+EHYHw1WQWhgPj4u0LQR+SfPsC8BdfQ6TJino+CytqkFLdf5Pvoor4VMIytR/TVIm8kibXpuejqcicrkt4D66O2CHMLzJDzDsO4/fF/ybn5ShnbXEuar/2ocIjNAIp9kqebJXofntuv4/0wmZWrwbxPKe7tDboML1RYCFJaamzKCBrmM7a5je68C+7YE+fN7/EMQIR/dSqzcx/Q+qDyDs22k+waZPjL/XiGDSTxnUBj5A+PNeo3eKQDrVkQa6gZxnfe1MBn8jbu8kjjSg5Nj3LDYOXGuk1bydpER6jkX8A1qCw20OO4HAgMBAAECggEAU7laoN1EJ7jIascqTatizXlXwUEK6d9R42NyUgyMeJYob7gNXBXWD3wrGCqqwI0nV6G7HZTua6oHI5i2QRTJ5tCIc4A7E9g7VeVPbqZmMzov+P5fzvh3YF0O0cLt5uZKL9Vddv1VVOnFUr77NF+MIsnFgpmL7n704YHABNoWpnh6cxDpm+sjv1S/Y7Mvq1X+r/D8ocbkd2MKaWxK1OCB64hFE3Cv+9rgp/f9hFg0meAhRQd6+vAo8zm8Y1w7xqFEWEvMgmGgyat5cA8aqZINzRo8fmhN2mj7THvMa32pGIMuOKSgHX8pF6cyaEydNYICljSoxyIeGShU5Wao4LQeYQKBgQDnAd9qgfZcR8EwnjUz6MSQGyCiOHZxUUmKP0IHbu96w+f1CGtSYyjy6jex3qGSxYBa1K2k16GDQFiSUHYu2CFM8TPH/JStRSjiLRcokC8aR7FwCEohI4X9TvvWbHFwgJ5yu8vs0/TJ+X6BoZ7r6nBkz4iSib9Ixbn6Fy2bUHohkQKBgQDNa76XGE6B+wzxo0Wb2tpLCHBVN7leWr/qumLl4Ei1gQeIB0MI3Oc3JogB1dYzEk0KAbspLoZ8oEr5GwlcQcqZ4mdL3m7cTNSfDnpQ6SPY9CvyvwLutyktb+NkL3KYPOCM+NP9QjhZmj4iEnh4NFjXchykxbx9FFQaJBKWrMxKFwKBgQCDtYeifFLwrmCxzaJb5F0eJLlohHTTixs43XRSNKgKAOShypkWMj9IsM3sdhj9S+ow343ZrLAD244kbgfUEZp6+hMh9Rr357S1sCvCDuMsQrAiRjetyUk98eiYit/q2wp8NCLC9t5cwgmk83de3x4R/FnL4wnS/hlZRBnWsf3QYQKBgQDHKu4xpTmJQRY9uuYkxL7d/SKdHVg3KZnmRizZYOpeQOpCc3gFQdlUWaGI1gHGprnXN/J1bUyrzOakPBiJQKjlJuSsZM/r/Pox9WGWzVUaZzOtOpHnTeM40MESRAbBoFS/mgpABVKJXclcU7hGI8r3qQYopCeqxmj8p3j2ajfwpQKBgHKsWjZaULE9+sFwAYOn9eU59/CNqbpSskdUFXdaVGNFIunNxusoWL3x9W5Xjo2IXcEGaI4ch3vOC+Ha3+7vv3ty81JZeGFfiW+VGf8bv3Md+6K+x78/DE69HRYu4fCfa4OhFL+fp3IkPY+HwxKPRwS46K4JLG1jp1vdkn7WG4mf";
+
+    /**
+     * 私钥解密
+     *
+     * @param text 私钥
+     * @param text 待解密的文本
+     * @return 解密后的文本
+     */
+    public static String decryptByPrivateKey(String text) throws Exception {
+        return decryptByPrivateKey(privateKey, text);
+    }
+
+    /**
+     * 公钥解密
+     *
+     * @param publicKeyString 公钥
+     * @param text            待解密的信息
+     * @return 解密后的文本
+     */
+    public static String decryptByPublicKey(String publicKeyString, String text) throws Exception {
+        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
+        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.DECRYPT_MODE, publicKey);
+        byte[] result = cipher.doFinal(Base64.decodeBase64(text));
+        return new String(result);
+    }
+
+    /**
+     * 私钥加密
+     *
+     * @param privateKeyString 私钥
+     * @param text             待加密的信息
+     * @return 加密后的文本
+     */
+    public static String encryptByPrivateKey(String privateKeyString, String text) throws Exception {
+        PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
+        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.ENCRYPT_MODE, privateKey);
+        byte[] result = cipher.doFinal(text.getBytes());
+        return Base64.encodeBase64String(result);
+    }
+
+    /**
+     * 私钥解密
+     *
+     * @param privateKeyString 私钥
+     * @param text             待解密的文本
+     * @return 解密后的文本
+     */
+    public static String decryptByPrivateKey(String privateKeyString, String text) throws Exception {
+        PKCS8EncodedKeySpec pkcs8EncodedKeySpec5 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyString));
+        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec5);
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.DECRYPT_MODE, privateKey);
+        byte[] result = cipher.doFinal(Base64.decodeBase64(text));
+        return new String(result);
+    }
+
+    /**
+     * 公钥加密
+     *
+     * @param publicKeyString 公钥
+     * @param text            待加密的文本
+     * @return 加密后的文本
+     */
+    public static String encryptByPublicKey(String publicKeyString, String text) throws Exception {
+        X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyString));
+        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
+        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
+        Cipher cipher = Cipher.getInstance("RSA");
+        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+        byte[] result = cipher.doFinal(text.getBytes());
+        return Base64.encodeBase64String(result);
+    }
+
+    /**
+     * 构建RSA密钥对
+     *
+     * @return 生成后的公私钥信息
+     */
+    public static RsaKeyPair generateKeyPair() throws NoSuchAlgorithmException {
+        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
+        keyPairGenerator.initialize(1024);
+        KeyPair keyPair = keyPairGenerator.generateKeyPair();
+        RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
+        RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
+        String publicKeyString = Base64.encodeBase64String(rsaPublicKey.getEncoded());
+        String privateKeyString = Base64.encodeBase64String(rsaPrivateKey.getEncoded());
+        return new RsaKeyPair(publicKeyString, privateKeyString);
+    }
+
+    /**
+     * RSA密钥对对象
+     */
+    public static class RsaKeyPair {
+        private final String publicKey;
+        private final String privateKey;
+
+        public RsaKeyPair(String publicKey, String privateKey) {
+            this.publicKey = publicKey;
+            this.privateKey = privateKey;
+        }
+
+        public String getPublicKey() {
+            return publicKey;
+        }
+
+        public String getPrivateKey() {
+            return privateKey;
+        }
+    }
+}