fix(粉丝标签管理): 增、删、改、查

This commit is contained in:
fengdan
2022-06-23 15:26:31 +08:00
parent 977cc19fe3
commit 372b4a70aa
10 changed files with 317 additions and 309 deletions

View File

@ -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<WxUserTag> createWxFansTag(@Valid @RequestBody FansTagCreateReqVO createReqVO) {
@PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:create')")
public CommonResult<WxUserTag> 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<Boolean> updateWxFansTag(@Valid @RequestBody FansTagUpdateReqVO updateReqVO) {
fansTagService.updateWxFansTag(updateReqVO);
return success(true);
@PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:update')")
public CommonResult<Boolean> 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<Boolean> 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<FansTagRespVO> 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<Boolean> 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<List<FansTagRespVO>> getWxFansTagList(@RequestParam("ids") Collection<Integer> ids) {
List<WxUserTag> list = fansTagService.getWxFansTagList(ids);
@ApiOperation("取公众号已创建的标签")
@PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')")
public CommonResult<List<FansTagRespVO>> getWxFansTagList(@NotEmpty(message = "公众号appId不能为空")
@RequestParam("appId") String appId) throws WxErrorException {
List<WxUserTag> list = fansTagService.getWxFansTagList(appId);
return success(WxFansTagConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@ApiOperation("得粉丝标签分页")
@PreAuthorize("@ss.hasPermission('wechatMp:wx-fans-tag:query')")
public CommonResult<PageResult<FansTagRespVO>> getWxFansTagPage(@Valid FansTagPageReqVO pageVO) {
PageResult<WxUserTag> pageResult = fansTagService.getWxFansTagPage(pageVO);
return success(WxFansTagConvert.INSTANCE.convertPage(pageResult));
@ApiOperation("取公众号已创建的标签")
@PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')")
public CommonResult<PageResult<FansTagRespVO>> page() throws WxErrorException {
PageResult<WxUserTag> page = new PageResult<>();
return success(WxFansTagConvert.INSTANCE.convertPage(page));
}
@GetMapping("/tagListUser")
@ApiOperation("获取标签下粉丝列表")
@PreAuthorize("@ss.hasPermission('wechatMp:fans-tag:query')")
public CommonResult<String> 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 {

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<WxUserTag> getWxFansTagList(Collection<Integer> ids);
List<WxUserTag> getWxFansTagList(String appId) throws WxErrorException;
/**
* 获得粉丝标签分页

View File

@ -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<WxUserTag> getWxFansTagList(Collection<Integer> ids) {
return null;
public List<WxUserTag> getWxFansTagList(String appId) throws WxErrorException {
wxMpService.switchover(appId);
return wxMpService.getUserTagService().tagGet();
}
@Override