Browse Source

Merge branch 'dev_group_edit' into dev

# Conflicts:
#	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/java/com/epmet/modules/utils/ModuleConstant.java
dev_shibei_match
wxz 5 years ago
parent
commit
ac14f92518
  1. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java
  2. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  3. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  4. 20
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  5. 5
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/WorkPointVerificationFormDTO.java
  6. 3
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ExchangeController.java
  7. 48
      epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiGroupController.java
  8. 2
      epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/feign/ResiGroupFeignClient.java
  9. 3
      epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/RemindServiceImpl.java
  10. 14
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupAuditStatusConstant.java
  11. 10
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupLimitConstant.java
  12. 40
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/CommonGridAndPageFormDTO.java
  13. 39
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/EditGroupFormDTO.java
  14. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GovGroupSummarizeFromDTO.java
  15. 43
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupEditionAuditFormDTO.java
  16. 21
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java
  17. 42
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupEditionDetailResultDTO.java
  18. 35
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  19. 24
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  20. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java
  21. 65
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java
  22. 92
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/GroupEditSubmitRecordDao.java
  23. 14
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java
  24. 101
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/GroupEditSubmitRecordEntity.java
  25. 47
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/GroupEditSubmitRecordRedis.java
  26. 36
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java
  27. 31
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java
  28. 442
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  29. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java
  30. 24
      epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.4__createGroupSubmitRecord.sql
  31. 2
      epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml
  32. 150
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/GroupEditSubmitRecordDao.xml
  33. 21
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  34. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBaseInfoResultDTO.java

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java

@ -10,6 +10,9 @@ public enum RequirePermissionEnum {
* 工作-基层治理-群组管理
*/
WORK_GRASSROOTS_GROUP_AUDITINGLIST("work_grassroots_group_auditinglist", "基层治理:群组管理:待审核列表", "基层治理:群组管理:待审核列表查询"),
WORK_GRASSROOTS_GROUP_EDIT_AUDITINGLIST("work_grassroots_group_edit_auditinglist", "基层治理:群组管理:小组变更待审核列表", "基层治理:群组管理:小组变更待审核列表"),
WORK_GRASSROOTS_GROUP_EDIT_DETAIL("work_grassroots_group_edit_detail","基层治理:群组管理:变更申请","基层治理:群组管理:小组信息变更申请详情"),
WORK_GRASSROOTS_GROUP_EDIT_AUDIT("work_grassroots_group_edit_audit","基层治理:群组管理:变更审核","基层治理:群组管理:小组信息变更审核(通过或驳回)"),
WORK_GRASSROOTS_GROUP_GROUPSINTHEGRID("work_grassroots_group_groupsinthegrid", "基层治理:群组管理:本网格小组列表", "基层治理:群组管理:本网格小组列表查询"),
WORK_GRASSROOTS_GROUP_AUDIT("work_grassroots_group_audit", "基层治理:群组管理:审核建组", "基层治理:群组管理:审核建组(通过或驳回)"),
WORK_GRASSROOTS_GROUP_AUDITED("work_grassroots_group_audited", "基层治理:群组管理:审核历史", "基层治理:群组管理:审核历史列表查询"),

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -123,7 +123,12 @@ public enum EpmetErrorCode {
SELECT_CUSTOMER_ERROR(8652,"未查询到注册客户信息"),
SELECT_AGENCY_ERROR(8653,"根据客户信息未查询到注册客户组织信息"),
SELECT_USER_ERROR(8654,"根据客户信息未查询到注册客户管理员信息"),
UPDATE_CUSTOMER_ERROR(8655,"更新注册客户信息为已完成初始化失败");
UPDATE_CUSTOMER_ERROR(8655,"更新注册客户信息为已完成初始化失败"),
GROUP_EDIT_ERROR(9000,"组信息编辑失败"),
GROUP_NOT_EXISTS(9001,"该组不存在"),
GROUP_IN_AUDITING(9002,"该组已提交编辑,处于待审核状态,完成审核前不可再次提交"),
GROUP_EDIT_NUM_LIMITED(9003,"已达编辑次数上限");
private int code;

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -353,4 +353,11 @@ public class RedisKeys {
public static String getScreenIndexDataLockKey() {
return rootPrefix.concat("stats:indexcal:lock");
}
/**
* @Description 用户缓存Key
**/
public static String getResiUserKey(String userId){
return rootPrefix.concat("resi:user:").concat(userId);
}
}

20
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -709,4 +709,24 @@ public class DateUtils {
}
}else return null;
}
/**
* 指定月份的开始时间
* @param date
* @return
*/
public static Date getMonthStart(Date date) {
LocalDate ldn = new LocalDate(date);
return ldn.dayOfMonth().withMinimumValue().toDate();
}
/**
* 指定月份的结束时间
* @param date
* @return
*/
public static Date getMonthEnd(Date date) {
LocalDate ldn = new LocalDate(date);
return ldn.dayOfMonth().withMaximumValue().toDate();
}
}

5
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/WorkPointVerificationFormDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.Max;
@ -17,7 +18,9 @@ import java.io.Serializable;
public class WorkPointVerificationFormDTO implements Serializable {
private static final long serialVersionUID = -590822390667788693L;
@NotBlank(message = "获取不到用户Id",groups = ResiCommonUserIdFormDTO.UserIdGroup.class)
public interface WorkPointVerifyGroup extends CustomerClientShowGroup{}
@NotBlank(message = "获取不到用户Id",groups = WorkPointVerifyGroup.class)
private String staffId;
/**

3
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ExchangeController.java

@ -6,7 +6,6 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.PointVerificationFormDTO;
import com.epmet.dto.form.ResiCommonUserIdFormDTO;
import com.epmet.dto.form.WorkPointVerificationFormDTO;
import com.epmet.dto.result.PointVerificationResultDTO;
import com.epmet.dto.result.WorkPointVerficationListResultDTO;
@ -54,7 +53,7 @@ public class ExchangeController {
@PostMapping("recordmonthly")
public Result<WorkPointVerficationListResultDTO> getStaffVerificationRecordMonthly(@LoginUser TokenDto token,@RequestBody WorkPointVerificationFormDTO verificationParam){
verificationParam.setStaffId(token.getUserId());
ValidatorUtils.validateEntity(verificationParam, ResiCommonUserIdFormDTO.UserIdGroup.class);
ValidatorUtils.validateEntity(verificationParam, WorkPointVerificationFormDTO.WorkPointVerifyGroup.class);
return new Result<WorkPointVerficationListResultDTO>().ok(pointVerificationLogService.getStaffVerificationRecordMonthly(verificationParam));
}

48
epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/controller/ResiGroupController.java

@ -11,6 +11,7 @@ import com.epmet.resi.group.dto.group.result.*;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO;
import com.epmet.resi.group.dto.group.form.GroupAuditedFromDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.ResiGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -31,6 +32,8 @@ import java.util.List;
public class ResiGroupController {
@Autowired
ResiGroupService resiGroupService;
@Autowired
ResiGroupOpenFeignClient groupOpenFeignClient;
/**
* 小组审核历史列表
*
@ -127,4 +130,49 @@ public class ResiGroupController {
ValidatorUtils.validateEntity(disAgreeApplyGroupFormDTO);
return resiGroupService.disagreeApplying(disAgreeApplyGroupFormDTO);
}
/**
* @Description 工作端 查询组变更待审核列表
* @param param
* @return
* @author wangc
* @date 2020.11.03 10:19
*/
@PostMapping("edit-auditing-list")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_GROUP_EDIT_AUDITINGLIST)
public Result<List<ApplyingGroupResultDTO>> getEditAuditingList(@RequestBody CommonGridAndPageFormDTO param){
ValidatorUtils.validateEntity(param, CommonGridAndPageFormDTO.GridPageGroup.class);
return groupOpenFeignClient.govEditAuditingList(param);
}
/**
* @Description 工作端-查询小组修改信息的详情内容
* @param param
* @returncom.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:10
*/
@PostMapping("edit-auditing-detail")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_GROUP_EDIT_DETAIL)
public Result<GroupEditionDetailResultDTO> getEditAuditingDetail(@RequestBody GovGroupSummarizeFromDTO param){
ValidatorUtils.validateEntity(param, GovGroupSummarizeFromDTO.GroupIdG.class);
return groupOpenFeignClient.govEditAuditingDetail(param);
}
/**
* @Description 工作端-工作人员提交审核
* @param param
* @return void
* @author wangc
* @date 2020.11.03 16:02
*/
@PostMapping("audit-edit")
@RequirePermission(requirePermission = RequirePermissionEnum.WORK_GRASSROOTS_GROUP_EDIT_AUDIT)
public Result auditEdit(@LoginUser TokenDto tokenDto,@RequestBody GroupEditionAuditFormDTO param){
param.setStaffId(tokenDto.getUserId());
ValidatorUtils.validateEntity(param, GroupEditionAuditFormDTO.GroupEditionAuditGroup.class);
return groupOpenFeignClient.govAuditEdit(param);
}
}

2
epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/feign/ResiGroupFeignClient.java

@ -143,7 +143,7 @@ public interface ResiGroupFeignClient {
* @param gridIdList
* @return com.epmet.commons.tools.utils.Result
* @Author yinzuomei
* @Description 查询网格下待审核的小组总数
* @Description 查询网格下待审核的小组总数+变更小组信息申请数
* @Date 2020/5/13 15:49
**/
@PostMapping(value = "/resi/group/group/groupprocessingcount",consumes = MediaType.APPLICATION_JSON_VALUE)

3
epmet-module/gov-grid/gov-grid-server/src/main/java/com/epmet/service/impl/RemindServiceImpl.java

@ -104,8 +104,7 @@ public class RemindServiceImpl implements RemindService {
}
}
}else{
logger.error(String.format("调用%s服务,查询网格%s待审核小组数失败code%s,msg:", ServiceConstant.RESI_GROUP_SERVER, gridIdList.get(0), groupProcessingCountResult.getCode(),
groupProcessingCountResult.getMsg()));
logger.error(String.format("查询群组管理待办事项数失败,%s",groupProcessingCountResult.getMsg()));
}
return false;
}

14
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupAuditStatusConstant.java

@ -0,0 +1,14 @@
package com.epmet.resi.group.constant;
public interface GroupAuditStatusConstant {
// 审核中
String UNDER_AUDITING = "under_auditing";
// 驳回
String REJECTED = "rejected";
// 支持
String APPROVED = "approved";
}

10
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupLimitConstant.java

@ -0,0 +1,10 @@
package com.epmet.resi.group.constant;
public interface GroupLimitConstant {
/**
* 每月可以编辑2次
*/
Integer EDIT_NUM_LIMIT_MONTH = 2;
}

40
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/CommonGridAndPageFormDTO.java

@ -0,0 +1,40 @@
package com.epmet.resi.group.dto.group.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 通用网格分页传参DTO
* @ClassName CommonGridAndPageFormDTO
* @Auth wangc
* @Date 2020-11-02 17:22
*/
@Data
public class CommonGridAndPageFormDTO implements Serializable {
private static final long serialVersionUID = -7916909736115741017L;
public interface GridPageGroup extends CustomerClientShowGroup{}
/**
* 网格Id
*/
@NotBlank(message = "网格Id不能为空" , groups = GridPageGroup.class)
private String gridId;
/**
* 页码
*/
@Min(1)
private Integer pageNo;
/**
* 每页多少条数
*/
@Min(1)
private Integer pageSize;
}

39
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/EditGroupFormDTO.java

@ -0,0 +1,39 @@
package com.epmet.resi.group.dto.group.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EditGroupFormDTO {
// 分组详情校验
public interface GroupDetailVG {}
// 提交组编辑校验组
public interface SubmitGroupEditVG {}
/**
* 组id
*/
@NotBlank(message = "组ID不能为空", groups = { GroupDetailVG.class, SubmitGroupEditVG.class })
private String groupId;
@NotBlank(message = "组头像不能为空", groups = { SubmitGroupEditVG.class })
private String groupHeadPhoto;
@NotBlank(message = "组名称不能为空", groups = { SubmitGroupEditVG.class })
@Length(max = 10, message = "组名称长度不能超过10个字", groups = { SubmitGroupEditVG.class })
private String groupName;
@NotBlank(message = "组介绍不能为空", groups = { SubmitGroupEditVG.class })
@Length(max = 500, message = "组介绍长度不能超过500个字", groups = { SubmitGroupEditVG.class })
private String groupIntroduction;
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GovGroupSummarizeFromDTO.java

@ -1,7 +1,9 @@
package com.epmet.resi.group.dto.group.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
@ -12,8 +14,12 @@ import java.io.Serializable;
@Data
public class GovGroupSummarizeFromDTO implements Serializable {
private static final long serialVersionUID = 1L;
public interface GroupIdG extends CustomerClientShowGroup{}
/**
* 小组id
*/
@NotBlank(message = "群组Id不能为空",groups = GroupIdG.class)
private String groupId;
}

43
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupEditionAuditFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.resi.group.dto.group.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 组信息修改审核入参DTO
* @ClassName GroupEditionAuditFormDTO
* @Auth wangc
* @Date 2020-11-02 17:30
*/
@Data
public class GroupEditionAuditFormDTO implements Serializable {
private static final long serialVersionUID = 3851649860177395296L;
public interface GroupEditionAuditGroup extends CustomerClientShowGroup{}
/**
* 组Id
*/
@NotBlank(message = "组Id不能为空",groups = GroupEditionAuditGroup.class)
private String groupId;
/**
* 审核结果 审核结果approved支持;rejected:拒绝
*/
@NotBlank(message = "审核结果不能为空",groups = GroupEditionAuditGroup.class)
private String auditResult;
/**
* 拒绝时的备注
*/
private String remark;
/**
* 工作人员Id
*/
@NotBlank(message = "工作人员Id不能为空",groups = GroupEditionAuditGroup.class)
private String staffId;
}

21
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupDetailResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.resi.group.dto.group.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GroupDetailResultDTO {
private String groupHeadPhoto;
private String groupName;
private String groupIntroduction;
private Integer editNumLimit;
private Integer avaliableEditNum;
private String auditStatus;
private Boolean editable;
private String remark;
}

42
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupEditionDetailResultDTO.java

@ -0,0 +1,42 @@
package com.epmet.resi.group.dto.group.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 工作端 群信息修改申请详情
* @ClassName GroupEditionDetailResultDTO
* @Auth wangc
* @Date 2020-11-02 17:54
*/
@Data
public class GroupEditionDetailResultDTO implements Serializable {
private static final long serialVersionUID = -784043668974222480L;
/**
* 待审核的小组Id
*/
private String groupId;
/**
* 待审核小组名称 是提交的名称如果没有更改群名称则还是原来的
*/
private String groupName;
/**
* 待审核小组图片 是提交的群头像如果没有更改群头像则还是原来的
*/
private String groupHeadPhoto;
/**
* 待审核小组的介绍 是提交的群介绍如果没有更改群介绍则还是原来的
*/
private String groupIntroduction;
/**
* 群主的昵称 xx路-xx先生/女士
*/
private String groupLeaderName;
}

35
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -1,9 +1,19 @@
package com.epmet.resi.group.feign;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO;
import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO;
import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -11,6 +21,31 @@ import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:16
*/
//@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class,url = "localhost:8095")
@FeignClient(name = ServiceConstant.RESI_GROUP_SERVER, fallback = ResiGroupOpenFeignClientFallback.class)
public interface ResiGroupOpenFeignClient {
@PostMapping("/resi/group/group/gov-edit-auditing-list")
Result<List<ApplyingGroupResultDTO>> govEditAuditingList(@RequestBody CommonGridAndPageFormDTO param);
/**
* @Description 查询小组修改信息的详情内容
* @param param
* @returncom.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:10
*/
@PostMapping("/resi/group/group/gov-edit-auditing-detail")
Result<GroupEditionDetailResultDTO> govEditAuditingDetail(@RequestBody GovGroupSummarizeFromDTO param);
/**
* @Description 工作人员提交审核
* @param param
* @return void
* @author wangc
* @date 2020.11.03 16:02
*/
@PostMapping("/resi/group/group/gov-audit-edit")
Result govAuditEdit(@RequestBody GroupEditionAuditFormDTO param);
}

24
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -1,8 +1,18 @@
package com.epmet.resi.group.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.dto.group.form.CommonGridAndPageFormDTO;
import com.epmet.resi.group.dto.group.form.GovGroupSummarizeFromDTO;
import com.epmet.resi.group.dto.group.form.GroupEditionAuditFormDTO;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
*
@ -11,4 +21,18 @@ import org.springframework.stereotype.Component;
*/
@Component
public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClient {
@Override
public Result<List<ApplyingGroupResultDTO>> govEditAuditingList(CommonGridAndPageFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govEditAuditingList", param);
}
@Override
public Result<GroupEditionDetailResultDTO> govEditAuditingDetail(GovGroupSummarizeFromDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govEditAuditingDetail", param);
}
@Override
public Result govAuditEdit(GroupEditionAuditFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "govAuditEdit", param);
}
}

5
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java

@ -59,6 +59,11 @@ public interface UserMessageConstant {
*/
String CREATION_OF_GROUP_MESSAGE_TEMPLATE = "%s%s申请创建小组【%s】,请审核。";
/**
* 变更组信息时的消息模板
*/
String EDIT_OF_GROUP_MESSAGE_TEMPLATE = "%s%s申请变更小组【%s】,请审核。";
/**
* 组长审核入组申请时的微信订阅behavior
*/

65
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java

@ -297,7 +297,7 @@ public class ResiGroupController {
* @param gridIdList
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.resi.group.dto.group.GroupProcessingCountResultDTO>>
* @Author yinzuomei
* @Description 传入网格id列表返回每个网格的待审核小组总数
* @Description 传入网格id列表返回每个网格的待审核小组总数+变更小组信息申请数
* @Date 2020/5/13 21:33
**/
@PostMapping("groupprocessingcount")
@ -359,4 +359,67 @@ public class ResiGroupController {
resiGroupStatisticalService.updateWhenAuditedResiRole(resiIdentityFormDTO);
return new Result();
}
/**
* 查询组详情
* @param form
* @return
*/
@PostMapping("get-detail")
public Result getGroupDetail(@RequestBody EditGroupFormDTO form){
ValidatorUtils.validateEntity(form, EditGroupFormDTO.GroupDetailVG.class);
GroupDetailResultDTO groupDetail = resiGroupService.getGroupDetail(form.getGroupId());
return new Result().ok(groupDetail);
}
/**
* 提交小组信息编辑
* @param form
* @return
*/
@PostMapping("submit-edit")
public Result submitGroupEdit(@RequestBody EditGroupFormDTO form, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(form, EditGroupFormDTO.SubmitGroupEditVG.class);
resiGroupService.submitGroupEdit(form.getGroupId(), form.getGroupName(), form.getGroupHeadPhoto(), form.getGroupIntroduction(), tokenDto.getUserId());
return new Result();
}
/**
* @Description 工作端 查询组变更待审核列表
* @param param
* @return
* @author wangc
* @date 2020.11.03 10:19
*/
@PostMapping("gov-edit-auditing-list")
public Result<List<ApplyingGroupResultDTO>> govEditAuditingList(@RequestBody CommonGridAndPageFormDTO param){
return new Result<List<ApplyingGroupResultDTO>>().ok(resiGroupService.getEditAuditingList(param));
}
/**
* @Description 工作端-查询小组修改信息的详情内容
* @param param
* @returncom.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:10
*/
@PostMapping("gov-edit-auditing-detail")
public Result<GroupEditionDetailResultDTO> govEditAuditingDetail(@RequestBody GovGroupSummarizeFromDTO param){
return new Result<GroupEditionDetailResultDTO>().ok(resiGroupService.getEditAuditingDetail(param));
}
/**
* @Description 工作端-作人员提交审核
* @param param
* @return void
* @author wangc
* @date 2020.11.03 16:02
*/
@PostMapping("gov-audit-edit")
public Result govAuditEdit(@RequestBody GroupEditionAuditFormDTO param){
resiGroupService.auditEdit(param);
return new Result();
}
}

92
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/GroupEditSubmitRecordDao.java

@ -0,0 +1,92 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.group.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.group.entity.GroupEditSubmitRecordEntity;
import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 组编辑提交记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-02
*/
@Mapper
public interface GroupEditSubmitRecordDao extends BaseDao<GroupEditSubmitRecordEntity> {
/**
* 查询指定组指定时间段内的编辑次数
* @param groupId
* @param monthStart
* @param monthEnd
* @return
*/
int countEditNum(@Param("groupId") String groupId,
@Param("monthStart") Date monthStart,
@Param("monthEnd") Date monthEnd);
/**
* 查询最后一次编辑提交记录
* @param groupId
*/
GroupEditSubmitRecordEntity getLatestEditSubmitRecord(@Param("groupId") String groupId);
/**
* @Description 工作端查询群组修改信息申请列表
* @param gridId
* @return
* @author wangc
* @date 2020.11.03 13:39
*/
List<ApplyingGroupResultDTO> selectGroupEditApplyList(@Param("gridId")String gridId);
/**
* @Description 查询小组修改信息详情
* @param
* @return com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:32
*/
GroupEditSubmitRecordEntity selectEditDetail(@Param("groupId")String groupId,@Param("auditResult") String auditResult);
/**
* @Description 审核群信息更改
* @param groupId
* @param staffId
* @param auditStatus
* @param remark
* @return int
* @author wangc
* @date 2020.11.03 17:33
*/
int updateAuditResult(@Param("groupId")String groupId,@Param("staffId") String staffId,@Param("auditStatus") String auditStatus,@Param("remark")String remark);
/**
* @param gridId
* @author yinzuomei
* @description 根据网格id查询 待审核的变更小组信息申请 总数
* @Date 2020/11/13 10:05
**/
Integer selectCountAuditingRec(String gridId);
}

14
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java

@ -26,6 +26,7 @@ import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -188,4 +189,17 @@ public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
* @date 2020.05.22 09:54
**/
List<ResiGroupDTO> selectGroupListByGridIds(@Param("gridIds") List<String> gridIds);
/**
* 编辑提交的时候检查组名是否存在网格内检查
* 检查resi_group中已审核通过的和待审核的
* 检查submit_record中待审核的已审核的不用检查因为已经更新到resi_group中了
* @param groupId
* @param gridId
* @param groupName
* @return
*/
int countExistsGroupNameBeforeEdit(@Param("groupId") String groupId,
@Param("gridId") String gridId,
@Param("groupName") String groupName);
}

101
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/GroupEditSubmitRecordEntity.java

@ -0,0 +1,101 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.group.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 组编辑提交记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-02
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("group_edit_submit_record")
public class GroupEditSubmitRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 小组ID
*/
private String groupId;
/**
* 客户ID
*/
private String customerId;
/**
* 网格ID
*/
private String gridId;
/**
* 头像
*/
private String groupHeadPhoto;
/**
* 小组名称
*/
private String groupName;
/**
* 小组介绍
*/
private String groupIntroduction;
/**
* 审核状态under_auditting:审核中,approved:通过rejected:驳回
*/
private String auditStatus;
/**
* 审核人ID
*/
private String staffId;
/**
* 回复
*/
private String remark;
/**
* 审核时间
*/
private Date auditTime;
/**
* 审核人员查看待审核列表时的文案 :党员李华申请变更小组原小组名请审核
*/
private String messageText;
/**
* 已读read 未读unread
*/
private String readFlag;
}

47
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/GroupEditSubmitRecordRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.group.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 组编辑提交记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-11-02
*/
@Component
public class GroupEditSubmitRecordRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

36
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java

@ -19,8 +19,12 @@ package com.epmet.modules.group.redis;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.modules.constant.ResiGroupRedisKeys;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.group.service.ResiGroupStatisticalService;
@ -36,6 +40,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.*;
@ -57,6 +62,9 @@ public class ResiGroupRedis {
@Autowired
private ResiGroupStatisticalService statisticalService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
public void delete(Object[] ids) {
@ -124,6 +132,16 @@ public class ResiGroupRedis {
return null;
}
/**
* @Description 删除组缓存
* @param groupId
* @return void
* @author wangc
* @date 2020.11.12 14:07
*/
public void delGroup(String groupId){
redisUtils.delete(ResiGroupRedisKeys.getResiGroupInfoKey(groupId));
}
/**
* @param gridId
@ -215,4 +233,22 @@ public class ResiGroupRedis {
}
});
}
/**
* @Description 从缓存中获取用户的真实姓名
* @param userId
* @return java.lang.String
* @author wangc
* @date 2020.11.03 15:27
*/
public String getFullName(String userId){
String fieldValue = (String)redisUtils.hGet(RedisKeys.getResiUserKey(userId),"realName");
if(StringUtils.isNotBlank(fieldValue)) return fieldValue;
List<String> userParam = new LinkedList<>(); userParam.add(userId);
Result<List<UserBaseInfoResultDTO>> userCacheResult = epmetUserOpenFeignClient.queryUserBaseInfo(userParam);
if(userCacheResult.success() && !CollectionUtils.isEmpty(userCacheResult.getData())){
return userCacheResult.getData().iterator().next().getRealName();
}
return null;
}
}

31
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java

@ -293,4 +293,35 @@ public interface ResiGroupService extends BaseService<ResiGroupEntity> {
* @return java.util.List<com.epmet.resi.group.dto.group.result.RecommendedListResultDTO>
*/
List<RecommendedListResultDTO> recommendedList(RecommendedListFormDTO formDTO);
GroupDetailResultDTO getGroupDetail(String groupId);
void submitGroupEdit(String groupId, String groupName, String groupHeadPhoto, String groupIntroduction, String editUserId);
/**
* @Description 工作端 查询组变更待审核列表
* @param param
* @return
* @author wangc
* @date 2020.11.03 10:19
*/
List<ApplyingGroupResultDTO> getEditAuditingList(CommonGridAndPageFormDTO param);
/**
* @Description 查询小组修改信息的详情内容
* @param param
* @returncom.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:10
*/
GroupEditionDetailResultDTO getEditAuditingDetail(GovGroupSummarizeFromDTO param);
/**
* @Description 工作人员提交审核
* @param param
* @return void
* @author wangc
* @date 2020.11.03 16:02
*/
void auditEdit(GroupEditionAuditFormDTO param);
}

442
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -28,9 +28,13 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.scan.param.ImgScanParamDTO;
import com.epmet.commons.tools.scan.param.ImgTaskDTO;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
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.constant.ReadFlagConstant;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserResiInfoResultDTO;
@ -40,8 +44,10 @@ import com.epmet.modules.constant.UserMessageConstant;
import com.epmet.modules.feign.EpmetMessageFeignClient;
import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.feign.GovOrgFeignClient;
import com.epmet.modules.group.dao.GroupEditSubmitRecordDao;
import com.epmet.modules.group.dao.ResiGroupDao;
import com.epmet.modules.group.dao.ResiGroupOperationDao;
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;
@ -54,25 +60,25 @@ import com.epmet.modules.member.redis.ResiGroupMemberRedis;
import com.epmet.modules.member.service.GroupMemeberOperationService;
import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.EnterGroupTypeConstant;
import com.epmet.resi.group.constant.GroupStateConstant;
import com.epmet.resi.group.constant.LeaderFlagConstant;
import com.epmet.resi.group.constant.MemberStateConstant;
import com.epmet.resi.group.constant.*;
import com.epmet.resi.group.dto.UserRoleDTO;
import com.epmet.resi.group.dto.group.*;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.form.GridIdFormDTO;
import com.epmet.resi.group.dto.group.form.ShouldVoteCountFormDTO;
import com.epmet.resi.group.dto.group.form.*;
import com.epmet.resi.group.dto.group.result.*;
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 org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
@ -127,6 +133,27 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private GroupEditSubmitRecordDao groupEditSubmitRecordDao;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private CpUserDetailRedis sysUserInfoRedis;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
private String textSyncScanMethod;
@Value("${openapi.scan.method.imgSyncScan}")
private String imgSyncScanMethod;
@Override
public PageData<ResiGroupDTO> page(Map<String, Object> params) {
IPage<ResiGroupEntity> page = baseDao.selectPage(
@ -338,38 +365,45 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
logger.info(String.format("创建小组异常:%s",EpmetErrorCode.GROUP_ALREADY_EXISTED.getMsg()));
throw new RenException(EpmetErrorCode.GROUP_ALREADY_EXISTED.getCode());
}
//2.1、查询当前申请人的身份,生成对应格式的消息内容
UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyCreateGroupFormDTO.getApp(),
applyCreateGroupFormDTO.getUserId(),
applyCreateGroupFormDTO.getCustomerId(),
applyCreateGroupFormDTO.getGridId());
if (!NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag()) && !NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())) {
//2.内容检查
scanGroupEditContent(applyCreateGroupFormDTO.getGroupName(),
applyCreateGroupFormDTO.getGroupIntroduction(),
applyCreateGroupFormDTO.getGroupHeadPhoto());
//3.1、查询当前申请人的身份,生成对应格式的消息内容
UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyCreateGroupFormDTO.getApp(),
applyCreateGroupFormDTO.getUserId(),
applyCreateGroupFormDTO.getCustomerId(),
applyCreateGroupFormDTO.getGridId());
if (!NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag()) && !NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())) {
logger.info(String.format("创建小组异常:%s",EpmetErrorCode.CANNOT_CREATE_GROUP.getMsg()));
throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode());
}
String roleName = "";
if(NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag())){
roleName = ModuleConstant.PARTYMEMBER;
}else if(NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())){
roleName = ModuleConstant.WAREMHEARTED_RESI;
}
//2.2、插入一条待审核的组信息
}
String roleName = "";
if(NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag())){
roleName = ModuleConstant.PARTYMEMBER;
}else if(NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())){
roleName = ModuleConstant.WAREMHEARTED_RESI;
}
//3.2、插入一条待审核的组信息
ResiGroupEntity resiGroupEntity = this.structureResiGroupEntity(applyCreateGroupFormDTO);
insert(resiGroupEntity);
//3.获取居民注册信息
UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO();
resiParam.setCustomerId(applyCreateGroupFormDTO.getCustomerId());
resiParam.setUserId(applyCreateGroupFormDTO.getUserId());
Result<UserResiInfoResultDTO> resiResult =
epmetUserFeignClient.getUserResiInfoDTO(resiParam);
String userName = "";
if(resiResult.success() && null != resiResult.getData()){
userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname())
+ (StringUtils.isBlank(resiResult.getData().getName()) ? "" :resiResult.getData().getName());
}
//4.获取居民注册信息
UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO();
resiParam.setCustomerId(applyCreateGroupFormDTO.getCustomerId());
resiParam.setUserId(applyCreateGroupFormDTO.getUserId());
Result<UserResiInfoResultDTO> resiResult =
epmetUserFeignClient.getUserResiInfoDTO(resiParam);
String userName = "";
if(resiResult.success() && null != resiResult.getData()){
userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname())
+ (StringUtils.isBlank(resiResult.getData().getName()) ? "" :resiResult.getData().getName());
}
userName = StringUtils.isBlank(userName) ? ModuleConstant.UNKNOWN : userName;
String msg = String.format(UserMessageConstant.CREATION_OF_GROUP_MESSAGE_TEMPLATE,roleName,userName,applyCreateGroupFormDTO.getGroupName());
//3.2、插入一条待审核的操作记录
String msg = String.format(UserMessageConstant.CREATION_OF_GROUP_MESSAGE_TEMPLATE,roleName,userName,applyCreateGroupFormDTO.getGroupName());
//4.2、插入一条待审核的操作记录
ResiGroupOperationDTO resiGroupOperation = new ResiGroupOperationDTO();
resiGroupOperation.setResiGroupId(resiGroupEntity.getId());
resiGroupOperation.setState(GroupStateConstant.GROUP_UNDER_AUDITTING);
@ -377,7 +411,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
resiGroupOperation.setMessageText(msg);
resiGroupOperation.setReadFlag(ModuleConstant.UNREAD);
resiGroupOperationService.save(resiGroupOperation);
//4、插入一群成员信息(群主)
//5、插入一群成员信息(群主)
ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO();
resiGroupMemberDTO.setCustomerUserId(applyCreateGroupFormDTO.getUserId());
resiGroupMemberDTO.setResiGroupId(resiGroupEntity.getId());
@ -385,7 +419,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
resiGroupMemberDTO.setStatus(MemberStateConstant.UNDER_AUDITTING);
resiGroupMemberDTO.setEnterGroupType(EnterGroupTypeConstant.CREATED);
resiGroupMemberService.save(resiGroupMemberDTO);
//5、插入一条入群记录(群主的)
//6、插入一条入群记录(群主的)
GroupMemeberOperationDTO groupMemeberOperationDTO = new GroupMemeberOperationDTO();
groupMemeberOperationDTO.setCustomerUserId(applyCreateGroupFormDTO.getUserId());
groupMemeberOperationDTO.setGroupId(resiGroupEntity.getId());
@ -393,7 +427,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
groupMemeberOperationDTO.setOperateUserId(applyCreateGroupFormDTO.getUserId());
groupMemeberOperationDTO.setEnterGroupType(EnterGroupTypeConstant.CREATED);
groupMemeberOperationService.save(groupMemeberOperationDTO);
//6、群初始统计记录
//7、群初始统计记录
/*UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyCreateGroupFormDTO.getApp(),
applyCreateGroupFormDTO.getUserId(),
applyCreateGroupFormDTO.getCustomerId(),
@ -574,18 +608,6 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName())));
}
//发送微信订阅消息
WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO();
wxSubscribeMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId());
wxSubscribeMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy());
wxSubscribeMessageFormDTO.setClientType(AppClientConstant.APP_RESI);
wxSubscribeMessageFormDTO.setGridId(resiGroupDTO.getGridId());
wxSubscribeMessageFormDTO.setBehaviorType(UserMessageConstant.WX_APPLY_CREATE_GROUP_BEHAVIOR);
wxSubscribeMessageFormDTO.setMessageContent(String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName()));
wxSubscribeMessageFormDTO.setMessageTime(new Date());
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//更新政府端:工作-基层治理-党员认证reddot
resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(resiGroupDTO.getGridId());
return new Result();
@ -632,20 +654,6 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason())));
}
//发送微信订阅消息
WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO();
wxSubscribeMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId());
wxSubscribeMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy());
wxSubscribeMessageFormDTO.setClientType(AppClientConstant.APP_RESI);
wxSubscribeMessageFormDTO.setGridId(resiGroupDTO.getGridId());
wxSubscribeMessageFormDTO.setBehaviorType(UserMessageConstant.WX_APPLY_CREATE_GROUP_BEHAVIOR);
wxSubscribeMessageFormDTO.setMessageContent(String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason()));
wxSubscribeMessageFormDTO.setMessageTime(new Date());
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//更新政府端:工作-基层治理-党员认证reddot
resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(resiGroupDTO.getGridId());
return new Result();
@ -856,7 +864,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
for(String gridId:gridIdList){
GroupProcessingCountResultDTO resultDTO=new GroupProcessingCountResultDTO();
resultDTO.setGridId(gridId);
Integer auditingCount=resiGroupRedis.getWorkGrassrootsGroupRedDotValue(gridId);
Integer auditingCreateGroupCount=resiGroupRedis.getWorkGrassrootsGroupRedDotValue(gridId);
Integer auditingGroupEditRecordCount=groupEditSubmitRecordDao.selectCountAuditingRec(gridId);
Integer auditingCount=auditingCreateGroupCount+auditingGroupEditRecordCount;
if (null == auditingCount) {
resultDTO.setCount(0);
} else {
@ -1016,4 +1026,306 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,msg));
}
@Override
public GroupDetailResultDTO getGroupDetail(String groupId) {
GroupDetailResultDTO groupDetail = new GroupDetailResultDTO();
// 1.拼装组基本信息
GroupEditSubmitRecordEntity ler = groupEditSubmitRecordDao.getLatestEditSubmitRecord(groupId);
if (ler != null) {
groupDetail.setAuditStatus(ler.getAuditStatus());
groupDetail.setRemark(ler.getRemark());
}
if (ler != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(ler.getAuditStatus())) {
// 审核中,显示待审核内容
groupDetail.setGroupHeadPhoto(ler.getGroupHeadPhoto());
groupDetail.setGroupName(ler.getGroupName());
groupDetail.setGroupIntroduction(ler.getGroupIntroduction());
} else {
// 不在审核中,直接显示组信息
ResiGroupEntity resiGroupEntity = resiGroupDao.selectById(groupId);
if (resiGroupEntity == null) {
return null;
}
groupDetail.setGroupHeadPhoto(resiGroupEntity.getGroupHeadPhoto());
groupDetail.setGroupName(resiGroupEntity.getGroupName());
groupDetail.setGroupIntroduction(resiGroupEntity.getGroupIntroduction());
}
// 2.编辑次数及其限制
groupDetail.setEditNumLimit(GroupLimitConstant.EDIT_NUM_LIMIT_MONTH);
Date now = new Date();
int usedEditNum = groupEditSubmitRecordDao.countEditNum(groupId, DateUtils.getMonthStart(now), DateUtils.getMonthEnd(now));
groupDetail.setAvaliableEditNum(GroupLimitConstant.EDIT_NUM_LIMIT_MONTH - usedEditNum);
// 审核状态
// 是否可编辑
boolean editable = true;
if (GroupLimitConstant.EDIT_NUM_LIMIT_MONTH <= usedEditNum) {
// 达到最大编辑次数了
editable = false;
}
if (ler != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(ler.getAuditStatus())) {
// 提交了,还没审核完
editable = false;
}
groupDetail.setEditable(editable);
return groupDetail;
}
@Override
public void submitGroupEdit(String groupId, String groupName, String groupHeadPhoto, String groupIntroduction, String editUserId) {
// 1.判断小组是否存在,判断是否已经在"待审核"状态
ResiGroupEntity group = resiGroupDao.selectById(groupId);
if (group == null) {
throw new RenException(EpmetErrorCode.GROUP_NOT_EXISTS.getCode(), EpmetErrorCode.GROUP_NOT_EXISTS.getMsg());
}
// 判断是否是组长
ResiGroupMemberDTO groupLeader = resiGroupMemberDao.selectLeaderMember(groupId);
if (groupLeader == null || !groupLeader.getCustomerUserId().equals(editUserId)) {
String msg = "只有该组的组长才可以编辑组信息";
throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), msg, msg, RenException.MessageMode.CODE_INTERNAL_EXTERNAL);
}
// 2.判断是否可以提交编辑
GroupEditSubmitRecordEntity lre = groupEditSubmitRecordDao.getLatestEditSubmitRecord(groupId);
if (lre != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(lre.getAuditStatus())) {
// 在待审核状态,不允许再次提交编辑
throw new RenException(EpmetErrorCode.GROUP_IN_AUDITING.getCode(), EpmetErrorCode.GROUP_IN_AUDITING.getMsg());
}
if (resiGroupDao.countExistsGroupNameBeforeEdit(groupId, group.getGridId(), groupName) > 0) {
// 已存在组名,拒绝提交
throw new RenException(EpmetErrorCode.GROUP_ALREADY_EXISTED.getCode(), EpmetErrorCode.GROUP_ALREADY_EXISTED.getMsg());
}
Date now = new Date();
int usedEditNum = groupEditSubmitRecordDao.countEditNum(groupId, DateUtils.getMonthStart(now), DateUtils.getMonthEnd(now));
if (GroupLimitConstant.EDIT_NUM_LIMIT_MONTH <= usedEditNum) {
// 达到最大编辑次数了
throw new RenException(EpmetErrorCode.GROUP_EDIT_NUM_LIMITED.getCode(), EpmetErrorCode.GROUP_EDIT_NUM_LIMITED.getMsg());
}
// 3.内容检查
scanGroupEditContent(groupName, groupIntroduction, groupHeadPhoto);
String app = loginUserUtil.getLoginUserApp();
String userId = loginUserUtil.getLoginUserId();
String messageText = generateGroupEditMessageText(app, userId, group.getCustomerId(), group.getGridId(), groupName);
// 4.创建编辑提交记录
GroupEditSubmitRecordEntity editRecord = new GroupEditSubmitRecordEntity();
editRecord.setAuditStatus(GroupAuditStatusConstant.UNDER_AUDITING);
editRecord.setCustomerId(group.getCustomerId());
editRecord.setGridId(group.getGridId());
editRecord.setGroupHeadPhoto(groupHeadPhoto);
editRecord.setGroupIntroduction(groupIntroduction);
editRecord.setGroupId(groupId);
editRecord.setGroupName(groupName);
editRecord.setReadFlag(ReadFlagConstant.UN_READ);
editRecord.setMessageText(messageText);
if (groupEditSubmitRecordDao.insert(editRecord) == 0) {
throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), EpmetErrorCode.GROUP_EDIT_ERROR.getMsg());
}
resiGroupRedis.addWorkGrassrootsGroupRedDotValue(group.getGridId());
}
/**
* 生成组信息编辑简介文本:xxx申请编辑组信息请审核
* @param app
* @param userId
* @param customerId
* @param gridId
* @param groupName
* @return
*/
private String generateGroupEditMessageText(String app, String userId, String customerId, String gridId, String groupName) {
List<UserRoleResultDTO> resiRoles = getResiRoles(app, customerId, userId, gridId);
boolean isPartymember = false;
boolean isWarmhearted = false;
for (UserRoleResultDTO role : resiRoles) {
if (EpmetRoleKeyConstant.WARMHEARTED.equals(role.getRoleKey())) {
isWarmhearted = true;
}
if (EpmetRoleKeyConstant.PARTYMEMBER.equals(role.getRoleKey())) {
isPartymember = true;
}
}
if (!isWarmhearted && isPartymember) {
throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode(), "只有党员和热心居民才能创建和编辑小组");
}
String roleName = "";
if (isPartymember) {
roleName = ModuleConstant.PARTYMEMBER;
} else if (isWarmhearted) {
roleName = ModuleConstant.WAREMHEARTED_RESI;
}
//3.获取居民注册信息
UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO();
resiParam.setCustomerId(customerId);
resiParam.setUserId(userId);
Result<UserResiInfoResultDTO> resiResult =
epmetUserFeignClient.getUserResiInfoDTO(resiParam);
String userName = "";
if (resiResult.success() && null != resiResult.getData()) {
userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname())
+ (StringUtils.isBlank(resiResult.getData().getName()) ? "" : resiResult.getData().getName());
}
userName = StringUtils.isBlank(userName) ? ModuleConstant.UNKNOWN : userName;
return String.format(UserMessageConstant.EDIT_OF_GROUP_MESSAGE_TEMPLATE, roleName, userName, groupName);
}
/**
* 查询居民的角色列表
* @param app
* @param customerId
* @param userId
* @param gridId
* @return
*/
private List<UserRoleResultDTO> getResiRoles(String app, String customerId, String userId, String gridId) {
UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO();
userRoleFormDTO.setApp(app);
userRoleFormDTO.setCustomerId(customerId);
userRoleFormDTO.setUserId(userId);
userRoleFormDTO.setGridId(gridId);
Result<List<UserRoleResultDTO>> rolesResult = epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO);
if (! rolesResult.success()) {
logger.error("修改组信息:查询居民角色失败,详情:{}", rolesResult.getInternalMsg());
throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), "查询居民角色失败");
} else {
List<UserRoleResultDTO> roles = rolesResult.getData();
if (CollectionUtils.isEmpty(roles)) {
roles = new ArrayList<>();
}
return roles;
}
}
/**
* 内容检查
* @param groupName
* @param groupIntroduction
* @param groupHeadPhoto
*/
private void scanGroupEditContent(String groupName, String groupIntroduction, String groupHeadPhoto) {
// 文本内容审核
TextScanParamDTO textScanParamDTO = new TextScanParamDTO();
TextTaskDTO taskDTO = new TextTaskDTO();
String content = groupName.concat("-").concat(groupIntroduction);
taskDTO.setContent(content);
taskDTO.setDataId(UUID.randomUUID().toString().replace("-", ""));
textScanParamDTO.getTasks().add(taskDTO);
Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO);
if (!textSyncScanResult.success()) {
logger.error("调用内容审核服务审核文本发生错误:{}", textSyncScanResult.getInternalMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode(), EpmetErrorCode.TEXT_SCAN_FAILED.getMsg());
}
}
// 图片内容审核
ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO();
ImgTaskDTO task = new ImgTaskDTO();
task.setDataId(UUID.randomUUID().toString().replace("-", ""));
task.setUrl(groupHeadPhoto);
imgScanParamDTO.getTasks().add(task);
Result<SyncScanResult> imgScanResult = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), imgScanParamDTO);
if (!imgScanResult.success()){
logger.error("调用内容审核服务审核图片发生错误:{}", textSyncScanResult.getInternalMsg());
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode());
} else {
if (!textSyncScanResult.getData().isAllPass()) {
throw new RenException(EpmetErrorCode.IMG_SCAN_FAILED.getCode(), EpmetErrorCode.IMG_SCAN_FAILED.getMsg());
}
}
}
/**
* @Description 工作端 查询组变更待审核列表
* @param param
* @return
* @author wangc
* @date 2020.11.03 10:19
*/
@Override
public List<ApplyingGroupResultDTO> getEditAuditingList(CommonGridAndPageFormDTO param) {
return Optional.ofNullable(PageHelper.startPage(null == param.getPageNo() ? NumConstant.ONE : param.getPageNo() , null == param.getPageSize() ? NumConstant.TWELVE : param.getPageSize())
.doSelectPage(() -> {
groupEditSubmitRecordDao.selectGroupEditApplyList(param.getGridId());}).getResult()).orElse(new LinkedList<>())
.stream().map(o -> { return (ApplyingGroupResultDTO)o; }).collect(Collectors.toList());
}
/**
* @Description 查询小组修改信息的详情内容 不加事务
* @param param
* @return com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO
* @author wangc
* @date 2020.11.03 14:10
*/
@Override
public GroupEditionDetailResultDTO getEditAuditingDetail(GovGroupSummarizeFromDTO param) {
GroupEditSubmitRecordEntity edit = groupEditSubmitRecordDao.selectEditDetail(param.getGroupId(),null);
if(null == edit) {
logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.getEditAuditingDetail,未找到小组变更信息记录,传参:{}",JSON.toJSONString(param));
return null;}
//取消未读状态
GroupEditSubmitRecordEntity _update = new GroupEditSubmitRecordEntity();
_update.setId(edit.getId());_update.setReadFlag(ModuleConstant.READ);
groupEditSubmitRecordDao.updateById(_update);
GroupEditionDetailResultDTO result = ConvertUtils.sourceToTarget(edit, GroupEditionDetailResultDTO.class);
result.setGroupLeaderName(resiGroupRedis.getFullName(edit.getCreatedBy()));
return result;
}
/**
* @Description 工作人员提交审核
* @param param
* @return void
* @author wangc
* @date 2020.11.03 16:02
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void auditEdit(GroupEditionAuditFormDTO param) {
if(StringUtils.equals(param.getAuditResult(),ModuleConstant.AUDITING_OPERATION_REJECT) && StringUtils.isBlank(param.getRemark())){
throw new RenException("拒绝理由不能为空");
}
GroupEditSubmitRecordEntity edit = groupEditSubmitRecordDao.selectEditDetail(param.getGroupId(),null);
if(null == edit){
logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.auditEdit,找不到待审核的组更新记录,传参:{}",JSON.toJSONString(param));
throw new RenException("找不到待审核的组更新记录");
}
int affectedRows = groupEditSubmitRecordDao.updateAuditResult(param.getGroupId(),param.getStaffId(),param.getAuditResult(),param.getRemark());
if(affectedRows <= NumConstant.ZERO){
logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.auditEdit,更新组编辑记录时受影响行数小于1,传参:{}",JSON.toJSONString(param));
throw new RenException("更新组编辑记录时受影响行数小于1");
}
if(!StringUtils.equals(param.getAuditResult(),ModuleConstant.AUDITING_OPERATION_REJECT)){
//同意
ResiGroupEntity _update = ConvertUtils.sourceToTarget(edit,ResiGroupEntity.class);
_update.setId(param.getGroupId());
baseDao.updateById(_update);
}
resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(edit.getGridId());
resiGroupRedis.delGroup(param.getGroupId());
}
}

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/utils/ModuleConstant.java

@ -330,4 +330,15 @@ public interface ModuleConstant extends Constant {
String CLOSED_TOPIC_REASON_PREFIX = "话题已关闭:";
String CREATE_ISSUE_ERROR = "创建议题失败";
String CLOSED_TOPIC_REASON_PREFIX="话题已关闭:";
/**
* 审核操作 同意
*/
String AUDITING_OPERATION_APPROVAL = "approved";
/**
* 审核操作 拒绝
*/
String AUDITING_OPERATION_REJECT = "rejected";
}

24
epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.4__createGroupSubmitRecord.sql

@ -0,0 +1,24 @@
CREATE TABLE `group_edit_submit_record`
(
`ID` varchar(64) NOT NULL,
`GROUP_ID` varchar(64) NOT NULL COMMENT '小组ID',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID',
`GRID_ID` varchar(64) DEFAULT NULL COMMENT '网格ID',
`GROUP_HEAD_PHOTO` varchar(255) NOT NULL COMMENT '头像',
`GROUP_NAME` varchar(10) NOT NULL COMMENT '小组名称',
`GROUP_INTRODUCTION` varchar(500) NOT NULL COMMENT '小组介绍',
`AUDIT_STATUS` varchar(30) NOT NULL COMMENT '审核状态。under_auditting:审核中,approved:通过,rejected:驳回',
`STAFF_ID` varchar(64) DEFAULT NULL COMMENT '审核人ID',
`REMARK` varchar(255) DEFAULT NULL COMMENT '回复',
`AUDIT_TIME` datetime DEFAULT NULL COMMENT '审核时间',
`DEL_FLAG` char(1) NOT NULL DEFAULT '0' COMMENT '删除标识',
`REVISION` int(8) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '创建人 提交人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '修改人ID',
`UPDATED_TIME` datetime NOT NULL COMMENT '修改时间',
`READ_FLAG` varchar(8) NOT NULL COMMENT '已读read 未读unread',
`MESSAGE_TEXT` varchar(255) NOT NULL COMMENT '审核人员查看待审核列表时的文案,如:党员李华申请变更小组【原小组名】,请审核。',
PRIMARY KEY (`ID`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='组编辑提交记录表'

2
epmet-module/resi-group/resi-group-server/src/main/resources/logback-spring.xml

@ -139,7 +139,7 @@
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<springProfile name="dev,test,local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.modules.comment.dao" level="DEBUG"/>

150
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/GroupEditSubmitRecordDao.xml

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.modules.group.dao.GroupEditSubmitRecordDao">
<sql id="table_columns">
id,
group_id,
customer_id,
grid_id,
group_head_photo,
group_name,
group_introduction,
audit_status,
staff_id,
remark,
audit_time,
read_flag,
message_text,
del_flag,
revision,
created_by,
created_time,
updated_by,
updated_time
</sql>
<resultMap type="com.epmet.modules.group.entity.GroupEditSubmitRecordEntity" id="groupEditSubmitRecordMap">
<result property="id" column="ID"/>
<result property="groupId" column="GROUP_ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="groupHeadPhoto" column="GROUP_HEAD_PHOTO"/>
<result property="groupName" column="GROUP_NAME"/>
<result property="groupIntroduction" column="GROUP_INTRODUCTION"/>
<result property="auditStatus" column="AUDIT_STATUS"/>
<result property="staffId" column="STAFF_ID"/>
<result property="remark" column="REMARK"/>
<result property="auditTime" column="AUDIT_TIME"/>
<result property="messageText" column="MESSAGE_TEXT" />
<result property="readFlag" column="READ_FLAG" />
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="countEditNum" resultType="java.lang.Integer">
select count(1)
from group_edit_submit_record
where GROUP_ID = #{groupId}
and CREATED_TIME between #{monthStart} and #{monthEnd}
and DEL_FLAG=0
</select>
<select id="getLatestEditSubmitRecord" resultType="com.epmet.modules.group.entity.GroupEditSubmitRecordEntity">
select
<include refid="table_columns"/>
from group_edit_submit_record
where
DEL_FLAG=0
and group_id = #{groupId}
order by CREATED_TIME desc
limit 1
</select>
<!-- 作端查询群组修改信息申请列表 -->
<select id="selectGroupEditApplyList" resultType="com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO">
SELECT
edit.GROUP_ID,
groupp.GROUP_NAME,
groupp.GROUP_HEAD_PHOTO,
edit.READ_FLAG,
edit.MESSAGE_TEXT,
DATE_FORMAT( edit.CREATED_TIME, '%Y-%m-%d %H:%i' ) AS createdTime
FROM
group_edit_submit_record edit
LEFT JOIN resi_group groupp ON edit.GROUP_ID = groupp.ID
WHERE
edit.DEL_FLAG = '0'
AND edit.GRID_ID = #{gridId}
AND edit.AUDIT_STATUS = 'under_auditing'
AND edit.STAFF_ID IS NULL
ORDER BY edit.CREATED_TIME DESC
</select>
<!-- 查询小组修改信息详情 -->
<select id="selectEditDetail" resultType="com.epmet.modules.group.entity.GroupEditSubmitRecordEntity">
SELECT
ID,
GROUP_ID,
GROUP_NAME,
GROUP_HEAD_PHOTO,
GROUP_INTRODUCTION,
CREATED_BY,
GRID_ID
FROM
group_edit_submit_record
WHERE
DEL_FLAG = '0'
AND GROUP_ID = #{groupId}
<choose>
<when test='null == auditResult or "" == auditResult'>
AND AUDIT_STATUS = 'under_auditing'
</when>
<otherwise>
AND AUDIT_STATUS = #{auditResult}
</otherwise>
</choose>
ORDER BY CREATED_TIME DESC
LIMIT 1
</select>
<update id="updateAuditResult">
UPDATE
group_edit_submit_record
SET
AUDIT_STATUS = #{auditStatus},
STAFF_ID = #{staffId},
<if test='null != remark and "" != remark'>
REMARK = #{remark},
</if>
AUDIT_TIME = NOW(),UPDATED_TIME = NOW(),UPDATED_BY = #{staffId}
WHERE
DEL_FLAG = '0'
AND
GROUP_ID = #{groupId}
AND
AUDIT_STATUS = 'under_auditIng'
AND
STAFF_ID IS NULL
LIMIT 1
</update>
<!-- 根据网格id查询 待审核的变更小组信息申请 总数 -->
<select id="selectCountAuditingRec" resultType="java.lang.Integer">
SELECT
count( 1 ) AS total
FROM
group_edit_submit_record m
WHERE
m.DEL_FLAG = '0'
AND m.AUDIT_STATUS = 'under_auditting'
AND m.GRID_ID = #{gridId}
</select>
</mapper>

21
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

@ -397,4 +397,25 @@
GRID_ID = #{gridId}
</foreach>
</select>
<select id="countExistsGroupNameBeforeEdit" resultType="java.lang.Integer">
select sum(t.c) num
from (
select count(1) c
from resi_group g
where g.GROUP_NAME = #{groupName}
and g.DEL_FLAG = 0
and g.GRID_ID = #{gridId}
and g.ID != #{groupId}
and g.STATE in ('approved', 'under_auditting')
union all
select count(1) c
from group_edit_submit_record esr
where esr.GROUP_ID != #{groupId}
and esr.GRID_ID = #{gridId}
and esr.GROUP_NAME = #{groupName}
and esr.AUDIT_STATUS = 'under_auditting'
and esr.DEL_FLAG = 0
) t
</select>
</mapper>

2
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBaseInfoResultDTO.java

@ -1,6 +1,6 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;

Loading…
Cancel
Save