浏览代码

add 批量导入账号

zoujiajian 3 年之前
父节点
当前提交
f32b9199d5

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelImportAccountData.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: ExcelImportAccountData
+ *创建者: JavaZou
+ *创建时间:2023/3/15 14:19
+ */
+@Getter
+@Setter
+public class ExcelImportAccountData {
+	@ExcelProperty("账号")
+	private String account;
+
+	@ExcelProperty("密码")
+	private String password;
+
+	@ExcelProperty("首开时间")
+	private String startTime;
+
+	@ExcelProperty("到期时间")
+	private String expiryTime;
+}

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

@@ -20,10 +20,12 @@ import com.cyksj.mapper.HomeGroupMapper;
 import com.cyksj.mapper.UserTicketClearedRecordMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelAccountTemplateData;
+import com.cyksj.model.excel.ExcelImportAccountData;
 import com.cyksj.model.excel.ExcelManageAccountData;
 import com.cyksj.model.manage.request.ReqAccountIncrExpiryTime;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.GroupsRelationView;
+import com.cyksj.model.views.GoodsDonSkuView;
 import com.cyksj.model.views.UserTicketClearedRecordView;
 import com.cyksj.service.mange.CmsAccountService;
 import com.cyksj.service.mange.CmsGroupService;
@@ -210,6 +212,67 @@ public class CmsAccountController {
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
+	/**
+	 * 获取导入账号模板
+	 */
+	@GetMapping("/get/account/import/template")
+	public void getImportAccountTemplate(HttpServletResponse response) {
+		EasyExcelUtils.createTemplateExcel(response, ExcelImportAccountData.class, "导入账号模板", "导入账号模板", ExcelTypeEnum.XLSX, null);
+	}
+
+	/**
+	 * 导入账号
+	 */
+	@PostMapping("/import/account/issuance")
+	public Result<String> importAccountAndIssuance(Long goodsId, Long skuId, MultipartFile file) throws Exception {
+		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getGoodsId, goodsId).field(GoodsDonSkuView::getSkuId, skuId).build());
+		if (goodsDonSkuView == null) {
+			throw BusinessRuntimeException.getInstance("所选平台与规格不匹配");
+		}
+		EasyExcel.read(file.getInputStream(), ExcelImportAccountData.class, new AnalysisEventListener<ExcelImportAccountData>() {
+			@SneakyThrows
+			@Override
+			public void invoke(ExcelImportAccountData data, AnalysisContext analysisContext) {
+				String account = data.getAccount(), password = data.getPassword(), startTime = data.getStartTime(), expiryTime = data.getExpiryTime();
+				if (StrUtil.isNotBlank(data.getAccount())) {
+					//账号是否已经添加过
+					if (!account.contains("客服")) {
+						int count = accountService.count(Wrappers.lambdaQuery(Account.class)
+								.eq(Account::getAccount, account)
+								.eq(Account::getGoodsId, goodsId));
+						if (count > 0) {
+							log.info("该平台下:{}已生成该账号:{}", goodsId, account);
+							return;
+						}
+					}
+					Account at = new Account();
+					at.setAccount(account.trim());
+					at.setPassword(password.trim());
+					at.setGoodsId(goodsId);
+					at.setSkuId(skuId);
+					if (StrUtil.isNotBlank(startTime)) {
+						at.setStartTime(DateUtil.parse(startTime, "yyyy-MM-dd HH:mm:ss"));
+					}
+					if (StrUtil.isNotBlank(expiryTime)) {
+						at.setExpiryTime(DateUtil.parse(expiryTime, "yyyy-MM-dd HH:mm:ss"));
+					}
+					accountService.save(at);
+					//自动配置车队
+					GroupsTrips groupsTrips = new GroupsTrips();
+					groupsTrips.setSkuId(at.getSkuId());
+					groupsTrips.setAccountId(at.getId());
+					cmsGroupService.issuance(groupsTrips);
+				}
+			}
+
+			@Override
+			public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+			}
+		}).sheet().doRead();
+		return GatewayResponse.SUCCESS.newBuilder().toResult("导入账号成功");
+	}
+
     @PutMapping("/update")
     @SaCheckPermission("account:update")
     @Log(module = "平台管理/编辑账号", businessType = BusinessType.PUT, isSaveRequestData = true)