Преглед изворни кода

系统邮箱导入;邮箱账号密码展示

zoujiajian пре 2 година
родитељ
комит
51579499ee

+ 17 - 0
netflix-dao/src/main/java/com/cyksj/mapper/SysEmailMapper.java

@@ -0,0 +1,17 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.SysEmail;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: SysEmailMapper
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 16:19
+ */
+public interface SysEmailMapper extends BaseMapper<SysEmail> {
+	void batchInsert(@Param("list") List<SysEmail> data);
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/SysEmail.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: SysEmail
+ * 创建者: JavaZou
+ * 创建时间:2023/11/14 16:18
+ */
+@Getter
+@Setter
+public class SysEmail extends BaseEntity{
+	@NotEmpty
+	private String email;
+
+	@NotEmpty
+	private String password;
+
+	@TableLogic(value = "1", delval = "0")
+	private Boolean deleted;
+}

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelManageAccountData.java

@@ -44,6 +44,10 @@ public class ExcelManageAccountData {
 	@DbField("a.password")
 	private String password;
 
+	@ExcelProperty("邮箱密码")
+	@DbField("select password from sys_email where email = a.account limit 1")
+	private String emailPassword;
+
 	@ExcelProperty("APIkey")
 	@DbField("a.api_key")
 	private String apiKey;

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/AccountView.java

@@ -40,6 +40,9 @@ public class AccountView {
     @DbField("a.account")
     private String account;
 
+    @DbIgnore
+    private String emailPassword;
+
     @DbField("a.password")
     private String password;
 

+ 13 - 0
netflix-dao/src/main/resources/mapper/SysEmailMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.SysEmailMapper">
+
+    <insert id="batchInsert">
+        insert ignore into sys_email(`email`,`password`,`created_time`,`update_time`)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.email},#{item.password},now(),now())
+        </foreach>
+    </insert>
+</mapper>

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/mange/CmsAccountService.java

@@ -8,6 +8,7 @@ import com.cyksj.model.excel.ExcelAccountData;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.views.CmsUserVO;
 import com.cyksj.model.views.ExpiredAccountDataView;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Date;
 import java.util.List;
@@ -48,4 +49,6 @@ public interface CmsAccountService extends IService<Account> {
 	 * 解析ChatGpt美区APPID账号
 	 */
 	void analysisAmericaAppidAccount(Long goodsId, Long skuId, List<Object> accountList);
+
+	void readFileAndImportEmail(MultipartFile file) throws Exception;
 }

+ 39 - 0
netflix-service/src/main/java/com/cyksj/service/mange/account/CmsAccountServiceImpl.java

@@ -13,6 +13,7 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.mapper.AccountMapper;
 import com.cyksj.mapper.AccountUpdatePasswordRecordMapper;
+import com.cyksj.mapper.SysEmailMapper;
 import com.cyksj.mapper.manage.AutoUpdateAccountPwdLogMapper;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
@@ -33,7 +34,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.*;
 import java.util.*;
 
 /**
@@ -62,6 +65,8 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 
 	private final SysConfigService sysConfigService;
 
+	private final SysEmailMapper sysEmailMapper;
+
 	@Override
 	public IPage<ExpiredAccountDataView> getExpiredAccountView(Boolean isCorpWx, String customerService, Long goodsId, Long skuId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startTime, String endTime, String now, Long offset, Long limit) {
 		return accountMapper.getExpiredAccountView(isCorpWx, customerService, goodsId, skuId, account, renewStatus, handleStatus, cnAccount, usAccount, userId, startTime, endTime, now, new Page<>(offset, limit));
@@ -185,6 +190,40 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 		insertAccount(goodsId, skuId, accountList);
 	}
 
+	@Override
+	public void readFileAndImportEmail(MultipartFile file) throws Exception {
+		InputStream in = null;
+		BufferedReader br = null;
+		String regex = "----";
+		List<SysEmail> sysEmails = new ArrayList<>();
+		try {
+			in = file.getInputStream();
+			br = new BufferedReader(new InputStreamReader(file.getInputStream()));
+			String content = null;
+			while ((content = br.readLine()) != null) {
+				String[] split = content.split(regex);
+				String email = split[0];
+				String password = split[1];
+				SysEmail sysEmail = new SysEmail();
+				sysEmail.setEmail(email);
+				sysEmail.setPassword(password);
+				sysEmails.add(sysEmail);
+			}
+			if (CollUtil.isNotEmpty(sysEmails)) {
+				Lists.partition(sysEmails, 1000).forEach(data->{
+					sysEmailMapper.batchInsert(data);
+				});
+			}
+		} finally {
+			if (br != null) {
+				br.close();
+			}
+			if (in != null) {
+				in.close();
+			}
+		}
+	}
+
 	/**
 	 *
 	 * @param goodsId

+ 61 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -47,7 +47,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -101,6 +103,8 @@ public class CmsAccountController {
 
 	private final GoodsDonSkuMapper goodsDonSkuMapper;
 
+	private final SysEmailMapper sysEmailMapper;
+
 	@GetMapping("/get")
 	@SaCheckPermission("account:view")
 	public Result<SearchResult<AccountView>> get(Long userId, String showId, String nickName, String submitAccount, String expiryStartTime, String expiryEndTime, Boolean expiredAll, Boolean existsExpired, Boolean existsExpiredToday, Integer noChangeMonths) {
@@ -177,6 +181,13 @@ public class CmsAccountController {
 			}
 			Integer expiryCount = groupsMapper.countExpiredNum(accountView.getId());
 			accountView.setExpiryCount(expiryCount);
+
+			if (StrUtil.isNotEmpty(accountView.getAccount())) {
+				Optional.ofNullable(sysEmailMapper.selectOne(Wrappers.lambdaQuery(SysEmail.class)
+								.eq(SysEmail::getEmail, accountView.getAccount()).select(SysEmail::getPassword)
+								.last("limit 1")))
+						.ifPresent(email -> accountView.setEmailPassword(email.getPassword()));
+			}
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
@@ -977,4 +988,54 @@ public class CmsAccountController {
 		accountService.save(account);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 批量导入系统邮箱
+	 */
+	@PostMapping("/batch/import/email")
+	public Result<String> batchImportEmail(MultipartFile file) throws Exception {
+		accountService.readFileAndImportEmail(file);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 系统邮箱列表
+	 */
+	@GetMapping("/get/email")
+	public Result<SearchResult<SysEmail>> getEmail() {
+		SearchResult<SysEmail> search = beanSearcher.search(SysEmail.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(SysEmail::getDeleted, 1)
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 新增邮箱
+	 */
+	@PostMapping("/post/email")
+	public Result postEmail(@RequestBody @Validated SysEmail sysEmail) {
+		try {
+			sysEmailMapper.insert(sysEmail);
+		} catch (DuplicateKeyException e) {
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 修改系统邮箱
+	 */
+	@PutMapping("/update/email")
+	public Result updateEmail(@RequestBody SysEmail sysEmail) {
+		sysEmailMapper.updateById(sysEmail);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 删除系统邮箱
+	 */
+	@DeleteMapping("/delete/email/{id}")
+	public Result deleteEmail(@PathVariable Long id) {
+		sysEmailMapper.deleteById(id);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }