From 64c03768fff8c93af41294ffe332cf70a8fdaa88 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Fri, 11 Apr 2025 14:07:37 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=E6=A8=A1=E5=9D=97=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/mapper/primary/entity/Account.java | 2 +- .../ai/da/model/dto/SubAccountImportDTO.java | 21 ++++++ .../da/service/impl/AccountServiceImpl.java | 73 ++++++++++++++++--- 3 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/ai/da/model/dto/SubAccountImportDTO.java diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Account.java b/src/main/java/com/ai/da/mapper/primary/entity/Account.java index cc0b61c0..952564d9 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/Account.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/Account.java @@ -121,7 +121,7 @@ public class Account implements Serializable { private Integer isAdmin; - private BigDecimal shareCredits; + private BigDecimal creditsUsageLimit; private Integer subAccountNum; diff --git a/src/main/java/com/ai/da/model/dto/SubAccountImportDTO.java b/src/main/java/com/ai/da/model/dto/SubAccountImportDTO.java new file mode 100644 index 00000000..d4d0609a --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/SubAccountImportDTO.java @@ -0,0 +1,21 @@ +package com.ai.da.model.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +@Data +public class SubAccountImportDTO { + + @ExcelProperty("name") + private String name; + + @ExcelProperty("email") + private String email; + + @ExcelProperty("password") + private String password; + + @ExcelProperty("credisUsageLimit") + private Integer credisUsageLimit; +} + diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index c0fa7742..df9f482d 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -21,6 +21,7 @@ import com.ai.da.model.enums.AutoApproved; import com.ai.da.model.enums.Language; import com.ai.da.model.vo.*; import com.ai.da.service.*; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -57,6 +58,8 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -1649,16 +1652,6 @@ public class AccountServiceImpl extends ServiceImpl impl } } - public static void main(String[] args) { - List a = new ArrayList<>(); - a.add("1023316923@qq.com"); - a.add("Malinyuquan@gmail.com"); - - if (a.contains("malinyuquan@gmail.com")) { - log.info("aaaaaaaaaaaaaaaaaaaaa"); - } - } - private static final String QUERY_PAID_CUSTOMER_EMAIL = "SELECT distinct c.email " + "FROM `pmr_wc_order_stats` o " + "inner join `pmr_wc_customer_lookup` c " + @@ -2944,7 +2937,65 @@ public class AccountServiceImpl extends ServiceImpl impl @Override public Boolean subAccountImport(MultipartFile file) { - return null; + AuthPrincipalVo vo = UserContext.getUserHolder(); + Account parent = accountMapper.selectById(vo.getId()); + try { + List importList = EasyExcel.read( + file.getInputStream(), + SubAccountImportDTO.class, + null + ).sheet().doReadSync(); + + // 示例:打印或保存 + for (SubAccountImportDTO dto : importList) { + + Account account = new Account(); + account.setUserName(dto.getName()); + account.setUserEmail(dto.getEmail()); + account.setUserPassword(md5(dto.getPassword() + "abc")); + account.setCreditsUsageLimit(BigDecimal.valueOf(dto.getCredisUsageLimit())); + account.setParentId(vo.getId()); + account.setValidStartTime(parent.getValidStartTime()); + account.setValidEndTime(parent.getValidEndTime()); + account.setCreateDate(new Date()); + account.setIsTrial(0); + account.setIsBeginner(1); + account.setCredits(BigDecimal.valueOf(0)); + if (parent.getSystemUser() == 5) { + account.setSystemUser(6); + } + if (parent.getSystemUser() == 7) { + account.setSystemUser(8); + } + account.setOrganizationName(parent.getOrganizationName()); + account.setParentId(parent.getId()); + accountMapper.insert(account); + } + + return true; + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + + public static String md5(String input) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] messageDigest = md.digest(input.getBytes()); + + // 转为16进制字符串 + StringBuilder sb = new StringBuilder(); + for (byte b : messageDigest) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) sb.append('0'); // 补0 + sb.append(hex); + } + return sb.append("abc").toString(); + + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("MD5算法不可用", e); + } } @Override