1.
luofl
2025-03-15 73c12f99749dac8f23b69305b3691aa48d813f9d
1.
4个文件已修改
5个文件已添加
323 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/PartyMemberController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/HomeController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/PartyMemberController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/PartyCardInfoVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IPartyMemberService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/IdentityInformationVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PartyMemberApplicationRequest.java 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PartyMemberAuditRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/PendingPartyMemberApplicationVO.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}