code review 公众号的实现

This commit is contained in:
YunaiV 2022-06-01 01:15:08 +08:00
parent 36e0ed18f1
commit fabf9693bf
5 changed files with 49 additions and 33 deletions

View File

@ -6,6 +6,7 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
// TODO @亚洲看看是不是可以使用 convert 来做更符合项目
public abstract class AbstractBuilder { public abstract class AbstractBuilder {
protected final Logger logger = LoggerFactory.getLogger(getClass()); protected final Logger logger = LoggerFactory.getLogger(getClass());

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
// TODO @芋艿思考有没更好的处理方式
@Component @Component
@Slf4j @Slf4j
public class WxMpConfig implements InitializingBean { public class WxMpConfig implements InitializingBean {
@ -49,6 +50,7 @@ public class WxMpConfig implements InitializingBean {
public static void init(List<WxAccountDO> wxAccountDOS) { public static void init(List<WxAccountDO> wxAccountDOS) {
mpServices = wxAccountDOS.stream().map(wxAccountDO -> { mpServices = wxAccountDOS.stream().map(wxAccountDO -> {
// TODO 亚洲使用 WxMpInMemoryConfigStorage 的话多节点会不会存在 accessToken 冲突
WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage(); WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage();
configStorage.setAppId(wxAccountDO.getAppid()); configStorage.setAppId(wxAccountDO.getAppid());
configStorage.setSecret(wxAccountDO.getAppsecret()); configStorage.setSecret(wxAccountDO.getAppsecret());
@ -60,7 +62,6 @@ public class WxMpConfig implements InitializingBean {
routers.put(wxAccountDO.getAppid(), newRouter(service)); routers.put(wxAccountDO.getAppid(), newRouter(service));
return service; return service;
}).collect(Collectors.toMap(s -> s.getWxMpConfigStorage().getAppId(), a -> a, (o, n) -> o)); }).collect(Collectors.toMap(s -> s.getWxMpConfigStorage().getAppId(), a -> a, (o, n) -> o));
} }
public static Map<String, WxMpMessageRouter> getRouters() { public static Map<String, WxMpMessageRouter> getRouters() {

View File

@ -1,34 +1,31 @@
package cn.iocoder.yudao.module.wechatMp.controller.admin.account; package cn.iocoder.yudao.module.wechatMp.controller.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 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 org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import javax.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.util.List;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; // TODO @亚洲/mp/account 即可
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.wechatMp.controller.admin.account.vo.*;
import cn.iocoder.yudao.module.wechatMp.dal.dataobject.account.WxAccountDO;
import cn.iocoder.yudao.module.wechatMp.convert.account.WxAccountConvert;
import cn.iocoder.yudao.module.wechatMp.service.account.WxAccountService;
@Api(tags = "管理后台 - 公众号账户") @Api(tags = "管理后台 - 公众号账户")
@RestController @RestController
@RequestMapping("/wechatMp/wx-account") @RequestMapping("/wechatMp/wx-account")

View File

@ -1,10 +1,12 @@
package cn.iocoder.yudao.module.wechatMp.dal.dataobject.account; package cn.iocoder.yudao.module.wechatMp.dal.dataobject.account;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
// TODO 亚洲这个模块的相关类使用 Mp 作为前缀哈
/** /**
* 公众号账户 DO * 公众号账户 DO
* *
@ -33,10 +35,12 @@ public class WxAccountDO extends BaseDO {
* 公众号账户 * 公众号账户
*/ */
private String account; private String account;
// TODO 亚洲appId
/** /**
* 公众号appid * 公众号 appid
*/ */
private String appid; private String appid;
// TODO 亚洲appSecret
/** /**
* 公众号密钥 * 公众号密钥
*/ */
@ -52,10 +56,12 @@ public class WxAccountDO extends BaseDO {
/** /**
* 加密密钥 * 加密密钥
*/ */
// TODO 亚洲aesKey
private String aeskey; private String aeskey;
/** /**
* 二维码图片URL * 二维码图片 URL
*/ */
// TODO 亚洲qrCodeUrl
private String qrUrl; private String qrUrl;
/** /**
* 备注 * 备注

View File

@ -1,15 +1,19 @@
package cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans; package cn.iocoder.yudao.module.wechatMp.dal.dataobject.accountfans;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Date;
/** /**
* 微信公众号粉丝 DO * 微信公众号粉丝 DO
* *
* @author 芋道源码 * @author 芋道源码
*/ */
// TODO @亚洲WxUserDO
@TableName("wx_account_fans") @TableName("wx_account_fans")
@KeySequence("wx_account_fans_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写 @KeySequence("wx_account_fans_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data @Data
@ -32,18 +36,22 @@ public class WxAccountFansDO extends BaseDO {
/** /**
* 订阅状态0未关注1已关注 * 订阅状态0未关注1已关注
*/ */
// TODO @亚洲Integer 然后写个枚举哈
private String subscribeStatus; private String subscribeStatus;
/** /**
* 订阅时间 * 订阅时间
*/ */
// TODO @亚洲增加一个取消关注的事件
private Date subscribeTime; private Date subscribeTime;
/** /**
* 昵称 * 昵称
*/ */
// TODO @亚洲String
private byte[] nickname; private byte[] nickname;
/** /**
* 性别1男2女0未知 * 性别1男2女0未知
*/ */
// TODO @亚洲Integer
private String gender; private String gender;
/** /**
* 语言 * 语言
@ -64,17 +72,20 @@ public class WxAccountFansDO extends BaseDO {
/** /**
* 头像地址 * 头像地址
*/ */
// TODO @亚洲headImageUrl
private String headimgUrl; private String headimgUrl;
/** /**
* 备注 * 备注
*/ */
private String remark; private String remark;
// TODO @亚洲是不是只要存储 WxAccountDO id
/** /**
* 微信公众号ID * 微信公众号 ID
*/ */
private String wxAccountId; private String wxAccountId;
/** /**
* 微信公众号appid * 微信公众号 appid
*/ */
private String wxAccountAppid; private String wxAccountAppid;