From 7e90b706ce34a759ea20de5e00896e66a8fca0aa Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 12 七月 2024 17:46:06 +0800
Subject: [PATCH] 提交

---
 server/service/src/main/java/com/doumee/service/business/impl/IamInterfaceLogServiceImpl.java |    9 -
 server/service/src/main/java/com/doumee/core/model/ApiResponse.java                           |   10 +
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java                 |   10 
 server/service/src/main/java/com/doumee/dao/business/model/Users.java                         |    7 
 admin/src/views/business/shopUsers.vue                                                        |   27 +--
 server/admin/src/main/java/com/doumee/api/business/PushController.java                        |    2 
 server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java           |  172 ++++++++++++++++++++++++
 admin/src/api/business/users.js                                                               |    9 -
 server/service/src/main/java/com/doumee/dao/admin/request/UserImport.java                     |   26 ++-
 server/service/src/main/java/com/doumee/service/business/impl/CustomerLogServiceImpl.java     |    9 -
 admin/public/template/users.xlsx                                                              |    0 
 admin/src/components/business/OperaUserImportWindow.vue                                       |   82 +++++++++++
 12 files changed, 308 insertions(+), 55 deletions(-)

diff --git a/admin/public/template/users.xlsx b/admin/public/template/users.xlsx
index 05a836d..dab5df8 100644
--- a/admin/public/template/users.xlsx
+++ b/admin/public/template/users.xlsx
Binary files differ
diff --git a/admin/src/api/business/users.js b/admin/src/api/business/users.js
index 8cb3092..ed0e68a 100644
--- a/admin/src/api/business/users.js
+++ b/admin/src/api/business/users.js
@@ -14,14 +14,9 @@
     download: true
   })
 }
-export function updateWorkStatus (data) {
-  return request.post('/visitsAdmin/cloudService/business/member/updateWorkStatus', data)
-}
+
 export function importExcel (data) {
-  return request.post('/visitsAdmin/cloudService/business/member/importExcel', data)
-}
-export function memberSync (data) {
-  return request.post('/visitsAdmin/cloudService/business/member/syncAll', data)
+  return request.post('/business/users/importExcel', data)
 }
 // 鍒涘缓
 export function create (data) {
diff --git a/admin/src/components/business/OperaUserImportWindow.vue b/admin/src/components/business/OperaUserImportWindow.vue
new file mode 100644
index 0000000..7d5f239
--- /dev/null
+++ b/admin/src/components/business/OperaUserImportWindow.vue
@@ -0,0 +1,82 @@
+<template>
+  <el-dialog
+      class="center-title"
+      :title="title"
+      width="500px"
+      top="30vh"
+      :visible.sync="visible"
+      :confirm-working="isWorking"
+      @confirm="confirm"
+  >
+    <p class="tip-warn"><i class="el-icon-warning"></i>瀵煎叆璇存槑锛�<br>
+      1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
+    </p>
+    <el-form class="demo-form-inline" >
+      <el-form-item label="缁勭粐淇℃伅娓呭崟" required>
+        <div style="width: 100%;display: flex;align-items: center;">
+          <el-button type="primary"   @click="clickRef">鐐瑰嚮涓婁紶</el-button>
+          <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
+        </div>
+        <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
+      </el-form-item>
+    </el-form>
+    <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
+    <template   v-slot:footer>
+      <el-button @click="visible=false">杩斿洖</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { importExcel } from '@/api/business/users'
+export default {
+  name: 'OperaShopImportWindow',
+  extends: BaseOpera,
+  // eslint-disable-next-line vue/no-unused-components
+  components: { GlobalWindow },
+  data () {
+    return {
+      importing:false,
+      fileName: '',
+    }
+  },
+  methods: {
+    open (title, companyType) {
+      this.title = title
+      this.fileName = ''
+      this.visible = true
+    },
+    // 瀵煎嚭妯℃澘
+    exportTemplate () {
+      // 鎶曚繚鐢宠
+      window.open('/template/users.xlsx')
+    },
+    clickRef () {
+      this.$refs.fileExcel.click()
+    },
+    result (e) {
+      const data = new FormData()
+      data.append('file', e.target.files[0])
+      data.append('companyType', this.companyType)
+      importExcel(data)
+        .then(res => {
+          this.$tip.apiSuccess('鍙戣捣鎵归噺涓婁紶浠诲姟鎴愬姛锛岃绋嶅悗鍒锋柊椤甸潰鏌ョ湅')
+          this.$emit('success')
+          this.visible = false
+        })
+        .catch(err => {
+          this.fileName = ''
+        })
+        .finally(() => {
+          this.$refs.fileExcel.value = null
+        })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/admin/src/views/business/shopUsers.vue b/admin/src/views/business/shopUsers.vue
index 818c8a6..4e23bf9 100644
--- a/admin/src/views/business/shopUsers.vue
+++ b/admin/src/views/business/shopUsers.vue
@@ -54,10 +54,11 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar"  style="height: 26px">
-<!--        <li><el-button type="primary" @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐',null,department,searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
-        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆',searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
-        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
-     -->
+        <li><el-button type="primary" @click="$refs.OperaUserImportWindow.open('鍒濆鍖栧鍏�')"  icon="el-icon-plus" v-permissions="['business:member:create']">鍒濆鍖栧鍏�</el-button></li>
+        <!--        <li><el-button type="primary" @click="$refs.OperaMemberWindow.open('鏂板缓鍛樺伐',null,department,searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓鍛樺伐</el-button></li>
+                <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('浜哄憳瀵煎叆',searchForm.companyType)"  icon="el-icon-plus" v-permissions="['business:member:create']">浜哄憳瀵煎叆</el-button></li>
+                <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
+             -->
         <li style="float: right;">
          <el-checkbox style="font-size: 12px"  label="1" v-model="searchForm.includeChild" key="1"  @change="search" >鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
         </li>
@@ -69,23 +70,23 @@
           @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
-        <el-table-column prop="iamUsername" label="鐧诲綍璐﹀彿" min-width="100px"></el-table-column>
-        <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="濮撳悕" fixed min-width="100px"></el-table-column>
+        <el-table-column prop="iamUsername" fixed label="鐧诲綍璐﹀彿" min-width="100px"></el-table-column>
+        <el-table-column prop="phone" label="鎵嬫満鍙�" fixed min-width="100px"></el-table-column>
         <el-table-column label="鎬у埆" min-width="100px">
           <template slot-scope="{row}">
             <span v-if="row.sex == 0">鐢�</span>
             <span v-if="row.sex == 1">濂�</span>
           </template>
         </el-table-column>
-        <el-table-column prop="shopName" label="鎵�灞為儴闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="shopName" label="鎵�灞為儴闂�" min-width="150px"></el-table-column>
         <el-table-column prop="status" label="鐘舵��" min-width="100px">
           <template slot-scope="{row}">
             <span v-if="row.status == 0" style="color: red">鍋滅敤</span>
             <span v-if="row.status == 1" style="color:green">鍚敤</span>
           </template>
         </el-table-column>
-        <el-table-column prop="shopType" label="缁勭粐绫诲瀷" min-width="80px">
+        <el-table-column prop="shopType" label="缁勭粐绫诲瀷" min-width="110px">
           <template scope="{row}">
             <span v-if="row.shopType == 1">HR</span>
             <span v-if="row.shopType == 2">鍔犵洘鍟�</span>
@@ -130,8 +131,7 @@
       >
       </pagination>
       <!--    鏌ョ湅浜哄憳寮�鍗¤褰�    -->
-      <OperaMemberWindow ref="OperaMemberWindow" @success="handlePageChange" />
-      <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
+      <OperaUserImportWindow ref="OperaUserImportWindow" @success="handlePageChange" />
     </template>
   </TableLayout1>
 </template>
@@ -140,13 +140,12 @@
 import BaseTable from '@/components/base/BaseTable'
 import TableLayout1 from '@/layouts/TableLayout1'
 import Pagination from '@/components/common/Pagination'
-import OperaMemberWindow from '@/components/business/OperaMemberWindow'
-import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
+import OperaUserImportWindow from '@/components/business/OperaUserImportWindow'
 import { fetchListByParent } from '@/api/business/shop'
 export default {
   name: 'internalMember',
   extends: BaseTable,
-  components: { TableLayout1, Pagination,  OperaMemberWindow, OperaMemberImportWindow },
+  components: { TableLayout1, Pagination, OperaUserImportWindow },
   data () {
     return {
       TreeList: [],
diff --git a/server/admin/src/main/java/com/doumee/api/business/PushController.java b/server/admin/src/main/java/com/doumee/api/business/PushController.java
index f7a8013..cf2218d 100644
--- a/server/admin/src/main/java/com/doumee/api/business/PushController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/PushController.java
@@ -62,7 +62,7 @@
         ApiResponse<String> r = null;
         try {
             zbomIAMService.updateUserInfo(token,uuid,timestamp,upateUserModel);
-            r  = ApiResponse.success("鎿嶄綔鎴愬姛");
+            r  = ApiResponse.successIam("鎿嶄綔鎴愬姛");
         }catch (BusinessException e){
               success = Constants.ONE;
             r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"鎿嶄綔澶辫触"));
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java
index 4542b02..0033390 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java
@@ -313,6 +313,7 @@
         users.setIsdeleted(Constants.ZERO);
         users.setRemark(JSONObject.toJSONString(upateUserModel));
         users.setRoleNames(null);
+        users.setRoleCodes(null);
         users.setRoleIds(null);
         users.setUserTypes(null);
         if( upateUserModel.getUserTypes() !=null){
@@ -331,8 +332,12 @@
                 if(StringUtils.isBlank(users.getRoleNames())){
                     users.setRoleNames("");
                 }
-                users.setRoleIds(users.getRoleIds()+t.getId()+"["+t.getId()+"];");
+                if(StringUtils.isBlank(users.getRoleCodes())){
+                    users.setRoleCodes("");
+                }
+                users.setRoleIds(users.getRoleIds()+"["+t.getId()+"];");
                 users.setRoleNames(users.getRoleNames()+"["+t.getName()+"];");
+                users.setRoleCodes(users.getRoleCodes()+"["+t.getCode()+"];");
             }
         }
         if(upateUserModel.getJobs()!=null){
@@ -350,11 +355,8 @@
                         .last("limit 1"));
                 users.setDepartmentId(shop ==null?null:shop.getId());
             }
-
         }
-
         return  users;
-
     }
 
     public  String getToken(String uuid,String time) {
diff --git a/server/service/src/main/java/com/doumee/core/model/ApiResponse.java b/server/service/src/main/java/com/doumee/core/model/ApiResponse.java
index 051cc84..2e1ad9c 100644
--- a/server/service/src/main/java/com/doumee/core/model/ApiResponse.java
+++ b/server/service/src/main/java/com/doumee/core/model/ApiResponse.java
@@ -45,6 +45,16 @@
     public static <T> ApiResponse<T> success(T data) {
         return ApiResponse.success("璇锋眰鎴愬姛", data);
     }
+    public static <T> ApiResponse<T> successIam(T data) {
+        return ApiResponse.successIam("璇锋眰鎴愬姛", data);
+    }
+
+    /**
+     * 璇锋眰鎴愬姛
+     */
+    public static <T> ApiResponse<T> successIam(String message, T data) {
+        return new ApiResponse<>(0, Boolean.TRUE, message, data, null);
+    }
 
     /**
      * 璇锋眰鎴愬姛
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
index cdc2d9c..faa7060 100644
--- 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
@@ -18,22 +18,24 @@
     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)
+    @ExcelColumn(name="鎬у埆 0鐢� 1濂�",value = "sex",index = 4)
+    private String sex;
+    @ExcelColumn(name="鐘舵��  0鍋滅敤锛�1鍚敤",value = "status",index =5)
+    private String status;
+    @ExcelColumn(name="閭",value = "email",index = 6)
     private String email;
-    @ExcelColumn(name="鎵嬫満鍙�",value = "phone",index = 6)
+    @ExcelColumn(name="鎵嬫満鍙�",value = "phone",index = 7)
     private String phone;
-    @ExcelColumn(name="宸ュ彿",value = "code",index = 7)
+    @ExcelColumn(name="宸ュ彿",value = "code",index = 8)
     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)
+    @ExcelColumn(name="鐢ㄦ埛绫诲瀷缂栫爜闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "typeCodes",index = 10)
+    private String typeCodes;
+    @ExcelColumn(name="瑙掕壊鍚嶇О闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleNames",index = 11)
     private String roleNames;
+    @ExcelColumn(name="瑙掕壊code闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleCodes",index = 12)
+    private String roleCodes;
+    @ExcelColumn(name="瑙掕壊缂栫爜闆嗗悎,澶氫釜鑻辨枃閫楀彿闅斿紑",value = "roleIds",index = 13)
+    private String roleIds;
 }
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Users.java b/server/service/src/main/java/com/doumee/dao/business/model/Users.java
index 0fd7ea5..54c9563 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/Users.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Users.java
@@ -158,9 +158,12 @@
     @ExcelColumn(name="鐢ㄦ埛瑙掕壊缂栫爜闆嗗悎锛屽涓敤鑻辫閫楀彿闅斿紑")
     private String roleIds;
 
-    @ApiModelProperty(value = "鐢ㄦ埛瑙掕壊鍚嶇О闆嗗悎锛屽涓敤鑻辫閫楀彿闅斿紑")
-    @ExcelColumn(name="鐢ㄦ埛瑙掕壊鍚嶇О闆嗗悎锛屽涓敤鑻辫閫楀彿闅斿紑")
+    @ApiModelProperty(value = "鐢ㄦ埛瑙掕壊鍚嶇О闆嗗悎")
+    @ExcelColumn(name="鐢ㄦ埛瑙掕壊鍚嶇О闆嗗悎")
     private String roleNames;
+    @ApiModelProperty(value = "鐢ㄦ埛瑙掕壊code闆嗗悎锛屽涓敤鑻辫閫楀彿闅斿紑")
+    @ExcelColumn(name="鐢ㄦ埛瑙掕壊code闆嗗悎锛屽涓敤鑻辫閫楀彿闅斿紑")
+    private String roleCodes;
     @ApiModelProperty(value = "鏄惁鍖呭惈涓嬬骇")
     @TableField(exist = false)
     private Boolean includeChild;
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/CustomerLogServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CustomerLogServiceImpl.java
index 1bad34f..41dacb0 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/CustomerLogServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/CustomerLogServiceImpl.java
@@ -6,6 +6,7 @@
 import com.doumee.dao.business.CustomerLogMapper;
 import com.doumee.dao.business.model.CustomerLog;
 import com.doumee.dao.business.model.IamInterfaceLog;
+import com.doumee.dao.business.model.InterfaceLog;
 import com.doumee.service.business.CustomerLogService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -186,13 +187,7 @@
         if (pageWrap.getModel().getQueryEndDate() != null) {
             queryWrapper.lambda().le(CustomerLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getQueryEndDate()));
         }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
+        queryWrapper.lambda().orderByDesc(CustomerLog::getCreateDate);
         return PageData.from(customerLogMapper.selectPage(page, queryWrapper));
     }
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/IamInterfaceLogServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/IamInterfaceLogServiceImpl.java
index ffe30cc..96f10e5 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/IamInterfaceLogServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/IamInterfaceLogServiceImpl.java
@@ -4,6 +4,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.IamInterfaceLogMapper;
+import com.doumee.dao.business.model.CustomerLog;
 import com.doumee.dao.business.model.IamInterfaceLog;
 import com.doumee.dao.business.model.InterfaceLog;
 import com.doumee.service.business.IamInterfaceLogService;
@@ -146,13 +147,7 @@
         if (pageWrap.getModel().getQueryEndDate() != null) {
             queryWrapper.lambda().le(IamInterfaceLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getQueryEndDate()));
         }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
+        queryWrapper.lambda().orderByDesc(IamInterfaceLog::getCreateDate);
         return PageData.from(iamInterfaceLogMapper.selectPage(page, queryWrapper));
     }
 
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 d1e1e8c..dad6e61 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
@@ -2,6 +2,8 @@
 
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.biz.zbom.model.IamUserRoleModel;
+import com.doumee.biz.zbom.model.IamUserTypeModel;
 import com.doumee.config.Jwt.JwtPayLoad;
 import com.doumee.config.Jwt.JwtTokenUtil;
 import com.doumee.core.annotation.excel.ExcelImporter;
@@ -409,8 +411,176 @@
         }
     }
 
-    private void dealUserDataBiz(List<UserImport> finalDataList, Date date, LoginUserInfo loginUserInfo) {
+    private void dealUserDataBiz(List<UserImport> dataList, Date date, LoginUserInfo loginUserInfo) {
+        try {
+            List<Users> list =  usersMapper.selectJoinList(Users.class,new MPJLambdaWrapper<Users>()
+                    .selectAll(Users.class)
+            );
+            List<Users> insertList = new ArrayList<>();
+            List<Users> updateList = new ArrayList<>();
+            for(int i=0;i<dataList.size();i++){
+                UserImport model = dataList.get(i);
+                if(StringUtils.isBlank(model.getName())
+                        &&StringUtils.isBlank(model.getCode()) ){
+                    continue;
+                }
+                Users user = checkModelParam(model,insertList,updateList,i,loginUserInfo,list,date);
+            }
+            if(insertList .size() >0){
+                int temp = 0;
+                while(temp < insertList.size()){
+                    int index;
+                    if(temp + 500 <= insertList.size()){
+                        index = temp+500;
+                    }else{
+                        index = insertList.size();
+                    }
+                    usersMapper.insert(insertList.subList(temp,index));
+                    temp = index;
+                }
+            }
+            if(updateList .size() >0){
+                for(Users s : updateList){
+                    //閬嶅巻鏇存柊鏁版嵁
+                    usersMapper.updateById(s);
+                }
+            }
+        }catch (BusinessException e){
+            throw e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+        }finally {
+            executor.shutdown();
+            redisTemplate.delete(Constants.RedisKeys.IMPORTING_USERS);
+        }
+    }
+    private Users getUserByUserID(String userId, List<Users> list) {
+        if(list ==null || list.size() ==0){
+            return null;
+        }
+        for(Users s :list){
+            if(StringUtils.equals(s.getIamId(),userId)){
+                return s;
+            }
+        }
+        return null;
+    }
 
+    private Users checkModelParam(UserImport model, List<Users> insertList, List<Users> updateList, int index, LoginUserInfo loginUserInfo, List<Users> list, Date date) {
+
+            if(StringUtils.isBlank(model.getUserId())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屻�愮紪鐮併�戜俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+            }
+            if(StringUtils.isBlank(model.getName())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屻�愬鍚嶃�戜俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+            }
+            if(StringUtils.isBlank(model.getAccountNo())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屻�愮櫥褰曡处鍙枫�戜俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+            }
+            if(StringUtils.isBlank(model.getPhone())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屻�愭墜鏈哄彿銆戜俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒");
+            }
+            Users users = getUserByUserID(model.getUserId(),list);
+            if(users == null){
+                users = new Users();
+                users.setCreator(loginUserInfo.getId());
+                users.setCreateDate(date);
+                initUsersInfo(users,model,date,loginUserInfo);
+                insertList.add(users);
+            }else {
+                initUsersInfo(users,model,date,loginUserInfo);
+                updateList.add(users);
+            }
+            return  users;
+        }
+
+    private void initUsersInfo(Users users, UserImport model,Date date,LoginUserInfo loginUserInfo ){
+        users.setEditor(loginUserInfo.getId());
+        users.setEditDate(date);
+        users.setName(model.getName());
+        users.setIamUsername(model.getAccountNo());
+        users.setPhone(model.getPhone());
+        users.setStatus(model.getStatus());
+        users.setEmail(model.getEmail());
+        users.setIamId(model.getUserId());
+        users.setCode(model.getCode());
+        users.setSex(model.getSex());
+        users.setStatus(model.getStatus());
+        users.setIsdeleted(Constants.ZERO);
+        users.setRoleIds("");
+        users.setRoleNames("");
+        users.setRoleCodes("");
+        users.setUserTypes("");
+        users.setIamOrgId("");
+        getDepartidByParam(users,model.getOrgIds());
+        setRolesInfo(users,model);
+        getUserTypesByParam(users,model.getTypeCodes());
+    }
+
+    private String getUserTypesByParam(Users users,String typeCodes) {
+        if( typeCodes !=null){
+            String[] codes =typeCodes.split(",");
+            for(String t : codes){
+                if(StringUtils.isBlank(users.getUserTypes())){
+                    users.setUserTypes("");
+                }
+                users.setUserTypes(users.getUserTypes()+"["+t+"];");
+            }
+        }
+        return  users.getUserTypes();
+    }
+
+    private void setRolesInfo(Users users, UserImport model) {
+        if( model.getRoleCodes() !=null){
+            String[] codes = model.getRoleCodes().split(",");
+            for(String t : codes){
+                if(StringUtils.isBlank(users.getRoleCodes())){
+                    users.setRoleCodes("");
+                }
+                users.setRoleCodes(users.getRoleCodes()+"["+t+"];");
+            }
+        }
+        if( model.getRoleIds() !=null){
+            String[] codes = model.getRoleIds().split(",");
+            for(String t : codes){
+                if(StringUtils.isBlank(users.getRoleIds())){
+                    users.setRoleIds("");
+                }
+                users.setRoleIds(users.getRoleIds()+"["+t+"];");
+            }
+        }
+        if( model.getRoleNames() !=null){
+            String[] codes = model.getRoleNames().split(",");
+            for(String t : codes){
+                if(StringUtils.isBlank(users.getRoleNames())){
+                    users.setRoleNames("");
+                }
+                users.setRoleNames(users.getRoleNames()+"["+t+"];");
+            }
+        }
+    }
+
+    private Shop getDepartidByParam(Users users , String orgIds) {
+        if( orgIds ==null){
+          return null;
+        }
+        String[] orgArray = orgIds.split(",");
+        if( orgArray !=null && orgArray.length>0){
+            for(String t : orgArray){
+                Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda()
+                        .eq(Shop::getOrgId,t)
+                        .last("limit 1"));
+                if(shop!=null) {
+                    users.setIamOrgId(t);
+                    users.setDepartmentId(shop.getId());
+                    return  shop;
+                }
+            }
+        }
+        users.setIamOrgId(orgIds+"--灏氭湭鍚屾鍒扮粍缁�");
+
+        return null;
     }
 
 }
+

--
Gitblit v1.9.3