FengChaoYu 9 ay önce
ebeveyn
işleme
9eadc3f81e

+ 123 - 60
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminWebsitLogic.java

@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
 @Service
 public class AdminWebsitLogic {
 
-//    @Autowired
+    //    @Autowired
 //    WorkWechatLogic workWechatLogic;
     @Autowired
     AdminWebsitService adminWebsitService;
@@ -66,7 +66,7 @@ public class AdminWebsitLogic {
     /**
      * 区域列表
      */
-    public List<AdminZone> adminZoneList(){
+    public List<AdminZone> adminZoneList() {
         List<AdminZone> list = adminZoneService.list();
         return list;
     }
@@ -74,7 +74,7 @@ public class AdminWebsitLogic {
     /**
      * 部门树
      */
-    public List<AdminWebsitTree> tree(HttpServletRequest request){
+    public List<AdminWebsitTree> tree(HttpServletRequest request) {
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
 
         List<AdminWebsit> list = adminWebsitService.lambdaQuery()
@@ -99,7 +99,7 @@ public class AdminWebsitLogic {
     }
 
 
-    public List<AdminWebsit> list(String type,Boolean isAll,Boolean isIncre,Boolean status){
+    public List<AdminWebsit> list(String type, Boolean isAll, Boolean isIncre, Boolean status) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
         List<AdminWebsit> list = adminWebsitService.lambdaQuery()
@@ -114,19 +114,12 @@ public class AdminWebsitLogic {
 
 
     /**
-     *  新增部门
+     * 新增部门
      */
     @Transactional
     public void add(AdminWebsitNewBean adminWebsit, HttpServletRequest request) throws WxErrorException, RemoteServiceException {
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
 
-        Integer count = adminWebsitService.lambdaQuery()
-                .eq(StringUtils.isNotBlank(adminUser.getCompanyWechatId()), AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .eq(AdminWebsit::getName, adminWebsit.getName())
-                .count();
-        if (count > 0) {
-            throw new RemoteServiceException("名称已存在");
-        }
         AdminWebsit parent = adminWebsitService.getById(adminWebsit.getParentId());
         if (Objects.isNull(parent)) {
             throw new RemoteServiceException("请选择上级");
@@ -154,6 +147,12 @@ public class AdminWebsitLogic {
             adminWebsit.setType(AdminWebsitTypeEnum.C.getKey());
         }
 
+        if (adminUser.getType() == 2 && adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())) {
+            throw new RemoteServiceException("平台账号不能创建网点");
+        }
+
+        this.checkWebsitIdAndName(adminWebsit, adminUser, true);
+
         if (adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())
                 && adminWebsit.getIsUseAllinpay()
                 && CollectionUtil.isEmpty(adminWebsit.getPayConfigList())) {
@@ -162,7 +161,9 @@ public class AdminWebsitLogic {
 
         adminWebsit.setCompanyWechatId(parent.getCompanyWechatId());
         adminWebsit.setCompanyWechatName(parent.getCompanyWechatName());
-        adminWebsit.setWebsitId(IdWorker.getIdStr());
+        if (!adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey())) {
+            adminWebsit.setWebsitId(IdWorker.getIdStr());
+        }
         adminWebsit.setWebsitNumber(adminWebsit.getWebsitId());
         adminWebsit.insert();
 
@@ -171,16 +172,16 @@ public class AdminWebsitLogic {
             for (int i = 0; i < adminWebsit.getPayConfigList().size(); i++) {
                 AdminWebsitPayConfig payConfig = adminWebsit.getPayConfigList().get(i);
                 if (org.apache.commons.lang3.StringUtils.isBlank(payConfig.getName())) {
-                    throw new RemoteServiceException("第" + (i+1) + "行, 商户名称不能为空");
+                    throw new RemoteServiceException("第" + (i + 1) + "行, 商户名称不能为空");
                 }
                 if (org.apache.commons.lang3.StringUtils.isBlank(payConfig.getType())) {
-                    throw new RemoteServiceException("第" + (i+1) + "行, 请选择类别");
+                    throw new RemoteServiceException("第" + (i + 1) + "行, 请选择类别");
                 }
                 if (org.apache.commons.lang3.StringUtils.isBlank(payConfig.getMchNo())) {
-                    throw new RemoteServiceException("第" + (i+1) + "行, 通联商户号不能为空");
+                    throw new RemoteServiceException("第" + (i + 1) + "行, 通联商户号不能为空");
                 }
                 if (org.apache.commons.lang3.StringUtils.isBlank(payConfig.getAppid())) {
-                    throw new RemoteServiceException("第" + (i+1) + "行, 通联商户appid不能为空");
+                    throw new RemoteServiceException("第" + (i + 1) + "行, 通联商户appid不能为空");
                 }
                 payConfig.setCompanyWechatId(adminWebsit.getCompanyWechatId())
                         .setCompanyWechatName(adminWebsit.getCompanyWechatName())
@@ -231,11 +232,38 @@ public class AdminWebsitLogic {
         }
     }
 
+    private void checkWebsitIdAndName(AdminWebsitNewBean adminWebsit, AdminUserCom adminUser, boolean isAdd) {
+        if (adminWebsit.getType().equals(AdminWebsitTypeEnum.C.getKey()) && isAdd) {
+            if (org.apache.commons.lang3.StringUtils.isBlank(adminWebsit.getWebsitId())) {
+                throw new RemoteServiceException("网点编号不能为空");
+            }
+
+            Integer existCount = adminWebsitService.lambdaQuery()
+                    .eq(StringUtils.isNotBlank(adminUser.getCompanyWechatId()), AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(AdminWebsit::getWebsitId, adminWebsit.getWebsitId())
+                    .count();
+
+            if (existCount > 0) {
+                throw new RemoteServiceException("网点编号已存在");
+            }
+        }
+
+        Integer count = adminWebsitService.lambdaQuery()
+                .ne(org.apache.commons.lang3.StringUtils.isNotBlank(adminWebsit.getWebsitId()), AdminWebsit::getWebsitId, adminWebsit.getWebsitId())
+                .eq(StringUtils.isNotBlank(adminUser.getCompanyWechatId()), AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(AdminWebsit::getName, adminWebsit.getName())
+                .count();
+
+        if (count > 0) {
+            throw new RemoteServiceException("名称已存在");
+        }
+    }
+
     /**
      * 编辑部门
      */
     @Transactional
-    public void update(AdminWebsitNewBean adminWebsit,HttpServletRequest request) throws RemoteServiceException, WxErrorException {
+    public void update(AdminWebsitNewBean adminWebsit, HttpServletRequest request) throws RemoteServiceException, WxErrorException {
 
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
 
@@ -245,7 +273,7 @@ public class AdminWebsitLogic {
                 .eq(AdminWebsit::getName, adminWebsit.getName())
                 .count();
         if (count > 0) {
-            throw new RemoteServiceException("名称或编号已存在");
+            throw new RemoteServiceException("名称已存在");
         }
         if (adminWebsit.getParentId().equals("0")) {
             throw new RemoteServiceException("请选择上级");
@@ -271,8 +299,8 @@ public class AdminWebsitLogic {
 
         adminWebsit.updateById();
 
-        adminDeptWebsitService.lambdaUpdate().eq(AdminDeptWebsit::getWebsitId,adminWebsit.getWebsitId())
-                .set(AdminDeptWebsit::getWebsitName,adminWebsit.getName()).update();
+        adminDeptWebsitService.lambdaUpdate().eq(AdminDeptWebsit::getWebsitId, adminWebsit.getWebsitId())
+                .set(AdminDeptWebsit::getWebsitName, adminWebsit.getName()).update();
 
         AdminWebsit old = adminWebsitService.getById(adminWebsit.getWebsitId());
         //workWechatLogic.updateOrganization(adminWebsit.getWebsitId(),adminWebsit.getName(),adminWebsit.getParentId(),adminUser.getAdminCompanyWechat());
@@ -286,16 +314,15 @@ public class AdminWebsitLogic {
         reloadJoinCode(old.getCompanyWechatId(), adminWebsit.getJoinCode());
 
 
-
     }
 
     /**
      * 删除部门
      */
     @Transactional
-    public void delete(String websitId,HttpServletRequest request) throws WxErrorException {
+    public void delete(String websitId, HttpServletRequest request) throws WxErrorException {
         Integer count = adminWebsitService.lambdaQuery().eq(AdminWebsit::getParentId, websitId).count();
-        if(count > 0){
+        if (count > 0) {
             throw new RemoteServiceException("当前部门存在子级,删除失败");
         }
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
@@ -310,10 +337,10 @@ public class AdminWebsitLogic {
 
         //递归删除
         List<AdminWebsit> list = new ArrayList<>();
-        list.addAll(commonLogic.queryAllChild(list,websitId));
+        list.addAll(commonLogic.queryAllChild(list, websitId));
         List<String> ids = list.stream().map(AdminWebsit::getWebsitId).collect(Collectors.toList());
         ids.add(websitId);
-        if(ids.size() > 0) {
+        if (ids.size() > 0) {
 //            for(String idd : ids){
 //                workWechatLogic.deleteOrganization(idd,adminUser.getAdminCompanyWechat());
 //            }
@@ -332,14 +359,15 @@ public class AdminWebsitLogic {
                     .remove();
         }
 
-        adminDeptWebsitService.lambdaUpdate().eq(AdminDeptWebsit::getWebsitId,websitId).remove();
+        adminDeptWebsitService.lambdaUpdate().eq(AdminDeptWebsit::getWebsitId, websitId).remove();
     }
 
     /**
      * 详情
+     *
      * @param id
      */
-    public AdminWebsitNewBean detail(String id){
+    public AdminWebsitNewBean detail(String id) {
         AdminWebsit adminWebsit = adminWebsitService.getById(id);
         AdminWebsitNewBean bean = new AdminWebsitNewBean();
         BeanUtils.copyProperties(adminWebsit, bean);
@@ -356,39 +384,39 @@ public class AdminWebsitLogic {
      * 刷新之后关联条码
      */
     @Transactional
-    public void reloadJoinCode(String companyWechatId,String joinCode){
-        if(StringUtils.isBlank(companyWechatId) || joinCode == null){
+    public void reloadJoinCode(String companyWechatId, String joinCode) {
+        if (StringUtils.isBlank(companyWechatId) || joinCode == null) {
             return;
         }
         adminWebsitService.lambdaUpdate()
-                .set(AdminWebsit::getJoinCode,joinCode)
-                .eq(AdminWebsit::getCompanyWechatId,companyWechatId).update();
+                .set(AdminWebsit::getJoinCode, joinCode)
+                .eq(AdminWebsit::getCompanyWechatId, companyWechatId).update();
 
         adminCompanyWechatService.lambdaUpdate()
-                .set(AdminCompanyWechat::getJoinCode,joinCode)
-                .eq(AdminCompanyWechat::getCompanyWechatId,companyWechatId).update();
+                .set(AdminCompanyWechat::getJoinCode, joinCode)
+                .eq(AdminCompanyWechat::getCompanyWechatId, companyWechatId).update();
 
     }
 
 
-
     /**
      * 递归组装数据
+     *
      * @param list
      * @param parentId
      * @return
      */
-    private List<AdminWebsitTree> treeModule(List<AdminWebsitTree> list, String parentId){
+    private List<AdminWebsitTree> treeModule(List<AdminWebsitTree> list, String parentId) {
         //最父级资源树
-        if(parentId == null || parentId.equals("0")) {
+        if (parentId == null || parentId.equals("0")) {
             return null;
         }
         List<AdminWebsitTree> collect = list.stream()
                 .filter(e -> e.getParentId().equals(parentId)).collect(Collectors.toList());
-        if(collect.size() == 0){
+        if (collect.size() == 0) {
             return null;
         }
-        for(AdminWebsitTree bean : collect){
+        for (AdminWebsitTree bean : collect) {
             bean.setChildren(this.treeModule(list, bean.getWebsitId()));
         }
         return collect;
@@ -468,47 +496,50 @@ public class AdminWebsitLogic {
             int rowIndex = i + 2;
             List<Object> row = (List<Object>) objects.get(i);
             if (Objects.isNull(row.get(0)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(0).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 网点名称不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 网点编号不能为空");
             }
             if (Objects.isNull(row.get(1)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(1).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 联系人不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 网点名称不能为空");
             }
             if (Objects.isNull(row.get(2)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(2).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 联系电话不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 联系不能为空");
             }
             if (Objects.isNull(row.get(3)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(3).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 详细地址不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 联系电话不能为空");
             }
             if (Objects.isNull(row.get(4)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(4).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 电子支付商户不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 详细地址不能为空");
             }
             if (Objects.isNull(row.get(5)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(5).toString())) {
-                throw new RemoteServiceException("第" + rowIndex + "行, 状态不能为空");
+                throw new RemoteServiceException("第" + rowIndex + "行, 电子支付商户不能为空");
             }
             if (Objects.isNull(row.get(6)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(6).toString())) {
+                throw new RemoteServiceException("第" + rowIndex + "行, 状态不能为空");
+            }
+            if (Objects.isNull(row.get(7)) || org.apache.commons.lang3.StringUtils.isBlank(row.get(7).toString())) {
                 throw new RemoteServiceException("第" + rowIndex + "行, 通联支付开关不能为空");
             }
 
-            String websitName = row.get(0).toString().trim();
+            String websitName = row.get(1).toString().trim();
             final Integer existNameCount = adminWebsitService.lambdaQuery()
                     .eq(AdminWebsit::getName, websitName)
                     .count();
             if (existNameCount > 0) {
                 throw new RemoteServiceException("第" + rowIndex + "行, 网点名称已重复存在");
             }
-            String address = row.get(3).toString().trim();
+            String address = row.get(4).toString().trim();
             String lnglat = lbsAmapLogic.getLocationByAddress(address);
 
-            String payName = row.get(4).toString().trim();
+            String payName = row.get(5).toString().trim();
             final AdminCompanyWechatPayConfig wechatPayConfig = adminCompanyWechatPayConfigService.lambdaQuery()
                     .eq(AdminCompanyWechatPayConfig::getPayMerchantName, payName)
                     .one();
             if (Objects.isNull(wechatPayConfig)) {
                 throw new RemoteServiceException("第" + rowIndex + "行, 电子支付商户不存在");
             }
-            final String statusName = row.get(5).toString().trim();
+            final String statusName = row.get(6).toString().trim();
             final boolean status = statusName.equals("启用");
-            final String allinpayName = row.get(6).toString().trim();
+            final String allinpayName = row.get(7).toString().trim();
             final boolean isUseAllinpay = allinpayName.equals("开启");
 
             AdminWebsit addWebsit = new AdminWebsit();
@@ -523,8 +554,8 @@ public class AdminWebsitLogic {
             addWebsit.setCompanyWechatName(companyName);
             addWebsit.setLng(lnglat.split(",")[0]);
             addWebsit.setLat(lnglat.split(",")[1]);
-            addWebsit.setLinkName(row.get(1).toString().trim());
-            addWebsit.setWebsitPhone(row.get(2).toString().trim());
+            addWebsit.setLinkName(row.get(2).toString().trim());
+            addWebsit.setWebsitPhone(row.get(3).toString().trim());
             addWebsit.setPayWorkerCodeId(wechatPayConfig.getId());
             addWebsit.setIsUseAllinpay(isUseAllinpay);
 
@@ -533,7 +564,7 @@ public class AdminWebsitLogic {
             if (isUseAllinpay) {
                 boolean isOn = true;
                 int detailIndex = 1;
-                int detailStartIndex = 6;
+                int detailStartIndex = 7;
                 while (isOn) {
                     try {
                         row.get(detailStartIndex + 1);
@@ -575,7 +606,7 @@ public class AdminWebsitLogic {
                         payConfigList.add(config);
 
                         detailIndex++;
-                        detailStartIndex = detailStartIndex * detailIndex;
+                        detailStartIndex = detailStartIndex + 6;
                     } catch (IndexOutOfBoundsException e) {
                         throw new RemoteServiceException("第" + rowIndex + "行, 第" + (detailStartIndex + 1) + "个通联相关配置缺失");
                     }
@@ -583,6 +614,38 @@ public class AdminWebsitLogic {
             }
 
             if (CollectionUtil.isNotEmpty(adminWebsitList)) {
+                // 检查本次导入是否有重复编号和名称
+                Map<String, List<AdminWebsit>> websitGroup = adminWebsitList.stream().collect(Collectors.groupingBy(AdminWebsit::getName));
+                for (Map.Entry<String, List<AdminWebsit>> entry : websitGroup.entrySet()) {
+                    if (entry.getValue().size() > 1) {
+                        throw new RemoteServiceException("导入文档有重复的网点名称" + entry.getKey());
+                    }
+                }
+
+                websitGroup = adminWebsitList.stream().collect(Collectors.groupingBy(AdminWebsit::getWebsitId));
+                for (Map.Entry<String, List<AdminWebsit>> entry : websitGroup.entrySet()) {
+                    if (entry.getValue().size() > 1) {
+                        throw new RemoteServiceException("导入文档有重复的网点编号" + entry.getKey());
+                    }
+                    final Integer count = adminWebsitService.lambdaQuery()
+                            .eq(AdminWebsit::getCompanyWechatId, companyWechatId)
+                            .eq(AdminWebsit::getType, AdminWebsitTypeEnum.C.getKey())
+                            .eq(AdminWebsit::getWebsitId, entry.getKey())
+                            .count();
+                    if (count > 0) {
+                        throw new RemoteServiceException("网点编号" + entry.getKey() + " 在系统里已存在");
+                    }
+
+                    final Integer nameCount = adminWebsitService.lambdaQuery()
+                            .eq(AdminWebsit::getCompanyWechatId, companyWechatId)
+                            .eq(AdminWebsit::getType, AdminWebsitTypeEnum.C.getKey())
+                            .eq(AdminWebsit::getName, entry.getValue().get(0).getName())
+                            .count();
+                    if (nameCount > 0) {
+                        throw new RemoteServiceException("网点名称" + entry.getKey() + " 在系统里已存在");
+                    }
+                }
+
                 adminWebsitService.saveBatch(adminWebsitList);
                 for (AdminWebsit websit : adminWebsitList) {
                     reloadJoinCode(websit.getCompanyWechatId(), websit.getJoinCode());
@@ -666,12 +729,12 @@ public class AdminWebsitLogic {
         }
 
         for (int i = 0; i < configCount; i++) {
-            titleList.add("通联商户名称" + (i+1));
-            titleList.add("通联集团号" + (i+1));
-            titleList.add("类别" + (i+1));
-            titleList.add("通联商户号" + (i+1));
-            titleList.add("通联商户appid" + (i+1));
-            titleList.add("状态" + (i+1));
+            titleList.add("通联商户名称" + (i + 1));
+            titleList.add("通联集团号" + (i + 1));
+            titleList.add("类别" + (i + 1));
+            titleList.add("通联商户号" + (i + 1));
+            titleList.add("通联商户appid" + (i + 1));
+            titleList.add("状态" + (i + 1));
         }
 
         int requireRowSize = titleList.size();

BIN
mall-server-api/src/main/resources/template/网点管理导入模板.xlsx