对齐 boot 与 cloud 的代码
							parent
							
								
									0feb865ef0
								
							
						
					
					
						commit
						9ba06ec07e
					
				| 
						 | 
					@ -14,8 +14,8 @@ import cn.iocoder.yudao.framework.operatelog.core.service.OperateLog;
 | 
				
			||||||
import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
 | 
					import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService;
 | 
				
			||||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
 | 
					import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
 | 
				
			||||||
import com.google.common.collect.Maps;
 | 
					import com.google.common.collect.Maps;
 | 
				
			||||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
					 | 
				
			||||||
import io.swagger.v3.oas.annotations.Operation;
 | 
					import io.swagger.v3.oas.annotations.Operation;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.tags.Tag;
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.aspectj.lang.ProceedingJoinPoint;
 | 
					import org.aspectj.lang.ProceedingJoinPoint;
 | 
				
			||||||
import org.aspectj.lang.annotation.Around;
 | 
					import org.aspectj.lang.annotation.Around;
 | 
				
			||||||
| 
						 | 
					@ -267,9 +267,9 @@ public class OperateLogAspect {
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return Arrays.stream(requestMethods).filter(requestMethod ->
 | 
					        return Arrays.stream(requestMethods).filter(requestMethod ->
 | 
				
			||||||
                        requestMethod == RequestMethod.POST
 | 
					                requestMethod == RequestMethod.POST
 | 
				
			||||||
                                || requestMethod == RequestMethod.PUT
 | 
					                        || requestMethod == RequestMethod.PUT
 | 
				
			||||||
                                || requestMethod == RequestMethod.DELETE)
 | 
					                        || requestMethod == RequestMethod.DELETE)
 | 
				
			||||||
                .findFirst().orElse(null);
 | 
					                .findFirst().orElse(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,16 +73,18 @@ public interface BpmTaskConvert {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    BpmTaskDonePageItemRespVO convert2(HistoricTaskInstance bean);
 | 
					    BpmTaskDonePageItemRespVO convert2(HistoricTaskInstance bean);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Mappings({@Mapping(source = "processInstance.id", target = "id"),
 | 
					    @Mappings({
 | 
				
			||||||
        @Mapping(source = "processInstance.name", target = "name"),
 | 
					            @Mapping(source = "processInstance.id", target = "id"),
 | 
				
			||||||
        @Mapping(source = "processInstance.startUserId", target = "startUserId"),
 | 
					            @Mapping(source = "processInstance.name", target = "name"),
 | 
				
			||||||
        @Mapping(source = "processInstance.processDefinitionId", target = "processDefinitionId"),
 | 
					            @Mapping(source = "processInstance.startUserId", target = "startUserId"),
 | 
				
			||||||
        @Mapping(source = "startUser.nickname", target = "startUserNickname")})
 | 
					            @Mapping(source = "processInstance.processDefinitionId", target = "processDefinitionId"),
 | 
				
			||||||
 | 
					            @Mapping(source = "startUser.nickname", target = "startUserNickname")
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
    BpmTaskTodoPageItemRespVO.ProcessInstance convert(ProcessInstance processInstance, AdminUserRespDTO startUser);
 | 
					    BpmTaskTodoPageItemRespVO.ProcessInstance convert(ProcessInstance processInstance, AdminUserRespDTO startUser);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    default List<BpmTaskRespVO> convertList3(List<HistoricTaskInstance> tasks,
 | 
					    default List<BpmTaskRespVO> convertList3(List<HistoricTaskInstance> tasks,
 | 
				
			||||||
                                             Map<String, BpmTaskExtDO> bpmTaskExtDOMap, HistoricProcessInstance processInstance,
 | 
					        Map<String, BpmTaskExtDO> bpmTaskExtDOMap, HistoricProcessInstance processInstance,
 | 
				
			||||||
                                             Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap) {
 | 
					        Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap) {
 | 
				
			||||||
        return CollectionUtils.convertList(tasks, task -> {
 | 
					        return CollectionUtils.convertList(tasks, task -> {
 | 
				
			||||||
            BpmTaskRespVO respVO = convert3(task);
 | 
					            BpmTaskRespVO respVO = convert3(task);
 | 
				
			||||||
            BpmTaskExtDO taskExtDO = bpmTaskExtDOMap.get(task.getId());
 | 
					            BpmTaskExtDO taskExtDO = bpmTaskExtDOMap.get(task.getId());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId,
 | 
					    public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId,
 | 
				
			||||||
        String taskDefinitionKey) {
 | 
					                                                                                String taskDefinitionKey) {
 | 
				
			||||||
        return taskRuleMapper.selectListByProcessDefinitionId(processDefinitionId, taskDefinitionKey);
 | 
					        return taskRuleMapper.selectListByProcessDefinitionId(processDefinitionId, taskDefinitionKey);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -128,14 +128,14 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
				
			||||||
        validTaskAssignRuleOptions(reqVO.getType(), reqVO.getOptions());
 | 
					        validTaskAssignRuleOptions(reqVO.getType(), reqVO.getOptions());
 | 
				
			||||||
        // 校验是否已经配置
 | 
					        // 校验是否已经配置
 | 
				
			||||||
        BpmTaskAssignRuleDO existRule =
 | 
					        BpmTaskAssignRuleDO existRule =
 | 
				
			||||||
            taskRuleMapper.selectListByModelIdAndTaskDefinitionKey(reqVO.getModelId(), reqVO.getTaskDefinitionKey());
 | 
					                taskRuleMapper.selectListByModelIdAndTaskDefinitionKey(reqVO.getModelId(), reqVO.getTaskDefinitionKey());
 | 
				
			||||||
        if (existRule != null) {
 | 
					        if (existRule != null) {
 | 
				
			||||||
            throw exception(TASK_ASSIGN_RULE_EXISTS, reqVO.getModelId(), reqVO.getTaskDefinitionKey());
 | 
					            throw exception(TASK_ASSIGN_RULE_EXISTS, reqVO.getModelId(), reqVO.getTaskDefinitionKey());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 存储
 | 
					        // 存储
 | 
				
			||||||
        BpmTaskAssignRuleDO rule = BpmTaskAssignRuleConvert.INSTANCE.convert(reqVO)
 | 
					        BpmTaskAssignRuleDO rule = BpmTaskAssignRuleConvert.INSTANCE.convert(reqVO)
 | 
				
			||||||
            .setProcessDefinitionId(BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL); // 只有流程模型,才允许新建
 | 
					                .setProcessDefinitionId(BpmTaskAssignRuleDO.PROCESS_DEFINITION_ID_NULL); // 只有流程模型,才允许新建
 | 
				
			||||||
        taskRuleMapper.insert(rule);
 | 
					        taskRuleMapper.insert(rule);
 | 
				
			||||||
        return rule.getId();
 | 
					        return rule.getId();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -169,14 +169,14 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 遍历,匹配对应的规则
 | 
					        // 遍历,匹配对应的规则
 | 
				
			||||||
        Map<String, BpmTaskAssignRuleRespVO> processInstanceRuleMap =
 | 
					        Map<String, BpmTaskAssignRuleRespVO> processInstanceRuleMap =
 | 
				
			||||||
            CollectionUtils.convertMap(processInstanceRules, BpmTaskAssignRuleRespVO::getTaskDefinitionKey);
 | 
					                CollectionUtils.convertMap(processInstanceRules, BpmTaskAssignRuleRespVO::getTaskDefinitionKey);
 | 
				
			||||||
        for (BpmTaskAssignRuleRespVO modelRule : modelRules) {
 | 
					        for (BpmTaskAssignRuleRespVO modelRule : modelRules) {
 | 
				
			||||||
            BpmTaskAssignRuleRespVO processInstanceRule = processInstanceRuleMap.get(modelRule.getTaskDefinitionKey());
 | 
					            BpmTaskAssignRuleRespVO processInstanceRule = processInstanceRuleMap.get(modelRule.getTaskDefinitionKey());
 | 
				
			||||||
            if (processInstanceRule == null) {
 | 
					            if (processInstanceRule == null) {
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!ObjectUtil.equals(modelRule.getType(), processInstanceRule.getType()) || !ObjectUtil.equal(
 | 
					            if (!ObjectUtil.equals(modelRule.getType(), processInstanceRule.getType()) || !ObjectUtil.equal(
 | 
				
			||||||
                modelRule.getOptions(), processInstanceRule.getOptions())) {
 | 
					                    modelRule.getOptions(), processInstanceRule.getOptions())) {
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -192,7 +192,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
				
			||||||
        // 开始复制
 | 
					        // 开始复制
 | 
				
			||||||
        List<BpmTaskAssignRuleDO> newRules = BpmTaskAssignRuleConvert.INSTANCE.convertList2(rules);
 | 
					        List<BpmTaskAssignRuleDO> newRules = BpmTaskAssignRuleConvert.INSTANCE.convertList2(rules);
 | 
				
			||||||
        newRules.forEach(rule -> rule.setProcessDefinitionId(toProcessDefinitionId).setId(null).setCreateTime(null)
 | 
					        newRules.forEach(rule -> rule.setProcessDefinitionId(toProcessDefinitionId).setId(null).setCreateTime(null)
 | 
				
			||||||
            .setUpdateTime(null));
 | 
					                .setUpdateTime(null));
 | 
				
			||||||
        taskRuleMapper.insertBatch(newRules);
 | 
					        taskRuleMapper.insertBatch(newRules);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -215,17 +215,17 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
 | 
				
			||||||
        if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.ROLE.getType())) {
 | 
					        if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.ROLE.getType())) {
 | 
				
			||||||
            roleApi.validRoleList(options);
 | 
					            roleApi.validRoleList(options);
 | 
				
			||||||
        } else if (ObjectUtils.equalsAny(type, BpmTaskAssignRuleTypeEnum.DEPT_MEMBER.getType(),
 | 
					        } else if (ObjectUtils.equalsAny(type, BpmTaskAssignRuleTypeEnum.DEPT_MEMBER.getType(),
 | 
				
			||||||
            BpmTaskAssignRuleTypeEnum.DEPT_LEADER.getType())) {
 | 
					                BpmTaskAssignRuleTypeEnum.DEPT_LEADER.getType())) {
 | 
				
			||||||
            deptApi.validateDeptList(options);
 | 
					            deptApi.validateDeptList(options);
 | 
				
			||||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.POST.getType())) {
 | 
					        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.POST.getType())) {
 | 
				
			||||||
            postApi.validPostList(options);
 | 
					            postApi.validPostList(options);
 | 
				
			||||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER.getType())) {
 | 
					        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER.getType())) {
 | 
				
			||||||
            adminUserApi.validUserList(options);
 | 
					            adminUserApi.validateUserList(options);
 | 
				
			||||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER_GROUP.getType())) {
 | 
					        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.USER_GROUP.getType())) {
 | 
				
			||||||
            userGroupService.validUserGroups(options);
 | 
					            userGroupService.validUserGroups(options);
 | 
				
			||||||
        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.SCRIPT.getType())) {
 | 
					        } else if (Objects.equals(type, BpmTaskAssignRuleTypeEnum.SCRIPT.getType())) {
 | 
				
			||||||
            dictDataApi.validateDictDatas(DictTypeConstants.TASK_ASSIGN_SCRIPT,
 | 
					            dictDataApi.validateDictDataList(DictTypeConstants.TASK_ASSIGN_SCRIPT,
 | 
				
			||||||
                CollectionUtils.convertSet(options, String::valueOf));
 | 
					                    CollectionUtils.convertSet(options, String::valueOf));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new IllegalArgumentException(format("未知的规则类型({})", type));
 | 
					            throw new IllegalArgumentException(format("未知的规则类型({})", type));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,6 @@ import org.junit.jupiter.api.Test;
 | 
				
			||||||
import org.springframework.context.annotation.Import;
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.time.LocalDateTime;
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
					import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
				
			||||||
| 
						 | 
					@ -86,8 +85,8 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用
 | 
					        // 调用
 | 
				
			||||||
        userGroupService.deleteUserGroup(id);
 | 
					        userGroupService.deleteUserGroup(id);
 | 
				
			||||||
        // 校验数据不存在了
 | 
					       // 校验数据不存在了
 | 
				
			||||||
        Assertions.assertNull(userGroupMapper.selectById(id));
 | 
					       Assertions.assertNull(userGroupMapper.selectById(id));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
| 
						 | 
					@ -101,31 +100,31 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testGetUserGroupPage() {
 | 
					    public void testGetUserGroupPage() {
 | 
				
			||||||
        // mock 数据
 | 
					       // mock 数据
 | 
				
			||||||
        BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
 | 
					       BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
 | 
				
			||||||
            o.setName("芋道源码");
 | 
					           o.setName("芋道源码");
 | 
				
			||||||
            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
					           o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
				
			||||||
            o.setCreateTime(buildTime(2021, 11, 11));
 | 
					           o.setCreateTime(buildTime(2021, 11, 11));
 | 
				
			||||||
        });
 | 
					       });
 | 
				
			||||||
        userGroupMapper.insert(dbUserGroup);
 | 
					       userGroupMapper.insert(dbUserGroup);
 | 
				
			||||||
        // 测试 name 不匹配
 | 
					       // 测试 name 不匹配
 | 
				
			||||||
        userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName("芋道")));
 | 
					       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setName("芋道")));
 | 
				
			||||||
        // 测试 status 不匹配
 | 
					       // 测试 status 不匹配
 | 
				
			||||||
        userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
					       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
 | 
				
			||||||
        // 测试 createTime 不匹配
 | 
					       // 测试 createTime 不匹配
 | 
				
			||||||
        userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(buildTime(2021, 12, 12))));
 | 
					       userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(buildTime(2021, 12, 12))));
 | 
				
			||||||
        // 准备参数
 | 
					       // 准备参数
 | 
				
			||||||
        BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
 | 
					       BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
 | 
				
			||||||
        reqVO.setName("源码");
 | 
					       reqVO.setName("源码");
 | 
				
			||||||
        reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
					       reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
				
			||||||
        reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)}));
 | 
					       reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用
 | 
					       // 调用
 | 
				
			||||||
        PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
 | 
					       PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
 | 
				
			||||||
        // 断言
 | 
					       // 断言
 | 
				
			||||||
        Assertions.assertEquals(1, pageResult.getTotal());
 | 
					       Assertions.assertEquals(1, pageResult.getTotal());
 | 
				
			||||||
        Assertions.assertEquals(1, pageResult.getList().size());
 | 
					       Assertions.assertEquals(1, pageResult.getList().size());
 | 
				
			||||||
        AssertUtils.assertPojoEquals(dbUserGroup, pageResult.getList().get(0));
 | 
					       AssertUtils.assertPojoEquals(dbUserGroup, pageResult.getList().get(0));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,8 +25,8 @@ public interface DictDataApi {
 | 
				
			||||||
        @Parameter(name = "dictType", description = "字典类型", example = "SEX", required = true),
 | 
					        @Parameter(name = "dictType", description = "字典类型", example = "SEX", required = true),
 | 
				
			||||||
        @Parameter(name = "descriptions", description = "字典数据值的数组", example = "1,2", required = true)
 | 
					        @Parameter(name = "descriptions", description = "字典数据值的数组", example = "1,2", required = true)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    CommonResult<Boolean> validateDictDatas(@RequestParam("dictType") String dictType,
 | 
					    CommonResult<Boolean> validateDictDataList(@RequestParam("dictType") String dictType,
 | 
				
			||||||
                                            @RequestParam("values") Collection<String> values);
 | 
					                                               @RequestParam("values") Collection<String> values);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @GetMapping(PREFIX + "/get")
 | 
					    @GetMapping(PREFIX + "/get")
 | 
				
			||||||
    @Operation(summary = "获得指定的字典数据")
 | 
					    @Operation(summary = "获得指定的字典数据")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,6 +55,6 @@ public interface AdminUserApi {
 | 
				
			||||||
    @GetMapping(PREFIX + "/valid")
 | 
					    @GetMapping(PREFIX + "/valid")
 | 
				
			||||||
    @Operation(summary = "校验用户们是否有效")
 | 
					    @Operation(summary = "校验用户们是否有效")
 | 
				
			||||||
    @Parameter(name = "ids", description = "用户编号数组", example = "3,5", required = true)
 | 
					    @Parameter(name = "ids", description = "用户编号数组", example = "3,5", required = true)
 | 
				
			||||||
    CommonResult<Boolean> validUserList(@RequestParam("ids") Set<Long> ids);
 | 
					    CommonResult<Boolean> validateUserList(@RequestParam("ids") Set<Long> ids);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ public class DictDataApiImpl implements DictDataApi {
 | 
				
			||||||
    private DictDataService dictDataService;
 | 
					    private DictDataService dictDataService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public CommonResult<Boolean> validateDictDatas(String dictType, Collection<String> values) {
 | 
					    public CommonResult<Boolean> validateDictDataList(String dictType, Collection<String> values) {
 | 
				
			||||||
        dictDataService.validateDictDataList(dictType, values);
 | 
					        dictDataService.validateDictDataList(dictType, values);
 | 
				
			||||||
        return success(true);
 | 
					        return success(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,7 @@ public class AdminUserApiImpl implements AdminUserApi {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public CommonResult<Boolean> validUserList(Set<Long> ids) {
 | 
					    public CommonResult<Boolean> validateUserList(Set<Long> ids) {
 | 
				
			||||||
        userService.validateUserList(ids);
 | 
					        userService.validateUserList(ids);
 | 
				
			||||||
        return success(true);
 | 
					        return success(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,8 @@ public interface AuthConvert {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    default AuthPermissionInfoRespVO convert(AdminUserDO user, List<RoleDO> roleList, List<MenuDO> menuList) {
 | 
					    default AuthPermissionInfoRespVO convert(AdminUserDO user, List<RoleDO> roleList, List<MenuDO> menuList) {
 | 
				
			||||||
        return AuthPermissionInfoRespVO.builder()
 | 
					        return AuthPermissionInfoRespVO.builder()
 | 
				
			||||||
                .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build())
 | 
					                .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname())
 | 
				
			||||||
 | 
					                        .avatar(user.getAvatar()).build())
 | 
				
			||||||
                .roles(convertSet(roleList, RoleDO::getCode))
 | 
					                .roles(convertSet(roleList, RoleDO::getCode))
 | 
				
			||||||
                .permissions(convertSet(menuList, MenuDO::getPermission))
 | 
					                .permissions(convertSet(menuList, MenuDO::getPermission))
 | 
				
			||||||
                .build();
 | 
					                .build();
 | 
				
			||||||
| 
						 | 
					@ -54,7 +55,7 @@ public interface AuthConvert {
 | 
				
			||||||
            AuthMenuRespVO parentNode = treeNodeMap.get(childNode.getParentId());
 | 
					            AuthMenuRespVO parentNode = treeNodeMap.get(childNode.getParentId());
 | 
				
			||||||
            if (parentNode == null) {
 | 
					            if (parentNode == null) {
 | 
				
			||||||
                LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]",
 | 
					                LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]",
 | 
				
			||||||
                        childNode.getId(), childNode.getParentId());
 | 
					                    childNode.getId(), childNode.getParentId());
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // 将自己添加到父节点中
 | 
					            // 将自己添加到父节点中
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										84
									
								
								yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImplTest.java
								
								
								
								
									
									
									Normal file → Executable file
								
							
							
						
						
									
										84
									
								
								yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImplTest.java
								
								
								
								
									
									
									Normal file → Executable file
								
							| 
						 | 
					@ -17,8 +17,8 @@ import javax.annotation.Resource;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.hutool.core.util.RandomUtil.randomEle;
 | 
					import static cn.hutool.core.util.RandomUtil.randomEle;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
					 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
 | 
					import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
 | 
					import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
					import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
 | 
					import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
 | 
				
			||||||
| 
						 | 
					@ -132,48 +132,48 @@ public class MailLogServiceImplTest extends BaseDbUnitTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testGetMailLogPage() {
 | 
					    public void testGetMailLogPage() {
 | 
				
			||||||
        // mock 数据
 | 
					       // mock 数据
 | 
				
			||||||
        MailLogDO dbMailLog = randomPojo(MailLogDO.class, o -> { // 等会查询到
 | 
					       MailLogDO dbMailLog = randomPojo(MailLogDO.class, o -> { // 等会查询到
 | 
				
			||||||
            o.setUserId(1L);
 | 
					           o.setUserId(1L);
 | 
				
			||||||
            o.setUserType(UserTypeEnum.ADMIN.getValue());
 | 
					           o.setUserType(UserTypeEnum.ADMIN.getValue());
 | 
				
			||||||
            o.setToMail("768@qq.com");
 | 
					           o.setToMail("768@qq.com");
 | 
				
			||||||
            o.setAccountId(10L);
 | 
					           o.setAccountId(10L);
 | 
				
			||||||
            o.setTemplateId(100L);
 | 
					           o.setTemplateId(100L);
 | 
				
			||||||
            o.setSendStatus(MailSendStatusEnum.INIT.getStatus());
 | 
					           o.setSendStatus(MailSendStatusEnum.INIT.getStatus());
 | 
				
			||||||
            o.setSendTime(buildTime(2023, 2, 10));
 | 
					           o.setSendTime(buildTime(2023, 2, 10));
 | 
				
			||||||
            o.setTemplateParams(randomTemplateParams());
 | 
					           o.setTemplateParams(randomTemplateParams());
 | 
				
			||||||
        });
 | 
					       });
 | 
				
			||||||
        mailLogMapper.insert(dbMailLog);
 | 
					       mailLogMapper.insert(dbMailLog);
 | 
				
			||||||
        // 测试 userId 不匹配
 | 
					       // 测试 userId 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserId(2L)));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserId(2L)));
 | 
				
			||||||
        // 测试 userType 不匹配
 | 
					       // 测试 userType 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserType(UserTypeEnum.MEMBER.getValue())));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setUserType(UserTypeEnum.MEMBER.getValue())));
 | 
				
			||||||
        // 测试 toMail 不匹配
 | 
					       // 测试 toMail 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setToMail("788@.qq.com")));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setToMail("788@.qq.com")));
 | 
				
			||||||
        // 测试 accountId 不匹配
 | 
					       // 测试 accountId 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setAccountId(11L)));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setAccountId(11L)));
 | 
				
			||||||
        // 测试 templateId 不匹配
 | 
					       // 测试 templateId 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setTemplateId(101L)));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setTemplateId(101L)));
 | 
				
			||||||
        // 测试 sendStatus 不匹配
 | 
					       // 测试 sendStatus 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendStatus(MailSendStatusEnum.SUCCESS.getStatus())));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendStatus(MailSendStatusEnum.SUCCESS.getStatus())));
 | 
				
			||||||
        // 测试 sendTime 不匹配
 | 
					       // 测试 sendTime 不匹配
 | 
				
			||||||
        mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendTime(buildTime(2023, 3, 10))));
 | 
					       mailLogMapper.insert(cloneIgnoreId(dbMailLog, o -> o.setSendTime(buildTime(2023, 3, 10))));
 | 
				
			||||||
        // 准备参数
 | 
					       // 准备参数
 | 
				
			||||||
        MailLogPageReqVO reqVO = new MailLogPageReqVO();
 | 
					       MailLogPageReqVO reqVO = new MailLogPageReqVO();
 | 
				
			||||||
        reqVO.setUserId(1L);
 | 
					       reqVO.setUserId(1L);
 | 
				
			||||||
        reqVO.setUserType(UserTypeEnum.ADMIN.getValue());
 | 
					       reqVO.setUserType(UserTypeEnum.ADMIN.getValue());
 | 
				
			||||||
        reqVO.setToMail("768");
 | 
					       reqVO.setToMail("768");
 | 
				
			||||||
        reqVO.setAccountId(10L);
 | 
					       reqVO.setAccountId(10L);
 | 
				
			||||||
        reqVO.setTemplateId(100L);
 | 
					       reqVO.setTemplateId(100L);
 | 
				
			||||||
        reqVO.setSendStatus(MailSendStatusEnum.INIT.getStatus());
 | 
					       reqVO.setSendStatus(MailSendStatusEnum.INIT.getStatus());
 | 
				
			||||||
        reqVO.setSendTime((buildBetweenTime(2023, 2, 1, 2023, 2, 15)));
 | 
					       reqVO.setSendTime((buildBetweenTime(2023, 2, 1, 2023, 2, 15)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用
 | 
					       // 调用
 | 
				
			||||||
        PageResult<MailLogDO> pageResult = mailLogService.getMailLogPage(reqVO);
 | 
					       PageResult<MailLogDO> pageResult = mailLogService.getMailLogPage(reqVO);
 | 
				
			||||||
        // 断言
 | 
					       // 断言
 | 
				
			||||||
        assertEquals(1, pageResult.getTotal());
 | 
					       assertEquals(1, pageResult.getTotal());
 | 
				
			||||||
        assertEquals(1, pageResult.getList().size());
 | 
					       assertEquals(1, pageResult.getList().size());
 | 
				
			||||||
        assertPojoEquals(dbMailLog, pageResult.getList().get(0));
 | 
					       assertPojoEquals(dbMailLog, pageResult.getList().get(0));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static Map<String, Object> randomTemplateParams() {
 | 
					    private static Map<String, Object> randomTemplateParams() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -279,16 +279,16 @@ public class MailSendServiceImplTest extends BaseMockitoUnitTest {
 | 
				
			||||||
            // mock 方法(发送邮件)
 | 
					            // mock 方法(发送邮件)
 | 
				
			||||||
            String messageId = randomString();
 | 
					            String messageId = randomString();
 | 
				
			||||||
            mailUtilMock.when(() -> MailUtil.send(
 | 
					            mailUtilMock.when(() -> MailUtil.send(
 | 
				
			||||||
                            argThat(mailAccount -> {
 | 
					                    argThat(mailAccount -> {
 | 
				
			||||||
                                assertEquals("芋艿 <7685@qq.com>", mailAccount.getFrom());
 | 
					                        assertEquals("芋艿 <7685@qq.com>", mailAccount.getFrom());
 | 
				
			||||||
                                assertTrue(mailAccount.isAuth());
 | 
					                        assertTrue(mailAccount.isAuth());
 | 
				
			||||||
                                assertEquals(account.getUsername(), mailAccount.getUser());
 | 
					                        assertEquals(account.getUsername(), mailAccount.getUser());
 | 
				
			||||||
                                assertEquals(account.getPassword(), mailAccount.getPass());
 | 
					                        assertEquals(account.getPassword(), mailAccount.getPass());
 | 
				
			||||||
                                assertEquals(account.getHost(), mailAccount.getHost());
 | 
					                        assertEquals(account.getHost(), mailAccount.getHost());
 | 
				
			||||||
                                assertEquals(account.getPort(), mailAccount.getPort());
 | 
					                        assertEquals(account.getPort(), mailAccount.getPort());
 | 
				
			||||||
                                assertEquals(account.getSslEnable(), mailAccount.isSslEnable());
 | 
					                        assertEquals(account.getSslEnable(), mailAccount.isSslEnable());
 | 
				
			||||||
                                return true;
 | 
					                        return true;
 | 
				
			||||||
                            }), eq(message.getMail()), eq(message.getTitle()), eq(message.getContent()), eq(true)))
 | 
					                    }), eq(message.getMail()), eq(message.getTitle()), eq(message.getContent()), eq(true)))
 | 
				
			||||||
                    .thenReturn(messageId);
 | 
					                    .thenReturn(messageId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 调用
 | 
					            // 调用
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue