Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/dev' into dev

phoenix 1 rok pred
rodič
commit
a010b06a4e

+ 1 - 1
Makefile

@@ -2,7 +2,7 @@ merge:
 	git checkout master;git merge dev;git push;git checkout dev;
 
 create-tag:
-	git checkout master;git tag v1.2.0;git push origin --tags;git checkout dev;
+	git checkout master;git tag v1.2.1;git push origin --tags;git checkout dev;
 
 remove-tag:
 	git tag -d v1.1.8;git push origin :refs/tags/v1.1.8;

+ 12 - 8
src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.oa.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -8,6 +9,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.utils.LocalDateTimeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.oa.dto.*;
 import com.xjrsoft.module.oa.entity.News;
 import com.xjrsoft.module.oa.entity.NewsAppendix;
@@ -57,12 +59,14 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
     private final UserDeptRelationMapper userDeptRelationMapper;
 
 
-    private final BaseStudentSchoolRollMapper  baseStudentSchoolRollMapper;
+    private final BaseStudentSchoolRollMapper baseStudentSchoolRollMapper;
 
     private final IWeChatService weChatService;
 
     private final UserMapper userMapper;
 
+    private final CommonPropertiesConfig commonPropertiesConfig;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long add(AddNewsDto addNewsDto) {
@@ -107,7 +111,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
         News news = BeanUtil.toBean(updateNewsDto, News.class);
         newsMapper.updateById(news);
 
-        newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId,news.getId()));
+        newsAppendixMapper.delete(Wrappers.lambdaQuery(NewsAppendix.class).eq(NewsAppendix::getNewsId, news.getId()));
         if (updateNewsDto.getAppendixList() != null) {
             for (AddNewsAppendixDto appendixDto : updateNewsDto.getAppendixList()) {
                 NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
@@ -116,7 +120,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
             }
         }
 
-        if(updateNewsDto.getRelationList()!=null) {
+        if (updateNewsDto.getRelationList() != null) {
             newsRelationMapper.delete(Wrappers.lambdaQuery(NewsRelation.class).eq(NewsRelation::getNewsId, news.getId()));
             newsRelationConfigMapper.delete(Wrappers.lambdaQuery(NewsRelationConfig.class).eq(NewsRelationConfig::getNewsId, news.getId()));
 
@@ -146,7 +150,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public  boolean updateRelation(UpdateNewsRelationDto updateRelationDto) {
+    public boolean updateRelation(UpdateNewsRelationDto updateRelationDto) {
 
         if (updateRelationDto.getRelationList() != null) {
             for (NewsRelationConfigDto newsRelationConfigDto : updateRelationDto.getRelationList()) {
@@ -267,7 +271,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                         WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
                         weChatSendMessageDto.setUserId(user.getOpenId());
                         weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4");
-                        weChatSendMessageDto.setUrl("/pages/message/notice/detail?id=" + id);
+                        weChatSendMessageDto.setUrl(StrUtil.format("{}/pages/message/notice/detail?id={}", commonPropertiesConfig.getDomainApp(), id));
                         weChatSendMessageDto.setMsgId(id.toString());
                         JSONObject data = new JSONObject();
 
@@ -298,8 +302,8 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                     for (NewsRelationVo newsRelationVo : newsRelationVoList) {
                         WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
                         weChatSendMessageDto.setUserId(newsRelationVo.getUserName());
-                        weChatSendMessageDto.setTemplateId("sHsmz7LRj7HLd7GSTS3r2uKMhE2f1iDAW15RqSK_6KM");
-                        weChatSendMessageDto.setUrl("/pages/message/notice/detail?id=" + id);
+                        weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4OkNNQ0uxlj2-ed9m6uWO-v4");
+                        weChatSendMessageDto.setUrl(StrUtil.format("{}/pages/message/notice/detail?id={}", commonPropertiesConfig.getDomainApp(), id));
                         weChatSendMessageDto.setMsgId(id.toString());
                         JSONObject data = new JSONObject();
 
@@ -319,8 +323,8 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                     }
                 }
             }
+        } catch (Exception ex) {
         }
-        catch(Exception ex) {}
 
         return true;
     }

+ 5 - 4
src/main/java/com/xjrsoft/module/oa/utils/SendMessageUtil.java

@@ -113,10 +113,11 @@ public class SendMessageUtil {
                 JSONObject object = new JSONObject();
                 object.put("touser", openId);
                 object.put("template_id", "sHsmz7LRj7HLd7GSTS3r2jCLvK-4Wp19iGzEvYK8n_I");
-                object.put("miniprogram", new JSONObject() {{
-                    put("appid", weChatUtil.getAppletAppKey());
-                    put("pagepath", StrUtil.format("{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",cpConfig.getDomainApp(), param.getTaskId(), param.getProcessId()));
-                }});
+//                object.put("miniprogram", new JSONObject() {{
+//                    put("appid", weChatUtil.getAppletAppKey());
+//                    put("pagepath", StrUtil.format("{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",cpConfig.getDomainApp(), param.getTaskId(), param.getProcessId()));
+//                }});
+                object.put("url", StrUtil.format("{}/xjrsoft/pages/workflow/approval?taskId={}&processId={}&type=todo",cpConfig.getDomainApp(), param.getTaskId(), param.getProcessId()));
                 object.put("client_msg_id", param.getTaskId());
                 object.put("data", data);
                 weChatUtil.sendTemplateMessage(object);

+ 24 - 22
src/main/java/com/xjrsoft/module/organization/controller/UserController.java

@@ -417,28 +417,30 @@ public class UserController {
     @PostMapping("/bind-openid")
     @ApiOperation(value = "绑定微信 Openid")
     public  R bindOpenid(@RequestBody BindOpenidDto dto) {
-        User user = userService.getOne(Wrappers.<User>query().lambda().select(User::getId, User::getOpenId,User::getUnionId).eq(User::getId, dto.getId()), false);
-        if (user != null) {
-            if (StrUtil.isNotBlank(user.getOpenId())) {
-                return R.error("该用户已经绑定微信!");
-            }
-
-            long count = userService.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
-            if(count > 0){
-                return R.error("该用户已经绑定微信!");
-            }
-
-            User updateUser = new User();
-            updateUser.setId(dto.getId());
-            updateUser.setOpenId(dto.getOpenid());
-            return R.ok(userService.updateById(updateUser));
-        }else{
-            long count = userService.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
-            if(count > 0){
-                return R.error("该用户已经绑定微信!");
-            }
-        }
-        return R.error("该用户不存在!");
+//        User user = userService.getOne(Wrappers.<User>query().lambda().select(User::getId, User::getOpenId,User::getUnionId).eq(User::getId, dto.getId()), false);
+//        if (user != null) {
+//            if (StrUtil.isNotBlank(user.getOpenId())) {
+//                return R.error("该用户已经绑定微信!");
+//            }
+//
+//            long count = userService.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
+//            if(count > 0){
+//                return R.error("该用户已经绑定微信!");
+//            }
+//
+//            User updateUser = new User();
+//            updateUser.setId(dto.getId());
+//            updateUser.setOpenId(dto.getOpenid());
+//            return R.ok(userService.updateById(updateUser));
+//        }else{
+//            long count = userService.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
+//            if(count > 0){
+//                return R.error("该用户已经绑定微信!");
+//            }
+//        }
+//        return R.error("该用户不存在!");
+
+        return R.ok(userService.bindOpenid(dto));
     }
 
     @GetMapping("/unbind-openid")

+ 7 - 0
src/main/java/com/xjrsoft/module/organization/service/IUserService.java

@@ -42,6 +42,13 @@ public interface IUserService extends MPJBaseService<User> {
      */
     boolean resetPassword(ResetPasswordDto dto);
 
+    /**
+     * 绑定微信 Openid
+     * @param dto
+     * @return
+     */
+    boolean bindOpenid(BindOpenidDto dto);
+
     /**
      * 批量获取用户信息
      *

+ 38 - 3
src/main/java/com/xjrsoft/module/organization/service/impl/UserServiceImpl.java

@@ -174,9 +174,12 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
         //删除时需要同时删除用户部门关联表和用户角色关联表和用户岗位关系表数据。
         this.removeBatchByIds(ids);
         //根据用户ids去缓存中查询到对应的三个表的数据
-        List<UserDeptRelation> userDeptRelationList = redisUtil.get(GlobalConstant.USER_DEPT_RELATION_CACHE_KEY, new TypeReference<List<UserDeptRelation>>() {});
-        List<UserPostRelation> userPostRelationList = redisUtil.get(GlobalConstant.USER_POST_RELATION_CACHE_KEY, new TypeReference<List<UserPostRelation>>() {});
-        List<UserRoleRelation> userRoleRelationList = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {});
+        List<UserDeptRelation> userDeptRelationList = redisUtil.get(GlobalConstant.USER_DEPT_RELATION_CACHE_KEY, new TypeReference<List<UserDeptRelation>>() {
+        });
+        List<UserPostRelation> userPostRelationList = redisUtil.get(GlobalConstant.USER_POST_RELATION_CACHE_KEY, new TypeReference<List<UserPostRelation>>() {
+        });
+        List<UserRoleRelation> userRoleRelationList = redisUtil.get(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, new TypeReference<List<UserRoleRelation>>() {
+        });
         //拿用户ids进行过滤,如果存在,就删除
         List<Long> deptRelationIds = userDeptRelationList.stream().filter(u -> ids.contains(u.getUserId())).map(UserDeptRelation::getId).collect(Collectors.toList());
         List<Long> postRelationIds = userPostRelationList.stream().filter(u -> ids.contains(u.getUserId())).map(UserPostRelation::getId).collect(Collectors.toList());
@@ -235,6 +238,38 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
         return updateById(user);
     }
 
+    @Override
+    public boolean bindOpenid(BindOpenidDto dto) {
+        User user = this.getOne(Wrappers.<User>query().lambda().select(User::getId, User::getOpenId, User::getUnionId).eq(User::getId, dto.getId()), false);
+        if (user != null) {
+            if (StrUtil.isNotBlank(user.getOpenId())) {
+                throw new MyException("该用户已经绑定微信");
+            }
+            long count = this.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
+            if (count > 0) {
+                throw new MyException("该用户已经绑定微信!");
+            }
+            User updateUser = new User();
+            updateUser.setId(dto.getId());
+            updateUser.setOpenId(dto.getOpenid());
+            boolean result = this.updateById(updateUser);
+            // 用户绑定微信后,更新缓存
+            if (result) {
+                CompletableFuture.runAsync(() -> {
+                    List<User> list = list();
+                    redisUtil.set(GlobalConstant.USER_CACHE_KEY, list);
+                });
+            }
+            return result;
+        } else {
+            long count = this.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
+            if (count > 0) {
+                throw new MyException("该用户已经绑定微信!");
+            }
+        }
+        throw new MyException("该用户不存在!");
+    }
+
     @Override
     public List<UserInfoVo> getUsersInfo(String ids) {
 

+ 5 - 4
src/main/java/com/xjrsoft/module/organization/service/impl/WeChatServiceImgl.java

@@ -48,10 +48,11 @@ public class WeChatServiceImgl implements IWeChatService {
         JSONObject object = new JSONObject();
         object.put("touser", dto.getUserId());
         object.put("template_id", dto.getTemplateId());
-        object.put("miniprogram", new JSONObject() {{
-            put("appid", weChatUtil.getAppletAppKey());
-            put("pagepath", dto.getUrl());
-        }});
+//        object.put("miniprogram", new JSONObject() {{
+//            put("appid", weChatUtil.getAppletAppKey());
+//            put("pagepath", dto.getUrl());
+//        }});
+        object.put("url", dto.getUrl());
         object.put("client_msg_id", dto.getMsgId());
         object.put("data", dto.getContent());
         weChatUtil.sendTemplateMessage(object);

+ 3 - 0
src/main/java/com/xjrsoft/module/system/dto/LoginByCodeDto.java

@@ -10,4 +10,7 @@ public class LoginByCodeDto {
     @ApiModelProperty("Code")
     @NotBlank(message = "Code不能为空!")
     private String code;
+
+    @ApiModelProperty("type")
+    private Integer type;
 }

+ 12 - 8
src/main/java/com/xjrsoft/module/system/service/impl/LoginServiceImpl.java

@@ -115,20 +115,24 @@ public class LoginServiceImpl implements ILoginService {
     @Override
     public LoginByCodeVo loginByCode(LoginByCodeDto dto) throws Exception {
         LoginByCodeVo result = new LoginByCodeVo();
-        String[] ids = weChatUtil.getOpenid(dto.getCode());
+        String[] ids;
+        if (dto.getType() == 0) {
+            ids = weChatUtil.getMpOpenid(dto.getCode());
+        }else{
+            ids = weChatUtil.getOpenid(dto.getCode());
+        }
+
         if (ids == null) throw new MyException("code无效");
 
         LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.isNotEmpty(ids[1])) {
-            queryWrapper.eq(User::getUnionId, ids[1]);
-            result.setUnionId(ids[1]);
-        } else {
-            queryWrapper.eq(User::getOpenId, ids[0]);
+        if (dto.getType() == 0) {
             result.setOpenid(ids[0]);
+            queryWrapper.eq(User::getOpenId, ids[0]);
+        } else {
+            result.setUnionId(ids[1]);
+            queryWrapper.eq(User::getUnionId, ids[1]);
         }
         User loginUser = userService.getOne(queryWrapper);
-
-//        result.setOpenid(openId);
         if (loginUser == null) {
             return result;
         }

+ 1 - 1
src/main/java/com/xjrsoft/module/workflow/listener/TaskDelegate.java

@@ -314,7 +314,7 @@ public class TaskDelegate implements TaskListener {
         param.setStartUserName(MapUtil.get(variableMaps, WorkflowConstant.PROCESS_START_USER_NAME_KEY, String.class));
 
         param.setNoticePolicyConfigs(userTaskConfig.getNoticePolicyConfigs());
-        WorkFlowUtil.sendApproveNoticePolicy(param, String.format("《%s》发起了《%s》,待审批!", param.getStartUserName(), param.getSchemaName()));
+        WorkFlowUtil.sendApproveNoticePolicy(param, String.format("【%s】发起了【%s】", param.getStartUserName(), param.getSchemaName()));
         //默认所有任务不需要指定审批人  如果需要指定审批人 会在 launch  和 approve 接口 处理。
 
     }

+ 4 - 0
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -56,6 +56,7 @@ import com.xjrsoft.module.workflow.utils.WorkFlowUtil;
 import com.xjrsoft.module.workflow.vo.*;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.tuple.ImmutableTriple;
 import org.apache.commons.lang3.tuple.Triple;
 import org.camunda.bpm.engine.HistoryService;
@@ -91,6 +92,7 @@ import java.util.stream.Collectors;
  * @Author: tzx
  * @Date: 2022/9/8 14:25
  */
+@Slf4j
 @Service
 @AllArgsConstructor
 public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
@@ -1171,6 +1173,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
 
                 relations.add(formRelation);
             } catch (Exception e) {
+                log.error("提交表单数据失败(newLaunch):",e);
                 for (Session session : sessionList) {
                     session.quietRollback();
                 }
@@ -1331,6 +1334,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
 
                 relations.add(formRelation);
             } catch (Exception e) {
+                log.error("提交表单数据失败(reLaunch):",e);
                 for (Session session : sessionList) {
                     session.quietRollback();
                 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -64,7 +64,7 @@ xjrsoft:
     druid-password: admin # druid 监控密码
     default-password: "cqtlzjzx2023" #默认密码(用户重置密码后为该密码)
     domain-api: http://10.150.10.139:8888/api #api域名地址
-    domain-app: http://10.150.10.139:8003/# #app域名地址
+    domain-app: https://yxh-web.ngrok.yingcaibx.com/# #app域名地址
     domain-web: http://10.150.10.139:8888 #web域名地址
 #    domain-api: http://127.0.0.1:9000/api #api域名地址
 #    domain-web: http://127.0.0.1:9000 #web域名地址