springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/PartyMemberController.java
@@ -10,7 +10,6 @@ import com.panzhihua.sangeshenbian.warpper.PartyMemberDTO; import com.panzhihua.sangeshenbian.warpper.PartyMemberQuery; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; @@ -43,7 +42,7 @@ @RestController @RequestMapping("/party-member") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class PartyMemberController extends BaseController { public class MgtPartyMemberController extends BaseController { private final IPartyMemberService partyMemberService; @ApiOperation("查询党员列表") @PostMapping("/list") springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/HomeController.java
@@ -1,39 +1,30 @@ package com.panzhihua.sangeshenbian.controller; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.redis.RedisUtils; import com.panzhihua.sangeshenbian.model.entity.Banner; import com.panzhihua.sangeshenbian.model.entity.Department; import com.panzhihua.sangeshenbian.model.entity.PartyMember; import com.panzhihua.sangeshenbian.model.entity.SystemUser; import com.panzhihua.sangeshenbian.model.query.BasePage; import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO; import com.panzhihua.sangeshenbian.model.vo.MessageNotificationVO; import com.panzhihua.sangeshenbian.model.vo.PartyCardInfoVO; import com.panzhihua.sangeshenbian.service.IBannerService; import com.panzhihua.sangeshenbian.service.IComplaintService; import com.panzhihua.sangeshenbian.service.IDepartmentService; import com.panzhihua.sangeshenbian.service.IMessageNotificationService; import com.panzhihua.sangeshenbian.service.ISystemUserService; import com.panzhihua.sangeshenbian.service.*; import com.panzhihua.sangeshenbian.utils.BaiduMapUtil; import com.panzhihua.sangeshenbian.warpper.IdentityInformationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.GetMapping; 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 org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.*; /** * @author mitao @@ -48,8 +39,8 @@ private final IMessageNotificationService messageNotificationService; private final IComplaintService complaintService; private final ISystemUserService systemUserService; private final UserService userService; private final IDepartmentService departmentService; private final IPartyMemberService partyMemberService; private final RedisUtils redisUtils; @ApiOperation("获取banner列表") @GetMapping("/banner-list") @@ -61,31 +52,18 @@ @ApiOperation("获取党员证信息") public R<PartyCardInfoVO> getPartyCardInfo() { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); // 获取党员信息 PartyMember partyMember = partyMemberService.getOne(new LambdaQueryWrapper<PartyMember>() .eq(PartyMember::getPhone, loginUserInfo.getPhone()) .eq(PartyMember::getDelFlag, 0)); PartyCardInfoVO partyCardInfoVO = new PartyCardInfoVO(); partyCardInfoVO.setName(loginUserInfo.getName()); partyCardInfoVO.setIdCard(loginUserInfo.getIdCard()); Optional<SystemUser> systemUserOpt = systemUserService.getSystemUserByPhone(loginUserInfo.getPhone()); systemUserOpt.ifPresent(systemUser -> { // 使用Optional链式调用简化部门ID获取逻辑 Integer lastDepartmentId = Optional.ofNullable(systemUser.getFourDepartmentId()) .orElseGet(() -> Optional.ofNullable(systemUser.getThreeDepartmentId()) .orElseGet(systemUser::getTwoDepartmentId)); // 缓存部门查询结果避免重复查询 Map<Integer, Department> departmentCache = new HashMap<>(); Department first = departmentCache.computeIfAbsent(systemUser.getOneDepartmentId(), departmentService::getById); Department last = null; if (Objects.nonNull(lastDepartmentId)) { last = departmentCache.computeIfAbsent(lastDepartmentId, departmentService::getById); } // 使用Objects.toString简化字符串拼接 partyCardInfoVO.setPartyOrganization( Objects.isNull(last) ? Objects.toString(first.getName(), "") : Objects.toString(first.getName(), "") + "-" + Objects.toString(last.getName(), "")); }); partyCardInfoVO.setName(partyMember.getName()); partyCardInfoVO.setIdCard(partyMember.getIdNumber()); partyCardInfoVO.setDistricts(partyMember.getDistricts()); partyCardInfoVO.setStreet(partyMember.getStreet()); partyCardInfoVO.setCommunity(partyMember.getCommunity()); partyCardInfoVO.setPartyOrganization(partyMember.getPartyOrganization()); return R.ok(partyCardInfoVO); } @@ -129,4 +107,46 @@ public R<JSONArray> searchLocation(String query, String location) { return R.ok(BaiduMapUtil.searchLocation(query, location)); } /** * 获取身份信息 */ @GetMapping("/identity-info") @ApiOperation("获取身份信息") public R<IdentityInformationVO> getIdentityInfo() { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); // 获取党员信息 PartyMember partyMember = partyMemberService.getOne(new LambdaQueryWrapper<PartyMember>() .eq(PartyMember::getPhone, loginUserInfo.getPhone()) .eq(PartyMember::getDelFlag, 0)); // 获取管理员信息 SystemUser systemUser = systemUserService.getSystemUserAdminByPhone(getLoginUserInfo().getPhone()).orElse(null); // 获取身份 Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfo.getPhone()); List<Integer> permissions = new ArrayList<>(); IdentityInformationVO identityInformationVO = new IdentityInformationVO(); identityInformationVO.setIdentity(identity); identityInformationVO.setIsPartymember(partyMember != null); identityInformationVO.setAuditStatus(partyMember == null ? null : partyMember.getAuditStatus()); if (partyMember !=null){ permissions.add(1); } if (systemUser != null){ permissions.add(2); } identityInformationVO.setPermissions(permissions); return R.ok(identityInformationVO); } /** * 切换身份 */ @GetMapping("/change-identity") @ApiOperation("切换身份") public R<?> changeIdentity(Integer identity) { LoginUserInfoVO loginUserInfo = getLoginUserInfo(); redisUtils.set("identity:" + loginUserInfo.getPhone(), identity); return R.ok(); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/PartyMemberController.java
New file @@ -0,0 +1,94 @@ package com.panzhihua.sangeshenbian.controller; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.vos.R; import com.panzhihua.sangeshenbian.model.entity.PartyMember; import com.panzhihua.sangeshenbian.service.IPartyMemberService; import com.panzhihua.sangeshenbian.warpper.PartyMemberApplicationRequest; import com.panzhihua.sangeshenbian.warpper.PartyMemberAuditRequest; import com.panzhihua.sangeshenbian.warpper.PendingPartyMemberApplicationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.Objects; @Api(tags = {"小程序-党员管理"}) @Validated @RestController("/applet/party-member") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class PartyMemberController extends BaseController { private final IPartyMemberService partyMemberService; /** * 党员申请 */ @ApiOperation(value = "党员申请") @PostMapping("/apply") public R<?> apply(@Valid @RequestBody PartyMemberApplicationRequest dto) { partyMemberService.applyForMembership(dto, getLoginUserInfo()); return R.ok(); } /** * 编辑党员信息 */ @ApiOperation(value = "编辑党员信息") @PostMapping("/edit") public R<?> edit(@Valid @RequestBody PartyMemberApplicationRequest dto) { if (Objects.isNull(dto.getId())){ return R.fail("id不能为空"); } partyMemberService.applyForMembership(dto, getLoginUserInfo()); return R.ok(); } /** * 党员信息详情 */ @ApiOperation(value = "党员信息详情") @PostMapping("/detail") public R<?> detail(@RequestParam Long id) { return R.ok(partyMemberService.getById(id)); } /** * 党员待审核列表 */ @ApiOperation(value = "党员待审核列表") @PostMapping("/pre-audit-list") public R<?> preAuditList(Page<PendingPartyMemberApplicationVO> page) { return R.ok(partyMemberService.preAuditList(page,getLoginUserInfo())); } /** * 党员申请审核 */ @ApiOperation(value = "党员申请审核") @PostMapping("/audit") public R<?> audit(@Valid @RequestBody PartyMemberAuditRequest request) { Integer result = request.getResult(); if (result == null){ return R.fail("审核结果不能为空"); } if (result == 2 && Objects.isNull(request.getReason())){ return R.fail("审核不通过原因不能为空"); } partyMemberService.update(new LambdaUpdateWrapper<PartyMember>() .eq(PartyMember::getId,request.getId()) .set(PartyMember::getAuditStatus,result) .set(PartyMember::getRefuseReason,result == 2 ? request.getReason() : null)); return R.ok(); } } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/PartyCardInfoVO.java
@@ -19,6 +19,15 @@ @ApiModelProperty(value = "身份证号码") private String idCard; @ApiModelProperty(value = "服务社区-所属区县") private String districts; @ApiModelProperty(value = "服务社区-街道") private String street; @ApiModelProperty(value = "服务社区") private String community; @ApiModelProperty(value = "所在党组织") private String partyOrganization; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IPartyMemberService.java
@@ -1,13 +1,17 @@ package com.panzhihua.sangeshenbian.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo; import com.panzhihua.sangeshenbian.model.entity.PartyMember; import com.baomidou.mybatisplus.extension.service.IService; import com.panzhihua.sangeshenbian.warpper.PartyMemberApplicationRequest; import com.panzhihua.sangeshenbian.warpper.PartyMemberDTO; import com.panzhihua.sangeshenbian.warpper.PartyMemberQuery; import com.panzhihua.sangeshenbian.warpper.PendingPartyMemberApplicationVO; import java.io.IOException; import java.util.List; /** * <p> @@ -61,10 +65,17 @@ void importExcel(SystemUserVo loginUserInfo); /** * 党员申请 */ void applyForMembership(PartyMemberApplicationRequest dto, LoginUserInfoVO loginUserInfo); /** * 审核 * * @param dto * @param loginUserInfo */ void audit(PartyMemberDTO dto, SystemUserVo loginUserInfo); Page<PendingPartyMemberApplicationVO> preAuditList(Page<PendingPartyMemberApplicationVO> page, LoginUserInfoVO loginUserInfo); } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/IdentityInformationVO.java
New file @@ -0,0 +1,35 @@ package com.panzhihua.sangeshenbian.warpper; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel("身份信息对象") public class IdentityInformationVO { /** * 当前身份 */ @ApiModelProperty(value = "当前身份") private Integer identity; /** * 是否认证党员信息 */ @ApiModelProperty(value = "是否认证党员信息") private Boolean isPartymember; /** * 审核状态:0:待审核 1:审核通过 2:审核不通过 */ @ApiModelProperty(value = "审核状态:0:待审核 1:审核通过 2:审核不通过") private Integer auditStatus; /** * 权限列表 */ @ApiModelProperty(value = "权限列表:1-党员 2-管理员") private List<Integer> permissions; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PartyMemberApplicationRequest.java
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PartyMemberAuditRequest.java
New file @@ -0,0 +1,16 @@ package com.panzhihua.sangeshenbian.warpper; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel("党员审核传输对象") public class PartyMemberAuditRequest { @ApiModelProperty(value = "党员信息id") private Long id; @ApiModelProperty(value = "审核结果:1:审核通过 2:审核不通过") private Integer result; @ApiModelProperty(value = "审核不通过原因") private String reason; } springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PendingPartyMemberApplicationVO.java
New file @@ -0,0 +1,51 @@ package com.panzhihua.sangeshenbian.warpper; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @Data @ApiModel("待审核党员申请传输对象") public class PendingPartyMemberApplicationVO { @ApiModelProperty(value = "主键id", notes = "编辑时必填") private Long id; @ApiModelProperty(value = "审核状态 0:待审核 1:审核通过 2:审核不通过") private Integer auditStatus; @ApiModelProperty(value = "姓名") private String name; @ApiModelProperty(value = "性别 1:男 0:女") private Integer gender; @ApiModelProperty(value = "身份证号") private String idNumber; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "所属区县") private String districts; @ApiModelProperty(value = "街道") private String street; @ApiModelProperty(value = "社区") private String community; @ApiModelProperty(value = "服务对象") private String serviceTarget; @ApiModelProperty(value = "所在党组织") private String partyOrganization; @ApiModelProperty(value = "头像") private String avatar; @ApiModelProperty(value = "创建时间") private Date createTime; }