Commit 8facf901847e55885988a3827b3d8e0388b4f7c4
Merge remote-tracking branch 'origin/dev' into dev
Showing
20 changed files
with
298 additions
and
60 deletions
urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/api/task/BpmProcessTaskApi.java
| 1 | package com.zteits.urbanops.module.bpm.api.task; | 1 | package com.zteits.urbanops.module.bpm.api.task; |
| 2 | 2 | ||
| 3 | +import com.zteits.urbanops.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; | ||
| 4 | +import com.zteits.urbanops.module.bpm.controller.admin.task.vo.task.BpmTaskReturnReqVO; | ||
| 5 | +import jakarta.validation.Valid; | ||
| 3 | import jakarta.validation.constraints.NotEmpty; | 6 | import jakarta.validation.constraints.NotEmpty; |
| 7 | +import org.springframework.web.bind.annotation.RequestBody; | ||
| 4 | 8 | ||
| 5 | /** | 9 | /** |
| 6 | * 流程任务 Api 接口 | 10 | * 流程任务 Api 接口 |
| @@ -18,4 +22,18 @@ public interface BpmProcessTaskApi { | @@ -18,4 +22,18 @@ public interface BpmProcessTaskApi { | ||
| 18 | void triggerTask(@NotEmpty(message = "流程实例的编号不能为空") String processInstanceId, | 22 | void triggerTask(@NotEmpty(message = "流程实例的编号不能为空") String processInstanceId, |
| 19 | @NotEmpty(message = "任务 Key 不能为空") String taskDefineKey); | 23 | @NotEmpty(message = "任务 Key 不能为空") String taskDefineKey); |
| 20 | 24 | ||
| 25 | + /** | ||
| 26 | + * 通过 | ||
| 27 | + * | ||
| 28 | + * @param reqVO 流程实例编号 | ||
| 29 | + */ | ||
| 30 | + void approveTask(@Valid BpmTaskApproveReqVO reqVO); | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 退回 | ||
| 34 | + * | ||
| 35 | + * @param reqVO 流程实例编号 | ||
| 36 | + */ | ||
| 37 | + void returnTask(@Valid BpmTaskReturnReqVO reqVO); | ||
| 38 | + | ||
| 21 | } | 39 | } |
urbanops-module-bpm/src/main/java/com/zteits/urbanops/module/bpm/api/task/BpmProcessTaskApiImpl.java
| 1 | package com.zteits.urbanops.module.bpm.api.task; | 1 | package com.zteits.urbanops.module.bpm.api.task; |
| 2 | 2 | ||
| 3 | +import com.zteits.urbanops.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; | ||
| 4 | +import com.zteits.urbanops.module.bpm.controller.admin.task.vo.task.BpmTaskReturnReqVO; | ||
| 3 | import com.zteits.urbanops.module.bpm.service.task.BpmTaskService; | 5 | import com.zteits.urbanops.module.bpm.service.task.BpmTaskService; |
| 4 | import jakarta.annotation.Resource; | 6 | import jakarta.annotation.Resource; |
| 5 | import org.springframework.stereotype.Service; | 7 | import org.springframework.stereotype.Service; |
| 6 | import org.springframework.validation.annotation.Validated; | 8 | import org.springframework.validation.annotation.Validated; |
| 7 | 9 | ||
| 10 | +import static com.zteits.urbanops.framework.web.core.util.WebFrameworkUtils.getLoginUserId; | ||
| 11 | + | ||
| 8 | /** | 12 | /** |
| 9 | * 流程任务 Api 实现类 | 13 | * 流程任务 Api 实现类 |
| 10 | * | 14 | * |
| @@ -22,4 +26,14 @@ public class BpmProcessTaskApiImpl implements BpmProcessTaskApi { | @@ -22,4 +26,14 @@ public class BpmProcessTaskApiImpl implements BpmProcessTaskApi { | ||
| 22 | bpmTaskService.triggerTask(processInstanceId, taskDefineKey); | 26 | bpmTaskService.triggerTask(processInstanceId, taskDefineKey); |
| 23 | } | 27 | } |
| 24 | 28 | ||
| 29 | + @Override | ||
| 30 | + public void approveTask(BpmTaskApproveReqVO reqVO) { | ||
| 31 | + bpmTaskService.approveTask(getLoginUserId(), reqVO); | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + @Override | ||
| 35 | + public void returnTask(BpmTaskReturnReqVO reqVO) { | ||
| 36 | + bpmTaskService.returnTask(getLoginUserId(), reqVO); | ||
| 37 | + } | ||
| 38 | + | ||
| 25 | } | 39 | } |
urbanops-module-garden/pom.xml
| @@ -126,6 +126,12 @@ | @@ -126,6 +126,12 @@ | ||
| 126 | <artifactId>urbanops-module-system</artifactId> | 126 | <artifactId>urbanops-module-system</artifactId> |
| 127 | <version>${revision}</version> | 127 | <version>${revision}</version> |
| 128 | </dependency> | 128 | </dependency> |
| 129 | + <dependency> | ||
| 130 | + <groupId>com.zteits.boot</groupId> | ||
| 131 | + <artifactId>urbanops-module-bpm</artifactId> | ||
| 132 | + <version>2025.10-SNAPSHOT</version> | ||
| 133 | + <scope>compile</scope> | ||
| 134 | + </dependency> | ||
| 129 | </dependencies> | 135 | </dependencies> |
| 130 | 136 | ||
| 131 | </project> | 137 | </project> |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/AssignTasksInfoController.java
| @@ -9,6 +9,7 @@ import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | @@ -9,6 +9,7 @@ import com.zteits.urbanops.framework.excel.core.util.ExcelUtils; | ||
| 9 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; | 9 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; |
| 10 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoRespVO; | 10 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoRespVO; |
| 11 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; | 11 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; |
| 12 | +import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoUpdReqVO; | ||
| 12 | import com.zteits.urbanops.module.garden.convert.AssignTaskConvert; | 13 | import com.zteits.urbanops.module.garden.convert.AssignTaskConvert; |
| 13 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; | 14 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; |
| 14 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; | 15 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; |
| @@ -160,7 +161,7 @@ public class AssignTasksInfoController { | @@ -160,7 +161,7 @@ public class AssignTasksInfoController { | ||
| 160 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") | 161 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") |
| 161 | @Operation(summary = "派单任务-驳回") | 162 | @Operation(summary = "派单任务-驳回") |
| 162 | @PutMapping(value = "/reject") | 163 | @PutMapping(value = "/reject") |
| 163 | - public CommonResult reject(@RequestBody AssignTasksInfoSaveReqVO assignTaskCompany) { | 164 | + public CommonResult reject(@RequestBody AssignTasksInfoUpdReqVO assignTaskCompany) { |
| 164 | return success(assignTasksInfoService.rejectAssignTaskCompany(assignTaskCompany)); | 165 | return success(assignTasksInfoService.rejectAssignTaskCompany(assignTaskCompany)); |
| 165 | } | 166 | } |
| 166 | 167 | ||
| @@ -168,7 +169,7 @@ public class AssignTasksInfoController { | @@ -168,7 +169,7 @@ public class AssignTasksInfoController { | ||
| 168 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") | 169 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") |
| 169 | @Operation(summary = "派单任务-催交") | 170 | @Operation(summary = "派单任务-催交") |
| 170 | @PutMapping(value = "/submission") | 171 | @PutMapping(value = "/submission") |
| 171 | - public CommonResult submission(@RequestBody AssignTasksInfoSaveReqVO assignTaskCompany) { | 172 | + public CommonResult submission(@RequestBody AssignTasksInfoUpdReqVO assignTaskCompany) { |
| 172 | return success(assignTasksInfoService.submissionAssignTaskCompany(assignTaskCompany)); | 173 | return success(assignTasksInfoService.submissionAssignTaskCompany(assignTaskCompany)); |
| 173 | } | 174 | } |
| 174 | 175 | ||
| @@ -176,7 +177,7 @@ public class AssignTasksInfoController { | @@ -176,7 +177,7 @@ public class AssignTasksInfoController { | ||
| 176 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") | 177 | @PreAuthorize("@ss.hasPermission('garden:assign-tasks-info:update')") |
| 177 | @Operation(summary = "派单任务-反馈") | 178 | @Operation(summary = "派单任务-反馈") |
| 178 | @PutMapping(value = "/feedback") | 179 | @PutMapping(value = "/feedback") |
| 179 | - public CommonResult feedback(@RequestBody AssignTasksInfoSaveReqVO assignTaskCompany) { | 180 | + public CommonResult feedback(@RequestBody AssignTasksInfoUpdReqVO assignTaskCompany) { |
| 180 | return success(assignTasksInfoService.feedbackAssignTaskCompany(assignTaskCompany)); | 181 | return success(assignTasksInfoService.feedbackAssignTaskCompany(assignTaskCompany)); |
| 181 | } | 182 | } |
| 182 | } | 183 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/assigntasksinfo/vo/AssignTasksInfoUpdReqVO.java
0 → 100644
| 1 | +package com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import jakarta.validation.constraints.NotEmpty; | ||
| 5 | +import jakarta.validation.constraints.NotNull; | ||
| 6 | +import lombok.Data; | ||
| 7 | + | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | +import java.util.List; | ||
| 10 | + | ||
| 11 | +@Schema(description = "管理后台 - 派单任务-单位关联表(记录单位接收派单后的执行详情)新增/修改 Request VO") | ||
| 12 | +@Data | ||
| 13 | +public class AssignTasksInfoUpdReqVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "自增ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12148") | ||
| 16 | + private Long id; | ||
| 17 | + @Schema(description = "驳回备注(当finish=2时,说明驳回原因)", example = "你说的对") | ||
| 18 | + private String rejectRemark; | ||
| 19 | + | ||
| 20 | + @Schema(description = "备注", example = "你猜") | ||
| 21 | + private String remark; | ||
| 22 | + @Schema(description = "单位提交的任务文件路径(如:填报表格、现场照片等)") | ||
| 23 | + private List<String> dataFile; | ||
| 24 | + | ||
| 25 | +} |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/assigntasks/AssignTasksDO.java
| @@ -58,6 +58,8 @@ public class AssignTasksDO extends BaseDO { | @@ -58,6 +58,8 @@ public class AssignTasksDO extends BaseDO { | ||
| 58 | */ | 58 | */ |
| 59 | private String note; | 59 | private String note; |
| 60 | 60 | ||
| 61 | + /*流程id*/ | ||
| 62 | + private String processInstanceId; | ||
| 61 | 63 | ||
| 62 | @Data | 64 | @Data |
| 63 | public static class TemplateFileDO implements Serializable { | 65 | public static class TemplateFileDO implements Serializable { |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/AssignTasksConstants.java
| @@ -31,4 +31,8 @@ public class AssignTasksConstants { | @@ -31,4 +31,8 @@ public class AssignTasksConstants { | ||
| 31 | public static final int ASSIGN_TASK_SCENE = 6; | 31 | public static final int ASSIGN_TASK_SCENE = 6; |
| 32 | /*办理人角色*/ | 32 | /*办理人角色*/ |
| 33 | public static final String ASSIGN_ROLE_KEY = "zgs_leader"; | 33 | public static final String ASSIGN_ROLE_KEY = "zgs_leader"; |
| 34 | + /** | ||
| 35 | + * bpm流程标识 任务管理 | ||
| 36 | + */ | ||
| 37 | + public static final String ASSIGN_TASK_PROCESS = "common_assign_task"; | ||
| 34 | } | 38 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
| @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| 5 | import com.zteits.urbanops.framework.common.pojo.PageResult; | 5 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 6 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; | 6 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 7 | +import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; | ||
| 8 | +import com.zteits.urbanops.module.bpm.api.task.BpmProcessInstanceApi; | ||
| 9 | +import com.zteits.urbanops.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; | ||
| 7 | import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksPageReqVO; | 10 | import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksPageReqVO; |
| 8 | import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksSaveReqVO; | 11 | import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksSaveReqVO; |
| 9 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; | 12 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; |
| @@ -12,8 +15,9 @@ import com.zteits.urbanops.module.garden.dal.mysql.assigntasks.AssignTasksMapper | @@ -12,8 +15,9 @@ import com.zteits.urbanops.module.garden.dal.mysql.assigntasks.AssignTasksMapper | ||
| 12 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper; | 15 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper; |
| 13 | import com.zteits.urbanops.module.garden.enums.AssignTasksConstants; | 16 | import com.zteits.urbanops.module.garden.enums.AssignTasksConstants; |
| 14 | import com.zteits.urbanops.module.garden.service.assigntasksinfo.AssignTasksInfoService; | 17 | import com.zteits.urbanops.module.garden.service.assigntasksinfo.AssignTasksInfoService; |
| 15 | -import com.zteits.urbanops.module.system.api.dept.DeptApi; | ||
| 16 | -import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; | 18 | +import com.zteits.urbanops.module.system.api.permission.RoleApi; |
| 19 | +import com.zteits.urbanops.module.system.api.user.AdminUserApi; | ||
| 20 | +import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; | ||
| 17 | import jakarta.annotation.Resource; | 21 | import jakarta.annotation.Resource; |
| 18 | import lombok.extern.slf4j.Slf4j; | 22 | import lombok.extern.slf4j.Slf4j; |
| 19 | import org.springframework.stereotype.Service; | 23 | import org.springframework.stereotype.Service; |
| @@ -22,13 +26,14 @@ import org.springframework.util.CollectionUtils; | @@ -22,13 +26,14 @@ import org.springframework.util.CollectionUtils; | ||
| 22 | import org.springframework.validation.annotation.Validated; | 26 | import org.springframework.validation.annotation.Validated; |
| 23 | 27 | ||
| 24 | import java.time.LocalDateTime; | 28 | import java.time.LocalDateTime; |
| 25 | -import java.util.ArrayList; | ||
| 26 | -import java.util.List; | ||
| 27 | -import java.util.Objects; | 29 | +import java.util.*; |
| 30 | +import java.util.function.Function; | ||
| 28 | import java.util.stream.Collectors; | 31 | import java.util.stream.Collectors; |
| 29 | 32 | ||
| 33 | +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; | ||
| 30 | import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; | 34 | import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 31 | -import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.*; | 35 | +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; |
| 36 | +import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getCompanyId; | ||
| 32 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.ASSIGN_TASKS_NOT_EXISTS; | 37 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.ASSIGN_TASKS_NOT_EXISTS; |
| 33 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.ASSIGN_TASKS_NOT_EXISTS_002; | 38 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.ASSIGN_TASKS_NOT_EXISTS_002; |
| 34 | 39 | ||
| @@ -53,9 +58,15 @@ public class AssignTasksServiceImpl implements AssignTasksService { | @@ -53,9 +58,15 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 53 | 58 | ||
| 54 | @Resource | 59 | @Resource |
| 55 | private AssignTasksInfoMapper assignTasksInfoMapper; | 60 | private AssignTasksInfoMapper assignTasksInfoMapper; |
| 61 | + //@Resource | ||
| 62 | + //private DeptApi deptApi; | ||
| 56 | @Resource | 63 | @Resource |
| 57 | - private DeptApi deptApi; | 64 | + private RoleApi roleApi; |
| 65 | + @Resource | ||
| 66 | + AdminUserApi userApi; | ||
| 58 | 67 | ||
| 68 | + @Resource | ||
| 69 | + private BpmProcessInstanceApi processInstanceApi; | ||
| 59 | 70 | ||
| 60 | @Transactional(rollbackFor = Exception.class) | 71 | @Transactional(rollbackFor = Exception.class) |
| 61 | @Override | 72 | @Override |
| @@ -65,8 +76,8 @@ public class AssignTasksServiceImpl implements AssignTasksService { | @@ -65,8 +76,8 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 65 | assignTasksMapper.insert(assignTasks); | 76 | assignTasksMapper.insert(assignTasks); |
| 66 | //保存单位明细 | 77 | //保存单位明细 |
| 67 | assignTasksInfoService.saveAssignTasksInfos(createReqVO.getCompanyIds(), assignTasks); | 78 | assignTasksInfoService.saveAssignTasksInfos(createReqVO.getCompanyIds(), assignTasks); |
| 68 | - //保存单位明细 | ||
| 69 | - | 79 | + //发起工作流 |
| 80 | + //processInstance(createReqVO, assignTasks.getId()); | ||
| 70 | // 返回 | 81 | // 返回 |
| 71 | return assignTasks.getId(); | 82 | return assignTasks.getId(); |
| 72 | } | 83 | } |
| @@ -120,9 +131,7 @@ public class AssignTasksServiceImpl implements AssignTasksService { | @@ -120,9 +131,7 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 120 | // 删除 | 131 | // 删除 |
| 121 | assignTasksMapper.deleteById(id); | 132 | assignTasksMapper.deleteById(id); |
| 122 | //删除关联的明细 | 133 | //删除关联的明细 |
| 123 | - List<Long> ids = new ArrayList<>(); | ||
| 124 | - ids.add(id); | ||
| 125 | - assiAssignTasksInfoMapper.deleteAssignTaskInfoByTaskId(ids); | 134 | + assiAssignTasksInfoMapper.deleteAssignTaskInfoByTaskId(Arrays.asList(id)); |
| 126 | } | 135 | } |
| 127 | 136 | ||
| 128 | @Override | 137 | @Override |
| @@ -174,8 +183,6 @@ public class AssignTasksServiceImpl implements AssignTasksService { | @@ -174,8 +183,6 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 174 | if(allSubTaskFinished) { | 183 | if(allSubTaskFinished) { |
| 175 | assignTasks.setParentFinish(AssignTasksConstants.ASSIGN_TASK_FINISH_1); | 184 | assignTasks.setParentFinish(AssignTasksConstants.ASSIGN_TASK_FINISH_1); |
| 176 | assignTasks.setFinishTime(LocalDateTime.now()); | 185 | assignTasks.setFinishTime(LocalDateTime.now()); |
| 177 | - assignTasks.setUpdateTime(LocalDateTime.now()); | ||
| 178 | - assignTasks.setUpdater(String.valueOf(getLoginUserId())); | ||
| 179 | assignTasksMapper.updateById(assignTasks); | 186 | assignTasksMapper.updateById(assignTasks); |
| 180 | } else { | 187 | } else { |
| 181 | throw exception(ASSIGN_TASKS_NOT_EXISTS_002); | 188 | throw exception(ASSIGN_TASKS_NOT_EXISTS_002); |
| @@ -242,4 +249,65 @@ public class AssignTasksServiceImpl implements AssignTasksService { | @@ -242,4 +249,65 @@ public class AssignTasksServiceImpl implements AssignTasksService { | ||
| 242 | return updatedCount; | 249 | return updatedCount; |
| 243 | } | 250 | } |
| 244 | 251 | ||
| 252 | + /** | ||
| 253 | + * @Author wangqian | ||
| 254 | + * @Description 创建工作流 | ||
| 255 | + * @Date 2025/12/14 10:46 | ||
| 256 | + * @Param createReqVO | ||
| 257 | + * @param id | ||
| 258 | + * @Return void | ||
| 259 | + */ | ||
| 260 | + private void processInstance(AssignTasksSaveReqVO createReqVO, Long id){ | ||
| 261 | + //流程处理人 | ||
| 262 | +// List<Long> userIds = roleApi.getUserIdsByRoleCode(AssignTasksConstants.ASSIGN_ROLE_KEY); | ||
| 263 | +// if (userIds == null) { | ||
| 264 | +// throw exception0(BAD_REQUEST.getCode(),"上报人未配置"); | ||
| 265 | +// } | ||
| 266 | +// List<String> companyIdStrs = createReqVO.getCompanyIds(); | ||
| 267 | +// | ||
| 268 | +// List<AdminUserRespDTO> users = userApi.getUserList(userIds); | ||
| 269 | +// Map<Long, List<AdminUserRespDTO>> deptUserMap = users.stream() | ||
| 270 | +// .filter(user -> user.getDeptId() != null) | ||
| 271 | +// .collect(Collectors.groupingBy(AdminUserRespDTO::getDeptId)); | ||
| 272 | +// //转换公司ID为Long并校验存在性 | ||
| 273 | +// Set<Long> companyIdSet = new HashSet<>(); | ||
| 274 | +// for (String companyIdStr : companyIdStrs) { | ||
| 275 | +// Long companyId = Long.parseLong(companyIdStr); | ||
| 276 | +// companyIdSet.add(companyId); | ||
| 277 | +// if (!deptUserMap.containsKey(companyId)) { | ||
| 278 | +// throw exception0(BAD_REQUEST.getCode(), "上报人未配置"); | ||
| 279 | +// } | ||
| 280 | +// } | ||
| 281 | +// //提取每个部门的第一个用户 | ||
| 282 | +// List<AdminUserRespDTO> distinctUsers = deptUserMap.entrySet().stream() | ||
| 283 | +// .filter(entry -> companyIdSet.contains(entry.getKey())) // 仅保留目标公司的用户 | ||
| 284 | +// .map(entry -> entry.getValue().get(0)) | ||
| 285 | +// .collect(Collectors.toList()); | ||
| 286 | +// | ||
| 287 | +// // 5. 提取用户ID列表 | ||
| 288 | +// List<Long> userIds = distinctUsers.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList()); | ||
| 289 | + | ||
| 290 | + List<Long> userIds = new ArrayList<>(); | ||
| 291 | + userIds.add(148L); | ||
| 292 | + userIds.add(151L); | ||
| 293 | + //发起工作流 | ||
| 294 | + Map<String, List<Long>> startUserSelectAssignees = new HashMap<>(); | ||
| 295 | + startUserSelectAssignees.put("Activity_1r880r6",userIds); | ||
| 296 | + | ||
| 297 | + // 发起 BPM 流程 | ||
| 298 | + Map<String, Object> processInstanceVariables = new HashMap<>(); | ||
| 299 | + processInstanceVariables.put("taskName", createReqVO.getTaskName()); | ||
| 300 | + processInstanceVariables.put("taskType", createReqVO.getTaskType()); | ||
| 301 | + processInstanceVariables.put("deadline", createReqVO.getDeadline()); | ||
| 302 | + String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(), | ||
| 303 | + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(AssignTasksConstants.ASSIGN_TASK_PROCESS) | ||
| 304 | + .setVariables(processInstanceVariables) | ||
| 305 | + .setBusinessKey(String.valueOf(id)) | ||
| 306 | + .setStartUserSelectAssignees(startUserSelectAssignees)); | ||
| 307 | + | ||
| 308 | + // 将工作流的编号,更新到 工单中 | ||
| 309 | + assignTasksMapper.updateById(new AssignTasksDO().setId(id).setProcessInstanceId(processInstanceId)); | ||
| 310 | + | ||
| 311 | + } | ||
| 312 | + | ||
| 245 | } | 313 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoService.java
| @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.garden.service.assigntasksinfo; | @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.garden.service.assigntasksinfo; | ||
| 3 | import com.zteits.urbanops.framework.common.pojo.PageResult; | 3 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 4 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; | 4 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; |
| 5 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; | 5 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; |
| 6 | +import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoUpdReqVO; | ||
| 6 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; | 7 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; |
| 7 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; | 8 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; |
| 8 | import jakarta.validation.Valid; | 9 | import jakarta.validation.Valid; |
| @@ -86,19 +87,19 @@ public interface AssignTasksInfoService { | @@ -86,19 +87,19 @@ public interface AssignTasksInfoService { | ||
| 86 | * @Date 2025/8/22 19:53 | 87 | * @Date 2025/8/22 19:53 |
| 87 | * @Return int | 88 | * @Return int |
| 88 | */ | 89 | */ |
| 89 | - public int rejectAssignTaskCompany(@Valid AssignTasksInfoSaveReqVO tdAssignTaskCompany); | 90 | + public int rejectAssignTaskCompany(@Valid AssignTasksInfoUpdReqVO tdAssignTaskCompany); |
| 90 | /** | 91 | /** |
| 91 | * @Author wangqian | 92 | * @Author wangqian |
| 92 | * @Description 派单提醒 | 93 | * @Description 派单提醒 |
| 93 | * @Date 2025/8/22 19:53 | 94 | * @Date 2025/8/22 19:53 |
| 94 | * @Return int | 95 | * @Return int |
| 95 | */ | 96 | */ |
| 96 | - public int submissionAssignTaskCompany(@Valid AssignTasksInfoSaveReqVO tdAssignTaskCompany); | 97 | + public int submissionAssignTaskCompany(@Valid AssignTasksInfoUpdReqVO tdAssignTaskCompany); |
| 97 | /** | 98 | /** |
| 98 | * @Author wangqian | 99 | * @Author wangqian |
| 99 | * @Description 派单反馈 | 100 | * @Description 派单反馈 |
| 100 | * @Date 2025/8/22 19:53 | 101 | * @Date 2025/8/22 19:53 |
| 101 | * @Return int | 102 | * @Return int |
| 102 | */ | 103 | */ |
| 103 | - public int feedbackAssignTaskCompany(@Valid AssignTasksInfoSaveReqVO tdAssignTaskCompany); | 104 | + public int feedbackAssignTaskCompany(@Valid AssignTasksInfoUpdReqVO tdAssignTaskCompany); |
| 104 | } | 105 | } |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
| 1 | package com.zteits.urbanops.module.garden.service.assigntasksinfo; | 1 | package com.zteits.urbanops.module.garden.service.assigntasksinfo; |
| 2 | 2 | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 3 | import com.alibaba.fastjson.JSONObject; |
| 4 | +import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||
| 4 | import com.zteits.urbanops.framework.common.pojo.PageResult; | 5 | import com.zteits.urbanops.framework.common.pojo.PageResult; |
| 5 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; | 6 | import com.zteits.urbanops.framework.common.util.object.BeanUtils; |
| 6 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; | 7 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO; |
| 7 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; | 8 | import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO; |
| 9 | +import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoUpdReqVO; | ||
| 8 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; | 10 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO; |
| 9 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; | 11 | import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO; |
| 10 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasks.AssignTasksMapper; | 12 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasks.AssignTasksMapper; |
| 11 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper; | 13 | import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper; |
| 12 | import com.zteits.urbanops.module.garden.enums.AssignTasksConstants; | 14 | import com.zteits.urbanops.module.garden.enums.AssignTasksConstants; |
| 13 | -import com.zteits.urbanops.module.garden.util.http.OkHttpClientUtil; | ||
| 14 | import com.zteits.urbanops.module.system.api.dept.DeptApi; | 15 | import com.zteits.urbanops.module.system.api.dept.DeptApi; |
| 15 | import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; | 16 | import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; |
| 17 | +import com.zteits.urbanops.module.system.api.permission.RoleApi; | ||
| 18 | +import com.zteits.urbanops.module.system.api.sms.SmsCodeApi; | ||
| 19 | +import com.zteits.urbanops.module.system.api.sms.dto.code.SmsCodeSendReqDTO; | ||
| 16 | import com.zteits.urbanops.module.system.api.user.AdminUserApi; | 20 | import com.zteits.urbanops.module.system.api.user.AdminUserApi; |
| 17 | import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; | 21 | import com.zteits.urbanops.module.system.api.user.dto.AdminUserRespDTO; |
| 22 | +import com.zteits.urbanops.module.system.dal.dataobject.permission.RoleDO; | ||
| 18 | import jakarta.annotation.Resource; | 23 | import jakarta.annotation.Resource; |
| 19 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
| 20 | import org.apache.commons.collections4.CollectionUtils; | 25 | import org.apache.commons.collections4.CollectionUtils; |
| @@ -30,7 +35,10 @@ import java.util.Map; | @@ -30,7 +35,10 @@ import java.util.Map; | ||
| 30 | import java.util.Objects; | 35 | import java.util.Objects; |
| 31 | import java.util.stream.Collectors; | 36 | import java.util.stream.Collectors; |
| 32 | 37 | ||
| 38 | +import static com.zteits.urbanops.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; | ||
| 33 | import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; | 39 | import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 40 | +import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception0; | ||
| 41 | +import static com.zteits.urbanops.framework.common.util.servlet.ServletUtils.getClientIP; | ||
| 34 | import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 42 | import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 35 | import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserNickname; | 43 | import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserNickname; |
| 36 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; | 44 | import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; |
| @@ -52,10 +60,14 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -52,10 +60,14 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 52 | 60 | ||
| 53 | @Resource | 61 | @Resource |
| 54 | private DeptApi deptApi; | 62 | private DeptApi deptApi; |
| 63 | + | ||
| 64 | + @Resource | ||
| 65 | + private RoleApi roleApi; | ||
| 55 | @Resource | 66 | @Resource |
| 56 | private AdminUserApi adminUserApi; | 67 | private AdminUserApi adminUserApi; |
| 57 | 68 | ||
| 58 | - private String SEND_SMS_CODE_URL = ""; | 69 | + @Resource |
| 70 | + private SmsCodeApi smsCodeApi; | ||
| 59 | 71 | ||
| 60 | // 时间格式常量(与之前保持一致) | 72 | // 时间格式常量(与之前保持一致) |
| 61 | public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; | 73 | public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; |
| @@ -148,7 +160,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -148,7 +160,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 148 | 160 | ||
| 149 | //派单驳回 | 161 | //派单驳回 |
| 150 | @Override | 162 | @Override |
| 151 | - public int rejectAssignTaskCompany(AssignTasksInfoSaveReqVO tdAssignTaskCompany) { | 163 | + public int rejectAssignTaskCompany(AssignTasksInfoUpdReqVO tdAssignTaskCompany) { |
| 152 | AssignTasksInfoDO assignTaskInfo = assignTasksInfoMapper.selectById(tdAssignTaskCompany.getId()); | 164 | AssignTasksInfoDO assignTaskInfo = assignTasksInfoMapper.selectById(tdAssignTaskCompany.getId()); |
| 153 | //单位任务完成状态(0:未完成,1:已完成) | 165 | //单位任务完成状态(0:未完成,1:已完成) |
| 154 | if (assignTaskInfo != null && 1 == assignTaskInfo.getFinish()) { | 166 | if (assignTaskInfo != null && 1 == assignTaskInfo.getFinish()) { |
| @@ -166,7 +178,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -166,7 +178,7 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 166 | } | 178 | } |
| 167 | 179 | ||
| 168 | @Override | 180 | @Override |
| 169 | - public int submissionAssignTaskCompany(AssignTasksInfoSaveReqVO taskInfo) { | 181 | + public int submissionAssignTaskCompany(AssignTasksInfoUpdReqVO taskInfo) { |
| 170 | // 2. 查询任务详情(判断任务是否存在) | 182 | // 2. 查询任务详情(判断任务是否存在) |
| 171 | AssignTasksInfoDO existingTask = assignTasksInfoMapper.selectById(taskInfo.getId()); | 183 | AssignTasksInfoDO existingTask = assignTasksInfoMapper.selectById(taskInfo.getId()); |
| 172 | if (existingTask == null) { | 184 | if (existingTask == null) { |
| @@ -180,51 +192,53 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | @@ -180,51 +192,53 @@ public class AssignTasksInfoServiceImpl implements AssignTasksInfoService { | ||
| 180 | : ""; // 或 null | 192 | : ""; // 或 null |
| 181 | //填报人信息 | 193 | //填报人信息 |
| 182 | AdminUserRespDTO user = adminUserApi.getUser(getLoginUserId()); | 194 | AdminUserRespDTO user = adminUserApi.getUser(getLoginUserId()); |
| 195 | + //用户角色 | ||
| 196 | + List<Long> roles = roleApi.getRoleIdsByUserId(user.getId()); | ||
| 197 | + RoleDO roleDO = roleApi.getRoleIdByRoleCode(AssignTasksConstants.ASSIGN_ROLE_KEY); | ||
| 198 | + if (roleDO == null) { | ||
| 199 | + //未配置 | ||
| 200 | + throw exception0(BAD_REQUEST.getCode(),"系统未配置填报人角色"); | ||
| 201 | + } | ||
| 202 | + if(!roles.contains(roleDO.getId())) { | ||
| 203 | + //没有权限 | ||
| 204 | + throw exception0(BAD_REQUEST.getCode(),"该用户未授权"); | ||
| 205 | + } | ||
| 183 | String phonenumber = user.getMobile(); | 206 | String phonenumber = user.getMobile(); |
| 184 | - Map<String, Object> resultMap = new HashMap<String, Object>(); | ||
| 185 | - Map<String, String> templateParams = new HashMap<String, String>(); | 207 | + if (StringUtils.isEmpty(phonenumber)) { |
| 208 | + throw exception0(BAD_REQUEST.getCode(),"该用户未配置手机号码"); | ||
| 209 | + } | ||
| 210 | + Map<String, Object> templateParams = new HashMap<String, Object>(); | ||
| 186 | templateParams.put("companyName", existingTask.getCompanyName()); | 211 | templateParams.put("companyName", existingTask.getCompanyName()); |
| 187 | templateParams.put("taskName", assignTasksDO.getTaskName()); | 212 | templateParams.put("taskName", assignTasksDO.getTaskName()); |
| 188 | templateParams.put("deadline", formattedDeadline); | 213 | templateParams.put("deadline", formattedDeadline); |
| 189 | - resultMap.put("mobile", phonenumber);//手机号 | ||
| 190 | - resultMap.put("scene", AssignTasksConstants.ASSIGN_TASK_SCENE);//短信场景 | ||
| 191 | - resultMap.put("templateParams", templateParams);//短信参数 | ||
| 192 | 214 | ||
| 193 | // 5. 发送短信通知 | 215 | // 5. 发送短信通知 |
| 194 | - log.info("派单发送短信 signMap: {}", JSONObject.toJSONString(resultMap)); | ||
| 195 | - Map<String, String> headers = new HashMap<>(4); | ||
| 196 | - headers.put("Content-Type","application/json"); | ||
| 197 | - headers.put("Connection","keep-alive"); | ||
| 198 | - headers.put("Accept","*/*"); | ||
| 199 | - headers.put("Accept-Encoding","gzip, deflate, br"); | ||
| 200 | - try { | ||
| 201 | - String response = OkHttpClientUtil.doPostJson(SEND_SMS_CODE_URL, resultMap, headers); | ||
| 202 | - log.info("派单发送短信 response: {}", JSONObject.toJSONString(response)); | ||
| 203 | - | ||
| 204 | - JSONObject jsonObject = JSONObject.parseObject(response); | ||
| 205 | - | ||
| 206 | - if (jsonObject.getString("code").equals("0")) { | ||
| 207 | - log.info("提交单位任务成功,已通知填报人:手机号={},任务ID={}", phonenumber, existingTask.getId()); | ||
| 208 | - | ||
| 209 | - int newRushNum = (existingTask.getRushNum() == null) ? 1: existingTask.getRushNum() + 1; | ||
| 210 | - //催办次数+1 | ||
| 211 | - AssignTasksInfoDO assignTaskInfo = new AssignTasksInfoDO(); | ||
| 212 | - assignTaskInfo.setId(existingTask.getId()); | ||
| 213 | - assignTaskInfo.setRushNum(newRushNum); | ||
| 214 | - assignTasksInfoMapper.updateById(assignTaskInfo); | ||
| 215 | - } else { | ||
| 216 | - throw exception(ASSIGN_TASKS_INFO_004); | ||
| 217 | - } | ||
| 218 | - } catch (Exception e) { | ||
| 219 | - log.error("提交单位任务成功,但短信通知失败:手机号={},任务ID={}", | ||
| 220 | - phonenumber, existingTask.getId(), e); | ||
| 221 | - throw exception(ASSIGN_TASKS_INFO_005); | 216 | + log.info("派单发送短信 signMap: {}", JSONObject.toJSONString(templateParams)); |
| 217 | + SmsCodeSendReqDTO reqDTO = new SmsCodeSendReqDTO(); | ||
| 218 | + reqDTO.setScene(AssignTasksConstants.ASSIGN_TASK_SCENE); | ||
| 219 | + reqDTO.setMobile(phonenumber);//手机号 | ||
| 220 | + reqDTO.setTemplateParams(templateParams);//短信参数 | ||
| 221 | + reqDTO.setCreateIp(getClientIP()); | ||
| 222 | + Long sendLogId = smsCodeApi.openSendSmsCode(reqDTO); | ||
| 223 | + log.info("派单发送短信 sendLogId: {}", sendLogId); | ||
| 224 | + | ||
| 225 | + if (sendLogId != null) { | ||
| 226 | + log.info("提交单位任务成功,已通知填报人:手机号={},任务ID={}", phonenumber, existingTask.getId()); | ||
| 227 | + | ||
| 228 | + int newRushNum = (existingTask.getRushNum() == null) ? 1: existingTask.getRushNum() + 1; | ||
| 229 | + //催办次数+1 | ||
| 230 | + AssignTasksInfoDO assignTaskInfo = new AssignTasksInfoDO(); | ||
| 231 | + assignTaskInfo.setId(existingTask.getId()); | ||
| 232 | + assignTaskInfo.setRushNum(newRushNum); | ||
| 233 | + assignTasksInfoMapper.updateById(assignTaskInfo); | ||
| 234 | + } else { | ||
| 235 | + throw exception(ASSIGN_TASKS_INFO_004); | ||
| 222 | } | 236 | } |
| 223 | return 1; | 237 | return 1; |
| 224 | } | 238 | } |
| 225 | 239 | ||
| 226 | @Override | 240 | @Override |
| 227 | - public int feedbackAssignTaskCompany(AssignTasksInfoSaveReqVO tdAssignTaskCompany) { | 241 | + public int feedbackAssignTaskCompany(AssignTasksInfoUpdReqVO tdAssignTaskCompany) { |
| 228 | AssignTasksInfoDO assignTaskInfo = assignTasksInfoMapper.selectById(tdAssignTaskCompany.getId()); | 242 | AssignTasksInfoDO assignTaskInfo = assignTasksInfoMapper.selectById(tdAssignTaskCompany.getId()); |
| 229 | if (assignTaskInfo != null) { | 243 | if (assignTaskInfo != null) { |
| 230 | AdminUserRespDTO user = adminUserApi.getUser(getLoginUserId()); | 244 | AdminUserRespDTO user = adminUserApi.getUser(getLoginUserId()); |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApi.java
| @@ -44,4 +44,21 @@ public interface RoleApi { | @@ -44,4 +44,21 @@ public interface RoleApi { | ||
| 44 | * @return 角色ID列表 | 44 | * @return 角色ID列表 |
| 45 | */ | 45 | */ |
| 46 | List<Long> getRoleIdsByUserId(Long userId); | 46 | List<Long> getRoleIdsByUserId(Long userId); |
| 47 | + | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * 通过角色类型,获得用户编号列表 | ||
| 51 | + * | ||
| 52 | + * @param roleCode 角色编码 | ||
| 53 | + * @return 用户ID列表 | ||
| 54 | + */ | ||
| 55 | + List<Long> getUserIdsByRoleCode(String roleCode); | ||
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 通过角色类型,获得角色 | ||
| 59 | + * | ||
| 60 | + * @param roleCode 角色编码 | ||
| 61 | + * @return 角色 | ||
| 62 | + */ | ||
| 63 | + RoleDO getRoleIdByRoleCode(String roleCode); | ||
| 47 | } | 64 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApiImpl.java
| @@ -39,4 +39,14 @@ public class RoleApiImpl implements RoleApi { | @@ -39,4 +39,14 @@ public class RoleApiImpl implements RoleApi { | ||
| 39 | public List<Long> getRoleIdsByUserId(Long userId) { | 39 | public List<Long> getRoleIdsByUserId(Long userId) { |
| 40 | return roleService.getRoleIdsByUserId(userId); | 40 | return roleService.getRoleIdsByUserId(userId); |
| 41 | } | 41 | } |
| 42 | + | ||
| 43 | + @Override | ||
| 44 | + public List<Long> getUserIdsByRoleCode(String roleCode) { | ||
| 45 | + return roleService.getUserIdsByRoleCode(roleCode); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + @Override | ||
| 49 | + public RoleDO getRoleIdByRoleCode(String roleCode) { | ||
| 50 | + return roleService.getRoleIdByRoleCode(roleCode); | ||
| 51 | + } | ||
| 42 | } | 52 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/sms/SmsCodeApi.java
| @@ -36,5 +36,10 @@ public interface SmsCodeApi { | @@ -36,5 +36,10 @@ public interface SmsCodeApi { | ||
| 36 | * @param reqDTO 校验请求 | 36 | * @param reqDTO 校验请求 |
| 37 | */ | 37 | */ |
| 38 | void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO); | 38 | void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO); |
| 39 | - | 39 | + /** |
| 40 | + * 根据模板发送短信 | ||
| 41 | + * | ||
| 42 | + * @param reqDTO 发送请求 | ||
| 43 | + */ | ||
| 44 | + Long openSendSmsCode(@Valid SmsCodeSendReqDTO reqDTO); | ||
| 40 | } | 45 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/sms/SmsCodeApiImpl.java
| @@ -36,4 +36,9 @@ public class SmsCodeApiImpl implements SmsCodeApi { | @@ -36,4 +36,9 @@ public class SmsCodeApiImpl implements SmsCodeApi { | ||
| 36 | smsCodeService.validateSmsCode(reqDTO); | 36 | smsCodeService.validateSmsCode(reqDTO); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | + @Override | ||
| 40 | + public Long openSendSmsCode(SmsCodeSendReqDTO reqDTO) { | ||
| 41 | + return smsCodeService.openSendSmsCode(reqDTO); | ||
| 42 | + } | ||
| 43 | + | ||
| 39 | } | 44 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java
| @@ -8,6 +8,8 @@ import lombok.Data; | @@ -8,6 +8,8 @@ import lombok.Data; | ||
| 8 | import jakarta.validation.constraints.NotEmpty; | 8 | import jakarta.validation.constraints.NotEmpty; |
| 9 | import jakarta.validation.constraints.NotNull; | 9 | import jakarta.validation.constraints.NotNull; |
| 10 | 10 | ||
| 11 | +import java.util.Map; | ||
| 12 | + | ||
| 11 | /** | 13 | /** |
| 12 | * 短信验证码的发送 Request DTO | 14 | * 短信验证码的发送 Request DTO |
| 13 | * | 15 | * |
| @@ -34,4 +36,5 @@ public class SmsCodeSendReqDTO { | @@ -34,4 +36,5 @@ public class SmsCodeSendReqDTO { | ||
| 34 | @NotEmpty(message = "发送 IP 不能为空") | 36 | @NotEmpty(message = "发送 IP 不能为空") |
| 35 | private String createIp; | 37 | private String createIp; |
| 36 | 38 | ||
| 39 | + private Map<String, Object> templateParams; | ||
| 37 | } | 40 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/enums/sms/SmsSceneEnum.java
| @@ -20,6 +20,8 @@ public enum SmsSceneEnum implements ArrayValuable<Integer> { | @@ -20,6 +20,8 @@ public enum SmsSceneEnum implements ArrayValuable<Integer> { | ||
| 20 | MEMBER_UPDATE_MOBILE(2, "user-update-mobile", "会员用户 - 修改手机"), | 20 | MEMBER_UPDATE_MOBILE(2, "user-update-mobile", "会员用户 - 修改手机"), |
| 21 | MEMBER_UPDATE_PASSWORD(3, "user-update-password", "会员用户 - 修改密码"), | 21 | MEMBER_UPDATE_PASSWORD(3, "user-update-password", "会员用户 - 修改密码"), |
| 22 | MEMBER_RESET_PASSWORD(4, "user-reset-password", "会员用户 - 忘记密码"), | 22 | MEMBER_RESET_PASSWORD(4, "user-reset-password", "会员用户 - 忘记密码"), |
| 23 | + USER_SMS_LOGIN(5, "SMS_319860269", "用户 - 手机号登陆"), | ||
| 24 | + YL_USER_SMS_SUBMISSION(6, "SMS_493695107", "园林派单业务催交发送短信"), | ||
| 23 | 25 | ||
| 24 | ADMIN_MEMBER_LOGIN(21, "admin-sms-login", "后台用户 - 手机号登录"), | 26 | ADMIN_MEMBER_LOGIN(21, "admin-sms-login", "后台用户 - 手机号登录"), |
| 25 | ADMIN_MEMBER_REGISTER(22, "admin-sms-register", "后台用户 - 手机号注册"), | 27 | ADMIN_MEMBER_REGISTER(22, "admin-sms-register", "后台用户 - 手机号注册"), |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleService.java
| @@ -140,4 +140,13 @@ public interface RoleService { | @@ -140,4 +140,13 @@ public interface RoleService { | ||
| 140 | * 通过用户编号,获得角色列表 | 140 | * 通过用户编号,获得角色列表 |
| 141 | */ | 141 | */ |
| 142 | List<Long> getRoleIdsByUserId(Long userId); | 142 | List<Long> getRoleIdsByUserId(Long userId); |
| 143 | + | ||
| 144 | + /** | ||
| 145 | + * 通过角色类型,获得用户列表 | ||
| 146 | + */ | ||
| 147 | + List<Long> getUserIdsByRoleCode(String roleCode); | ||
| 148 | + /** | ||
| 149 | + * 通过角色类型,获得角色 | ||
| 150 | + */ | ||
| 151 | + RoleDO getRoleIdByRoleCode(String roleCode); | ||
| 143 | } | 152 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleServiceImpl.java
| @@ -288,6 +288,26 @@ public class RoleServiceImpl implements RoleService { | @@ -288,6 +288,26 @@ public class RoleServiceImpl implements RoleService { | ||
| 288 | return list.stream().map(UserRoleDO::getRoleId).toList(); | 288 | return list.stream().map(UserRoleDO::getRoleId).toList(); |
| 289 | } | 289 | } |
| 290 | 290 | ||
| 291 | + @Override | ||
| 292 | + public List<Long> getUserIdsByRoleCode(String roleCode) { | ||
| 293 | + RoleDO roleDO = roleMapper.selectOne(RoleDO::getCode, roleCode); | ||
| 294 | + if (roleDO == null) { | ||
| 295 | + return null; | ||
| 296 | + } | ||
| 297 | + QueryWrapper<UserRoleDO> sql = new QueryWrapper<>(); | ||
| 298 | + sql.select("user_id"); | ||
| 299 | + List<UserRoleDO> list = userRoleMapper.selectList(sql.lambda().eq(UserRoleDO::getRoleId, roleDO.getId())); | ||
| 300 | + if (CollectionUtil.isEmpty(list)) { | ||
| 301 | + return Collections.emptyList(); | ||
| 302 | + } | ||
| 303 | + return list.stream().map(UserRoleDO::getUserId).toList(); | ||
| 304 | + } | ||
| 305 | + | ||
| 306 | + @Override | ||
| 307 | + public RoleDO getRoleIdByRoleCode(String roleCode) { | ||
| 308 | + return roleMapper.selectOne(RoleDO::getCode, roleCode); | ||
| 309 | + } | ||
| 310 | + | ||
| 291 | /** | 311 | /** |
| 292 | * 获得自身的代理对象,解决 AOP 生效问题 | 312 | * 获得自身的代理对象,解决 AOP 生效问题 |
| 293 | * | 313 | * |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/sms/SmsCodeService.java
| @@ -36,5 +36,10 @@ public interface SmsCodeService { | @@ -36,5 +36,10 @@ public interface SmsCodeService { | ||
| 36 | * @param reqDTO 校验请求 | 36 | * @param reqDTO 校验请求 |
| 37 | */ | 37 | */ |
| 38 | void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO); | 38 | void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO); |
| 39 | - | 39 | + /** |
| 40 | + * 发送短信 | ||
| 41 | + * | ||
| 42 | + * @param reqDTO 校验请求 | ||
| 43 | + */ | ||
| 44 | + Long openSendSmsCode(@Valid SmsCodeSendReqDTO reqDTO); | ||
| 40 | } | 45 | } |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/sms/SmsCodeServiceImpl.java
| @@ -109,4 +109,13 @@ public class SmsCodeServiceImpl implements SmsCodeService { | @@ -109,4 +109,13 @@ public class SmsCodeServiceImpl implements SmsCodeService { | ||
| 109 | return lastSmsCode; | 109 | return lastSmsCode; |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | + @Override | ||
| 113 | + public Long openSendSmsCode(SmsCodeSendReqDTO reqDTO) { | ||
| 114 | + SmsSceneEnum sceneEnum = SmsSceneEnum.getCodeByScene(reqDTO.getScene()); | ||
| 115 | + Assert.notNull(sceneEnum, "验证码场景({}) 查找不到配置", reqDTO.getScene()); | ||
| 116 | + | ||
| 117 | + // 发送验证码 | ||
| 118 | + return smsSendService.sendSingleSms(reqDTO.getMobile(), null, null, | ||
| 119 | + sceneEnum.getTemplateCode(), reqDTO.getTemplateParams()); | ||
| 120 | + } | ||
| 112 | } | 121 | } |