diff --git a/yudao-module-wechat/yudao-module-mp-api/src/main/java/cn/iocoder/yudao/module/mp/enums/ErrorCodeConstants.java b/yudao-module-wechat/yudao-module-mp-api/src/main/java/cn/iocoder/yudao/module/mp/enums/ErrorCodeConstants.java index 7d9d876a3..14e82db38 100644 --- a/yudao-module-wechat/yudao-module-mp-api/src/main/java/cn/iocoder/yudao/module/mp/enums/ErrorCodeConstants.java +++ b/yudao-module-wechat/yudao-module-mp-api/src/main/java/cn/iocoder/yudao/module/mp/enums/ErrorCodeConstants.java @@ -10,8 +10,8 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { // ========== 用户相关 1004001000============ - ErrorCode WX_ACCOUNT_NOT_EXISTS = new ErrorCode(1004001000, "用户不存在"); - ErrorCode WX_ACCOUNT_FANS_NOT_EXISTS = new ErrorCode(1004001000, "用户不存在"); - ErrorCode COMMON_NOT_EXISTS = new ErrorCode(1004001000, "用户不存在"); + ErrorCode WX_ACCOUNT_NOT_EXISTS = new ErrorCode(1004001000, "公众号账户不存在"); + ErrorCode WX_ACCOUNT_FANS_NOT_EXISTS = new ErrorCode(1004001001, "粉丝账号不存在"); + ErrorCode COMMON_NOT_EXISTS = new ErrorCode(1004001002, "用户不存在"); } diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/FansTagController.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/FansTagController.java index f89758e57..556c011c0 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/FansTagController.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/FansTagController.java @@ -8,8 +8,8 @@ import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.*; import cn.iocoder.yudao.module.mp.convert.fanstag.WxFansTagConvert; import cn.iocoder.yudao.module.mp.service.tag.FansTagService; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; +import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.bean.tag.WxUserTag; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -18,8 +18,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; import java.io.IOException; -import java.util.Collection; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -30,7 +30,7 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E */ @Api(tags = "管理后台 - 粉丝标签") @RestController -@RequestMapping("/wechat-mp/fans-tag") +@RequestMapping("/wechatMp/fans-tag") @Validated public class FansTagController { @@ -39,57 +39,53 @@ public class FansTagController { @PostMapping("/create") @ApiOperation("创建粉丝标签") - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:create')") - public CommonResult createWxFansTag(@Valid @RequestBody FansTagCreateReqVO createReqVO) { + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:create')") + public CommonResult createWxFansTag(@Valid @RequestBody FansTagCreateReqVO createReqVO) throws WxErrorException { return success(fansTagService.createWxFansTag(createReqVO)); } @PutMapping("/update") @ApiOperation("更新粉丝标签") - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:update')") - public CommonResult updateWxFansTag(@Valid @RequestBody FansTagUpdateReqVO updateReqVO) { - fansTagService.updateWxFansTag(updateReqVO); - return success(true); + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:update')") + public CommonResult updateWxFansTag(@Valid @RequestBody FansTagUpdateReqVO updateReqVO) throws WxErrorException { + return success(fansTagService.updateWxFansTag(updateReqVO)); } @DeleteMapping("/delete") @ApiOperation("删除粉丝标签") - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Integer.class) - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:delete')") - public CommonResult deleteWxFansTag(@RequestParam("id") Integer id) { - fansTagService.deleteWxFansTag(id); - return success(true); - } - - @GetMapping("/get") - @ApiOperation("获得粉丝标签") - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Integer.class) - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:query')") - public CommonResult getWxFansTag(@RequestParam("id") Integer id) { - WxUserTag wxFansTag = fansTagService.getWxFansTag(id); - return success(WxFansTagConvert.INSTANCE.convert(wxFansTag)); + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:delete')") + public CommonResult deleteWxFansTag(@RequestParam("id") Long id, + @RequestParam("appId") String appId) throws WxErrorException { + return success(fansTagService.deleteWxFansTag(id, appId)); } @GetMapping("/list") - @ApiOperation("获得粉丝标签列表") - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:query')") - public CommonResult> getWxFansTagList(@RequestParam("ids") Collection ids) { - List list = fansTagService.getWxFansTagList(ids); + @ApiOperation("获取公众号已创建的标签") + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')") + public CommonResult> getWxFansTagList(@NotEmpty(message = "公众号appId不能为空") + @RequestParam("appId") String appId) throws WxErrorException { + List list = fansTagService.getWxFansTagList(appId); return success(WxFansTagConvert.INSTANCE.convertList(list)); } @GetMapping("/page") - @ApiOperation("获得粉丝标签分页") - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:query')") - public CommonResult> getWxFansTagPage(@Valid FansTagPageReqVO pageVO) { - PageResult pageResult = fansTagService.getWxFansTagPage(pageVO); - return success(WxFansTagConvert.INSTANCE.convertPage(pageResult)); + @ApiOperation("获取公众号已创建的标签") + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')") + public CommonResult> page() throws WxErrorException { + PageResult page = new PageResult<>(); + return success(WxFansTagConvert.INSTANCE.convertPage(page)); + } + + @GetMapping("/tagListUser") + @ApiOperation("获取标签下粉丝列表") + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')") + public CommonResult tagListUser(@Valid FansTagPageReqVO pageVO) { + return success(""); } @GetMapping("/export-excel") @ApiOperation("导出粉丝标签 Excel") - @PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:export')") + @PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:export')") @OperateLog(type = EXPORT) public void exportWxFansTagExcel(@Valid FansTagExportReqVO exportReqVO, HttpServletResponse response) throws IOException { diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagBaseVO.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagBaseVO.java index 3515dbae0..b1c4212c1 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagBaseVO.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagBaseVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** * 粉丝标签 Base VO,提供给添加、修改、详细的子 VO 使用 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 @@ -12,9 +14,7 @@ import lombok.Data; @Data public class FansTagBaseVO { - @ApiModelProperty(value = "标签名,UTF8编码.") + @NotBlank(message = "标签名不能为空") + @ApiModelProperty(value = "标签名,UTF8编码") private String name; - - @ApiModelProperty(value = "此标签下粉丝数") - private Integer count; } diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagCreateReqVO.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagCreateReqVO.java index 51dc8552e..837c55410 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagCreateReqVO.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagCreateReqVO.java @@ -1,7 +1,12 @@ package cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo; -import lombok.*; -import io.swagger.annotations.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; /** * @author fengdan @@ -11,5 +16,7 @@ import io.swagger.annotations.*; @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class FansTagCreateReqVO extends FansTagBaseVO { - + @NotBlank(message = "公众号appId不能为空") + @ApiModelProperty("微信公众号appId") + private String appId; } diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagPageReqVO.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagPageReqVO.java index 69014762d..1592e2c72 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagPageReqVO.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagPageReqVO.java @@ -1,36 +1,25 @@ package cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo; -import lombok.*; - -import java.util.*; - -import io.swagger.annotations.*; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import javax.validation.constraints.NotEmpty; +/** + * @author fengdan + */ @ApiModel("管理后台 - 粉丝标签分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class FansTagPageReqVO extends PageParam { - @ApiModelProperty(value = "标签名称") - private String name; - - @ApiModelProperty(value = "粉丝数量") - private Integer count; - - @ApiModelProperty(value = "微信账号ID") - private String wxAccountId; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "开始创建时间") - private Date beginCreateTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "结束创建时间") - private Date endCreateTime; + @NotEmpty(message = "公众号appId不能为空") + @ApiModelProperty("微信公众号appId") + private String appId; } diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagUpdateReqVO.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagUpdateReqVO.java index bfb01dcfa..d114c96fa 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagUpdateReqVO.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/fanstag/vo/FansTagUpdateReqVO.java @@ -5,14 +5,21 @@ import io.swagger.annotations.*; import javax.validation.constraints.*; +/** + * @author fengdan + */ @ApiModel("管理后台 - 粉丝标签更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class FansTagUpdateReqVO extends FansTagBaseVO { - @ApiModelProperty(value = "主键", required = true) + @ApiModelProperty(value = "标签id,由微信分配", required = true) @NotNull(message = "主键不能为空") - private Integer id; + private Long id; + + @NotBlank(message = "公众号appId不能为空") + @ApiModelProperty("微信公众号appId") + private String appId; } diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagService.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagService.java index f8f082608..469a3f10b 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagService.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagService.java @@ -5,10 +5,10 @@ import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagCreateReqVO import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagExportReqVO; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagPageReqVO; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagUpdateReqVO; +import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.bean.tag.WxUserTag; import javax.validation.Valid; -import java.util.Collection; import java.util.List; /** @@ -21,40 +21,39 @@ public interface FansTagService { /** * 创建粉丝标签 * - * @param createReqVO 创建信息 - * @return 编号 + * @param createReqVO 创建标签信息 + * @return {@link WxUserTag} 用户标签对象 + * @throws WxErrorException 微信异常 */ - WxUserTag createWxFansTag(@Valid FansTagCreateReqVO createReqVO); + WxUserTag createWxFansTag(FansTagCreateReqVO createReqVO) throws WxErrorException; /** * 更新粉丝标签 * * @param updateReqVO 更新信息 + * @return {@link Boolean} + * @throws WxErrorException 微信异常 */ - void updateWxFansTag(@Valid FansTagUpdateReqVO updateReqVO); + Boolean updateWxFansTag(@Valid FansTagUpdateReqVO updateReqVO) throws WxErrorException; /** * 删除粉丝标签 * - * @param id 编号 + * @param id 编号 + * @param appId 公众号appId + * @return {@link Boolean} + * @throws WxErrorException 微信异常 */ - void deleteWxFansTag(Integer id); + Boolean deleteWxFansTag(Long id, String appId) throws WxErrorException; /** - * 获得粉丝标签 + * 获取公众号已创建的标签 * - * @param id 编号 - * @return 粉丝标签 - */ - WxUserTag getWxFansTag(Integer id); - - /** - * 获得粉丝标签列表 - * - * @param ids 编号 + * @param appId 公众号appId * @return 粉丝标签列表 + * @throws WxErrorException 微信异常 */ - List getWxFansTagList(Collection ids); + List getWxFansTagList(String appId) throws WxErrorException; /** * 获得粉丝标签分页 diff --git a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagServiceImpl.java b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagServiceImpl.java index 61b207068..c93432c39 100644 --- a/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagServiceImpl.java +++ b/yudao-module-wechat/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/service/tag/FansTagServiceImpl.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.mp.service.tag; +import cn.hutool.core.util.ReUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagCreateReqVO; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagExportReqVO; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagPageReqVO; import cn.iocoder.yudao.module.mp.controller.admin.fanstag.vo.FansTagUpdateReqVO; -import cn.iocoder.yudao.module.mp.convert.fanstag.WxFansTagConvert; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; @@ -14,7 +14,6 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Collection; import java.util.List; /** @@ -26,42 +25,33 @@ import java.util.List; @Service @Validated public class FansTagServiceImpl implements FansTagService { - @Resource private WxMpService wxMpService; @Override - public WxUserTag createWxFansTag(FansTagCreateReqVO createReqVO) { - try { - return wxMpService.getUserTagService().tagCreate("wxFansTag"); - } catch (WxErrorException e) { - throw new RuntimeException(e); - } + public WxUserTag createWxFansTag(FansTagCreateReqVO createReqVO) throws WxErrorException { + // TODO 切换公众号操作 调整为 aop 或者 过滤器\拦截器 处理 + wxMpService.switchover(createReqVO.getAppId()); + return wxMpService.getUserTagService().tagCreate(createReqVO.getName()); } @Override - public void updateWxFansTag(FansTagUpdateReqVO updateReqVO) { - // 校验存在 - // 更新 - WxUserTag updateObj = WxFansTagConvert.INSTANCE.convert(updateReqVO); - + public Boolean updateWxFansTag(FansTagUpdateReqVO updateReqVO) throws WxErrorException { + wxMpService.switchover(updateReqVO.getAppId()); + return wxMpService.getUserTagService().tagUpdate(updateReqVO.getId(), updateReqVO.getName()); } @Override - public void deleteWxFansTag(Integer id) { - // 校验存在 - // 删除 + public Boolean deleteWxFansTag(Long id, String appId) throws WxErrorException { + wxMpService.switchover(appId); + return wxMpService.getUserTagService().tagDelete(id); } @Override - public WxUserTag getWxFansTag(Integer id) { - return null; - } - - @Override - public List getWxFansTagList(Collection ids) { - return null; + public List getWxFansTagList(String appId) throws WxErrorException { + wxMpService.switchover(appId); + return wxMpService.getUserTagService().tagGet(); } @Override diff --git a/yudao-ui-admin/src/api/wechatMp/wxFansTag.js b/yudao-ui-admin/src/api/wechatMp/wxFansTag.js index b8ea5c172..50b9f8788 100644 --- a/yudao-ui-admin/src/api/wechatMp/wxFansTag.js +++ b/yudao-ui-admin/src/api/wechatMp/wxFansTag.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 创建粉丝标签 export function createWxFansTag(data) { return request({ - url: '/wechatMp/wx-fans-tag/create', + url: '/wechatMp/fans-tag/create', method: 'post', data: data }) @@ -12,7 +12,7 @@ export function createWxFansTag(data) { // 更新粉丝标签 export function updateWxFansTag(data) { return request({ - url: '/wechatMp/wx-fans-tag/update', + url: '/wechatMp/fans-tag/update', method: 'put', data: data }) @@ -21,7 +21,7 @@ export function updateWxFansTag(data) { // 删除粉丝标签 export function deleteWxFansTag(id) { return request({ - url: '/wechatMp/wx-fans-tag/delete?id=' + id, + url: '/wechatMp/fans-tag/delete?id=' + id, method: 'delete' }) } @@ -29,15 +29,15 @@ export function deleteWxFansTag(id) { // 获得粉丝标签 export function getWxFansTag(id) { return request({ - url: '/wechatMp/wx-fans-tag/get?id=' + id, + url: '/wechatMp/fans-tag/get?id=' + id, method: 'get' }) } // 获得粉丝标签分页 -export function getWxFansTagPage(query) { +export function getWxFansTagList(query) { return request({ - url: '/wechatMp/wx-fans-tag/page', + url: '/wechatMp/fans-tag/list', method: 'get', params: query }) @@ -46,7 +46,7 @@ export function getWxFansTagPage(query) { // 导出粉丝标签 Excel export function exportWxFansTagExcel(query) { return request({ - url: '/wechatMp/wx-fans-tag/export-excel', + url: '/wechatMp/fans-tag/export-excel', method: 'get', params: query, responseType: 'blob' diff --git a/yudao-ui-admin/src/views/wechatMp/wxFansTag/index.vue b/yudao-ui-admin/src/views/wechatMp/wxFansTag/index.vue index 8f7dca845..bc647291a 100644 --- a/yudao-ui-admin/src/views/wechatMp/wxFansTag/index.vue +++ b/yudao-ui-admin/src/views/wechatMp/wxFansTag/index.vue @@ -6,17 +6,7 @@ - - - - - - - - - + 搜索 重置 @@ -27,43 +17,54 @@ 新增 + v-hasPermi="['wechatMp:fans-tag:create']">新增 导出 + v-hasPermi="['wechatMp:fans-tag:export']">导出 +
+
+
公众号名称
+ +
+ +
+ +
+
{{ account.name }}
+
+
+
+ + + + + + + + + + + +
+
- - - - - - - - - - - - - - - @@ -86,160 +87,179 @@ -