jiangping
2024-07-12 3faf877e3ca03028d60bba265249a543e8f9b533
提交
已添加21个文件
已修改10个文件
1277 ■■■■ 文件已修改
admin/src/components/system/dict/OperaDictDataWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/member.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionBatchDoRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionDoRequest.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTAreaListRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBaseRequst.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCatalogListRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCollectListRequest.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentInfoRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserGetTokenRequest.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserInfoUpdateRequest.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserLogoutRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTAreaInfoResponse.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBasePageResponse.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBaseResponse.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogInfoResponse.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogTagTypeResponse.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCollectResponse.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentInfoResponse.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentListResponse.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTUserGetTokenResponse.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/system/dict/OperaDictDataWindow.vue
@@ -14,7 +14,7 @@
        <span class="status-text">{{form.istext | disabledText1}}</span>
      </el-form-item>
      <el-form-item label="数据值" prop="code" required>
        <el-input v-if="!form.istext" v-model="form.code" placeholder="请输入数据值" v-trim maxlength="50"/>
        <el-input v-if="!form.istext" v-model="form.code" placeholder="请输入数据值" v-trim maxlength="500"/>
        <RichEditor v-else  :richData="form.code" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/>
      </el-form-item>
      <el-form-item label="状态" prop="disabled" required class="form-item-status">
admin/src/views/business/member.vue
@@ -2,41 +2,11 @@
  <TableLayout :permissions="['business:member:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="searchForm.remark" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="头像" prop="imgurl">
        <el-input v-model="searchForm.imgurl" placeholder="请输入头像" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="类型 0消费者" prop="type">
        <el-input v-model="searchForm.type" placeholder="请输入类型 0消费者" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="昵称" prop="nickname">
        <el-input v-model="searchForm.nickname" placeholder="请输入昵称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="姓名" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入姓名" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="出生日期" prop="birthday">
        <el-date-picker v-model="searchForm.birthday" value-format="yyyy-MM-dd" placeholder="请输入出生日期" @change="search"/>
      </el-form-item>
      <el-form-item label="手机号" prop="phone">
        <el-input v-model="searchForm.phone" placeholder="请输入手机号" @keypress.enter.native="search"></el-input>
@@ -44,62 +14,15 @@
      <el-form-item label="微信openid" prop="openid">
        <el-input v-model="searchForm.openid" placeholder="请输入微信openid" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态 0正常 1禁用" prop="status">
        <el-input v-model="searchForm.status" placeholder="请输入状态 0正常 1禁用" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="中台临时票据过期时间" prop="tokenDate">
        <el-date-picker v-model="searchForm.tokenDate" value-format="yyyy-MM-dd" placeholder="请输入中台临时票据过期时间" @change="search"/>
      </el-form-item>
      <el-form-item label="中台临时票据" prop="token">
        <el-input v-model="searchForm.token" placeholder="请输入中台临时票据" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="性别 1男 2女" prop="sex">
        <el-input v-model="searchForm.sex" placeholder="请输入性别 1男 2女" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="最近登录时间" prop="lastLoginDate">
        <el-date-picker v-model="searchForm.lastLoginDate" value-format="yyyy-MM-dd" placeholder="请输入最近登录时间" @change="search"/>
      </el-form-item>
      <el-form-item label="登录次数" prop="loginNum">
        <el-input v-model="searchForm.loginNum" placeholder="请输入登录次数" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="省份名称" prop="provinceName">
        <el-input v-model="searchForm.provinceName" placeholder="请输入省份名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="城市名称" prop="cityName">
        <el-input v-model="searchForm.cityName" placeholder="请输入城市名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="区域名称" prop="areaName">
        <el-input v-model="searchForm.areaName" placeholder="请输入区域名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="省份code" prop="provicneCode">
        <el-input v-model="searchForm.provicneCode" placeholder="请输入省份code" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="城市code" prop="cityCode">
        <el-input v-model="searchForm.cityCode" placeholder="请输入城市code" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="区域code" prop="areaCode">
        <el-input v-model="searchForm.areaCode" placeholder="请输入区域code" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="小区名称" prop="district">
        <el-input v-model="searchForm.district" placeholder="请输入小区名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="户型信息,室厅厨卫阳数量,格式(1-1-1-1-1)" prop="housetype">
        <el-input v-model="searchForm.housetype" placeholder="请输入户型信息,室厅厨卫阳数量,格式(1-1-1-1-1)" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="经度" prop="longitude">
        <el-input v-model="searchForm.longitude" placeholder="请输入经度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="纬度" prop="latitude">
        <el-input v-model="searchForm.latitude" placeholder="请输入纬度" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="授权状态 0未授权未绑定 1已授权未绑定 2已授权已绑定" prop="authStatus">
        <el-input v-model="searchForm.authStatus" placeholder="请输入授权状态 0未授权未绑定 1已授权未绑定 2已授权已绑定" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="最近授权绑定时间" prop="authDate">
        <el-date-picker v-model="searchForm.authDate" value-format="yyyy-MM-dd" placeholder="请输入最近授权绑定时间" @change="search"/>
      </el-form-item>
      <el-form-item label="最近授权绑定备注" prop="authInfo">
        <el-input v-model="searchForm.authInfo" placeholder="请输入最近授权绑定备注" @keypress.enter.native="search"></el-input>
      <el-form-item label="授权状态" prop="authStatus">
        <el-select v-model="searchForm.authStatus" clearable @change="search">
          <el-option value="0" label="未授权未绑定" ></el-option>
          <el-option value="1" label="已授权未绑定"></el-option>
          <el-option value="2" label="已授权已绑定"></el-option>
        </el-select>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
@@ -109,10 +32,10 @@
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
<!-- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
        <li><el-button type="primary" @click="$refs.operaMemberWindow.open('新建用户信息表')" icon="el-icon-plus" v-permissions="['business:member:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button></li>
      </ul>
      </ul>-->
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
@@ -120,39 +43,55 @@
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="imgurl" label="头像" min-width="100px"></el-table-column>
        <el-table-column prop="type" label="类型 0消费者" min-width="100px"></el-table-column>
        <el-table-column prop="nickname" label="昵称" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
        <el-table-column fixed label="头像" align="center" min-width="100px">
          <template slot-scope="{row}">
            <el-image
                v-if="row.imgurlFull"
                style="width: 60px; height: 60px"
                :src="row.imgurlFull"
                :preview-src-list="[row.imgurlFull]">
            </el-image>
          </template>
        </el-table-column>
        <el-table-column prop="nickname" align="center" fixed label="昵称/姓名" min-width="180px">
          <template slot-scope="{row}">
            {{row.nickname||'-'}} / {{row.name||'-'}}
          </template>
        </el-table-column>
        <el-table-column prop="phone" label="手机号" fixed min-width="100px"></el-table-column>
        <el-table-column prop="birthday" label="出生日期" min-width="100px"></el-table-column>
        <el-table-column prop="phone" label="手机号" min-width="100px"></el-table-column>
        <el-table-column prop="openid" label="微信openid" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态 0正常 1禁用" min-width="100px"></el-table-column>
        <el-table-column prop="tokenDate" label="中台临时票据过期时间" min-width="100px"></el-table-column>
        <el-table-column prop="token" label="中台临时票据" min-width="100px"></el-table-column>
        <el-table-column prop="sex" label="性别 1男 2女" min-width="100px"></el-table-column>
        <el-table-column prop="lastLoginDate" label="最近登录时间" min-width="100px"></el-table-column>
        <el-table-column prop="loginNum" label="登录次数" min-width="100px"></el-table-column>
        <el-table-column prop="provinceName" label="省份名称" min-width="100px"></el-table-column>
        <el-table-column prop="cityName" label="城市名称" min-width="100px"></el-table-column>
        <el-table-column prop="areaName" label="区域名称" min-width="100px"></el-table-column>
        <el-table-column prop="provicneCode" label="省份code" min-width="100px"></el-table-column>
        <el-table-column prop="cityCode" label="城市code" min-width="100px"></el-table-column>
        <el-table-column prop="areaCode" label="区域code" min-width="100px"></el-table-column>
        <el-table-column prop="sex" label="性别" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.sex ==1"  >男</span>
            <span v-if="row.sex ==0" >女</span>
          </template>
        </el-table-column>
        <el-table-column prop="provinceName" align="center" label="地址" min-width="200px">
          <template slot-scope="{row}">
            {{row.provinceName}}{{row.cityName}}{{row.areaName}}{{row.address}}
          </template>
        </el-table-column>
        <el-table-column prop="district" label="小区名称" min-width="100px"></el-table-column>
        <el-table-column prop="housetype" label="户型信息,室厅厨卫阳数量,格式(1-1-1-1-1)" min-width="100px"></el-table-column>
        <el-table-column prop="longitude" label="经度" min-width="100px"></el-table-column>
        <el-table-column prop="latitude" label="纬度" min-width="100px"></el-table-column>
        <el-table-column prop="authStatus" label="授权状态 0未授权未绑定 1已授权未绑定 2已授权已绑定" min-width="100px"></el-table-column>
        <el-table-column prop="authDate" label="最近授权绑定时间" min-width="100px"></el-table-column>
        <el-table-column prop="authInfo" label="最近授权绑定备注" min-width="100px"></el-table-column>
        <el-table-column prop="housetypeInfo" label="户型信息" min-width="100px"></el-table-column>
        <el-table-column prop="area" label="面积(㎡)" min-width="80px"></el-table-column>
        <el-table-column prop="longitude" label="经纬度" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.longitude && row.latitude" style="color:red;">[{{row.longitude}},{{row.latitude}}]</span>
          </template>
        </el-table-column>
        <el-table-column prop="authStatus" label="授权状态" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="(row.authStatus|| 0) ==0" style="color:red;">未授权未绑定</span>
            <span v-if="row.authStatus ==1" style="color:blue;">已授权未绑定</span>
            <span v-if="row.authStatus ==2" style="color:green;">已授权已绑定</span>
          </template>
        </el-table-column>
        <el-table-column prop="loginNum" label="登录次数" min-width="100px"></el-table-column>
        <el-table-column prop="lastLoginDate" label="最近登录时间" min-width="120px"></el-table-column>
        <el-table-column prop="authDate" label="授权绑定时间" min-width="120px"></el-table-column>
        <el-table-column prop="token" label="中台票据" min-width="100px"></el-table-column>
        <el-table-column prop="tokenDate" label="票据有效期" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:member:update', 'business:member:delete'])"
          label="操作"
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -1,8 +1,12 @@
package com.doumee.biz.zbom;
import com.doumee.biz.zbom.model.zhongtai.*;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.dao.business.MemberMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * å¿—邦中台对接业务接口
@@ -13,5 +17,20 @@
public interface ZbomZhongTaiService {
    ZTUserGetTokenResponse getUserToken(ZTUserGetTokenRequest param);
    ZTUserGetTokenResponse userUpdateInfo(ZTUserInfoUpdateRequest param);
    boolean userLogout(ZTBaseRequst param);
    List<ZTCatalogInfoResponse> getCatalogList(ZTCatalogListRequest param);
    ZTBasePageResponse<ZTContentListResponse> pageContentList(ZTContentListRequest param);
   ZTContentInfoResponse getContentInfo(ZTContentInfoRequest param);
   boolean collectDo(ZTActionDoRequest param);
   boolean likeDo(ZTActionBatchDoRequest param);
   boolean shareDo(ZTActionDoRequest param);
   boolean viewDo(ZTActionDoRequest param);
    ZTBasePageResponse<ZTContentListResponse> pageCollectList(ZTContentListRequest param);
    ZTBasePageResponse<ZTContentListResponse> pageLikeList(ZTContentListRequest param);
    List<ZTAreaInfoResponse> getAreaList(ZTAreaListRequest param);
}
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
@@ -15,7 +15,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.*;
@@ -51,16 +50,16 @@
        String type = "postCusData";
        String appid = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_KEY);
        String urlStr =  (String)redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_CRM_API_URL) ;
        long _t = System.currentTimeMillis();
        String crmInfo="提交失败";
        if (StringUtils.isNotBlank(appid)||StringUtils.isNotBlank(urlStr)) {
            String token = DigestUtils.md5Hex(type + _t + appid);
            String url = urlStr + "?type=" + type + "&_t=" + _t + "&token=" + token;// æäº¤CRM地址
            String param = JSONObject.toJSONString(entity);
            int success =1;
            String result = null;
            int success =1;
            String url = urlStr;
            try {
                String token = DigestUtils.md5Hex(type + _t + appid);
                  url = urlStr + "?type=" + type + "&_t=" + _t + "&token=" + token;// æäº¤CRM地址
                  result = HttpsUtil.postJson(url,param);
                if (StringUtils.isNotBlank(result)) {
                    JSONObject r = JSONObject.parseObject(result.replace("(", "").replace(")", ""));
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java
@@ -32,7 +32,7 @@
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
//@Service
public class ZbomSMSServiceImpl implements ZbomSMSService  {
    @Autowired
@@ -57,8 +57,10 @@
        if(StringUtils.isBlank(content)){
            return false;
        }
        String appkey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_KEY);
        String urlStr =  (String)redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_URL) ;
        String appkey ="581ba98d70ae2b85c4ecb9c785";
        String urlStr =  "http://wx.zhibang.com/api/QR/Face_UserSms?TenantId=2&smstype=6&" ;
//        String appkey = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_KEY);
//        String urlStr =  (String)redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_SMS_API_URL) ;
        try {
            StringBuffer sb = new StringBuffer(urlStr);
            Integer _t = (int) System.currentTimeMillis();
@@ -90,6 +92,7 @@
            saveInterfaceLog(urlStr,"志邦短信发送接口", sb.toString(), 0,inputline);
            return true;//
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -1,9 +1,30 @@
package com.doumee.biz.zbom.impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.doumee.biz.zbom.ZbomZhongTaiService;
import com.doumee.biz.zbom.model.zhongtai.*;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.VisitAppointmentCancelRequest;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.CrmInterfaceLogMapper;
import com.doumee.dao.business.InterfaceLogMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.CrmInterfaceLog;
import com.doumee.dao.business.model.InterfaceLog;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * äººå‘˜ä¿¡æ¯è¡¨Service实现
@@ -11,10 +32,301 @@
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class ZbomZhongTaiServiceImpl implements ZbomZhongTaiService {
    @Autowired
    private MemberMapper memberMapper;
    private InterfaceLogMapper interfaceLogMapper;
    /**
     * èŽ·å–ç”¨æˆ·ç™»é™†token
     * @param param
     * @return
     */
   @Override
   public ZTUserGetTokenResponse getUserToken(ZTUserGetTokenRequest param){
       ZTBaseResponse<ZTUserGetTokenResponse> result = sendHttpRequest(
               ZTConstants.IntegerUrl.USER_GET_TOKEN_URL,
               ZTConstants.IntegerName.USER_GET_TOKEN_NAME,
               param.getToken(),
               param.getUserType(),
               JSONObject.toJSONString(param ));
       if(result!=null){
           return result.getData();
       }
       return null;
   }
    /**
     * ç”¨æˆ·ä¿¡æ¯åŒæ­¥
     * @param param
     * @return
     */
    @Override
    public ZTUserGetTokenResponse userUpdateInfo(ZTUserInfoUpdateRequest param){
        ZTBaseResponse<ZTUserGetTokenResponse> result = sendHttpRequest(
                ZTConstants.IntegerUrl.USER_UPDATE_URL,
                ZTConstants.IntegerName.USER_UPDATE_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * æ³¨é”€ç”¨æˆ·
     * @param param
     * @return
     */
    @Override
    public boolean userLogout(ZTBaseRequst param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.USER_LOGOUT_URL,
                ZTConstants.IntegerName.USER_LOGOUT_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * èŽ·å–åˆ†ç±»å’Œåˆ†ç±»ä¸‹çš„æ ‡ç­¾
     * @param param
     * @return
     */
    @Override
    public  List<ZTCatalogInfoResponse> getCatalogList(ZTCatalogListRequest param){
        ZTBaseResponse<List<ZTCatalogInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CATALOG_LIST_URL,
                ZTConstants.IntegerName.CATALOG_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * èŽ·å–å†…å®¹åˆ—è¡¨åˆ†é¡µ
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTContentListResponse> pageContentList(ZTContentListRequest param){
        ZTBaseResponse<ZTBasePageResponse<ZTContentListResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CONTENT_LIST_URL,
                ZTConstants.IntegerName.CONTENT_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * èŽ·å–å†…å®¹è¯¦æƒ…
     * @param param
     * @return
     */
    @Override
    public ZTContentInfoResponse getContentInfo(ZTContentInfoRequest param){
        ZTBaseResponse<ZTContentInfoResponse> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CONTENT_INFO_URL+ param.getArticleId(),
                ZTConstants.IntegerName.CONTENT_INFO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * å†…容收藏
     * @param param
     * @return
     */
    @Override
    public boolean collectDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.COLLECT_DO_URL,
                ZTConstants.IntegerName.COLLECT_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * å†…容喜欢
     * @param param
     * @return
     */
    @Override
    public  boolean likeDo(ZTActionBatchDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.LIKE_DO_URL,
                ZTConstants.IntegerName.LIKE_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * å†…容分享
     * @param param
     * @return
     */
    @Override
    public boolean shareDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.SHARE_DO_URL,
                ZTConstants.IntegerName.SHARE_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * å†…容浏览
     * @param param
     * @return
     */
    @Override
    public boolean viewDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.VIEW_DO_URL,
                ZTConstants.IntegerName.VIEW_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * èŽ·å–æˆ‘çš„æ”¶è—åˆ—è¡¨åˆ†é¡µ
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTContentListResponse> pageCollectList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTContentListResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.COLLECT_LIST_URL,
                ZTConstants.IntegerName.COLLECT_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * èŽ·å–æˆ‘çš„å–œæ¬¢åˆ—è¡¨åˆ†é¡µ
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTContentListResponse> pageLikeList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTContentListResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.LIKE_LIST_URL,
                ZTConstants.IntegerName.LIKE_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * èŽ·å–èŽ·å–çœå¸‚åŒºé›†åˆ
     * @param param
     * @return
     */
    @Override
    public List<ZTAreaInfoResponse> getAreaList(ZTAreaListRequest param){
       if(StringUtils.isBlank(param.getPid())){
           param.setPid(ZTConstants.DEFAULT_PID);//默认取全部省份
       }
        ZTBaseResponse<List<ZTAreaInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.AREA_LIST_URL,
                ZTConstants.IntegerName.AREA_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ));
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    public   <T> ZTBaseResponse<T> sendHttpRequest(String url,String name,String token,String userType,String param){
        log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param));
        String res = null;
        int success = 0;
        try {
            Map<String,String> headers = new HashMap<>();
            headers.put(ZTConstants.HEADER_TOKEN,token);
            headers.put(ZTConstants.HEADER_USERTYPE,userType);
            res = HttpsUtil.postJsonWithHeaders(url,param,headers);
            TypeReference typeReference =
                    new TypeReference<ZTBaseResponse<T>>(){};
            ZTBaseResponse<T>  result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,name);
            if(StringUtils.equals(result.getCode(),ZTConstants.CODE_SUCCESS)){
                return  result;
            }else{
                success =1;
            }
        }catch (Exception e){
            success = 1;
            log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param));
        }finally {
            saveInterfaceLog(url,name,param,success,res);
        }
        return  null;
    }
    public  void  saveInterfaceLog(String url,String name,String  param,Integer success,String respone){
        if(interfaceLogMapper ==null){
            return;
        }
        InterfaceLog log = new InterfaceLog();
        log.setCreateDate(new Date());
        log.setUrl(url);
        log.setEditDate(log.getCreateDate());
        log.setPlat(Constants.ZERO);
        log.setName(name);
        log.setIsdeleted(Constants.ZERO);
        log.setRequest(param);
        log.setType(Constants.ONE);
        log.setSuccess(success);
        log.setRepose(respone);
        interfaceLogMapper.insert(log);
    }
    private static void logResult(ZTBaseResponse res,String name) {
        if(StringUtils.equals(res.getCode(), ZTConstants.CODE_SUCCESS)){
            log.info("【中台接口:"+name+"】================成功====\n"+res);
        }else{
            log.error("【中台接口:"+name+"】================失败====:\n"+ res);
        }
    }
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionBatchDoRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
import java.util.List;
/**
 * ç”¨æˆ·æ”¶è—ã€æµè§ˆã€ç‚¹èµžã€åˆ†äº«+1
 */
@Data
public class ZTActionBatchDoRequest extends  ZTBaseRequst {
    /**
     * æ–‡ç« ID
     */
    private List<ZTActionDoRequest> list;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionDoRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·æ”¶è—ã€æµè§ˆã€ç‚¹èµžã€åˆ†äº«+1
 */
@Data
public class ZTActionDoRequest  extends  ZTBaseRequst {
    /**
     * æ–‡ç« ID
     */
    private String articleId;
    /**
     * OpenID
     */
    private String openId;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTAreaListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·æ”¶è—ã€æµè§ˆã€ç‚¹èµžã€åˆ†äº«+1
 */
@Data
public class ZTAreaListRequest  extends  ZTBaseRequst{
    /**
     * çˆ¶çº§ç¼–码
     */
    private String pid;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBaseRequst.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·æ”¶è—ã€æµè§ˆã€ç‚¹èµžã€åˆ†äº«+1
 */
@Data
public class ZTBaseRequst {
    /**
     * çˆ¶çº§ç¼–码
     */
    private String userType;
    private String token;
    private String openid;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCatalogListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTCatalogListRequest  extends  ZTBaseRequst{
    /**
     * ç›®å½•唯一编码,编码为空,则返回全部一级目录
     */
    private String catalogCode;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCollectListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTCollectListRequest  extends  ZTBaseRequst{
    /**
     * æ”¶è—ç±»åž‹ï¼Œäº§å“ï¼Œæ¡ˆä¾‹ï¼Œå®žæ™¯ å¿…需
     */
    private String favoriteType;
    /**
     * OpenID å¿…需
     */
    private String openId;
    /**
     * æŽ’序方式 å¯é€‰
     */
    private String sort;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.doumee.biz.zbom.model.zhongtai;
public class ZTConstants {
    public static  String PLATFORM_MP_WX = "mp-weixin";//小程序平台
    public static  String PLATFORM_WEBPAD = "web-pad";//PAD端
    public static  String CODE_SUCCESS = "200";//接口成功返回码
    public static  String HEADER_USERTYPE = "userType";//userType在HEADER中的名字
    public static  String HEADER_TOKEN = "token";//token
    public static  String DEFAULT_PID = "1";//默认省市区pid=1表示取全中国
    public interface IntegerUrl{
        String USER_UPDATE_URL ="customer/api/sync";
        String USER_GET_TOKEN_URL ="http://api.dev.zbom.7zcloud.com/customer/api/login";
        String USER_LOGOUT_URL ="http://api.dev.zbom.7zcloud.com/customer/api/disable";
        String CATALOG_LIST_URL ="/content/api/catalog";
        String CONTENT_LIST_URL ="/content/api/page";
        String CONTENT_INFO_URL ="/content/api/detail/";
        String COLLECT_DO_URL ="/content/api/collect";
        String VIEW_DO_URL ="/content/api/view";
        String SHARE_DO_URL ="/content/api/share";
        String LIKE_DO_URL ="/content/api/like";
        String COLLECT_LIST_URL ="/behavior/getFavorite";
        String LIKE_LIST_URL ="/behavior/getLike";
        String AREA_LIST_URL ="/admin/bAreaRegion/getChildren";
    }
    public interface IntegerName{
        String USER_UPDATE_NAME ="用户信息同步";
        String USER_GET_TOKEN_NAME  ="用户登陆";
        String USER_LOGOUT_NAME  ="注销用户";
        String CATALOG_LIST_NAME  ="获取分类和分类下的标签";
        String CONTENT_LIST_NAME  ="获取内容列表分页";
        String CONTENT_INFO_NAME  ="获取内容详情";
        String COLLECT_DO_NAME  ="内容收藏";
        String VIEW_DO_NAME  ="内容浏览";
        String SHARE_DO_NAME  ="内容分享";
        String LIKE_DO_NAME  ="内容喜欢";
        String COLLECT_LIST_NAME  ="获取我的收藏列表分页";
        String LIKE_LIST_NAME  ="获取我的喜欢列表分页";
        String AREA_LIST_NAME  ="获取省市区集合";
    }
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentInfoRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTContentInfoRequest  extends  ZTBaseRequst{
    /**
     * ä¸´æ—¶ç¥¨æ®
     */
    private String articleId;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
import java.util.List;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTContentListRequest extends ZTBaseRequst {
    /**
     * ç›®å½•唯一编码,目录唯一编码
     */
    private String catalogCode;
    /**
     * æ˜¯å¦ç½®é¡¶ï¼Œé»˜è®¤false
     */
    private Boolean isTop;
    /**
     * å½“前页
     */
    private String pageNum;
    /**
     * æ¯é¡µæ¡æ•°
     */
    private String pageSize;
    /**
     * æœç´¢å…³é”®å­—,根据标题搜索关键字
     */
    private String search;
    /**
     * æŽ’序方式,NORMAL - é»˜è®¤
     * HOT - æœ€çƒ­
     * LATEST - æœ€æ–°
     */
    private String sortType;
    /**
     * å¤šä¸ªæ ‡ç­¾å”¯ä¸€ç¼–码的列表,多个标签唯一编码的列表
     */
    private List<String> tagCode;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserGetTokenRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·èŽ·å–ä¸´æ—¶ç¥¨æ®
 */
@Data
public class ZTUserGetTokenRequest extends  ZTBaseRequst {
    /**
     * åº”用码,应用码,暂时不做要求,用作登录行为日志记录
     */
    private String appCode;
    /**
     * åº”用ID,应用ID, ç”¨ä½œç™»å½•行为日志记录
     */
    private String appId;
    /**
     * OpenID,OpenID手机号
     */
    private String openId;
    /**
     * å­åº”用码,子应用码,暂时不做要求,用作登录行为日志记录
     */
    private String subAppCode;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserInfoUpdateRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * æ ¹æ®OpenID绑定中台的用户关系和用户信息,返回中台的用户令牌
 */
@Data
public class ZTUserInfoUpdateRequest  extends  ZTBaseRequst{
    /**
     * åœ°å€ï¼Œçœå¸‚区的完整字符串,比如"广东省广州市白云区"
     */
    private String address;
    /**
     * å¹´é¾„,填数字, "18"
     */
    private String age;
    /**
     * åº”用码,应用码,暂时不做要求,用作同步信息行为日志记录
     */
    private String appCode;
    /**
     * åº”用ID,小程序的AppID å¿…需
     */
    private String appId;
    /**
     * å¤´åƒï¼Œå¤´åƒåœ°å€,
     * æ¯”如"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=64&d=identicon"
     */
    private String avatarUrl;
    /**
     * ç”Ÿæ—¥ï¼ŒXXXXå¹´X月X日
     */
    private String birthday;
    /**
     * å®¢æˆ·æ¸ é“来源编码
     */
    private String channelSourceCode;
    /**
     * å®¢æˆ·å•位
     */
    private String customerCompany;
    /**
     * å®¢æˆ·çº§åˆ«
     */
    private String customerLevel;
    /**
     * å®¢æˆ·æ‰€å±žè¡Œä¸š
     */
    private String customerTrade;
    /**
     * ç”µå­é‚®ç®±
     */
    private String email;
    /**
     * è¯¦ç»†åœ°å€ï¼ŒåŒºä»¥ä¸‹çš„详细地址
     */
    private String fullAddress;
    /**
     * æ€§åˆ«ï¼Œæ€§åˆ«ï¼Œâ€œç”·","女"
     */
    private String gender;
    /**
     * æˆ¿å±‹é¢ç§¯ï¼Œâ€œ120”
     */
    private String houseArea;
    /**
     * æˆ¿å±‹æˆ·åž‹ï¼Œ"3室一厅一厨一卫"
     */
    private String houseLayout;
    /**
     * èº«ä»½è¯
     */
    private String idCard;
    /**
     * å§“名
     */
    private String name;
    /**
     * OpenID,微信用户的OpenID å¿…需
     */
    private String openId;
    /**
     * æ‰‹æœº
     */
    private String phone;
    /**
     * å¹³å°ç±»åž‹ï¼Œå°ç¨‹åºä¼ mp-weixin,pad端传web-pad  å¿…需
     */
    private String platform;
    /**
     * èŒä¸š
     */
    private String position;
    /**
     * æ„å‘产品编码,用逗号隔开
     */
    private String productCode;
    /**
     * æŽ¨èäºº
     */
    private String referee;
    /**
     * å¤‡æ³¨
     */
    private String remark;
    /**
     * æ¥æºç³»ç»Ÿå®¢æˆ·ID,对应的来源系统里的客户ID
     */
    private String sourceCustomerId;
    /**
     * å­åº”用码,子应用码,暂时不做要求,用作同步信息行为日志记录
     */
    private String subAppCode;
    /**
     * UnionId,微信用户的UnionID
     */
    private String unionId;
    /**
     * å°åŒºï¼Œâ€œXX小区”
     */
    private String uptown;
    /**
     * å¾®ä¿¡å·
     */
    private String weixin;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserLogoutRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.doumee.biz.zbom.model.zhongtai;
import lombok.Data;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTUserLogoutRequest  extends  ZTBaseRequst{
    /**
     * ä¸´æ—¶ç¥¨æ®
     */
    private String token;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTAreaInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
import java.util.Map;
/**
 * çœå¸‚区详情返回
 */
@Data
public class ZTAreaInfoResponse {
    /**
     * id":“11000000000日"
     * pid":"1"
     * "shortname":"北京’
     * "name":"北京市"
     * "mergename":"中国.北京市"
     * "level": 2
     */
    private String id;
    private String pid;
    private String code;
    private String shortname;
    private String mergename;
    private String name;
    //层级
    private String level;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBasePageResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
import java.util.List;
@Data
public class ZTBasePageResponse<T> {
    /**
     *  å½“前页
     */
    private double current;
    /**
     * è®°å½•列表
     */
    private List<T> records;
    /**
     * æ¯é¡µæ˜¾ç¤ºæ¡æ•°
     */
    private double size;
    /**
     * æ€»è®°å½•æ•°
     */
    private double total;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBaseResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
@Data
public class ZTBaseResponse<T> {
    /**
     *是否成功,true:成功;false:失败
     */
    private Boolean success;
    /**
     * æ¶ˆæ¯ç ,200:成功;其他code:失败
     */
    private String code;
    /**
     * æç¤ºæ¶ˆæ¯
     */
    private String msg;
    /**
     *  æ•°æ®
     */
    private T data;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
import java.util.List;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTCatalogInfoResponse {
    /**
     * ç›®å½•唯一编码
     */
    private String code;
    /**
     * ç›®å½•额外信息
     */
    private String expandInfo;
    /**
     * ç›®å½•ID
     */
    private String id;
    /**
     * ç›®å½•名称
     */
    private String name;
    /**
     * å°é¢å›¾URL
     */
    private String picture;
    /**
     * çˆ¶çº§ç›®å½•ID
     */
    private String pid;
    /**
     * å¤‡æ³¨
     */
    private String remark;
    /**
     * ç›®å½•排序
     */
    private String sort;
    /**
     * å­ç›®å½•
     */
    private List<ZTCatalogInfoResponse> childCatalog;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogTagTypeResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
import java.util.List;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTCatalogTagTypeResponse {
    /**
     * å­ç›®å½•
     */
    private List<ZTCatalogTagTypeResponse> tags;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCollectResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
/**
 * ç”¨æˆ·é€€å‡º
 */
@Data
public class ZTCollectResponse {
    /**
     * æ”¶è—ç±»åž‹ï¼Œäº§å“ï¼Œæ¡ˆä¾‹ï¼Œå®žæ™¯ å¿…需
     */
    private String favoriteType;
    /**
     * OpenID å¿…需
     */
    private String openId;
    /**
     * æŽ’序方式 å¯é€‰
     */
    private String sort;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
import java.util.Map;
/**
 * å†…容详情返回
 */
@Data
public class ZTContentInfoResponse {
    /**
     * ä½œè€…
     */
    private String author;
    /**
     * å†…容详情
     */
    private Map<String, Object> content;
    /**
     * æ–‡ç« ç±»åž‹
     */
    private String contentType;
    /**
     * æ–‡ç« ID
     */
    private String id;
    /**
     * è¯­è¨€ç¼–码
     */
    private String langCode;
    /**
     * å¤šå›¾ç‰‡åˆ—表
     */
    private String picUrls;
    /**
     * å‘布日期
     */
    private String publishDate;
    /**
     * å‘布组织
     */
    private String publishDepartment;
    /**
     * å­æ ‡é¢˜
     */
    private String subtitle;
    /**
     * æ–‡ç« æ ‡é¢˜
     */
    private String title;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentListResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
/**
 * å†…容分页列表返回内容
 */
@Data
public class ZTContentListResponse {
    /**
     * ä½œè€…
     */
    private String author;
    /**
     * å°é¢å›¾
     */
    private String coverImage;
    /**
     * æ”¶è—é‡
     */
    private double favoriteCount;
    /**
     * æ–‡ç« ID
     */
    private String id;
    /**
     * æ˜¯å¦ç½®é¡¶
     */
    private String isTop;
    /**
     * è¯­è¨€ç¼–码
     */
    private String langCode;
    /**
     * ç‚¹èµžé‡
     */
    private double likeCount;
    /**
     * å‘布日期
     */
    private String publishDate;
    /**
     * å‘布组织
     */
    private String publishDepartment;
    /**
     * é˜…读量
     */
    private double readCount;
    /**
     * æŽ’序
     */
    private String sort;
    /**
     * å­æ ‡é¢˜
     */
    private String subtitle;
    /**
     * æ ‡é¢˜
     */
    private String title;
    /**
     * æ–‡ç« ç±»åž‹
     */
    private String type;
    /**
     * æ–‡ç« å¤–链URL,视频和其他跳转链接类型
     */
    private String url;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTUserGetTokenResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.biz.zbom.model.zhongtai.response;
import lombok.Data;
@Data
public class ZTUserGetTokenResponse {
    /**
     *用户临时票据
     */
    private String token;
}
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -327,6 +327,7 @@
    public static final String ZBOM_CRM_API_URL = "ZBOM_CRM_API_URL";
    public static final String ZBOM_CRM_API_KEY = "ZBOM_CRM_API_KEY";
    public static final String ZBOM_SMS_API_KEY = "ZBOM_SMS_API_KEY";
    public static final String ZBOM_IAM_API_URL = "ZBOM_IAM_API_URL";
    public static final String ZBOM_SMS_API_URL = "ZBOM_SMS_API_URL";
    public static final String WX_PLATFORM_PREFIX = "WX_PLATFORM_PREFIX";
server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java
@@ -11,25 +11,33 @@
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map;
public class HttpsUtil {
    public static String get(String url,boolean ignoreSSL) {
        return connection(url, "GET", null, null,ignoreSSL);
        return connection(url, "GET", null, null,ignoreSSL,null);
    }
    public static String post(String url, String data, String contentType, boolean ignoreSSL) {
        return connection(url, "POST", data, contentType, ignoreSSL);
        return connection(url, "POST", data, contentType, ignoreSSL,null);
    }
    public static String postJson(String url, String data) {
        if(url.startsWith("https://")){
            return connection(url, "POST", data, "application/json", true);
            return connection(url, "POST", data, "application/json", true,null);
        }else{
            return connectionHttp(url, "POST", data, "application/json");
            return connectionHttp(url, "POST", data, "application/json",null);
        }
    }
    public static String postJsonWithHeaders(String url, String data, Map<String,String> headers) {
        if(url.startsWith("https://")){
            return connection(url, "POST", data, "application/json", true,headers);
        }else{
            return connectionHttp(url, "POST",  data, "application/json",headers);
        }
    }
    public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){
    public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL, Map<String,String> headers){
        HttpsURLConnection connection = null;
        try {
            URL _url = new URL(url);
@@ -41,7 +49,11 @@
            if(contentType != null){
                connection.setRequestProperty("Content-Type", contentType);
            }
            if (headers!=null && headers.size()>0) {
                for (String s : headers.keySet()) {
                    connection.setRequestProperty(s, headers.get(s));
                }
            }
            if(ignoreSSL){
                //信任所有ssl证书和主机
                TrustManager[] trustManagers = {new HttpsTrustManager()};
@@ -56,7 +68,6 @@
                });
            }
            connection.connect();
            if(data != null){
@@ -64,7 +75,6 @@
                outputStream.write(data.getBytes("utf-8"));
                outputStream.close();
            }
            int responseCode = connection.getResponseCode();
            if (responseCode == HttpsURLConnection.HTTP_OK) {
                InputStream is = connection.getInputStream();
@@ -87,7 +97,7 @@
        }
        return null;
    }
    public static String connectionHttp(String url,String method,String data,String contentType ){
    public static String connectionHttp(String url,String method,String data,String contentType, Map<String,String> headers){
        HttpURLConnection connection = null;
        try {
            URL _url = new URL(url);
@@ -99,7 +109,11 @@
            if(contentType != null){
                connection.setRequestProperty("Content-Type", contentType);
            }
            if (headers!=null && headers.size()>0) {
                for (String s : headers.keySet()) {
                    connection.setRequestProperty(s, headers.get(s));
                }
            }
            connection.connect();
            if(data != null){
server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java
@@ -82,4 +82,11 @@
    @ApiModelProperty(value = "下级部门集合", example = "1")
    @TableField(exist = false)
    private List<ShopTreeVo> childList;
    @ApiModelProperty(value = "部门编码级别路径", example = "1")
    private String idPath;
    @ApiModelProperty(value = "部门级别路径", example = "1")
    private String namePath;
    @ApiModelProperty(value = "部门级别路径", example = "1")
    private Long parentId;
}
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -841,10 +841,16 @@
                    s.setIdPath(s.getId()+"/");
                    shopMapper.updateById(s);
                }else{
                    String idPath = StringUtils.defaultString(parent.getIdPath(),"")+ shop.getId()+"/";
                    String namePath =StringUtils.defaultString(parent.getNamePath(),"")+"/"+shop.getName();
                    s.setParentId(parent.getId());
                    s.setNamePath(parent.getNamePath()+"/"+s.getName());
                    s.setIdPath(parent.getIdPath()+s.getId()+"/");
                    shopMapper.updateById(s);
                    s.setNamePath(namePath);
                    s.setIdPath(idPath);
                    if(!(Constants.equalsLong(parent.getId(),shop.getParentId())
                            && StringUtils.equals(idPath,shop.getIdPath())
                            &&StringUtils.equals(namePath,shop.getNamePath())) ){
                        shopMapper.updateById(s);
                    }
                }
                if(shop.getChildList()!=null && shop.getChildList().size()>0){
                    updateNamePath(s,shop.getChildList());