!191 wechat 模块

Merge pull request !191 from fengdan/wechat-mp-fengdan
This commit is contained in:
芋道源码 2022-06-01 16:29:33 +00:00 committed by Gitee
commit 2aba8a72c9
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
53 changed files with 182 additions and 320 deletions

View File

@ -18,7 +18,6 @@
<module>yudao-module-system</module>
<module>yudao-module-infra</module>
<module>yudao-module-pay</module>
<module>yudao-module-wechat-mp</module>
<module>yudao-module-wechat</module>
</modules>

View File

@ -64,7 +64,7 @@
<tencentcloud-sdk-java.version>3.1.471</tencentcloud-sdk-java.version>
<yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
<justauth.version>1.4.0</justauth.version>
<weixin-java-mp.version>3.3.0</weixin-java-mp.version>
<weixin-java-mp.version>4.3.0</weixin-java-mp.version>
</properties>
<dependencyManagement>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yudao</artifactId>
<groupId>cn.iocoder.boot</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>yudao-module-wechat-mp-api</module>
<module>yudao-module-wechat-mp-biz</module>
</modules>
<artifactId>yudao-module-wechat-mp</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<description>
微信公众号模块,主要实现 账号管理,粉丝管理 等功能。
</description>
</project>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yudao-module-wechat-mp</artifactId>
<groupId>cn.iocoder.boot</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yudao-module-wechat-mp-api</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>
微信公众号模块 API暴露给其它模块调用
</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yudao-module-wechat-mp</artifactId>
<groupId>cn.iocoder.boot</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>yudao-module-wechat-mp-biz</artifactId>
<name>${project.artifactId}</name>
<description>
微信公众号模块,主要实现 账号管理,粉丝管理 等功能。
</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-wechat-mp-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.enums;
package cn.iocoder.yudao.module.mp.enums;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;

View File

@ -0,0 +1,8 @@
/**
* mp 模块我们放微信微信公众号
* 例如说提供微信公众号的账号菜单粉丝标签消息自动回复素材模板通知运营数据等功能
*
* 1. Controller URL /mp/ 开头避免和其它 Module 冲突
* 2. DataObject 表名 mp_ 开头方便在数据库中区分
*/
package cn.iocoder.yudao.module.mp;

View File

@ -79,6 +79,16 @@
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,13 +1,13 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account;
package cn.iocoder.yudao.module.mp.admin.account;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import cn.iocoder.yudao.module.wechatMp.convert.account.WxAccountConvert;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
import cn.iocoder.yudao.module.mp.admin.account.vo.*;
import cn.iocoder.yudao.module.mp.convert.account.WxAccountConvert;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.mp.service.account.WxAccountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;

View File

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@ApiModel("管理后台 - 公众号账户创建 Request VO")
@Data

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo;
package cn.iocoder.yudao.module.mp.admin.account.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;

View File

@ -1,30 +1,29 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans;
package cn.iocoder.yudao.module.mp.admin.accountfans;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.*;
import cn.iocoder.yudao.module.mp.convert.accountfans.WxAccountFansConvert;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.mp.service.accountfans.WxAccountFansService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.wechatMp.convert.accountfans.WxAccountFansConvert;
import cn.iocoder.yudao.module.wechatMp.service.accountfans.WxAccountFansService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Api(tags = "管理后台 - 微信公众号粉丝")
@RestController

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;

View File

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@ApiModel("管理后台 - 微信公众号粉丝创建 Request VO")
@Data

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo;
package cn.iocoder.yudao.module.mp.admin.accountfans.vo;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.builder;
package cn.iocoder.yudao.module.mp.builder;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.builder;
package cn.iocoder.yudao.module.mp.builder;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.builder;
package cn.iocoder.yudao.module.mp.builder;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

View File

@ -1,25 +1,24 @@
package cn.iocoder.yudao.module.wechatMp.config;
package cn.iocoder.yudao.module.mp.config;
import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.WxAccountExportReqVO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.handler.*;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountExportReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.mp.handler.*;
import cn.iocoder.yudao.module.mp.service.account.WxAccountService;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import me.chanjar.weixin.mp.constant.WxMpEventConstants;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -51,7 +50,7 @@ public class WxMpConfig implements InitializingBean {
public static void init(List<WxAccountDO> wxAccountDOS) {
mpServices = wxAccountDOS.stream().map(wxAccountDO -> {
// TODO 亚洲使用 WxMpInMemoryConfigStorage 的话多节点会不会存在 accessToken 冲突
WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage();
WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl();
configStorage.setAppId(wxAccountDO.getAppid());
configStorage.setSecret(wxAccountDO.getAppsecret());
configStorage.setToken(wxAccountDO.getToken());

View File

@ -1,13 +1,15 @@
package cn.iocoder.yudao.module.wechatMp.convert.account;
import java.util.*;
package cn.iocoder.yudao.module.mp.convert.account;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountExcelVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountRespVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountUpdateReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import java.util.List;
/**
* 公众号账户 Convert

View File

@ -1,13 +1,15 @@
package cn.iocoder.yudao.module.wechatMp.convert.accountfans;
import java.util.*;
package cn.iocoder.yudao.module.mp.convert.accountfans;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansExcelVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansRespVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import java.util.List;
/**
* 微信公众号粉丝 Convert

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.dal.dataobject.account;
package cn.iocoder.yudao.module.mp.dal.dataobject.account;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans;
package cn.iocoder.yudao.module.mp.dal.dataobject.accountfans;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;

View File

@ -1,13 +1,14 @@
package cn.iocoder.yudao.module.wechatMp.dal.mysql.account;
import java.util.*;
package cn.iocoder.yudao.module.mp.dal.mysql.account;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountExportReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountPageReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import java.util.List;
/**
* 公众号账户 Mapper

View File

@ -1,13 +1,14 @@
package cn.iocoder.yudao.module.wechatMp.dal.mysql.accountfans;
import java.util.*;
package cn.iocoder.yudao.module.mp.dal.mysql.accountfans;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansExportReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansPageReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.*;
import java.util.List;
/**
* 微信公众号粉丝 Mapper

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import cn.iocoder.yudao.module.wechatMp.builder.TextBuilder;
import cn.iocoder.yudao.module.mp.builder.TextBuilder;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import lombok.extern.slf4j.Slf4j;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;

View File

@ -1,33 +1,15 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HtmlUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.wechatMp.builder.TextBuilder;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType;
@Component
@Slf4j
public class MsgHandler implements WxMpMessageHandler {

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;

View File

@ -1,14 +1,5 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.wechatMp.builder.TextBuilder;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.WxAccountFansCreateReqVO;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
import cn.iocoder.yudao.module.wechatMp.service.accountfans.WxAccountFansService;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
@ -16,11 +7,8 @@ import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException;
import java.util.Map;
@Component

View File

@ -1,18 +1,16 @@
package cn.iocoder.yudao.module.wechatMp.handler;
package cn.iocoder.yudao.module.mp.handler;
import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
import cn.iocoder.yudao.module.wechatMp.service.accountfans.WxAccountFansService;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.mp.service.account.WxAccountService;
import cn.iocoder.yudao.module.mp.service.accountfans.WxAccountFansService;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@ -1,8 +1,8 @@
package cn.iocoder.yudao.module.wechatMp.mq.costomer.dict;
package cn.iocoder.yudao.module.mp.mq.costomer.dict;
import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
import cn.iocoder.yudao.module.wechatMp.config.WxMpConfig;
import cn.iocoder.yudao.module.wechatMp.mq.message.dict.WxConfigDataRefreshMessage;
import cn.iocoder.yudao.module.mp.config.WxMpConfig;
import cn.iocoder.yudao.module.mp.mq.message.dict.WxConfigDataRefreshMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.wechatMp.mq.message.dict;
package cn.iocoder.yudao.module.mp.mq.message.dict;
import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage;
import lombok.Data;

View File

@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.wechatMp.mq.producer.dict;
package cn.iocoder.yudao.module.mp.mq.producer.dict;
import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate;
import cn.iocoder.yudao.module.wechatMp.mq.message.dict.WxConfigDataRefreshMessage;
import cn.iocoder.yudao.module.mp.mq.message.dict.WxConfigDataRefreshMessage;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;

View File

@ -1,13 +1,17 @@
package cn.iocoder.yudao.module.wechatMp.service.account;
package cn.iocoder.yudao.module.mp.service.account;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountExportReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountPageReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountUpdateReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 公众号账户 Service 接口
*
@ -76,5 +80,5 @@ public interface WxAccountService {
* @param val
* @return
*/
WxAccountDO findBy(SFunction<WxAccountDO,?> field, Object val);
WxAccountDO findBy(SFunction<WxAccountDO, ?> field, Object val);
}

View File

@ -1,24 +1,24 @@
package cn.iocoder.yudao.module.wechatMp.service.account;
package cn.iocoder.yudao.module.mp.service.account;
import cn.iocoder.yudao.module.wechatMp.mq.producer.dict.WxMpConfigDataProducer;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountExportReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountPageReqVO;
import cn.iocoder.yudao.module.mp.admin.account.vo.WxAccountUpdateReqVO;
import cn.iocoder.yudao.module.mp.convert.account.WxAccountConvert;
import cn.iocoder.yudao.module.mp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.mp.dal.mysql.account.WxAccountMapper;
import cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.mp.mq.producer.dict.WxMpConfigDataProducer;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.wechatMp.convert.account.WxAccountConvert;
import cn.iocoder.yudao.module.wechatMp.dal.mysql.account.WxAccountMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.wechatMp.enums.ErrorCodeConstants.*;
/**
* 公众号账户 Service 实现类
@ -66,7 +66,7 @@ public class WxAccountServiceImpl implements WxAccountService {
private void validateWxAccountExists(Long id) {
if (wxAccountMapper.selectById(id) == null) {
throw exception(WX_ACCOUNT_NOT_EXISTS);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.WX_ACCOUNT_NOT_EXISTS);
}
}

View File

@ -1,14 +1,17 @@
package cn.iocoder.yudao.module.wechatMp.service.accountfans;
package cn.iocoder.yudao.module.mp.service.accountfans;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansExportReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansPageReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
* 微信公众号粉丝 Service 接口
*

View File

@ -1,23 +1,22 @@
package cn.iocoder.yudao.module.wechatMp.service.accountfans;
package cn.iocoder.yudao.module.mp.service.accountfans;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansCreateReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansExportReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansPageReqVO;
import cn.iocoder.yudao.module.mp.admin.accountfans.vo.WxAccountFansUpdateReqVO;
import cn.iocoder.yudao.module.mp.convert.accountfans.WxAccountFansConvert;
import cn.iocoder.yudao.module.mp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.module.mp.dal.mysql.accountfans.WxAccountFansMapper;
import cn.iocoder.yudao.module.mp.enums.ErrorCodeConstants;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import cn.iocoder.yudao.module.wechatMp.controller.admin.accountfans.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans.WxAccountFansDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.wechatMp.convert.accountfans.WxAccountFansConvert;
import cn.iocoder.yudao.module.wechatMp.dal.mysql.accountfans.WxAccountFansMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.wechatMp.enums.ErrorCodeConstants.*;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
/**
* 微信公众号粉丝 Service 实现类
@ -59,7 +58,7 @@ public class WxAccountFansServiceImpl implements WxAccountFansService {
private void validateWxAccountFansExists(Long id) {
if (wxAccountFansMapper.selectById(id) == null) {
throw exception(WX_ACCOUNT_FANS_NOT_EXISTS);
throw ServiceExceptionUtil.exception(ErrorCodeConstants.WX_ACCOUNT_FANS_NOT_EXISTS);
}
}

View File

@ -63,7 +63,7 @@
<!-- 微信公众号 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-wechat-mp-biz</artifactId>
<artifactId>yudao-module-mp-biz</artifactId>
<version>${revision}</version>
</dependency>

View File

@ -44,8 +44,8 @@ spring:
datasource:
master:
name: ruoyi-vue-pro
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # MySQL Connector/J 5.X 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
@ -55,8 +55,8 @@ spring:
# password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
slave: # 模拟从库,可根据自己需要修改
name: ruoyi-vue-pro
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # MySQL Connector/J 5.X 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例