From 6edd7a00d2f8046cc3ff2d2bea03369c576d2272 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 14 Sep 2020 17:14:56 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/AuthorizationInfoDTO.java | 5 + .../com/epmet/dto/PersonalTemplateDTO.java | 126 +++++ .../java/com/epmet/dto/PublicTemplateDTO.java | 91 ++++ .../epmet/dto/form/AddTemplateFormDTO.java | 51 ++ .../epmet/dto/form/DelTemplateFormDTO.java | 17 + .../java/com/epmet/dto/form/InitFormDTO.java | 39 ++ .../epmet/dto/form/PubTemplateFormDTO.java | 26 + .../com/epmet/dto/form/SubscribeFormDTO.java | 19 + .../dto/result/CustomerTempResultDTO.java | 18 + .../dto/result/GetTemplateResultDTO.java | 47 ++ .../epmet/dto/result/KeyWordsResultDTO.java | 34 ++ .../dto/result/PubTemplateResultDTO.java | 39 ++ .../result/SubscribeCategoryResultDTO.java | 17 + .../com/epmet/dto/result/TemplateDTO.java | 27 ++ .../epmet/controller/SubscribeController.java | 149 ++++++ .../com/epmet/dao/AuthorizationInfoDao.java | 9 + .../java/com/epmet/dao/PaCustomerDao.java | 9 + .../com/epmet/dao/PersonalTemplateDao.java | 79 ++++ .../java/com/epmet/dao/PublicTemplateDao.java | 56 +++ .../epmet/entity/PersonalTemplateEntity.java | 96 ++++ .../epmet/entity/PublicTemplateEntity.java | 61 +++ .../com/epmet/service/PaCustomerService.java | 9 + .../service/PersonalTemplateService.java | 126 +++++ .../epmet/service/PublicTemplateService.java | 115 +++++ .../com/epmet/service/SubscribeService.java | 105 +++++ .../service/impl/PaCustomerServiceImpl.java | 5 + .../impl/PersonalTemplateServiceImpl.java | 119 +++++ .../impl/PublicTemplateServiceImpl.java | 112 +++++ .../service/impl/SubscribeServiceImpl.java | 445 ++++++++++++++++++ .../wxapi/constant/WxSubscribeConstant.java | 38 ++ .../epmet/wxapi/enums/WxMaErrorMsgEnum.java | 20 + .../epmet/wxapi/param/WxAddTemplateReq.java | 31 ++ .../epmet/wxapi/param/WxDelTemplateReq.java | 22 + .../epmet/wxapi/param/WxSubTemplateReq.java | 30 ++ .../wxapi/result/WxGetCategoryResult.java | 41 ++ .../wxapi/result/WxGetTemplateResult.java | 56 +++ .../epmet/wxapi/result/WxKeyWordsResult.java | 52 ++ .../wxapi/result/WxSubTemplateResult.java | 56 +++ .../wxapi/service/WxMaSubscribeService.java | 78 +++ .../impl/WxMaSubscribeServiceImpl.java | 146 ++++++ .../db/migration/V0.0.10__thirdUpdate.sql | 36 ++ .../resources/mapper/AuthorizationInfoDao.xml | 11 + .../main/resources/mapper/PaCustomerDao.xml | 12 + .../resources/mapper/PersonalTemplateDao.xml | 78 +++ .../resources/mapper/PublicTemplateDao.xml | 41 ++ 45 files changed, 2799 insertions(+) create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PersonalTemplateDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PublicTemplateDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelTemplateFormDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PubTemplateFormDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubscribeFormDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerTempResultDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/GetTemplateResultDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/KeyWordsResultDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PubTemplateResultDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SubscribeCategoryResultDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PublicTemplateDao.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PersonalTemplateEntity.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PublicTemplateEntity.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PublicTemplateService.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PublicTemplateServiceImpl.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxSubscribeConstant.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddTemplateReq.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelTemplateReq.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxSubTemplateReq.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetCategoryResult.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetTemplateResult.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxKeyWordsResult.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxSubTemplateResult.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSubscribeService.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSubscribeServiceImpl.java create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.10__thirdUpdate.sql create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml create mode 100644 epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PublicTemplateDao.xml diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java index 394b8680bc..e540f690d7 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java @@ -63,6 +63,11 @@ public class AuthorizationInfoDTO implements Serializable { */ private String authorizerRefreshToken; + /** + * 客户端类型 resi:居民端,work:工作端 + */ + private String clientType; + /** * */ diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PersonalTemplateDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PersonalTemplateDTO.java new file mode 100644 index 0000000000..574f772896 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PersonalTemplateDTO.java @@ -0,0 +1,126 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-09 + */ +@Data +public class PersonalTemplateDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 小程序类型 居民端resi,工作端work + */ + private String clientType; + + /** + * APPID + */ + private String appId; + + /** + * 主模板ID + */ + private String pid; + + /** + * 添加至帐号下的模板id + */ + private String priTmplId; + + /** + * 模板类型,2 代表一次性订阅,3 代表长期订阅 + */ + private String type; + + /** + * 模板ID + */ + private String tid; + + /** + * 模板标题 + */ + private String title; + + /** + * 关键词ID + */ + private String keyIds; + + /** + * 关键词 + */ + private String keyWords; + + /** + * 服务场景描述,15个字以内 + */ + private String sceneDesc; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 是否删除 + */ + private String delFlag; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PublicTemplateDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PublicTemplateDTO.java new file mode 100644 index 0000000000..b4c8b1d7f7 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PublicTemplateDTO.java @@ -0,0 +1,91 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-11 + */ +@Data +public class PublicTemplateDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + private String id; + + /** + * + */ + private String tid; + + /** + * + */ + private String title; + + /** + * + */ + private String type; + + /** + * + */ + private String categoryId; + + /** + * + */ + private Integer revision; + + /** + * + */ + private String delFlag; + + /** + * + */ + private String createdBy; + + /** + * + */ + private Date createdTime; + + /** + * + */ + private String updatedBy; + + /** + * + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java new file mode 100644 index 0000000000..edb391eb73 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AddTemplateFormDTO.java @@ -0,0 +1,51 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:20 + */ +@NoArgsConstructor +@Data +public class AddTemplateFormDTO implements Serializable { + + private static final long serialVersionUID = 8721859887464107897L; + /** + * appId + */ + private String appId; + /** + * 公共模板标题 id + */ + private String tid; + /** + * 公共模板标题 + */ + private String title; + /** + * 服务场景描述,15个字以内 + */ + private String sceneDesc; + /** + * 工作端(gov),居民端(resi) + */ + private String clientType; + /** + * 模板类型,2 代表一次性订阅,3 代表长期订阅 + */ + private String type; + /** + * 关键词id,最多支持5个,最少2个关键词组合 + */ + private List kidList; + /** + * 关键字名称 + */ + private List nameList; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelTemplateFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelTemplateFormDTO.java new file mode 100644 index 0000000000..e3cc9b4e48 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/DelTemplateFormDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:23 + */ +@Data +public class DelTemplateFormDTO implements Serializable { + private static final long serialVersionUID = -3468604475671634840L; + private String appId; + private String priTmplId; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java new file mode 100644 index 0000000000..ab154a196a --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/InitFormDTO.java @@ -0,0 +1,39 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/10 16:22 + */ +@NoArgsConstructor +@Data +public class InitFormDTO implements Serializable { + + private static final long serialVersionUID = -7120483520014483199L; + /** + * 客户ID + */ + private String customerId; + /** + * 居民端测试号AppID + */ + private String resiAppId; + /** + * 工作端测试号AppID + */ + private String workAppId; + /** + * 居民端需要同步的模板id数组 + */ + private List resiTempIdList; + /** + * 工作端需要同步的模板id数组 + */ + private List workTempIdList; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PubTemplateFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PubTemplateFormDTO.java new file mode 100644 index 0000000000..c0431067b4 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PubTemplateFormDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:58 + */ +@NoArgsConstructor +@Data +public class PubTemplateFormDTO implements Serializable { + + private static final long serialVersionUID = 9023183147998651076L; + private String appId; + /** + * 类目 id,多个用逗号隔开 + */ + private String ids; + private String title; + private Integer pageNo; + private Integer pageSize; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubscribeFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubscribeFormDTO.java new file mode 100644 index 0000000000..574f64689f --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubscribeFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:19 + */ +@NoArgsConstructor +@Data +public class SubscribeFormDTO implements Serializable { + private static final long serialVersionUID = -4637357527979131441L; + private String appId; + private String titleId; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerTempResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerTempResultDTO.java new file mode 100644 index 0000000000..d75387bfb6 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerTempResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/11 14:02 + */ +@NoArgsConstructor +@Data +public class CustomerTempResultDTO { + private List workList; + private List resiList; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/GetTemplateResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/GetTemplateResultDTO.java new file mode 100644 index 0000000000..fca432b8b7 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/GetTemplateResultDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:36 + */ +@NoArgsConstructor +@Data +public class GetTemplateResultDTO implements Serializable { + + private static final long serialVersionUID = -3558254681242362668L; + /** + * 添加至帐号下的模板 id,发送小程序订阅消息时所需 + */ + private String priTmplId; + /** + * 模板标题 + */ + private String title; + /** + * 模板内容 + */ + private String content; + /** + * 模板内容示例 + */ + private String example; + /** + * 模板类型,2 代表一次性订阅,3 代表长期订阅 + */ + private String type; + /** + * 关键词名称,逗号隔开 + */ + private String kidNames; + + /** + * 场景说明 + */ + private String sceneDesc; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/KeyWordsResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/KeyWordsResultDTO.java new file mode 100644 index 0000000000..7291a415c0 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/KeyWordsResultDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:34 + */ +@NoArgsConstructor +@Data +public class KeyWordsResultDTO implements Serializable { + + private static final long serialVersionUID = 3082505411447366845L; + /** + * 关键词 id + */ + private Integer kid; + /** + * 关键词内容 + */ + private String name; + /** + * 关键词内容对应的示例 + */ + private String example; + /** + * 参数类型 + */ + private String rule; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PubTemplateResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PubTemplateResultDTO.java new file mode 100644 index 0000000000..ae28b3bfb0 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PubTemplateResultDTO.java @@ -0,0 +1,39 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:27 + */ +@NoArgsConstructor +@Data +public class PubTemplateResultDTO implements Serializable { + + private static final long serialVersionUID = -1563615907119995448L; + /** + * 模板标题 id + */ + private Integer tid; + /** + * 模板标题 + */ + private String title; + /** + * 模板类型,2 为一次性订阅,3 为长期订阅 + */ + private Integer type; + /** + * 模板所属类目 id + */ + private String categoryId; + /** + * 关键词 + */ + private List keywords; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SubscribeCategoryResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SubscribeCategoryResultDTO.java new file mode 100644 index 0000000000..057394c552 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/SubscribeCategoryResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 14:25 + */ +@Data +public class SubscribeCategoryResultDTO implements Serializable { + private static final long serialVersionUID = -2539495405169212998L; + private Integer id; + private String name; +} diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java new file mode 100644 index 0000000000..b9c43fb0d3 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/11 14:38 + */ +@Data +public class TemplateDTO implements Serializable { + private static final long serialVersionUID = 1709155656984339643L; + /** + * 模板ID + */ + private String priTmplId; + /** + * 标题 + */ + private String title; + /** + * 同步状态 0未同步 1同步 + */ + private String state; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java new file mode 100644 index 0000000000..47d3b6d653 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SubscribeController.java @@ -0,0 +1,149 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.*; +import com.epmet.dto.result.CustomerTempResultDTO; +import com.epmet.dto.result.GetTemplateResultDTO; +import com.epmet.dto.result.KeyWordsResultDTO; +import com.epmet.dto.result.SubscribeCategoryResultDTO; +import com.epmet.service.SubscribeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/10 13:44 + */ +@RestController +@RequestMapping("subscribe") +public class SubscribeController { + + @Autowired + private SubscribeService subscribeService; + + /** + * 获取当前帐号所设置的类目信息 + * + * @param formDTO + * @return com.epmet.dto.result.SubscribeCategoryResultDTO + * @author zhaoqifeng + * @date 2020/9/9 14:57 + */ + @PostMapping("getcategory") + public Result> getCategory(@RequestBody SubscribeFormDTO formDTO) { + List result = subscribeService.getCategory(formDTO); + return new Result>().ok(result); + } + + + /** + * 获取模板标题列表 + * + * @param formDTO + * @return com.epmet.dto.result.PubTemplateResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:00 + */ + @PostMapping("getpubtemplatetitles") + public Result getPubTemplateTitles(@RequestBody PubTemplateFormDTO formDTO) { + PageData result = subscribeService.getPubTemplateTitles(formDTO); + return new Result().ok(result); + } + + /** + * 同步微信公共模板 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2020/9/11 16:11 + */ + @PostMapping("syncpubtemplatetitles") + public Result syncPubTemplateTitles(@RequestBody PubTemplateFormDTO formDTO) { + subscribeService.syncPubTemplateTitles(formDTO); + return new Result(); + } + + /** + * 获取模板标题下的关键词库 + * + * @param formDTO + * @return com.epmet.dto.result.KeyWordsResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:10 + */ + @PostMapping("getkeywords") + public Result> getKeyWords(@RequestBody SubscribeFormDTO formDTO) { + List result = subscribeService.getKeyWords(formDTO); + return new Result>().ok(result); + } + + /** + * 获取帐号下的模板列表 + * + * @param formDTO + * @return com.epmet.dto.result.GetTemplateResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:12 + */ + @PostMapping("gettemplate") + public Result> getTemplate(@RequestBody SubscribeFormDTO formDTO) { + List result = subscribeService.getTemplate(formDTO); + return new Result>().ok(result); + } + + /** + * 添加个人模板 + * + * @param formDTO + * @return void + * @author zhaoqifeng + * @date 2020/9/9 15:13 + */ + @PostMapping("addtemplate") + public Result addTemplate(@RequestBody AddTemplateFormDTO formDTO) { + subscribeService.addTemplate(formDTO); + return new Result(); + } + + /** + * 删除账号下模板 + * + * @param formDTO + * @return void + * @author zhaoqifeng + * @date 2020/9/9 15:13 + */ + @PostMapping("deltemplate") + public Result delTemplate(@RequestBody DelTemplateFormDTO formDTO) { + subscribeService.delTemplate(formDTO); + return new Result(); + } + + /** + * 客户初始化 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2020/9/11 9:25 + */ + @PostMapping("init") + public Result init(@RequestBody InitFormDTO formDTO) { + subscribeService.init(formDTO); + return new Result(); + } + + @PostMapping("getcustomerlist") + public Result getCustomerTemplate(@RequestBody InitFormDTO formDTO) { + CustomerTempResultDTO result = subscribeService.getCustomerTemplate(formDTO); + return new Result().ok(result); + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java index 882a091b1b..ccd9802432 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java @@ -118,4 +118,13 @@ public interface AuthorizationInfoDao extends BaseDao { * @date 2020.08.25 15:24 **/ List selectClientToken(@Param("customerId") String customerId); + + /** + * 根据APPID获取auth信息 + * @author zhaoqifeng + * @date 2020/9/9 15:23 + * @param appId + * @return com.epmet.dto.AuthorizationInfoDTO + */ + AuthorizationInfoDTO selectInfoByAppId(@Param("appId") String appId); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java index 573ad48cf3..ac24fb4ac2 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java @@ -120,4 +120,13 @@ public interface PaCustomerDao extends BaseDao { * @date 2020.08.26 10:59 **/ String selectSourceById(@Param("customerId") String customerId,@Param("source") String source); + + /** + * 根据测试号查询同源的客户列表 + * @author zhaoqifeng + * @date 2020/9/9 17:23 + * @param customerId + * @return java.util.List + */ + List selectCustomerListByTestId(@Param("customerId") String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java new file mode 100644 index 0000000000..bd77f6ffea --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java @@ -0,0 +1,79 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.PersonalTemplateDTO; +import com.epmet.dto.result.CustomerTempResultDTO; +import com.epmet.dto.result.TemplateDTO; +import com.epmet.entity.PersonalTemplateEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-09 + */ +@Mapper +public interface PersonalTemplateDao extends BaseDao { + /** + * 获取个人模板列表 + * + * @param pid + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/9 17:56 + */ + List selectListByPid(@Param("pid") String pid); + + /** + * 根据AppID获取模板列表 + * + * @param appId + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/10 10:49 + */ + List selectListByAppId(@Param("appId") String appId); + + /** + * 获取已配置的模板 + * + * @param customerId + * @param pid + * @return com.epmet.dto.PersonalTemplateDTO + * @author zhaoqifeng + * @date 2020/9/11 9:42 + */ + PersonalTemplateDTO selectSetTemp(@Param("customerId") String customerId, @Param("pid") String pid); + + /** + * 根据客户Id获取模板列表 + * + * @param appId + * @param customerId + * @param clientType + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/11 14:35 + */ + List selectListByCustomerId(@Param("appId") String appId, @Param("customerId") String customerId, + @Param("clientType") String clientType); +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PublicTemplateDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PublicTemplateDao.java new file mode 100644 index 0000000000..b51596e20e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PublicTemplateDao.java @@ -0,0 +1,56 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.PubTemplateFormDTO; +import com.epmet.dto.result.PubTemplateResultDTO; +import com.epmet.entity.PublicTemplateEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-11 + */ +@Mapper +public interface PublicTemplateDao extends BaseDao { + + /** + * 根据类目Id删除模板 + * @author zhaoqifeng + * @date 2020/9/11 16:22 + * @param list + * @return void + */ + void deleteTempByCategoryId(List list); + + /** + * 获取公共模板列表 + * @author zhaoqifeng + * @date 2020/9/11 16:57 + * @param dto + * @return java.util.List + */ + List getPubTempList(PubTemplateFormDTO dto); + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PersonalTemplateEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PersonalTemplateEntity.java new file mode 100644 index 0000000000..022c2982a5 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PersonalTemplateEntity.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-09 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("personal_template") +public class PersonalTemplateEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 小程序类型 居民端resi,工作端work + */ + private String clientType; + + /** + * APPID + */ + private String appId; + + /** + * 主模板ID + */ + private String pid; + + /** + * 添加至帐号下的模板id + */ + private String priTmplId; + + /** + * 模板类型,2 代表一次性订阅,3 代表长期订阅 + */ + private String type; + + /** + * 模板ID + */ + private String tid; + + /** + * 模板标题 + */ + private String title; + + /** + * 关键词ID + */ + private String keyIds; + + /** + * 关键词 + */ + private String keyWords; + + /** + * 服务场景描述,15个字以内 + */ + private String sceneDesc; + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PublicTemplateEntity.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PublicTemplateEntity.java new file mode 100644 index 0000000000..62cac50b92 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PublicTemplateEntity.java @@ -0,0 +1,61 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-11 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("public_template") +public class PublicTemplateEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * + */ + private String tid; + + /** + * + */ + private String title; + + /** + * + */ + private String type; + + /** + * + */ + private String categoryId; + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java index a1b30bd255..ecdf6cfe25 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java @@ -233,4 +233,13 @@ public interface PaCustomerService extends BaseService { * @date 2020.08.25 15:46 **/ void clearPublicCustomer(CommonCustomerIdAndSrcFormDTO param); + + /** + * 根据测试号查询同源的客户列表 + * @author zhaoqifeng + * @date 2020/9/9 17:32 + * @param customerId + * @return java.util.List + */ + List getCustomerListByTestId(String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java new file mode 100644 index 0000000000..447e6dd388 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java @@ -0,0 +1,126 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.PersonalTemplateDTO; +import com.epmet.dto.result.TemplateDTO; +import com.epmet.entity.PersonalTemplateEntity; + +import java.util.List; +import java.util.Map; + +/** + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-09 + */ +public interface PersonalTemplateService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2020-09-09 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2020-09-09 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return PersonalTemplateDTO + * @author generator + * @date 2020-09-09 + */ + PersonalTemplateDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2020-09-09 + */ + void save(PersonalTemplateDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2020-09-09 + */ + void update(PersonalTemplateDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2020-09-09 + */ + void delete(String[] ids); + + /** + * 获取个人模板列表 + * + * @param pid + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/9 17:59 + */ + List getListByPid(String pid); + + /** + * 根据AppID获取模板列表 + * + * @param appId + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/10 10:48 + */ + List getListByAppId(String appId); + + /** + * 根据客户Id获取模板列表 + * + * @param appId + * @param customerId + * @param clientType + * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/11 14:43 + */ + List getListByCustomer(String appId, String customerId, String clientType); +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PublicTemplateService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PublicTemplateService.java new file mode 100644 index 0000000000..25ed0174ec --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PublicTemplateService.java @@ -0,0 +1,115 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.PublicTemplateDTO; +import com.epmet.dto.form.PubTemplateFormDTO; +import com.epmet.dto.result.PubTemplateResultDTO; +import com.epmet.entity.PublicTemplateEntity; + +import java.util.List; +import java.util.Map; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-11 + */ +public interface PublicTemplateService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2020-09-11 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2020-09-11 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return PublicTemplateDTO + * @author generator + * @date 2020-09-11 + */ + PublicTemplateDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2020-09-11 + */ + void save(PublicTemplateDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2020-09-11 + */ + void update(PublicTemplateDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2020-09-11 + */ + void delete(String[] ids); + + /** + * 根据类目Id删除模板 + * @author zhaoqifeng + * @date 2020/9/11 16:29 + * @param categoryIds + * @return void + */ + void deleteTempByCategoryId(List categoryIds); + + /** + * 获取公共模板列表 + * @author zhaoqifeng + * @date 2020/9/11 17:01 + * @param dto + * @return java.util.List + */ + List getPubTempList(PubTemplateFormDTO dto); +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java new file mode 100644 index 0000000000..c56d17487a --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SubscribeService.java @@ -0,0 +1,105 @@ +package com.epmet.service; + +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; + +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 11:02 + */ +public interface SubscribeService { + + /** + * 获取当前帐号所设置的类目信息 + * + * @param formDTO + * @return com.epmet.dto.result.SubscribeCategoryResultDTO + * @author zhaoqifeng + * @date 2020/9/9 14:57 + */ + List getCategory(SubscribeFormDTO formDTO); + + /** + * 获取模板标题列表 + * + * @param formDTO + * @return com.epmet.dto.result.PubTemplateResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:00 + */ + PageData getPubTemplateTitles(PubTemplateFormDTO formDTO); + + /** + * 同步微信公共模板 + * @author zhaoqifeng + * @date 2020/9/11 15:26 + * @param formDTO + * @return void + */ + void syncPubTemplateTitles(PubTemplateFormDTO formDTO); + + /** + * 获取模板标题下的关键词库 + * + * @param formDTO + * @return com.epmet.dto.result.KeyWordsResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:10 + */ + List getKeyWords(SubscribeFormDTO formDTO); + + /** + * 获取帐号下的模板列表 + * + * @param formDTO + * @return com.epmet.dto.result.GetTemplateResultDTO + * @author zhaoqifeng + * @date 2020/9/9 15:12 + */ + List getTemplate(SubscribeFormDTO formDTO); + + /** + * 添加个人模板 + * + * @param formDTO + * @return void + * @author zhaoqifeng + * @date 2020/9/9 15:13 + */ + void addTemplate(AddTemplateFormDTO formDTO); + + /** + * 删除账号下模板 + * + * @param formDTO + * @return void + * @author zhaoqifeng + * @date 2020/9/9 15:13 + */ + void delTemplate(DelTemplateFormDTO formDTO); + + /** + * 客户初始化 + * + * @param formDTO + * @return void + * @author zhaoqifeng + * @date 2020/9/10 16:25 + */ + void init(InitFormDTO formDTO); + + /** + * 获取客户模板列表 + * + * @param formDTO + * @return com.epmet.dto.result.CustomerTempResultDTO + * @author zhaoqifeng + * @date 2020/9/11 14:04 + */ + CustomerTempResultDTO getCustomerTemplate(InitFormDTO formDTO); + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java index 5b683027b5..11dd6bad81 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java @@ -697,4 +697,9 @@ public class PaCustomerServiceImpl extends BaseServiceImpl getCustomerListByTestId(String customerId) { + return baseDao.selectCustomerListByTestId(customerId); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java new file mode 100644 index 0000000000..f7b5589f43 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java @@ -0,0 +1,119 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.PersonalTemplateDao; +import com.epmet.dto.PersonalTemplateDTO; +import com.epmet.dto.result.TemplateDTO; +import com.epmet.entity.PersonalTemplateEntity; +import com.epmet.service.PersonalTemplateService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-09 + */ +@Service +public class PersonalTemplateServiceImpl extends BaseServiceImpl implements PersonalTemplateService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, PersonalTemplateDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, PersonalTemplateDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public PersonalTemplateDTO get(String id) { + PersonalTemplateEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, PersonalTemplateDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(PersonalTemplateDTO dto) { + PersonalTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PersonalTemplateEntity.class); + insert(entity); + //copy主键值到dto + BeanUtils.copyProperties(entity, dto); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(PersonalTemplateDTO dto) { + PersonalTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PersonalTemplateEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public List getListByPid(String pid) { + return baseDao.selectListByPid(pid); + } + + @Override + public List getListByAppId(String appId) { + return baseDao.selectListByAppId(appId); + } + + @Override + public List getListByCustomer(String appId, String customerId, String clientType) { + return baseDao.selectListByCustomerId(appId, customerId, clientType); + } + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PublicTemplateServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PublicTemplateServiceImpl.java new file mode 100644 index 0000000000..d59297f700 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PublicTemplateServiceImpl.java @@ -0,0 +1,112 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.PublicTemplateDao; +import com.epmet.dto.PublicTemplateDTO; +import com.epmet.dto.form.PubTemplateFormDTO; +import com.epmet.dto.result.PubTemplateResultDTO; +import com.epmet.entity.PublicTemplateEntity; +import com.epmet.service.PublicTemplateService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-11 + */ +@Service +public class PublicTemplateServiceImpl extends BaseServiceImpl implements PublicTemplateService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, PublicTemplateDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, PublicTemplateDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public PublicTemplateDTO get(String id) { + PublicTemplateEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, PublicTemplateDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(PublicTemplateDTO dto) { + PublicTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PublicTemplateEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(PublicTemplateDTO dto) { + PublicTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PublicTemplateEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public void deleteTempByCategoryId(List categoryIds) { + baseDao.deleteTempByCategoryId(categoryIds); + } + + @Override + public List getPubTempList(PubTemplateFormDTO formDTO) { + return baseDao.getPubTempList(formDTO); + } + +} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java new file mode 100644 index 0000000000..7443a16d90 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java @@ -0,0 +1,445 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.AuthorizationInfoDao; +import com.epmet.dto.AuthorizationInfoDTO; +import com.epmet.dto.PaCustomerDTO; +import com.epmet.dto.PersonalTemplateDTO; +import com.epmet.dto.PublicTemplateDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; +import com.epmet.entity.PublicTemplateEntity; +import com.epmet.service.PaCustomerService; +import com.epmet.service.PersonalTemplateService; +import com.epmet.service.PublicTemplateService; +import com.epmet.service.SubscribeService; +import com.epmet.wxapi.param.WxAddTemplateReq; +import com.epmet.wxapi.param.WxDelTemplateReq; +import com.epmet.wxapi.param.WxSubTemplateReq; +import com.epmet.wxapi.result.*; +import com.epmet.wxapi.service.WxMaSubscribeService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 11:02 + */ +@Slf4j +@Service +public class SubscribeServiceImpl implements SubscribeService { + @Autowired + private AuthorizationInfoDao authorizationInfoDao; + @Autowired + private WxMaSubscribeService wxMaSubscribeService; + @Autowired + private PersonalTemplateService personalTemplateService; + @Autowired + private PaCustomerService paCustomerService; + @Autowired + private PublicTemplateService publicTemplateService; + + + @Override + public List getCategory(SubscribeFormDTO formDTO) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId()); + WxGetCategoryResult wxResult = getCategoryResult(authInfo.getAuthorizerAccessToken()); + + List list = wxResult.getData().stream().map(category -> { + SubscribeCategoryResultDTO resultDTO = new SubscribeCategoryResultDTO(); + resultDTO.setId(category.getId()); + resultDTO.setName(category.getName()); + return resultDTO; + }).collect(Collectors.toList()); + + return list; + } + + @Override + public PageData getPubTemplateTitles(PubTemplateFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = publicTemplateService.getPubTempList(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + + @Override + public void syncPubTemplateTitles(PubTemplateFormDTO formDTO) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId()); + //获取类目ID + WxGetCategoryResult wxGetCategoryResult = getCategoryResult(authInfo.getAuthorizerAccessToken()); + List idList = wxGetCategoryResult.getData().stream().map(a -> a.getId().toString()).collect(Collectors.toList()); + publicTemplateService.deleteTempByCategoryId(idList); + String ids = String.join(",", idList); + WxSubTemplateReq request = new WxSubTemplateReq(); + request.setIds(ids); + request.setLimit(NumConstant.THIRTY); + request.setStart(NumConstant.ZERO); + WxResult wxResult = wxMaSubscribeService.getPubTemplateTitles(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + Integer total = wxResult.getData().getCount(); + List list = wxResult.getData().getData().stream().map(template -> { + PublicTemplateDTO dto = new PublicTemplateDTO(); + dto.setTid(template.getTid().toString()); + dto.setTitle(template.getTitle()); + dto.setCategoryId(template.getCategoryId()); + dto.setType(template.getType().toString()); + return dto; + }).collect(Collectors.toList()); + if (total > NumConstant.THIRTY) { + for (int i = NumConstant.THIRTY; i < total; i= i + NumConstant.THIRTY) { + request.setStart(i); + wxResult = wxMaSubscribeService.getPubTemplateTitles(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + List pubList = wxResult.getData().getData().stream().map(template -> { + PublicTemplateDTO dto = new PublicTemplateDTO(); + dto.setTid(template.getTid().toString()); + dto.setTitle(template.getTitle()); + dto.setCategoryId(template.getCategoryId()); + dto.setType(template.getType().toString()); + return dto; + }).collect(Collectors.toList()); + list.addAll(pubList); + } + } + publicTemplateService.insertBatch(ConvertUtils.sourceToTarget(list, PublicTemplateEntity.class)); + } + + @Override + public List getKeyWords(SubscribeFormDTO formDTO) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId()); + WxKeyWordsResult keyWordsResult = getTitleKeyWords(authInfo.getAuthorizerAccessToken(), formDTO.getTitleId()); + List list = keyWordsResult.getData().stream().map(keyWord -> { + KeyWordsResultDTO dto = new KeyWordsResultDTO(); + dto.setExample(keyWord.getExample()); + dto.setKid(keyWord.getKid()); + dto.setName(keyWord.getName()); + dto.setRule(keyWord.getRule()); + return dto; + }).collect(Collectors.toList()); + return list; + } + + @Override + public List getTemplate(SubscribeFormDTO formDTO) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId()); + List list = personalTemplateService.getListByAppId(formDTO.getAppId()); + WxResult wxResult = wxMaSubscribeService.getTemplate(authInfo.getAuthorizerAccessToken()); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + + List resultList = new ArrayList<>(); + if (null != list && list.size() > 0) { + resultList = + list.stream().flatMap(dto -> wxResult.getData().getData().stream().filter(bean -> + dto.getPriTmplId().equals(bean.getPriTmplId())).map(template -> { + GetTemplateResultDTO tempDTO = new GetTemplateResultDTO(); + tempDTO.setPriTmplId(dto.getPriTmplId()); + tempDTO.setTitle(dto.getTitle()); + tempDTO.setType(dto.getType()); + tempDTO.setKidNames(dto.getKeyWords()); + tempDTO.setSceneDesc(dto.getSceneDesc()); + tempDTO.setContent(template.getContent()); + tempDTO.setExample(template.getExample()); + return tempDTO; + })).collect(Collectors.toList()); + } + return resultList; + } + + @Override + public void addTemplate(AddTemplateFormDTO formDTO) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.selectInfoByAppId(formDTO.getAppId()); + WxAddTemplateReq request = new WxAddTemplateReq(); + request.setTid(formDTO.getTid()); + request.setKidList(formDTO.getKidList()); + request.setSceneDesc(formDTO.getSceneDesc()); + WxResult wxResult = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + String priTmplId = wxResult.getData(); + String keywords = String.join(",", formDTO.getNameList()); + List keyIdList = formDTO.getKidList().stream().map(Object::toString).collect(Collectors.toList()); + String keyIds = String.join(",", keyIdList); + //将公共模板存入数据库 + PersonalTemplateDTO personalTemplateDTO = new PersonalTemplateDTO(); + personalTemplateDTO.setCustomerId(authInfo.getCustomerId()); + personalTemplateDTO.setClientType(authInfo.getClientType()); + personalTemplateDTO.setAppId(formDTO.getAppId()); + personalTemplateDTO.setPid(priTmplId); + personalTemplateDTO.setPriTmplId(priTmplId); + personalTemplateDTO.setTid(formDTO.getTid()); + personalTemplateDTO.setKeyIds(keyIds); + personalTemplateDTO.setTitle(formDTO.getTitle()); + personalTemplateDTO.setSceneDesc(formDTO.getSceneDesc()); + personalTemplateDTO.setKeyWords(keywords); + personalTemplateDTO.setType(formDTO.getType()); + personalTemplateService.save(personalTemplateDTO); + //获取客户列表 + List customerList = paCustomerService.getCustomerListByTestId(authInfo.getCustomerId()); + List customerNames = new ArrayList<>(); + if (null != customerList && customerList.size() > NumConstant.ZERO) { + for (PaCustomerDTO paCustomerDTO : customerList) { + //获取小程序调用令牌 + AuthorizationInfoDTO authDTO = authorizationInfoDao.getAuthInfoByCustomer(paCustomerDTO.getId(), authInfo.getClientType()); + if (null == authDTO) { + log.error("客户[" + paCustomerDTO.getCustomerName() + "]未授权"); + customerNames.add(paCustomerDTO.getCustomerName()); + continue; + } + WxResult wxResult1 = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult1.success()) { + log.error("客户[" + paCustomerDTO.getCustomerName() + "]添加模板失败,原因:" + wxResult1.getErrorCode() + wxResult1.getErrorMsg()); + customerNames.add(paCustomerDTO.getCustomerName()); + continue; + } + String tmplId = wxResult1.getData(); + PersonalTemplateDTO templateDTO = new PersonalTemplateDTO(); + templateDTO.setCustomerId(authInfo.getCustomerId()); + templateDTO.setClientType(authInfo.getClientType()); + templateDTO.setAppId(authDTO.getAuthorizerAppid()); + templateDTO.setPid(priTmplId); + templateDTO.setPriTmplId(tmplId); + templateDTO.setTid(formDTO.getTid()); + templateDTO.setKeyIds(keyIds); + templateDTO.setTitle(formDTO.getTitle()); + templateDTO.setSceneDesc(formDTO.getSceneDesc()); + templateDTO.setKeyWords(keywords); + templateDTO.setType(formDTO.getType()); + personalTemplateService.save(templateDTO); + } + } + + if (customerNames.size() > NumConstant.ZERO) { + String names = String.join(",", customerNames); + throw new RenException("客户[" + names + "]添加模板失败"); + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delTemplate(DelTemplateFormDTO formDTO) { + List list = personalTemplateService.getListByPid(formDTO.getPriTmplId()); + for (PersonalTemplateDTO dto : list) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(dto.getCustomerId(), dto.getClientType()); + if (null == authInfo) { + log.error("客户[" + dto.getCustomerId() + "]未授权"); + continue; + } + WxDelTemplateReq request = new WxDelTemplateReq(); + request.setPriTmplId(dto.getPriTmplId()); + WxResult wxResult = wxMaSubscribeService.delTemplate(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + personalTemplateService.deleteById(dto.getId()); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void init(InitFormDTO formDTO) { + if (null != formDTO.getResiTempIdList() && !formDTO.getResiTempIdList().isEmpty()) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "resi"); + if (null == authInfo) { + throw new RenException("居民端未授权或token已过期"); + } + formDTO.getResiTempIdList().forEach(tempId -> { + PersonalTemplateDTO templateDTO = personalTemplateService.get(tempId); + List keyIds = Arrays.asList(templateDTO.getKeyIds().split(",")); + List keyIdList = keyIds.stream().map(Integer::parseInt).collect(Collectors.toList()); + WxAddTemplateReq request = new WxAddTemplateReq(); + request.setTid(templateDTO.getTid()); + request.setKidList(keyIdList); + request.setSceneDesc(templateDTO.getSceneDesc()); + WxResult wxResult = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + log.error("居民端添加模板失败,原因:" + wxResult.getErrorCode() + wxResult.getErrorMsg()); + return; + } + String tmplId = wxResult.getData(); + PersonalTemplateDTO personalTemplate = ConvertUtils.sourceToTarget(templateDTO, PersonalTemplateDTO.class); + personalTemplate.setPriTmplId(tmplId); + personalTemplate.setCustomerId(formDTO.getCustomerId()); + personalTemplate.setClientType("resi"); + personalTemplate.setAppId(authInfo.getAuthorizerAppid()); + personalTemplateService.save(personalTemplate); + }); + } + + if (null != formDTO.getWorkTempIdList() && !formDTO.getWorkTempIdList().isEmpty()) { + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "work"); + if (null == authInfo) { + throw new RenException("工作端未授权或token已过期"); + } + formDTO.getWorkTempIdList().forEach(tempId -> { + PersonalTemplateDTO templateDTO = personalTemplateService.get(tempId); + List keyIds = Arrays.asList(templateDTO.getKeyIds().split(",")); + List keyIdList = keyIds.stream().map(Integer::parseInt).collect(Collectors.toList()); + WxAddTemplateReq request = new WxAddTemplateReq(); + request.setTid(templateDTO.getTid()); + request.setKidList(keyIdList); + request.setSceneDesc(templateDTO.getSceneDesc()); + WxResult wxResult = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + log.error("工作端添加模板失败,原因:" + wxResult.getErrorCode() + wxResult.getErrorMsg()); + return; + } + String tmplId = wxResult.getData(); + PersonalTemplateDTO personalTemplate = ConvertUtils.sourceToTarget(templateDTO, PersonalTemplateDTO.class); + personalTemplate.setPriTmplId(tmplId); + personalTemplate.setCustomerId(formDTO.getCustomerId()); + personalTemplate.setClientType("resi"); + personalTemplate.setAppId(authInfo.getAuthorizerAppid()); + personalTemplateService.save(personalTemplate); + }); + } + + } + + @Override + public CustomerTempResultDTO getCustomerTemplate(InitFormDTO formDTO) { + CustomerTempResultDTO resultDTO = new CustomerTempResultDTO(); + AuthorizationInfoDTO resiAuthDTO = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "resi"); + if (null == resiAuthDTO) { + throw new RenException("居民端未授权"); + } + WxResult wxResiResult = wxMaSubscribeService.getTemplate(resiAuthDTO.getAuthorizerAccessToken()); + if (!wxResiResult.success()) { + throw new RenException(wxResiResult.getErrorCode(), wxResiResult.getErrorMsg()); + } + List resiPubTmplIds = + wxResiResult.getData().getData().stream().map(WxGetTemplateResult.DataBean::getPriTmplId).collect(Collectors.toList()); + List resiList = personalTemplateService.getListByCustomer(formDTO.getResiAppId(), formDTO.getCustomerId(), "resi"); + List resiTmplIds = resiList.stream().map(TemplateDTO::getPriTmplId).collect(Collectors.toList()); + List resiReduce = resiPubTmplIds.stream().filter(item -> !resiTmplIds.contains(item)).collect(Collectors.toList()); + resiReduce.forEach(tmplId -> { + WxDelTemplateReq request = new WxDelTemplateReq(); + request.setPriTmplId(tmplId); + WxResult wxResult = wxMaSubscribeService.delTemplate(resiAuthDTO.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + log.error("居民端同步失败:" + wxResult.getErrorCode() + wxResult.getErrorMsg()); + } + }); + resultDTO.setResiList(resiList); + + AuthorizationInfoDTO workAuthDTO = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "work"); + if (null == workAuthDTO) { + throw new RenException("工作端未授权"); + } + WxResult wxWorkResult = wxMaSubscribeService.getTemplate(workAuthDTO.getAuthorizerAccessToken()); + if (!wxWorkResult.success()) { + throw new RenException(wxWorkResult.getErrorCode(), wxWorkResult.getErrorMsg()); + } + List workPubTmplIds = + wxWorkResult.getData().getData().stream().map(WxGetTemplateResult.DataBean::getPriTmplId).collect(Collectors.toList()); + List workList = personalTemplateService.getListByCustomer(formDTO.getWorkAppId(), formDTO.getCustomerId(), "work"); + List workTmplIds = workList.stream().map(TemplateDTO::getPriTmplId).collect(Collectors.toList()); + List workReduce = workPubTmplIds.stream().filter(item -> !workTmplIds.contains(item)).collect(Collectors.toList()); + workReduce.forEach(tmplId -> { + WxDelTemplateReq request = new WxDelTemplateReq(); + request.setPriTmplId(tmplId); + WxResult wxResult = wxMaSubscribeService.delTemplate(resiAuthDTO.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + log.error("工作端同步失败:" + wxResult.getErrorCode() + wxResult.getErrorMsg()); + } + }); + resultDTO.setWorkList(workList); + return resultDTO; + } + + private WxGetCategoryResult getCategoryResult(String accessToken) { + WxResult wxResult = wxMaSubscribeService.getCategory(accessToken); + + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + return wxResult.getData(); + } + + private WxKeyWordsResult getTitleKeyWords(String accessToken, String tId) { + WxResult wxResult = wxMaSubscribeService.getPubTemplateKeywords(accessToken, tId); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + return wxResult.getData(); + } + + public void sync(InitFormDTO formDTO) { + AuthorizationInfoDTO resiAuthDTO = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "resi"); + if (null == resiAuthDTO) { + throw new RenException("居民端未授权"); + } + AuthorizationInfoDTO workAuthDTO = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), "work"); + if (null == workAuthDTO) { + throw new RenException("工作端未授权"); + } + //居民端初始化 + List resiList = personalTemplateService.getListByAppId(formDTO.getResiAppId()); + if (null != resiList && resiList.size() > 0) { + resiList.forEach(templateDTO -> { + List keyIds = Arrays.asList(templateDTO.getKeyIds().split(",")); + List keyIdList = keyIds.stream().map(Integer::parseInt).collect(Collectors.toList()); + WxAddTemplateReq request = new WxAddTemplateReq(); + request.setTid(templateDTO.getTid()); + request.setKidList(keyIdList); + request.setSceneDesc(templateDTO.getSceneDesc()); + WxResult wxResult = wxMaSubscribeService.addTemplate(resiAuthDTO.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + String tmplId = wxResult.getData(); + PersonalTemplateDTO personalTemplate = ConvertUtils.sourceToTarget(templateDTO, PersonalTemplateDTO.class); + personalTemplate.setPriTmplId(tmplId); + personalTemplate.setCustomerId(formDTO.getCustomerId()); + personalTemplate.setClientType("resi"); + personalTemplate.setAppId(resiAuthDTO.getAuthorizerAppid()); + personalTemplateService.save(personalTemplate); + }); + } + //工作端初始化 + List workList = personalTemplateService.getListByAppId(formDTO.getWorkAppId()); + if (null != workList && workList.size() > 0) { + workList.forEach(templateDTO -> { + List keyIds = Arrays.asList(templateDTO.getKeyIds().split(",")); + List keyIdList = keyIds.stream().map(Integer::parseInt).collect(Collectors.toList()); + WxAddTemplateReq request = new WxAddTemplateReq(); + request.setTid(templateDTO.getTid()); + request.setKidList(keyIdList); + request.setSceneDesc(templateDTO.getSceneDesc()); + WxResult wxResult = wxMaSubscribeService.addTemplate(workAuthDTO.getAuthorizerAccessToken(), request); + if (!wxResult.success()) { + throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); + } + String tmplId = wxResult.getData(); + PersonalTemplateDTO personalTemplate = ConvertUtils.sourceToTarget(templateDTO, PersonalTemplateDTO.class); + personalTemplate.setPriTmplId(tmplId); + personalTemplate.setCustomerId(formDTO.getCustomerId()); + personalTemplate.setClientType("work"); + personalTemplate.setAppId(workAuthDTO.getAuthorizerAppid()); + personalTemplateService.save(personalTemplate); + }); + } + } + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxSubscribeConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxSubscribeConstant.java new file mode 100644 index 0000000000..e0c27129b5 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxSubscribeConstant.java @@ -0,0 +1,38 @@ +package com.epmet.wxapi.constant; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 10:34 + */ +public interface WxSubscribeConstant { + /** + * 获取当前帐号所设置的类目信息 + */ + String GET_CATEGORY_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getcategory"; + + /** + * 获取模板标题列表 + */ + String GET_PUB_TEMPLATE_TITLES_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatetitles"; + + /** + * 获取模板标题下的关键词库 + */ + String GET_KEY_WORDS_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords"; + + /** + * 组合模板并添加到个人模板库 + */ + String ADD_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate"; + + /** + * 获取帐号下的模板列表 + */ + String GET_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate"; + + /** + * 删除帐号下的某个模板 + */ + String DEL_TEMPLATE_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate"; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/enums/WxMaErrorMsgEnum.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/enums/WxMaErrorMsgEnum.java index 23e1077e7c..29e341df7a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/enums/WxMaErrorMsgEnum.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/enums/WxMaErrorMsgEnum.java @@ -519,6 +519,26 @@ public enum WxMaErrorMsgEnum { CODE_43101(43101, "用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系"), CODE_47003(47003, "模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错"), + + CODE_200011(200011, "此账号已被封禁,无法操作"), + + CODE_200012(200012, "个人模板数已达上限,上限25个"), + + CODE_200013(200013, "此模板已被封禁,无法选用"), + + CODE_200014(200014, "模板 tid 参数错误"), + + CODE_200016(200016, "start 参数错误"), + + CODE_200017(200017, "limit 参数错误"), + + CODE_200018(200018, "类目 ids 缺失"), + + CODE_200019(200019, "类目 ids 不合法"), + + CODE_200020(200020, "关键词列表 kidList 参数错误"), + + CODE_200021(200021, "场景描述 sceneDesc 参数错误"), ; private int code; diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddTemplateReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddTemplateReq.java new file mode 100644 index 0000000000..ae083f7702 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddTemplateReq.java @@ -0,0 +1,31 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 9:33 + */ +@NoArgsConstructor +@Data +public class WxAddTemplateReq implements Serializable { + + private static final long serialVersionUID = -9163397048982502051L; + /** + * 模板标题 id + */ + private String tid; + /** + * 关键词id + */ + private String sceneDesc; + /** + * 服务场景描述,15个字以内 + */ + private List kidList; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelTemplateReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelTemplateReq.java new file mode 100644 index 0000000000..4bb8be5958 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelTemplateReq.java @@ -0,0 +1,22 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 9:43 + */ +@NoArgsConstructor +@Data +public class WxDelTemplateReq implements Serializable { + + private static final long serialVersionUID = 195634574947498628L; + /** + * 要删除的模板id + */ + private String priTmplId; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxSubTemplateReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxSubTemplateReq.java new file mode 100644 index 0000000000..48ac4c482e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxSubTemplateReq.java @@ -0,0 +1,30 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 16:30 + */ +@NoArgsConstructor +@Data +public class WxSubTemplateReq implements Serializable { + private static final long serialVersionUID = 4133480686759651875L; + + /** + * 类目 id,多个用逗号隔开 + */ + private String ids; + /** + * 用于分页,表示从 start 开始。从 0 开始计数 + */ + private Integer start; + /** + * 用于分页,表示拉取 limit 条记录。最大为 30 + */ + private Integer limit; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetCategoryResult.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetCategoryResult.java new file mode 100644 index 0000000000..085b9e3a1d --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetCategoryResult.java @@ -0,0 +1,41 @@ +package com.epmet.wxapi.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 16:03 + */ +@NoArgsConstructor +@Data +public class WxGetCategoryResult implements Serializable { + + private static final long serialVersionUID = 6785111976796640604L; + /** + * 错误码 + */ + private Integer errcode; + /** + * 错误信息 + */ + private String errmsg; + /** + * 类目列表 + */ + private List data; + + @NoArgsConstructor + @Data + public static class DataBean { + /** + * id : 616 + */ + private Integer id; + private String name; + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetTemplateResult.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetTemplateResult.java new file mode 100644 index 0000000000..c6a4101ea7 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetTemplateResult.java @@ -0,0 +1,56 @@ +package com.epmet.wxapi.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/9 9:36 + */ +@NoArgsConstructor +@Data +public class WxGetTemplateResult implements Serializable { + + private static final long serialVersionUID = 1796638032203448934L; + /** + * 错误码 + */ + private Integer errcode; + /** + * 错误信息 + */ + private String errmsg; + /** + * 个人模板列表 + */ + private List data; + + @NoArgsConstructor + @Data + public static class DataBean { + /** + * 添加至帐号下的模板 id + */ + private String priTmplId; + /** + * 模板标题 + */ + private String title; + /** + * 模板内容 + */ + private String content; + /** + * 模板内容示例 + */ + private String example; + /** + * 模板类型,2 代表一次性订阅,3 代表长期订阅 + */ + private Integer type; + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxKeyWordsResult.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxKeyWordsResult.java new file mode 100644 index 0000000000..fca92e0b42 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxKeyWordsResult.java @@ -0,0 +1,52 @@ +package com.epmet.wxapi.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 16:42 + */ +@NoArgsConstructor +@Data +public class WxKeyWordsResult implements Serializable { + + private static final long serialVersionUID = -7867379425609113193L; + /** + * 错误码 + */ + private Integer errcode; + /** + * 错误信息 + */ + private String errmsg; + /** + * 关键词列表 + */ + private List data; + + @NoArgsConstructor + @Data + public static class DataBean { + /** + * 关键词 id + */ + private Integer kid; + /** + * 关键词内容 + */ + private String name; + /** + * 关键词内容对应的示例 + */ + private String example; + /** + * 参数类型 + */ + private String rule; + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxSubTemplateResult.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxSubTemplateResult.java new file mode 100644 index 0000000000..db5989187e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxSubTemplateResult.java @@ -0,0 +1,56 @@ +package com.epmet.wxapi.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 16:12 + */ +@NoArgsConstructor +@Data +public class WxSubTemplateResult implements Serializable { + + private static final long serialVersionUID = 5581168509440371239L; + /** + * 错误码 + */ + private Integer errcode; + /** + * 错误信息 + */ + private String errmsg; + /** + * 列表总数 + */ + private Integer count; + /** + * 标题列表 + */ + private List data; + + @NoArgsConstructor + @Data + public static class DataBean { + /** + * 模板标题 id + */ + private Integer tid; + /** + * 模板标题 + */ + private String title; + /** + * 模板类型,2 为一次性订阅,3 为长期订阅 + */ + private Integer type; + /** + * 模板所属类目 id + */ + private String categoryId; + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSubscribeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSubscribeService.java new file mode 100644 index 0000000000..6f426b0c0e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSubscribeService.java @@ -0,0 +1,78 @@ +package com.epmet.wxapi.service; + +import com.epmet.wxapi.param.WxAddTemplateReq; +import com.epmet.wxapi.param.WxDelTemplateReq; +import com.epmet.wxapi.param.WxSubTemplateReq; +import com.epmet.wxapi.result.*; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 15:55 + */ +public interface WxMaSubscribeService { + + /** + * 获取当前帐号所设置的类目信息 + * + * @param accessToken + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/9/8 16:06 + */ + WxResult getCategory(String accessToken); + + /** + * 获取模板标题列表 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxSubTemplateResult + * @author zhaoqifeng + * @date 2020/9/8 16:34 + */ + WxResult getPubTemplateTitles(String accessToken, WxSubTemplateReq request); + + /** + * 获取模板标题下的关键词库 + * + * @param accessToken + * @param tId + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/9/8 16:45 + */ + WxResult getPubTemplateKeywords(String accessToken, String tId); + + /** + * 组合模板并添加到个人模板库 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/9/9 9:35 + */ + WxResult addTemplate(String accessToken, WxAddTemplateReq request); + + /** + * 获取帐号下的模板列表 + * + * @param accessToken + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/9/9 9:42 + */ + WxResult getTemplate(String accessToken); + + /** + * 删除帐号下的某个模板 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/9/9 9:44 + */ + WxResult delTemplate(String accessToken, WxDelTemplateReq request); +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSubscribeServiceImpl.java new file mode 100644 index 0000000000..6826f70fd2 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSubscribeServiceImpl.java @@ -0,0 +1,146 @@ +package com.epmet.wxapi.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.epmet.commons.tools.utils.HttpClientManager; +import com.epmet.commons.tools.utils.Result; +import com.epmet.wxapi.constant.WxSubscribeConstant; +import com.epmet.wxapi.enums.WxMaErrorMsgEnum; +import com.epmet.wxapi.param.WxAddTemplateReq; +import com.epmet.wxapi.param.WxDelTemplateReq; +import com.epmet.wxapi.param.WxSubTemplateReq; +import com.epmet.wxapi.result.*; +import com.epmet.wxapi.service.WxMaSubscribeService; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.springframework.stereotype.Service; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/9/8 15:56 + */ +@Service +public class WxMaSubscribeServiceImpl implements WxMaSubscribeService { + + private static final String ERR_CODE = "errcode"; + private static final String ERR_MSG = "errmsg"; + + @Override + public WxResult getCategory(String accessToken) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.GET_CATEGORY_URL + "?" + "access_token=" + accessToken; + + Result httpResult = HttpClientManager.getInstance().sendGet(url, null); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxGetCategoryResult getCategoryResult = gson.fromJson(httpResult.getData(), WxGetCategoryResult.class); + result.setErrorCode(getCategoryResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(getCategoryResult.getErrcode())); + result.setData(getCategoryResult); + return result; + } + + @Override + public WxResult getPubTemplateTitles(String accessToken, WxSubTemplateReq request) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.GET_PUB_TEMPLATE_TITLES_URL + "?" + "access_token=" + accessToken + "&ids=" + request.getIds() + + "&start=" + request.getStart() + "&limit=" + request.getLimit(); + + Result httpResult = HttpClientManager.getInstance().sendGet(url, null); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxSubTemplateResult subTemplateResult = gson.fromJson(httpResult.getData(), WxSubTemplateResult.class); + result.setErrorCode(subTemplateResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(subTemplateResult.getErrcode())); + result.setData(subTemplateResult); + return result; + } + + @Override + public WxResult getPubTemplateKeywords(String accessToken, String tId) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.GET_KEY_WORDS_URL + "?" + "access_token=" + accessToken + "&tid=" + tId; + + Result httpResult = HttpClientManager.getInstance().sendGet(url, null); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxKeyWordsResult keyWordsResult = gson.fromJson(httpResult.getData(), WxKeyWordsResult.class); + result.setErrorCode(keyWordsResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(keyWordsResult.getErrcode())); + result.setData(keyWordsResult); + return result; + } + + @Override + public WxResult addTemplate(String accessToken, WxAddTemplateReq request) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.ADD_TEMPLATE_URL + "?" + "access_token=" + accessToken; + + Result httpResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(httpResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + result.setData(jsonObject.getString("priTmplId")); + return result; + } + + @Override + public WxResult getTemplate(String accessToken) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.GET_TEMPLATE_URL + "?" + "access_token=" + accessToken; + + Result httpResult = HttpClientManager.getInstance().sendGet(url, null); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxGetTemplateResult templateResult = gson.fromJson(httpResult.getData(), WxGetTemplateResult.class); + result.setErrorCode(templateResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(templateResult.getErrcode())); + result.setData(templateResult); + return result; + } + + @Override + public WxResult delTemplate(String accessToken, WxDelTemplateReq request) { + WxResult result = new WxResult<>(); + String url = WxSubscribeConstant.DEL_TEMPLATE_URL + "?" + "access_token=" + accessToken; + + Result httpResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!httpResult.success()) { + result.setErrorCode(httpResult.getCode()); + result.setErrorMsg(httpResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(httpResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + return result; + } + + private String toJson(Object object) { + GsonBuilder gsonBuilder = new GsonBuilder(); + gsonBuilder.setPrettyPrinting(); + Gson gson = gsonBuilder.create(); + return gson.toJson(object); + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.10__thirdUpdate.sql b/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.10__thirdUpdate.sql new file mode 100644 index 0000000000..ebf69013cf --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.10__thirdUpdate.sql @@ -0,0 +1,36 @@ +CREATE TABLE `personal_template` ( + `ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CUSTOMER_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CLIENT_TYPE` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `APP_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `PID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `PRI_TMPL_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TYPE` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TITLE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `KEY_IDS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `KEY_WORDS` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `SCENE_DESC` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `REVISION` int(11) NULL DEFAULT NULL, + `DEL_FLAG` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CREATED_TIME` datetime(0) NULL DEFAULT NULL, + `UPDATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `UPDATED_TIME` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +CREATE TABLE `public_template` ( + `ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TITLE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `TYPE` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CATEGORY_ID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `REVISION` int(11) NULL DEFAULT NULL, + `DEL_FLAG` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CREATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `CREATED_TIME` datetime(0) NULL DEFAULT NULL, + `UPDATED_BY` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `UPDATED_TIME` datetime(0) NULL DEFAULT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml index 77e38472e8..f2cbc173f7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml @@ -132,5 +132,16 @@ DEL_FLAG = '0' AND CUSTOMER_ID = #{customerId} + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml index 11d1b50262..9926104565 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml @@ -196,4 +196,16 @@ AND SOURCE = #{source} + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml new file mode 100644 index 0000000000..4218ef19f4 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PublicTemplateDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PublicTemplateDao.xml new file mode 100644 index 0000000000..a1baf39ef4 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PublicTemplateDao.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + DELETE FROM public_template WHERE 1=1 + + CATEGORY_ID = #{item} + + + + + + \ No newline at end of file From c5640fa902964391ed0290915d26d16698d32386 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 14 Sep 2020 17:39:19 +0800 Subject: [PATCH 02/11] =?UTF-8?q?Ext=5FJson=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/CodeServiceImpl.java | 16 +++++++++++----- .../java/com/epmet/wxapi/param/WxExtJson.java | 16 ++++++++++++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java index 9a5640f22d..781a8a40d4 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.dao.MiniInfoDao; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.OperCrmOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.*; import com.epmet.wxapi.param.*; @@ -68,6 +69,8 @@ public class CodeServiceImpl implements CodeService { private PaCustomerService paCustomerService; @Autowired private MiniInfoDao miniInfoDao; + @Autowired + private OperCrmOpenFeignClient operCrmOpenFeignClient; @Override public List templateList() { @@ -97,11 +100,7 @@ public class CodeServiceImpl implements CodeService { @Override public String getExtJson(CodeUploadFormDTO formDTO) { - CodeExtDTO codeExtDTO = codeExtService.getExtByCustomer(formDTO.getCustomerId(), formDTO.getClientType()); - if (null == codeExtDTO) { - return codeExtService.getExtTemplate(formDTO.getClientType()); - } - return codeExtDTO.getExtJson(); + return codeExtService.getExtTemplate(formDTO.getClientType()); } @@ -118,6 +117,12 @@ public class CodeServiceImpl implements CodeService { if (null == authInfo) { throw new RenException("未授权"); } + CustomerDTO customerFormDTO = new CustomerDTO(); + customerFormDTO.setId(formDTO.getCustomerId()); + Result result = operCrmOpenFeignClient.getCustomerInfo(customerFormDTO); + if (!result.success()) { + throw new RenException(result.getCode(), result.getMsg()); + } //获取小程序居民端与工作端名称 String resiName = miniInfoDao.getNickName(formDTO.getCustomerId(), "resi"); String workName = miniInfoDao.getNickName(formDTO.getCustomerId(), "work"); @@ -127,6 +132,7 @@ public class CodeServiceImpl implements CodeService { wxExtJson.getExt().setExtAppid(authInfo.getAuthorizerAppid()); wxExtJson.getExt().setResiName(resiName); wxExtJson.getExt().setWorkName(workName); + wxExtJson.getExt().setCustomerName(null == result.getData().getCustomerName()?"":result.getData().getCustomerName()); extJson = JSON.toJSONString(wxExtJson); CodeExtDTO codeExtDTO = codeExtService.getExtByCustomer(formDTO.getCustomerId(), formDTO.getClientType()); if (null == codeExtDTO) { diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java index 4ba45e37cf..6a22908d9b 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java @@ -24,6 +24,8 @@ public class WxExtJson implements Serializable { private boolean directCommit; @JSONField(ordinal = 4) private ExtBean ext; + @JSONField(ordinal = 5) + private WindowBean window; @NoArgsConstructor @Data @@ -31,10 +33,12 @@ public class WxExtJson implements Serializable { @JSONField(ordinal = 1) private String extAppid; @JSONField(ordinal = 2) - private String resiName; + private String customerName; @JSONField(ordinal = 3) - private String workName; + private String resiName; @JSONField(ordinal = 4) + private String workName; + @JSONField(ordinal = 5) private FootbarBean footbar; @NoArgsConstructor @Data @@ -119,4 +123,12 @@ public class WxExtJson implements Serializable { } } } + + @NoArgsConstructor + @Data + public static class WindowBean { + @JSONField(ordinal = 1) + private String navigationBarTitleText; + } + } From 232d5e4e4034cd60ead1b81c722d61176e791bb9 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Sep 2020 09:48:58 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/SubscribeServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java index 7443a16d90..b8ddb28343 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java @@ -206,7 +206,7 @@ public class SubscribeServiceImpl implements SubscribeService { customerNames.add(paCustomerDTO.getCustomerName()); continue; } - WxResult wxResult1 = wxMaSubscribeService.addTemplate(authInfo.getAuthorizerAccessToken(), request); + WxResult wxResult1 = wxMaSubscribeService.addTemplate(authDTO.getAuthorizerAccessToken(), request); if (!wxResult1.success()) { log.error("客户[" + paCustomerDTO.getCustomerName() + "]添加模板失败,原因:" + wxResult1.getErrorCode() + wxResult1.getErrorMsg()); customerNames.add(paCustomerDTO.getCustomerName()); @@ -214,7 +214,7 @@ public class SubscribeServiceImpl implements SubscribeService { } String tmplId = wxResult1.getData(); PersonalTemplateDTO templateDTO = new PersonalTemplateDTO(); - templateDTO.setCustomerId(authInfo.getCustomerId()); + templateDTO.setCustomerId(paCustomerDTO.getId()); templateDTO.setClientType(authInfo.getClientType()); templateDTO.setAppId(authDTO.getAuthorizerAppid()); templateDTO.setPid(priTmplId); From d4881878905609454a9d19feb4523e3bb37b40b3 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Sep 2020 10:29:08 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/result/TemplateDTO.java | 6 +++++- .../java/com/epmet/service/impl/SubscribeServiceImpl.java | 4 ++-- .../src/main/resources/mapper/PersonalTemplateDao.xml | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java index b9c43fb0d3..0229316e01 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/TemplateDTO.java @@ -15,7 +15,11 @@ public class TemplateDTO implements Serializable { /** * 模板ID */ - private String priTmplId; + private String id; + /** + * 模板ID + */ + private String tmplId; /** * 标题 */ diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java index b8ddb28343..1521aa508a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java @@ -331,7 +331,7 @@ public class SubscribeServiceImpl implements SubscribeService { List resiPubTmplIds = wxResiResult.getData().getData().stream().map(WxGetTemplateResult.DataBean::getPriTmplId).collect(Collectors.toList()); List resiList = personalTemplateService.getListByCustomer(formDTO.getResiAppId(), formDTO.getCustomerId(), "resi"); - List resiTmplIds = resiList.stream().map(TemplateDTO::getPriTmplId).collect(Collectors.toList()); + List resiTmplIds = resiList.stream().map(TemplateDTO::getTmplId).collect(Collectors.toList()); List resiReduce = resiPubTmplIds.stream().filter(item -> !resiTmplIds.contains(item)).collect(Collectors.toList()); resiReduce.forEach(tmplId -> { WxDelTemplateReq request = new WxDelTemplateReq(); @@ -354,7 +354,7 @@ public class SubscribeServiceImpl implements SubscribeService { List workPubTmplIds = wxWorkResult.getData().getData().stream().map(WxGetTemplateResult.DataBean::getPriTmplId).collect(Collectors.toList()); List workList = personalTemplateService.getListByCustomer(formDTO.getWorkAppId(), formDTO.getCustomerId(), "work"); - List workTmplIds = workList.stream().map(TemplateDTO::getPriTmplId).collect(Collectors.toList()); + List workTmplIds = workList.stream().map(TemplateDTO::getTmplId).collect(Collectors.toList()); List workReduce = workPubTmplIds.stream().filter(item -> !workTmplIds.contains(item)).collect(Collectors.toList()); workReduce.forEach(tmplId -> { WxDelTemplateReq request = new WxDelTemplateReq(); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml index 4218ef19f4..f3b46b3c42 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml @@ -46,7 +46,8 @@ + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcIssueSummaryGridDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcIssueSummaryGridDailyDao.xml index 1c12b7c53c..57c743144f 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcIssueSummaryGridDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcIssueSummaryGridDailyDao.xml @@ -31,6 +31,7 @@ where t21.CUSTOMER_ID = #{customerId}) latest on (isd.CUSTOMER_ID = latest.customerId and isd.DATE_ID = latest.max_date_id) order by isd.ISSUE_COUNT desc + limit 7 + select pcd.CATEGORY_ID categoryId, + pcd.CATEGORY_NAME categoryName, + pcd.NEWS_COUNT newsCount + from screen_kc_news_category_analysis pcd + inner join ( + select CUSTOMER_ID, max(DATE_ID) MAX_DATE_ID + from screen_kc_news_category_analysis + where CUSTOMER_ID = #{customerId} + and DEL_FLAG = 0 + ) latest on (pcd.CUSTOMER_ID = latest.CUSTOMER_ID and pcd.DATE_ID = latest.MAX_DATE_ID) + where pcd.DEL_FLAG = 0 + order by pcd.NEWS_COUNT asc + + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsRankDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsRankDao.xml index 49fb7817e0..ff51305086 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsRankDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsRankDao.xml @@ -3,6 +3,18 @@ - - + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsSummaryDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsSummaryDailyDao.xml index 715ce1f038..1094a408a4 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsSummaryDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsSummaryDailyDao.xml @@ -3,6 +3,20 @@ - - + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsTrendMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsTrendMonthlyDao.xml index 71d977bd38..06d6826cbb 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsTrendMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsTrendMonthlyDao.xml @@ -3,6 +3,13 @@ - - + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSatisGridMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSatisGridMonthlyDao.xml index 0155931631..0727b6fbb2 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSatisGridMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSatisGridMonthlyDao.xml @@ -3,6 +3,19 @@ - - + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSummaryGridDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSummaryGridDailyDao.xml index fff84de166..7c79e5da1c 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSummaryGridDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcProjectSummaryGridDailyDao.xml @@ -36,6 +36,7 @@ ) latest on (psd.CUSTOMER_ID = latest.CUSTOMER_ID and psd.DATE_ID = latest.MAX_DATE_ID) where DEL_FLAG = 0 order by psd.PROJECT_COUNT desc + limit 7 diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml index 7ccf73a888..48e8bc1604 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml @@ -3,6 +3,62 @@ + + + + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserTrendGridMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserTrendGridMonthlyDao.xml index 39f0f5a0fc..f86c96af36 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserTrendGridMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserTrendGridMonthlyDao.xml @@ -3,6 +3,15 @@ - - + From 2af96ddbc119417f1741b75a0335c24e237213d0 Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 16 Sep 2020 18:17:29 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3=E7=9A=84=E5=88=86?= =?UTF-8?q?=E9=A1=B5=20=E4=BF=AE=E6=94=B9=EF=BC=9A=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/dto/PageFormDTO.java | 9 +++++++++ .../controller/screen/KcScreenController.java | 17 +++++++++-------- .../evaluationindex/screen/KcScreenService.java | 4 ++-- .../screen/impl/KcScreenServiceImpl.java | 11 +++++++++-- .../screen/ScreenPartyUserRankDataDao.xml | 2 +- .../ScreenKcNewsCategoryAnalysisDao.xml | 2 +- .../screenkc/ScreenKcUserSummaryDailyDao.xml | 2 +- .../EpmetCommonServiceOpenFeignClient.java | 4 ++-- 8 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/PageFormDTO.java diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/PageFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/PageFormDTO.java new file mode 100644 index 0000000000..c3da303f4d --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/PageFormDTO.java @@ -0,0 +1,9 @@ +package com.epmet.dto; + +import lombok.Data; + +@Data +public class PageFormDTO { + private Integer pageNo = 1; + private Integer pageSize = 10; +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/KcScreenController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/KcScreenController.java index a3f03120df..db794ca26b 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/KcScreenController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/KcScreenController.java @@ -4,9 +4,8 @@ import com.epmet.commons.extappauth.annotation.ExternalAppRequestAuth; import com.epmet.commons.extappauth.bean.ExternalAppRequestParam; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.datareport.dao.evaluationindex.screenkc.ScreenKcNewsSummaryDailyDao; import com.epmet.datareport.service.evaluationindex.screen.KcScreenService; -import com.epmet.dto.result.issue.IssueGridTotalRankDTO; +import com.epmet.dto.PageFormDTO; import com.epmet.dto.result.project.*; import com.epmet.dto.result.user.*; import com.epmet.evaluationindex.screen.dto.form.GroupTopicShiftIssueRatioRankFormDTO; @@ -99,7 +98,7 @@ public class KcScreenController { } /** - * 按照议题总数排名 + * 按照议题数量排名 * @param externalAppRequestParam * @return */ @@ -312,7 +311,7 @@ public class KcScreenController { } /** - * 网格用户排名 + * 网格用户数量排名 * @param externalAppRequestParam * @return */ @@ -342,9 +341,10 @@ public class KcScreenController { */ @ExternalAppRequestAuth @PostMapping("user/pointsrank") - public Result getUserPointsRank(ExternalAppRequestParam externalAppRequestParam){ + public Result getUserPointsRank(ExternalAppRequestParam externalAppRequestParam, + @RequestBody PageFormDTO form) { String customerId = externalAppRequestParam.getCustomerId(); - return new Result().ok(kcScreenService.getUserPointsRank(customerId)); + return new Result().ok(kcScreenService.getUserPointsRank(customerId, form.getPageNo(), form.getPageSize())); } /** @@ -402,9 +402,10 @@ public class KcScreenController { */ @ExternalAppRequestAuth @PostMapping("news/hotrank") - public Result> listNewsHotRank(ExternalAppRequestParam externalAppRequestParam){ + public Result> listNewsHotRank(ExternalAppRequestParam externalAppRequestParam, + @RequestBody PageFormDTO form){ String customerId = externalAppRequestParam.getCustomerId(); - return new Result>().ok(kcScreenService.getNewsHotRank(customerId)); + return new Result>().ok(kcScreenService.getNewsHotRank(customerId, form.getPageNo(), form.getPageSize())); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/KcScreenService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/KcScreenService.java index f17e492904..f40e8517ae 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/KcScreenService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/KcScreenService.java @@ -123,7 +123,7 @@ public interface KcScreenService { KcUserPortrayalResultDTO getUserPortrayal(String customerId); - KcUserPointRankResultDTO getUserPointsRank(String customerId); + KcUserPointRankResultDTO getUserPointsRank(String customerId, Integer pageNo, Integer pageSize); ScreenKcNewsSummaryResultDTO getNewsSummary(String customerId); @@ -133,5 +133,5 @@ public interface KcScreenService { ScreenKcCategoryNewsRankResultDTO getNewsPartiCategoryRank(String customerId); - List getNewsHotRank(String customerId); + List getNewsHotRank(String customerId, Integer pageNo, Integer pageSize); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/KcScreenServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/KcScreenServiceImpl.java index b300d5d4c8..661a43306a 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/KcScreenServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/KcScreenServiceImpl.java @@ -18,6 +18,7 @@ import com.epmet.evaluationindex.screen.dto.result.*; import com.epmet.evaluationindex.screen.dto.result.HomepageSummaryResultDTO; import com.epmet.dto.result.issue.KcIssueSummary; import com.epmet.dto.result.issue.KcPartiTrendResultDTO; +import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -404,7 +405,10 @@ public class KcScreenServiceImpl implements KcScreenService { } @Override - public KcUserPointRankResultDTO getUserPointsRank(String customerId) { + public KcUserPointRankResultDTO getUserPointsRank(String customerId, Integer pageNo, Integer pageSize) { + if (pageNo != null && pageSize != null) { + PageHelper.startPage(pageNo, pageSize); + } List userPoints = partyUserRankDataDao.listUserPoints(customerId); KcUserPointRankResultDTO rank = new KcUserPointRankResultDTO(); userPoints.stream().forEach(p -> { @@ -451,7 +455,10 @@ public class KcScreenServiceImpl implements KcScreenService { } @Override - public List getNewsHotRank(String customerId) { + public List getNewsHotRank(String customerId, Integer pageNo, Integer pageSize) { + if (pageNo != null && pageSize != null) { + PageHelper.startPage(pageNo, pageSize); + } return screenKcNewsRankDao.getNewsHotRank(customerId); } } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml index 983ced249a..9366bc90f7 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml @@ -42,6 +42,6 @@ from screen_party_user_rank_data ur where ur.DEL_FLAG = 0 and ur.CUSTOMER_ID = #{customerId} - order by ur.POINT_TOTAL asc + order by ur.POINT_TOTAL desc \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsCategoryAnalysisDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsCategoryAnalysisDao.xml index da547c9ba0..a93bd0d439 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsCategoryAnalysisDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcNewsCategoryAnalysisDao.xml @@ -31,6 +31,6 @@ and DEL_FLAG = 0 ) latest on (pcd.CUSTOMER_ID = latest.CUSTOMER_ID and pcd.DATE_ID = latest.MAX_DATE_ID) where pcd.DEL_FLAG = 0 - order by convert(pcd.CATEGORY_NAME using gbk) + order by partiCount desc diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml index 48e8bc1604..5e27540bb9 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screenkc/ScreenKcUserSummaryDailyDao.xml @@ -28,7 +28,7 @@ where DEL_FLAG = 0 and CUSTOMER_ID = #{customerId} ) latest on (usd.DATE_ID = latest.MAX_DATE_ID and usd.CUSTOMER_ID = latest.CUSTOMER_ID) - order by viewUserCount asc + order by viewUserCount desc limit 7 diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java index caa9bd6301..a3e26a5d80 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java @@ -19,8 +19,8 @@ import java.util.List; * @author yinzuomei@elink-cn.com * @date 2020/6/4 10:28 */ -@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class) -//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103") +//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class) +@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103") public interface EpmetCommonServiceOpenFeignClient { /** * @param formDTO From 70cba3bff2a895d3c412b8c4d9838a6b1bb3e160 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 17 Sep 2020 09:21:13 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9kcscreen=E7=99=BD?= =?UTF-8?q?=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-gateway/src/main/resources/bootstrap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index 323b2a7fca..9748b1ca26 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -442,7 +442,7 @@ epmet: urlWhiteList: - /data/report/test/test - /data/report/screen/** - - /data/report/screenkc/** + - /data/report/kcscreen/** - /epmetuser/customerstaff/customerlist swaggerUrls: From 88fccb65fd2d18bbb961c1c5ef39f9742058a664 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 17 Sep 2020 10:19:25 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84Feignclient?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/feign/EpmetCommonServiceOpenFeignClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java index a3e26a5d80..caa9bd6301 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java @@ -19,8 +19,8 @@ import java.util.List; * @author yinzuomei@elink-cn.com * @date 2020/6/4 10:28 */ -//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class) -@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103") +@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class) +//@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallback = EpmetCommonServiceOpenFeignClientFallback.class, url = "http://localhost:8103") public interface EpmetCommonServiceOpenFeignClient { /** * @param formDTO From 4fff0c0180da8c7bbe99542ab5c6fae4a8d65031 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Sep 2020 13:57:02 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=80=BC=E6=9C=80=E5=B0=8F=E5=80=BC=E4=B8=80=E8=87=B4=20=20?= =?UTF-8?q?=E5=88=99=E4=BD=BF=E7=94=A8=E5=8F=8D=E6=AD=A3=E5=88=87=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E8=AE=A1=E7=AE=97=E5=88=86=E6=95=B0;2:=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=A1=E7=AE=97=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IndexCalculateController.java | 51 +++++++++++-------- .../screen/ScreenCustomerAgencyDao.java | 35 ++++++++----- .../impl/CpcIndexCalculateServiceImpl.java | 4 +- .../impl/IndexCalculateServiceImpl.java | 9 ++++ .../batch/BatchScoreCalculator.java | 4 ++ .../screen/ScreenCustomerAgencyDao.xml | 5 ++ .../stats/test/normalizing/DemoScoreCal.java | 28 ++++++++++ .../stats/test/normalizing/MathUtilTest.java | 17 +++++++ 8 files changed, 118 insertions(+), 35 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java index 4d44af0d47..c6e24b6893 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java @@ -115,6 +115,7 @@ public class IndexCalculateController { /** * 指标计算 + * * @param formDTO */ private void indexCalculate(CalculateCommonFormDTO formDTO) { @@ -137,29 +138,34 @@ public class IndexCalculateController { /** * 提交异步计算 + * * @param formDTO * @return */ private void submitCalculate(CalculateCommonFormDTO formDTO) { Future future = singleThreadPool.submit(() -> { - long start = System.currentTimeMillis(); - Boolean aBoolean = indexCalculateService.indexCalculate(formDTO); - if (aBoolean) { - log.error("客户Id:{},全部指标计算完成,总耗时:{}秒", formDTO.getCustomerId(), (System.currentTimeMillis() - start) / 1000); - } + try { + long start = System.currentTimeMillis(); + Boolean aBoolean = indexCalculateService.indexCalculate(formDTO); + if (aBoolean) { + log.error("客户Id:{},全部指标计算完成,总耗时:{}秒", formDTO.getCustomerId(), (System.currentTimeMillis() - start) / 1000); + } - redisUtils.delete(RedisKeys.getCustomerStatsCalFlag(formDTO.getCustomerId())); - futureMap.remove(formDTO.getCustomerId()); + redisUtils.delete(RedisKeys.getCustomerStatsCalFlag(formDTO.getCustomerId())); + futureMap.remove(formDTO.getCustomerId()); - //测试代码 - //try { - // Thread.sleep(20000l); - // System.out.println(System.currentTimeMillis()); - //} catch (InterruptedException e) { - // e.printStackTrace(); - //} - //redisUtils.delete(RedisKeys.getCustomerStatsCalFlag(formDTO.getCustomerId())); - //futureMap.remove(formDTO.getCustomerId()); + //测试代码 + //try { + // Thread.sleep(20000l); + // System.out.println(System.currentTimeMillis()); + //} catch (InterruptedException e) { + // e.printStackTrace(); + //} + //redisUtils.delete(RedisKeys.getCustomerStatsCalFlag(formDTO.getCustomerId())); + //futureMap.remove(formDTO.getCustomerId()); + } catch (Exception e) { + log.warn("submitCalculate exception", e); + } }); futureMap.put(formDTO.getCustomerId(), future); @@ -172,6 +178,7 @@ public class IndexCalculateController { /** * 终止计算 + * * @param form * @return */ @@ -194,10 +201,14 @@ public class IndexCalculateController { @PostMapping("reAll") public Result calculateAll(@RequestBody CalculateCommonFormDTO formDTO) { long start = System.currentTimeMillis(); - Boolean aBoolean = indexCalculateService.indexCalculate(formDTO); - HttpClientManager.getInstance().sendAlarmMsg(EnvEnum.getCurrentEnv().getName() + "客户Id:" + formDTO.getCustomerId() + ",calculateAll全部指标计算完成,是否成功:" + aBoolean + ",总耗时:" + (System.currentTimeMillis() - start) / 1000 + "秒"); - if (aBoolean) { - return new Result().ok(true); + try { + Boolean aBoolean = indexCalculateService.indexCalculate(formDTO); + HttpClientManager.getInstance().sendAlarmMsg(EnvEnum.getCurrentEnv().getName() + "客户Id:" + formDTO.getCustomerId() + ",calculateAll全部指标计算完成,是否成功:" + aBoolean + ",总耗时:" + (System.currentTimeMillis() - start) / 1000 + "秒"); + if (aBoolean) { + return new Result().ok(true); + } + } catch (Exception e) { + return new Result().error(e.getMessage()); } return new Result().error("指标计算失败"); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java index 56f6c9d5b4..04e5a0027d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java @@ -34,8 +34,8 @@ import java.util.List; @Mapper public interface ScreenCustomerAgencyDao extends BaseDao { /** - *14、组织层级 - * 1) 根据CUSTOMER_ID 进行查询,如果有数据,则先进行物理删除, 一次删除1000条 + * 14、组织层级 + * 1) 根据CUSTOMER_ID 进行查询,如果有数据,则先进行物理删除, 一次删除1000条 * * @param customerId * @return java.util.Integer @@ -46,24 +46,25 @@ public interface ScreenCustomerAgencyDao extends BaseDao list, @Param("customerId")String customerId); + void batchInsertCustomerAgency(@Param("list") List list, @Param("customerId") String customerId); /** * 返回当前客户下,未匹配到的 【社区级】 组织信息 - * @param customerId 客户id - * @param agencyIds 组织id集合 + * + * @param customerId 客户id + * @param agencyIds 组织id集合 * @return java.util.List * @Author zhangyong * @Date 14:38 2020-09-04 **/ - List selectListMismatcCommunityAgencyInfo(@Param("customerId")String customerId, @Param("agencyIds") String[] agencyIds); + List selectListMismatcCommunityAgencyInfo(@Param("customerId") String customerId, @Param("agencyIds") String[] agencyIds); /** * 根据客户id,查询区/街道 组织名称、id @@ -73,24 +74,32 @@ public interface ScreenCustomerAgencyDao extends BaseDao selectListAgencyInfo(@Param("customerId")String customerId); + List selectListAgencyInfo(@Param("customerId") String customerId); /** - * @Description 根据agencyId查询上级组织Id * @param agencyId + * @Description 根据agencyId查询上级组织Id * @author zxc * @date 2020/9/8 3:36 下午 */ - String selectPid(@Param("agencyId")String agencyId); + String selectPid(@Param("agencyId") String agencyId); /** * 返回当前客户下,未匹配到的 【乡(镇、街道)级、区县级】 组织信息 - * @param customerId 客户id - * @param agencyIds 组织id集合 + * + * @param customerId 客户id + * @param agencyIds 组织id集合 * @return java.util.List * @Author zhangyong * @Date 14:38 2020-09-04 **/ - List selectListMismatcStreetAndDistrictAgencyInfo(@Param("customerId")String customerId, @Param("agencyIds") String[] agencyIds); + List selectListMismatcStreetAndDistrictAgencyInfo(@Param("customerId") String customerId, @Param("agencyIds") String[] agencyIds); + /** + * desc:获取客户的组织条数 + * + * @param customerId + * @return + */ + int selectCountByCustomerId(@Param("customerId") String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java index 9d9cfe5739..71359d8b32 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/CpcIndexCalculateServiceImpl.java @@ -75,8 +75,8 @@ public class CpcIndexCalculateServiceImpl implements CpcIndexCalculateService { //获取指标权重 List parentIndexDetails = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), IndexCodeEnum.DANG_YUAN_XIANG_GUAN.getCode()); if (CollectionUtils.isEmpty(parentIndexDetails)) { - log.warn("cpcIndexCalculate customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); - throw new RenException("客户【党员相关】指标权重信息不存在"); + log.error("cpcIndexCalculate customerId:{} have not init index", formDTO.getCustomerId()); + throw new RenException("客户Id:" + formDTO.getCustomerId() + "【党员相关】指标权重信息不存在"); } Map indexWeightMap = parentIndexDetails.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, o -> o)); int pageNo = NumConstant.ONE; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java index c4fef95f7b..a2703968ec 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; +import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao; import com.epmet.dto.indexcal.CalculateCommonFormDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.redis.IndexCalRedis; @@ -47,6 +48,8 @@ public class IndexCalculateServiceImpl implements IndexCalculateService { private DeptScoreService deptScoreService; @Autowired private FactIndexCollectService factIndexCollectService; + @Autowired + private ScreenCustomerAgencyDao screenCustomerAgencyDao; @Override @@ -91,6 +94,12 @@ public class IndexCalculateServiceImpl implements IndexCalculateService { Boolean flag; long start = System.currentTimeMillis(); try { + //校验是否含有组织数据 + int agencyCount = screenCustomerAgencyDao.selectCountByCustomerId(formDTO.getCustomerId()); + if (agencyCount < 1) { + log.info("客户id:{},组织结构数据缺失,请先上传后再计算", formDTO.getCustomerId()); + throw new RenException("组织结构数据缺失,请先上传后再计算"); + } //计算党员相关的 try { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java index b8efe2a1ff..786ec50233 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java @@ -64,6 +64,10 @@ public class BatchScoreCalculator { } else { normalizeValue = scoreCalculator.normalize(getFinalSampleValue(vo.getSampleValue(), threshold)); } + //反正切函数 [-pi/2,pi/2] + if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) { + normalizeValue = new BigDecimal(Math.atan(new Double(vo.getSampleValue().toString())) / Math.PI * 100).setScale(6, RoundingMode.HALF_UP); + } BigDecimal score = normalizeValue.multiply(weight).setScale(6, RoundingMode.HALF_UP); CalculateResult result = scoreCountOfSamples.get(sampleId); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml index 7963aefd4c..49ce41b17c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml @@ -128,4 +128,9 @@ + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/DemoScoreCal.java b/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/DemoScoreCal.java index 05a9360b47..556e4a6029 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/DemoScoreCal.java +++ b/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/DemoScoreCal.java @@ -257,5 +257,33 @@ public class DemoScoreCal { System.err.println("-----------------2222222222---------------"); } + @Test + public void testMath() { + // 每个指标需要单独的分支计算器,因为每个指标的最大最小值是不同的 + ScoreCalculator sc1 = new BigDecimalScoreCalculator(new BigDecimal(8), new BigDecimal(8), ScoreConstants.MIN_SCORE, ScoreConstants.MAX_SCORE, Correlation.POSITIVE); + ScoreCalculator sc2 = new BigDecimalScoreCalculator(new BigDecimal(10), new BigDecimal(10), ScoreConstants.MIN_SCORE, ScoreConstants.MAX_SCORE, Correlation.POSITIVE); + + List> index1SampleValues = Arrays.asList(new SampleValue<>("id1", 4), new SampleValue<>("id2", 1), new SampleValue<>("id3", 8)); + List> index2SampleValues = Arrays.asList(new SampleValue<>("id1", 1), new SampleValue<>("id2", 8), new SampleValue<>("id3", 3)); + + // 每个指标的信息,包括样本列表,权重,指标标记 + IndexInputVO index1VO = new IndexInputVO<>("aaa", "a:bbb2", index1SampleValues, new BigDecimal(10), new BigDecimal(1), false, sc1); + IndexInputVO index2VO = new IndexInputVO<>("bbb", "a:bbb2", index2SampleValues, new BigDecimal(10), new BigDecimal(1), false, sc2); + + List indexInputVOS = Arrays.asList(index1VO, index2VO); + + BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator(); + HashMap result = batchScoreCalculator.getScoreTotalOfSampleId(indexInputVOS); + + System.err.println("--------------------------------"); + result.forEach((key, value) -> { + System.out.println(key.concat("的总得分为:") + value.getTotalScore()); + //System.out.println(JSON.toJSONString(indexInputVOS)); + value.getDetails().forEach(o -> System.out.println(JSON.toJSONString(o))); + }); + + System.err.println("--------------------------------"); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java b/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java new file mode 100644 index 0000000000..bed5fc95b7 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/test/java/com/epmet/stats/test/normalizing/MathUtilTest.java @@ -0,0 +1,17 @@ +package com.epmet.stats.test.normalizing; + +public class MathUtilTest { + public static void main(String[] args) { + double tan = Math.atan(4); + double tan2 = Math.atan(1); + double tan3 = Math.atan(8); + double tan4 = Math.atan(3); + + + System.out.println((tan / Math.PI)); + System.out.println((tan2 / Math.PI)); + System.out.println((tan3 / Math.PI)); + System.out.println((tan4 / Math.PI * 200)); + } + +} From 02adfc0e8b56d3d6255a85b8262ae0da01bf404f Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 18 Sep 2020 09:38:54 +0800 Subject: [PATCH 10/11] =?UTF-8?q?Ext=5FJson=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/CodeServiceImpl.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java index 781a8a40d4..f0526f95b9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java @@ -124,8 +124,8 @@ public class CodeServiceImpl implements CodeService { throw new RenException(result.getCode(), result.getMsg()); } //获取小程序居民端与工作端名称 - String resiName = miniInfoDao.getNickName(formDTO.getCustomerId(), "resi"); - String workName = miniInfoDao.getNickName(formDTO.getCustomerId(), "work"); + String resiName = miniInfoDao.getNickName(formDTO.getCustomerId(), CodeConstant.RESI); + String workName = miniInfoDao.getNickName(formDTO.getCustomerId(), CodeConstant.WORK); String extJson = getExtJson(formDTO); WxExtJson wxExtJson = JSONObject.parseObject(extJson, WxExtJson.class); wxExtJson.setExtAppid(authInfo.getAuthorizerAppid()); @@ -133,6 +133,11 @@ public class CodeServiceImpl implements CodeService { wxExtJson.getExt().setResiName(resiName); wxExtJson.getExt().setWorkName(workName); wxExtJson.getExt().setCustomerName(null == result.getData().getCustomerName()?"":result.getData().getCustomerName()); + if (CodeConstant.RESI.equals(formDTO.getClientType())) { + wxExtJson.getWindow().setNavigationBarTitleText(resiName); + } else { + wxExtJson.getWindow().setNavigationBarTitleText(workName); + } extJson = JSON.toJSONString(wxExtJson); CodeExtDTO codeExtDTO = codeExtService.getExtByCustomer(formDTO.getCustomerId(), formDTO.getClientType()); if (null == codeExtDTO) { From 9c57792f98c3bd98da33fcc261a3a987ded33216 Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 18 Sep 2020 10:29:52 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E5=B0=86app.jar=E6=94=B9=E6=88=90gov-pro?= =?UTF-8?q?ject.jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-module/gov-project/gov-project-server/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-project/gov-project-server/Dockerfile b/epmet-module/gov-project/gov-project-server/Dockerfile index 88b6575415..372d5097ca 100644 --- a/epmet-module/gov-project/gov-project-server/Dockerfile +++ b/epmet-module/gov-project/gov-project-server/Dockerfile @@ -4,7 +4,7 @@ RUN export LANG="zh_CN.UTF-8" RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' > /etc/timezone -COPY ./target/*.jar ./app.jar +COPY ./target/*.jar ./gov-project.jar EXPOSE 8102