短信渠道的 CRUD 后端代码的完成
parent
86cbf21d6d
commit
d8d458a024
@ -1,58 +0,0 @@
|
|||||||
package cn.iocoder.dashboard.modules.system.controller.sms.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 渠道(包含模板)信息VO类
|
|
||||||
*
|
|
||||||
* @author zzf
|
|
||||||
* @date 2021/1/25 17:01
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode
|
|
||||||
public class SmsChannelAllVO implements Serializable {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* id
|
|
||||||
*/
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 编码(来自枚举类 阿里、华为、七牛等)
|
|
||||||
*/
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 渠道账号id
|
|
||||||
*/
|
|
||||||
private String apiKey;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 渠道账号秘钥
|
|
||||||
*/
|
|
||||||
private String apiSecret;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实际渠道签名唯一标识
|
|
||||||
*/
|
|
||||||
private String apiSignatureId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 签名值
|
|
||||||
*/
|
|
||||||
private String signature;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 该渠道名下的短信模板集合
|
|
||||||
*/
|
|
||||||
private List<SmsTemplateVO> templateList;
|
|
||||||
|
|
||||||
public SmsTemplateVO getTemplateByTemplateCode(String tempCode) {
|
|
||||||
return templateList.stream().filter(s -> s.getCode().equals(tempCode)).findFirst().get();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@ApiModel("短信渠道创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SysSmsChannelCreateReqVO extends SysSmsChannelBaseVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "渠道编码", required = true, example = "YUN_PIAN", notes = "参见 SmsChannelEnum 枚举类")
|
||||||
|
@NotNull(message = "渠道编码不能为空")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageParam;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@ApiModel("短信渠道分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SysSmsChannelPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "任务状态", example = "1")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "短信签名", example = "芋道源码", notes = "模糊匹配")
|
||||||
|
private String signature;
|
||||||
|
|
||||||
|
@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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ApiModel("短信渠道 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SysSmsChannelRespVO extends SysSmsChannelBaseVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "编号", required = true, example = "1024")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "渠道编码", required = true, example = "YUN_PIAN", notes = "参见 SmsChannelEnum 枚举类")
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "创建时间", required = true)
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@ApiModel("短信渠道更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class SysSmsChannelUpdateReqVO extends SysSmsChannelBaseVO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "编号", required = true, example = "1024")
|
||||||
|
@NotNull(message = "编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,21 +0,0 @@
|
|||||||
package cn.iocoder.dashboard.modules.system.controller.sms.vo.req;
|
|
||||||
|
|
||||||
import cn.iocoder.dashboard.common.pojo.PageParam;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
@ApiModel("消息渠道分页 Request VO")
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class SmsChannelPageReqVO extends PageParam {
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "签名值", example = "源码", notes = "模糊匹配")
|
|
||||||
private String signature;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,43 +0,0 @@
|
|||||||
package cn.iocoder.dashboard.modules.system.controller.sms.vo.resp;
|
|
||||||
|
|
||||||
import cn.iocoder.dashboard.common.pojo.PageParam;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
|
||||||
|
|
||||||
@ApiModel("用户分页 Request VO")
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class SmsChannelPageRespVO extends PageParam {
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配")
|
|
||||||
private String username;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配")
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "开始时间", example = "2020-10-24")
|
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
|
||||||
private Date beginTime;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "结束时间", example = "2020-10-24")
|
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
|
||||||
private Date endTime;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门")
|
|
||||||
private Long deptId;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
package cn.iocoder.dashboard.modules.system.convert.sms;
|
|
||||||
|
|
||||||
import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.sms.vo.SmsChannelAllVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.sms.vo.req.SmsChannelCreateReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface SmsChannelConvert {
|
|
||||||
|
|
||||||
SmsChannelConvert INSTANCE = Mappers.getMapper(SmsChannelConvert.class);
|
|
||||||
|
|
||||||
SysSmsChannelDO convert(SmsChannelCreateReqVO bean);
|
|
||||||
|
|
||||||
SysSmsChannelDO convert(SysUserUpdateReqVO bean);
|
|
||||||
|
|
||||||
List<SmsChannelAllVO> convert(List<SysSmsChannelDO> bean);
|
|
||||||
|
|
||||||
List<SmsChannelProperties> convertProperty(List<SmsChannelAllVO> list);
|
|
||||||
|
|
||||||
List<SmsChannelProperties> convertList(List<SysSmsChannelDO> list);
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.convert.sms;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelRespVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信渠道 Convert
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SysSmsChannelConvert {
|
||||||
|
|
||||||
|
SysSmsChannelConvert INSTANCE = Mappers.getMapper(SysSmsChannelConvert.class);
|
||||||
|
|
||||||
|
SysSmsChannelDO convert(SysSmsChannelCreateReqVO bean);
|
||||||
|
|
||||||
|
SysSmsChannelDO convert(SysSmsChannelUpdateReqVO bean);
|
||||||
|
|
||||||
|
SysSmsChannelRespVO convert(SysSmsChannelDO bean);
|
||||||
|
|
||||||
|
List<SysSmsChannelRespVO> convertList(List<SysSmsChannelDO> list);
|
||||||
|
|
||||||
|
PageResult<SysSmsChannelRespVO> convertPage(PageResult<SysSmsChannelDO> page);
|
||||||
|
|
||||||
|
List<SmsChannelProperties> convertList02(List<SysSmsChannelDO> list);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,149 @@
|
|||||||
|
package cn.iocoder.dashboard.modules.system.service.sms;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.BaseDbUnitTest;
|
||||||
|
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
||||||
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.dashboard.framework.sms.core.client.SmsClientFactory;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsChannelMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsChannelServiceImpl;
|
||||||
|
import cn.iocoder.dashboard.util.collection.ArrayUtils;
|
||||||
|
import cn.iocoder.dashboard.util.object.ObjectUtils;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||||
|
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
|
||||||
|
import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
|
||||||
|
import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
|
||||||
|
import static cn.iocoder.dashboard.util.RandomUtils.*;
|
||||||
|
import static cn.iocoder.dashboard.util.date.DateUtils.buildTime;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link SysSmsChannelServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Import(SysSmsChannelServiceImpl.class)
|
||||||
|
public class SysSmsChannelServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysSmsChannelServiceImpl smsChannelService;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private SmsClientFactory smsClientFactory;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysSmsChannelMapper smsChannelMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateSmsChannel_success() {
|
||||||
|
// 准备参数
|
||||||
|
SysSmsChannelCreateReqVO reqVO = randomPojo(SysSmsChannelCreateReqVO.class, o -> o.setStatus(randomCommonStatus()));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long smsChannelId = smsChannelService.createSmsChannel(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(smsChannelId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
SysSmsChannelDO smsChannel = smsChannelMapper.selectById(smsChannelId);
|
||||||
|
assertPojoEquals(reqVO, smsChannel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSmsChannel_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysSmsChannelDO dbSmsChannel = randomSmsChannelDO();
|
||||||
|
smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbSmsChannel.getId()); // 设置更新的 ID
|
||||||
|
o.setStatus(randomCommonStatus());
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
smsChannelService.updateSmsChannel(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
SysSmsChannelDO smsChannel = smsChannelMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, smsChannel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSmsChannel_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> smsChannelService.updateSmsChannel(reqVO), SMS_CHANNEL_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSmsChannel_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysSmsChannelDO dbSmsChannel = randomSmsChannelDO();
|
||||||
|
smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbSmsChannel.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
smsChannelService.deleteSmsChannel(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(smsChannelMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSmsChannel_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetSmsChannelPage() {
|
||||||
|
// mock 数据
|
||||||
|
SysSmsChannelDO dbSmsChannel = randomPojo(SysSmsChannelDO.class, o -> { // 等会查询到
|
||||||
|
o.setSignature("芋道源码");
|
||||||
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
o.setCreateTime(buildTime(2020, 12, 12));
|
||||||
|
});
|
||||||
|
smsChannelMapper.insert(dbSmsChannel);
|
||||||
|
// 测试 signature 不匹配
|
||||||
|
smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setSignature("源码")));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setCreateTime(buildTime(2020, 11, 11))));
|
||||||
|
// 准备参数
|
||||||
|
SysSmsChannelPageReqVO reqVO = new SysSmsChannelPageReqVO();
|
||||||
|
reqVO.setSignature("芋道");
|
||||||
|
reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
reqVO.setBeginCreateTime(buildTime(2020, 12, 1));
|
||||||
|
reqVO.setEndCreateTime(buildTime(2020, 12, 24));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<SysSmsChannelDO> pageResult = smsChannelService.getSmsChannelPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbSmsChannel, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
private static SysSmsChannelDO randomSmsChannelDO(Consumer<SysSmsChannelDO>... consumers) {
|
||||||
|
Consumer<SysSmsChannelDO> consumer = (o) -> {
|
||||||
|
o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
|
||||||
|
};
|
||||||
|
return randomPojo(SysSmsChannelDO.class, ArrayUtils.append(consumer, consumers));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue