diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
index 303e74da86..daa7c23a5f 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
@@ -48,7 +48,7 @@ public enum EpmetErrorCode {
IDCARDNO_ALREADY_EXITS(8109,"系统已存在相同身份证号码,请重新输入"),
IDCARDNO_ERROR(8110,"身份证号格式错误,请重新输入"),
CANNOT_DELETE_PARTY_MEMBER(8111,"该用户已注册党员,不允许删除"),
- GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以修改小组信息"),
+ GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以操作"),
INVITE_NEW_MEMBER(8113,"只有讨论中的小组才可以邀请新成员"),
ACT_TITLE_SCAN_FAILED(8114,"活动标题审核失败,请重新编辑"),
ACT_REQ_SCAN_FAILED(8115,"活动报名条件审核失败,请重新编辑"),
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java
new file mode 100644
index 0000000000..dac9be670e
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java
@@ -0,0 +1,19 @@
+package com.epmet.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: liushaowen
+ * @date: 2020/11/17 10:07
+ */
+@Data
+public class AccessTokenDTO implements Serializable {
+ private String resiToken;
+
+ private String workToken;
+
+ private String errMsg;
+}
diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java
new file mode 100644
index 0000000000..426bab2b82
--- /dev/null
+++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java
@@ -0,0 +1,53 @@
+package com.epmet.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.epmet.commons.tools.enums.EnvEnum;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.commons.tools.utils.HttpClientManager;
+import com.epmet.commons.tools.utils.Result;
+import com.epmet.dto.AccessTokenDTO;
+import com.epmet.dto.result.CustomerTokensResultDTO;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @description:
+ * @author: liushaowen
+ * @date: 2020/11/17 10:04
+ */
+
+public class ThirdUtils {
+ /**
+ * @Description 获取AccessToken公共方法
+ * @param customerId
+ * @return com.epmet.dto.AccessTokenDTO
+ * @Author liushaowen
+ * @Date 2020/11/17 10:09
+ */
+ public static AccessTokenDTO getAccessToken(String customerId) {
+ EnvEnum envEnum = EnvEnum.getCurrentEnv();
+ AccessTokenDTO accessToken = new AccessTokenDTO();
+
+ String url = "https://epmet-cloud.elinkservice.cn/api/third/pacustomer/tokenlist";
+ JSONObject postData = new JSONObject();
+ postData.put("customerId", customerId);
+ String data = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(postData)).getData();
+ JSONObject toResult = JSON.parseObject(data);
+ Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class);
+ if (null != toResult.get("code")) {
+ mapToResult.setCode(((Integer) toResult.get("code")).intValue());
+ }
+ if (!mapToResult.success()) {
+ accessToken.setErrMsg( StringUtils.isBlank(mapToResult.getMsg()) ? mapToResult.getInternalMsg() : mapToResult.getMsg());
+ }
+ Object CustomerTokensResultDTO = mapToResult.getData();
+ JSONObject json = JSON.parseObject(CustomerTokensResultDTO.toString());
+ CustomerTokensResultDTO customerTokensResultDTO = ConvertUtils.mapToEntity(json, com.epmet.dto.result.CustomerTokensResultDTO.class);
+ accessToken.setResiToken(customerTokensResultDTO.getResiAuthorizerToken());
+ accessToken.setWorkToken(customerTokensResultDTO.getWorkAuthorizerToken());
+ return accessToken;
+ }
+}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupStateConstant.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupStateConstant.java
index fcb2afc28f..ee3bcda420 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupStateConstant.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupStateConstant.java
@@ -41,4 +41,20 @@ public interface GroupStateConstant {
* 群已关闭 - closed
*/
String GROUP_CLOSED = "closed";
+ /**
+ * 邀请链接:invited
+ */
+ String GROUP_INVITED = "invited";
+ /**
+ * 扫码:scancode
+ */
+ String GROUP_SCANCODE = "scancode";
+ /**
+ * 进组审核open开启;close关闭
+ */
+ String AUDIT_SWITCH_OPEN = "open";
+ /**
+ * 进组审核open开启;close关闭
+ */
+ String AUDIT_SWITCH_CLOSED = "close";
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java
index 9045ac28ea..be61d33c2a 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java
@@ -74,6 +74,11 @@ Ps: 如果一个小组被拒绝,当前小组的状态将永久停留在“审
*/
private Date latestTopicPublishDate;
+ /**
+ * 进组审核open开启;close关闭
+ */
+ private String auditSwitch;
+
/**
* 删除标记 0:未删除,1:已删除
*/
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupCodeBasicInfoFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupCodeBasicInfoFormDTO.java
index af31ed7145..b9a6102ecd 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupCodeBasicInfoFormDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupCodeBasicInfoFormDTO.java
@@ -15,12 +15,12 @@ public class GroupCodeBasicInfoFormDTO implements Serializable {
/**
* 客户id
*/
- //@NotBlank(message = "客户id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
+ @NotBlank(message = "客户id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
private String customerId;
/**
* 网格id
*/
- //@NotBlank(message = "网格id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
+ @NotBlank(message = "网格id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
private String gridId;
/**
* 组id
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupCodeBasicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupCodeBasicInfoResultDTO.java
index a2c80d4125..b3275408bf 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupCodeBasicInfoResultDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupCodeBasicInfoResultDTO.java
@@ -32,12 +32,4 @@ public class GroupCodeBasicInfoResultDTO implements Serializable {
* 小组二维码路径
*/
private String groupCodeUrl;
- /**
- * 小组创建人称谓(街道-姓氏+称谓)(南宁路-李先生)
- */
- private String showName;
- /**
- * 小组创建人Id
- */
- private String groupUserId;
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupSummarizeResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupSummarizeResultDTO.java
index 9e54c59eb5..0b19208c9f 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupSummarizeResultDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupSummarizeResultDTO.java
@@ -65,6 +65,10 @@ public class GroupSummarizeResultDTO implements Serializable {
*/
private String leaderFlag;
+ /**
+ * 进组审核open开启;close关闭
+ */
+ private String auditSwitch;
public GroupSummarizeResultDTO(){
this.setGroupId("");
this.setGroupHeadPhoto("");
@@ -76,5 +80,6 @@ public class GroupSummarizeResultDTO implements Serializable {
this.setTotalApplyingMember(NumConstant.ZERO);
this.setTotalTopics(NumConstant.ZERO);
this.setLeaderFlag("");
+ this.setAuditSwitch("open");
}
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/invitation/GroupInvitationDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/invitation/GroupInvitationDTO.java
index b4bc7fe18a..f157c439d1 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/invitation/GroupInvitationDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/invitation/GroupInvitationDTO.java
@@ -68,6 +68,11 @@ public class GroupInvitationDTO implements Serializable {
*/
private Date validEndTime;
+ /**
+ * 邀请链接:invited;扫码:scancode
+ */
+ private String invitationType;
+
/**
* 删除标记 0:未删除,1:已删除
*/
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupMemeberOperationDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupMemeberOperationDTO.java
index 23a8331ac0..751153861a 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupMemeberOperationDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupMemeberOperationDTO.java
@@ -62,7 +62,7 @@ public class GroupMemeberOperationDTO implements Serializable {
private String operateStatus;
/**
- * 入群方式:(受邀请入群 - invited 、 主动加入 - join、created群主创建群自动进入群)
+ * 入群方式:(受邀请入群 - invited 、 主动加入 - join、created群主创建群自动进入群、扫码入群 - scancode)
*/
private String enterGroupType;
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java
index 49de542902..c6cd651968 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java
@@ -54,7 +54,7 @@ public class ResiGroupMemberDTO implements Serializable {
private String groupLeaderFlag;
/**
- * 入群方式:(受邀请入群 - invited 、 主动加入 - join、created群主创建群自动进入群)
+ * 入群方式:(受邀请入群 - invited 、 主动加入 - join、created群主创建群自动进入群、扫码入群 - scancode)
*/
private String enterGroupType;
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/EditAuditSwitchFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/EditAuditSwitchFormDTO.java
new file mode 100644
index 0000000000..da1391fa51
--- /dev/null
+++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/EditAuditSwitchFormDTO.java
@@ -0,0 +1,27 @@
+package com.epmet.resi.group.dto.member.form;
+
+import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * 组长开启/关闭入群审核
+ *
+ * @author yinzuomei@elink-cn.com
+ * @date 2020/11/17 14:02
+ */
+@Data
+public class EditAuditSwitchFormDTO implements Serializable {
+ private static final long serialVersionUID = -8185514609968752625L;
+ public interface AddUserShowGroup extends CustomerClientShowGroup {
+ }
+ @NotBlank(message = "小组id不能为空")
+ private String groupId;
+ /**
+ * 进组审核open开启;close关闭
+ */
+ @NotBlank(message = "请选择是否开启", groups = {EditAuditSwitchFormDTO.AddUserShowGroup.class})
+ private String auditSwitch;
+}
diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml
index d01f2693c6..6da483c5c9 100644
--- a/epmet-module/resi-group/resi-group-server/pom.xml
+++ b/epmet-module/resi-group/resi-group-server/pom.xml
@@ -160,6 +160,11 @@
false
https://epmet-dev.elinkservice.cn/api/epmetscan/api
+
+ 5
+ 8
+ 10
+ 30
@@ -200,6 +205,11 @@
false
https://epmet-dev.elinkservice.cn/api/epmetscan/api
+
+ 5
+ 8
+ 10
+ 30
@@ -239,6 +249,11 @@
true
https://epmet-dev.elinkservice.cn/api/epmetscan/api
+
+ 5
+ 8
+ 10
+ 30
@@ -275,6 +290,11 @@
true
https://epmet-open.elinkservice.cn/api/epmetscan/api
+
+ 5
+ 8
+ 10
+ 30
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java
new file mode 100644
index 0000000000..8a1a958939
--- /dev/null
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java
@@ -0,0 +1,49 @@
+package com.epmet.config;
+
+import com.epmet.properties.ThreadProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 线程池配置类
+ */
+@Configuration
+@EnableConfigurationProperties(ThreadProperties.class)
+@EnableAsync
+public class AsyncConfig {
+
+ @Autowired
+ private ThreadProperties threadProperties;
+
+ @Bean
+ public Executor executor() {
+ ThreadProperties.ThreadPoolProperties threadPoolProps = threadProperties.getThreadPool();
+
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ executor.setCorePoolSize(threadPoolProps.getCorePoolSize());
+ executor.setMaxPoolSize(threadPoolProps.getMaxPoolSize());
+ executor.setQueueCapacity(threadPoolProps.getQueueCapacity());
+ executor.setThreadNamePrefix("epmet-resi-group-");
+ // rejection-policy:当pool已经达到max size的时候,如何处理新任务
+ // CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略
+ executor.setKeepAliveSeconds(threadPoolProps.getKeepAlive());
+ executor.initialize();
+ return executor;
+ }
+
+ @Bean
+ public ExecutorService executorService() {
+ ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) executor();
+ return executor.getThreadPoolExecutor();
+ }
+
+}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupCodeController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupCodeController.java
index 6f6430f358..34b4458ea8 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupCodeController.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupCodeController.java
@@ -89,7 +89,7 @@ public class ResiGroupCodeController {
@RequestMapping("creategroupcode")
public Result createGroupCode(@RequestBody CreateGroupCodeFormDTO dto){
ValidatorUtils.validateEntity(dto);
- return new Result().ok(resiGroupCodeService.createGroupCode(dto));
+ return new Result().ok(resiGroupCodeService.createGroupCode(dto, true));
}
@RequestMapping("getgroupcode")
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
index d9f1b60ead..99348f7447 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
@@ -27,9 +27,13 @@ import com.epmet.modules.group.service.ResiGroupStatisticalService;
import com.epmet.resi.group.dto.group.GroupProcessingCountResultDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*;
+import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import com.epmet.resi.group.dto.member.form.ResiIdentityFormDTO;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@@ -103,7 +107,7 @@ public class ResiGroupController {
* @param modifyGroupFormDTO
* @return com.epmet.commons.tools.utils.Result
* @Author yinzuomei
- * @Description 修改组信息
+ * @Description 修改组信息 此接口废弃
* @Date 2020/3/28 22:20
**/
@PostMapping("modifygroup")
@@ -433,4 +437,17 @@ public class ResiGroupController {
public Result> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO){
return new Result>().ok(resiGroupService.selectGroupInfo(groupInfoFormDTO));
}
+
+ /**
+ * @param formDTO
+ * @author yinzuomei
+ * @description 组长开启/关闭入群审核
+ * @Date 2020/11/17 14:18
+ **/
+ @PostMapping("editauditswitch")
+ public Result editAuditSwitch(@RequestBody EditAuditSwitchFormDTO formDTO){
+ ValidatorUtils.validateEntity(formDTO,EditAuditSwitchFormDTO.AddUserShowGroup.class);
+ resiGroupService.editAuditSwitch(formDTO);
+ return new Result();
+ }
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java
index 0305fb7834..8dfa5e2db8 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java
@@ -74,4 +74,9 @@ Ps: 如果一个小组被拒绝,当前小组的状态将永久停留在“审
*/
private Date latestTopicPublishDate;
+ /**
+ * 进组审核open开启;close关闭
+ */
+ private String auditSwitch;
+
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupCodeService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupCodeService.java
index de9a3a1505..e0b5e7ec4d 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupCodeService.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupCodeService.java
@@ -101,12 +101,12 @@ public interface ResiGroupCodeService extends BaseService {
/**
* @Description 创建群组二维码
- * @param dto
+ * @param dto,syncFlag(是否同步执行,true同步,false异步)
* @return String
* @Author liushaowen
* @Date 2020/11/13 16:32
*/
- String createGroupCode(CreateGroupCodeFormDTO dto);
+ String createGroupCode(CreateGroupCodeFormDTO dto, boolean syncFlag);
/**
* @Description 获取群组二维码
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
index bea33897d6..d8b37a4614 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
@@ -27,6 +27,7 @@ import com.epmet.resi.group.dto.group.GroupProcessingCountResultDTO;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*;
+import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import java.util.List;
import java.util.Map;
@@ -332,4 +333,13 @@ public interface ResiGroupService extends BaseService {
* @date 2020/11/11 1:36 下午
*/
List selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO);
+
+ /**
+ * @return void
+ * @param formDTO
+ * @author yinzuomei
+ * @description 组长开启/关闭入群审核
+ * @Date 2020/11/17 14:18
+ **/
+ void editAuditSwitch(EditAuditSwitchFormDTO formDTO);
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupCodeServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupCodeServiceImpl.java
index c1153785c2..297f2cfd71 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupCodeServiceImpl.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupCodeServiceImpl.java
@@ -25,6 +25,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.EnvEnum;
+import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
@@ -40,13 +41,19 @@ import com.epmet.modules.group.dao.ResiGroupCodeDao;
import com.epmet.modules.group.entity.ResiGroupCodeEntity;
import com.epmet.modules.group.redis.ResiGroupCodeRedis;
import com.epmet.modules.group.service.ResiGroupCodeService;
+import com.epmet.modules.group.service.ResiGroupService;
+import com.epmet.modules.invitation.service.GroupInvitationService;
import com.epmet.modules.utils.ModuleConstant;
+import com.epmet.resi.group.constant.GroupCodeConstant;
import com.epmet.resi.group.dto.QRCodeMultipartFileDTO;
import com.epmet.resi.group.dto.group.ResiGroupCodeDTO;
import com.epmet.resi.group.dto.group.form.CreateGroupCodeFormDTO;
import com.epmet.resi.group.dto.group.form.GetGroupCodeFormDTO;
import com.epmet.resi.group.dto.group.form.GroupCodeBasicInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupCodeBasicInfoResultDTO;
+import com.epmet.resi.group.dto.invitation.form.CreateGroupInvitationFormDTO;
+import com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO;
+import com.epmet.utils.ThirdUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.UnsupportedEncodingException;
import java.util.*;
+import java.util.concurrent.ExecutorService;
/**
* 小组二维码 小组唯一二维码,海报码和小组码是同一个二维码,长期有效的
@@ -76,7 +84,13 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl page(Map params) {
@@ -131,14 +145,68 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl{
+ try {
+ long startTs = System.currentTimeMillis();
+ createCodeFunction(dto);
+ long endTs = System.currentTimeMillis();
+ logger.info("异步创建群二维码成功,执行时长:{}", endTs - startTs);
+ } catch (Exception e) {
+ logger.error("异步创建群二维码失败,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
+ }
+ });
+ return "";
+ }
+ }
+
+ /**
+ * @param dto
+ * @return com.epmet.commons.tools.utils.Result
+ * @Description 获取群组二维码
+ * @Author liushaowen
+ * @Date 2020/11/16 9:37
+ */
+ @Override
+ public Result getGroupCode(GetGroupCodeFormDTO dto) {
+ ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
+ if (codeByGroupId != null) {
+ //数据库有数据
+ return new Result().ok(codeByGroupId.getUrl());
+ } else {
+ //从微信获取二维码并存储
+ CreateGroupCodeFormDTO createDto = new CreateGroupCodeFormDTO();
+ BeanUtils.copyProperties(dto, createDto);
+ String url = createGroupCode(createDto, true);
+ if (StringUtils.isBlank(url)){
+ throw new RenException("获取二维码失败");
+ }
+ return new Result().ok(url);
+ }
+ }
+
+ private ResiGroupCodeEntity getCode(String groupId, String type) {
+ if (StringUtils.isBlank(groupId) || StringUtils.isBlank(type)) {
+ throw new RenException("获取二维码失败,groupId或type为空");
+ }
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("DEL_FLAG", "0");
+ queryWrapper.eq("GROUP_ID", groupId);
+ queryWrapper.eq("TYPE", type);
+ return baseDao.selectOne(queryWrapper);
+ }
+
+ private String createCodeFunction(CreateGroupCodeFormDTO dto){
String result = "";
ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
if (codeByGroupId != null) {
@@ -148,14 +216,21 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl
- * @Description 获取群组二维码
- * @Author liushaowen
- * @Date 2020/11/16 9:37
- */
- @Override
- public Result getGroupCode(GetGroupCodeFormDTO dto) {
- ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
- if (codeByGroupId != null) {
- //数据库有数据
- return new Result().ok(codeByGroupId.getUrl());
- } else {
- //从微信获取二维码并存储
- CreateGroupCodeFormDTO createDto = new CreateGroupCodeFormDTO();
- BeanUtils.copyProperties(dto, createDto);
- String url = createGroupCode(createDto);
- if (StringUtils.isBlank(url)){
- throw new RenException("获取二维码失败");
- }
- return new Result().ok(url);
- }
- }
-
- private ResiGroupCodeEntity getCode(String groupId, String type) {
- if (StringUtils.isBlank(groupId) || StringUtils.isBlank(type)) {
- throw new RenException("获取二维码失败,groupId或type为空");
- }
- QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("DEL_FLAG", "0");
- queryWrapper.eq("GROUP_ID", groupId);
- queryWrapper.eq("TYPE", type);
- return baseDao.selectOne(queryWrapper);
- }
-
- //获取AccessToken
- private String getAccessToken(String customerId) {
- EnvEnum envEnum = EnvEnum.getCurrentEnv();
- String resiAccessToken = null;
- if (EnvEnum.PROD.getCode().equals(envEnum.getCode())) {
- //居民端
- StringBuilder resiKey = new StringBuilder(customerId).append(":resi");
- Map authorizerRefreshToken = new HashMap<>();
- authorizerRefreshToken = resiGroupCodeRedis.getAuthorizerRefreshToken(resiKey.toString());
- resiAccessToken = (String) authorizerRefreshToken.get("authorizerAccessToken");
- } else {
- String url = "https://epmet-cloud.elinkservice.cn/api/third/pacustomer/tokenlist";
- JSONObject postData = new JSONObject();
- postData.put("customerId", customerId);
- String data = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(postData)).getData();
- JSONObject toResult = JSON.parseObject(data);
- Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class);
- if (null != toResult.get("code")) {
- mapToResult.setCode(((Integer) toResult.get("code")).intValue());
- }
- Object CustomerTokensResultDTO = mapToResult.getData();
- JSONObject json = JSON.parseObject(CustomerTokensResultDTO.toString());
- CustomerTokensResultDTO customerTokensResultDTO = ConvertUtils.mapToEntity(json, com.epmet.dto.result.CustomerTokensResultDTO.class);
- resiAccessToken = customerTokensResultDTO.getResiAuthorizerToken();
- }
- return resiAccessToken;
- }
-
/**
* @param formDTO
* @Description 获取生成海报(小组码)信息
@@ -271,17 +282,16 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl userIdList = new ArrayList<>();
- userIdList.add(resultDTO.getGroupUserId());
- userResiInfoListFormDTO.setUserIdList(userIdList);
- Result> resultList = epmetUserOpenFeignClient.getUserResiInfoList(userResiInfoListFormDTO);
- if (!resultList.success() || null == resultList.getData() || resultList.getData().size() < NumConstant.ONE) {
- logger.error(String.format("调用user服务,查询用户基本信息失败,userId:%s", resultDTO.getGroupUserId()));
- throw new RenException("获取小组创建人基本信息失败");
+ if (null == resultDTO.getGroupCodeUrl() || "".equals(resultDTO.getGroupCodeUrl())) {
+ CreateGroupCodeFormDTO dto = ConvertUtils.sourceToTarget(formDTO, CreateGroupCodeFormDTO.class);
+ dto.setType(GroupCodeConstant.CODE_TYPE_INVITE);
+ String url = createGroupCode(dto, true);
+ if (StringUtils.isBlank(url)) {
+ logger.error(String.format("生成小组二维码失败,小组Id:%s", formDTO.getGroupId()));
+ throw new RenException("获取小组码基本信息失败");
+ }
+ resultDTO.setGroupCodeUrl(url);
}
- resultDTO.setShowName(resultList.getData().get(NumConstant.ZERO).getShowName());
return resultDTO;
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
index 3c628bdf81..5c7ea0a741 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
@@ -35,6 +35,10 @@ import com.epmet.commons.tools.scan.param.TextTaskDTO;
import com.epmet.commons.tools.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
+import com.epmet.commons.tools.security.user.LoginUserUtil;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.commons.tools.utils.DateUtils;
+import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserResiInfoResultDTO;
@@ -51,6 +55,7 @@ import com.epmet.modules.group.entity.GroupEditSubmitRecordEntity;
import com.epmet.modules.group.entity.ResiGroupEntity;
import com.epmet.modules.group.entity.ResiGroupOperationEntity;
import com.epmet.modules.group.redis.ResiGroupRedis;
+import com.epmet.modules.group.service.ResiGroupCodeService;
import com.epmet.modules.group.service.ResiGroupOperationService;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.group.service.ResiGroupStatisticalService;
@@ -71,6 +76,7 @@ import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.github.pagehelper.PageHelper;
+import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -154,6 +160,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl page(Map params) {
IPage page = baseDao.selectPage(
@@ -554,6 +565,18 @@ public class ResiGroupServiceImpl extends BaseServiceImpl param = new HashMap<>();
@@ -989,6 +1012,24 @@ public class ResiGroupServiceImpl extends BaseServiceImpl
* @param formDTO
* @Author yinzuomei
- * @Description 生成邀请连接
+ * @Description 生成邀请连接-链接
* @Date 2020/3/31 22:50
**/
CreateGroupInvitationResultDTO createGroupInvitation(CreateGroupInvitationFormDTO formDTO);
+ /**
+ * @return com.epmet.commons.tools.utils.Result
+ * @param formDTO
+ * @Author liushaowen
+ * @Description 生成邀请连接-扫码
+ * @Date 2020-11-17 13:58
+ **/
+ CreateGroupInvitationResultDTO createGroupScanCodeInvitation(CreateGroupInvitationFormDTO formDTO);
+
/**
* @return com.epmet.commons.tools.utils.Result
* @param formDTO
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java
index 606eb75fbe..dcd939a5f8 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java
+++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java
@@ -45,6 +45,7 @@ import com.epmet.modules.invitation.service.GroupInvitationService;
import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.member.service.GroupMemeberOperationService;
import com.epmet.modules.member.service.ResiGroupMemberService;
+import com.epmet.modules.member.service.impl.ResiGroupMemberServiceImpl;
import com.epmet.resi.group.constant.EnterGroupTypeConstant;
import com.epmet.resi.group.constant.GroupStateConstant;
import com.epmet.resi.group.constant.LeaderFlagConstant;
@@ -102,6 +103,8 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl page(Map params) {
@@ -181,6 +184,41 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl
+ * @Author liushaowen
+ * @Description 生成邀请连接-扫码
+ * @Date 2020-11-17 13:58
+ **/
+ @Override
+ public CreateGroupInvitationResultDTO createGroupScanCodeInvitation(CreateGroupInvitationFormDTO formDTO) {
+ //1、只有群主可以邀请新成员(这块界面限制死了,只有群主才能看到邀请新成员按钮)
+ //2、审核通过(讨论中)的群才可以分享邀请连接
+ ResiGroupDTO resiGroupDTO = resiGroupService.get(formDTO.getGroupId());
+ if (!GroupStateConstant.GROUP_APPROVED.equals(resiGroupDTO.getState())) {
+ logger.error(String.format("生成群成员链接失败,原因:%s",EpmetErrorCode.INVITE_NEW_MEMBER.getMsg()));
+ throw new RenException(EpmetErrorCode.INVITE_NEW_MEMBER.getCode());
+ }
+ //3、插入一条邀请记录
+ GroupInvitationEntity groupInvitationEntity = new GroupInvitationEntity();
+ groupInvitationEntity.setInviterUserId(formDTO.getUserId());
+ groupInvitationEntity.setInviterCustomerId(resiGroupDTO.getCustomerId());
+ groupInvitationEntity.setInviterGridId(resiGroupDTO.getGridId());
+ //添加类型字段 scancode
+ groupInvitationEntity.setInvitationType(GroupStateConstant.GROUP_SCANCODE);
+ //暂定50年有效期
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + NumConstant.FIFTY);
+ groupInvitationEntity.setValidEndTime(calendar.getTime());
+ groupInvitationEntity.setResiGroupId(formDTO.getGroupId());
insert(groupInvitationEntity);
CreateGroupInvitationResultDTO resultDTO = new CreateGroupInvitationResultDTO();
resultDTO.setInvitationId(groupInvitationEntity.getId());
@@ -343,14 +381,29 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl
SELECT
- rgc.GROUP_ID AS "groupId",
- rgc.URL AS "groupCodeUrl",
- rg.GROUP_NAME AS "groupName",
- rg.GROUP_HEAD_PHOTO AS "groupHeadPhoto",
- rg.GROUP_INTRODUCTION AS "groupIntroduction",
- rg.CREATED_BY AS "groupUserId"
+ rg.id AS "groupId",
+ rg.group_name AS "groupName",
+ rg.group_head_photo AS "groupHeadPhoto",
+ rg.group_introduction AS "groupIntroduction",
+ rgc.URL AS "groupCodeUrl"
FROM
- resi_group_code rgc
- INNER JOIN resi_group rg ON rgc.GROUP_ID = rg.ID
+ resi_group rg
+ LEFT JOIN resi_group_code rgc ON rgc.group_id = rg.id AND rgc.del_flag = '0'
WHERE
- rgc.DEL_FLAG = '0'
- AND rg.DEL_FLAG = '0'
- AND rgc.GROUP_ID = #{groupId}
+ rg.del_flag = '0'
+ AND rg.id = #{groupId}
- and rgc.customer_id = #{customerId}
+ and rg.customer_id = #{customerId}
- and rgc.grid_id = #{gridId}
+ and rg.grid_id = #{gridId}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
index 3bafe14fb1..855041f771 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
+++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
@@ -150,7 +150,8 @@
AND gmo.GROUP_ID = rg.id
AND gmo.OPERATE_STATUS = 'under_auditting'
) AS totalApplyingMember,
- rgs.TOTAL_TOPICS
+ rgs.TOTAL_TOPICS,
+ rg.AUDIT_SWITCH
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )