From da6cd7e05fb6c73e765fd766cd39706f2e0aac83 Mon Sep 17 00:00:00 2001 From: zyy <121611808@qq.com> Date: Sat, 17 Oct 2020 10:25:04 +0800 Subject: [PATCH] up --- .../cases/controller/CaseUserController.java | 2 +- .../java/com/bsd/cases/model/CaseArea.java | 20 +++ .../java/com/bsd/cases/model/CaseCompany.java | 33 ++++ .../java/com/bsd/cases/model/CaseStore.java | 33 +++- .../java/com/bsd/cases/model/CaseUsers.java | 55 ++++++- .../java/com/bsd/cases/model/ImportPO.java | 148 ++++++++++++++++++ .../bsd/cases/service/CaseUsersService.java | 7 +- .../service/impl/CaseUsersServiceImpl.java | 4 + .../java/com/bsd/cases/util/EncryptUtils.java | 122 +++++++++++++++ .../java/com/bsd/cases/util/FileUtils.java | 95 +++++++++++ 10 files changed, 504 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/bsd/cases/model/CaseArea.java create mode 100644 src/main/java/com/bsd/cases/model/CaseCompany.java create mode 100644 src/main/java/com/bsd/cases/model/ImportPO.java create mode 100644 src/main/java/com/bsd/cases/util/EncryptUtils.java create mode 100644 src/main/java/com/bsd/cases/util/FileUtils.java diff --git a/src/main/java/com/bsd/cases/controller/CaseUserController.java b/src/main/java/com/bsd/cases/controller/CaseUserController.java index 8330312..47b435e 100644 --- a/src/main/java/com/bsd/cases/controller/CaseUserController.java +++ b/src/main/java/com/bsd/cases/controller/CaseUserController.java @@ -17,7 +17,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @RestController -@RequestMapping("/api/user") +@RequestMapping("user") public class CaseUserController { @Resource diff --git a/src/main/java/com/bsd/cases/model/CaseArea.java b/src/main/java/com/bsd/cases/model/CaseArea.java new file mode 100644 index 0000000..fc58825 --- /dev/null +++ b/src/main/java/com/bsd/cases/model/CaseArea.java @@ -0,0 +1,20 @@ +package com.bsd.cases.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; + + + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("case_area") +public class CaseArea extends BaseEntity { + + @Column(name = "area_name") + private String areaName; + + +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/model/CaseCompany.java b/src/main/java/com/bsd/cases/model/CaseCompany.java new file mode 100644 index 0000000..06d32cb --- /dev/null +++ b/src/main/java/com/bsd/cases/model/CaseCompany.java @@ -0,0 +1,33 @@ +package com.bsd.cases.model; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("case_company") +public class CaseCompany extends BaseEntity { + + /** + * 区域编号 + */ + @Column(name = "area_id") + private Long areaId; + + /** + * 公司编号 + */ + @Column(name = "company_id") + private String companyId; + + /** + * 公司名 + */ + @Column(name = "company_name") + private String companyName; + + +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/model/CaseStore.java b/src/main/java/com/bsd/cases/model/CaseStore.java index 02b4f6b..67c9b41 100644 --- a/src/main/java/com/bsd/cases/model/CaseStore.java +++ b/src/main/java/com/bsd/cases/model/CaseStore.java @@ -4,19 +4,38 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.persistence.Column; + @Data @EqualsAndHashCode(callSuper = false) @TableName("case_store") -public class CaseStore extends BaseEntity{ +public class CaseStore extends BaseEntity { - private Long companyId; + /** + * 店铺编号 + */ + @Column(name = "store_id") + private String storeId; - private String companyCode; + /** + * 店铺名 + */ + @Column(name = "store_name") + private String storeName; - private String companyName; - private String storeId; + @Column(name = "company_id") + private Long companyId; + /** + * 公司编号 + */ + @Column(name = "company_code") + private String companyCode; - private String storeName; + /** + * 公司名 + */ + @Column(name = "company_name") + private String companyName; -} +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/model/CaseUsers.java b/src/main/java/com/bsd/cases/model/CaseUsers.java index 1048269..6519806 100644 --- a/src/main/java/com/bsd/cases/model/CaseUsers.java +++ b/src/main/java/com/bsd/cases/model/CaseUsers.java @@ -4,34 +4,81 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.persistence.Column; + + @Data @EqualsAndHashCode(callSuper = false) @TableName("case_users") -public class CaseUsers extends BaseEntity{ +public class CaseUsers extends BaseEntity { + /** + * 用户名 + */ + @Column(name = "user_name") private String userName; + /** + * 工号 + */ + @Column(name = "user_no") private String userNo; + /** + * 微信openId + */ + @Column(name = "open_id") private String openId; + /** + * 手机号 + */ private String mobile; + /** + * 用户头像 + */ + @Column(name = "user_image") private String userImage; + /** + * 密码 + */ private String password; + /** + * 公司id + */ + @Column(name = "company_id") private Long companyId; + @Column(name = "company_code") private String companyCode; + /** + * 公司名称 + */ + @Column(name = "company_name") private String companyName; + /** + * 店铺id + */ + @Column(name = "store_id") private Long storeId; - private String storeCode; - + /** + * 店铺名称 + */ + @Column(name = "store_name") private String storeName; + /** + * 店铺名称 + */ + @Column(name = "store_code") + private String storeCode; + private Integer role; -} + +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/model/ImportPO.java b/src/main/java/com/bsd/cases/model/ImportPO.java new file mode 100644 index 0000000..8b1a283 --- /dev/null +++ b/src/main/java/com/bsd/cases/model/ImportPO.java @@ -0,0 +1,148 @@ +package com.bsd.cases.model; + +import javax.persistence.Column; + +/** + * excel 导入po + */ +public class ImportPO { + + + private String userName; + + /** + * 工号 + */ + private String userNo; + + /** + * 手机号 + */ + private String mobile; + + + /** + * 密码 + */ + private String password; + + + private String companyCode; + + /** + * 公司名称 + */ + private String companyName; + + /** + * 店铺id + */ + private Integer storeId; + + /** + * 店铺名称 + */ + private String storeName; + + /** + * 店铺名称 + */ + private String storeCode; + + /** + * 区域名称 + */ + private String areaName; + + private Integer role; + + + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getUserNo() { + return userNo; + } + + public void setUserNo(String userNo) { + this.userNo = userNo; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public Integer getStoreId() { + return storeId; + } + + public void setStoreId(Integer storeId) { + this.storeId = storeId; + } + + public String getStoreName() { + return storeName; + } + + public void setStoreName(String storeName) { + this.storeName = storeName; + } + + public String getStoreCode() { + return storeCode; + } + + public void setStoreCode(String storeCode) { + this.storeCode = storeCode; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public Integer getRole() { + return role; + } + + public void setRole(Integer role) { + this.role = role; + } +} diff --git a/src/main/java/com/bsd/cases/service/CaseUsersService.java b/src/main/java/com/bsd/cases/service/CaseUsersService.java index 47e27d3..4e3f533 100644 --- a/src/main/java/com/bsd/cases/service/CaseUsersService.java +++ b/src/main/java/com/bsd/cases/service/CaseUsersService.java @@ -27,14 +27,15 @@ public interface CaseUsersService { void add(JSONObject params); - List importFromExcel(String uploadPath, String fileName)throws IOException; + List importFromExcel(String uploadPath, String fileName) throws IOException; CaseUsers detail(JSONObject params); void delete(JSONObject params); -} - + String export(JSONObject params); + void saveUserList(String uploadPath, String fileName); +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java b/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java index bb8666e..b188cee 100644 --- a/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java +++ b/src/main/java/com/bsd/cases/service/impl/CaseUsersServiceImpl.java @@ -50,6 +50,8 @@ public class CaseUsersServiceImpl implements CaseUsersService { private String exportPath; @Value("${export.url}") private String exportUrl; + private String uploadPath; + private String fileName; public CaseUsers findUser(String userName, String password) { @@ -828,4 +830,6 @@ public class CaseUsersServiceImpl implements CaseUsersService { //将Excel写入输出流中 return url; } + + } diff --git a/src/main/java/com/bsd/cases/util/EncryptUtils.java b/src/main/java/com/bsd/cases/util/EncryptUtils.java new file mode 100644 index 0000000..88cf0d7 --- /dev/null +++ b/src/main/java/com/bsd/cases/util/EncryptUtils.java @@ -0,0 +1,122 @@ +package com.bsd.cases.util; + + +import com.bsd.cases.constants.Constants; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.StringUtils; +import sun.misc.BASE64Decoder; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.spec.SecretKeySpec; + +/** + * AES算法进行加密 + **/ +public class EncryptUtils { + + /** + * 密钥 + */ + private static final String KEY = "cb472ab819ba7209e37fbf0e501a2964";// AES加密要求key必须要128个比特位(这里需要长度为16,否则会报错) + + /** + * 算法 + */ + private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding"; + + public static void main(String[] args) throws Exception { + + String content = "{\"mobile\":\"13233\",\"userName\":\"朱姚姚\",\"userNo\":\"212334\",\"companyId\":\"220f003\",\"companyName\":\"U唐fff宝刚\",\"storeId\":\"U10aaa31000\",\"storeName\":\"fffdadfa\"}"; + System.out.println("加密前:" + content); +//// + System.out.println("加密密钥和解密密钥:" + KEY); +//// + String encrypt = aesEncrypt(content, KEY); + System.out.println("加密后:" + encrypt); + +// encrypt = "hu2YvwS7pH8nOhlKK9bO/X6m4mpwZDMSog1hufKuPTAOtwhvO4497Pnk4Ku/yXd/U7xDM2PdtSD2UWZmccjW15PUW5gas3recsphJhhQPEo1X9gG1Q4jIH+gNTe75vFE1iZ1b9NSW1HC825MOAMQYUx/gC8iPiUljEIAGpTidudrt8ePim+dvSbrvbE5+WlW/RO7pC1Ouc/LE4ix4bUWxg=="; +// System.out.println(encrypt); +// String decrypt = aesDecrypt(encrypt, Constants.RETAIL_KEY); + String decrypt = aesDecrypt("Q/XRj/GqO8ULfK/IlzILv4C8wBsbsLbA23L0p3cZbz/6jlOSXPw3JyOyw9bPYmQw/2vYa6iXM/AERu47ZzznhWhR4ltbB6vV6uTn0QNumYK5wKyZcBGhWxzv/O7QsSoyklqLfF4ycobgMJf32kGRSndkWqpYfO/lzJ/sinFtk0w=", Constants.RETAIL_KEY); + + System.out.println("解密后:" + decrypt); + } + + /** + * base 64 encode + * @param bytes 待编码的byte[] + * @return 编码后的base 64 code + */ + private static String base64Encode(byte[] bytes){ + return Base64.encodeBase64String(bytes); + } + + /** + * base 64 decode + * @param base64Code 待解码的base 64 code + * @return 解码后的byte[] + * @throws Exception 抛出异常 + */ + private static byte[] base64Decode(String base64Code) throws Exception { + return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code); + } + + + /** + * AES加密 + * @param content 待加密的内容 + * @param encryptKey 加密密钥 + * @return 加密后的byte[] + */ + private static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception { + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + kgen.init(128); + Cipher cipher = Cipher.getInstance(ALGORITHMSTR); + cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES")); + + return cipher.doFinal(content.getBytes("utf-8")); + } + + + /** + * AES加密为base 64 code + * + * @param content 待加密的内容 + * @param encryptKey 加密密钥 + * @return 加密后的base 64 code + */ + private static String aesEncrypt(String content, String encryptKey) throws Exception { + return base64Encode(aesEncryptToBytes(content, encryptKey)); + } + + /** + * AES解密 + * + * @param encryptBytes 待解密的byte[] + * @param decryptKey 解密密钥 + * @return 解密后的String + */ + public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception { + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + kgen.init(128); + Cipher cipher = Cipher.getInstance(ALGORITHMSTR); + cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES")); + byte[] decryptBytes = cipher.doFinal(encryptBytes); + + return new String(decryptBytes); + } + + + /** + * 将base 64 code AES解密 + * + * @param encryptStr 待解密的base 64 code + * @param decryptKey 解密密钥 + * @return 解密后的string + */ + public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception { + return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey); + } + +} \ No newline at end of file diff --git a/src/main/java/com/bsd/cases/util/FileUtils.java b/src/main/java/com/bsd/cases/util/FileUtils.java new file mode 100644 index 0000000..9a1f459 --- /dev/null +++ b/src/main/java/com/bsd/cases/util/FileUtils.java @@ -0,0 +1,95 @@ +package com.bsd.cases.util; + + +import org.springframework.util.FileCopyUtils; + +import java.io.*; +import java.util.Map; + +/** + * 文件操作工具类 + */ +public class FileUtils { + + + public static void read(String path, Map map) { + + BufferedReader br = null; + InputStreamReader reader = null; + try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw + + /* 读入TXT文件 */ +// String pathname = "C:\\360Downloads\\input.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径 + File filename = new File(path); // 要读取以上路径的input。txt文件 + reader = new InputStreamReader( + new FileInputStream(filename), "utf-8"); // 建立一个输入流对象reader + br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言 + String line = ""; + line = br.readLine(); + int count = 0; + while (line != null) { + line = br.readLine(); // 一次读入一行数据 + count++; + map.put(count, line); + + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (reader != null) try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + if (br != null) try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + + public static void uploadImage(byte[] file, String filePath, String fileName) throws Exception { + + File targetFile = new File(filePath); + + System.out.println("-----"+filePath+fileName); + + if (!targetFile.exists()) { + targetFile.mkdirs(); + } + + + FileOutputStream out = new FileOutputStream(filePath + fileName); + out.write(file); +// WaterMarkUtils.mark(filePath+fileName, filePath+fileName, Color.YELLOW, DateUtils.getCurDateTimeString()); + out.flush(); + out.close(); + } + + public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception { + + File targetFile = new File(filePath); + if (!targetFile.exists()) { + targetFile.mkdirs(); + } + FileOutputStream out = new FileOutputStream(filePath + fileName); + out.write(file); + out.flush(); + out.close(); + } + + /** + * + * @param absPath + * @param newFilePath + */ + public static void copyFile(String absPath, String newFilePath) throws IOException { + + File orignal = new File(absPath); + File newFile = new File(newFilePath); + FileCopyUtils.copy(orignal, newFile); + } +}