Commit cbf6f281 by xugaojun

存量会员:新增登录用户参数、新增配置、匹配逻辑

parent 5ae73d4c
......@@ -36,6 +36,10 @@ public class YwWxEnterpriseDTO implements Serializable {
* 转换状态:0:未转换;1:转换成功;2:转换中
*/
private Integer externalFlag;
/**
* 是否开启群发 true 开启 false 关闭
*/
private Boolean openMassFlag;
public static long getSerialversionuid() {
......@@ -156,4 +160,12 @@ public class YwWxEnterpriseDTO implements Serializable {
public void setExternalFlag(Integer externalFlag) {
this.externalFlag = externalFlag;
}
public Boolean getOpenMassFlag() {
return openMassFlag;
}
public void setOpenMassFlag(Boolean openMassFlag) {
this.openMassFlag = openMassFlag;
}
}
package com.gic.haoban.manage.api.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.*;
......@@ -8,180 +9,205 @@ import java.util.Set;
public interface WxEnterpriseApiService {
/**
* 好办接收企业微信回调信息
*
* @param dto
*/
void callbackReviceEnterprise(QywxCorpInfoSimpleDTO dto);
/**
* 运维后台获取微信企业id列表
* @return
*/
com.gic.api.base.commons.Page<YwWxEnterpriseDTO> list(BasePageInfo pageInfo,String keyword,List<String> enterpriseIds,Integer gicContactFlag,String version, List<String> enterpriseIdsNotIn);
/**
* 获取一个
* @param wxEnterpriseId
* @return
*/
WxEnterpriseDTO getOne(String wxEnterpriseId);
/**
* 根据corpId查询一条数据
* @param corpId
* @return
*/
WxEnterpriseDTO getEnterpriseBycorpId(String corpId);
/**
* 更新企业
* @param enterpriseDTO
*/
void update(WxEnterpriseDTO enterpriseDTO);
List<YwWxEnterpriseDTO> listAll();
List<YwWxEnterpriseDTO> listByIds(Set<String> enterpriseIds);
/**
* 企业是否过期 true是
* @param enterpriseId
* @return
*/
boolean enterpriseIsOver(String enterpriseId);
/**
* 获取配置
*
* @param wxEnterpriseId
* @param secretType
* @param enterpriseId
* @return
*/
SecretSettingDTO getSecretSetting(String wxEnterpriseId, int secretType, String enterpriseId);
/**
* 保存
*
* @param secretSettingDTO
* @return
*/
boolean saveSecretSetting(SecretSettingDTO secretSettingDTO);
/**
* secretList
* @param wxEnterpriseId
* @return
*/
List<SecretSettingDTO> listSecret(String wxEnterpriseId);
/**
* 删除
* @param secretId
* @return
*/
boolean delSecretSetting(String secretId);
/**
* 保存小程序配置
*
* @param miniprogramSettingDTO
* @return
*/
boolean saveMiniprogramSetting(MiniprogramSettingDTO miniprogramSettingDTO);
/**
* 查询小程序配置列表
*
* @param wxEnterpriseId
* @return
*/
List<MiniprogramSettingDTO> listMiniprogramSetting(String wxEnterpriseId);
/**
* 获取单个小程序配置
*
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
MiniprogramSettingDTO getMiniprogramSettingByEid(String wxEnterpriseId, String enterpriseId);
/**
* 获取单个小程序配置
*
* @param wxEnterpriseId
* @param appId
* @return
*/
MiniprogramSettingDTO getMiniprogramSettingByAppId(String wxEnterpriseId, String appId);
/**
* 删除 小程序配置
*
* @return
*/
boolean delMiniprogramSettingByEid(String id);
/**
* @param dto
* @return
*/
boolean saveWelcome(WelcomeDTO dto);
/**
* 获取欢迎语
*
* @param wxEnterpriseId
* @return
*/
WelcomeDTO getWelcome(String wxEnterpriseId);
/**
* 获取欢迎语
*
* @param wxEnterpriseId
* @return
*/
boolean setWelcome(String wxEnterpriseId, Integer openFlag);
/**
* 删除欢迎语
*
* @param wxEnterpriseId
* @return
*/
boolean delWelcome(String wxEnterpriseId);
/**
* 企微回调-同意授权转换external_userid
*
* @param corpId 公司标识(同意授权的企业ID)
* @param serviceCorpId 服务公司id(服务商企业ID)
* @author mozhu
* @date 2021-11-30 19:14:08
*/
void agreeExternalUseridCallBack(String corpId, String serviceCorpId);
/**
* 同意外部标识标志
*
* @param wxEnterpriseId 公司标识
* @param openFlag 开放的标志
* @author mozhu
* @date 2021-12-18 11:55:51
*/
void agreeExternalUseridFlag(String wxEnterpriseId, Integer openFlag);
/**
* 好办登录
*
* @param staffLoginDTO 员工登录dto
* @author mozhu
* @date 2021-12-15 11:02:52
*/
void wellDoneLogin(StaffLoginDTO staffLoginDTO);
/**
* 好办接收企业微信回调信息
*
* @param dto
*/
void callbackReviceEnterprise(QywxCorpInfoSimpleDTO dto);
/**
* desc: 运维后台获取微信企业id列表
*
* @param pageInfo 分页参数
* @param keyword 关键字
* @param enterpriseIds 企业id列表
* @param gicContactFlag 关联标记
* @param version 版本
* @param enterpriseIdsNotIn 企业不存在列表
* @param loginUserId 登录用户id
* @return : {@link Page< YwWxEnterpriseDTO>}
* @author : YongEn
* @date : 2022/2/15
*/
com.gic.api.base.commons.Page<YwWxEnterpriseDTO> list(BasePageInfo pageInfo,
String keyword,
List<String> enterpriseIds,
Integer gicContactFlag,
String version,
List<String> enterpriseIdsNotIn,
String loginUserId);
/**
* 获取一个
*
* @param wxEnterpriseId
* @return
*/
WxEnterpriseDTO getOne(String wxEnterpriseId);
/**
* 根据corpId查询一条数据
*
* @param corpId
* @return
*/
WxEnterpriseDTO getEnterpriseBycorpId(String corpId);
/**
* 更新企业
*
* @param enterpriseDTO
*/
void update(WxEnterpriseDTO enterpriseDTO);
List<YwWxEnterpriseDTO> listAll();
List<YwWxEnterpriseDTO> listByIds(Set<String> enterpriseIds);
/**
* 企业是否过期 true是
*
* @param enterpriseId
* @return
*/
boolean enterpriseIsOver(String enterpriseId);
/**
* 获取配置
*
* @param wxEnterpriseId
* @param secretType
* @param enterpriseId
* @return
*/
SecretSettingDTO getSecretSetting(String wxEnterpriseId, int secretType, String enterpriseId);
/**
* 保存
*
* @param secretSettingDTO
* @return
*/
boolean saveSecretSetting(SecretSettingDTO secretSettingDTO);
/**
* secretList
*
* @param wxEnterpriseId
* @return
*/
List<SecretSettingDTO> listSecret(String wxEnterpriseId);
/**
* 删除
*
* @param secretId
* @return
*/
boolean delSecretSetting(String secretId);
/**
* 保存小程序配置
*
* @param miniprogramSettingDTO
* @return
*/
boolean saveMiniprogramSetting(MiniprogramSettingDTO miniprogramSettingDTO);
/**
* 查询小程序配置列表
*
* @param wxEnterpriseId
* @return
*/
List<MiniprogramSettingDTO> listMiniprogramSetting(String wxEnterpriseId);
/**
* 获取单个小程序配置
*
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
MiniprogramSettingDTO getMiniprogramSettingByEid(String wxEnterpriseId, String enterpriseId);
/**
* 获取单个小程序配置
*
* @param wxEnterpriseId
* @param appId
* @return
*/
MiniprogramSettingDTO getMiniprogramSettingByAppId(String wxEnterpriseId, String appId);
/**
* 删除 小程序配置
*
* @return
*/
boolean delMiniprogramSettingByEid(String id);
/**
* @param dto
* @return
*/
boolean saveWelcome(WelcomeDTO dto);
/**
* 获取欢迎语
*
* @param wxEnterpriseId
* @return
*/
WelcomeDTO getWelcome(String wxEnterpriseId);
/**
* 获取欢迎语
*
* @param wxEnterpriseId
* @return
*/
boolean setWelcome(String wxEnterpriseId, Integer openFlag);
/**
* 删除欢迎语
*
* @param wxEnterpriseId
* @return
*/
boolean delWelcome(String wxEnterpriseId);
/**
* 企微回调-同意授权转换external_userid
*
* @param corpId 公司标识(同意授权的企业ID)
* @param serviceCorpId 服务公司id(服务商企业ID)
* @author mozhu
* @date 2021-11-30 19:14:08
*/
void agreeExternalUseridCallBack(String corpId, String serviceCorpId);
/**
* 同意外部标识标志
*
* @param wxEnterpriseId 公司标识
* @param openFlag 开放的标志
* @author mozhu
* @date 2021-12-18 11:55:51
*/
void agreeExternalUseridFlag(String wxEnterpriseId, Integer openFlag);
/**
* 好办登录
*
* @param staffLoginDTO 员工登录dto
* @author mozhu
* @date 2021-12-15 11:02:52
*/
void wellDoneLogin(StaffLoginDTO staffLoginDTO);
}
......@@ -119,15 +119,15 @@ public class EnterpriseController extends WebBaseController {
Page<YwWxEnterpriseDTO> page = new Page<>();
if (Objects.nonNull(openTagFlag) && ALL == openTagFlag) {
page = queryAll(pageInfo, keyword, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache);
page = queryAll(pageInfo, keyword, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache, loginUserId);
}
if (Objects.nonNull(openTagFlag) && OPEN == openTagFlag) {
page = queryOpen(pageInfo, keyword, gicEnterpriseName, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache);
page = queryOpen(pageInfo, keyword, gicEnterpriseName, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache, loginUserId);
}
if (Objects.nonNull(openTagFlag) && CLOSE == openTagFlag) {
page = queryClose(pageInfo, keyword, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache);
page = queryClose(pageInfo, keyword, gicContactHelper, version, wxEnterpriseIdInList, wxEnterpriseIdSetInCache, loginUserId);
}
pageResult.setList(page.getResult());
......@@ -167,9 +167,15 @@ public class EnterpriseController extends WebBaseController {
return wxEntIdSet;
}
private Page<YwWxEnterpriseDTO> queryAll(BasePageInfo pageInfo, String keyword, Integer gicContactHelper, String version, List<String> wxEnterpriseIdInList, Set<String> wxEnterpriseIdSetInCache) {
private Page<YwWxEnterpriseDTO> queryAll(BasePageInfo pageInfo,
String keyword,
Integer gicContactHelper,
String version,
List<String> wxEnterpriseIdInList,
Set<String> wxEnterpriseIdSetInCache,
String loginUserId) {
// 查询所有状态
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, wxEnterpriseIdInList, gicContactHelper, version, null);
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, wxEnterpriseIdInList, gicContactHelper, version, null, loginUserId);
page.getResult().forEach(one -> {
one.setVersion("3.0");
one.setBuyDate(new Date());
......@@ -185,14 +191,21 @@ public class EnterpriseController extends WebBaseController {
return page;
}
private Page<YwWxEnterpriseDTO> queryOpen(BasePageInfo pageInfo, String keyword, String gicEnterpriseName, Integer gicContactHelper, String version, List<String> wxEnterpriseIdInList, Set<String> wxEnterpriseIdSetInCache) {
private Page<YwWxEnterpriseDTO> queryOpen(BasePageInfo pageInfo,
String keyword,
String gicEnterpriseName,
Integer gicContactHelper,
String version,
List<String> wxEnterpriseIdInList,
Set<String> wxEnterpriseIdSetInCache,
String loginUserId) {
// 查询开启状态
if (haveCondition(gicEnterpriseName)) {
// 有条件-取交集
wxEnterpriseIdSetInCache.retainAll(wxEnterpriseIdInList);
}
List<String> queryList = new ArrayList<>(wxEnterpriseIdSetInCache);
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, queryList, gicContactHelper, version, null);
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, queryList, gicContactHelper, version, null, loginUserId);
page.getResult().forEach(one -> {
one.setVersion("3.0");
one.setBuyDate(new Date());
......@@ -205,9 +218,15 @@ public class EnterpriseController extends WebBaseController {
return page;
}
private Page<YwWxEnterpriseDTO> queryClose(BasePageInfo pageInfo, String keyword, Integer gicContactHelper, String version, List<String> wxEnterpriseIdInList, Set<String> wxEnterpriseIdSetInCache) {
private Page<YwWxEnterpriseDTO> queryClose(BasePageInfo pageInfo,
String keyword,
Integer gicContactHelper,
String version,
List<String> wxEnterpriseIdInList,
Set<String> wxEnterpriseIdSetInCache,
String loginUserId) {
// 查询关闭状态
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, wxEnterpriseIdInList, gicContactHelper, version, new ArrayList<>(wxEnterpriseIdSetInCache));
Page<YwWxEnterpriseDTO> page = wxEnterpriseApiService.list(pageInfo, keyword, wxEnterpriseIdInList, gicContactHelper, version, new ArrayList<>(wxEnterpriseIdSetInCache), loginUserId);
page.getResult().forEach(one -> {
one.setVersion("3.0");
one.setBuyDate(new Date());
......
......@@ -23,6 +23,11 @@ public class Config {
@Value("${memberOpenPage}")
private String memberOpenPage;
@Value("${historyMbrMassEnterpriseWhiteList}")
private String historyMbrMassEnterpriseWhiteList;
@Value("${historyMbrMassEnterpriseWhiteList}")
private String historyMbrMassOperWhiteList;
public String getMemberOpenPage() {
return memberOpenPage;
}
......@@ -70,4 +75,20 @@ public class Config {
public void setWxSuiteid(String wxSuiteid) {
this.wxSuiteid = wxSuiteid;
}
public String getHistoryMbrMassEnterpriseWhiteList() {
return historyMbrMassEnterpriseWhiteList;
}
public void setHistoryMbrMassEnterpriseWhiteList(String historyMbrMassEnterpriseWhiteList) {
this.historyMbrMassEnterpriseWhiteList = historyMbrMassEnterpriseWhiteList;
}
public String getHistoryMbrMassOperWhiteList() {
return historyMbrMassOperWhiteList;
}
public void setHistoryMbrMassOperWhiteList(String historyMbrMassOperWhiteList) {
this.historyMbrMassOperWhiteList = historyMbrMassOperWhiteList;
}
}
......@@ -11,6 +11,7 @@ import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMapper;
import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper;
import com.gic.haoban.manage.service.entity.TabHaobanWxApplication;
......@@ -21,6 +22,7 @@ import com.gic.haoban.manage.service.pojo.bo.StaffPrivacyUseLogBO;
import com.gic.haoban.manage.service.service.*;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -28,9 +30,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
......@@ -53,6 +54,8 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
private TabHaobanWelcomeMapper welcomeMapper;
@Autowired
private StaffPrivacyUseLogService staffPrivacyUseLogService;
@Autowired
private Config config;
@Override
public void callbackReviceEnterprise(QywxCorpInfoSimpleDTO dto) {
......@@ -120,10 +123,46 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
}
@Override
public com.gic.api.base.commons.Page<YwWxEnterpriseDTO> list(BasePageInfo pageInfo, String keyword, List<String> enterpriseIds, Integer gicContactFlag, String version, List<String> enterpriseIdsNotIn) {
public com.gic.api.base.commons.Page<YwWxEnterpriseDTO> list(BasePageInfo pageInfo, String keyword, List<String> enterpriseIds, Integer gicContactFlag,
String version, List<String> enterpriseIdsNotIn, String loginUserId) {
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
Page<TabHaobanWxEnterprise> page = wxEnterpriseMapper.list(keyword, enterpriseIds, gicContactFlag, version, enterpriseIdsNotIn);
return PageUtil.changePageHelperToCurrentPage(page, YwWxEnterpriseDTO.class);
// 数据转换+白名单过滤
if (Objects.isNull(page) || CollectionUtils.isEmpty(page.getResult())) {
return new com.gic.api.base.commons.Page<>();
}
com.gic.api.base.commons.Page<YwWxEnterpriseDTO> resPage = PageUtil.changePageHelperToCurrentPage(page, YwWxEnterpriseDTO.class);
boolean matchOperId = matchOperId(loginUserId);
resPage.getResult().forEach(one -> {
if (matchWxEnterpriseIdWhiteList(one.getWxEnterpriseId()) && matchOperId) {
one.setOpenMassFlag(Boolean.TRUE);
} else {
one.setOpenMassFlag(Boolean.FALSE);
}
});
return resPage;
}
private boolean matchWxEnterpriseIdWhiteList(String wxEnterpriseId) {
// 匹配微信企业id白名单
String whiteList = config.getHistoryMbrMassEnterpriseWhiteList();
if (StringUtils.isEmpty(whiteList)) {
return false;
}
String[] idArr = whiteList.split(",");
Set<String> idSet = new HashSet<>(Arrays.asList(idArr));
return idSet.contains(wxEnterpriseId);
}
private boolean matchOperId(String loginUserId) {
// 匹配运营id白名单
String whiteList = config.getHistoryMbrMassOperWhiteList();
if (StringUtils.isEmpty(whiteList)) {
return false;
}
String[] idArr = whiteList.split(",");
Set<String> idSet = new HashSet<>(Arrays.asList(idArr));
return idSet.contains(loginUserId);
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment