diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/WxMsgAuthInfoResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/WxMsgAuthInfoResultDTO.java index 13988b5411..52e8d95284 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/WxMsgAuthInfoResultDTO.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/WxMsgAuthInfoResultDTO.java @@ -38,4 +38,9 @@ public class WxMsgAuthInfoResultDTO { * wx订阅状态 订阅状态(订阅:subscribe 取消订阅:unsubscribe) */ private String wxSubscribeStatus; + + /** + * 微信openId + */ + private String wxOpenId; } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageController.java index 030d2a634d..71776b7e47 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageController.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageController.java @@ -24,8 +24,10 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.GetTemplateListFormDTO; import com.epmet.dto.form.WxMsgAuthInfoFormDTO; import com.epmet.dto.form.WxSubscribeMessageFormDTO; +import com.epmet.dto.form.WxmpTemplateListFormDTO; import com.epmet.dto.result.GetTemplateListResultDTO; import com.epmet.dto.result.WxMsgAuthInfoResultDTO; +import com.epmet.dto.result.WxmpTemplateListResultDTO; import com.epmet.service.WxmpMessageService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,4 +144,15 @@ public class WxmpMessageController { return new Result(); } + /** + * @return + * @Description (外挂)消息-获取订阅消息模板列表 + * @author sun + */ + @PostMapping("wxmptemplatelist") + public Result> wxmpTemplateList(@RequestBody WxmpTemplateListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, WxmpTemplateListFormDTO.AddUserInternalGroup.class); + return new Result>().ok(wxmpMessageService.wxmpTemplateList(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpTemplateMsgSubscribeStatusDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpTemplateMsgSubscribeStatusDao.java index 50d98f5aa8..75b577fce7 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpTemplateMsgSubscribeStatusDao.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/WxmpTemplateMsgSubscribeStatusDao.java @@ -35,10 +35,12 @@ public interface WxmpTemplateMsgSubscribeStatusDao extends BaseDao templateList(GetTemplateListFormDTO formDTO); + + /** + * @return + * @Description 消息-获取订阅消息模板列表 + * @author sun + */ + List wxmpTemplateList(WxmpTemplateListFormDTO formDTO); } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java index f2478ce1f5..3e834efdf1 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java @@ -32,7 +32,6 @@ import com.epmet.dao.WxmpResiUserSubscribeDao; import com.epmet.dao.WxmpTemplateMsgSubscribeStatusDao; import com.epmet.dao.WxmpUserSubscribeRecordDao; import com.epmet.dao.WxmpWorkUserSubscribeDao; -import com.epmet.dto.UserWechatDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; @@ -94,7 +93,17 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { */ @Override public void saveSysAuthorizeInfo(String customerId, String clientType, String alwaysVisit, String subscribeStatus, String userId, String templateId) { - WxmpTemplateMsgSubscribeStatusEntity userSubscribeStatusEntity = msgSubscribeStatusDao.getUserSubscribeStatusEntity(userId, customerId, clientType, templateId); + String openId = null; + switch (clientType) { + case AppClientConstant.APP_GOV: + openId = getWorkOpenId(userId); + break; + case AppClientConstant.APP_RESI: + openId = getResiOpenId(userId); + break; + } + + WxmpTemplateMsgSubscribeStatusEntity userSubscribeStatusEntity = msgSubscribeStatusDao.getUserSubscribeStatusEntity(userId, customerId, clientType, templateId, openId); if (userSubscribeStatusEntity != null) { userSubscribeStatusEntity.setAlwaysVisit(alwaysVisit); userSubscribeStatusEntity.setSubscribeStatus(subscribeStatus); @@ -107,6 +116,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { userSubscribeStatusEntity.setClientType(clientType); userSubscribeStatusEntity.setTemplateId(templateId); userSubscribeStatusEntity.setAlwaysVisit(alwaysVisit); + userSubscribeStatusEntity.setWxOpenId(openId); userSubscribeStatusEntity.setSubscribeStatus(subscribeStatus); userSubscribeStatusEntity.setUserId(userId); msgSubscribeStatusDao.insert(userSubscribeStatusEntity); @@ -440,7 +450,16 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { @Override public WxMsgAuthInfoResultDTO getAuthorizationInfo(String customerId, String clientType, String loginUserId, String templateId) { - return msgSubscribeStatusDao.getUserSubscribeStatusDTO(loginUserId, customerId, clientType, templateId); + String openId = null; + switch (clientType) { + case AppClientConstant.APP_RESI: + openId = getResiOpenId(loginUserId); + break; + case AppClientConstant.APP_GOV: + openId = getWorkOpenId(loginUserId); + break; + } + return msgSubscribeStatusDao.getUserSubscribeStatusDTO(loginUserId, customerId, clientType, templateId, openId); } @Transactional @@ -472,7 +491,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { subscribeRecordDao.insert(record); // 3.更新用户模板订阅状态 - WxmpTemplateMsgSubscribeStatusEntity subscribeStatusEntity = msgSubscribeStatusDao.getUserSubscribeStatusEntity(userId, customerId, clientType, templateId); + WxmpTemplateMsgSubscribeStatusEntity subscribeStatusEntity = msgSubscribeStatusDao.getUserSubscribeStatusEntity(userId, customerId, clientType, templateId, openId); if (subscribeStatusEntity == null) { subscribeStatusEntity = new WxmpTemplateMsgSubscribeStatusEntity(); subscribeStatusEntity.setUserId(userId); @@ -481,6 +500,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { subscribeStatusEntity.setWxAlwaysVisit(wxAlwaysVisit); subscribeStatusEntity.setCustomerId(customerId); subscribeStatusEntity.setClientType(clientType); + subscribeStatusEntity.setWxOpenId(openId); msgSubscribeStatusDao.insert(subscribeStatusEntity); return; } @@ -598,4 +618,24 @@ public class WxmpMessageServiceImpl implements WxmpMessageService { } return staffBasicInfo.getOpenId(); } + + /** + * @return + * @Description 消息-获取订阅消息模板列表 + * @author sun + */ + @Override + public List wxmpTemplateList(WxmpTemplateListFormDTO formDTO) { + List resultList = new ArrayList<>(); + CustomerTemplateListFormDTO dto = ConvertUtils.sourceToTarget(formDTO, CustomerTemplateListFormDTO.class); + List list = customerTemplateList(dto); + list.forEach(l->{ + if(formDTO.getClientType().equals(l.getClientType())){ + WxmpTemplateListResultDTO result = ConvertUtils.sourceToTarget(l, WxmpTemplateListResultDTO.class); + resultList.add(result); + } + }); + return resultList; + } + } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.12.3__sub_status_add_column.sql b/epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.12.3__sub_status_add_column.sql new file mode 100644 index 0000000000..162f2919d8 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.12.3__sub_status_add_column.sql @@ -0,0 +1 @@ +alter table wxmp_template_msg_subscribe_status add column WX_OPEN_ID varchar(64) not null ; \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpTemplateMsgSubscribeStatusDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpTemplateMsgSubscribeStatusDao.xml index fd51895084..ca12f834cc 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpTemplateMsgSubscribeStatusDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/WxmpTemplateMsgSubscribeStatusDao.xml @@ -17,12 +17,14 @@ created_by, created_time, updated_by, - updated_time + updated_time, + WX_OPEN_ID from wxmp_template_msg_subscribe_status status where USER_ID = #{userId} and CUSTOMER_ID = #{customerId} and CLIENT_TYPE = #{clientType} and TEMPLATE_ID = #{templateId} + and WX_OPEN_ID = #{openId} \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/WxmpTemplateListFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/WxmpTemplateListFormDTO.java new file mode 100644 index 0000000000..89699ffaee --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/WxmpTemplateListFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 消息-获取订阅消息模板列表-接口入参 + * @Author sun + */ +@Data +public class WxmpTemplateListFormDTO implements Serializable { + + /** + * 客户Id + */ + @NotBlank(message="客户Id不能为空", groups = {AddUserInternalGroup.class}) + private String customerId; + /** + * 微信公共模板库模板Id + */ + @NotBlank(message="公共模板Id不能为空", groups = {AddUserInternalGroup.class}) + private String publicId; + /** + * 所属端(居民端:resi 工作端:work) + */ + @NotBlank(message="所属端不能为空", groups = {AddUserInternalGroup.class}) + private String clientType; + public interface AddUserInternalGroup {} +} + diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/WxmpTemplateListResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/WxmpTemplateListResultDTO.java new file mode 100644 index 0000000000..e6f3bc55e2 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/WxmpTemplateListResultDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 消息-获取订阅消息模板列表-接口返参 + * @Author sun + */ +@Data +public class WxmpTemplateListResultDTO implements Serializable { + private static final long serialVersionUID = 6856602932571839314L; + + /** + * 模板Id + */ + private String templateId; + + /** + * 模板类型(站内信提醒) + */ + private String templateType; + + /** + * 所属端(居民端:resi 工作端:work) + */ + private String clientType; + +}