From 098357885c9c7124ddad0d14a7fecb5e987d20a7 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 24 七月 2024 15:22:56 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbomyoujia

---
 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                                     |   13 
 wechat_staff/pages/promotion/index.js                                                            |    3 
 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/ZbomZhongTaiServiceImpl.java               |   21 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java       |   23 +
 admin/src/views/business/iamRole.vue                                                             |  114 ++++++
 server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java                   |    2 
 server/service/src/main/java/com/doumee/service/business/NewsService.java                        |    2 
 server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java                        |    1 
 server/db/business.iam_role.permissions.sql                                                      |    6 
 server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java                             |   13 
 server/web/src/main/java/com/doumee/api/web/PersonnelApi.java                                    |   22 +
 server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java |    4 
 server/service/src/main/java/com/doumee/dao/business/model/IamRole.java                          |   99 +++++
 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/GetZhongTaiDataService.java             |    7 
 server/service/src/main/java/com/doumee/service/business/IamRoleService.java                     |   97 +++++
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java                 |    3 
 server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java    |   23 +
 server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java            |  174 +++++++++
 server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java                   |    2 
 wechat_staff/pages/index/index.js                                                                |    3 
 admin/src/components/business/OperaIamRoleWindow.vue                                             |  106 +++++
 wechat_staff/api/index.js                                                                        |    7 
 server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java                               |    7 
 server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java               |    6 
 31 files changed, 998 insertions(+), 39 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/ZbomZhongTaiService.java b/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
index 23cf7fa..8ad9fc8 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -49,4 +49,5 @@
     List<ZTCusCarouselImageResponse> carouselImageList(ZTContentListRequest param);
     ZTCusCarouselImageResponse carouselImageDetail(ZTDataDetailRequest param);
     ZTBasePageResponse<ZTCollectLikeInfoResponse> collectLikePage(ZTCollectLikeRequest param);
+    ZTBaseResponse batchAddLike(ZTBatchAddListRequest param);
 }
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/impl/ZbomZhongTaiServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
index c00a5f4..dc18be7 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -751,4 +751,25 @@
         }
         return null;
     }
+
+    /**
+     * 鑾峰彇鍒嗙被鍜屽垎绫讳笅鐨勬爣绛�
+     * @param param
+     * @return
+     */
+    @Override
+    public ZTBaseResponse batchAddLike(ZTBatchAddListRequest param){
+        ZTBaseResponse result = sendHttpRequest(
+                ZTConstants.IntegerUrl.BATCH_ADD_LIKE_URL,
+                ZTConstants.IntegerName.BATCH_ADD_LIKE_NAME,
+                param.getToken(),
+                param.getUserType(),
+                JSONObject.toJSONString(param ),
+                new TypeReference<ZTBaseResponse<Object>>(){});
+        if(result!=null){
+            return result;
+        }
+        return null;
+    }
+
 }
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/biz/zbom/model/crm/response/CRMCustomerListResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java
index 9214dc7..19cbcb6 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java
@@ -20,5 +20,9 @@
     private String customerPhone;//	瀹㈡埛濮撳悕
     private String customerName;//	瀹㈡埛鎵嬫満鍙�
     private String  address	;//鍦板潃璇︽儏
+    private String  creationDate ;//鍒涘缓鏃堕棿
+    private String  customerId ;//瀹㈡埛 id
+    private String  platSourceId ;//浼犻�掑钩鍙� id
+    private String  platSource ;//骞冲彴绫诲瀷 1 pad 绔� 2 灏忕▼搴忕
 
 }
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java
new file mode 100644
index 0000000..28b8b90
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java
@@ -0,0 +1,23 @@
+package com.doumee.biz.zbom.model.zhongtai;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class ZTBatchAddListRequest extends  ZTBaseRequst{
+
+    @ApiModelProperty(value = "鍐呭IDS锛岃嫳鏂囬�楀彿闅斿紑")
+    private String articleIds;
+
+    @ApiModelProperty(value = "瀹㈡埛 id")
+    private String  customerId ;
+
+    @ApiModelProperty(value = "浼犻�掑钩鍙� id")
+    private String  platSourceId ;
+
+    @ApiModelProperty(value = "骞冲彴绫诲瀷 1 pad 绔� 2 灏忕▼搴忕")
+    private String  platSource ;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
index 1422de9..e9df120 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
@@ -78,6 +78,7 @@
         String REALCASE_PAGE_LIST_URL ="/content/api/realCasePageList";
         String REALCASE_INFO_URL ="/content/api/realCaseDetail";
         String FAVORITES_PAGE_URL ="/behavior/api/favoritesPageList";
+        String BATCH_ADD_LIKE_URL ="/content/api/batchAddLike";
 
 
     }
@@ -119,5 +120,7 @@
         String REALCASE_INFO_NAME ="鑾峰彇瀹炴櫙妗堜緥璇︽儏";
 
         String FAVORITES_NAME ="鑾峰彇鎴戠殑鍠滄/鏀惰棌鍒楄〃";
+
+        String BATCH_ADD_LIKE_NAME ="鎵归噺缁戝畾鍠滄缁欏鎴�";
     }
 }
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/GetZhongTaiDataService.java b/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
index 27a41e1..e208654 100644
--- a/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
+++ b/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
@@ -157,4 +157,11 @@
      * @return
      */
     ZTBasePageResponse<ZTCollectLikeInfoResponse> collectLikePage(ZTCollectLikeRequest ztCollectLikeRequest);
+
+    /**
+     * 涓彴 - 鎵归噺娣诲姞鍠滄缁欏鎴�
+     * @param param
+     * @return
+     */
+    void batchAddLike(ZTBatchAddListRequest param);
 }
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/NewsService.java b/server/service/src/main/java/com/doumee/service/business/NewsService.java
index 9046351..f104a18 100644
--- a/server/service/src/main/java/com/doumee/service/business/NewsService.java
+++ b/server/service/src/main/java/com/doumee/service/business/NewsService.java
@@ -115,7 +115,7 @@
      * 鑾峰彇姣忔棩涓婃柊鏁版嵁
      * @return
      */
-    DailyUpdatesResponse getDailyUpdatesResponse(Integer fileType);
+    DailyUpdatesResponse getDailyUpdatesResponse();
 
     /**
      * 淇濆瓨鎺ㄥ箍鍜ㄨ鍒嗕韩璁板綍
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..85495af 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){
@@ -344,4 +341,24 @@
         ZTBasePageResponse<ZTCollectLikeInfoResponse> response = zbomZhongTaiService.collectLikePage(ztCollectLikeRequest);
         return response;
     }
+
+    @Override
+    public void batchAddLike(ZTBatchAddListRequest ztBatchAddListRequest){
+        if(Objects.isNull(ztBatchAddListRequest)
+                || StringUtils.isBlank(ztBatchAddListRequest.getArticleIds())
+                || StringUtils.isBlank(ztBatchAddListRequest.getCustomerId())
+                || StringUtils.isBlank(ztBatchAddListRequest.getPlatSourceId())
+                || StringUtils.isBlank(ztBatchAddListRequest.getPlatSource())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        //鏌ヨ 涓彴
+        ZTBaseInfoResponse ztBaseInfoResponse = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,
+                Long.valueOf(ztBatchAddListRequest.getUserId()),ztBatchAddListRequest.getUserType());
+        ztBatchAddListRequest.setToken(ztBaseInfoResponse.getToken());
+        zbomZhongTaiService.batchAddLike(ztBatchAddListRequest);
+    }
+
+
+
 }
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/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
index 48e7f1e..22a4e05 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
@@ -380,19 +380,19 @@
      * @return
      */
     @Override
-    public DailyUpdatesResponse getDailyUpdatesResponse(Integer fileType){
+    public DailyUpdatesResponse getDailyUpdatesResponse(){
         DailyUpdatesResponse dailyUpdatesResponse = new DailyUpdatesResponse();
         dailyUpdatesResponse.setDailyUpdateNum(
                 newsMapper.selectCount(new QueryWrapper<News>().lambda()
                 .eq(News::getIsdeleted,Constants.ZERO)
                 .like(News::getCreateDate, DateUtil.getDateLong(new Date()))
-                .eq(News::getType,Constants.ONE)
+                .eq(News::getType,Constants.ZERO)
         ));
         dailyUpdatesResponse.setShareNum(
                 actionsMapper.selectCount(new QueryWrapper<Actions>())
         );
         dailyUpdatesResponse.setNewsList(
-                this.getCustomizedNewsList(Constants.ZERO,Constants.THREE,fileType)
+                this.getCustomizedNewsList(Constants.ZERO,Constants.THREE,Constants.ZERO)
         );
         return dailyUpdatesResponse;
     }
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 dd85290..55e3fc4 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
@@ -328,7 +328,6 @@
 
 
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "琛屼负鍐呭鎺ュ彛 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/actionDo")
@@ -342,7 +341,6 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹氬埗鏈嶅姟鍒楄〃", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getCustomizedNewsList")
@@ -353,7 +351,6 @@
         return ApiResponse.success("鏌ヨ鎴愬姛",newsService.getCustomizedNewsList(Constants.ONE,null,null));
     }
 
-    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹氬埗鏈嶅姟璇︽儏", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/getCustomizedNewsDetail")
@@ -408,6 +405,7 @@
 
 
 
+    @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "杞挱鍥捐鎯�", notes = "瀹㈡埛绔皬绋嬪簭")
     @PostMapping("/getZhongTaiCarouselImageDetail")
@@ -451,6 +449,7 @@
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
+
     @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹炴櫙鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
@@ -464,6 +463,7 @@
         ZTBasePageResponse<ZTRealcaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiRealcasePage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
+
 
     @UserLoginRequired
     @LoginRequired
@@ -479,6 +479,7 @@
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
 
+
     @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍏ㄥ眿妗堜緥鍒嗛〉鍒楄〃 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
@@ -492,6 +493,7 @@
         ZTBasePageResponse<ZTCaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiWholecasePage(ztContentListRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
+
 
     @UserLoginRequired
     @LoginRequired
@@ -508,6 +510,7 @@
     }
 
 
+
     @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "鍏ㄥ眿妗堜緥璇︽儏 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
@@ -520,6 +523,7 @@
         ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,getUserType(),getMemberId());
         return ApiResponse.success("鏌ヨ鎴愬姛",ztCaseInfoResponse);
     }
+
 
 
     @UserLoginRequired
@@ -537,6 +541,7 @@
 
 
 
+
     @UserLoginRequired
     @LoginRequired
     @ApiOperation(value = "瀹炴櫙妗堜緥 - 涓彴", notes = "瀹㈡埛绔皬绋嬪簭")
@@ -549,6 +554,7 @@
         ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,getUserType(),getMemberId());
         return ApiResponse.success("鏌ヨ鎴愬姛",ztRealcaseInfoResponse);
     }
+
 
 
 
@@ -579,5 +585,4 @@
         ZTBasePageResponse<ZTCollectLikeInfoResponse>  ztBasePageResponse= getZhongTaiDataService.collectLikePage(ztCollectLikeRequest);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztBasePageResponse);
     }
-
 }
diff --git a/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java b/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
index d367c4a..3ca5386 100644
--- a/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
@@ -69,11 +69,10 @@
     @ApiOperation(value = "銆怋绔皬绋嬪簭銆戞瘡鏃ヤ笂鏂版暟鎹�")
     @GetMapping("/getDailyUpdates")
     @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
-            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "fileType", value = "闄勪欢绫诲瀷 0鍥剧墖 1瑙嗛", required = false)
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
     })
-    public ApiResponse<DailyUpdatesResponse> getDailyUpdates(Integer fileType) {
-        return  ApiResponse.success(newsService.getDailyUpdatesResponse(fileType));
+    public ApiResponse<DailyUpdatesResponse> getDailyUpdates() {
+        return  ApiResponse.success(newsService.getDailyUpdatesResponse());
     }
 
 
diff --git a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
index 03ecf4d..203d880 100644
--- a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
@@ -4,10 +4,7 @@
 import com.doumee.biz.zbom.model.crm.CrmCustomerListRequest;
 import com.doumee.biz.zbom.model.crm.response.CRMBaseResponse;
 import com.doumee.biz.zbom.model.crm.response.CRMCustomerListResponse;
-import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst;
-import com.doumee.biz.zbom.model.zhongtai.ZTCatalogListRequest;
-import com.doumee.biz.zbom.model.zhongtai.ZTConstants;
-import com.doumee.biz.zbom.model.zhongtai.ZTContentListRequest;
+import com.doumee.biz.zbom.model.zhongtai.*;
 import com.doumee.biz.zbom.model.zhongtai.response.*;
 import com.doumee.config.annotation.LoginRequired;
 import com.doumee.config.annotation.UserLoginRequired;
@@ -200,6 +197,23 @@
         return  ApiResponse.success(getCrmDataService.getCrmCustomerList(crmCustomerListRequest));
     }
 
+
+    @UserLoginRequired
+    @LoginRequired
+    @ApiOperation(value = "鎵归噺娣诲姞鍠滄缁欏鎴�", notes = "鍛樺伐绔皬绋嬪簭")
+    @PostMapping("/batchAddLike")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse batchAddLike(@RequestBody ZTBatchAddListRequest ztBatchAddListRequest) {
+        ztBatchAddListRequest.setUserType(getUserType());
+        ztBatchAddListRequest.setUserId(getUserId().toString());
+        getZhongTaiDataService.batchAddLike(ztBatchAddListRequest);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+
     @UserLoginRequired
     @ApiOperation(value = "鐢ㄦ埛娉ㄩ攢", notes = "鍛樺伐绔皬绋嬪簭")
     @PostMapping("/logOff")
diff --git a/wechat_staff/api/index.js b/wechat_staff/api/index.js
index 3d94a4f..924f405 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