liujie
3 天以前 d130547c1f3b64cf8544261cdf1d9146ff319756
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java
@@ -1,56 +1,36 @@
package com.panzhihua.sangeshenbian.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.idev.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.idev.excel.FastExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.redis.RedisUtils;
import com.panzhihua.sangeshenbian.dao.PartyMemberMapper;
import com.panzhihua.sangeshenbian.enums.AuditStatusEnum;
import com.panzhihua.sangeshenbian.enums.FreezeStatusEnum;
import com.panzhihua.sangeshenbian.enums.ReportTypeEnum;
import com.panzhihua.sangeshenbian.enums.AuditStatusEnum;
import com.panzhihua.sangeshenbian.model.entity.BcRegion;
import com.panzhihua.sangeshenbian.model.entity.ComAct;
import com.panzhihua.sangeshenbian.model.entity.ComStreet;
import com.panzhihua.sangeshenbian.model.entity.PartyMember;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.model.entity.*;
import com.panzhihua.sangeshenbian.model.excel.PartyMemberExcel;
import com.panzhihua.sangeshenbian.warpper.PartyMemberImportFailedVO;
import com.panzhihua.sangeshenbian.model.excel.PartyMemberTemplate;
import com.panzhihua.sangeshenbian.service.IBcRegionService;
import com.panzhihua.sangeshenbian.service.IComActService;
import com.panzhihua.sangeshenbian.service.IComStreetService;
import com.panzhihua.sangeshenbian.service.IPartyMemberService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
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 com.panzhihua.sangeshenbian.service.*;
import com.panzhihua.sangeshenbian.warpper.*;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
/**
 * <p>
@@ -68,6 +48,8 @@
    private final IBcRegionService bcRegionService;
    private final IComStreetService comStreetService;
    private final IComActService comActService;
    private final RedisUtils redisUtils;
    private final ISystemUserLevelService systemUserLevelService;
    /**
     * 党员分页查询列表
     *
@@ -77,7 +59,33 @@
     */
    @Override
    public Page<PartyMember> pageList(PartyMemberQuery query, SystemUserVo loginUserInfo) {
        SystemUser user = systemUserService.getById(loginUserInfo.getId());
        if (Objects.isNull(user)){
            throw new ServiceException("用户不存在");
        }
        loginUserInfo.setAccountLevel(user.getAccountLevel());
        loginUserInfo.setDistrictsCode(user.getDistrictsCode());
        loginUserInfo.setStreetId(user.getStreetId());
        loginUserInfo.setCommunityId(user.getCommunityId());
        return  baseMapper.pageList(new Page<>(query.getPageNum(), query.getPageSize()),query,loginUserInfo);
        // 判断当前登录用户是否有权限查看这个社区的党员
//        if(loginUserInfo.getAccountLevel()==1){
//            // 是市级权限 全查
//            return  baseMapper.pageList(new Page<>(query.getPageNum(), query.getPageSize()),query,loginUserInfo);
//        }
//        if(loginUserInfo.getAccountLevel()==2){
//            // 是区县权限
//            // 判断当前登录用户是否有权限查看这个社区的党员
//            LambdaQueryWrapper<PartyMember> queryWrapper = new LambdaQueryWrapper<>();
//            queryWrapper.eq(PartyMember::getDistrictsCode,loginUserInfo.getDistrictsCode());
//            if(StrUtil.isNotBlank(query.getName())){
//                queryWrapper.like(PartyMember::getName,query.getName());
//            }
//            if(StrUtil.isNotBlank(query.getIdNumber())){}
//        }
//        return null;
    }
    /**
     * 添加党员
@@ -109,6 +117,7 @@
            partyMember.setSource(1);
            save(partyMember);
        } else {
            partyMember.setIsConfirm(0);
            partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString()));
            updateById(partyMember);
        }
@@ -119,11 +128,12 @@
     * @param loginUserInfo
     */
    @Override
    public void freeze(Long id, SystemUserVo loginUserInfo) {
    public PartyMember freeze(Long id, SystemUserVo loginUserInfo) {
        PartyMember partyMember = getById(id);
        partyMember.setFreezeStatus(partyMember.getFreezeStatus() == 1 ? 0 : 1);
        partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString()));
        updateById(partyMember);
        return partyMember;
    }
    @Override
@@ -144,7 +154,15 @@
     */
    @Override
    public void export(PartyMemberQuery query, SystemUserVo loginUserInfo) throws IOException {
     List<PartyMember> list = baseMapper.queryList(query,loginUserInfo);
        SystemUser user = systemUserService.getById(loginUserInfo.getId());
        if (Objects.isNull(user)){
            throw new ServiceException("用户不存在");
        }
        loginUserInfo.setAccountLevel(user.getAccountLevel());
        loginUserInfo.setDistrictsCode(user.getDistrictsCode());
        loginUserInfo.setStreetId(user.getStreetId());
        loginUserInfo.setCommunityId(user.getCommunityId());
        List<PartyMember> list = baseMapper.queryList(query,loginUserInfo);
        List<PartyMemberExcel> partyMemberExcels = BeanUtil.copyToList(list, PartyMemberExcel.class);
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
@@ -247,11 +265,12 @@
                            // 验证社区是否存在且属于该街道
                            // 实际代码应该是调用相应的Service查询社区信息
                            ComAct comAct = comActService.getCommunityByNameAndStreet(communityName, comStreet.getStreetId());
                            streetId = comStreet.getStreetId();
                            communityId = comAct.getCommunityId();
                            if (Objects.isNull(comAct)) {
                                isValid = false;
                                errorMsg.append("社区不存在或不属于所选街道; ");
                            } else {
                                streetId = comStreet.getStreetId();
                                communityId = comAct.getCommunityId();
                            }
                        }
                    }
@@ -275,8 +294,8 @@
                //导入党员默认审核通过
                partyMember.setAuditStatus(AuditStatusEnum.APPROVED.getCode());
                partyMember.setSource(1);//管理后台录入
                //默认头像 TODO 默认头像
                partyMember.setAvatar("");
                //默认头像
                partyMember.setAvatar("https://www.psciio.com//idcard/f15c91f940624ed59537ecced1059f18.jpg");
                // 根据身份证号设置性别
                if (StrUtil.isNotBlank(template.getIdNumber())) {
                    partyMember.setGender(getGender(template.getIdNumber()));
@@ -328,10 +347,11 @@
     * @param loginUserInfo
     */
    @Override
    public void audit(PartyMemberDTO dto, SystemUserVo loginUserInfo) {
    public PartyMember audit(PartyMemberDTO dto, SystemUserVo loginUserInfo) {
        PartyMember partyMember = BeanUtil.copyProperties(dto, PartyMember.class);
        partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString()));
        updateById(partyMember);
        return this.getById(dto.getId());
    }
    @Override
@@ -341,10 +361,18 @@
                .eq(SystemUser::getPhone, loginUserInfo.getPhone())
                .eq(SystemUser::getIsAdmin, 1)
                .ne(SystemUser::getStatus, 3)
                .ne(SystemUser::getAccountLevel, 5)
                .last("LIMIT 1"));
        if (adminUser == null){
            throw new ServiceException("无权审核");
        }
        Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfo.getPhone());
        if(identity != null && identity != 2){
            throw new ServiceException("请切换至管理员身份");
        }
        int accountLevel = adminUser.getAccountLevel();
@@ -357,7 +385,7 @@
            streetId = adminUser.getStreetId();
        } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
            districtsCode = adminUser.getDistrictsCode();
        } else if(accountLevel != ReportTypeEnum.PARTY.getCode()){
        } else if(accountLevel != ReportTypeEnum.CITY.getCode()){
            throw new ServiceException("无权审核:未知等级");
        }
        String phone = loginUserInfo.getPhone();