diff --git a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/api/ResultCode.java b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/api/ResultCode.java index 0b6d401..11260db 100644 --- a/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/api/ResultCode.java +++ b/cdp-common/cdp-common-core/src/main/java/com/baiye/core/base/api/ResultCode.java @@ -254,6 +254,23 @@ public enum ResultCode implements IResultCode { * 好友集合为空 */ WE_CHAT_COLLECTION_EMPTY(1004,"添加微信集合不能为空!"), + /** + * 获取在线状态信息失败 + */ + FAILED_STATUS_INFO(1005,"获取在线状态信息失败"), + /** + * 请求参数错误 + */ + REQUEST_PARAMETER_ERROR(1007,"请求参数错误"), + + /** + * 退出失败 + */ + LOGOUT_SUCCESS(1008,"退出成功"), + /** + * 退出失败 + */ + LOGOUT_ERROR(1007,"退出失败"), ; /** * 状态码 diff --git a/cdp-entrance/cdp-entrance-api/src/main/java/com/baiye/controller/FileUploadController.java b/cdp-entrance/cdp-entrance-api/src/main/java/com/baiye/controller/FileUploadController.java index 9f11d94..9dd5cf4 100644 --- a/cdp-entrance/cdp-entrance-api/src/main/java/com/baiye/controller/FileUploadController.java +++ b/cdp-entrance/cdp-entrance-api/src/main/java/com/baiye/controller/FileUploadController.java @@ -26,7 +26,7 @@ public class FileUploadController { @Resource private FileUploadService fileUploadService; - @ApiOperation("文件上传") + @ApiOperation("文件上传 type 0-手机号 1-微信号") @PostMapping("upload") public Result fileUpload(@RequestParam("files") MultipartFile[] files, Integer type) { fileUploadService.fileUpload(files, type); diff --git a/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/SourceController.java b/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/SourceController.java index 62a505b..5fc6362 100644 --- a/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/SourceController.java +++ b/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/SourceController.java @@ -10,7 +10,6 @@ import com.baiye.entity.query.SourceRecordQuery; import com.baiye.service.SourceService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; diff --git a/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/WechatController.java b/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/WechatController.java index 2963886..ac4f66f 100644 --- a/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/WechatController.java +++ b/cdp-wechat/cdp-wechat-api/src/main/java/com/baiye/controller/WechatController.java @@ -7,6 +7,7 @@ import com.baiye.core.base.api.ResultCode; import com.baiye.entity.dto.WeChatAddBulkFriendDTO; import com.baiye.entity.dto.WeChatAddFriendDTO; import com.baiye.entity.dto.WeChatFriendInfoDTO; +import com.baiye.entity.dto.WeChatLogoutDTO; import com.baiye.service.WeChatUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -78,4 +79,11 @@ public class WechatController { return weChatUserService.addBulkFriend(bulkFriendDTO); } + @Log("退出登录") + @ApiOperation("批量退出") + @PostMapping("/batchLogout") + public Result bulkAddFriend + (@RequestBody WeChatLogoutDTO weChatLogoutDTO) { + return weChatUserService.batchLogout(weChatLogoutDTO); + } } diff --git a/cdp-wechat/cdp-wechat-api/src/main/resources/config/application-dev.yml b/cdp-wechat/cdp-wechat-api/src/main/resources/config/application-dev.yml index c7e2c1a..d3a6d25 100644 --- a/cdp-wechat/cdp-wechat-api/src/main/resources/config/application-dev.yml +++ b/cdp-wechat/cdp-wechat-api/src/main/resources/config/application-dev.yml @@ -13,9 +13,9 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://localhost:3306/by_cdp?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://8.130.96.163:3306/db_wechat?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull username: root - password: 12345678 + password: y7z7noq2 # 初始连接数 initial-size: 5 # 最小连接数 diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WeChatUserMapper.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WeChatUserMapper.java new file mode 100644 index 0000000..28b4c5b --- /dev/null +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WeChatUserMapper.java @@ -0,0 +1,21 @@ +package com.baiye.dao; + +import com.baiye.entity.WeChatUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wjt + * @date 2022/07/14 + */ +@Mapper +public interface WeChatUserMapper extends BaseMapper { + /** + * 微信id查找微信用户 + * @param wxId + * @return + */ + WeChatUser findByWxId(@Param("wxid") String wxId); + +} diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WechatSourceMapper.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WechatSourceMapper.java index 3a23e48..5cf72a5 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WechatSourceMapper.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/dao/WechatSourceMapper.java @@ -1,6 +1,6 @@ package com.baiye.dao; -import com.baiye.entity.WechatSource; +import com.baiye.entity.WeChatSource; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -12,7 +12,7 @@ import java.util.List; * @date 2022/07/12 */ @Mapper -public interface WechatSourceMapper extends BaseMapper { +public interface WechatSourceMapper extends BaseMapper { /** * 保存分配的资源 * diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/Source.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/Source.java index c64dd02..d48f18e 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/Source.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/Source.java @@ -28,7 +28,7 @@ public class Source extends BaseEntity implements Serializable { @ApiModelProperty(value = "号码") private String nid; - @ApiModelProperty(value = "类型 0-微信号 1-号码") + @ApiModelProperty(value = "类型 0-手机号 1-微信号") private Integer type; @ApiModelProperty(value = "上传记录id") private Long recordId; diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/SourceUploadRecord.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/SourceUploadRecord.java index e985dc7..37dcb16 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/SourceUploadRecord.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/SourceUploadRecord.java @@ -21,7 +21,7 @@ public class SourceUploadRecord extends BaseEntity implements Serializable { @ApiModelProperty(value = "ID", hidden = true) private Long id; - @ApiModelProperty(value = "类型 0-微信号,1-号码") + @ApiModelProperty(value = "类型 0-手机号,1-微信号") private Integer type; @ApiModelProperty(value = "分配状态 0-未分配 1-已分配") diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WechatSource.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatSource.java similarity index 87% rename from cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WechatSource.java rename to cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatSource.java index fe5ef8a..5d60634 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WechatSource.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatSource.java @@ -1,6 +1,5 @@ package com.baiye.entity; -import com.baiye.core.base.BaseEntity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; @@ -14,7 +13,7 @@ import java.io.Serializable; */ @Data @TableName("tb_wechat_source") -public class WechatSource implements Serializable { +public class WeChatSource implements Serializable { private static final long serialVersionUID = 1364334049883636489L; @TableId(value = "id") diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatUser.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatUser.java new file mode 100644 index 0000000..473ce68 --- /dev/null +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/WeChatUser.java @@ -0,0 +1,54 @@ +package com.baiye.entity; + +import com.baiye.core.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import javax.persistence.Column; +import java.io.Serializable; +import java.util.Date; + +/** + * @author wjt + * @date 2022/07/14 + */ +@Data +@TableName("tb_wechat_user") +public class WeChatUser extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -4755997517585953316L; + + @TableId(value = "id") + @ApiModelProperty(value = "ID", hidden = true) + private Long id; + + @Column(name = "login_type") + @ApiModelProperty(value = "登录类型") + private Integer loginType; + + @Column(name = "nickname") + @ApiModelProperty(value = "昵称") + private String nickname; + + @Column(name = "login_date") + @ApiModelProperty(value = "登录时间") + private Date loginDate; + + @Column(name = "small_head_img_url") + @ApiModelProperty(value = "头像") + private String smallHeadImgUrl; + + @Column(name = "wx_id") + @ApiModelProperty(value = "微信号") + private String wxId; + + @Column(name = "token") + @ApiModelProperty(value = "token") + private String token; + + @Column(name = "random_id") + @ApiModelProperty(value = "随机id") + private String randomId; + +} diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatAddBulkFriendDTO.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatAddBulkFriendDTO.java index 3bf845f..3acdb93 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatAddBulkFriendDTO.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatAddBulkFriendDTO.java @@ -33,7 +33,7 @@ public class WeChatAddBulkFriendDTO { private String appKey; @NonNull - @ApiModelProperty(value = "appKey") + @ApiModelProperty(value = "appSecret") private String appSecret; diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatLogoutDTO.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatLogoutDTO.java new file mode 100644 index 0000000..2ebf9a9 --- /dev/null +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/entity/dto/WeChatLogoutDTO.java @@ -0,0 +1,28 @@ +package com.baiye.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NonNull; + +/** + * @author Enzo + * @date : 2022/7/8 + */ +@Data +public class WeChatLogoutDTO { + + @ApiModelProperty(value = "批量退出微信号 以 , 分隔") + private String wxIds; + + @ApiModelProperty(value = "如果wxIds时,是否选择退出全部") + private Boolean ifNullLogoutAll; + + @NonNull + @ApiModelProperty(value = "appKey") + private String appKey; + + @NonNull + @ApiModelProperty(value = "appKey") + private String appSecret; + +} diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/WeChatUserService.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/WeChatUserService.java index 27978ef..29ca5d1 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/WeChatUserService.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/WeChatUserService.java @@ -6,6 +6,7 @@ import com.baiye.core.constant.WeChatResponse; import com.baiye.entity.dto.WeChatAddBulkFriendDTO; import com.baiye.entity.dto.WeChatAddFriendDTO; import com.baiye.entity.dto.WeChatFriendInfoDTO; +import com.baiye.entity.dto.WeChatLogoutDTO; import java.util.List; @@ -69,4 +70,11 @@ public interface WeChatUserService { * @return */ Result friendInfo(WeChatFriendInfoDTO weChatFriendInfoDTO); + + /** + * 批量退出 + * @param weChatLogoutDTO + * @return + */ + Result batchLogout(WeChatLogoutDTO weChatLogoutDTO); } diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/SourceServiceImpl.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/SourceServiceImpl.java index 031135f..dcd5cea 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/SourceServiceImpl.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/SourceServiceImpl.java @@ -46,7 +46,7 @@ public class SourceServiceImpl implements SourceService { for (String path : filePaths) { File file = FileUtil.file(path); ExcelReader reader = ExcelUtil.getReader(file, 0); - if (type == 0) { + if (type == 1) { reader.addHeaderAlias("微信号", "vId"); } else { reader.addHeaderAlias("手机号", "nid"); @@ -86,7 +86,6 @@ public class SourceServiceImpl implements SourceService { Long vId = map.keySet().iterator().next(); List sourceList = map.get(vId); wechatSourceMapper.insertWechatSource(vId, sourceList); - //todo 加粉 } } } diff --git a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/WeChatUserServiceImpl.java b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/WeChatUserServiceImpl.java index 89e9a80..049921e 100644 --- a/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/WeChatUserServiceImpl.java +++ b/cdp-wechat/cdp-wechat-server/src/main/java/com/baiye/service/impl/WeChatUserServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.StrPool; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; @@ -15,9 +16,11 @@ import com.baiye.core.util.DesUtil; import com.baiye.dao.AppUserMapper; import com.baiye.dao.QrCodeRecordMapper; import com.baiye.dao.WeChatCallbackLogMapper; +import com.baiye.dao.WeChatUserMapper; import com.baiye.entity.AppUser; import com.baiye.entity.QrCodeRecord; import com.baiye.entity.WeChatCallbackLog; +import com.baiye.entity.WeChatUser; import com.baiye.entity.dto.*; import com.baiye.exception.global.BadRequestException; import com.baiye.properties.WeChatProperties; @@ -55,6 +58,7 @@ public class WeChatUserServiceImpl implements WeChatUserService { private final WeChatCallbackLogMapper weChatCallbackLogMapper; + private final WeChatUserMapper weChatUserMapper; @Override public Result getQrCode(String wechatId, String uuid, String appKey, String appSecret) { @@ -83,7 +87,7 @@ public class WeChatUserServiceImpl implements WeChatUserService { qrCodeRecordMapper.insert(qrCodeRecord); return Result.success(msg); } - throw new BadRequestException(ResultCode.QR_CODE_GENERATION_FAILED.getMsg()); + return Result.fail(ResultCode.QR_CODE_GENERATION_FAILED.getMsg()); } @@ -101,7 +105,7 @@ public class WeChatUserServiceImpl implements WeChatUserService { } return Result.fail(ResultCode.FAILED_ADD_FRIEND.getMsg()); } - return Result.fail(); + return Result.fail(ResultCode.FAILED_ADD_FRIEND.getMsg()); } /** @@ -145,7 +149,6 @@ public class WeChatUserServiceImpl implements WeChatUserService { // 处理登录请求 if (weChatResponse.getStatus() == HttpStatus.HTTP_CREATED || weChatResponse.getStatus() == GETSTATIC2_QUICK) { - WeChatCallbackLog callbackLog = new WeChatCallbackLog(); WeChatUserLoginDTO userLoginDTO = weChatResponse.getStatus() == HttpStatus.HTTP_CREATED ? JSONUtil.toBean(JSONUtil.toJsonStr(weChatResponse.getData()), WeChatUserLoginSuccessDTO.class) @@ -156,21 +159,23 @@ public class WeChatUserServiceImpl implements WeChatUserService { cusQrUuId = cusQrUuId.substring(INFORMATION, cusQrUuId.indexOf(StrPool.COLON)).trim(); userLoginDTO.setCusQrUuId(cusQrUuId); } - map.put("msg", weChatResponse.getMsg()); - map.put("data", userLoginDTO); - map.put("status", weChatResponse.getStatus()); + + // 插入用户 + if (weChatResponse.getStatus() == HttpStatus.HTTP_CREATED) { + WeChatUser byUserId = weChatUserMapper.findByWxId(userLoginDTO.getWxid()); + saveOrUpdateWeChatUser(userLoginDTO, byUserId); + } // 插入日志 - callbackLog.setCusQrUuId(cusQrUuId); - callbackLog.setCreateTime(DateUtil.date()); - callbackLog.setStatus(weChatResponse.getStatus()); - callbackLog.setCallStr(JSONUtil.toJsonStr(weChatResponse)); - weChatCallbackLogMapper.insert(callbackLog); - log.info("============= the response as {} ==========", JSONUtil.toJsonStr(weChatResponse)); + saveResponseLog(weChatResponse, cusQrUuId); List byUuid = qrCodeRecordMapper.findByUuid(cusQrUuId); if (CollUtil.isNotEmpty(byUuid) && StringUtils.isNotBlank(byUuid.get(0).getAppKey())) { String appKey = byUuid.get(0).getAppKey(); if (StringUtils.isNotBlank(appKey)) { AppUser byAppKey = appUserMapper.findByAppKey(appKey.trim()); + map.put("data", userLoginDTO); + map.put("msg", weChatResponse.getMsg()); + map.put("status", weChatResponse.getStatus()); + // 发送请求 HttpUtil.post(byAppKey.getCallbackUrl(), JSONUtil.toJsonStr(map)); log.info("============= the send callback success uuid as {} date as {} ============", cusQrUuId, DateUtil.date()); } @@ -201,7 +206,7 @@ public class WeChatUserServiceImpl implements WeChatUserService { return Result.data(weChatResponse.getData()); } return Result.fail - (ResultCode.FAILED_FRIEND_INFO.getMsg()); + (ResultCode.FAILED_STATUS_INFO.getMsg()); } @@ -217,9 +222,69 @@ public class WeChatUserServiceImpl implements WeChatUserService { if (friendsInfo.contains(ResultCode.SUCCESS.getMsg())) { WeChatResponse weChatResponse = JSONUtil.toBean(friendsInfo, WeChatResponse.class); - return Result.data(weChatResponse.getData()); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Result.data(weChatResponse.getData()); + } + return Result.fail + (StringUtils.isNotBlank(weChatResponse.getMsg()) ? + weChatResponse.getMsg() : ResultCode.FAILED_FRIEND_INFO.getMsg()); } return Result.fail (ResultCode.FAILED_FRIEND_INFO.getMsg()); } + + private void saveResponseLog(WeChatResponse weChatResponse, String cusQrUuId) { + WeChatCallbackLog callbackLog = new WeChatCallbackLog(); + callbackLog.setCusQrUuId(cusQrUuId); + callbackLog.setCreateTime(DateUtil.date()); + callbackLog.setStatus(weChatResponse.getStatus()); + callbackLog.setCallStr(JSONUtil.toJsonStr(weChatResponse)); + weChatCallbackLogMapper.insert(callbackLog); + } + + private void saveOrUpdateWeChatUser(WeChatUserLoginDTO userLoginDTO, WeChatUser byUserId) { + if (ObjectUtil.isNull(byUserId)) { + byUserId = new WeChatUser(); + } + if (userLoginDTO instanceof WeChatUserLoginSuccessDTO) { + WeChatUserLoginSuccessDTO successDTO = (WeChatUserLoginSuccessDTO) userLoginDTO; + byUserId.setLoginDate(DateUtil.date()); + byUserId.setRandomId(successDTO.getRandomid()); + byUserId.setToken(successDTO.getToken()); + byUserId.setWxId(successDTO.getWxid()); + byUserId.setLoginType(successDTO.getLoginType()); + byUserId.setNickname(successDTO.getNickname()); + weChatUserMapper.insert(byUserId); + } + } + + @Override + public Result batchLogout(WeChatLogoutDTO weChatLogoutDTO) { + if (StringUtils.isBlank(weChatLogoutDTO.getWxIds()) + && weChatLogoutDTO.getIfNullLogoutAll() == null) { + return Result.fail + (ResultCode.REQUEST_PARAMETER_ERROR.getMsg()); + } + Map map = Maps.newHashMap(); + map.put("wxIds", weChatLogoutDTO.getWxIds()); + if (weChatLogoutDTO.getIfNullLogoutAll() != null) { + map.remove("wxIds"); + map.put("ifNullLogoutAll", weChatLogoutDTO.getIfNullLogoutAll()); + } + // 发送请求 + String logoutInfo = HttpUtil.post + (weChatProperties.getGatewayHost(). + concat(WeChatRequestConstants.WE_CHAT_LOGOUT), map); + if (logoutInfo.contains(ResultCode.SUCCESS.getMsg())) { + WeChatResponse weChatResponse = + JSONUtil.toBean(logoutInfo, WeChatResponse.class); + if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) { + return Result.success(ResultCode.LOGOUT_SUCCESS.getMsg()); + } + return Result.fail + (StringUtils.isNotBlank(weChatResponse.getMsg()) ? + weChatResponse.getMsg() : ResultCode.LOGOUT_ERROR.getMsg()); + } + return Result.fail(ResultCode.LOGOUT_ERROR.getMsg()); + } } diff --git a/cdp-wechat/cdp-wechat-server/src/main/resources/mapper/WeChatUserMapper.xml b/cdp-wechat/cdp-wechat-server/src/main/resources/mapper/WeChatUserMapper.xml new file mode 100644 index 0000000..90146e6 --- /dev/null +++ b/cdp-wechat/cdp-wechat-server/src/main/resources/mapper/WeChatUserMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + \ No newline at end of file