Browse Source

Merge branch 'abroad' into abroad_pre

zoujiajian 2 years ago
parent
commit
c6fd97cde3

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

@@ -0,0 +1,17 @@
+package com.cyksj.mapper.sys;
+
+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;
+}

+ 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.sys.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;
 }

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

@@ -2,6 +2,7 @@ package com.cyksj.service.mange.account;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,6 +15,7 @@ import com.cyksj.mapper.AccountMapper;
 import com.cyksj.mapper.AccountUpdatePasswordRecordMapper;
 import com.cyksj.mapper.manage.AutoUpdateAccountPwdLogMapper;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
+import com.cyksj.mapper.sys.SysEmailMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelAccountData;
 import com.cyksj.model.manage.views.AccountView;
@@ -31,7 +33,11 @@ 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.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.*;
 
 /**
@@ -58,6 +64,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));
@@ -181,6 +189,48 @@ 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<>();
+		List<String> error = 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);
+				if (split.length > 1) {
+					String email = split[0];
+					String password = split[1];
+					if (!StrUtil.hasEmpty(email, password)) {
+						SysEmail sysEmail = new SysEmail();
+						sysEmail.setEmail(email);
+						sysEmail.setPassword(password);
+						sysEmails.add(sysEmail);
+					}
+				}else {
+					error.add(split[0]);
+				}
+			}
+			if (CollUtil.isNotEmpty(sysEmails)) {
+				Lists.partition(sysEmails, 1000).forEach(data -> {
+					sysEmailMapper.batchInsert(data);
+				});
+			}
+		} finally {
+			if (br != null) {
+				br.close();
+			}
+			if (in != null) {
+				in.close();
+			}
+		}
+		System.out.println(Jsons.toJson(error));
+	}
+
 	/**
 	 *
 	 * @param goodsId

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

@@ -21,6 +21,7 @@ import com.cyksj.enums.BusinessType;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
+import com.cyksj.mapper.sys.SysEmailMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelDoubleVerifyAccountData;
 import com.cyksj.model.excel.ExcelImportAccountData;
@@ -47,7 +48,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;
 
@@ -100,6 +103,8 @@ public class CmsAccountController {
 
 	private final RedisService redisService;
 
+	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) {
@@ -873,4 +878,54 @@ public class CmsAccountController {
 		List<DoubleVerifyClickRefreshRecord> search = beanSearcher.searchAll(DoubleVerifyClickRefreshRecord.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 批量导入系统邮箱
+	 */
+	@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();
+	}
 }

+ 14 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/cms/CmsAdminUserController.java

@@ -314,4 +314,18 @@ public class CmsAdminUserController {
 		SearchResult<CmsUserVO> search = beanSearcher.search(CmsUserVO.class, builder.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 获取token
+	 */
+	@GetMapping("/get/abroad/token")
+	public Result<String> getAbroadToken(String phone) {
+		CmsUser cmsUser = cmsUserMapper.selectOne(Wrappers.lambdaQuery(CmsUser.class).eq(CmsUser::getPhone, phone).last("limit 1"));
+		if (cmsUser == null) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		StpUtil.login(cmsUser.getId());
+		String token = StpUtil.getTokenValue();
+		return GatewayResponse.SUCCESS.newBuilder().toResult(token);
+	}
 }