Browse Source

Merge branch 'dev_group_code' into dev_temp

# Conflicts:
#	epmet-module/resi-group/resi-group-server/pom.xml
#	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
#	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
#	epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
#	epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml
dev_shibei_match
sunyuchao 5 years ago
parent
commit
1a1361f9b1
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  2. 19
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AccessTokenDTO.java
  3. 53
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/utils/ThirdUtils.java
  4. 16
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupStateConstant.java
  5. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java
  6. 4
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupCodeBasicInfoFormDTO.java
  7. 8
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupCodeBasicInfoResultDTO.java
  8. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupSummarizeResultDTO.java
  9. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/invitation/GroupInvitationDTO.java
  10. 2
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupMemeberOperationDTO.java
  11. 2
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ResiGroupMemberDTO.java
  12. 27
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/EditAuditSwitchFormDTO.java
  13. 20
      epmet-module/resi-group/resi-group-server/pom.xml
  14. 49
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/config/AsyncConfig.java
  15. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupCodeController.java
  16. 21
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  17. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java
  18. 4
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupCodeService.java
  19. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  20. 170
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupCodeServiceImpl.java
  21. 41
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  22. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/entity/GroupInvitationEntity.java
  23. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java
  24. 63
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java
  25. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupMemeberOperationEntity.java
  26. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java
  27. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  28. 25
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/properties/ThreadProperties.java
  29. 10
      epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml
  30. 9
      epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.5__group_audit_switch.sql
  31. 24
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupCodeDao.xml
  32. 3
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

2
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_ALREADY_EXITS(8109,"系统已存在相同身份证号码,请重新输入"),
IDCARDNO_ERROR(8110,"身份证号格式错误,请重新输入"), IDCARDNO_ERROR(8110,"身份证号格式错误,请重新输入"),
CANNOT_DELETE_PARTY_MEMBER(8111,"该用户已注册党员,不允许删除"), CANNOT_DELETE_PARTY_MEMBER(8111,"该用户已注册党员,不允许删除"),
GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以修改小组信息"), GROUP_LEADER_CAN_EDIT_GROUP_INFO(8112,"只有组长才可以操作"),
INVITE_NEW_MEMBER(8113,"只有讨论中的小组才可以邀请新成员"), INVITE_NEW_MEMBER(8113,"只有讨论中的小组才可以邀请新成员"),
ACT_TITLE_SCAN_FAILED(8114,"活动标题审核失败,请重新编辑"), ACT_TITLE_SCAN_FAILED(8114,"活动标题审核失败,请重新编辑"),
ACT_REQ_SCAN_FAILED(8115,"活动报名条件审核失败,请重新编辑"), ACT_REQ_SCAN_FAILED(8115,"活动报名条件审核失败,请重新编辑"),

19
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;
}

53
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;
}
}

16
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 * 群已关闭 - closed
*/ */
String GROUP_CLOSED = "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";
} }

5
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; private Date latestTopicPublishDate;
/**
* 进组审核open开启close关闭
*/
private String auditSwitch;
/** /**
* 删除标记 0未删除1已删除 * 删除标记 0未删除1已删除
*/ */

4
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 * 客户id
*/ */
//@NotBlank(message = "客户id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class}) @NotBlank(message = "客户id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
private String customerId; private String customerId;
/** /**
* 网格id * 网格id
*/ */
//@NotBlank(message = "网格id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class}) @NotBlank(message = "网格id不能为空", groups = {GroupCodeBasicInfoFormDTO.GroupCodeInfo.class})
private String gridId; private String gridId;
/** /**
* 组id * 组id

8
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 groupCodeUrl;
/**
* 小组创建人称谓(街道-姓氏+称谓)(南宁路-李先生)
*/
private String showName;
/**
* 小组创建人Id
*/
private String groupUserId;
} }

5
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; private String leaderFlag;
/**
* 进组审核open开启close关闭
*/
private String auditSwitch;
public GroupSummarizeResultDTO(){ public GroupSummarizeResultDTO(){
this.setGroupId(""); this.setGroupId("");
this.setGroupHeadPhoto(""); this.setGroupHeadPhoto("");
@ -76,5 +80,6 @@ public class GroupSummarizeResultDTO implements Serializable {
this.setTotalApplyingMember(NumConstant.ZERO); this.setTotalApplyingMember(NumConstant.ZERO);
this.setTotalTopics(NumConstant.ZERO); this.setTotalTopics(NumConstant.ZERO);
this.setLeaderFlag(""); this.setLeaderFlag("");
this.setAuditSwitch("open");
} }
} }

5
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; private Date validEndTime;
/**
* 邀请链接invited;扫码scancode
*/
private String invitationType;
/** /**
* 删除标记 0未删除1已删除 * 删除标记 0未删除1已删除
*/ */

2
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; private String operateStatus;
/** /**
* 入群方式受邀请入群 - invited 主动加入 - joincreated群主创建群自动进入群 * 入群方式受邀请入群 - invited 主动加入 - joincreated群主创建群自动进入群扫码入群 - scancode
*/ */
private String enterGroupType; private String enterGroupType;

2
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; private String groupLeaderFlag;
/** /**
* 入群方式受邀请入群 - invited 主动加入 - joincreated群主创建群自动进入群 * 入群方式受邀请入群 - invited 主动加入 - joincreated群主创建群自动进入群扫码入群 - scancode
*/ */
private String enterGroupType; private String enterGroupType;

27
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;
}

20
epmet-module/resi-group/resi-group-server/pom.xml

@ -160,6 +160,11 @@
<spring.flyway.enabled>false</spring.flyway.enabled> <spring.flyway.enabled>false</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url> <openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--线程池配置-->
<thread.pool.core-pool-size>5</thread.pool.core-pool-size>
<thread.pool.max-pool-size>8</thread.pool.max-pool-size>
<thread.pool.queue-capacity>10</thread.pool.queue-capacity>
<thread.pool.keep-alive>30</thread.pool.keep-alive>
<!--钉钉 机器人地址--> <!--钉钉 机器人地址-->
<dingTalk.robot.webHook> <dingTalk.robot.webHook>
@ -200,6 +205,11 @@
<spring.flyway.enabled>false</spring.flyway.enabled> <spring.flyway.enabled>false</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url> <openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--线程池配置-->
<thread.pool.core-pool-size>5</thread.pool.core-pool-size>
<thread.pool.max-pool-size>8</thread.pool.max-pool-size>
<thread.pool.queue-capacity>10</thread.pool.queue-capacity>
<thread.pool.keep-alive>30</thread.pool.keep-alive>
<!--钉钉 机器人地址--> <!--钉钉 机器人地址-->
<dingTalk.robot.webHook> <dingTalk.robot.webHook>
@ -239,6 +249,11 @@
<nacos.ip/> <nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled> <spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url> <openapi.scan.server.url>https://epmet-dev.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--线程池配置-->
<thread.pool.core-pool-size>5</thread.pool.core-pool-size>
<thread.pool.max-pool-size>8</thread.pool.max-pool-size>
<thread.pool.queue-capacity>10</thread.pool.queue-capacity>
<thread.pool.keep-alive>30</thread.pool.keep-alive>
<!--测试钉钉 机器人地址--> <!--测试钉钉 机器人地址-->
<dingTalk.robot.webHook> <dingTalk.robot.webHook>
@ -275,6 +290,11 @@
<nacos.ip/> <nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled> <spring.flyway.enabled>true</spring.flyway.enabled>
<openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url> <openapi.scan.server.url>https://epmet-open.elinkservice.cn/api/epmetscan/api</openapi.scan.server.url>
<!--线程池配置-->
<thread.pool.core-pool-size>5</thread.pool.core-pool-size>
<thread.pool.max-pool-size>8</thread.pool.max-pool-size>
<thread.pool.queue-capacity>10</thread.pool.queue-capacity>
<thread.pool.keep-alive>30</thread.pool.keep-alive>
<!--生产钉钉 机器人地址--> <!--生产钉钉 机器人地址-->
<dingTalk.robot.webHook> <dingTalk.robot.webHook>

49
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();
}
}

2
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") @RequestMapping("creategroupcode")
public Result<String> createGroupCode(@RequestBody CreateGroupCodeFormDTO dto){ public Result<String> createGroupCode(@RequestBody CreateGroupCodeFormDTO dto){
ValidatorUtils.validateEntity(dto); ValidatorUtils.validateEntity(dto);
return new Result<String>().ok(resiGroupCodeService.createGroupCode(dto)); return new Result<String>().ok(resiGroupCodeService.createGroupCode(dto, true));
} }
@RequestMapping("getgroupcode") @RequestMapping("getgroupcode")

21
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.GroupProcessingCountResultDTO;
import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*; 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 com.epmet.resi.group.dto.member.form.ResiIdentityFormDTO;
import org.springframework.beans.factory.annotation.Autowired; 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; import java.util.List;
@ -103,7 +107,7 @@ public class ResiGroupController {
* @param modifyGroupFormDTO * @param modifyGroupFormDTO
* @return com.epmet.commons.tools.utils.Result * @return com.epmet.commons.tools.utils.Result
* @Author yinzuomei * @Author yinzuomei
* @Description 修改组信息 * @Description 修改组信息 此接口废弃
* @Date 2020/3/28 22:20 * @Date 2020/3/28 22:20
**/ **/
@PostMapping("modifygroup") @PostMapping("modifygroup")
@ -433,4 +437,17 @@ public class ResiGroupController {
public Result<List<GroupInfoResultDTO>> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO){ public Result<List<GroupInfoResultDTO>> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO){
return new Result<List<GroupInfoResultDTO>>().ok(resiGroupService.selectGroupInfo(groupInfoFormDTO)); return new Result<List<GroupInfoResultDTO>>().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();
}
} }

5
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; private Date latestTopicPublishDate;
/**
* 进组审核open开启close关闭
*/
private String auditSwitch;
} }

4
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<ResiGroupCodeEntity> {
/** /**
* @Description 创建群组二维码 * @Description 创建群组二维码
* @param dto * @param dto,syncFlag(是否同步执行,true同步,false异步)
* @return String * @return String
* @Author liushaowen * @Author liushaowen
* @Date 2020/11/13 16:32 * @Date 2020/11/13 16:32
*/ */
String createGroupCode(CreateGroupCodeFormDTO dto); String createGroupCode(CreateGroupCodeFormDTO dto, boolean syncFlag);
/** /**
* @Description 获取群组二维码 * @Description 获取群组二维码

10
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.ResiGroupDTO;
import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.group.result.*;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -332,4 +333,13 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @date 2020/11/11 1:36 下午 * @date 2020/11/11 1:36 下午
*/ */
List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO); List<GroupInfoResultDTO> selectGroupInfo(GroupInfoFormDTO groupInfoFormDTO);
/**
* @return void
* @param formDTO
* @author yinzuomei
* @description 组长开启/关闭入群审核
* @Date 2020/11/17 14:18
**/
void editAuditSwitch(EditAuditSwitchFormDTO formDTO);
} }

170
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.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.EnvEnum; 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.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; 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.entity.ResiGroupCodeEntity;
import com.epmet.modules.group.redis.ResiGroupCodeRedis; import com.epmet.modules.group.redis.ResiGroupCodeRedis;
import com.epmet.modules.group.service.ResiGroupCodeService; 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.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.GroupCodeConstant;
import com.epmet.resi.group.dto.QRCodeMultipartFileDTO; import com.epmet.resi.group.dto.QRCodeMultipartFileDTO;
import com.epmet.resi.group.dto.group.ResiGroupCodeDTO; 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.CreateGroupCodeFormDTO;
import com.epmet.resi.group.dto.group.form.GetGroupCodeFormDTO; 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.form.GroupCodeBasicInfoFormDTO;
import com.epmet.resi.group.dto.group.result.GroupCodeBasicInfoResultDTO; 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.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -57,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutorService;
/** /**
* 小组二维码 小组唯一二维码海报码和小组码是同一个二维码长期有效的 * 小组二维码 小组唯一二维码海报码和小组码是同一个二维码长期有效的
@ -76,7 +84,13 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl<ResiGroupCodeDao,
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired @Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient; private ExecutorService executorService;
@Autowired
private GroupInvitationService groupInvitationService;
@Autowired
private ResiGroupService resiGroupService;
@Override @Override
public PageData<ResiGroupCodeDTO> page(Map<String, Object> params) { public PageData<ResiGroupCodeDTO> page(Map<String, Object> params) {
@ -131,14 +145,68 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl<ResiGroupCodeDao,
} }
/** /**
* @param dto * @param dto, syncFlag(是否同步执行,true同步,false异步)
* @return void * @return String
* @Description 创建群组二维码 * @Description 创建群组二维码
* @Author liushaowen * @Author liushaowen
* @Date 2020/11/13 16:32 * @Date 2020/11/13 16:32
*/ */
@Override @Override
public String createGroupCode(CreateGroupCodeFormDTO dto) { public String createGroupCode(CreateGroupCodeFormDTO dto, boolean syncFlag) {
if (syncFlag){
return createCodeFunction(dto);
}else {
executorService.execute(()->{
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<java.lang.String>
* @Description 获取群组二维码
* @Author liushaowen
* @Date 2020/11/16 9:37
*/
@Override
public Result<String> getGroupCode(GetGroupCodeFormDTO dto) {
ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
if (codeByGroupId != null) {
//数据库有数据
return new Result<String>().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<String>().ok(url);
}
}
private ResiGroupCodeEntity getCode(String groupId, String type) {
if (StringUtils.isBlank(groupId) || StringUtils.isBlank(type)) {
throw new RenException("获取二维码失败,groupId或type为空");
}
QueryWrapper<ResiGroupCodeEntity> 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 = ""; String result = "";
ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType()); ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
if (codeByGroupId != null) { if (codeByGroupId != null) {
@ -148,14 +216,21 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl<ResiGroupCodeDao,
//向微信获取二维码 //向微信获取二维码
// 获取AccessToken // 获取AccessToken
String accessToken = getAccessToken(dto.getCustomerId()); String accessToken = ThirdUtils.getAccessToken(dto.getCustomerId()).getResiToken();
if (StringUtils.isBlank(accessToken)) { if (StringUtils.isBlank(accessToken)) {
logger.error("获取accessToken失败,customerId:{}", dto.getCustomerId()); logger.error("获取accessToken失败,customerId:{}", dto.getCustomerId());
throw new RenException("获取accessToken失败"); throw new RenException("获取accessToken失败");
} }
//跳转的页面 //跳转的页面
StringBuilder path = new StringBuilder(ModuleConstant.CODE_INVITE_PAGE); StringBuilder path = new StringBuilder(ModuleConstant.CODE_INVITE_PAGE);
path.append("?groupId=").append(dto.getGroupId()); //获取invitationId
CreateGroupInvitationFormDTO invitationFormDTO = new CreateGroupInvitationFormDTO();
//获取群主userId
invitationFormDTO.setUserId(resiGroupService.get(dto.getGroupId()).getCreatedBy());
invitationFormDTO.setGroupId(dto.getGroupId());
CreateGroupInvitationResultDTO groupScanCodeInvitation = groupInvitationService.createGroupScanCodeInvitation(invitationFormDTO);
path.append("?invitationId=").append(groupScanCodeInvitation.getInvitationId());
//需要发送的Json //需要发送的Json
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
data.put("path", path.toString()); data.put("path", path.toString());
@ -194,70 +269,6 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl<ResiGroupCodeDao,
return result; return result;
} }
/**
* @param dto
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Description 获取群组二维码
* @Author liushaowen
* @Date 2020/11/16 9:37
*/
@Override
public Result<String> getGroupCode(GetGroupCodeFormDTO dto) {
ResiGroupCodeEntity codeByGroupId = getCode(dto.getGroupId(), dto.getType());
if (codeByGroupId != null) {
//数据库有数据
return new Result<String>().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<String>().ok(url);
}
}
private ResiGroupCodeEntity getCode(String groupId, String type) {
if (StringUtils.isBlank(groupId) || StringUtils.isBlank(type)) {
throw new RenException("获取二维码失败,groupId或type为空");
}
QueryWrapper<ResiGroupCodeEntity> 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<String, Object> 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 * @param formDTO
* @Description 获取生成海报(小组码)信息 * @Description 获取生成海报(小组码)信息
@ -271,17 +282,16 @@ public class ResiGroupCodeServiceImpl extends BaseServiceImpl<ResiGroupCodeDao,
logger.error(String.format("获取小组码基本信息失败,小组Id:%s", formDTO.getGroupId())); logger.error(String.format("获取小组码基本信息失败,小组Id:%s", formDTO.getGroupId()));
throw new RenException("获取小组码基本信息失败"); throw new RenException("获取小组码基本信息失败");
} }
//2.获取小组创建人称谓信息 if (null == resultDTO.getGroupCodeUrl() || "".equals(resultDTO.getGroupCodeUrl())) {
UserResiInfoListFormDTO userResiInfoListFormDTO = new UserResiInfoListFormDTO(); CreateGroupCodeFormDTO dto = ConvertUtils.sourceToTarget(formDTO, CreateGroupCodeFormDTO.class);
List<String> userIdList = new ArrayList<>(); dto.setType(GroupCodeConstant.CODE_TYPE_INVITE);
userIdList.add(resultDTO.getGroupUserId()); String url = createGroupCode(dto, true);
userResiInfoListFormDTO.setUserIdList(userIdList); if (StringUtils.isBlank(url)) {
Result<List<UserResiInfoResultDTO>> resultList = epmetUserOpenFeignClient.getUserResiInfoList(userResiInfoListFormDTO); logger.error(String.format("生成小组二维码失败,小组Id:%s", formDTO.getGroupId()));
if (!resultList.success() || null == resultList.getData() || resultList.getData().size() < NumConstant.ONE) { throw new RenException("获取小组码基本信息失败");
logger.error(String.format("调用user服务,查询用户基本信息失败,userId:%s", resultDTO.getGroupUserId())); }
throw new RenException("获取小组创建人基本信息失败"); resultDTO.setGroupCodeUrl(url);
} }
resultDTO.setShowName(resultList.getData().get(NumConstant.ZERO).getShowName());
return resultDTO; return resultDTO;
} }

41
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.scan.result.SyncScanResult;
import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*; 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.constant.ReadFlagConstant;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.UserResiInfoResultDTO; 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.ResiGroupEntity;
import com.epmet.modules.group.entity.ResiGroupOperationEntity; import com.epmet.modules.group.entity.ResiGroupOperationEntity;
import com.epmet.modules.group.redis.ResiGroupRedis; 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.ResiGroupOperationService;
import com.epmet.modules.group.service.ResiGroupService; import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.group.service.ResiGroupStatisticalService; 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.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -154,6 +160,11 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
@Value("${openapi.scan.method.imgSyncScan}") @Value("${openapi.scan.method.imgSyncScan}")
private String imgSyncScanMethod; private String imgSyncScanMethod;
@Autowired
private ResiGroupCodeService resiGroupCodeService;
@Autowired
private LoginUserUtil loginUserUtil;
@Override @Override
public PageData<ResiGroupDTO> page(Map<String, Object> params) { public PageData<ResiGroupDTO> page(Map<String, Object> params) {
IPage<ResiGroupEntity> page = baseDao.selectPage( IPage<ResiGroupEntity> page = baseDao.selectPage(
@ -554,6 +565,18 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED); groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED);
groupMemeberOperationDTO.setOperateUserId(agreeApplyGroupFormDTO.getUserId()); groupMemeberOperationDTO.setOperateUserId(agreeApplyGroupFormDTO.getUserId());
groupMemeberOperationService.update(groupMemeberOperationDTO); groupMemeberOperationService.update(groupMemeberOperationDTO);
//4-1.2020.11.17 sun 添加小组审核通过后生成小组的二维码图片逻辑 start
try {
CreateGroupCodeFormDTO dto = new CreateGroupCodeFormDTO();
dto.setCustomerId(resiGroupDTO.getCustomerId());
dto.setGridId(resiGroupDTO.getGridId());
dto.setGroupId(resiGroupDTO.getId());
dto.setType(GroupCodeConstant.CODE_TYPE_INVITE);
resiGroupCodeService.createGroupCode(dto ,false);
} catch (Exception e) {
logger.error(String.format("小组审核通过,生成小组二维码失败", e.getMessage()));
}
// end
//5、给用户发送消息???待定 //5、给用户发送消息???待定
//6、新增小组缓存信息、组员缓存信息 //6、新增小组缓存信息、组员缓存信息
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
@ -989,6 +1012,24 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
return recommendGroupList; return recommendGroupList;
} }
/**
* @param formDTO
* @return void
* @author yinzuomei
* @description 组长开启/关闭入群审核
* @Date 2020/11/17 14:18
**/
@Override
public void editAuditSwitch(EditAuditSwitchFormDTO formDTO) {
ResiGroupEntity resiGroupEntity=baseDao.selectById(formDTO.getGroupId());
String currentUserId=loginUserUtil.getLoginUserId();
if(!currentUserId.equals(resiGroupEntity.getCreatedBy())){
throw new RenException(EpmetErrorCode.GROUP_LEADER_CAN_EDIT_GROUP_INFO.getCode());
}
resiGroupEntity.setAuditSwitch(formDTO.getAuditSwitch());
baseDao.updateById(resiGroupEntity);
}
/** /**
* @Description 给加入此网格的网格长发送消息 * @Description 给加入此网格的网格长发送消息
* @param msg * @param msg

5
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/entity/GroupInvitationEntity.java

@ -68,4 +68,9 @@ public class GroupInvitationEntity extends BaseEpmetEntity {
*/ */
private Date validEndTime; private Date validEndTime;
/**
* 邀请链接invited;扫码scancode
*/
private String invitationType;
} }

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java

@ -103,11 +103,20 @@ public interface GroupInvitationService extends BaseService<GroupInvitationEntit
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO> * @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO>
* @param formDTO * @param formDTO
* @Author yinzuomei * @Author yinzuomei
* @Description 生成邀请连接 * @Description 生成邀请连接-链接
* @Date 2020/3/31 22:50 * @Date 2020/3/31 22:50
**/ **/
CreateGroupInvitationResultDTO createGroupInvitation(CreateGroupInvitationFormDTO formDTO); CreateGroupInvitationResultDTO createGroupInvitation(CreateGroupInvitationFormDTO formDTO);
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO>
* @param formDTO
* @Author liushaowen
* @Description 生成邀请连接-扫码
* @Date 2020-11-17 13:58
**/
CreateGroupInvitationResultDTO createGroupScanCodeInvitation(CreateGroupInvitationFormDTO formDTO);
/** /**
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.LinkGroupInfoResultDTO> * @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.LinkGroupInfoResultDTO>
* @param formDTO * @param formDTO

63
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.dao.ResiGroupMemberDao;
import com.epmet.modules.member.service.GroupMemeberOperationService; import com.epmet.modules.member.service.GroupMemeberOperationService;
import com.epmet.modules.member.service.ResiGroupMemberService; 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.EnterGroupTypeConstant;
import com.epmet.resi.group.constant.GroupStateConstant; import com.epmet.resi.group.constant.GroupStateConstant;
import com.epmet.resi.group.constant.LeaderFlagConstant; import com.epmet.resi.group.constant.LeaderFlagConstant;
@ -102,6 +103,8 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD
private ResiGuideFeignClient resiGuideFeignClient; private ResiGuideFeignClient resiGuideFeignClient;
@Autowired @Autowired
private ResiGroupRedis resiGroupRedis; private ResiGroupRedis resiGroupRedis;
@Autowired
private ResiGroupMemberServiceImpl resiGroupMemberServiceImpl;
@Override @Override
public PageData<GroupInvitationDTO> page(Map<String, Object> params) { public PageData<GroupInvitationDTO> page(Map<String, Object> params) {
@ -181,6 +184,41 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + NumConstant.FOURTEEN); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + NumConstant.FOURTEEN);
groupInvitationEntity.setValidEndTime(calendar.getTime()); groupInvitationEntity.setValidEndTime(calendar.getTime());
groupInvitationEntity.setResiGroupId(formDTO.getGroupId()); groupInvitationEntity.setResiGroupId(formDTO.getGroupId());
groupInvitationEntity.setInvitationType(GroupStateConstant.GROUP_INVITED);
insert(groupInvitationEntity);
CreateGroupInvitationResultDTO resultDTO = new CreateGroupInvitationResultDTO();
resultDTO.setInvitationId(groupInvitationEntity.getId());
return resultDTO;
}
/**
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO>
* @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); insert(groupInvitationEntity);
CreateGroupInvitationResultDTO resultDTO = new CreateGroupInvitationResultDTO(); CreateGroupInvitationResultDTO resultDTO = new CreateGroupInvitationResultDTO();
resultDTO.setInvitationId(groupInvitationEntity.getId()); resultDTO.setInvitationId(groupInvitationEntity.getId());
@ -343,14 +381,29 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD
logger.error(String.format("用户同意邀请进组失败,返回角色列表为空错误编码%s,错误提示%s",EpmetErrorCode.CANNOT_JOIN_GROUP.getCode(),EpmetErrorCode.CANNOT_JOIN_GROUP.getMsg())); logger.error(String.format("用户同意邀请进组失败,返回角色列表为空错误编码%s,错误提示%s",EpmetErrorCode.CANNOT_JOIN_GROUP.getCode(),EpmetErrorCode.CANNOT_JOIN_GROUP.getMsg()));
throw new RenException(EpmetErrorCode.CANNOT_JOIN_GROUP.getCode()); throw new RenException(EpmetErrorCode.CANNOT_JOIN_GROUP.getCode());
} }
//2020.11.17 sun 新增扫描或邀请进组是否需要审核的逻辑 start
GroupMemeberOperationDTO operation = new GroupMemeberOperationDTO();
operation.setGroupId(resiGroupDTO.getId());
operation.setCustomerUserId(formDTO.getUserId());
operation.setEnterGroupType(groupInvitationDTO.getInvitationType());
operation.setGroupInvitationId(formDTO.getInvitationId());
operation.setOperateUserId(formDTO.getUserId());
operation.setOperateStatus(MemberStateConstant.UNDER_AUDITTING);
operation.setOperateDes("通过扫码加入小组。");
//入组审核开关是开启状态则需要组长审核
if(GroupStateConstant.AUDIT_SWITCH_OPEN.equals(resiGroupDTO.getAuditSwitch())){
//新增一条入组申请
groupMemeberOperationService.accetInvitation(operation);
//给小组长推送站内信
resiGroupMemberServiceImpl.sendMessageToGroupLeader(resiGroupDTO, formDTO.getUserId());
return;
}
UserRoleDTO userRoleDTO=this.getUserRoleDTO(result.getData().getUserRoleList()); UserRoleDTO userRoleDTO=this.getUserRoleDTO(result.getData().getUserRoleList());
//5、新增一条邀请入群、直接审核通过的入群记录 //5、新增一条邀请入群、直接审核通过的入群记录
GroupMemeberOperationDTO groupMemeberOperation = new GroupMemeberOperationDTO(); GroupMemeberOperationDTO groupMemeberOperation = operation;
groupMemeberOperation.setGroupId(resiGroupDTO.getId());
groupMemeberOperation.setCustomerUserId(formDTO.getUserId());
groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED); groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED);
groupMemeberOperation.setEnterGroupType(EnterGroupTypeConstant.INVITED); groupMemeberOperation.setOperateDes("通过邀请链接加入小组。");
groupMemeberOperation.setOperateUserId(formDTO.getUserId()); //2020.11.17 end
groupMemeberOperationService.accetInvitation(groupMemeberOperation); groupMemeberOperationService.accetInvitation(groupMemeberOperation);
//6、直接加入群成员关系表 //6、直接加入群成员关系表
//如果是之前被移除的,则修改resi_group_member记录 //如果是之前被移除的,则修改resi_group_member记录

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupMemeberOperationEntity.java

@ -62,7 +62,7 @@ Ps: 1) 入群被拒绝之后,如果再申请是插入一条新的审核中的
private String operateStatus; private String operateStatus;
/** /**
* 入群方式受邀请入群 - invited 主动加入 - join * 入群方式受邀请入群 - invited 主动加入 - join扫码入群 - scancode
*/ */
private String enterGroupType; private String enterGroupType;

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ResiGroupMemberEntity.java

@ -54,7 +54,7 @@ public class ResiGroupMemberEntity extends BaseEpmetEntity {
private String groupLeaderFlag; private String groupLeaderFlag;
/** /**
* 入群方式受邀请入群 - invited 主动加入 - join * 入群方式受邀请入群 - invited 主动加入 - join扫码入群 - scancode
*/ */
private String enterGroupType; private String enterGroupType;

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -245,7 +245,7 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
} }
//给组长发送消息,有人申请入群 //给组长发送消息,有人申请入群
private void sendMessageToGroupLeader(ResiGroupDTO resiGroupDTO, String currentUserId) { public void sendMessageToGroupLeader(ResiGroupDTO resiGroupDTO, String currentUserId) {
try { try {
ResiGroupMemberDTO groupLeader = resiGroupDao.selectGroupLeader(resiGroupDTO.getId()); ResiGroupMemberDTO groupLeader = resiGroupDao.selectGroupLeader(resiGroupDTO.getId());
if (null == groupLeader) { if (null == groupLeader) {

25
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/properties/ThreadProperties.java

@ -0,0 +1,25 @@
package com.epmet.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 线程池属性类
*/
@ConfigurationProperties(prefix = "thread")
@Data
public class ThreadProperties {
private ThreadPoolProperties threadPool;
@Data
public static class ThreadPoolProperties {
private int corePoolSize;
private int maxPoolSize;
private int queueCapacity;
private int keepAlive;
public ThreadPoolProperties() {
}
}
}

10
epmet-module/resi-group/resi-group-server/src/main/resources/bootstrap.yml

@ -130,4 +130,12 @@ openapi:
dingTalk: dingTalk:
robot: robot:
webHook: @dingTalk.robot.webHook@ webHook: @dingTalk.robot.webHook@
secret: @dingTalk.robot.secret@ secret: @dingTalk.robot.secret@
thread:
# 线程池配置
threadPool:
corePoolSize: @thread.pool.core-pool-size@
maxPoolSize: @thread.pool.max-pool-size@
queueCapacity: @thread.pool.queue-capacity@
keepAlive: @thread.pool.keep-alive@

9
epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.5__group_audit_switch.sql

@ -0,0 +1,9 @@
alter table resi_group add column AUDIT_SWITCH varchar(32) not null DEFAULT'open' COMMENT '进组审核open开启;close关闭';
alter table group_invitation add column INVITATION_TYPE VARCHAR(32) NOT NULL DEFAULT 'invited' comment '邀请链接:invited;扫码:scancode';
alter table group_memeber_operation MODIFY ENTER_GROUP_TYPE varchar(32) not null comment '入群方式:(受邀请入群 - invited;主动加入 - join;created创建群自动进入;scancode扫码入群)';
alter table resi_group_member modify ENTER_GROUP_TYPE varchar(32) not null comment '入群方式:(受邀请入群 - invited 、 主动加入 - join、created创建群自动进入、扫码入群-scancode)';

24
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupCodeDao.xml

@ -5,24 +5,22 @@
<select id="selectGroupCodeBasicInfo" resultType="com.epmet.resi.group.dto.group.result.GroupCodeBasicInfoResultDTO"> <select id="selectGroupCodeBasicInfo" resultType="com.epmet.resi.group.dto.group.result.GroupCodeBasicInfoResultDTO">
SELECT SELECT
rgc.GROUP_ID AS "groupId", rg.id AS "groupId",
rgc.URL AS "groupCodeUrl", rg.group_name AS "groupName",
rg.GROUP_NAME AS "groupName", rg.group_head_photo AS "groupHeadPhoto",
rg.GROUP_HEAD_PHOTO AS "groupHeadPhoto", rg.group_introduction AS "groupIntroduction",
rg.GROUP_INTRODUCTION AS "groupIntroduction", rgc.URL AS "groupCodeUrl"
rg.CREATED_BY AS "groupUserId"
FROM FROM
resi_group_code rgc resi_group rg
INNER JOIN resi_group rg ON rgc.GROUP_ID = rg.ID LEFT JOIN resi_group_code rgc ON rgc.group_id = rg.id AND rgc.del_flag = '0'
WHERE WHERE
rgc.DEL_FLAG = '0' rg.del_flag = '0'
AND rg.DEL_FLAG = '0' AND rg.id = #{groupId}
AND rgc.GROUP_ID = #{groupId}
<if test='null != customerId and "" != customerId'> <if test='null != customerId and "" != customerId'>
and rgc.customer_id = #{customerId} and rg.customer_id = #{customerId}
</if> </if>
<if test='null != gridId and "" != gridId'> <if test='null != gridId and "" != gridId'>
and rgc.grid_id = #{gridId} and rg.grid_id = #{gridId}
</if> </if>
</select> </select>

3
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.GROUP_ID = rg.id
AND gmo.OPERATE_STATUS = 'under_auditting' AND gmo.OPERATE_STATUS = 'under_auditting'
) AS totalApplyingMember, ) AS totalApplyingMember,
rgs.TOTAL_TOPICS rgs.TOTAL_TOPICS,
rg.AUDIT_SWITCH
FROM FROM
resi_group rg resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID ) LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )

Loading…
Cancel
Save