From 02bb94e413f6950b9786c5ee86c0937bc20f8ae8 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 12 七月 2025 14:42:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java | 189 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 167 insertions(+), 22 deletions(-) diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java index 4360667..570babe 100644 --- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java +++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java @@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.framework.web.service.TokenService; @@ -25,12 +27,24 @@ import com.ruoyi.system.query.KnowledgeListQuery; import com.ruoyi.system.query.TaskListQuery; import com.ruoyi.system.service.*; +import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody; +import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody; +import com.ruoyi.system.utils.wx.model.WeixinProperties; +import com.ruoyi.system.utils.wx.pojo.AppletUserDecodeData; +import com.ruoyi.system.utils.wx.pojo.AppletUserEncrypteData; +import com.ruoyi.system.utils.wx.tools.WxAppletTools; +import com.ruoyi.system.utils.wx.tools.WxUtils; import com.ruoyi.system.vo.system.*; +import com.ruoyi.web.controller.tool.EmailUtils; +import com.ruoyi.web.controller.tool.MsgUtils; import com.sun.jna.platform.win32.LMAccess; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import javax.validation.Valid; @@ -52,6 +66,7 @@ * @author xiaochen * @since 2025-05-28 */ +@Slf4j @Api(tags = "个人中心") @RestController @RequestMapping("/t-user") @@ -81,6 +96,8 @@ @Resource private TDictDataService dictDataService; @Resource + private TNoticeSetService noticeSetService; + @Resource private TLeaveService leaveService; @Resource private TLeaveAuditService leaveAuditService; @@ -96,6 +113,33 @@ private TProblemEscalationService problemEscalationService; @Resource private TNoticeService noticeService; + @Autowired + private RestTemplate wxRestTemplate; + @Autowired + private WeixinProperties weixinProperties; + @Resource + private RedisService redisService; + @ApiOperation(value = "通过code获得openid,获取用户信息",tags = {"微信小程序登录"}) + @GetMapping("/openIdByJsCode") + public R<String> openIdByJsCode(@RequestParam String code) { + Long userId = tokenService.getLoginUser().getUserId(); + SysUser sysUser = sysUserService.selectUserById(userId); + if(Objects.isNull(sysUser)){ + return R.fail("未查询到当前登录用户信息"); + } + if(StringUtils.hasLength(sysUser.getOpenId())){ + return R.ok(); + } + log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code); + WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, weixinProperties, redisService); + Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(code)); + String openid = body.getOpenid(); + sysUser.setOpenId(openid); + sysUserService.updateUser(sysUser); + return R.ok(); + } + @Resource + private MsgUtils msgUtils; @ApiOperation(value = "消息通知列表") @PostMapping(value = "/noticeList") @@ -443,10 +487,10 @@ public R<List<TaskListAllVO>> listAllTask(@RequestBody AppealListDTO appealListDTO) { appealListDTO.setUserId(tokenService.getLoginUserApplet().getUserId() + ""); SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUserApplet().getUserId()); - if (sysUser.getDeptType()==2){ - // 公司部门查询所有任务 - appealListDTO.setUserId(null); - } +// if (sysUser.getDeptType()==2){ +// // 公司部门查询所有任务 +// appealListDTO.setUserId(null); +// } List<TaskListAllVO> res = appealService.listAllTask(appealListDTO); return R.ok(res); } @@ -463,22 +507,17 @@ @ApiOperation(value = "上传督察任务") @PostMapping(value = "/addInspector") - public R<Boolean> addInspector(@RequestBody InspectorAddDTO dto) { + public R<Boolean> addInspector(@RequestBody InspectorAddDTO dto) throws Exception { TTask task = taskCleanerService.getById(dto.getTaskId()); TLocation location = locationService.getById(task.getLocationId()); SysUser sysUser = sysUserService.selectUserById(Long.valueOf(task.getPatrolInspector())); dto.setCommitPerson(tokenService.getLoginUserApplet().getUserId() + ""); + if (dto.getClearStatus() == 1) { dto.setStatus(4); } else { dto.setStatus(1); - TNotice tNotice = new TNotice(); - tNotice.setUserId(sysUser.getUserId()+""); - tNotice.setNoticeContent("【"+location.getLocationName()+"】任务督察不合格,请及时整改!"); - tNotice.setStatus(1); - tNotice.setDataId(dto.getTaskId()); - tNotice.setNoticeType(8); - noticeService.save(tNotice); + } inspectorService.save(dto); return R.ok(); @@ -636,7 +675,7 @@ @ApiOperation(value = "发起请假") @PostMapping(value = "/addLeave") - public R addLeave(@RequestBody LeaveDTO leaveDTO) { + public R addLeave(@RequestBody LeaveDTO leaveDTO) throws Exception { // String startTime1 = leaveDTO.getStartTime1(); // // 轉化爲LocalDateTime類型 // leaveDTO.setStartTime(LocalDateTime.parse(startTime1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); @@ -658,6 +697,12 @@ leaveDTO.setTemplateId(user.getTemplateId()); leaveDTO.setLeavePerson(userId + ""); leaveService.save(leaveDTO); + TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") + .one(); + // 邮箱 + TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one(); + // 授权码 + TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one(); //项目部负责人、部门负责人、公司成员提交由最终审批人审批; if (user.getDeptType() == 2 || sysRole.getRoleName().contains("项目部负责人") || sysRole.getRoleName().contains("部门负责人")) { TLeaveAudit tLeaveAudit1 = new TLeaveAudit(); @@ -696,6 +741,29 @@ tLeaveAudit1.setAuditId(sysUser.getUserId() + ""); tLeaveAudit1.setAuditType(1); leaveAuditService.save(tLeaveAudit1); + // 新增消息 + TNotice tNotice = new TNotice(); + tNotice.setUserId(sysUser.getUserId()+""); + tNotice.setNoticeContent(user.getNickName() + "提交了请假申请,请尽快审核"); + tNotice.setStatus(1); + tNotice.setDataId(leaveDTO.getId()); + tNotice.setNoticeType(6); + + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg4(sysUser.getPhonenumber()); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) { + EmailUtils.sendEmail(sysUser.getEmail(), email.getDataContent(), code.getDataContent(), "你有一条请假申请待处理,请登录沿海市政质管小程序处理。"); + } + break; + case 3: + break; + } + + + noticeService.save(tNotice); TLeaveAudit tLeaveAudit2 = new TLeaveAudit(); tLeaveAudit2.setLeaveId(leaveDTO.getId()); tLeaveAudit2.setAuditStatus(2); @@ -716,6 +784,26 @@ tLeaveAudit1.setAuditId(sysUser.getUserId() + ""); tLeaveAudit1.setAuditType(1); leaveAuditService.save(tLeaveAudit1); + // 新增消息 + TNotice tNotice = new TNotice(); + tNotice.setUserId(sysUser.getUserId()+""); + tNotice.setNoticeContent(user.getNickName() + "提交了请假申请,请尽快审核"); + tNotice.setStatus(1); + tNotice.setDataId(leaveDTO.getId()); + tNotice.setNoticeType(6); + noticeService.save(tNotice); + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg4(sysUser.getPhonenumber()); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) { + EmailUtils.sendEmail(sysUser.getEmail(), email.getDataContent(), code.getDataContent(), "你有一条请假申请待处理,请登录沿海市政质管小程序处理。"); + } + break; + case 3: + break; + } TLeaveAudit tLeaveAudit2 = new TLeaveAudit(); tLeaveAudit2.setLeaveId(leaveDTO.getId()); tLeaveAudit2.setAuditStatus(2); @@ -743,6 +831,26 @@ tLeaveAudit1.setAuditId(sysUser.getUserId() + ""); tLeaveAudit1.setAuditType(1); leaveAuditService.save(tLeaveAudit1); + // 新增消息 + TNotice tNotice = new TNotice(); + tNotice.setUserId(sysUser.getUserId()+""); + tNotice.setNoticeContent(user.getNickName() + "提交了请假申请,请尽快审核"); + tNotice.setStatus(1); + tNotice.setDataId(leaveDTO.getId()); + tNotice.setNoticeType(6); + noticeService.save(tNotice); + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg4(sysUser.getPhonenumber()); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) { + EmailUtils.sendEmail(sysUser.getEmail(), email.getDataContent(), code.getDataContent(), "你有一条请假申请待处理,请登录沿海市政质管小程序处理。"); + } + break; + case 3: + break; + } TLeaveAudit tLeaveAudit2 = new TLeaveAudit(); tLeaveAudit2.setLeaveId(leaveDTO.getId()); tLeaveAudit2.setAuditStatus(2); @@ -754,14 +862,7 @@ } } - // 新增消息 - TNotice tNotice = new TNotice(); - tNotice.setUserId(leaveDTO.getAuditId()); - tNotice.setNoticeContent(user.getNickName() + "提交了请假申请,请尽快审核"); - tNotice.setStatus(1); - tNotice.setDataId(leaveDTO.getId()); - tNotice.setNoticeType(6); - noticeService.save(tNotice); + return R.ok(); } @@ -774,14 +875,21 @@ @ApiOperation(value = "我的审批-审批") @PostMapping(value = "/auditLeave") - public R<Boolean> auditLeave(@RequestBody LeaveAuditDTO dto) { + public R<Boolean> auditLeave(@RequestBody LeaveAuditDTO dto) throws Exception { dto.setAuditId(tokenService.getLoginUserApplet().getUserId() + ""); dto.setAuditTime(LocalDateTime.now()); leaveService.updateById(dto); + List<SysUser> sysUsers = sysUserService.selectAllList(); SysUser sysUser = sysUserService.selectUserById(Long.valueOf(dto.getLeavePerson())); TLeaveAudit leaveAudit = leaveAuditService.lambdaQuery().eq(TLeaveAudit::getLeaveId, dto.getId()) .eq(TLeaveAudit::getAuditType, 2).one(); + TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") + .one(); + // 邮箱 + TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one(); + // 授权码 + TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one(); TNotice tNotice = new TNotice(); tNotice.setUserId(leaveAudit.getAuditId().split(",")[0]); tNotice.setNoticeContent(sysUser.getNickName()+"的请假申请已审核,请查收"); @@ -789,6 +897,29 @@ tNotice.setDataId(dto.getId()); tNotice.setNoticeType(7); noticeService.save(tNotice); + LocalDateTime startTime = dto.getStartTime(); + LocalDateTime endTime = dto.getEndTime(); + SysUser sysUser1 = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(leaveAudit.getAuditId().split(",")[0]))) + .findFirst().orElse(null); + SysUser sysUser2 = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(leaveAudit.getAuditId().split(",")[1]))) + .findFirst().orElse(null); + // 转化为yyyy-MM-dd 格式字符串 + String leaveTime = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+"至"+endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + if (sysUser1!=null){ + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg5(sysUser1.getPhonenumber(),sysUser1.getNickName(),leaveTime); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ + EmailUtils.sendEmail(sysUser1.getEmail(),email.getDataContent(),code.getDataContent(),sysUser1.getNickName()+"的请假申请已审核,请查收"); + } + break; + case 3: + break; + } + } + TNotice tNotice1 = new TNotice(); tNotice1.setUserId(leaveAudit.getAuditId().split(",")[1]); tNotice1.setNoticeContent(sysUser.getNickName()+"的请假申请已审核,请查收"); @@ -796,6 +927,20 @@ tNotice1.setDataId(dto.getId()); tNotice1.setNoticeType(7); noticeService.save(tNotice1); + if (sysUser2!=null) { + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg5(sysUser2.getPhonenumber(), sysUser2.getNickName(), leaveTime); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent()) && StringUtils.hasLength(code.getDataContent())) { + EmailUtils.sendEmail(sysUser2.getEmail(), email.getDataContent(), code.getDataContent(), sysUser2.getNickName() + "的请假申请已审核,请查收"); + } + break; + case 3: + break; + } + } return R.ok(); } -- Gitblit v1.7.1