liukangdong
2024-07-24 098357885c9c7124ddad0d14a7fecb5e987d20a7
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbomyoujia
已添加11个文件
已修改18个文件
已重命名2个文件
1037 ■■■■■ 文件已修改
admin/src/api/business/iamRole.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaIamRoleWindow.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/iamRole.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/IamRoleController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/PushController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.iam_role.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomIAMService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateRoleModel.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/IamRoleMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/IamRole.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/IamRoleService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/NewsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/IamRoleServiceImpl.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/api/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/promotion/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
    }
  })
}
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="请输入IAM主键" 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="请输入企业id" 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>
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>
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));
    }
}
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;
    }
}
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);
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);
}
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);
}
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());
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;
    }
}
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 {
    /**
     * ç‰¹åˆ«è¯´æ˜Žï¼šä¸‹æ¸¸ç³»ç»Ÿåœ¨æŽ¥æ”¶æŠ¥æ–‡ï¼Œæ ¹æ®idt_user__id判定账号是新增还是修改,进行账号新增或者修改时,先判断idt_user__id(IAM用户主键)在下游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    æ›´æ–°æ—¶é—´
}
server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateShopModel.java
ÎļþÃû´Ó server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateShopModel.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")
server/service/src/main/java/com/doumee/biz/zbom/model/IamUpdateUserModel.java
ÎļþÃû´Ó server/service/src/main/java/com/doumee/biz/zbom/model/IamUpateUserModel.java ÐÞ¸Ä
@@ -12,7 +12,7 @@
@Data
@ApiModel("志邦IAM人员账号更新推送参数")
public class IamUpateUserModel implements Serializable {
public class IamUpdateUserModel implements Serializable {
    /**
     * ç‰¹åˆ«è¯´æ˜Žï¼šä¸‹æ¸¸ç³»ç»Ÿåœ¨æŽ¥æ”¶æŠ¥æ–‡ï¼Œæ ¹æ®idt_user__id判定账号是新增还是修改,进行账号新增或者修改时,先判断idt_user__id(IAM用户主键)在下游iamid(初始化时需维护iamid)中是否存在:
     * å­˜åœ¨ï¼Œåˆ™éœ€è¦å†æ ¹æ®æŽ¨é€çš„登录账号(app_account__account_no)去数据库查询登录账号,如果查询的结果是 1条数据并且 id è·Ÿå½“前推送用户 id ç›¸åŒï¼Œåˆ™æ›´æ–°å½“前数据,否则提示“该用户系统已经存在,更新失败”;
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 å°ç¨‹åºç«¯
}
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 ;
}
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 ="批量绑定喜欢给客户";
    }
}
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> {
}
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;
}
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);
}
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人员角色信息表Service定义
 * @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);
}
server/service/src/main/java/com/doumee/service/business/NewsService.java
@@ -115,7 +115,7 @@
     * èŽ·å–æ¯æ—¥ä¸Šæ–°æ•°æ®
     * @return
     */
    DailyUpdatesResponse getDailyUpdatesResponse(Integer fileType);
    DailyUpdatesResponse getDailyUpdatesResponse();
    /**
     * ä¿å­˜æŽ¨å¹¿å’¨è¯¢åˆ†äº«è®°å½•
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);
    }
}
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人员角色信息表Service实现
 * @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);
    }
}
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;
    }
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);
    }
}
server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
@@ -69,11 +69,10 @@
    @ApiOperation(value = "【B端小程序】每日上新数据")
    @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());
    }
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")
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({
wechat_staff/pages/index/index.js
@@ -3,7 +3,8 @@
  getDailyUpdates,
  getZSZXCatalogs,
  getZhongTaiVideoPage,
  getCustomizedNewsList
  getCustomizedNewsList,
  newsPage
} from '../../api/index'
Page({
  data: {
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">
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)