From f1fa213afe8d5b9af4272f6c7dc82917f5baf82f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 12 七月 2024 15:45:01 +0800
Subject: [PATCH] 提交
---
server/service/src/main/java/com/doumee/core/utils/Constants.java | 45 ++++++++++-----
server/service/src/main/java/com/doumee/service/business/InitService.java | 1
server/admin/src/main/java/com/doumee/api/business/UsersController.java | 19 +++++-
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java | 57 +++++++++++++++++++
server/admin/src/main/java/com/doumee/api/business/ShopController.java | 4 -
server/service/src/main/java/com/doumee/dao/admin/request/UserImport.java | 39 +++++++++++++
server/service/src/main/java/com/doumee/service/business/UsersService.java | 3 +
7 files changed, 146 insertions(+), 22 deletions(-)
diff --git a/server/admin/src/main/java/com/doumee/api/business/ShopController.java b/server/admin/src/main/java/com/doumee/api/business/ShopController.java
index 1afee8f..082befb 100644
--- a/server/admin/src/main/java/com/doumee/api/business/ShopController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/ShopController.java
@@ -109,10 +109,6 @@
})
@RequiresPermissions("business:shop:create")
public ApiResponse<String> importExcel (@ApiParam(value = "file") MultipartFile file ) {
-// Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP);
-// if(importing!=null && importing){
-// throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
-// }
shopService.importBatch(file);
// shopService.dealShopNamePath();
return ApiResponse.success("鎿嶄綔鎴愬姛");
diff --git a/server/admin/src/main/java/com/doumee/api/business/UsersController.java b/server/admin/src/main/java/com/doumee/api/business/UsersController.java
index 07cc87e..35f85cf 100644
--- a/server/admin/src/main/java/com/doumee/api/business/UsersController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/UsersController.java
@@ -8,13 +8,15 @@
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.Users;
import com.doumee.service.business.UsersService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
+import io.swagger.annotations.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
import javax.servlet.http.HttpServletResponse;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -87,4 +89,15 @@
public ApiResponse findById(@PathVariable Long id) {
return ApiResponse.success(usersService.findById(id));
}
+
+ @ApiOperation(value = "浜哄憳淇℃伅鍒濆鍖栧鍏�" ,notes = "浜哄憳淇℃伅鍒濆鍖栧鍏�")
+ @PostMapping("/importExcel")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
+ })
+ @RequiresPermissions("business:users:create")
+ public ApiResponse<String> importExcel (@ApiParam(value = "file") MultipartFile file ) {
+ usersService.importBatch(file);
+ return ApiResponse.success("鎿嶄綔鎴愬姛");
+ }
}
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index ef67a07..95372cc 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -340,25 +340,40 @@
public static final String WX_SECRET_PERSONNEL = "WX_SECRET_PERSONNEL";
+ public interface CrmSources{
+
+
+ String SOURCE_DKXD = "DKXD";// 浠e涓嬪崟(DKXD)
+ String SOURCE_LYSJ = "LYSJ";// 闆跺厓璁捐(LYSJ)
+ String SOURCE_ZBSJSQ = "ZBSJSQ";// 蹇楅偊璁捐鐢宠(ZBSJSQ)
+ String SOURCE_ZBDXFX = "ZBDXFX";// 蹇楅偊鐭俊鍒嗕韩(ZBDXFX)
+ String SOURCE_ZBLLJL = "ZBLLJL";// 蹇楅偊娴忚璁板綍鍒嗕韩(ZBLLJL)
+ String SOURCE_ZBWDSC = "ZBWDSC";// 蹇楅偊鎴戠殑鏀惰棌鍒嗕韩(ZBWDSC)
+ String SOURCE_ZBLYSJ = "ZBLYSJ";// 蹇楅偊闆跺厓璁捐(ZBLYSJ)
+ String SOURCE_ZBLDX = "ZBLDX";// 蹇楅偊鑰佸甫鏂�(ZBLDX)
+ String SOURCE_ZBFGCS = "ZBFGCS";// 蹇楅偊椋庢牸娴嬭瘯(ZBFGCS)
+ String SOURCE_ZBJX = "DSLX22";// 蹇楅偊瀹堕��(ZBJX)
+ }
public interface RedisKeys {
- public static final String IMPORTING_MEMBER ="IMPORTING_MEMBER";
- public static final String IMPORTING_SHOP ="IMPORTING_SHOP";
- public static final String IAM_APPID ="IAM_APPID";
- public static final String ZBOM_CRM_API_KEY ="ZBOM_CRM_API_KEY";
- public static final String ZBOM_CRM_API_URL ="ZBOM_CRM_API_URL";
- public static final String ZBOM_SMS_API_KEY ="ZBOM_SMS_API_KEY";
- public static final String ZBOM_SMS_API_URL ="ZBOM_SMS_API_URL";
- public static final String IAM_APPKEY ="IAM_APPKEY";
- public static final String SHOP_TREE ="SHOP_TREE";
- public static final String ERP_TOKEN ="ERP_TOKEN";
- public static final long EXPIRE_TIME = 7200;
+ String IMPORTING_MEMBER ="IMPORTING_MEMBER";
+ String IMPORTING_SHOP ="IMPORTING_SHOP";
+ String IMPORTING_USERS ="IMPORTING_USERS";
+ String IAM_APPID ="IAM_APPID";
+ String ZBOM_CRM_API_KEY ="ZBOM_CRM_API_KEY";
+ String ZBOM_CRM_API_URL ="ZBOM_CRM_API_URL";
+ String ZBOM_SMS_API_KEY ="ZBOM_SMS_API_KEY";
+ String ZBOM_SMS_API_URL ="ZBOM_SMS_API_URL";
+ String IAM_APPKEY ="IAM_APPKEY";
+ String SHOP_TREE ="SHOP_TREE";
+ String ERP_TOKEN ="ERP_TOKEN";
+ long EXPIRE_TIME = 7200;
- public static final String INTERNAL_TOKEN ="INTERNAL_TOKEN";
+ String INTERNAL_TOKEN ="INTERNAL_TOKEN";
- public static final String GOODSORDER_KEY = "ordercode_";
- public static final String ACTIVITY_SIGN_KEY = "actcode_";
- public static final String AFTERSALE_KEY = "salecode_";
+ String GOODSORDER_KEY = "ordercode_";
+ String ACTIVITY_SIGN_KEY = "actcode_";
+ String AFTERSALE_KEY = "salecode_";
}
diff --git a/server/service/src/main/java/com/doumee/dao/admin/request/UserImport.java b/server/service/src/main/java/com/doumee/dao/admin/request/UserImport.java
new file mode 100644
index 0000000..cdc2d9c
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/admin/request/UserImport.java
@@ -0,0 +1,39 @@
+package com.doumee.dao.admin.request;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 缁勭粐淇℃伅瀵煎叆
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("浜哄憳淇℃伅瀵煎叆")
+public class UserImport {
+ @ExcelColumn(name="缂栫爜",value = "orgId",index = 1)
+ private String userId;
+ @ExcelColumn(name="鍚嶇О",value = "name",index = 2)
+ private String name;
+ @ExcelColumn(name="鐧诲綍璐﹀彿",value = "accountNo",index = 3)
+ private String accountNo;
+ @ExcelColumn(name="鐘舵��",value = "status",index =4)
+ private Integer status;
+ @ExcelColumn(name="閭",value = "email",index = 5)
+ private String email;
+ @ExcelColumn(name="鎵嬫満鍙�",value = "phone",index = 6)
+ private String phone;
+ @ExcelColumn(name="宸ュ彿",value = "code",index = 7)
+ private String code;
+ @ExcelColumn(name="鐢ㄦ埛绫诲瀷缂栫爜闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "typeCodes",index = 8)
+ private String typeCodes;
+ @ExcelColumn(name="閮ㄩ棬缂栫爜闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "orgIds",index = 9)
+ private String orgIds;
+ @ExcelColumn(name="瑙掕壊缂栫爜闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleIds",index = 10)
+ private String roleIds;
+ @ExcelColumn(name="瑙掕壊code闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleCodes",index = 11)
+ private String roleCodes;
+ @ExcelColumn(name="瑙掕壊鍚嶇О闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleNames",index = 12)
+ private String roleNames;
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/InitService.java b/server/service/src/main/java/com/doumee/service/business/InitService.java
index b8660df..cfea56d 100644
--- a/server/service/src/main/java/com/doumee/service/business/InitService.java
+++ b/server/service/src/main/java/com/doumee/service/business/InitService.java
@@ -31,6 +31,7 @@
@PostConstruct
public void clearImporting(){
redisTemplate.delete(Constants.RedisKeys.IMPORTING_SHOP);
+ redisTemplate.delete(Constants.RedisKeys.IMPORTING_USERS);
}
@PostConstruct
public void initIamAppIdAndAppKey(){
diff --git a/server/service/src/main/java/com/doumee/service/business/UsersService.java b/server/service/src/main/java/com/doumee/service/business/UsersService.java
index 894d3f4..e31e89b 100644
--- a/server/service/src/main/java/com/doumee/service/business/UsersService.java
+++ b/server/service/src/main/java/com/doumee/service/business/UsersService.java
@@ -4,6 +4,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Users;
import com.doumee.dao.web.response.AccountResponse;
+import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -102,4 +103,6 @@
AccountResponse wxLogin(String code);
void bindingOpenid(String code,Long userId);
+
+ String importBatch(MultipartFile file);
}
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
index 7d1c818..d1e1e8c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -4,12 +4,16 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
+import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.admin.request.ShopImport;
+import com.doumee.dao.admin.request.UserImport;
import com.doumee.dao.business.ShopMapper;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.UsersMapper;
@@ -30,14 +34,21 @@
import org.apache.commons.lang3.StringUtils;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
/**
* 鍛樺伐淇℃伅琛⊿ervice瀹炵幇
@@ -47,6 +58,10 @@
@Service
public class UsersServiceImpl implements UsersService {
+
+ ExecutorService executor = Executors.newFixedThreadPool(1);
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
@Autowired
private UsersMapper usersMapper;
@Autowired
@@ -356,4 +371,46 @@
e.printStackTrace();
}
}
+
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public String importBatch(MultipartFile file){
+ Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_USERS);
+ if(importing!=null && importing){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ユ垨鑰呬笂涓嬬骇閲嶇疆浠诲姟姝e湪鎵ц涓紝璇风◢鍚庡啀璇曪紒");
+ }
+ redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_USERS,true);
+ try {
+ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ ExcelImporter ie = null;
+ List<UserImport> dataList =null;
+ try {
+ ie = new ExcelImporter(file,0,0);
+ dataList = ie.getDataList(UserImport.class,null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if(dataList == null || dataList.size() ==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+ }
+ Date date =new Date();
+ List<UserImport> finalDataList = dataList;
+ Callable<String> task = () -> {
+ dealUserDataBiz(finalDataList,date,loginUserInfo);
+ return "寮傛浠诲姟瀹屾垚";
+ };
+ executor.submit(task);
+
+ return "瀵煎叆鎴愬姛";
+ }catch (BusinessException e){
+ throw e;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+ }
+
+ private void dealUserDataBiz(List<UserImport> finalDataList, Date date, LoginUserInfo loginUserInfo) {
+
+ }
+
}
--
Gitblit v1.9.3