package org.jeecg.modules.adweb.enquiry.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.adweb.enquiry.entity.AdwebEnquiryBlacklist;
import org.jeecg.modules.adweb.enquiry.entity.AdwebPublicBlackEmail;
import org.jeecg.modules.adweb.enquiry.entity.AdwebSiteBlackEmail;
import org.jeecg.modules.adweb.enquiry.service.IAdwebEnquiryBlacklistService;
import org.jeecg.modules.adweb.enquiry.service.IAdwebPublicBlackEmailService;
import org.jeecg.modules.adweb.enquiry.service.IAdwebSiteBlackEmailService;
import org.jeecg.modules.adweb.site.entity.AdwebSite;
import org.jeecg.modules.adweb.site.service.IAdwebSiteService;
import org.jeecg.modules.adweb.site.service.ISiteUserPermissionService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @Description: AdwebSiteBlackEmailController.java;
 * @Author: chenpeiqing
 * @Date: 2024/11/1 : 17:22
 * @Version: V1.0
 */
@Tag(name = "adweb_site_black_email")
@RestController
@RequestMapping("/adweb/enquirySiteBlackEmail")
@Slf4j
public class AdwebSiteBlackEmailController extends JeecgController<AdwebSiteBlackEmail, IAdwebSiteBlackEmailService> {

    @Resource
    private IAdwebSiteBlackEmailService enquirySiteBlackEmailService;
    @Resource
    private RedisUtil redisUtil;
    @Resource
    private ISysBaseAPI sysBaseAPI;

    @Resource
    private IAdwebSiteService adwebSiteService;
    @Resource
    private ISiteUserPermissionService siteUserPermissionService;
    @Resource
    private IAdwebPublicBlackEmailService enquiryPublicBlackEmailService;
    @Resource
    private IAdwebEnquiryBlacklistService adwebEnquiryBlacklistService;


    private static final String SiteBlackEmailKey = "SITE_BLACK_EMAIL_LIST";
    private static final String SiteWhiteEmailListKey = "SITE_WHITE_EMAIL_LIST";
    private static final String SiteEmailTenMinKey = "JUDGE_WASTE_SITE_ENQUIRY_EMAIL_BY_10_MIN::";
    private static final String SiteEmailOneDayKey = "JUDGE_WASTE_SITE_ENQUIRY_EMAIL_BY_ONE_DAY::";
    private static final String NotBlackEmailWasteSiteEnquiryKey = "NOT_BLACK_EMAIL_WASTE_SITE_ENQUIRY_MAP::";
    //	private static final String EmailTenMinKey = "JUDGE_WASTE_ENQUIRY_EMAIL_BY_10_MIN::";
//	private static final String EmailOneDayKey = "JUDGE_WASTE_ENQUIRY_EMAIL_BY_ONE_DAY::";
//	private static final String NotBlackEmailWasteEnquiryKey = "NOT_BLACK_EMAIL_WASTE_ENQUIRY_MAP::";
    private static final String BlackEmailKey = "BLACK_EMAIL_LIST";

    /**
     * 分页列表查询
     *
     * @param enquirySiteBlackEmail
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-分页列表查询")
    @Operation(summary = "adweb_site_black_email-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(AdwebSiteBlackEmail enquirySiteBlackEmail,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                   HttpServletRequest req) {
        Page<AdwebSiteBlackEmail> page = new Page<AdwebSiteBlackEmail>(pageNo, pageSize);
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        List<String> codeList = null;
        List<String> uidList = null;
        if (sysBaseAPI.isAdmin()) {

        } else if (sysBaseAPI.isOem()) {
            uidList = sysBaseAPI.getOemGroupUids();
        } else {
            uidList = new ArrayList<>();
            uidList.add(sysUser.getId());
        }
        List<String> siteCodeList = null;
        if (CollectionUtils.isNotEmpty(uidList)) {
            siteCodeList = siteUserPermissionService.getSiteCodeListByUids(uidList);
        }

        if (enquirySiteBlackEmail.getSiteId() != null) {
            String siteCode = adwebSiteService.getSiteCodeById(enquirySiteBlackEmail.getSiteId());
            if (StringUtils.isNotBlank(siteCode)) {
                QueryWrapper<AdwebSite> queryWrapper = new QueryWrapper<>();
                queryWrapper.eq("id", enquirySiteBlackEmail.getSiteId()).or().eq("parent_group_code", siteCode);
                queryWrapper.ne("status", 0);
                queryWrapper.in(!sysBaseAPI.isAdmin(), "code", siteCodeList);
                codeList = adwebSiteService.list(queryWrapper).stream().map(AdwebSite::getCode).collect(Collectors.toList());
            }
        } else {
            codeList = siteCodeList;
        }
        String column = req.getParameter("column");
        String order = req.getParameter("order");
        IPage<AdwebSiteBlackEmail> pageList = enquirySiteBlackEmailService.pageList(page, enquirySiteBlackEmail, codeList, column, order);
        List<AdwebSiteBlackEmail> record = pageList.getRecords();

        if (CollectionUtils.isNotEmpty(record)) {
            for (AdwebSiteBlackEmail enquirySiteBlackEmail1 : record) {
                if (enquirySiteBlackEmail1.getType().equals("0")) {
                    if (enquirySiteBlackEmail1.getWasteGeneralEnquiryNum() != null) {
                        enquirySiteBlackEmail1.setWasteEnquiryNum(enquirySiteBlackEmail1.getWasteGeneralEnquiryNum());
                    }
                }
            }
        }
        return Result.OK(pageList);
    }

    /**
     * 添加
     *
     * @param enquirySiteBlackEmail
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-添加")
    @Operation(summary = "adweb_site_black_email-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody AdwebSiteBlackEmail enquirySiteBlackEmail) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        if (StringUtils.isBlank(enquirySiteBlackEmail.getEmail())) {
            return Result.error("邮箱不能为空");
        }

        //将邮箱转换为小写
        enquirySiteBlackEmail.setEmail(enquirySiteBlackEmail.getEmail().trim().toLowerCase());

        int count = (int) enquirySiteBlackEmailService.count(new QueryWrapper<AdwebSiteBlackEmail>().ne("status", 0).eq("email", enquirySiteBlackEmail.getEmail())
                .eq("site_id", enquirySiteBlackEmail.getSiteId()).eq("type", enquirySiteBlackEmail.getType()));

        if (count > 0) {
            return Result.error("邮箱已存在");
        }

        //判断站点询盘黑名单是否存在添加进来的黑名单
        QueryWrapper<AdwebEnquiryBlacklist> adwebEnquiryBlacklistQueryWrapper = new QueryWrapper<>();
        adwebEnquiryBlacklistQueryWrapper.eq("site_id", enquirySiteBlackEmail.getSiteId());
        adwebEnquiryBlacklistQueryWrapper.eq("status", 1);
        adwebEnquiryBlacklistQueryWrapper.eq("email", enquirySiteBlackEmail.getEmail());
        List<AdwebEnquiryBlacklist> enquiryBlacklists = adwebEnquiryBlacklistService.list(adwebEnquiryBlacklistQueryWrapper);

        if (CollectionUtils.isNotEmpty(enquiryBlacklists)) {
            return Result.error("在拒收的邮箱黑名单中已存在！");
        }

        enquirySiteBlackEmail.setStatus(1);
        enquirySiteBlackEmail.setCreateTime(new Date());
        enquirySiteBlackEmailService.save(enquirySiteBlackEmail);

        Map<String, List<String>> enquirySiteBlackEmailListMap = enquirySiteBlackEmailService.getSiteBlackEmailListBySiteId(enquirySiteBlackEmail.getSiteId());
        List<String> emailList = enquirySiteBlackEmailListMap.get("black");
        List<String> whiteEmailList = enquirySiteBlackEmailListMap.get("white");

        //处理对应站点的黑名单
        if (CollectionUtils.isNotEmpty(emailList)) {
            redisUtil.set(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId(), emailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId());
        }

        //处理对应站点的白名单
        if (CollectionUtils.isNotEmpty(whiteEmailList)) {
            redisUtil.set(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId(), whiteEmailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId());
        }
        return Result.OK("添加成功！");
    }

    /**
     * 编辑
     *
     * @param enquirySiteBlackEmail
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-编辑")
    @Operation(summary = "adweb_site_black_email-编辑")
    @PutMapping(value = "/edit")
    public Result<?> edit(@RequestBody AdwebSiteBlackEmail enquirySiteBlackEmail) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        if (StringUtils.isBlank(enquirySiteBlackEmail.getEmail())) {
            return Result.error("邮箱不能为空");
        }

        //将邮箱转换为小写
        enquirySiteBlackEmail.setEmail(enquirySiteBlackEmail.getEmail().trim().toLowerCase());

        int count = (int) enquirySiteBlackEmailService.count(new QueryWrapper<AdwebSiteBlackEmail>().ne("status", 0).eq("email", enquirySiteBlackEmail.getEmail()).eq("site_id", enquirySiteBlackEmail.getSiteId()).eq("black_or_white", enquirySiteBlackEmail.getBlackOrWhite()).ne("id", enquirySiteBlackEmail.getId()));

        if (count > 0) {
            return Result.error("邮箱已存在");
        }

        //判断站点询盘黑名单是否存在添加进来的黑名单
        QueryWrapper<AdwebEnquiryBlacklist> adwebEnquiryBlacklistQueryWrapper = new QueryWrapper<>();
        adwebEnquiryBlacklistQueryWrapper.eq("site_id", enquirySiteBlackEmail.getSiteId());
        adwebEnquiryBlacklistQueryWrapper.eq("status", 1);
        adwebEnquiryBlacklistQueryWrapper.eq("email", enquirySiteBlackEmail.getEmail());
        List<AdwebEnquiryBlacklist> enquiryBlacklists = adwebEnquiryBlacklistService.list(adwebEnquiryBlacklistQueryWrapper);

        if (CollectionUtils.isNotEmpty(enquiryBlacklists)) {
            return Result.error("在拒收的邮箱黑名单中已存在！");
        }

        AdwebSiteBlackEmail oldAdwebSiteBlackEmail = enquirySiteBlackEmailService.getById(enquirySiteBlackEmail.getId());

        //判断公共询盘缓存的是否包含历史的黑名单数据
        if (!oldAdwebSiteBlackEmail.getEmail().equals(enquirySiteBlackEmail.getEmail())) {
            List<AdwebPublicBlackEmail> emailList = enquiryPublicBlackEmailService.list(new QueryWrapper<AdwebPublicBlackEmail>().eq("status", 1).eq("black_or_white", 0));
            List<String> pubicBlackEmailList = emailList.stream().map(AdwebPublicBlackEmail::getEmail).collect(Collectors.toList());

            List<String> publicBlackList = (List<String>) redisUtil.get(BlackEmailKey);

            publicBlackList.removeAll(pubicBlackEmailList);
            if (CollectionUtils.isNotEmpty(publicBlackList)) {
                for (int i = 0; i < publicBlackList.size(); i++) {
                    String oldEmail = oldAdwebSiteBlackEmail.getEmail();
                    if (oldAdwebSiteBlackEmail.getType().equals("0")) {
                        oldEmail = "*" + oldEmail + "*";
                    }
                    if (oldEmail.equals(publicBlackList.get(i))) {
                        publicBlackList.remove(i);
                        break;
                    }
                }
                pubicBlackEmailList.addAll(publicBlackList);
                redisUtil.set(BlackEmailKey, pubicBlackEmailList, 60 * 60 * 24);
            }
        }

        enquirySiteBlackEmail.setUpdateTime(new Date());
        enquirySiteBlackEmailService.updateById(enquirySiteBlackEmail);

        QueryWrapper<AdwebSiteBlackEmail> siteAllEmailQueryWrapper = new QueryWrapper<>();
        siteAllEmailQueryWrapper.ne("status", 0);
        siteAllEmailQueryWrapper.eq("site_id", enquirySiteBlackEmail.getSiteId());
        List<AdwebSiteBlackEmail> allEmailList = enquirySiteBlackEmailService.list(siteAllEmailQueryWrapper);
        if (CollectionUtils.isEmpty(allEmailList)) {
            log.info("未获取到对应站点的黑白名单数据");
        }

        Map<String, List<String>> enquirySiteBlackEmailListMap = enquirySiteBlackEmailService.getSiteBlackEmailListBySiteId(enquirySiteBlackEmail.getSiteId());
        List<String> emailList = enquirySiteBlackEmailListMap.get("black");
        List<String> whiteEmailList = enquirySiteBlackEmailListMap.get("white");

        //处理对应站点的黑名单
        if (CollectionUtils.isNotEmpty(emailList)) {
            redisUtil.set(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId(), emailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId());
        }

        //处理对应站点的白名单
        if (CollectionUtils.isNotEmpty(whiteEmailList)) {
            redisUtil.set(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId(), whiteEmailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId());
        }

        //处理站点改变的数据缓存
        if (!oldAdwebSiteBlackEmail.getSiteId().equals(enquirySiteBlackEmail.getSiteId())) {
            Map<String, List<String>> oldAdwebSiteBlackEmailListMap = enquirySiteBlackEmailService.getSiteBlackEmailListBySiteId(oldAdwebSiteBlackEmail.getSiteId());
            List<String> oldEmailList = oldAdwebSiteBlackEmailListMap.get("black");
            List<String> oldWhiteEmailList = oldAdwebSiteBlackEmailListMap.get("white");
            //处理对应站点的黑名单
            if (CollectionUtils.isNotEmpty(oldEmailList)) {
                redisUtil.set(SiteBlackEmailKey + "::" + oldAdwebSiteBlackEmail.getSiteId(), oldEmailList, 60 * 60 * 24);
            } else {
                redisUtil.del(SiteBlackEmailKey + "::" + oldAdwebSiteBlackEmail.getSiteId());
            }

            //处理对应站点的白名单
            if (CollectionUtils.isNotEmpty(oldWhiteEmailList)) {
                redisUtil.set(SiteWhiteEmailListKey + "::" + oldAdwebSiteBlackEmail.getSiteId(), oldWhiteEmailList, 60 * 60 * 24);
            } else {
                redisUtil.del(SiteWhiteEmailListKey + "::" + oldAdwebSiteBlackEmail.getSiteId());
            }
        }


        return Result.OK("编辑成功!");
    }

    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-通过id删除")
    @Operation(summary = "adweb_site_black_email-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        if (StringUtils.isBlank(id)) {
            return Result.error("参数不识别！");
        }
        AdwebSiteBlackEmail enquirySiteBlackEmail = enquirySiteBlackEmailService.getById(id);
        if (enquirySiteBlackEmail == null) {
            return Result.error("未找到对应数据");
        }

        //判断公共询盘缓存的是否包含历史的黑名单数据
        List<AdwebPublicBlackEmail> pubicEmailList = enquiryPublicBlackEmailService.list(new QueryWrapper<AdwebPublicBlackEmail>().eq("status", 1).eq("black_or_white", 0));
        List<String> pubicBlackEmailList = pubicEmailList.stream().map(AdwebPublicBlackEmail::getEmail).collect(Collectors.toList());

        List<String> publicBlackList = (List<String>) redisUtil.get(BlackEmailKey);

        if (CollectionUtils.isNotEmpty(publicBlackList)) {
            if (CollectionUtils.isNotEmpty(pubicBlackEmailList)) {
                publicBlackList.removeAll(pubicBlackEmailList);
            } else {
                pubicBlackEmailList = new ArrayList<>();
            }
            for (int i = 0; i < publicBlackList.size(); i++) {
                String oldEmail = enquirySiteBlackEmail.getEmail();
                if (enquirySiteBlackEmail.getType().equals("0")) {
                    oldEmail = "*" + oldEmail + "*";
                }
                if (oldEmail.equals(publicBlackList.get(i))) {
                    publicBlackList.remove(i);
                    break;
                }
            }
            pubicBlackEmailList.addAll(publicBlackList);
            redisUtil.set(BlackEmailKey, pubicBlackEmailList, 60 * 60 * 24);
        }
        enquirySiteBlackEmail.setStatus(0);
        enquirySiteBlackEmail.setUpdateTime(new Date());
        enquirySiteBlackEmailService.updateById(enquirySiteBlackEmail);

        redisUtil.del(SiteEmailTenMinKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());
        redisUtil.del(SiteEmailOneDayKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());
        redisUtil.del(NotBlackEmailWasteSiteEnquiryKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());

        QueryWrapper<AdwebSiteBlackEmail> siteAllEmailQueryWrapper = new QueryWrapper<>();
        siteAllEmailQueryWrapper.ne("status", 0);
        siteAllEmailQueryWrapper.eq("site_id", enquirySiteBlackEmail.getSiteId());
        List<AdwebSiteBlackEmail> allEmailList = enquirySiteBlackEmailService.list(siteAllEmailQueryWrapper);
        if (CollectionUtils.isEmpty(allEmailList)) {
            log.info("未获取到对应站点的黑白名单数据");
        }

        List<String> emailList = new ArrayList<>();
        List<String> whiteEmailList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(allEmailList)) {
            for (AdwebSiteBlackEmail enquirySiteBlackEmail1 : allEmailList) {
                if (enquirySiteBlackEmail1.getBlackOrWhite() == 0) {
                    if (enquirySiteBlackEmail1.getType().equals("0")) {
                        emailList.add("*" + enquirySiteBlackEmail1.getEmail() + "*");
                    } else {
                        emailList.add(enquirySiteBlackEmail1.getEmail());
                    }
                } else {
                    if (enquirySiteBlackEmail1.getType().equals("0")) {
                        whiteEmailList.add("*" + enquirySiteBlackEmail1.getEmail() + "*");
                    } else {
                        whiteEmailList.add(enquirySiteBlackEmail1.getEmail());
                    }
                }
            }
        }
        //处理对应站点的黑名单
        if (CollectionUtils.isNotEmpty(emailList)) {
            redisUtil.set(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId(), emailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteBlackEmailKey + "::" + enquirySiteBlackEmail.getSiteId());
        }

        //处理对应站点的白名单
        if (CollectionUtils.isNotEmpty(whiteEmailList)) {
            redisUtil.set(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId(), whiteEmailList, 60 * 60 * 24);
        } else {
            redisUtil.del(SiteWhiteEmailListKey + "::" + enquirySiteBlackEmail.getSiteId());
        }

        return Result.OK("删除成功!");
    }

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-批量删除")
    @Operation(summary = "adweb_site_black_email-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        if (StringUtils.isBlank(ids)) {
            return Result.error("参数不识别！");
        }

        List<String> idList = Arrays.asList(ids.split(","));

        List<AdwebSiteBlackEmail> list = enquirySiteBlackEmailService.list(new QueryWrapper<AdwebSiteBlackEmail>().in("id", idList).ne("status", 0));

        if (list.isEmpty()) {
            return Result.error("未找到对应数据");
        }

        boolean update = enquirySiteBlackEmailService.update(new UpdateWrapper<AdwebSiteBlackEmail>().in("id", idList).set("status", 0));

        HashSet<Integer> siteList = new HashSet<>();
        //删除redis中的数据
        for (AdwebSiteBlackEmail enquirySiteBlackEmail : list) {

            //判断公共询盘缓存的是否包含历史的黑名单数据
            List<AdwebPublicBlackEmail> pubicEmailList = enquiryPublicBlackEmailService.list(new QueryWrapper<AdwebPublicBlackEmail>().eq("status", 1).eq("black_or_white", 0));
            List<String> pubicBlackEmailList = pubicEmailList.stream().map(AdwebPublicBlackEmail::getEmail).collect(Collectors.toList());

            List<String> publicBlackList = (List<String>) redisUtil.get(BlackEmailKey);

            if (CollectionUtils.isNotEmpty(publicBlackList)) {
                if (CollectionUtils.isNotEmpty(pubicBlackEmailList)) {
                    publicBlackList.removeAll(pubicBlackEmailList);
                } else {
                    pubicBlackEmailList = new ArrayList<>();
                }
                for (int i = 0; i < publicBlackList.size(); i++) {
                    String oldEmail = enquirySiteBlackEmail.getEmail();
                    if (enquirySiteBlackEmail.getType().equals("0")) {
                        oldEmail = "*" + oldEmail + "*";
                    }
                    if (oldEmail.equals(publicBlackList.get(i))) {
                        publicBlackList.remove(i);
                        break;
                    }
                }
                pubicBlackEmailList.addAll(publicBlackList);
                redisUtil.set(BlackEmailKey, pubicBlackEmailList, 60 * 60 * 24);
            }

            redisUtil.del(SiteEmailTenMinKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());
            redisUtil.del(SiteEmailOneDayKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());
            redisUtil.del(NotBlackEmailWasteSiteEnquiryKey + enquirySiteBlackEmail.getSiteId() + "::" + enquirySiteBlackEmail.getEmail());
            siteList.add(enquirySiteBlackEmail.getSiteId());
        }


        for (Integer siteId : siteList) {
            QueryWrapper<AdwebSiteBlackEmail> siteAllEmailQueryWrapper = new QueryWrapper<>();
            siteAllEmailQueryWrapper.ne("status", 0);
            siteAllEmailQueryWrapper.eq("site_id", siteId);
            List<AdwebSiteBlackEmail> allEmailList = enquirySiteBlackEmailService.list(siteAllEmailQueryWrapper);
            if (CollectionUtils.isEmpty(allEmailList)) {
                log.info("未获取到对应站点的黑白名单数据");
            }

            List<String> emailList = new ArrayList<>();
            List<String> whiteEmailList = new ArrayList<>();
            if (CollectionUtils.isNotEmpty(allEmailList)) {
                for (AdwebSiteBlackEmail enquirySiteBlackEmail : allEmailList) {
                    if (enquirySiteBlackEmail.getBlackOrWhite() == 0) {
                        if (enquirySiteBlackEmail.getType().equals("0")) {
                            emailList.add("*" + enquirySiteBlackEmail.getEmail() + "*");
                        } else {
                            emailList.add(enquirySiteBlackEmail.getEmail());
                        }
                    } else {
                        if (enquirySiteBlackEmail.getType().equals("0")) {
                            whiteEmailList.add("*" + enquirySiteBlackEmail.getEmail() + "*");
                        } else {
                            whiteEmailList.add(enquirySiteBlackEmail.getEmail());
                        }
                    }
                }
            }
            //处理对应站点的黑名单
            if (CollectionUtils.isNotEmpty(emailList)) {
                redisUtil.set(SiteBlackEmailKey + "::" + siteId, emailList, 60 * 60 * 24);
            } else {
                redisUtil.del(SiteBlackEmailKey + "::" + siteId);
            }

            //处理对应站点的白名单
            if (CollectionUtils.isNotEmpty(whiteEmailList)) {
                redisUtil.set(SiteWhiteEmailListKey + "::" + siteId, whiteEmailList, 60 * 60 * 24);
            } else {
                redisUtil.del(SiteWhiteEmailListKey + "::" + siteId);
            }
        }
        return update ? Result.OK("批量删除成功!") : Result.error("批量删除失败!");
    }

    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "adweb_site_black_email-通过id查询")
    @Operation(summary = "adweb_site_black_email-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        AdwebSiteBlackEmail enquirySiteBlackEmail = enquirySiteBlackEmailService.getById(id);
        if (enquirySiteBlackEmail == null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(enquirySiteBlackEmail);
    }

    /**
     * 导出excel
     *
     * @param request
     * @param enquirySiteBlackEmail
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, AdwebSiteBlackEmail enquirySiteBlackEmail) {
        return super.exportXls(request, enquirySiteBlackEmail, AdwebSiteBlackEmail.class, "adweb_site_black_email");
    }

    /**
     * 通过excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, AdwebSiteBlackEmail.class);
    }

}
