提交 31eca3f3 作者: 典文龙

分发复用,待测试

上级 0b8c9056
package com.yaoyaozw.customer.controller;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.ConditionDTO;
import com.yaoyaozw.customer.dto.DistributeDTO;
import com.yaoyaozw.customer.service.DistributeService;
import com.yaoyaozw.customer.vo.AccountDistributeLogVO;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author: Dwl
* @Date: 2024/03/27/17:14
* @ClassName: DistributeController
* @Version: V3.2.0
* @Description:
*/
@Api(tags = "分发复用")
@RestController
@RequestMapping("/distribute")
public class DistributeController {
@Autowired
private DistributeService distributeService;
@PostMapping("/distribute")
public BaseResult distribute(@RequestBody DistributeDTO distributeDTO) {
return distributeService.distribute(distributeDTO);
}
@PostMapping("/logList")
public GenericsResult<List<AccountDistributeLogVO>> getList() {
return distributeService.logList();
}
}
package com.yaoyaozw.customer.dto;
import lombok.Data;
/**
* @Author: Dwl
* @Date: 2024/03/27/20:32
* @ClassName: ConditionDTO
* @Version: V3.2.0
* @Description:
*/
@Data
public class ConditionDTO {
private Integer currentPage;
private Integer pageSize;
}
package com.yaoyaozw.customer.dto;
import com.yaoyaozw.customer.vo.AuthInfoVO;
import lombok.Data;
import java.util.List;
/**
* @Author: Dwl
* @Date: 2024/03/27/17:17
* @ClassName: DistributeDTO
* @Version: V3.2.0
* @Description:
*/
@Data
public class DistributeDTO {
private String appId;
private List<String> targetAppList;
private AuthInfoVO sourceAuth;
private List<AuthInfoVO> targetAuthList;
private List<String> typeList;
}
package com.yaoyaozw.customer.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @author darker
* @date 2022/11/15 16:30
*/
@Data
public class MenuMainCopyDTO implements Serializable {
@NotNull(message = "公众号不能为空")
@ApiModelProperty("公众号")
private Long authId;
@NotNull(message = "状态不能为空")
@ApiModelProperty("是否立即启用 0-否 1-是")
private Integer openImmediately;
@NotNull(message = "目标公众号不能为空")
@ApiModelProperty("复用的目标公众号ID")
private List<Long> targetAuthList;
@NotNull(message = "复用的菜单不能为空")
@ApiModelProperty("要进行复用的菜单ID")
private List<Integer> sourceMenuSortList;
public void addList(Long authId, List<Long> targetAuthList) {
this.authId = authId;
this.openImmediately = 1;
this.targetAuthList = targetAuthList;
List<Integer> sortList = new ArrayList<>();
sortList.add(1);
this.sourceMenuSortList = sortList;
}
}
package com.yaoyaozw.customer.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
import java.util.Date;
/**
* @Author: Dwl
* @Date: 2024/03/27/18:47
* @ClassName: AccountDistributeRecord
* @Version: V3.2.0
* @Description:
*/
@Data
@TableName("account_distribute_record")
public class AccountDistributeRecord implements Serializable {
@Id
@TableId("id")
private Long id;
/**
* 原公众号id
*/
@TableField("auth_id")
private Long authId;
@TableField("target_id")
private Long targetId;
/**
* 分发的菜单名称
*/
@TableField("function_name")
private String functionName;
/**
* 创建时间
*/
@TableField("gmt_create")
private Date gmtCreate;
@TableField("create_user")
private Long createUser;
/**
* 更新时间
*/
@TableField("gmt_modified")
private Date gmtModified;
private static final long serialVersionUID = 1L;
}
package com.yaoyaozw.customer.feigns;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.dto.MenuMainCopyDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @Author: Dwl
* @Date: 2024/03/27/18:10
* @ClassName: MenuFeignClient
* @Version: V3.2.0
* @Description:
*/
@FeignClient(name = "material-service-dgn", path = "/menu")
public interface MenuFeignClient {
@PostMapping("/copy")
public BaseResult copy(@RequestBody @Validated MenuMainCopyDTO menuMainCopyDTO);
}
package com.yaoyaozw.customer.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.entity.AccountDistributeRecord;
import com.yaoyaozw.customer.vo.AccountDistributeLogVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Author: Dwl
* @Date: 2024/03/27/20:03
* @ClassName: AccountDistributeLogMapper
* @Version: V3.2.0
* @Description:
*/
@Repository
public interface AccountDistributeLogMapper extends BaseMapper<AccountDistributeRecord> {
GenericsResult<List<AccountDistributeLogVO>> selectLogList();
}
package com.yaoyaozw.customer.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.ConditionDTO;
import com.yaoyaozw.customer.dto.DistributeDTO;
import com.yaoyaozw.customer.entity.AccountDistributeRecord;
import com.yaoyaozw.customer.vo.AccountDistributeLogVO;
import java.util.List;
/**
* @Author: Dwl
* @Date: 2024/03/27/17:22
* @ClassName: DistributeService
* @Version: V3.2.0
* @Description:
*/
public interface DistributeService extends IService<AccountDistributeRecord> {
BaseResult distribute(DistributeDTO distributeDTO);
GenericsResult<List<AccountDistributeLogVO>> logList();
}
package com.yaoyaozw.customer.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaoyaozw.customer.common.BaseResult;
import com.yaoyaozw.customer.common.GenericsResult;
import com.yaoyaozw.customer.dto.DistributeDTO;
import com.yaoyaozw.customer.dto.MenuMainCopyDTO;
import com.yaoyaozw.customer.dto.follow.FollowReplyCopyDTO;
import com.yaoyaozw.customer.dto.keyword.CustomerKeywordCopyDTO;
import com.yaoyaozw.customer.entity.AccountDistributeRecord;
import com.yaoyaozw.customer.feigns.MenuFeignClient;
import com.yaoyaozw.customer.mapper.AccountDistributeLogMapper;
import com.yaoyaozw.customer.service.CustomerFollowReplyService;
import com.yaoyaozw.customer.service.CustomerGraphicsDelayService;
import com.yaoyaozw.customer.service.CustomerKeywordService;
import com.yaoyaozw.customer.service.DistributeService;
import com.yaoyaozw.customer.vo.AccountDistributeLogVO;
import com.yaoyaozw.customer.vo.AuthInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author: Dwl
* @Date: 2024/03/27/17:22
* @ClassName: DistributeServiceImpl
* @Version: V3.2.0
* @Description:
*/
@Slf4j
@Service
public class DistributeServiceImpl extends ServiceImpl<AccountDistributeLogMapper, AccountDistributeRecord> implements DistributeService {
@Autowired
private CustomerGraphicsDelayService customerGraphicsDelayService;
@Autowired
private CustomerKeywordService keywordService;
@Autowired
private CustomerFollowReplyService followReplyService;
@Autowired
private MenuFeignClient menuFeignClient;
@Override
public BaseResult distribute(DistributeDTO distributeDTO) {
List<AccountDistributeRecord> distributeLogList = new ArrayList<>();
log.info("开始执行复用任务....");
AuthInfoVO sourceAuth = distributeDTO.getSourceAuth();
List<String> targetAppList = distributeDTO.getTargetAppList();
List<AuthInfoVO> targetAuthList = distributeDTO.getTargetAuthList();
List<Long> idList = targetAuthList.stream().map(AuthInfoVO::getId).collect(Collectors.toList());
List<String> typeList = distributeDTO.getTypeList();
idList.stream().forEach(c -> {
AccountDistributeRecord distributeLog = new AccountDistributeRecord();
distributeLog.setAuthId(distributeLog.getAuthId());
distributeLog.setGmtCreate(new Date());
distributeLog.setGmtModified(new Date());
distributeLog.setTargetId(c.longValue());
for (String type : typeList) {
// 根据 type 的值执行不同的操作
switch (type) {
case "1":
//关回复用
distributeLog.setFunctionName("1");
FollowReplyCopyDTO followReplyCopyDTO = new FollowReplyCopyDTO();
followReplyCopyDTO.setTargetAuthList(targetAuthList);
followReplyCopyDTO.setSourceAuth(sourceAuth);
//followReplyService.copy(followReplyCopyDTO);
break;
case "2":
//关键词复用
distributeLog.setFunctionName("2");
CustomerKeywordCopyDTO customerKeywordCopyDTO = new CustomerKeywordCopyDTO();
customerKeywordCopyDTO.setSourceAuth(sourceAuth);
customerKeywordCopyDTO.setTargetKeywordList(targetAppList);
customerKeywordCopyDTO.setTargetAuthList(targetAuthList);
//keywordService.copy(customerKeywordCopyDTO);
break;
case "3":
//延时客服复用
distributeLog.setFunctionName("3");
//customerGraphicsDelayService.copy(distributeDTO.getAppId(), "", "", null, targetAppList);
break;
case "4":
//菜单管理复用
distributeLog.setFunctionName("4");
MenuMainCopyDTO menuMainCopyDTO = new MenuMainCopyDTO();
menuMainCopyDTO.addList(sourceAuth.getId(), idList);
//menuFeignClient.copy(menuMainCopyDTO);
break;
default:
break;
}
}
distributeLogList.add(distributeLog);
});
this.saveBatch(distributeLogList);
return new BaseResult().success("复用进行中, 请等待");
}
@Override
public GenericsResult<List<AccountDistributeLogVO>> logList() {
return this.baseMapper.selectLogList();
}
}
package com.yaoyaozw.customer.vo;
import lombok.Data;
import java.util.Date;
/**
* @Author: Dwl
* @Date: 2024/03/27/20:15
* @ClassName: AccountDistributeLogVO
* @Version: V3.2.0
* @Description:
*/
@Data
public class AccountDistributeLogVO {
private String nickName;
private String targetName;
private String functionName;
private Date gmtCreate;
private String userName;
private Date gmtModified;
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yaoyaozw.customer.mapper.AccountDistributeLogMapper">
<select id="selectLogList" resultType="java.util.List">
SELECT ai.nick_name AS nickName,
ai.nick_name AS targetName,
adr.function_name AS functionName,
adr.gmt_create AS gmtCreate,
adr.gmt_modified AS gmtModified
FROM account_distribute_record adr
LEFT JOIN authorizer_info ai ON ai.id = adr.auth_id
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论