From b6d5c43b9dd39066a949c0dcdc944d4c17351256 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 25 七月 2024 18:23:09 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbomyoujia

---
 server/service/src/main/java/com/doumee/dao/business/model/News.java                              |    4 
 server/web/src/main/java/com/doumee/api/web/CustomerApi.java                                      |   25 +-
 admin/src/components/business/OperaShopWindow.vue                                                 |   75 +++++---
 server/service/src/main/java/com/doumee/dao/web/reqeust/GenerateQRCodeRequest.java                |   33 ++++
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java         |    2 
 server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java              |    8 
 admin/package-lock.json                                                                           |    5 
 server/service/src/main/java/com/doumee/service/business/impl/GetCrmDataServiceImpl.java          |    6 
 admin/package.json                                                                                |    1 
 server/service/src/main/java/com/doumee/service/business/UsersService.java                        |    4 
 server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java     |   99 +++++++++--
 server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java              |   15 -
 server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTImageListResponse.java |    3 
 wechat_staff/pages/userinfo/index.js                                                              |    1 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                                 |    3 
 server/web/src/main/java/com/doumee/api/web/PersonnelApi.java                                     |   16 ++
 server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java                          |    3 
 server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java                |   10 +
 server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java               |   61 ++++++-
 admin/public/index.html                                                                           |    2 
 server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java                                |   62 +++++++
 admin/.env.development                                                                            |    2 
 server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java                |   20 ++
 23 files changed, 368 insertions(+), 92 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index aa3a833..4cc5086 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,3 +1,3 @@
 # 寮�鍙戠幆澧冮厤缃�
 NODE_ENV = 'development'
-VUE_APP_BASE_API = 'http://localhost:10028'
+VUE_APP_BASE_API = 'http://192.168.0.135:10028'
diff --git a/admin/package-lock.json b/admin/package-lock.json
index c33f739..eb7ae85 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -13900,6 +13900,11 @@
         "clipboard": "^2.0.4"
       }
     },
+    "vue-jsonp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/vue-jsonp/-/vue-jsonp-2.0.0.tgz",
+      "integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA=="
+    },
     "vue-loader": {
       "version": "15.9.7",
       "resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-15.9.7.tgz",
diff --git a/admin/package.json b/admin/package.json
index 40ef6c2..a6d5a0e 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -25,6 +25,7 @@
     "vue": "^2.6.11",
     "vue-clipboard2": "^0.3.1",
     "vue-json-viewer": "^2.2.22",
+    "vue-jsonp": "^2.0.0",
     "vue-router": "^3.5.1",
     "vuescroll": "^4.17.3",
     "vuex": "^3.4.0",
diff --git a/admin/public/index.html b/admin/public/index.html
index 9cba38a..f73bed3 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,7 +5,7 @@
     <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">
-      <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script>
+      <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=service&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>-->
diff --git a/admin/src/components/business/OperaShopWindow.vue b/admin/src/components/business/OperaShopWindow.vue
index 547c708..b382539 100644
--- a/admin/src/components/business/OperaShopWindow.vue
+++ b/admin/src/components/business/OperaShopWindow.vue
@@ -63,6 +63,8 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { jsonp } from 'vue-jsonp'
+
 export default {
   name: 'OperaShopWindow',
   extends: BaseOpera,
@@ -71,8 +73,8 @@
     return {
       geocoder: null,
       map: [],
-      searchValue:'',
-      marker:null,
+      searchValue: '',
+      marker: null,
       // 琛ㄥ崟鏁版嵁
       provinces: [],
       cities: [],
@@ -108,9 +110,22 @@
     })
   },
   methods: {
-    searchAddress( ){
-      if(this.geocoder && this.searchValue){
-        this.geocoder.getLocation(this.searchValue)
+    searchAddress () {
+      if (  this.searchValue) {
+       var that = this
+        jsonp('https://apis.map.qq.com/ws/geocoder/v1/', {
+          address: this.searchValue,
+          key: 'HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ',
+          output: 'jsonp'
+        }).then(result => {
+          console.log(result)
+          if(result.result.location){
+            that.changePostion(result.result.location.lng, result.result.location.lat)
+          }
+        }).catch(error => {
+          // 璇锋眰澶辫触澶勭悊
+          console.log(error)
+        })
       }
     },
     initMap (lat, long) {
@@ -120,20 +135,20 @@
         center: center,
         zoom: 17
       })
-      this.changePostion(long,lat)
+      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 = new qq.maps.Geocoder()
       this.geocoder.setComplete(function (result) {
-        that.changePostion(result.detail.location.lng,result.detail.location.lat)
+        that.changePostion(result.detail.location.lng, result.detail.location.lat)
       })
       // 鑻ユ湇鍔¤姹傚け璐ワ紝鍒欒繍琛屼互涓嬪嚱鏁�
-      this.geocoder.setError(function () {
-        console.log('閫嗚В鏋愬け璐�')
-      })
+      this.geocoder.setError(function (e) {
+        console.log(that.searchValue + '=====閫嗚В鏋愬け璐�')
+      })*/
     },
     open (title, target) {
       this.title = title
@@ -157,7 +172,7 @@
         const mapContainer = this.$refs.mapContainer // 鑾峰彇鍦板浘瀹瑰櫒
         if (mapContainer) {
           // 鍒濆鍖栧湴鍥句箣鍓嶆鏌ュ鍣ㄦ槸鍚﹀瓨鍦�
-          this.initMap(this.form.latitude,this.form.longitude)
+          this.initMap(this.form.latitude, this.form.longitude)
           // 鍒濆鍖栬吘璁湴鍥�
         }
       })
@@ -167,12 +182,12 @@
         .then(res => {
           this.provinces = res
         })
-      if(this.form.provinceCode){
-        this.selectProvince(this.form.provinceCode,true)
+      if (this.form.provinceCode) {
+        this.selectProvince(this.form.provinceCode, true)
       }
     },
     // 閫夋嫨鐪佷唤
-    selectProvince (val,isInit) {
+    selectProvince (val, isInit) {
       this.provinces.forEach(item => {
         if (item.id == val) {
           this.form.provinceName = item.name
@@ -180,36 +195,36 @@
       })
       this.cities = []
       this.areas = []
-      if(!isInit){
+      if (!isInit) {
         this.form.cityName = ''
         this.form.areaCode = ''
         this.form.cityCode = ''
         this.form.areaName = ''
       }
-      if(!val || val ==''){
+      if (!val || val == '') {
         return
       }
       this.api.areaList({ pid: val })
         .then(res => {
           this.cities = res
-          if(isInit){
-            this.selectCity(this.form.cityCode,isInit)
+          if (isInit) {
+            this.selectCity(this.form.cityCode, isInit)
           }
         })
     },
     // 閫夋嫨鍩庡競
-    selectCity (val,isInit) {
+    selectCity (val, isInit) {
       this.cities.forEach(item => {
         if (item.id == val) {
           this.form.cityName = item.name
         }
       })
       this.areas = []
-      if(!isInit){
+      if (!isInit) {
         this.form.areaCode = ''
         this.form.areaName = ''
       }
-      if(!val || val ==''){
+      if (!val || val == '') {
         return
       }
       this.api.areaList({ pid: val })
@@ -224,24 +239,24 @@
         }
       })
     },
-    changeMapCenter(){
-       this.searchValue = (this.form.provinceName||'')+(this.form.cityName||'')+(this.form.areaName||'')+(this.form.address||'')
+    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){
+        if (this.map) {
+          if (this.marker) {
             this.marker.setMap(null)
           }
-          var pos =new qq.maps.LatLng(lat,lng);
+          var pos = new qq.maps.LatLng(lat, lng)
           this.map.setCenter(pos)
-          this.marker= new qq.maps.Marker({
+          this.marker = new qq.maps.Marker({
             position: pos,
-            animation:qq.maps.MarkerAnimation.DROP,
-            map:this.map
+            animation: qq.maps.MarkerAnimation.DROP,
+            map: this.map
           })
         }
       }
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
index eee4daf..497b92d 100644
--- 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
@@ -29,7 +29,7 @@
 //    @ApiModelProperty(value = "鏍囩")
 //    private String tagCodes;
 
-    @ApiModelProperty(value = "鎺掑簭鏂瑰紡 NORMAL - 榛樿锛汬OT - 鏈�鐑紱LATEST - 鏈�鏂帮紱")
+    @ApiModelProperty(value = "鎺掑簭 榛樿涓嶄紶锛涙渶鐑璯reet锛涙渶鏂皌ime")
     private String sortType;
 
     @ApiModelProperty(value = "澶氫釜鏍囩鍞竴缂栫爜鐨勫垪琛紝澶氫釜鏍囩鍞竴缂栫爜鐨勫垪琛�")
diff --git a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTImageListResponse.java b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTImageListResponse.java
index 55dd5ac..182dfee 100644
--- a/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTImageListResponse.java
+++ b/server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/response/ZTImageListResponse.java
@@ -1,6 +1,7 @@
 package com.doumee.biz.zbom.model.zhongtai.response;
 
 import com.doumee.biz.zbom.model.zhongtai.APISpaceCaseVo;
+import com.doumee.dao.business.model.Users;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -15,4 +16,6 @@
 
     private List<String> imageurlList;
 
+    private Users users;
+
 }
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 bdfc54a..a236b56 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
@@ -109,6 +109,7 @@
     public static final String ZBOM = "ZBOM" ;
     public static final String ZBOM_IAM_APPKEY = "ZBOM_IAM_APPKEY";
     public static final String ZBOM_IAM_APPID = "ZBOM_IAM_APPID";
+    public static final String ZBOM_PAD_INTERFACE_KEY = "ZBOM_PAD_INTERFACE_KEY";
     public static final String USER_CARD_HEADER_IMG ="USER_CARD_HEADER_IMG" ;
     public static final String USER_CARD_PHONE_IMG ="USER_CARD_PHONE_IMG" ;
     public static final String USER_CARD_ADDR_IMG ="USER_CARD_ADDR_IMG" ;
@@ -680,7 +681,7 @@
         // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
         String env_version = "trial";
         body.put("env_version", env_version);
-        if(env_version.equals("release")){
+        if(env_version.equals("release")&&StringUtils.isNotBlank(page)){
             body.put("page", page);
         }
         // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/News.java b/server/service/src/main/java/com/doumee/dao/business/model/News.java
index 04c6aef..87a285a 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/News.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/News.java
@@ -112,6 +112,10 @@
     @TableField(exist = false)
     private List<Multifile> fileList;
 
+    @ApiModelProperty(value = "鏄惁鏌ヨ鍙戝竷锛�0=鍚︼紱1=鏄�")
+    @TableField(exist = false)
+    private Integer isPublish;
+
     @ApiModelProperty(value = "绱犳潗绫诲瀷 0鎺ㄥ箍璧勮 1瀹氬埗鏈嶅姟", example = "1")
     @ExcelColumn(name="绱犳潗绫诲瀷 0鎺ㄥ箍璧勮 1瀹氬埗鏈嶅姟")
     private Integer type;
diff --git a/server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java b/server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java
index 7bf9b07..baa727d 100644
--- a/server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java
+++ b/server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java
@@ -39,4 +39,7 @@
 
     @ApiModelProperty(value = "绾害", example = "1")
     private BigDecimal latitude;
+
+    @ApiModelProperty(value = "鎿嶄綔浜�", hidden = true)
+    private Long userId;
 }
diff --git a/server/service/src/main/java/com/doumee/dao/web/reqeust/GenerateQRCodeRequest.java b/server/service/src/main/java/com/doumee/dao/web/reqeust/GenerateQRCodeRequest.java
new file mode 100644
index 0000000..e6c412e
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/web/reqeust/GenerateQRCodeRequest.java
@@ -0,0 +1,33 @@
+package com.doumee.dao.web.reqeust;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/7/25 10:35
+ */
+@Data
+public class GenerateQRCodeRequest {
+
+
+    @ApiModelProperty(value = "涓氬姟绫诲瀷锛�0:浜у搧;1:妗堜緥;2:瀹炴櫙")
+    private Integer businessType;
+
+    @ApiModelProperty(value = "涓氬姟涓婚敭")
+    private String businessId;
+
+    @ApiModelProperty(value = "iam缂栫爜")
+    private String iamId;
+
+    @ApiModelProperty(value = "璺宠浆鍦板潃",hidden = true)
+    private String path;
+
+
+
+
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java b/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
index e208654..1b156d0 100644
--- a/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
+++ b/server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
@@ -122,7 +122,7 @@
      * @param userId
      * @return
      */
-    ZTProductInfoResponse getProductInfo(String id,String userType,Long userId);
+    ZTProductInfoResponse getProductInfo(String id,String userType,Long userId,String salesId);
 
     /**
      * 涓彴 - 鍏ㄥ眿璧勮璇︽儏
@@ -131,7 +131,7 @@
      * @param userId
      * @return
      */
-    ZTCaseInfoResponse getWholecaseInfo(String id,String userType,Long userId);
+    ZTCaseInfoResponse getWholecaseInfo(String id,String userType,Long userId,String salesId);
 
     /**
      * 涓彴 - 浜у搧璧勮璇︽儏
@@ -140,7 +140,7 @@
      * @param userId
      * @return
      */
-    ZTProductNewsInfoResponse getProductNewsInfo(String id,String userType,Long userId);
+    ZTProductNewsInfoResponse getProductNewsInfo(String id,String userType,Long userId,String salesId);
 
     /**
      * 涓彴 - 瀹炴櫙妗堜緥
@@ -149,7 +149,7 @@
      * @param userId
      * @return
      */
-    ZTRealcaseInfoResponse getRealcaseInfo(String id,String userType,Long userId);
+    ZTRealcaseInfoResponse getRealcaseInfo(String id,String userType,Long userId,String salesId);
 
     /**
      * 涓彴 - 鎴戠殑鏀惰棌/鍠滄鍒楄〃
diff --git a/server/service/src/main/java/com/doumee/service/business/UsersService.java b/server/service/src/main/java/com/doumee/service/business/UsersService.java
index d7fbd06..62aae8d 100644
--- a/server/service/src/main/java/com/doumee/service/business/UsersService.java
+++ b/server/service/src/main/java/com/doumee/service/business/UsersService.java
@@ -7,10 +7,12 @@
 import com.doumee.dao.business.model.Users;
 import com.doumee.dao.web.reqeust.ContentShareImgDto;
 import com.doumee.dao.web.reqeust.EditUsersRequest;
+import com.doumee.dao.web.reqeust.GenerateQRCodeRequest;
 import com.doumee.dao.web.reqeust.WxPhoneRequest;
 import com.doumee.dao.web.response.AccountResponse;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.InputStream;
 import java.util.List;
 
 /**
@@ -124,4 +126,6 @@
     ZTBaseRequst logOff(Long userId,String token);
 
     AccountResponse getWxMiniPhoneLogin(WxPhoneRequest wxPhoneRequest);
+
+    InputStream getQrCode(GenerateQRCodeRequest generateQRCodeRequest);
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GetCrmDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GetCrmDataServiceImpl.java
index 08026cc..fe47fd6 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/GetCrmDataServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/GetCrmDataServiceImpl.java
@@ -56,8 +56,10 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        Users users = usersMapper.selectById(crmCustomerListRequest.getUserId());
-        crmCustomerListRequest.setUserName(users.getIamUsername());
+        if(StringUtils.isBlank(crmCustomerListRequest.getUserName())){
+            Users users = usersMapper.selectById(crmCustomerListRequest.getUserId());
+            crmCustomerListRequest.setUserName(users.getIamUsername());
+        }
         CRMBaseResponse<List<CRMCustomerListResponse>> crmBaseResponse = zbomCRMService.getCustomerList(crmCustomerListRequest);
         if(Objects.isNull(crmBaseResponse)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"CRM鎺ュ彛璇锋眰澶辫触!");
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
index 8c91401..10cdaf7 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
@@ -10,10 +10,12 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.CustomerUserMapper;
 import com.doumee.dao.business.IamInterfaceLogMapper;
 import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.UsersMapper;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Users;
 import com.doumee.dao.web.response.ZSZXCatalogResponse;
 import com.doumee.dao.web.response.ZTBaseInfoResponse;
 import com.doumee.service.business.GetZhongTaiDataService;
@@ -48,6 +50,9 @@
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private CustomerUserMapper customerUserMapper;
 
     @Autowired
     private RedisTemplate<String, Object> redisTemplate;
@@ -272,7 +277,7 @@
 
 
     @Override
-    public ZTProductInfoResponse getProductInfo(String id,String userType,Long userId){
+    public ZTProductInfoResponse getProductInfo(String id,String userType,Long userId,String salesId){
         //鏌ヨ 涓彴 TOKEN
         ZTBaseInfoResponse ztBaseInfoResponse  = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
         ZTContentInfoRequest ztContentListRequest = new ZTContentInfoRequest();
@@ -281,6 +286,19 @@
         ztContentListRequest.setId(id);
         ZTProductInfoResponse response = zbomZhongTaiService.getProductInfo(ztContentListRequest);
         if(Objects.nonNull(response)){
+            //鏌ヨ瀵艰喘淇℃伅 杩涜淇℃伅缁戝畾涓庤繑鍥�
+            if(StringUtils.isNotBlank(salesId)){
+                Users users = usersMapper.selectById(salesId);
+                if(Objects.nonNull(users)){
+                    MemberServiceImpl.saveCustomerUser(customerUserMapper,users,userId);
+                    String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+                            StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+                    if(StringUtils.isNotBlank(users.getImgurl())){
+                        users.setImgurlFull(prefix + users.getImgurl());
+                    }
+                    response.setUsers(users);
+                }
+            }
             List<String> stringList = new ArrayList<String>();
             if (StringUtils.isNotBlank(response.getCoverImage())) {
                 stringList.add(response.getCoverImage());
@@ -311,7 +329,7 @@
     }
 
     @Override
-    public ZTCaseInfoResponse getWholecaseInfo(String id,String userType,Long userId){
+    public ZTCaseInfoResponse getWholecaseInfo(String id,String userType,Long userId,String salesId){
         //鏌ヨ 涓彴 TOKEN
         ZTBaseInfoResponse ztBaseInfoResponse  = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
         ZTContentInfoRequest ztContentListRequest = new ZTContentInfoRequest();
@@ -319,30 +337,45 @@
         ztContentListRequest.setUserType(ztBaseInfoResponse.getUserType());
         ztContentListRequest.setId(id);
         ZTCaseInfoResponse response = zbomZhongTaiService.getWholecaseInfo(ztContentListRequest);
-        List<String> stringList = new ArrayList<String>();
-        if (StringUtils.isNotBlank(response.getCoverImage())) {
-            stringList.add(response.getCoverImage());
-        }
-        if(Objects.nonNull(response.getLayoutUlr())){
-            stringList.add(response.getLayoutUlr());
-        }
-        APISpaceCaseVo[]  apiSpaceCaseVoList = response.getApiSpaceCaseVos();
-        if(Objects.nonNull(apiSpaceCaseVoList)){
-            for (APISpaceCaseVo apiSpaceCaseVo:apiSpaceCaseVoList) {
-                if(StringUtils.isNotBlank(apiSpaceCaseVo.getCoverImage())){
-                    stringList.add(apiSpaceCaseVo.getCoverImage());
-                }
-                if(Objects.nonNull(apiSpaceCaseVo.getImgList())){
-                    stringList.addAll(Arrays.asList(apiSpaceCaseVo.getImgList()));
+        if(Objects.nonNull(response)){
+            //鏌ヨ瀵艰喘淇℃伅 杩涜淇℃伅缁戝畾涓庤繑鍥�
+            if(StringUtils.isNotBlank(salesId)){
+                Users users = usersMapper.selectById(salesId);
+                if(Objects.nonNull(users)){
+                    MemberServiceImpl.saveCustomerUser(customerUserMapper,users,userId);
+                    String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+                            StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+                    if(StringUtils.isNotBlank(users.getImgurl())){
+                        users.setImgurlFull(prefix + users.getImgurl());
+                    }
+                    response.setUsers(users);
                 }
             }
+            List<String> stringList = new ArrayList<String>();
+            if (StringUtils.isNotBlank(response.getCoverImage())) {
+                stringList.add(response.getCoverImage());
+            }
+            if(Objects.nonNull(response.getLayoutUlr())){
+                stringList.add(response.getLayoutUlr());
+            }
+            APISpaceCaseVo[]  apiSpaceCaseVoList = response.getApiSpaceCaseVos();
+            if(Objects.nonNull(apiSpaceCaseVoList)){
+                for (APISpaceCaseVo apiSpaceCaseVo:apiSpaceCaseVoList) {
+                    if(StringUtils.isNotBlank(apiSpaceCaseVo.getCoverImage())){
+                        stringList.add(apiSpaceCaseVo.getCoverImage());
+                    }
+                    if(Objects.nonNull(apiSpaceCaseVo.getImgList())){
+                        stringList.addAll(Arrays.asList(apiSpaceCaseVo.getImgList()));
+                    }
+                }
+            }
+            response.setImageurlList(stringList);
         }
-        response.setImageurlList(stringList);
         return response;
     }
 
     @Override
-    public ZTProductNewsInfoResponse getProductNewsInfo(String id,String userType,Long userId){
+    public ZTProductNewsInfoResponse getProductNewsInfo(String id,String userType,Long userId,String salesId){
         //鏌ヨ 涓彴 TOKEN
         ZTBaseInfoResponse ztBaseInfoResponse  = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
         ZTContentInfoRequest ztContentListRequest = new ZTContentInfoRequest();
@@ -351,6 +384,19 @@
         ztContentListRequest.setId(id);
         ZTProductNewsInfoResponse response = zbomZhongTaiService.getProductNewsInfo(ztContentListRequest);
         if(Objects.nonNull(response)){
+            //鏌ヨ瀵艰喘淇℃伅 杩涜淇℃伅缁戝畾涓庤繑鍥�
+            if(StringUtils.isNotBlank(salesId)){
+                Users users = usersMapper.selectById(salesId);
+                if(Objects.nonNull(users)){
+                    MemberServiceImpl.saveCustomerUser(customerUserMapper,users,userId);
+                    String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+                            StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+                    if(StringUtils.isNotBlank(users.getImgurl())){
+                        users.setImgurlFull(prefix + users.getImgurl());
+                    }
+                    response.setUsers(users);
+                }
+            }
             List<String> stringList = new ArrayList<String>();
             if (StringUtils.isNotBlank(response.getCoverImage())) {
                 stringList.add(response.getCoverImage());
@@ -380,7 +426,7 @@
     }
 
     @Override
-    public ZTRealcaseInfoResponse getRealcaseInfo(String id,String userType,Long userId){
+    public ZTRealcaseInfoResponse getRealcaseInfo(String id,String userType,Long userId,String salesId){
         //鏌ヨ 涓彴 TOKEN
         ZTBaseInfoResponse ztBaseInfoResponse  = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
         ZTContentInfoRequest ztContentListRequest = new ZTContentInfoRequest();
@@ -389,6 +435,19 @@
         ztContentListRequest.setId(id);
         ZTRealcaseInfoResponse response = zbomZhongTaiService.getRealcaseInfo(ztContentListRequest);
         if(Objects.nonNull(response)){
+            //鏌ヨ瀵艰喘淇℃伅 杩涜淇℃伅缁戝畾涓庤繑鍥�
+            if(StringUtils.isNotBlank(salesId)){
+                Users users = usersMapper.selectById(salesId);
+                if(Objects.nonNull(users)){
+                    MemberServiceImpl.saveCustomerUser(customerUserMapper,users,userId);
+                    String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) +
+                            StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode());
+                    if(StringUtils.isNotBlank(users.getImgurl())){
+                        users.setImgurlFull(prefix + users.getImgurl());
+                    }
+                    response.setUsers(users);
+                }
+            }
             List<String> stringList = new ArrayList<String>();
             if (StringUtils.isNotBlank(response.getCoverImage())) {
                 stringList.add(response.getCoverImage());
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index ea5a395..c6c0fa3 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -267,7 +267,7 @@
 
 
     @Override
-    public AccountResponse wxLogin(String code,String iamId){
+    public AccountResponse wxLogin(String code,String userId){
         try {
 //            鑾峰彇寰俊鏁忔劅鏁版嵁
             WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code);
@@ -278,11 +278,8 @@
 //            String openId = code;
             Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).isNotNull("phone"));
             Users users = new Users();
-            if(StringUtils.isNotBlank(iamId)){
-                users = usersMapper.selectOne(new QueryWrapper<Users>().lambda()
-                        .eq(Users::getIamId,iamId)
-                        .last("limit 1")
-                );
+            if(StringUtils.isNotBlank(userId)){
+                users = usersMapper.selectById(userId);
             }
             if (member == null) {
                 member = new Member();
@@ -302,14 +299,14 @@
                     member.setToken(ztUserGetTokenResponse.getToken());
                 }
                 memberMapper.insert(member);
-                this.saveCustomerUser(users,member.getId());
+                MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId());
             }else{
                 ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                 if(!Objects.isNull(ztUserGetTokenResponse)){
                     member.setToken(ztUserGetTokenResponse.getToken());
                     memberMapper.updateById(member);
                 }
-                this.saveCustomerUser(users,member.getId());
+                MemberServiceImpl.saveCustomerUser(customerUserMapper,users,member.getId());
                 member = this.getMemberInfo(member.getId());
             }
             String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate);
@@ -324,7 +321,7 @@
         throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
     }
 
-    public void saveCustomerUser(Users users,Long memberId){
+    public static void saveCustomerUser(CustomerUserMapper customerUserMapper,Users users,Long memberId){
         if(Objects.nonNull(users)&&Objects.nonNull(memberId)) {
             if (customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda()
                     .eq(CustomerUser::getIsdeleted, Constants.ZERO)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
index 22a4e05..5e8210c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
@@ -200,6 +200,9 @@
         if (pageWrap.getModel().getId() != null) {
             queryWrapper.eq(News::getId, pageWrap.getModel().getId());
         }
+        if(pageWrap.getModel().getIsPublish()!=null && Constants.equalsInteger(pageWrap.getModel().getIsPublish(),Constants.ONE)){
+            queryWrapper.apply(" now() >= t.PUBLISH_DATE ");
+        }
         if (pageWrap.getModel().getCreator() != null) {
             queryWrapper.eq(News::getCreator, pageWrap.getModel().getCreator());
         }
@@ -391,9 +394,22 @@
         dailyUpdatesResponse.setShareNum(
                 actionsMapper.selectCount(new QueryWrapper<Actions>())
         );
-        dailyUpdatesResponse.setNewsList(
-                this.getCustomizedNewsList(Constants.ZERO,Constants.THREE,Constants.ZERO)
+        List<News> list = newsMapper.selectList(new QueryWrapper<News>().lambda()
+                .eq(News::getIsdeleted,Constants.ZERO)
+                .eq(News::getType,Constants.ZERO)
+                .eq(News::getStatus,Constants.ZERO)
+                .eq(News::getFileType,Constants.ZERO)
+                .last( "limit 3"  )
+                .orderByDesc(News::getCreateDate)
         );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
+            List<Long> idList =  list.stream().map(i->i.getId()).collect(Collectors.toList());
+            List<Multifile> files = dealMultifileList(idList);
+            for(News model : list){
+                setFilelistById(model,files);
+            }
+        }
+        dailyUpdatesResponse.setNewsList(list);
         return dailyUpdatesResponse;
     }
 
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 a556d35..0c185d7 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
@@ -100,6 +100,11 @@
     @Override
     public void updateById(Shop shop) {
         shopMapper.updateById(shop);
+        usersMapper.update(new UpdateWrapper<Users>().lambda()
+                .set(Users::getCardImg,null)
+                .isNotNull(Users::getCardImg)
+                .eq(Users::getDepartmentId,shop.getId())
+        );
     }
 
     @Override
@@ -1016,6 +1021,11 @@
         Shop updShop = new Shop();
         BeanUtils.copyProperties(editShopDTO,updShop);
         shopMapper.updateById(updShop);
+        usersMapper.update(new UpdateWrapper<Users>().lambda()
+                .set(Users::getCardImg,null)
+                .isNotNull(Users::getCardImg)
+                .eq(Users::getDepartmentId,shop.getId())
+        );
     }
 
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
index 0c991ed..cd4824e 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -35,6 +35,7 @@
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.reqeust.EditUsersRequest;
 import com.doumee.dao.web.reqeust.ContentShareImgDto;
+import com.doumee.dao.web.reqeust.GenerateQRCodeRequest;
 import com.doumee.dao.web.reqeust.WxPhoneRequest;
 import com.doumee.dao.web.response.AccountResponse;
 import com.doumee.service.business.UsersService;
@@ -44,6 +45,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.interfaces.MPJBaseJoin;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import okhttp3.Response;
 import org.apache.catalina.User;
 import org.apache.commons.lang3.StringUtils;
 import me.chanjar.weixin.common.error.WxErrorException;
@@ -58,7 +60,10 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.*;
 import java.util.concurrent.Callable;
@@ -671,6 +676,8 @@
 
     @Override
     public  String getContentShareImg(Users users, ContentShareImgDto param){
+        users = usersMapper.selectById(users.getId());
+        this.getUsersDetail(users);
         if(StringUtils.isBlank(param.getImgurl())){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -690,17 +697,16 @@
         if(img1 ==null){
             return param.getImgurl();
         }
-      /*  if(img1.getWidth() <200 && img1.getHeight()<100){
+       /* if(img1.getWidth() <200 && img1.getHeight()<100){
             return  param.getImgurl();
-        }
-*/
+        }*/
         String defualtHeader = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_HEADER_IMG).getCode();
         String imgurl =StringUtils.isNotBlank(users.getImgurl())?path+(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.USERS_FILE).getCode())+users.getImgurl():defualtHeader;
         String url =null;
         //鍐呭鍒嗕韩娴锋姤鍥剧墖
         InputStream mpCode =  Constants.generateWxMiniImgStream(systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG, Constants.WX_TOKEN_CUSTOMER).getCode(),
                 //"userId="+users.getId()+"&articleId="+param.getArticleId(),
-                 param.getArticleId()+"&"+users.getId(),
+                 param.getArticleId()+"_"+users.getId(),
                 param.getPageUrl());//灏忕▼搴�
 
         InputStream inputStream = GeneratePicUtil.generateShareWithUserImg(
@@ -717,14 +723,13 @@
             url =  path+fileName;
         }
         return  url;
-
     }
 
     private String dealShareImgNoUser(ContentShareImgDto param, Users users, String shareFolder, String path) {
        String url =null;
         //鍐呭鍒嗕韩娴锋姤鍥剧墖
         InputStream mpCode =  Constants.generateWxMiniImgStream(systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG, Constants.WX_TOKEN_CUSTOMER).getCode(),
-                "userId="+users.getId()+"&articleId="+param.getArticleId(),
+                param.getArticleId()+"_"+users.getId(),
                 param.getPageUrl());//灏忕▼搴�
 
         String title = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.SHARE_HAIBAO_HEADER_TITLE).getCode();
@@ -745,6 +750,8 @@
 
     @Override
     public     String getUserCard(Users users){
+        users = usersMapper.selectById(users.getId());
+        this.getUsersDetail(users);
         String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
         String folder = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.USERS_FILE).getCode();
         if(StringUtils.isNotBlank(users.getCardImg()) && !StringUtils.equals(users.getCardImg(),"-")){
@@ -829,7 +836,9 @@
             Shop shop = shopMapper.selectById(users.getDepartmentId());
             if(Objects.nonNull(shop)){
                 users.setShopName(shop.getName());
-                users.setShopCity(shop.getProvinceName()+shop.getCityName()+shop.getAreaName());
+                if(!(StringUtils.isBlank(shop.getProvinceName())||StringUtils.isBlank(shop.getCityName())||StringUtils.isBlank(shop.getAreaName()))){
+                    users.setShopCity(shop.getProvinceName()+shop.getCityName()+shop.getAreaName());
+                }
                 if(StringUtils.isNotBlank(shop.getAddress())){
                     users.setShopAddress(shop.getAddress());
                 }else{
@@ -853,7 +862,7 @@
         //TODO 璋冭捣 涓彴鎺ュ彛
         usersMapper.update(new UpdateWrapper<Users>()
                 .lambda()
-                .set(Users::getCardImg,"-") //閲嶇疆鍚嶇墖涓� -
+                .set(Users::getCardImg,null) //閲嶇疆鍚嶇墖涓� -
                 .set(StringUtils.isNotBlank(editUsersRequest.getImgurl()),Users::getImgurl,editUsersRequest.getImgurl())
                 .set(StringUtils.isNotBlank(editUsersRequest.getName()),Users::getName,editUsersRequest.getName())
                 .set(StringUtils.isNotBlank(editUsersRequest.getPhone()),Users::getPhone,editUsersRequest.getPhone())
@@ -890,5 +899,41 @@
         return ztBaseRequst;
     }
 
+
+
+    @Override
+    public InputStream getQrCode(GenerateQRCodeRequest generateQRCodeRequest){
+        if(Objects.isNull(generateQRCodeRequest)
+            ||StringUtils.isBlank(generateQRCodeRequest.getIamId())
+            || StringUtils.isBlank(generateQRCodeRequest.getBusinessId())
+            || Objects.isNull(generateQRCodeRequest.getBusinessType())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(generateQRCodeRequest.getBusinessType()<Constants.ZERO || generateQRCodeRequest.getBusinessType() > Constants.THREE){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟绫诲瀷閿欒");
+        }
+        Users users = usersMapper.selectOne(new QueryWrapper<Users>().lambda().eq(Users::getIamId,
+                generateQRCodeRequest.getIamId()).last("limit 1"));
+        if(Objects.isNull(users)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐淇℃伅");
+        }
+        InputStream inputStream =  Constants.generateWxMiniImgStream(
+                systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG, Constants.WX_TOKEN_CUSTOMER).getCode(),
+                generateQRCodeRequest.getBusinessId()+"_"+generateQRCodeRequest.getBusinessType()+"_"+users.getId(),
+                null);//灏忕▼搴�
+        return inputStream;
+//        try {
+//               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//                    byte[] buffer = new byte[1024];
+//                    int len = -1;
+//                    while ((len = inputStream.read(buffer)) != -1) {
+//                        baos.write(buffer, 0, len);
+//                    }
+//                    return "data:mediatype;base64," + Base64.getEncoder().encodeToString(baos.toByteArray());
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"浜岀淮鐮佺敓鎴愬け璐�");
+    }
 }
 
diff --git a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
index a6a7e32..74fd760 100644
--- a/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -84,8 +84,6 @@
     private ActionsService actionsService;
 
 
-
-
     @ApiOperation(value = "瀹㈡埛绔皬绋嬪簭鐧婚檰", notes = "瀹㈡埛绔皬绋嬪簭")
     @GetMapping("/wxLoginCustomer")
     @ApiImplicitParams({
@@ -528,9 +526,10 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "salesId", value = "瀵艰喘涓婚敭锛堜簩缁寸爜鍒嗕韩锛�", required = false),
     })
-    public ApiResponse<ZTCaseInfoResponse> getWholecaseInfo(@RequestParam String id) {
-        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,getUserType(),getMemberId());
+    public ApiResponse<ZTCaseInfoResponse> getWholecaseInfo(@RequestParam String id,String salesId) {
+        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,getUserType(),getMemberId(),salesId);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztCaseInfoResponse);
     }
 
@@ -543,9 +542,10 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "salesId", value = "瀵艰喘涓婚敭锛堜簩缁寸爜鍒嗕韩锛�", required = false),
     })
-    public ApiResponse<ZTProductNewsInfoResponse> getProductNewsInfo(@RequestParam String id) {
-        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,getUserType(),getMemberId());
+    public ApiResponse<ZTProductNewsInfoResponse> getProductNewsInfo(@RequestParam String id,String salesId) {
+        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,getUserType(),getMemberId(),salesId);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztProductNewsInfoResponse);
     }
 
@@ -559,14 +559,12 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "salesId", value = "瀵艰喘涓婚敭锛堜簩缁寸爜鍒嗕韩锛�", required = false),
     })
-    public ApiResponse<ZTRealcaseInfoResponse> getRealcaseInfo(@RequestParam String id) {
-        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,getUserType(),getMemberId());
+    public ApiResponse<ZTRealcaseInfoResponse> getRealcaseInfo(@RequestParam String id,String salesId) {
+        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,getUserType(),getMemberId(),salesId);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztRealcaseInfoResponse);
     }
-
-
-
 
     @UserLoginRequired
     @LoginRequired
@@ -575,9 +573,10 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "鍐呭涓婚敭", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "salesId", value = "瀵艰喘涓婚敭锛堜簩缁寸爜鍒嗕韩锛�", required = false),
     })
-    public ApiResponse<ZTProductInfoResponse> getProductInfo(@RequestParam String id) {
-        ZTProductInfoResponse ztProductInfoResponse= getZhongTaiDataService.getProductInfo(id,getUserType(),getMemberId());
+    public ApiResponse<ZTProductInfoResponse> getProductInfo(@RequestParam String id,String salesId) {
+        ZTProductInfoResponse ztProductInfoResponse= getZhongTaiDataService.getProductInfo(id,getUserType(),getMemberId(),salesId);
         return ApiResponse.success("鏌ヨ鎴愬姛",ztProductInfoResponse);
     }
 
diff --git a/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java b/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
index 3ca5386..0e4ab81 100644
--- a/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
@@ -1,27 +1,46 @@
 package com.doumee.api.web;
 
+import cn.hutool.http.HttpRequest;
+import com.amazonaws.util.Md5Utils;
+import com.doumee.biz.system.SystemDataPermissionBiz;
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.biz.zbom.ZbomCRMService;
 import com.doumee.biz.zbom.ZbomZhongTaiService;
 import com.doumee.config.annotation.LoginRequired;
 import com.doumee.config.annotation.UserLoginRequired;
+import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
+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.business.model.News;
+import com.doumee.dao.web.reqeust.GenerateQRCodeRequest;
 import com.doumee.dao.web.response.DailyUpdatesResponse;
 import com.doumee.dao.web.response.ZSZXCatalogResponse;
 import com.doumee.service.business.GetZhongTaiDataService;
 import com.doumee.service.business.NewsService;
 import com.doumee.service.business.SmsEmailService;
+import com.doumee.service.business.UsersService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.codec.digest.Md5Crypt;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.tomcat.util.security.MD5Encoder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
 
 /**
  * Created by IntelliJ IDEA.
@@ -51,6 +70,12 @@
     @Autowired
     public GetZhongTaiDataService getZhongTaiDataService;
 
+    @Autowired
+    public UsersService usersService;
+
+    @Autowired
+    public SystemDictDataBiz systemDictDataBiz;
+
 
     @UserLoginRequired
     @LoginRequired
@@ -62,6 +87,9 @@
     public ApiResponse<ZSZXCatalogResponse> getZSZXCatalogs() {
         return  ApiResponse.success(getZhongTaiDataService.getZSZXCatalogs(getMemberId(),getUserType()));
     }
+
+
+
 
 
 
@@ -83,6 +111,7 @@
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse<PageData<News>> newsPage (@RequestBody PageWrap<News> pageWrap) {
+        pageWrap.getModel().setIsPublish(Constants.ONE);
         return ApiResponse.success(newsService.findPage(pageWrap));
     }
 
@@ -98,4 +127,37 @@
     public ApiResponse<String> getCrmAuthUrl(@RequestParam Integer type) {
         return  ApiResponse.success(zbomCRMService.getCrmGoUrl(this.getLoginUserInfo().getIamUsername(),type));
     }
+
+    @PreventRepeat(lockTime = 2000)
+    @ApiOperation(value = "鐢熸垚灏忕▼搴忕爜", notes = "PAD绔�")
+    @PostMapping("/getQrCode")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "sign", value = "绛惧悕锛堜娇鐢╰imestamp+appkey杩涜md5鍔犲瘑锛�", required = true),
+            @ApiImplicitParam(paramType = "header", dataType = "Long", name = "timestamp", value = "鏃堕棿鎴筹紙褰撳墠鏃堕棿姣锛�2灏忔椂鍐呮湁鏁堬級", required = true),
+    })
+    public void getQrCode(@RequestParam(value = "sign")String sign,
+                          @RequestParam(value = "timestamp")Long timestamp,
+                          @RequestBody GenerateQRCodeRequest generateQRCodeRequest,HttpServletResponse response) {
+        if(StringUtils.isBlank(sign) || timestamp == null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        String interfaceKey = systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_PAD_INTERFACE_KEY).getCode();
+        //鍒ゆ柇鏃堕棿鎴虫槸鍚﹁秴杩囦袱灏忔椂
+        if(System.currentTimeMillis()-timestamp > 2 * 60 * 3600 * 1000){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token宸插け鏁�!");
+        }
+        String token = DigestUtils.md5Hex(timestamp+interfaceKey);
+        if(!token.equals(sign)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token宸插け鏁�!");
+        }
+        try{
+            response.setHeader("Cache-Control", "no-store, no-cache");
+            response.setContentType("image/jpeg");
+            InputStream inputStream = usersService.getQrCode(generateQRCodeRequest);
+            ImageIO.write(ImageIO.read(inputStream),"png",response.getOutputStream());
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
 }
diff --git a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
index a1d80da..bbe8434 100644
--- a/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
@@ -17,9 +17,11 @@
 import com.doumee.dao.business.model.Shop;
 import com.doumee.dao.business.model.SmsEmail;
 import com.doumee.dao.business.model.Users;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.dao.web.reqeust.*;
 import com.doumee.dao.web.response.AccountResponse;
 import com.doumee.service.business.*;
+import com.doumee.service.system.SystemDictDataService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -181,8 +183,22 @@
     }
 
 
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
 
 
+    @UserLoginRequired
+    @LoginRequired
+    @ApiOperation(value = "鏇存柊token", notes = "鍛樺伐绔皬绋嬪簭")
+    @GetMapping("/updateToken")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse updateToken () {
+        systemDictDataBiz.updWxMiniToken();
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
 
     @UserLoginRequired
     @ApiOperation(value = "鑾峰彇鍐呭鍒嗕韩娴锋姤", notes = "鑾峰彇鍐呭鍒嗕韩娴锋姤锛屽姞灏忕▼搴忕爜")
diff --git a/wechat_staff/pages/userinfo/index.js b/wechat_staff/pages/userinfo/index.js
index a208323..5156bf3 100644
--- a/wechat_staff/pages/userinfo/index.js
+++ b/wechat_staff/pages/userinfo/index.js
@@ -97,6 +97,7 @@
     var that = this
     const { userInfo } = this.data
     if (e.detail.avatarUrl) {
+      console.log(e)
       wx.uploadFile({
         url: uploadUrl,
         filePath: e.detail.avatarUrl,

--
Gitblit v1.9.3