jiangping
2024-07-18 a5845873604f6d038c1cf2441b20173c3a4dfcb5
提交
已添加2个文件
已修改7个文件
574 ■■■■ 文件已修改
admin/public/index.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/shop.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShopWindow.vue 334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/departments.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/PushController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/ZhongTaiController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTZbDecoInfoResponse.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CategorySegServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/index.html
@@ -5,7 +5,11 @@
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>faviconzb.ico">
    <title>志邦优家信息管理系统</title>
      <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script>
<!--      <script type="text/javascript" src="https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js"></script>
      <script type="text/javascript" src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script>
      <script type="text/javascript" src="https://map.qq.com/api/gljs?v=1.exp&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script>-->
      <title>志邦优家信息管理系统</title>
  </head>
  <body>
    <noscript>
admin/src/api/business/shop.js
@@ -12,6 +12,11 @@
    trim: true
  })
}
export function areaList (data) {
  return request.post('/business/zhongtai/areaList',data, {
    trim: true
  })
}
// æŸ¥è¯¢
export function fetchList3 (data) {
  return request.get(`/business/shop/tree`, {
admin/src/components/business/OperaShopWindow.vue
@@ -1,114 +1,65 @@
<template>
  <GlobalWindow
    :title="title"
    width="70%"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      <div>
        <el-form-item label="所属区域" prop="provinceCode" label-width="100px">
          <div class="address-plus">
            <el-select v-model="form.provinceCode" placeholder="请选择省份"  @change="selectProvince" style="width:150px; margin-right: 25px" >
              <el-option
                  v-for="item in provinces"
                  :key="item.id"
                  :value="item.id"
                  :label="item.name"
              ></el-option>
            </el-select>
            <el-select v-model="form.cityCode" placeholder="请选择城市" @change="selectCity"  style="width:150px; margin-right: 25px">
              <el-option
                  v-for="item in cities"
                  :key="item.id"
                  :value="item.id"
                  :label="item.name"
              ></el-option>
            </el-select>
            <el-select v-model="form.areaCode" placeholder="请选择县区" @change="selectArea" style="width:150px; margin-right: 22px">
              <el-option
                  v-for="item in areas"
                  :key="item.id"
                  :value="item.id"
                  :label="item.name"
              ></el-option>
            </el-select>
          </div>
        </el-form-item>
      </div>
      <el-form-item label="联系人" prop="linkerName" label-width="100px">
        <el-input v-model="form.linkerName" placeholder="请输入联系人" v-trim style="width:500px; "/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      <el-form-item label="联系电话" prop="linkPhone"  label-width="100px">
        <el-input v-model="form.linkPhone" placeholder="请输入联系电话" v-trim style="width:500px; "/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      <el-form-item label="详细地址" prop="address"  label-width="100px">
        <el-input v-model="form.address" placeholder="请输入详细地址" v-trim style="width:500px; " @blur="changeMapCenter"/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="部门id" prop="orgId">
        <el-input v-model="form.orgId" placeholder="请输入部门id" v-trim/>
      </el-form-item>
      <el-form-item label="部门名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入部门名称" v-trim/>
      </el-form-item>
      <el-form-item label="部门U客组织id" prop="orgOldId">
        <el-input v-model="form.orgOldId" placeholder="请输入部门U客组织id" v-trim/>
      </el-form-item>
      <el-form-item label="上级组织Id" prop="parentId">
        <el-input v-model="form.parentId" placeholder="请输入上级组织Id" v-trim/>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-input v-model="form.status" placeholder="请输入状态" v-trim/>
      </el-form-item>
      <el-form-item label="排序码" prop="orderNum">
        <el-input v-model="form.orderNum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
      <el-form-item label="组织SF存放码" prop="sourceCode">
        <el-input v-model="form.sourceCode" placeholder="请输入组织SF存放码" v-trim/>
      </el-form-item>
      <el-form-item label="组织编码" prop="code">
        <el-input v-model="form.code" placeholder="请输入组织编码" v-trim/>
      </el-form-item>
      <el-form-item label="组织类型1:一体商 ,2:加盟商,3:店面,4:部门(HR/加),5:虚拟店面(加/虚)" prop="type">
        <el-input v-model="form.type" placeholder="请输入组织类型1:一体商 ,2:加盟商,3:店面,4:部门(HR/加),5:虚拟店面(加/虚)" v-trim/>
      </el-form-item>
      <el-form-item label="部门属性(1:实体店面、2:虚拟店面、3:电商部、4:渠道部、5:财务部)" prop="attribute">
        <el-input v-model="form.attribute" placeholder="请输入部门属性(1:实体店面、2:虚拟店面、3:电商部、4:渠道部、5:财务部)" v-trim/>
      </el-form-item>
      <el-form-item label="企业微信组织ID" prop="weixinId">
        <el-input v-model="form.weixinId" placeholder="请输入企业微信组织ID" v-trim/>
      </el-form-item>
      <el-form-item label="钉钉部门ID" prop="dingdingId">
        <el-input v-model="form.dingdingId" placeholder="请输入钉钉部门ID" v-trim/>
      </el-form-item>
      <el-form-item label="最近同步时间" prop="syncDate">
        <el-date-picker v-model="form.syncDate" value-format="yyyy-MM-dd" placeholder="请输入最近同步时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="最近同步备注" prop="syncInfo">
        <el-input v-model="form.syncInfo" placeholder="请输入最近同步备注" v-trim/>
      </el-form-item>
      <el-form-item label="所属关联F码" prop="fcode">
        <el-input v-model="form.fcode" placeholder="请输入所属关联F码" v-trim/>
      </el-form-item>
      <el-form-item label="所属关联S码" prop="scode">
        <el-input v-model="form.scode" placeholder="请输入所属关联S码" v-trim/>
      </el-form-item>
      <el-form-item label="ZCODE" prop="zcode">
        <el-input v-model="form.zcode" placeholder="请输入ZCODE" v-trim/>
      </el-form-item>
      <el-form-item label="关联S码" prop="glCode">
        <el-input v-model="form.glCode" placeholder="请输入关联S码" v-trim/>
      </el-form-item>
      <el-form-item label="关联S码名称" prop="glName">
        <el-input v-model="form.glName" placeholder="请输入关联S码名称" v-trim/>
      </el-form-item>
      <el-form-item label="国家" prop="country">
        <el-input v-model="form.country" placeholder="请输入国家" v-trim/>
      </el-form-item>
      <el-form-item label="省份编码" prop="provinceCode">
        <el-input v-model="form.provinceCode" placeholder="请输入省份编码" v-trim/>
      </el-form-item>
      <el-form-item label="省份名称" prop="provinceName">
        <el-input v-model="form.provinceName" placeholder="请输入省份名称" v-trim/>
      </el-form-item>
      <el-form-item label="城市码" prop="cityCode">
        <el-input v-model="form.cityCode" placeholder="请输入城市码" v-trim/>
      </el-form-item>
      <el-form-item label="城市名称" prop="cityName">
        <el-input v-model="form.cityName" placeholder="请输入城市名称" v-trim/>
      </el-form-item>
      <el-form-item label="区县编码" prop="areaCode">
        <el-input v-model="form.areaCode" placeholder="请输入区县编码" v-trim/>
      </el-form-item>
      <el-form-item label="区县名称" prop="areaName">
        <el-input v-model="form.areaName" placeholder="请输入区县名称" v-trim/>
      </el-form-item>
      <el-form-item label="品类编码" prop="unitCode">
        <el-input v-model="form.unitCode" placeholder="请输入品类编码" v-trim/>
      <el-form-item label="经纬度" prop="posInfo"  label-width="100px">
        <el-input v-model="form.longitude"  clearable  placeholder="点击地图获取经度" v-trim style="width:245px; "/>-
        <el-input v-model="form.latitude"  clearable  placeholder="点击地图获取维度" v-trim style="width:245px; "/>
      </el-form-item>
    </el-form>
    <div class="map-box">
      <div id="mapContainer" ref="mapContainer" style="width:80%;margin-left:10%;height:400px;overflow: hidden;" ></div>
      <div class="map-search">
        <el-input v-model="searchValue" placeholder="请输入要检索的位置信息" />
        <el-button @click="searchAddress(searchValue)" type="primary">搜索</el-button>
      </div>
    </div>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
@@ -118,43 +69,33 @@
  components: { GlobalWindow },
  data () {
    return {
      geocoder: null,
      map: [],
      searchValue:'',
      marker:null,
      // è¡¨å•数据
      provinces: [],
      cities: [],
      areas: [],
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        remark: '',
        orgId: '',
        name: '',
        orgOldId: '',
        parentId: '',
        status: '',
        orderNum: '',
        sourceCode: '',
        code: '',
        type: '',
        attribute: '',
        weixinId: '',
        dingdingId: '',
        syncDate: '',
        syncInfo: '',
        fcode: '',
        scode: '',
        zcode: '',
        glCode: '',
        glName: '',
        country: '',
        provinceId: '',
        provinceCode: '',
        provinceName: '',
        cityCode: '',
        cityId: '',
        cityName: '',
        areaId: '',
        areaCode: '',
        areaName: '',
        unitCode: ''
        longitude: '',
        latitude: '',
        address: '',
        linkPhone: '',
        posInfo: '',
        linkerName: ''
      },
      geolocation: null,
      // éªŒè¯è§„则
      rules: {
      }
@@ -165,6 +106,153 @@
      api: '/business/shop',
      'field.id': 'id'
    })
  },
  methods: {
    searchAddress( ){
      if(this.geocoder && this.searchValue){
        this.geocoder.getLocation(this.searchValue)
      }
    },
    initMap (lat, long) {
      const that = this
      var center = new qq.maps.LatLng(lat || 39.916527, long || 116.397128)// é»˜è®¤åŒ—京天安门
      this.map = new qq.maps.Map(document.getElementById('mapContainer'), {
        center: center,
        zoom: 17
      })
      this.changePostion(long,lat)
      qq.maps.event.addListener(this.map, 'click',
        function (event) {
          that.changePostion(event.latLng.lng, event.latLng.lat)
        }
      )
      this.geocoder = new qq.maps.Geocoder()
      this.geocoder.setComplete(function (result) {
        that.changePostion(result.detail.location.lng,result.detail.location.lat)
      })
      // è‹¥æœåŠ¡è¯·æ±‚å¤±è´¥ï¼Œåˆ™è¿è¡Œä»¥ä¸‹å‡½æ•°
      this.geocoder.setError(function () {
        console.log('逆解析失败')
      })
    },
    open (title, target) {
      this.title = title
      this.visible = true
      this.form.provinceId = ''
      this.form.cityId = ''
      this.searchValue = ''
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.loadProvince(this.form.provinceId, true)
        })
        return
      }
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.loadProvince(this.form.provinceId, true)
        const mapContainer = this.$refs.mapContainer // èŽ·å–åœ°å›¾å®¹å™¨
        if (mapContainer) {
          // åˆå§‹åŒ–地图之前检查容器是否存在
          this.initMap(this.form.latitude,this.form.longitude)
          // åˆå§‹åŒ–腾讯地图
        }
      })
    },
    loadProvince () {
      this.api.areaList({ pid: '1' })
        .then(res => {
          this.provinces = res
        })
    },
    // é€‰æ‹©çœä»½
    selectProvince (val) {
      this.provinces.forEach(item => {
        if (item.id == val) {
          this.form.provinceName = item.name
        }
      })
      this.cities = []
      this.areas = []
      this.form.cityName = ''
      this.form.areaCode = ''
      this.form.cityCode = ''
      this.form.areaName = ''
      if(!val || val ==''){
        return
      }
      this.api.areaList({ pid: val })
        .then(res => {
          this.cities = res
          this.selectCity(this.form.cityId)
        })
    },
    // é€‰æ‹©åŸŽå¸‚
    selectCity (val) {
      this.cities.forEach(item => {
        if (item.id == val) {
          this.form.cityName = item.name
        }
      })
      this.areas = []
      this.form.areaCode = ''
      this.form.areaName = ''
      if(!val || val ==''){
        return
      }
      this.api.areaList({ pid: val })
        .then(res => {
          this.areas = res
        })
    },
    selectArea (val) {
      this.areas.forEach(item => {
        if (item.id == val) {
          this.form.areaName = item.name
        }
      })
    },
    changeMapCenter(){
       this.searchValue = (this.form.provinceName||'')+(this.form.cityName||'')+(this.form.areaName||'')+(this.form.address||'')
      this.searchAddress()
    },
    changePostion (lng, lat) {
      if (lng || lat) {
        this.form.longitude = lng
        this.form.latitude = lat
        if(this.map){
          if(this.marker){
            this.marker.setMap(null)
          }
          var pos =new qq.maps.LatLng(lat,lng);
          this.map.setCenter(pos)
          this.marker= new qq.maps.Marker({
            position: pos,
            animation:qq.maps.MarkerAnimation.DROP,
            map:this.map
          })
        }
      }
    }
  }
}
</script>
<style scoped>
.map-box {
  position: relative;
}
.map-search {
  z-index: 1000;
  display: flex;
  position: absolute;
  top: 20px;
  left: 120px;
  width: 350px;
}
button {
  border-radius: 0;
}
</style>
admin/src/views/business/departments.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
<template>
  <TableLayout :permissions="['business:shop:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <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="parentId">
        <el-input v-model="searchForm.parentName" placeholder="请输入上级组织名称/编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="" prop="code">
        <el-input v-model="searchForm.code" 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>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:shop:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
<!--      <ul class="toolbar" v-permissions="['business:shop:create', 'business:shop:delete']">
        <li><el-button type="primary" @click="$refs.operaShopWindow.open('新建志邦组织信息表')" icon="el-icon-plus" v-permissions="['business:shop:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:shop:delete']">删除</el-button></li>
      </ul>-->
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column prop="序号"  width="55"><template slot-scope="scope">{{scope.$index+1}}</template></el-table-column>
        <el-table-column prop="name" label="门店名称" min-width="150px" align="center"></el-table-column>
        <el-table-column prop="code" label="编码" min-width="120px" align="center"></el-table-column>
        <el-table-column prop="status" label="状态" min-width="80px">
          <template scope="{row}">
            <span v-if="row.status == 0" style="color: red">停用</span>
            <span v-if="row.status == 1" style="color: green">正常</span>
            <span v-if="row.status == -1" style="color: grey">已删除</span>
          </template>
        </el-table-column>
         <el-table-column prop="namePath" label="组织路径" min-width="200px" align="center"></el-table-column>
         <el-table-column prop="provinceName" label="省市区" min-width="200px" align="center">
           <template slot-scope="{row}">
             {{row.country}}
             {{row.provinceName}}
             {{row.cityName}}
             {{row.areaName}}
             {{row.town}}
           </template>
         </el-table-column>
        <el-table-column prop="linkerName" label="联系人" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="linkPhone" label="联系电话" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="address" label="详细地址" min-width="200px" align="center"></el-table-column>
        <el-table-column prop="longitude" label="经纬度" min-width="150px"   align="center">
          <template slot-scope="{row}">
            [{{row.longitude}},{{row.latitude}}]
          </template>
        </el-table-column>
        <!--
                <el-table-column prop="syncDate" label="最后同步时间" min-width="120px"></el-table-column>
        -->
        <el-table-column prop="editDate" label="最后更新时间" min-width="130px"
                         align="center"></el-table-column>
        <el-table-column
            v-if="containPermissions(['business:member:update', 'business:member:delete'])"
            label="操作"
            min-width="100"
            align="center"
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaShopWindow.open('编辑门店信息表', row)" icon="el-icon-edit" v-permissions="['business:shop:update']">编辑</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaShopWindow ref="operaShopWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaShopWindow from '@/components/business/OperaShopWindow'
export default {
  name: 'Shop',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaShopWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        name: '',
        parentName: '',
        status: '',
        code: '',
        secondType: 3,
        type: 2,
        provinceName: '',
        cityName: '',
        areaName: ''
      }
    }
  },
  created () {
    this.config({
      module: '志邦门店信息表',
      api: '/business/shop',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
server/admin/src/main/java/com/doumee/api/business/PushController.java
@@ -38,7 +38,7 @@
        ApiResponse<String> r = null;
        try {
            zbomIAMService.updateShopInfo(token,uuid,timestamp,shopList);
            r  = ApiResponse.success("操作成功");
            r  = ApiResponse.successIam("操作成功");
        }catch (BusinessException e){
            success = Constants.ONE;
            r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败"));
@@ -47,7 +47,7 @@
            success = Constants.ONE;
            r = ApiResponse.failed("操作失败");
        }finally {
            zbomIAMService.saveInterfaceLog("/push/iam/updateUserInfo",Constants.ONE,"IAM推送人员账号信息", token, uuid, timestamp, shopList,success, JSONObject.toJSONString(r));
            zbomIAMService.saveInterfaceLog("/push/iam/updateUserInfo",Constants.ONE,"IAM推送组织信息", token, uuid, timestamp, shopList,success, JSONObject.toJSONString(r));
        }
        return r;
    }
server/admin/src/main/java/com/doumee/api/business/ZhongTaiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.biz.zbom.ZbomZhongTaiService;
import com.doumee.biz.zbom.model.zhongtai.ZTAreaListRequest;
import com.doumee.biz.zbom.model.zhongtai.response.ZTAreaInfoResponse;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.request.UpdateShopSortDTO;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.business.vo.ShopTreeVo;
import com.doumee.service.business.ShopService;
import io.swagger.annotations.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/07/04 14:40
 */
@Api(tags = "中台对接接口")
@RestController
@RequestMapping("/business/zhongtai")
public class ZhongTaiController extends BaseController {
    @Autowired
    private ZbomZhongTaiService zhongTaiService;
    @ApiOperation("根据父级编码获取省区数据")
    @PostMapping("/areaList")
    public ApiResponse<List<ZTAreaInfoResponse>> areaList (@RequestBody ZTAreaListRequest param){
        return ApiResponse.success(zhongTaiService.getAreaList(param));
    }
}
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomIAMServiceImpl.java
@@ -87,7 +87,7 @@
                shop.setCreateDate(date);
                addShops.add(initShopInfo(shop,model,date));
            }else {
                segDelOrgIds.add(shop.getOrgId());
                segDelOrgIds.add(shop.getCode());
                updateShops.add(initShopInfo(shop,model,date));
            }
            //处理品类数据逻辑
@@ -194,7 +194,7 @@
        data.setCreateDate(date);
        data.setEditDate(date);
        data.setIsdeleted(Constants.ZERO);
        data.setOrgId(shop.getOrgId());
        data.setOrgId(shop.getCode());
        data.setSegId(model.getSegment1());
        data.setSegId2(model.getSegment2());
        data.setSegId3(model.getSegment3());
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTZbDecoInfoResponse.java
@@ -11,24 +11,30 @@
@Data
public class ZTZbDecoInfoResponse implements Serializable {
    private String author;
    /**
     * æ”¶è—é‡
     */
    private long collectCount;
    private String id;
    /**
     * æ˜¯å¦æ”¶è— true:收藏  false:未收藏
     * å†…容
     */
    private String content;
    /**
     * å†…容类型(文本text、链接link、视频video、产品product)
     */
    private String contentType;
    /**
     * å°é¢å›¾
     */
    private String coverImage;
    /**
     * id
     */
    private String id;
    private String intro;
    /**
     * æ˜¯å¦æ”¶è—
     */
    private boolean isCollection;
    private String langCode;
    /**
     * å–œæ¬¢æ•°
     */
    private long likeCount;
    /**
     * æ–‡ç« åœ°å€
     */
    private String linkUrl;
    private String publishDepartment;
    /**
     * å‘布日期
@@ -40,9 +46,5 @@
     * æ ‡é¢˜
     */
    private String title;
    /**
     * æŸ¥çœ‹é‡
     */
    private long viewCount;
    private String viewCount;
}
server/service/src/main/java/com/doumee/service/business/impl/CategorySegServiceImpl.java
@@ -160,6 +160,9 @@
        if (pageWrap.getModel().getScode() != null) {
            queryWrapper.lambda().eq(CategorySeg::getScode, pageWrap.getModel().getScode());
        }
        if (pageWrap.getModel().getOrgId() != null) {
            queryWrapper.lambda().eq(CategorySeg::getOrgId, pageWrap.getModel().getOrgId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());