jiangping
2024-07-24 af9f7ad7d711f0562e4394449a117da20f808fc2
Merge remote-tracking branch 'origin/master'
已添加1个文件
已修改28个文件
364 ■■■■ 文件已修改
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/NewsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/api/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/components/detailFooter/index.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/components/detailFooter/index.wxml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/components/disCase/index.wxml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/components/disRealpic/index.wxml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/case.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/case.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/product.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/product.wxml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/realpic.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/realpic.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/kefu/fond.js 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/kefu/fond.less 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/kefu/fond.wxml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/kefu/fond.wxss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/project.private.config.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/utils/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -49,4 +49,5 @@
    List<ZTCusCarouselImageResponse> carouselImageList(ZTContentListRequest param);
    ZTCusCarouselImageResponse carouselImageDetail(ZTDataDetailRequest param);
    ZTBasePageResponse<ZTCollectLikeInfoResponse> collectLikePage(ZTCollectLikeRequest param);
    ZTBaseResponse batchAddLike(ZTBatchAddListRequest param);
}
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -751,4 +751,25 @@
        }
        return null;
    }
    /**
     * èŽ·å–åˆ†ç±»å’Œåˆ†ç±»ä¸‹çš„æ ‡ç­¾
     * @param param
     * @return
     */
    @Override
    public ZTBaseResponse batchAddLike(ZTBatchAddListRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.BATCH_ADD_LIKE_URL,
                ZTConstants.IntegerName.BATCH_ADD_LIKE_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null){
            return result;
        }
        return null;
    }
}
server/service/src/main/java/com/doumee/biz/zbom/model/crm/response/CRMCustomerListResponse.java
@@ -20,5 +20,9 @@
    private String customerPhone;//    å®¢æˆ·å§“名
    private String customerName;//    å®¢æˆ·æ‰‹æœºå·
    private String  address    ;//地址详情
    private String  creationDate ;//创建时间
    private String  customerId ;//客户 id
    private String  platSourceId ;//传递平台 id
    private String  platSource ;//平台类型 1 pad ç«¯ 2 å°ç¨‹åºç«¯
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTBatchAddListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.biz.zbom.model.zhongtai;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ZTBatchAddListRequest extends  ZTBaseRequst{
    @ApiModelProperty(value = "内容IDS,英文逗号隔开")
    private String articleIds;
    @ApiModelProperty(value = "客户 id")
    private String  customerId ;
    @ApiModelProperty(value = "传递平台 id")
    private String  platSourceId ;
    @ApiModelProperty(value = "平台类型 1 pad ç«¯ 2 å°ç¨‹åºç«¯")
    private String  platSource ;
}
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTConstants.java
@@ -78,6 +78,7 @@
        String REALCASE_PAGE_LIST_URL ="/content/api/realCasePageList";
        String REALCASE_INFO_URL ="/content/api/realCaseDetail";
        String FAVORITES_PAGE_URL ="/behavior/api/favoritesPageList";
        String BATCH_ADD_LIKE_URL ="/content/api/batchAddLike";
    }
@@ -119,5 +120,7 @@
        String REALCASE_INFO_NAME ="获取实景案例详情";
        String FAVORITES_NAME ="获取我的喜欢/收藏列表";
        String BATCH_ADD_LIKE_NAME ="批量绑定喜欢给客户";
    }
}
server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
@@ -157,4 +157,11 @@
     * @return
     */
    ZTBasePageResponse<ZTCollectLikeInfoResponse> collectLikePage(ZTCollectLikeRequest ztCollectLikeRequest);
    /**
     * ä¸­å° - æ‰¹é‡æ·»åŠ å–œæ¬¢ç»™å®¢æˆ·
     * @param param
     * @return
     */
    void batchAddLike(ZTBatchAddListRequest param);
}
server/service/src/main/java/com/doumee/service/business/NewsService.java
@@ -115,7 +115,7 @@
     * èŽ·å–æ¯æ—¥ä¸Šæ–°æ•°æ®
     * @return
     */
    DailyUpdatesResponse getDailyUpdatesResponse(Integer fileType);
    DailyUpdatesResponse getDailyUpdatesResponse();
    /**
     * ä¿å­˜æŽ¨å¹¿å’¨è¯¢åˆ†äº«è®°å½•
server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
@@ -341,4 +341,24 @@
        ZTBasePageResponse<ZTCollectLikeInfoResponse> response = zbomZhongTaiService.collectLikePage(ztCollectLikeRequest);
        return response;
    }
    @Override
    public void batchAddLike(ZTBatchAddListRequest ztBatchAddListRequest){
        if(Objects.isNull(ztBatchAddListRequest)
                || StringUtils.isBlank(ztBatchAddListRequest.getArticleIds())
                || StringUtils.isBlank(ztBatchAddListRequest.getCustomerId())
                || StringUtils.isBlank(ztBatchAddListRequest.getPlatSourceId())
                || StringUtils.isBlank(ztBatchAddListRequest.getPlatSource())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //查询 ä¸­å°
        ZTBaseInfoResponse ztBaseInfoResponse = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,
                Long.valueOf(ztBatchAddListRequest.getUserId()),ztBatchAddListRequest.getUserType());
        ztBatchAddListRequest.setToken(ztBaseInfoResponse.getToken());
        zbomZhongTaiService.batchAddLike(ztBatchAddListRequest);
    }
}
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
@@ -380,19 +380,19 @@
     * @return
     */
    @Override
    public DailyUpdatesResponse getDailyUpdatesResponse(Integer fileType){
    public DailyUpdatesResponse getDailyUpdatesResponse(){
        DailyUpdatesResponse dailyUpdatesResponse = new DailyUpdatesResponse();
        dailyUpdatesResponse.setDailyUpdateNum(
                newsMapper.selectCount(new QueryWrapper<News>().lambda()
                .eq(News::getIsdeleted,Constants.ZERO)
                .like(News::getCreateDate, DateUtil.getDateLong(new Date()))
                .eq(News::getType,Constants.ONE)
                .eq(News::getType,Constants.ZERO)
        ));
        dailyUpdatesResponse.setShareNum(
                actionsMapper.selectCount(new QueryWrapper<Actions>())
        );
        dailyUpdatesResponse.setNewsList(
                this.getCustomizedNewsList(Constants.ZERO,Constants.THREE,fileType)
                this.getCustomizedNewsList(Constants.ZERO,Constants.THREE,Constants.ZERO)
        );
        return dailyUpdatesResponse;
    }
server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -296,6 +296,7 @@
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "分类数据 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getCatalogList")
@@ -304,13 +305,14 @@
    })
    public ApiResponse<List<ZTCatalogInfoResponse>> getCatalogList (@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
        ztCatalogListRequest.setUserId(getMemberId()+"");
        ztCatalogListRequest.setUserType(ZTConstants.CUSTOMER);
        ztCatalogListRequest.setUserType(getUserType());
        List<ZTCatalogInfoResponse> ztCatalogInfoResponseList = getZhongTaiDataService.getCatalogList(ztCatalogListRequest);
        return ApiResponse.success("查询成功",ztCatalogInfoResponseList);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "标签数据 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getCataLogTagList")
@@ -319,7 +321,7 @@
    })
    public ApiResponse<List<ZTTagInfoResponse>> getCataLogTagList(@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
        ztCatalogListRequest.setUserId(getMemberId()+"");
        ztCatalogListRequest.setUserType(ZTConstants.CUSTOMER);
        ztCatalogListRequest.setUserType(getUserType());
        List<ZTTagInfoResponse> ztTagInfoResponseList = getZhongTaiDataService.getCataLogTagList(ztCatalogListRequest);
        return ApiResponse.success("查询成功",ztTagInfoResponseList);
    }
@@ -335,7 +337,7 @@
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "actionType", value = "行为类型:收藏:collect;取消收藏:collect_cancel;喜欢:like;取消喜欢:like_cancel;浏览:view;分享:share;下载:download", required = true),
    })
    public ApiResponse actionDo(@RequestParam String id,@RequestParam String actionType) {
        getZhongTaiDataService.actionDo(getMemberId(),ZTConstants.CUSTOMER,id,actionType);
        getZhongTaiDataService.actionDo(getMemberId(),getUserType(),id,actionType);
        return ApiResponse.success("操作成功");
    }
@@ -381,7 +383,7 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTCusFavoritesInfoResponse>> getZhongTaiCusFavorite(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTCusFavoritesInfoResponse> ztBasePageResponse = getZhongTaiDataService.getZhongTaiCusFavorite(ztContentListRequest);
        return ApiResponse.success("获取成功",ztBasePageResponse);
    }
@@ -396,13 +398,14 @@
    })
    public ApiResponse<List<ZTCusCarouselImageResponse>> getZhongTaiCarouselImage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        List<ZTCusCarouselImageResponse> ztCusCarouselImageResponseList = getZhongTaiDataService.getZhongTaiCarouselImage(ztContentListRequest);
        return ApiResponse.success("获取成功",ztCusCarouselImageResponseList);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "轮播图详情", notes = "客户端小程序")
    @PostMapping("/getZhongTaiCarouselImageDetail")
@@ -411,12 +414,13 @@
    })
    public ApiResponse<ZTCusCarouselImageResponse> getZhongTaiCarouselImageDetail(@RequestBody ZTDataDetailRequest ztDataDetailRequest) {
        ztDataDetailRequest.setUserId(getMemberId()+"");
        ztDataDetailRequest.setUserType(ZTConstants.CUSTOMER);
        ztDataDetailRequest.setUserType(getUserType());
        ZTCusCarouselImageResponse ztCusCarouselImageResponse = getZhongTaiDataService.getZhongTaiCarouselImageDetail(ztDataDetailRequest);
        return ApiResponse.success("获取成功",ztCusCarouselImageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "咨询分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiProductNewsPage")
@@ -425,12 +429,13 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTProductNewsInfoResponse>> getZhongTaiProductNewsPage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTProductNewsInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiProductNewsPage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "产品分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiProductPage")
@@ -439,11 +444,13 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTProductInfoResponse>> getZhongTaiProductPage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTProductInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiProductPage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "实景分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiRealcasePage")
@@ -452,11 +459,13 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTRealcaseInfoResponse>> getZhongTaiRealcasePage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTRealcaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiRealcasePage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "视频分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiVideoPage")
@@ -465,11 +474,13 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTVideoInfoResponse>> getZhongTaiVideoPage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTVideoInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiVideoPage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "全屋案例分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiWholecasePage")
@@ -478,11 +489,13 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTCaseInfoResponse>> getZhongTaiWholecasePage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTCaseInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiWholecasePage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "志说装修分页列表 - ä¸­å°", notes = "客户端小程序")
    @PostMapping("/getZhongTaiZbDecoPage")
@@ -491,12 +504,14 @@
    })
    public ApiResponse<ZTBasePageResponse<ZTZbDecoInfoResponse>> getZhongTaiZbDecoPage(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(ZTConstants.CUSTOMER);
        ztContentListRequest.setUserType(getUserType());
        ZTBasePageResponse<ZTZbDecoInfoResponse>  ztBasePageResponse= getZhongTaiDataService.getZhongTaiZbDecoPage(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "全屋案例详情 - ä¸­å°", notes = "客户端小程序")
    @GetMapping("/getWholecaseInfo")
@@ -505,11 +520,13 @@
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse<ZTCaseInfoResponse> getWholecaseInfo(@RequestParam String id) {
        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,ZTConstants.CUSTOMER,getMemberId());
        ZTCaseInfoResponse ztCaseInfoResponse= getZhongTaiDataService.getWholecaseInfo(id,getUserType(),getMemberId());
        return ApiResponse.success("查询成功",ztCaseInfoResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @GetMapping("/getProductNewsInfo")
    @ApiOperation(value = "产品资讯详情 - ä¸­å°", notes = "客户端小程序")
@@ -518,12 +535,14 @@
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse<ZTProductNewsInfoResponse> getProductNewsInfo(@RequestParam String id) {
        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,ZTConstants.CUSTOMER,getMemberId());
        ZTProductNewsInfoResponse ztProductNewsInfoResponse= getZhongTaiDataService.getProductNewsInfo(id,getUserType(),getMemberId());
        return ApiResponse.success("查询成功",ztProductNewsInfoResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "实景案例 - ä¸­å°", notes = "客户端小程序")
    @GetMapping("/getRealcaseInfo")
@@ -532,12 +551,14 @@
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse<ZTRealcaseInfoResponse> getRealcaseInfo(@RequestParam String id) {
        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,ZTConstants.CUSTOMER,getMemberId());
        ZTRealcaseInfoResponse ztRealcaseInfoResponse= getZhongTaiDataService.getRealcaseInfo(id,getUserType(),getMemberId());
        return ApiResponse.success("查询成功",ztRealcaseInfoResponse);
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "产品详情 - ä¸­å°", notes = "客户端小程序")
    @GetMapping("/getProductInfo")
server/web/src/main/java/com/doumee/api/web/CustomerManageApi.java
@@ -69,11 +69,10 @@
    @ApiOperation(value = "【B端小程序】每日上新数据")
    @GetMapping("/getDailyUpdates")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "fileType", value = "附件类型 0图片 1视频", required = false)
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<DailyUpdatesResponse> getDailyUpdates(Integer fileType) {
        return  ApiResponse.success(newsService.getDailyUpdatesResponse(fileType));
    public ApiResponse<DailyUpdatesResponse> getDailyUpdates() {
        return  ApiResponse.success(newsService.getDailyUpdatesResponse());
    }
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
@@ -4,10 +4,7 @@
import com.doumee.biz.zbom.model.crm.CrmCustomerListRequest;
import com.doumee.biz.zbom.model.crm.response.CRMBaseResponse;
import com.doumee.biz.zbom.model.crm.response.CRMCustomerListResponse;
import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst;
import com.doumee.biz.zbom.model.zhongtai.ZTCatalogListRequest;
import com.doumee.biz.zbom.model.zhongtai.ZTConstants;
import com.doumee.biz.zbom.model.zhongtai.ZTContentListRequest;
import com.doumee.biz.zbom.model.zhongtai.*;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.config.annotation.LoginRequired;
import com.doumee.config.annotation.UserLoginRequired;
@@ -200,6 +197,23 @@
        return  ApiResponse.success(getCrmDataService.getCrmCustomerList(crmCustomerListRequest));
    }
    @UserLoginRequired
    @LoginRequired
    @ApiOperation(value = "批量添加喜欢给客户", notes = "员工端小程序")
    @PostMapping("/batchAddLike")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse batchAddLike(@RequestBody ZTBatchAddListRequest ztBatchAddListRequest) {
        ztBatchAddListRequest.setUserType(getUserType());
        ztBatchAddListRequest.setUserId(getUserId().toString());
        getZhongTaiDataService.batchAddLike(ztBatchAddListRequest);
        return ApiResponse.success("操作成功");
    }
    @UserLoginRequired
    @ApiOperation(value = "用户注销", notes = "员工端小程序")
    @PostMapping("/logOff")
wechat_staff/api/index.js
@@ -263,6 +263,14 @@
    data
  })
}
// èŽ·å–å†…å®¹åˆ†äº«æµ·æŠ¥
export const getContentShareImg = (data) => {
  return request({
    url: '/web/personnel/getContentShareImg',
    method: 'POST',
    data
  })
}
// 0元定制信息
export const saveFreeCustomizationApply = (data) => {
  return request({
wechat_staff/components/detailFooter/index.js
@@ -1,10 +1,11 @@
// components/detailFooter/index.js
import { getContentShareImg } from '../../api/index'
Component({
  /**
   * ç»„件的属性列表
   */
  properties: {
    info: Object,
    path: String,
  },
  /**
@@ -21,6 +22,28 @@
    })
  },
  methods: {
    handleEnjoy() {
      const { info } = this.data
      this.triggerEvent('enjoy', {
        type: 'enjoy', flag: !info.isEnjoy
      })
    },
    handleCollec() {
      const { info } = this.data
      this.triggerEvent('enjoy', {
        type: 'collec', flag: !info.isCollection
      })
    },
    handleDown() {
      const { info, path } = this.data
      getContentShareImg({
        articleId: info.id,
        type: '1',
        pageUrl: path,
        imgurl: info.coverImage,
      })
    },
    openShare() {
      console.log('点击打开');
      this.setData({ showShare: true })
wechat_staff/components/detailFooter/index.wxml
@@ -2,15 +2,17 @@
  <view class="footer_wrap" style="padding-bottom: {{bottomLift}}px;">
    <view class="content">
      <view class="btns">
        <view class="item">
          <image src="../../static/icon/detail_nav_like_sel@2x.png"></image>
        <view bindtap="handleEnjoy" class="item">
          <image wx:if="{{ info.isEnjoy }}" src="../../static/icon/detail_nav_like_sel@2x.png"></image>
          <image wx:else src="../../static/icon/detail_nav_like@2x.png"></image>
          <text>喜欢</text>
        </view>
        <view class="item">
          <image src="../../static/icon/detail_nav_collected.png"></image>
        <view bindtap="handleCollec" class="item">
          <image wx:if="{{ info.isCollection }}" src="../../static/icon/detail_nav_collected.png"></image>
          <image wx:else src="../../static/icon/detail_nav_collect.png"></image>
          <text>收藏</text>
        </view>
        <view class="item">
        <view bindtap="handleDown" class="item">
          <image src="../../static/icon/detail_nav_download@2x.png"></image>
          <text>下载</text>
        </view>
@@ -19,7 +21,7 @@
    </view>
  </view>
  <!--  -->
  <view class="shade_modal" style="padding-bottom: {{bottomLift}}px;">
  <view wx:if="{{ showShare }}" class="shade_modal" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <button open-type="share" class="item" bindtap="handleShare">
        <image src="../../static/icon/wechat.png"></image>
@@ -32,5 +34,5 @@
    </view>
    <view bindtap="onClose" class="cancel">取消</view>
  </view>
  <view class="shade" bindtap="onClose"></view>
  <view wx:if="{{ showShare }}" class="shade" bindtap="onClose"></view>
</view>
wechat_staff/components/disCase/index.wxml
@@ -44,9 +44,9 @@
          <view class="content">
            <view class="name">{{ item.title }}</view>
            <view class="info">
              <image wx:if="{{ !item.collection }}" data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
              <image wx:if="{{ !item.isCollection }}" data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
              <image wx:else data-code="like_cancel" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
              <text class="num {{item.collection ? 'primary' : ''}}">{{ item.collectCount }}</text>
              <text class="num {{item.isCollection ? 'primary' : ''}}">{{ item.collectCount }}</text>
              <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
              <text>{{ item.viewCount }}</text>
            </view>
wechat_staff/components/disRealpic/index.wxml
@@ -51,9 +51,9 @@
            <view class="name">{{ item.title }}</view>
          </view>
          <view class="info">
            <image wx:if="{{ !item.collection }}" data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:if="{{ !item.isCollection }}" data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else data-code="like_cancel" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{item.collection ? 'primary' : ''}}">{{ item.collectCount }}</text>
            <text class="num {{item.isCollection ? 'primary' : ''}}">{{ item.collectCount }}</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>{{ item.viewCount }}</text>
          </view>
wechat_staff/pages/detailDis/case.js
@@ -56,7 +56,7 @@
      actionType,
      id: this.data.info.id
    }).then(res => {
      info.collection = !info.collection
      info.isCollection = !info.isCollection
      this.setData({info})
      wx.showToast({
        title: actionType == 'collect' ? '收藏成功' : '取消收藏',
wechat_staff/pages/detailDis/case.wxml
@@ -26,7 +26,7 @@
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <button class="item btn">
        <image data-code="collect_cancel" bindtap="handleAction" wx:if="{{ info.collection }}" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <image data-code="collect_cancel" bindtap="handleAction" wx:if="{{ info.isCollection }}" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <image wx:else data-code="collect" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </button>
wechat_staff/pages/detailDis/product.js
@@ -3,6 +3,7 @@
  getProductInfo,
  actionDo
} from '../../api/index'
import moment from "moment";
Page({
  /**
   * é¡µé¢çš„初始数据
@@ -33,6 +34,43 @@
      member
    })
  },
  //  ç»„件事件
  handleEnjoy(e) {
    const enjoyList = wx.getStorageSync('enjoyList') || []
    const { type, flag } = e.detail
    console.log('type', type);
    console.log('flag', flag);
    const info = this.data.info
    if(type == 'enjoy'){
      // ç‚¹å‡»äº†å–œæ¬¢
      const index = enjoyList.findIndex( i => i.id === info.id )
      if(index === -1){
        info.isEnjoy = true
        this.setData({ info })
        enjoyList.push({
          ...info,
          joinType: 'product',
          timestamp: new Date().getTime()
        })
      }else{
        info.isEnjoy = false
        this.setData({ info })
        enjoyList.splice(index, 1)
      }
      wx.setStorageSync('enjoyList', enjoyList)
    }else{
      actionDo({
        id: info.id,
        actionType: flag ? 'collect' : 'collect_cancel'
      }).then(res => {
        info.isCollection = flag
        wx.showToast({title: flag ? '收藏成功' : '取消收藏'})
        this.setData({
          info
        })
      })
    }
  },
  handleAction(e) {
    const actionType = e.currentTarget.dataset.code
    const {
@@ -42,7 +80,7 @@
      actionType,
      id: this.data.info.id
    }).then(res => {
      info.collection = !info.collection
      info.isCollection = !info.isCollection
      this.setData({
        info
      })
@@ -51,12 +89,20 @@
      })
    })
  },
  onShareAppMessage() {
    console.log('用户点击了分享');
  },
  getDetail(id) {
    const enjoyList = wx.getStorageSync('enjoyList') || []
    getProductInfo({
      id
    }).then(res => {
      const index = enjoyList.findIndex( i => i.id === res.data.id )
      this.setData({
        info: res.data
        info: {
          ...res.data,
          isEnjoy: index > -1
        }
      })
      wx.setNavigationBarTitle({
        title: res.data.title
wechat_staff/pages/detailDis/product.wxml
@@ -1,14 +1,6 @@
<view class="main_app">
  <buoyClient showPurpose="1" />
  <detailFooter />
  <view class="user" wx:if="{{ false }}">
    <view class="avatar"></view>
    <view class="content">
      <view class="name">丁梓林</view>
      <view class="desc">导购|5年经验</view>
    </view>
    <view class="btn">联系TA</view>
  </view>
  <detailFooter bindenjoy="handleEnjoy" path="/pages/detailDis/product" info="{{info}}" />
  <!-- banner轮播 -->
  <swiper class="banner_swiper" circular indicator-dots autoplay style="height:{{bannerHeight}}rpx" duration>
    <block wx:for="{{ info.bannerImgList }}">
@@ -38,7 +30,7 @@
    </view>
  </view>
  <!-- å¯Œæ–‡æœ¬ -->
  <view>
  <view wx:if="{{info.content}}">
    <mp-html content="{{info.content}}"></mp-html>
  </view>
  <view class="spaceList">
wechat_staff/pages/detailDis/realpic.js
@@ -35,7 +35,7 @@
      actionType,
      id: this.data.info.id
    }).then(res => {
      info.collection = !info.collection
      info.isCollection = !info.isCollection
      wx.showToast({
        title: actionType == 'collect' ? '收藏成功' : '取消收藏',
      })
wechat_staff/pages/detailDis/realpic.wxml
@@ -14,7 +14,7 @@
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <button class="item btn">
        <image data-code="collect_cancel" bindtap="handleAction" wx:if="{{ info.collection }}" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <image data-code="collect_cancel" bindtap="handleAction" wx:if="{{ info.isCollection }}" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <image wx:else data-code="collect" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </button>
wechat_staff/pages/kefu/fond.js
@@ -1,11 +1,12 @@
// pages/kefu/fond.js
import moment from "moment";
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    enjoyList: []
  },
  /**
@@ -16,11 +17,35 @@
    this.setData({
      bottomLift: app.bottomLift
    })
    this.initData()
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  initData() {
    let temp = []
    let enjoyList = wx.getStorageSync('enjoyList') || []
    enjoyList = enjoyList.sort((a,b)=>{
      return b.timestamp - a.timestamp
    })
    enjoyList.forEach(item  => {
      item.joinDate = moment(item.timestamp).format('YYYYå¹´MM月DD日')
      item.joinTime = moment(item.timestamp).format('HH:mm')
      item.checked = false
      const index = temp.findIndex( i => i.joinDate === item.joinDate )
      if(index === -1){
        temp.push({
          joinDate: item.joinDate,
          list: [item]
        })
      }else{
        temp[index].list.push(item)
      }
    });
    this.setData({ enjoyList: temp })
    console.log('enjoyList', temp);
  },
  onReady() {
  },
wechat_staff/pages/kefu/fond.less
@@ -50,7 +50,6 @@
      border-radius: 8rpx;
      margin-left: 26rpx;
      margin-right: 20rpx;
      border: 1px solid;
    }
  }
}
wechat_staff/pages/kefu/fond.wxml
@@ -1,14 +1,14 @@
<view class="container">
  <view class="date_item">
    <view class="date">2024å¹´07月10日</view>
  <view wx:for="{{ enjoyList }}" wx:for-item="day" class="date_item">
    <view class="date">{{ day.joinDate }}</view>
    <view class="list">
      <view class="line">
        <image class="icon" src="../../static/icon/ic_select_sel@2x.png" mode="widthFix"></image>
        <image class="icon" src="../../static/icon/ic_select@2x.png" mode="widthFix"></image>
        <image class="img" src=""></image>
      <view class="line" wx:for="{{ day.list }}" wx:for-item="item">
        <image wx:if="{{ item.check }}" class="icon" src="../../static/icon/ic_select_sel@2x.png" mode="widthFix"></image>
        <image wx:else class="icon" src="../../static/icon/ic_select@2x.png" mode="widthFix"></image>
        <image class="img" src="{{ item.coverImage }}" mode="aspectFill"></image>
        <view class="content">
          <view class="name">简约轻奢|万科公园里,已光为媒简约轻奢|万科公园里,已光为媒简约轻奢|万科公园里,已光为媒</view>
          <view class="time">18:00</view>
          <view class="name">{{ item.title }}</view>
          <view class="time">{{ item.joinTime }}</view>
        </view>
      </view>
    </view>
wechat_staff/pages/kefu/fond.wxss
@@ -50,7 +50,6 @@
  border-radius: 8rpx;
  margin-left: 26rpx;
  margin-right: 20rpx;
  border: 1px solid;
}
.footer {
  position: fixed;
wechat_staff/project.private.config.json
@@ -31,8 +31,8 @@
        },
        {
          "name": "",
          "pathName": "pages/promotion/index",
          "query": "",
          "pathName": "pages/detailDis/product",
          "query": "id=1813372914895843329",
          "launchMode": "default",
          "scene": null
        },
@@ -42,6 +42,13 @@
          "query": "",
          "launchMode": "default",
          "scene": null
        },
        {
          "name": "",
          "pathName": "pages/kefu/fond",
          "query": "",
          "launchMode": "default",
          "scene": null
        }
      ]
    }
wechat_staff/utils/config.js
@@ -1,7 +1,7 @@
// export const baseUrl = 'http://192.168.0.135:10027'
export const baseUrl = 'https://dmtest.ahapp.net/web_interface' // æœ¬åœ°
export const baseUrl = 'http://192.168.0.135:10027'
// export const baseUrl = 'https://dmtest.ahapp.net/web_interface' // æœ¬åœ°
// export const baseUrl = 'http://zbtest.ahapp.net/zbom_interface/jx/wechat/' //测试服务器
// export const imageUrl = 'https://osswebcdn.zbom.com/jiaxuan/images/'