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

---
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCollectResponse.java        |   25 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionBatchDoRequest.java            |   18 
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java                     |  316 ++++++++++++++
 admin/src/components/system/dict/OperaDictDataWindow.vue                                               |    2 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserInfoUpdateRequest.java           |  127 +++++
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTUserGetTokenResponse.java   |   13 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentInfoResponse.java    |   54 ++
 server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java                              |   19 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                                      |    1 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBasePageResponse.java       |   25 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserGetTokenRequest.java             |   27 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCollectListRequest.java              |   25 +
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java                          |    9 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTAreaListRequest.java                 |   16 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentListResponse.java    |   72 +++
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBaseResponse.java           |   24 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogTagTypeResponse.java |   19 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java              |   45 ++
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBaseRequst.java                      |   18 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionDoRequest.java                 |   21 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCatalogListRequest.java              |   16 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java                       |   41 +
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTAreaInfoResponse.java       |   30 +
 admin/src/views/business/member.vue                                                                    |  169 ++-----
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserLogoutRequest.java               |   16 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogInfoResponse.java    |   51 ++
 server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java                                |    7 
 server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java                          |    9 
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentInfoRequest.java              |   16 
 server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java                                      |   34 +
 server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java                     |   12 
 31 files changed, 1,138 insertions(+), 139 deletions(-)

diff --git a/admin/src/components/system/dict/OperaDictDataWindow.vue b/admin/src/components/system/dict/OperaDictDataWindow.vue
index 65caa88..bc24149 100644
--- a/admin/src/components/system/dict/OperaDictDataWindow.vue
+++ b/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">
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index 14e0a33..613c5f5 100644
--- a/admin/src/views/business/member.vue
+++ b/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="璇疯緭鍏ュ井淇penid" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鐘舵�� 0姝e父 1绂佺敤" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0姝e父 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="璇疯緭鍏ョ渷浠絚ode" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍩庡競code" prop="cityCode">
-        <el-input v-model="searchForm.cityCode" placeholder="璇疯緭鍏ュ煄甯俢ode" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍖哄煙code" prop="areaCode">
-        <el-input v-model="searchForm.areaCode" placeholder="璇疯緭鍏ュ尯鍩焎ode" @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姝e父 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="鎿嶄綔"
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java b/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
index 49eabf5..f3ac168 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -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);
+
+
 
 }
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
index 917c171..9a3d67c 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
+++ b/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(")", ""));
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java
index dc37011..8820113 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomSMSServiceImpl.java
+++ b/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;
         }
 
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
index 0ea7258..224e993 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -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;
 
 /**
  * 浜哄憳淇℃伅琛⊿ervice瀹炵幇
@@ -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("銆愪腑鍙版帴鍙o細"+name+"銆�================鎴愬姛====\n"+res);
+        }else{
+            log.error("銆愪腑鍙版帴鍙o細"+name+"銆�================澶辫触====锛歕n"+ res);
+        }
+    }
 }
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionBatchDoRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionBatchDoRequest.java
new file mode 100644
index 0000000..98a180c
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionDoRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTActionDoRequest.java
new file mode 100644
index 0000000..3f5cf00
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTAreaListRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTAreaListRequest.java
new file mode 100644
index 0000000..ccc0eb5
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBaseRequst.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBaseRequst.java
new file mode 100644
index 0000000..18a7efb
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCatalogListRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCatalogListRequest.java
new file mode 100644
index 0000000..37e7fcb
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCollectListRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTCollectListRequest.java
new file mode 100644
index 0000000..8970d96
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
new file mode 100644
index 0000000..3eb505c
--- /dev/null
+++ b/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鍦℉EADER涓殑鍚嶅瓧
+    public static  String HEADER_TOKEN = "token";//token
+    public static  String DEFAULT_PID = "1";//榛樿鐪佸競鍖簆id=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  ="鑾峰彇鐪佸競鍖洪泦鍚�";
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentInfoRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentInfoRequest.java
new file mode 100644
index 0000000..85a8669
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java
new file mode 100644
index 0000000..c362b62
--- /dev/null
+++ b/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;
+    /**
+     * 鏄惁缃《锛岄粯璁alse
+     */
+    private Boolean isTop;
+    /**
+     * 褰撳墠椤�
+     */
+    private String pageNum;
+    /**
+     * 姣忛〉鏉℃暟
+     */
+    private String pageSize;
+    /**
+     * 鎼滅储鍏抽敭瀛楋紝鏍规嵁鏍囬鎼滅储鍏抽敭瀛�
+     */
+    private String search;
+    /**
+     * 鎺掑簭鏂瑰紡锛孨ORMAL - 榛樿
+     * HOT - 鏈�鐑�
+     * LATEST - 鏈�鏂�
+     */
+    private String sortType;
+    /**
+     * 澶氫釜鏍囩鍞竴缂栫爜鐨勫垪琛紝澶氫釜鏍囩鍞竴缂栫爜鐨勫垪琛�
+     */
+    private List<String> tagCode;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserGetTokenRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserGetTokenRequest.java
new file mode 100644
index 0000000..b637773
--- /dev/null
+++ b/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锛屽簲鐢↖D, 鐢ㄤ綔鐧诲綍琛屼负鏃ュ織璁板綍
+     */
+    private String appId;
+    /**
+     * OpenID锛孫penID鎵嬫満鍙�
+     */
+    private String openId;
+    /**
+     * 瀛愬簲鐢ㄧ爜锛屽瓙搴旂敤鐮侊紝鏆傛椂涓嶅仛瑕佹眰锛岀敤浣滅櫥褰曡涓烘棩蹇楄褰�
+     */
+    private String subAppCode;
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserInfoUpdateRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserInfoUpdateRequest.java
new file mode 100644
index 0000000..0f195e7
--- /dev/null
+++ b/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锛屽皬绋嬪簭鐨凙ppID 蹇呴渶
+     */
+    private String appId;
+    /**
+     * 澶村儚锛屽ご鍍忓湴鍧�,
+     * 姣斿"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=64&d=identicon"
+     */
+    private String avatarUrl;
+    /**
+     * 鐢熸棩锛孹XXX骞碭鏈圶鏃�
+     */
+    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;
+    /**
+     * 骞冲彴绫诲瀷锛屽皬绋嬪簭浼爉p-weixin锛宲ad绔紶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;
+    /**
+     * 灏忓尯锛屸�淴X灏忓尯鈥�
+     */
+    private String uptown;
+    /**
+     * 寰俊鍙�
+     */
+    private String weixin;
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserLogoutRequest.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTUserLogoutRequest.java
new file mode 100644
index 0000000..652d4ea
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTAreaInfoResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTAreaInfoResponse.java
new file mode 100644
index 0000000..52c1541
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBasePageResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBasePageResponse.java
new file mode 100644
index 0000000..441512c
--- /dev/null
+++ b/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;
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBaseResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTBaseResponse.java
new file mode 100644
index 0000000..10a6620
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogInfoResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogInfoResponse.java
new file mode 100644
index 0000000..0755f2d
--- /dev/null
+++ b/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;
+    /**
+     * 灏侀潰鍥綰RL
+     */
+    private String picture;
+    /**
+     * 鐖剁骇鐩綍ID
+     */
+    private String pid;
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+    /**
+     * 鐩綍鎺掑簭
+     */
+    private String sort;
+
+    /**
+     * 瀛愮洰褰�
+     */
+    private List<ZTCatalogInfoResponse> childCatalog;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogTagTypeResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCatalogTagTypeResponse.java
new file mode 100644
index 0000000..03c8568
--- /dev/null
+++ b/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;
+
+}
+
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCollectResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTCollectResponse.java
new file mode 100644
index 0000000..f15c7ec
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentInfoResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentInfoResponse.java
new file mode 100644
index 0000000..504177b
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentListResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTContentListResponse.java
new file mode 100644
index 0000000..e783704
--- /dev/null
+++ b/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;
+
+}
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTUserGetTokenResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTUserGetTokenResponse.java
new file mode 100644
index 0000000..4eae486
--- /dev/null
+++ b/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;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index 5525149..ef67a07 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/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";
 
diff --git a/server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java b/server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java
index c74af73..46015fb 100644
--- a/server/service/src/main/java/com/doumee/core/utils/HttpsUtil.java
+++ b/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){
                 //淇′换鎵�鏈塻sl璇佷功鍜屼富鏈�
                 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){
diff --git a/server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java b/server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java
index 4750289..bf7daa2 100644
--- a/server/service/src/main/java/com/doumee/dao/business/vo/ShopTreeVo.java
+++ b/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;
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index 6223904..2a03951 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/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());

--
Gitblit v1.9.3