From 892f3abd52e172e8ace6afd59285b9c6a7a3be28 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 24 七月 2024 13:45:19 +0800
Subject: [PATCH] 提交

---
 server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateRoleModel.java                |   48 +++
 server/admin/src/main/java/com/doumee/api/business/IamRoleController.java                     |   90 +++++
 server/web/src/main/java/com/doumee/api/web/CustomerApi.java                                  |   46 -
 wechat_staff/pages/promotion/index.js                                                         |    3 
 server/service/src/main/java/com/doumee/dao/business/model/IamRole.java                       |   99 ++++++
 server/service/src/main/java/com/doumee/dao/business/IamRoleMapper.java                       |   12 
 wechat_staff/pages/index/index.wxml                                                           |    2 
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java                 |   54 +++
 admin/src/api/business/iamRole.js                                                             |   40 ++
 server/admin/src/main/java/com/doumee/api/business/PushController.java                        |   33 +
 server/service/src/main/java/com/doumee/service/business/IamRoleService.java                  |   97 ++++++
 server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java |    3 
 server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java         |  174 ++++++++++
 admin/src/views/business/iamRole.vue                                                          |  114 +++++++
 server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java                |    2 
 server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java                |    2 
 wechat_staff/pages/index/index.js                                                             |    3 
 admin/src/components/business/OperaIamRoleWindow.vue                                          |  106 ++++++
 server/db/business.iam_role.permissions.sql                                                   |    6 
 server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java                          |   13 
 wechat_staff/api/index.js                                                                     |    7 
 21 files changed, 900 insertions(+), 54 deletions(-)

diff --git a/admin/src/api/business/iamRole.js b/admin/src/api/business/iamRole.js
new file mode 100644
index 0000000..c8f897d
--- /dev/null
+++ b/admin/src/api/business/iamRole.js
@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/iamRole/page', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/iamRole/exportExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/business/iamRole/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+  return request.post('/business/iamRole/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/business/iamRole/delete/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/iamRole/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
diff --git a/admin/src/components/business/OperaIamRoleWindow.vue b/admin/src/components/business/OperaIamRoleWindow.vue
new file mode 100644
index 0000000..5e9cb0a
--- /dev/null
+++ b/admin/src/components/business/OperaIamRoleWindow.vue
@@ -0,0 +1,106 @@
+<template>
+  <GlobalWindow
+      :title="title"
+      :visible.sync="visible"
+      :confirm-working="isWorking"
+      @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules">
+      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
+        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
+        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
+        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
+        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
+        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="瑙掕壊璇存槑" prop="remark">
+        <el-input v-model="form.remark" placeholder="璇疯緭鍏ヨ鑹茶鏄�" v-trim/>
+      </el-form-item>
+      <el-form-item label="IAM涓婚敭" prop="iamId">
+        <el-input v-model="form.iamId" placeholder="璇疯緭鍏AM涓婚敭" v-trim/>
+      </el-form-item>
+      <el-form-item label="瑙掕壊鍚嶇О" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ鑹插悕绉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="搴旂敤缂栫爜" prop="appId">
+        <el-input v-model="form.appId" placeholder="璇疯緭鍏ュ簲鐢ㄧ紪鐮�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鐘舵�� 1鍚敤 0绂佺敤" prop="status">
+        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 1鍚敤 0绂佺敤" v-trim/>
+      </el-form-item>
+      <el-form-item label="浼佷笟id" prop="eid">
+        <el-input v-model="form.eid" placeholder="璇疯緭鍏ヤ紒涓歩d" v-trim/>
+      </el-form-item>
+      <el-form-item label="銆愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�" prop="type">
+        <el-input v-model="form.type" placeholder="璇疯緭鍏ャ�愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="鏈�杩戝悓姝ユ椂闂�" prop="syncDate">
+        <el-date-picker v-model="form.syncDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶杩戝悓姝ユ椂闂�"></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鏈�杩戝悓姝ュ娉�" prop="syncInfo">
+        <el-input v-model="form.syncInfo" placeholder="璇疯緭鍏ユ渶杩戝悓姝ュ娉�" v-trim/>
+      </el-form-item>
+      <el-form-item label="瑙掕壊缂栫爜" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ヨ鑹茬紪鐮�" v-trim/>
+      </el-form-item>
+      <el-form-item label="銆愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�" prop="register">
+        <el-input v-model="form.register" placeholder="璇疯緭鍏ャ�愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�" v-trim/>
+      </el-form-item>
+      <el-form-item label="銆愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級" prop="labels">
+        <el-input v-model="form.labels" placeholder="璇疯緭鍏ャ�愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級" v-trim/>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaIamRoleWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        remark: '',
+        iamId: '',
+        name: '',
+        appId: '',
+        status: '',
+        eid: '',
+        type: '',
+        syncDate: '',
+        syncInfo: '',
+        code: '',
+        register: '',
+        labels: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/iamRole',
+      'field.id': 'id'
+    })
+  }
+}
+</script>
diff --git a/admin/src/views/business/iamRole.vue b/admin/src/views/business/iamRole.vue
new file mode 100644
index 0000000..a0472be
--- /dev/null
+++ b/admin/src/views/business/iamRole.vue
@@ -0,0 +1,114 @@
+<template>
+  <TableLayout :permissions="['business:actions:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="瑙掕壊缂栫爜" prop="title">
+        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ヨ鑹茬紪鐮�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="瑙掕壊鍚嶇О" prop="title">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヨ鑹插悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+<!--  <ul class="toolbar" v-permissions="['business:actions:create', 'business:actions:delete']">
+        <li><el-button type="primary" @click="$refs.operaActionsWindow.open('鏂板缓鐢ㄦ埛琛屼负鏁版嵁淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:actions:create']">鏂板缓</el-button></li>
+        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:actions:delete']">鍒犻櫎</el-button></li>
+      </ul>-->
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="iamId" label="IAM涓婚敭" min-width="180px" fixed></el-table-column>
+        <el-table-column prop="code" label="瑙掕壊缂栫爜" min-width="100px" fixed></el-table-column>
+        <el-table-column prop="name" label="瑙掕壊鍚嶇О" min-width="120px" fixed></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.status =='1'">鍚敤</span>
+            <span v-if="row.status =='0'">绂佺敤</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="type" label="瑙掕壊鍒嗙被 " min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.type =='0'">鍔犵洘鍟�</span>
+            <span v-if="row.type =='1'">鎬婚儴</span>
+            <span v-if="row.type =='2'">寤哄簵</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="register" label="娉ㄥ唽鍙��" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.register =='1'">鍙��</span>
+            <span v-if="row.register =='0'">涓嶅彲閫�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="labels" label="瑙掕壊鏍囩" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.labels =='1'">閿�鍞被</span>
+            <span v-if="row.labels =='2'">璁捐绫�</span>
+            <span v-if="row.labels =='3'">鍞悗绫�</span>
+            <span v-if="row.labels =='4'">璐㈠姟绫�</span>
+            <span v-if="row.labels =='5'">琛屾斂绫�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="eid" label="浼佷笟id" min-width="100px"></el-table-column>
+        <el-table-column prop="appId" label="搴旂敤缂栫爜" min-width="180px"></el-table-column>
+        <el-table-column prop="syncDate" label="鏈�杩戝悓姝ユ椂闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="remark" label="瑙掕壊璇存槑" min-width="100px"></el-table-column>
+        <el-table-column
+          v-if="containPermissions(['business:actions:update', 'business:actions:delete'])"
+          label="鎿嶄綔"
+          min-width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+<!--
+            <el-button type="text" @click="$refs.operaActionsWindow.open('缂栬緫鐢ㄦ埛琛屼负鏁版嵁淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:actions:update']">缂栬緫</el-button>
+-->
+            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:actions:delete']">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 鏂板缓/淇敼 -->
+    <OperaActionsWindow ref="operaActionsWindow" @success="handlePageChange"/>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaActionsWindow from '@/components/business/OperaActionsWindow'
+export default {
+  name: 'Actions',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaActionsWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        code: '',
+        name: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: 'iam瑙掕壊淇℃伅琛�',
+      api: '/business/iamRole',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/server/admin/src/main/java/com/doumee/api/business/IamRoleController.java b/server/admin/src/main/java/com/doumee/api/business/IamRoleController.java
new file mode 100644
index 0000000..6744ab2
--- /dev/null
+++ b/server/admin/src/main/java/com/doumee/api/business/IamRoleController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.dao.business.model.IamRole;
+import com.doumee.service.business.IamRoleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/07/24 10:43
+ */
+@Api(tags = "蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�")
+@RestController
+@RequestMapping("/business/iamRole")
+public class IamRoleController extends BaseController {
+
+    @Autowired
+    private IamRoleService iamRoleService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:iamrole:create")
+    public ApiResponse create(@RequestBody IamRole iamRole) {
+        return ApiResponse.success(iamRoleService.create(iamRole));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:iamrole:delete")
+    public ApiResponse deleteById(@PathVariable Long id) {
+        iamRoleService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:iamrole:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Long> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Long.valueOf(id));
+        }
+        iamRoleService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:iamrole:update")
+    public ApiResponse updateById(@RequestBody IamRole iamRole) {
+        iamRoleService.updateById(iamRole);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:iamrole:query")
+    public ApiResponse<PageData<IamRole>> findPage (@RequestBody PageWrap<IamRole> pageWrap) {
+        return ApiResponse.success(iamRoleService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:iamrole:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<IamRole> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(IamRole.class).export(iamRoleService.findPage(pageWrap).getRecords(), "蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:iamrole:query")
+    public ApiResponse findById(@PathVariable Long id) {
+        return ApiResponse.success(iamRoleService.findById(id));
+    }
+}
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 9ee9794..ee9ea49 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
@@ -3,8 +3,9 @@
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.api.BaseController;
 import com.doumee.biz.zbom.ZbomIAMService;
-import com.doumee.biz.zbom.model.IamUpateShopModel;
-import com.doumee.biz.zbom.model.IamUpateUserModel;
+import com.doumee.biz.zbom.model.IamUpdateRoleModel;
+import com.doumee.biz.zbom.model.IamUpdateShopModel;
+import com.doumee.biz.zbom.model.IamUpdateUserModel;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
@@ -32,7 +33,7 @@
     public ApiResponse<String> updateShopInfo(@RequestHeader(name = "token") String token,
                                       @RequestHeader(name = "uuid") String uuid ,
                                       @RequestHeader(name = "timestamp") String timestamp,
-                                      @RequestBody List<IamUpateShopModel> shopList,
+                                      @RequestBody List<IamUpdateShopModel> shopList,
                                       HttpServletRequest request ) {
         int success = Constants.ZERO;
         ApiResponse<String> r = null;
@@ -56,7 +57,7 @@
     public ApiResponse<String> updateUserInfo(@RequestHeader(name = "token") String token,
                                       @RequestHeader(name = "uuid") String uuid ,
                                       @RequestHeader(name = "timestamp") String timestamp,
-                                      @RequestBody IamUpateUserModel upateUserModel,
+                                      @RequestBody IamUpdateUserModel upateUserModel,
                                       HttpServletRequest request) {
         int success = Constants.ZERO;
         ApiResponse<String> r = null;
@@ -75,5 +76,29 @@
         }
         return r;
     }
+    @ApiOperation("瑙掕壊淇℃伅鏇存柊鎺ㄩ��")
+    @PostMapping("/iam/updateRoleInfo")
+    public ApiResponse<String> updateRoleInfo(@RequestHeader(name = "token") String token,
+                                      @RequestHeader(name = "uuid") String uuid ,
+                                      @RequestHeader(name = "timestamp") String timestamp,
+                                      @RequestBody IamUpdateRoleModel upateModel,
+                                      HttpServletRequest request) {
+        int success = Constants.ZERO;
+        ApiResponse<String> r = null;
+        try {
+            zbomIAMService.updateRoleInfo(token,uuid,timestamp,upateModel);
+            r  = ApiResponse.successIam("鎿嶄綔鎴愬姛");
+        }catch (BusinessException e){
+              success = Constants.ONE;
+            r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"鎿嶄綔澶辫触"));
+        }catch (Exception e){
+            success = Constants.ONE;
+            e.getMessage();
+            r = ApiResponse.failed("鎿嶄綔澶辫触");
+        }finally {
+            zbomIAMService.saveInterfaceLog("/push/iam/updateRoleInfo",Constants.ONE,"IAM鎺ㄩ�佽鑹茶处鍙蜂俊鎭�", token, uuid, timestamp, upateModel,success, JSONObject.toJSONString(r));
+        }
+        return r;
+    }
 
 }
diff --git a/server/db/business.iam_role.permissions.sql b/server/db/business.iam_role.permissions.sql
new file mode 100644
index 0000000..7bd53b3
--- /dev/null
+++ b/server/db/business.iam_role.permissions.sql
@@ -0,0 +1,6 @@
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:iamrole:create', '鏂板缓蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:iamrole:delete', '鍒犻櫎蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:iamrole:update', '淇敼蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:iamrole:query', '鏌ヨ蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:iamrole:exportExcel', '瀵煎嚭蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
+
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java b/server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java
index 006b2c6..97451b6 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java
@@ -1,9 +1,8 @@
 package com.doumee.biz.zbom;
 
-import com.doumee.biz.zbom.model.IamUpateShopModel;
-import com.doumee.biz.zbom.model.IamUpateUserModel;
-import com.doumee.dao.business.MemberMapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.doumee.biz.zbom.model.IamUpdateRoleModel;
+import com.doumee.biz.zbom.model.IamUpdateShopModel;
+import com.doumee.biz.zbom.model.IamUpdateUserModel;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -27,8 +26,10 @@
      */
     void startOrgInit(String params);
 
-    void updateShopInfo(String token, String uuid, String timestamp, List<IamUpateShopModel> shopList);
+    void updateShopInfo(String token, String uuid, String timestamp, List<IamUpdateShopModel> shopList);
 
-    void updateUserInfo(String token, String uuid, String timestamp, IamUpateUserModel upateUserModel);
+    void updateUserInfo(String token, String uuid, String timestamp, IamUpdateUserModel upateUserModel);
     void  saveInterfaceLog(String url,int type,String name, String token, String uuid, String timestamp, Object obj,Integer success,String respone);
+
+    void updateRoleInfo(String token, String uuid, String timestamp, IamUpdateRoleModel upateModel);
 }
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 b59e848..d33ff5b 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
@@ -34,6 +34,8 @@
     @Autowired
     private UsersMapper usersMapper;
     @Autowired
+    private IamRoleMapper iamRoleMapper;
+    @Autowired
     private ShopMapper shopMapper;
     @Autowired
     private CategorySegMapper categorySegMapper;
@@ -67,7 +69,49 @@
     }
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void updateShopInfo(String token, String uuid, String timestamp, List<IamUpateShopModel> shopList) {
+    public void updateRoleInfo(String token, String uuid, String timestamp, IamUpdateRoleModel upateModel){
+        if(upateModel == null ||StringUtils.isBlank(upateModel.getId()) ){
+            return;
+        }
+        isValidToken(uuid,timestamp,token);
+
+            IamRole role = iamRoleMapper.selectOne(new QueryWrapper<IamRole>().lambda()
+                    .eq(IamRole::getIamId,upateModel.getId())
+                    .eq(IamRole::getIsdeleted,Constants.ZERO)
+                    .last("limit 1"));
+            if(role == null){
+                role = new IamRole();
+                role.setCreateDate(new Date());
+                iamRoleMapper.insert(initRoleInfo(role,upateModel));
+            }else {
+                role.setEditDate(new Date());
+                iamRoleMapper.updateById(initRoleInfo(role,upateModel));
+            }
+
+
+    }
+
+    private IamRole initRoleInfo(IamRole role, IamUpdateRoleModel upateModel) {
+        role.setEditDate(new Date());
+        role.setIsdeleted(Constants.ZERO);
+        role.setIamId(upateModel.getId());
+        role.setAppId(upateModel.getAppId());
+        role.setName(upateModel.getName());
+        role.setEid(upateModel.getEid());
+        role.setCode(upateModel.getCode());
+        role.setStatus(upateModel.getStatus());
+        role.setRegister(upateModel.getRegister());
+        role.setSyncDate(role.getEditDate());
+        role.setType(upateModel.getType());
+        role.setRemark(upateModel.getRemark());
+        role.setLabels(upateModel.getLabel());
+        role.setCustomUnique(upateModel.getCustomUnique());
+        return role;
+    }
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void updateShopInfo(String token, String uuid, String timestamp, List<IamUpdateShopModel> shopList) {
         if(shopList == null ||shopList.size() == 0){
             return;
         }
@@ -78,7 +122,7 @@
         List<CategorySeg> categorySegList = new ArrayList<>();
         List<Segments> segmentsList = new ArrayList<>();
         Date date  = new Date();
-        for(IamUpateShopModel model : shopList){
+        for(IamUpdateShopModel model : shopList){
             Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda()
                     .eq(Shop::getOrgId,model.getIdtOrgId())
                     .last("limit 1"));
@@ -215,7 +259,7 @@
         return data;
     }
 
-    private Shop initShopInfo(Shop shop, IamUpateShopModel model, Date date) {
+    private Shop initShopInfo(Shop shop, IamUpdateShopModel model, Date date) {
         shop.setEditDate(date);
         shop.setOrgId(model.getIdtOrgId());
         shop.setName(model.getIdtOrgName());
@@ -278,7 +322,7 @@
 
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void updateUserInfo(String token, String uuid, String timestamp, IamUpateUserModel upateUserModel){
+    public void updateUserInfo(String token, String uuid, String timestamp, IamUpdateUserModel upateUserModel){
         if(upateUserModel == null ||upateUserModel.getIdtUserId() == null){
             return;
         }
@@ -296,7 +340,7 @@
         }
     }
 
-    private Users initUserModel(Users users, IamUpateUserModel upateUserModel) {
+    private Users initUserModel(Users users, IamUpdateUserModel upateUserModel) {
         if(users == null){
             users = new Users();
             users.setCreateDate(new Date());
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateRoleModel.java b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateRoleModel.java
new file mode 100644
index 0000000..cf9525c
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateRoleModel.java
@@ -0,0 +1,48 @@
+package com.doumee.biz.zbom.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("蹇楅偊IAM浜哄憳璐﹀彿鏇存柊鎺ㄩ�佸弬鏁�")
+public class IamUpdateRoleModel implements Serializable {
+    /**
+     * 鐗瑰埆璇存槑锛氫笅娓哥郴缁熷湪鎺ユ敹鎶ユ枃锛屾牴鎹甶dt_user__id鍒ゅ畾璐﹀彿鏄柊澧炶繕鏄慨鏀癸紝杩涜璐﹀彿鏂板鎴栬�呬慨鏀规椂锛屽厛鍒ゆ柇idt_user__id锛圛AM鐢ㄦ埛涓婚敭锛夊湪涓嬫父iamid锛堝垵濮嬪寲鏃堕渶缁存姢iamid锛変腑鏄惁瀛樺湪:
+     * 瀛樺湪锛屽垯闇�瑕佸啀鏍规嵁鎺ㄩ�佺殑鐧诲綍璐﹀彿(app_account__account_no)鍘绘暟鎹簱鏌ヨ鐧诲綍璐﹀彿锛屽鏋滄煡璇㈢殑缁撴灉鏄� 1鏉℃暟鎹苟涓� id 璺熷綋鍓嶆帹閫佺敤鎴� id 鐩稿悓锛屽垯鏇存柊褰撳墠鏁版嵁锛屽惁鍒欐彁绀衡�滆鐢ㄦ埛绯荤粺宸茬粡瀛樺湪锛屾洿鏂板け璐モ��;
+     * 涓嶅瓨鍦紝涔熼渶瑕佹瘮瀵圭櫥褰曡处鍙�(app_account__account_no)鏄惁璺熷叾瀹冭处鍙风殑鐧诲綍璐﹀彿鐩稿悓,濡傛灉鐩稿悓锛屾彁绀衡�滆鐢ㄦ埛绯荤粺宸茬粡瀛樺湪锛屾柊澧炲け璐モ��:濡傛灉涓嶅瓨鍦紝鍒欐柊澧炴暟鎹��
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private String   id	;//String	涓婚敭
+    @ApiModelProperty(value = "搴旂敤id")
+    private String   appId	;//	String	搴旂敤id
+    @ApiModelProperty(value = "浼佷笟id")
+    private String   eid		;//String	浼佷笟id
+    @ApiModelProperty(value = "customUnique")
+    private String  customUnique	;//	String
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
+
+    private String  name		;//String	瑙掕壊鍚嶇О
+    @ApiModelProperty(value = "瑙掕壊缂栫爜")
+    private String  code		;//	String	瑙掕壊缂栫爜
+    @ApiModelProperty(value = "鐘舵�� 1鍚敤 0绂佺敤")
+    private String  status	;//	String	鐘舵�� 1鍚敤 0绂佺敤
+    @ApiModelProperty(value = "瑙掕壊璇存槑")
+    private String   remark		;//String	瑙掕壊璇存槑
+    @ApiModelProperty(value = "銆愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�")
+    private String  type		;//String	銆愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�
+    @ApiModelProperty(value = "銆愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�")
+    private String  register		;//String	銆愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�
+    @ApiModelProperty(value = "銆愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級")
+    private String  label	;//	String	銆愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級
+    @ApiModelProperty(value = "鍒涘缓鑰�")
+    private String   creator		;//String	鍒涘缓鑰�
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private String   createTime		;//Date	鍒涘缓鏃堕棿
+    @ApiModelProperty(value = "鏇存柊鑰�")
+    private String  updater		;//String	鏇存柊鑰�
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private String  updateTime		;//Date	鏇存柊鏃堕棿
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateShopModel.java b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java
similarity index 98%
rename from server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateShopModel.java
rename to server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java
index ea2728e..d8e17d2 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateShopModel.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java
@@ -12,7 +12,7 @@
 
 @Data
 @ApiModel("蹇楅偊IAM缁勭粐鏇存柊鎺ㄩ�佸弬鏁�")
-public class IamUpateShopModel implements Serializable {
+public class IamUpdateShopModel implements Serializable {
     @JSONField(name="idt_org__id")
     @JsonProperty("idt_org__id")
     @SerializedName("idt_org__id")
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateUserModel.java b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java
similarity index 99%
rename from server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateUserModel.java
rename to server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java
index db0560b..3accb0b 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateUserModel.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java
@@ -12,7 +12,7 @@
 
 @Data
 @ApiModel("蹇楅偊IAM浜哄憳璐﹀彿鏇存柊鎺ㄩ�佸弬鏁�")
-public class IamUpateUserModel implements Serializable {
+public class IamUpdateUserModel implements Serializable {
     /**
      * 鐗瑰埆璇存槑锛氫笅娓哥郴缁熷湪鎺ユ敹鎶ユ枃锛屾牴鎹甶dt_user__id鍒ゅ畾璐﹀彿鏄柊澧炶繕鏄慨鏀癸紝杩涜璐﹀彿鏂板鎴栬�呬慨鏀规椂锛屽厛鍒ゆ柇idt_user__id锛圛AM鐢ㄦ埛涓婚敭锛夊湪涓嬫父iamid锛堝垵濮嬪寲鏃堕渶缁存姢iamid锛変腑鏄惁瀛樺湪:
      * 瀛樺湪锛屽垯闇�瑕佸啀鏍规嵁鎺ㄩ�佺殑鐧诲綍璐﹀彿(app_account__account_no)鍘绘暟鎹簱鏌ヨ鐧诲綍璐﹀彿锛屽鏋滄煡璇㈢殑缁撴灉鏄� 1鏉℃暟鎹苟涓� id 璺熷綋鍓嶆帹閫佺敤鎴� id 鐩稿悓锛屽垯鏇存柊褰撳墠鏁版嵁锛屽惁鍒欐彁绀衡�滆鐢ㄦ埛绯荤粺宸茬粡瀛樺湪锛屾洿鏂板け璐モ��;
diff --git a/server/service/src/main/java/com/doumee/dao/business/IamRoleMapper.java b/server/service/src/main/java/com/doumee/dao/business/IamRoleMapper.java
new file mode 100644
index 0000000..bdd0372
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/IamRoleMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.IamRole;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/07/24 10:43
+ */
+public interface IamRoleMapper extends BaseMapper<IamRole> {
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/IamRole.java b/server/service/src/main/java/com/doumee/dao/business/model/IamRole.java
new file mode 100644
index 0000000..9a0d69a
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/model/IamRole.java
@@ -0,0 +1,99 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2024/07/24 10:43
+ */
+@Data
+@ApiModel("蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛�")
+@TableName("`iam_role`")
+public class IamRole {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Long id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "瑙掕壊璇存槑")
+    @ExcelColumn(name="瑙掕壊璇存槑")
+    private String remark;
+
+    @ApiModelProperty(value = "IAM涓婚敭")
+    @ExcelColumn(name="IAM涓婚敭")
+    private String iamId;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
+    @ExcelColumn(name="瑙掕壊鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "搴旂敤缂栫爜")
+    @ExcelColumn(name="搴旂敤缂栫爜")
+    private String appId;
+
+    @ApiModelProperty(value = "鐘舵�� 1鍚敤 0绂佺敤")
+    @ExcelColumn(name="鐘舵�� 1鍚敤 0绂佺敤")
+    private String status;
+
+    @ApiModelProperty(value = "浼佷笟id")
+    @ExcelColumn(name="浼佷笟id")
+    private String eid;
+    @ApiModelProperty(value = "customUnique")
+    @ExcelColumn(name="customUnique")
+    private String customUnique;
+
+    @ApiModelProperty(value = "銆愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�")
+    @ExcelColumn(name="銆愯鑹插垎绫汇�戯紙0鍔犵洘鍟嗐��1鎬婚儴銆�2寤哄簵锛�")
+    private String type;
+
+    @ApiModelProperty(value = "鏈�杩戝悓姝ユ椂闂�")
+    @ExcelColumn(name="鏈�杩戝悓姝ユ椂闂�")
+    private Date syncDate;
+
+    @ApiModelProperty(value = "鏈�杩戝悓姝ュ娉�")
+    @ExcelColumn(name="鏈�杩戝悓姝ュ娉�")
+    private String syncInfo;
+
+    @ApiModelProperty(value = "瑙掕壊缂栫爜")
+    @ExcelColumn(name="瑙掕壊缂栫爜")
+    private String code;
+
+    @ApiModelProperty(value = "銆愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�")
+    @ExcelColumn(name="銆愭敞鍐屽彲閫夈�戯紙1鍙��0涓嶅彲锛�")
+    private String register;
+
+    @ApiModelProperty(value = "銆愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級")
+    @ExcelColumn(name="銆愯鑹叉爣绛俱�戯紙1閿�鍞被銆�2璁捐绫� 3鍞悗绫汇��4璐㈠姟绫汇��5琛屾斂绫伙級")
+    private String labels;
+
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/IamRoleService.java b/server/service/src/main/java/com/doumee/service/business/IamRoleService.java
new file mode 100644
index 0000000..10cae57
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/service/business/IamRoleService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.IamRole;
+import java.util.List;
+
+/**
+ * 蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2024/07/24 10:43
+ */
+public interface IamRoleService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param iamRole 瀹炰綋瀵硅薄
+     * @return Long
+     */
+    Long create(IamRole iamRole);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Long id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param iamRole 瀹炰綋瀵硅薄
+     */
+    void delete(IamRole iamRole);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Long> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param iamRole 瀹炰綋瀵硅薄
+     */
+    void updateById(IamRole iamRole);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param iamRoles 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<IamRole> iamRoles);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return IamRole
+     */
+    IamRole findById(Long id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param iamRole 瀹炰綋瀵硅薄
+     * @return IamRole
+     */
+    IamRole findOne(IamRole iamRole);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param iamRole 瀹炰綋瀵硅薄
+     * @return List<IamRole>
+     */
+    List<IamRole> findList(IamRole iamRole);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<IamRole>
+     */
+    PageData<IamRole> findPage(PageWrap<IamRole> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param iamRole 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(IamRole iamRole);
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
index 44ebc5b..881cf57 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
@@ -127,9 +127,6 @@
         return ztAreaTreeResponses;
     }
 
-
-
-
     @Override
     @Async
     public void userLogout(ZTBaseRequst ztBaseRequst){
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java
new file mode 100644
index 0000000..096b072
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java
@@ -0,0 +1,174 @@
+package com.doumee.service.business.impl;
+
+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.business.IamRoleMapper;
+import com.doumee.dao.business.model.IamRole;
+import com.doumee.service.business.IamRoleService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 蹇楅偊IAM浜哄憳瑙掕壊淇℃伅琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2024/07/24 10:43
+ */
+@Service
+public class IamRoleServiceImpl implements IamRoleService {
+
+    @Autowired
+    private IamRoleMapper iamRoleMapper;
+
+    @Override
+    public Long create(IamRole iamRole) {
+        iamRoleMapper.insert(iamRole);
+        return iamRole.getId();
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        IamRole model = new IamRole();
+        model.setId(id);
+        model.setIsdeleted(Constants.ONE);
+        model.setEditDate(new Date());
+        iamRoleMapper.updateById(model);
+    }
+
+    @Override
+    public void delete(IamRole iamRole) {
+        UpdateWrapper<IamRole> deleteWrapper = new UpdateWrapper<>(iamRole);
+        iamRoleMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        for(Long id : ids){
+            deleteById(id);
+        }
+    }
+
+    @Override
+    public void updateById(IamRole iamRole) {
+        iamRoleMapper.updateById(iamRole);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<IamRole> iamRoles) {
+        if (CollectionUtils.isEmpty(iamRoles)) {
+            return;
+        }
+        for (IamRole iamRole: iamRoles) {
+            this.updateById(iamRole);
+        }
+    }
+
+    @Override
+    public IamRole findById(Long id) {
+        return iamRoleMapper.selectById(id);
+    }
+
+    @Override
+    public IamRole findOne(IamRole iamRole) {
+        QueryWrapper<IamRole> wrapper = new QueryWrapper<>(iamRole);
+        return iamRoleMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<IamRole> findList(IamRole iamRole) {
+        QueryWrapper<IamRole> wrapper = new QueryWrapper<>(iamRole);
+        return iamRoleMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<IamRole> findPage(PageWrap<IamRole> pageWrap) {
+        IPage<IamRole> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<IamRole> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        pageWrap.getModel().setIsdeleted(Constants.ZERO);
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(IamRole::getId, pageWrap.getModel().getId());
+        }
+
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(IamRole::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(IamRole::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(IamRole::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getEditor() != null) {
+            queryWrapper.lambda().eq(IamRole::getEditor, pageWrap.getModel().getEditor());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(IamRole::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(IamRole::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(IamRole::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getRemark() != null) {
+            queryWrapper.lambda().eq(IamRole::getRemark, pageWrap.getModel().getRemark());
+        }
+        if (pageWrap.getModel().getIamId() != null) {
+            queryWrapper.lambda().eq(IamRole::getIamId, pageWrap.getModel().getIamId());
+        }
+        if (pageWrap.getModel().getName() != null) {
+            queryWrapper.lambda().eq(IamRole::getName, pageWrap.getModel().getName());
+        }
+        if (pageWrap.getModel().getAppId() != null) {
+            queryWrapper.lambda().eq(IamRole::getAppId, pageWrap.getModel().getAppId());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.lambda().eq(IamRole::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getEid() != null) {
+            queryWrapper.lambda().eq(IamRole::getEid, pageWrap.getModel().getEid());
+        }
+        if (pageWrap.getModel().getType() != null) {
+            queryWrapper.lambda().eq(IamRole::getType, pageWrap.getModel().getType());
+        }
+        if (pageWrap.getModel().getSyncDate() != null) {
+            queryWrapper.lambda().ge(IamRole::getSyncDate, Utils.Date.getStart(pageWrap.getModel().getSyncDate()));
+            queryWrapper.lambda().le(IamRole::getSyncDate, Utils.Date.getEnd(pageWrap.getModel().getSyncDate()));
+        }
+        if (pageWrap.getModel().getSyncInfo() != null) {
+            queryWrapper.lambda().eq(IamRole::getSyncInfo, pageWrap.getModel().getSyncInfo());
+        }
+        if (pageWrap.getModel().getCode() != null) {
+            queryWrapper.lambda().eq(IamRole::getCode, pageWrap.getModel().getCode());
+        }
+        if (pageWrap.getModel().getRegister() != null) {
+            queryWrapper.lambda().eq(IamRole::getRegister, pageWrap.getModel().getRegister());
+        }
+        if (pageWrap.getModel().getLabels() != null) {
+            queryWrapper.lambda().eq(IamRole::getLabels, pageWrap.getModel().getLabels());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(iamRoleMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(IamRole iamRole) {
+        QueryWrapper<IamRole> wrapper = new QueryWrapper<>(iamRole);
+        return iamRoleMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
index b4dc22b..a4ba170 100644
--- a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -296,7 +296,6 @@
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍒嗙被鏁版嵁 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getCatalogList")
@@ -305,14 +304,13 @@
     })
     public ApiResponse<List<ZTCatalogInfoResponse>> getCatalogList (@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
         ztCatalogListRequest.setUserId(getMemberId()+"");
-        ztCatalogListRequest.setUserType(getUserType());
+        ztCatalogListRequest.setUserType(ZTConstants.CUSTOMER);
         List<ZTCatalogInfoResponse> ztCatalogInfoResponseList = getZhongTaiDataService.getCatalogList(ztCatalogListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztCatalogInfoResponseList);
     }
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鏍囩鏁版嵁 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getCataLogTagList")
@@ -321,14 +319,13 @@
     })
     public ApiResponse<List<ZTTagInfoResponse>> getCataLogTagList(@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
         ztCatalogListRequest.setUserId(getMemberId()+"");
-        ztCatalogListRequest.setUserType(getUserType());
+        ztCatalogListRequest.setUserType(ZTConstants.CUSTOMER);
         List<ZTTagInfoResponse> ztTagInfoResponseList = getZhongTaiDataService.getCataLogTagList(ztCatalogListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztTagInfoResponseList);
     }
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "琛屼负鍐呭鎺ュ彛 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/actionDo")
@@ -338,11 +335,10 @@
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "actionType", value = "琛屼负绫诲瀷锛氭敹钘忥細collect;鍙栨秷鏀惰棌锛歝ollect_cancel;鍠滄锛歭ike;鍙栨秷鍠滄锛歭ike_cancel锛涙祻瑙堬細view;鍒嗕韩锛歴hare;涓嬭浇锛歞ownload", required = true),
     })
     public ApiResponse actionDo(@RequestParam String id,@RequestParam String actionType) {
-        getZhongTaiDataService.actionDo(getMemberId(),getUserType(),id,actionType);
+        getZhongTaiDataService.actionDo(getMemberId(),ZTConstants.CUSTOMER,id,actionType);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹氬埗鏈嶅姟鍒楄〃", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getCustomizedNewsList")
@@ -353,7 +349,6 @@
         return ApiResponse.success("鏌ヨ鎴愬姛",newsService.getCustomizedNewsList(Constants.ONE,null,null));
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹氬埗鏈嶅姟璇︽儏", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getCustomizedNewsDetail")
@@ -385,7 +380,7 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTCusFavoritesInfoResponse>> getZhongTaiCusFavorite(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTCusFavoritesInfoResponse> ztBasePageResponse = getZhongTaiDataService.getZhongTaiCusFavorite(ztContentListRequest);
         return ApiResponse.success("鑾峰彇鎴愬姛",ztBasePageResponse);
     }
@@ -400,7 +395,7 @@
     })
     public ApiResponse<List<ZTCusCarouselImageResponse>> getZhongTaiCarouselImage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         List<ZTCusCarouselImageResponse> ztCusCarouselImageResponseList = getZhongTaiDataService.getZhongTaiCarouselImage(ztContentListRequest);
         return ApiResponse.success("鑾峰彇鎴愬姛",ztCusCarouselImageResponseList);
     }
@@ -415,13 +410,12 @@
     })
     public ApiResponse<ZTCusCarouselImageResponse> getZhongTaiCarouselImageDetail(@RequestBody ZTDataDetailRequest ztDataDetailRequest) {
         ztDataDetailRequest.setUserId(getMemberId()+"");
-        ztDataDetailRequest.setUserType(getUserType());
+        ztDataDetailRequest.setUserType(ZTConstants.CUSTOMER);
         ZTCusCarouselImageResponse ztCusCarouselImageResponse = getZhongTaiDataService.getZhongTaiCarouselImageDetail(ztDataDetailRequest);
         return ApiResponse.success("鑾峰彇鎴愬姛",ztCusCarouselImageResponse);
     }
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍜ㄨ鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiProductNewsPage")
@@ -430,13 +424,12 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTProductNewsInfoResponse>> getZhongTaiProductNewsPage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTProductNewsInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiProductNewsPage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "浜у搧鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiProductPage")
@@ -445,12 +438,11 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTProductInfoResponse>> getZhongTaiProductPage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTProductInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiProductPage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹炴櫙鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiRealcasePage")
@@ -459,12 +451,11 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTRealcaseInfoResponse>> getZhongTaiRealcasePage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTRealcaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiRealcasePage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瑙嗛鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiVideoPage")
@@ -473,12 +464,11 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTVideoInfoResponse>> getZhongTaiVideoPage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTVideoInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiVideoPage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍏ㄥ眿妗堜緥鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiWholecasePage")
@@ -487,12 +477,11 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTCaseInfoResponse>> getZhongTaiWholecasePage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTCaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiWholecasePage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "蹇楄瑁呬慨鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiZbDecoPage")
@@ -501,13 +490,12 @@
     })
     public ApiResponse<ZTBasePageResponse<ZTZbDecoInfoResponse>> getZhongTaiZbDecoPage(@RequestBody ZTContentListRequest ztContentListRequest) {
         ztContentListRequest.setUserId(getMemberId()+"");
-        ztContentListRequest.setUserType(getUserType());
+        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
         ZTBasePageResponse<ZTZbDecoInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiZbDecoPage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍏ㄥ眿妗堜緥璇︽儏 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getWholecaseInfo")
@@ -516,12 +504,11 @@
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
     })
     public ApiResponse<ZTCaseInfoResponse> getWholecaseInfo(@RequestParam String id) {
-        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,getUserType(),getMemberId());
+        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,ZTConstants.CUSTOMER,getMemberId());
         return ApiResponse.success("鏌ヨ鎴愬姛",ztCaseInfoResponse);
     }
 
 
-    @UserLoginRequired
     @LoginRequired
     @GetMapping("/getProductNewsInfo")
     @ApiOperation(value = "浜у搧璧勮璇︽儏 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
@@ -530,13 +517,12 @@
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
     })
     public ApiResponse<ZTProductNewsInfoResponse> getProductNewsInfo(@RequestParam String id) {
-        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,getUserType(),getMemberId());
+        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,ZTConstants.CUSTOMER,getMemberId());
         return ApiResponse.success("鏌ヨ鎴愬姛",ztProductNewsInfoResponse);
     }
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹炴櫙妗堜緥 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getRealcaseInfo")
@@ -545,13 +531,12 @@
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
     })
     public ApiResponse<ZTRealcaseInfoResponse> getRealcaseInfo(@RequestParam String id) {
-        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,getUserType(),getMemberId());
+        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,ZTConstants.CUSTOMER,getMemberId());
         return ApiResponse.success("鏌ヨ鎴愬姛",ztRealcaseInfoResponse);
     }
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "浜у搧璇︽儏 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getProductInfo")
@@ -578,5 +563,4 @@
         ZTBasePageResponse<ZTCollectLikeInfoResponse>  ztBasePageResponse= getZhongTaiDataService.collectLikePage(ztCollectLikeRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
-
 }
diff --git a/wechat_staff/api/index.js b/wechat_staff/api/index.js
index df10226..4cc60e9 100644
--- a/wechat_staff/api/index.js
+++ b/wechat_staff/api/index.js
@@ -67,6 +67,13 @@
     data
   })
 }
+//鎺ㄥ箍鍜ㄨ鍒嗕韩
+export const saveShareRecord = (data) => {
+  return request({
+    url: '/web/customer/saveShareRecord?id='+data,
+    data
+  })
+}
 // 浜у搧瑙嗛
 export const getZhongTaiVideoPage = (data) => {
   return request({
diff --git a/wechat_staff/pages/index/index.js b/wechat_staff/pages/index/index.js
index 7e2e74e..3952d1c 100644
--- a/wechat_staff/pages/index/index.js
+++ b/wechat_staff/pages/index/index.js
@@ -3,7 +3,8 @@
   getDailyUpdates,
   getZSZXCatalogs,
   getZhongTaiVideoPage,
-  getCustomizedNewsList
+  getCustomizedNewsList,
+  newsPage
 } from '../../api/index'
 Page({
   data: {
diff --git a/wechat_staff/pages/index/index.wxml b/wechat_staff/pages/index/index.wxml
index 04cfb41..18d419c 100644
--- a/wechat_staff/pages/index/index.wxml
+++ b/wechat_staff/pages/index/index.wxml
@@ -19,7 +19,7 @@
         <text class="num">{{ DailyUpdates.dailyUpdateNum }}</text>
         <text>鏉�</text>
       </view>
-      <view class="right">{{ DailyUpdates.shareNum }}w鍔犲凡杞彂</view>
+      <view class="right">1w+宸茶浆鍙�</view>
     </view>
     <view class="imgs">
       <view wx:for="{{ DailyUpdates.newsList}}" class="img_wrap">
diff --git a/wechat_staff/pages/promotion/index.js b/wechat_staff/pages/promotion/index.js
index e3638d0..42ce6bd 100644
--- a/wechat_staff/pages/promotion/index.js
+++ b/wechat_staff/pages/promotion/index.js
@@ -1,4 +1,4 @@
-import { newsPage } from '../../api/index'
+import { newsPage,saveShareRecord } from '../../api/index'
 import moment from "moment";
 Page({
 
@@ -58,6 +58,7 @@
   },
   downfile(e){
     const item =  e.currentTarget.dataset.index;
+    saveShareRecord(item.id)
     const files = []
     if(item.fileType ==1 && item.fileList && item.fileList.length && item.fileList[0].fileurlFull  ){
       files.push(item.fileList[0].fileurlFull)

--
Gitblit v1.9.3