Commit 0bfa23c1 by root

Merge branch 'bugfix-20231201' into test_branch

parents ca7ff48b b88c441b
......@@ -60,6 +60,16 @@ public class GroupChatPlanDTO implements Serializable {
// 是否发送全部
private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() {
return sendAllFlag;
......
......@@ -132,5 +132,7 @@ public interface TabHaobanStaffClerkRelationMapper {
*/
List<StaffClerkRelationDTO> listByWxEnterpriseIdAndStaffId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIdList") Set<String> staffIdList);
List<StaffClerkRelationDTO> listByStaffIdsForClerk(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIdList") Set<String> staffIdList);
List<String> listAllStaffIdByEnterpriseId(@Param("enterpriseId") String enterpriseId,@Param("wxEnterpriseId") String wxEnterpriseId);
}
\ No newline at end of file
......@@ -26,6 +26,11 @@ public interface GroupChatOwnerMapper {
public int updateChatCount(@Param("staffId") String staffId, @Param("chatCount") int chatCount);
public List<GroupChatOwnerDTO> listOwner(OwnerSearchQDTO qdto);
public List<GroupChatOwnerDTO> listOwnerPage(@Param("wxEnterpriseId")String wxEnterpriseId ,
@Param("departmentIdList") List<String> departmentIdList ,
@Param("searchParams") String searchParams ,
@Param("startItem") int startItem, @Param("pageSize") int pageSize);
public List<GroupChatOwnerDTO> listOwnerForStatistic(@Param("wxEnterpriseId")String wxEnterpriseId , @Param("startItem") int startItem,
@Param("pageSize") int pageSize);
......
......@@ -55,6 +55,16 @@ public class TabGroupChatPlan implements Serializable {
// 是否发送全部
private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() {
return sendAllFlag;
......
......@@ -55,6 +55,16 @@ public class GroupChatPlanBO implements Serializable{
private Integer materialFrom;
// 是否发送全部
private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() {
return sendAllFlag;
......
......@@ -93,6 +93,9 @@ public interface GroupChatService {
*/
public Page<GroupChatOwnerDTO> listOwnerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo);
public List<String> setDepartIdList(String wxEnterpriseId, String departmentId) ;
/**
*
* @Title: listOwnerHistory
......
......@@ -10,9 +10,11 @@ import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.chat.ChatContentDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatOwnerMapper;
import com.gic.haoban.manage.service.util.StreamUtils;
import com.gic.thirdparty.cloudfile.CloudFileUtil;
......@@ -113,6 +115,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private EnterpriseService enterpriseService;
@Autowired
private GroupChatOwnerMapper groupChatOwnerMapper ;
@Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper ;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
......@@ -282,6 +286,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
return retPage;
}
private List<String> filterNoClerk(String wxEnterpriseId,List<GroupChatOwnerDTO> list) {
Set<String> set = list.stream().map(o->o.getStaffId()).collect(Collectors.toSet());
List<StaffClerkRelationDTO> stafIdList = this.tabHaobanStaffClerkRelationMapper.listByStaffIdsForClerk(wxEnterpriseId,set) ;
if(CollectionUtils.isNotEmpty(stafIdList)) {
return stafIdList.stream().map(o->o.getStaffId()).collect(Collectors.toList());
}
return Collections.emptyList() ;
}
@Override
public void doPlan(Long planId) {
logger.info("开始群群发发送{}", planId);
......@@ -337,19 +350,37 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
int pageNum = 0;
List<TabGroupChatPlanOwnerLog> ownerList = null;
int sendAlFlag = plan.getSendAllFlag() ;
String allSearchParams = plan.getAllSearchParams() ;
// 发送全部群主
if(sendAlFlag==1) {
int ownerPageNo = 0;
int ownerPageSize = 500 ;
int totalCount = 0 ;
List<GroupChatOwnerDTO> list = null;
String searchParams = null ;
List<String> departmentIdList = null ;
if(StringUtils.isNotEmpty(allSearchParams)) {
JSONObject json = JSONObject.parseObject(allSearchParams) ;
searchParams = json.getString("searchParams") ;
String dpid = json.getString("departmentId") ;
if(StringUtils.isNotBlank(dpid)) {
departmentIdList = this.groupChatService.setDepartIdList(wxEnterpriseId,dpid) ;
}
if(StringUtils.isNotBlank(searchParams)) {
searchParams ="%" + searchParams.trim() + "%";
}
}
while (true) {
list = this.groupChatOwnerMapper.listOwnerForStatistic(wxEnterpriseId, ownerPageNo * ownerPageSize, ownerPageSize);
if(null != searchParams || null != departmentIdList) {
list = this.groupChatOwnerMapper.listOwnerPage(wxEnterpriseId, departmentIdList,searchParams,ownerPageNo * ownerPageSize, ownerPageSize);
}else {
list = this.groupChatOwnerMapper.listOwnerForStatistic(wxEnterpriseId, ownerPageNo * ownerPageSize, ownerPageSize);
}
if (CollectionUtils.isEmpty(list)) {
break;
}
logger.info("全部,群主数={},{}", wxEnterpriseId,list.size());
ownerPageNo++;
logger.info("全部,群主数={},{},过滤后={}", wxEnterpriseId,list.size());
String staffIds = list.stream().map(o->o.getStaffId()).collect(Collectors.joining(",")) ;
totalCount = totalCount + list.size() ;
this.groupChatPlanOwnerLogService.batchAdd(staffIds, plan);
......
......@@ -1075,7 +1075,8 @@ public class GroupChatServiceImpl implements GroupChatService {
return retPage;
}
private List<String> setDepartIdList(String wxEnterpriseId, String departmentId) {
@Override
public List<String> setDepartIdList(String wxEnterpriseId, String departmentId) {
List<String> departmentIdList = new ArrayList<>();
if (StringUtils.isNotBlank(departmentId)) {
TabHaobanDepartment department = this.departmentService.selectById(departmentId);
......
......@@ -1046,7 +1046,7 @@ public class StaffApiServiceImpl implements StaffApiService {
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO != null) {
Integer clerkType = clerkDTO.getClerkType();
if (clerkType == 1 || clerkType == 2) {
if (clerkType == 1 || clerkType == 2 || clerkType == 3) {
return true;
}
}
......
......@@ -10,5 +10,5 @@
<import resource="classpath:dubbo-setting-test.xml"/>
<import resource="classpath:jdbc-haoban-manage-service.xml" />
<import resource="classpath*:log-record-init.xml" />
<!-- <import resource="classpath*:kafka-setting-data.xml" />-->
<import resource="classpath*:kafka-setting-data.xml" />
</beans>
\ No newline at end of file
......@@ -453,6 +453,20 @@
</foreach>
</select>
<select id="listByStaffIdsForClerk" resultType="com.gic.haoban.manage.api.dto.StaffClerkRelationDTO">
select
staff_id staffId
from tab_haoban_staff_clerk_relation
WHERE
wx_enterprise_id = #{wxEnterpriseId}
AND status_flag = 1 and manage_flag <![CDATA[<>]]> 1
AND staff_id in
<foreach collection="staffIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<select id="listAllStaffIdByEnterpriseId" resultType="java.lang.String">
select a.staff_id
from tab_haoban_staff_clerk_relation a left join tab_haoban_staff b on b.staff_id = a.staff_id
......
......@@ -68,7 +68,7 @@
and b.staff_name like #{searchParams}
</if>
<if test="status==1">
and b.status_flag = 1
and b.status_flag = 1
</if>
<if test="status==2">
and b.status_flag = 0
......@@ -77,6 +77,32 @@
group by a.staff_id
</if>
</select>
<select id="listOwnerPage" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
select * from (
SELECT a.staff_id staffId , b.`staff_name` staffName , a.wx_enterprise_id wxEnterpriseId ,
b.wx_user_id wxUserId , b.wx_open_user_id wxOpenUserId
FROM tab_haoban_group_chat_owner a LEFT JOIN tab_haoban_staff b ON a.`staff_id` = b.`staff_id`
<if test="departmentIdList != null and departmentIdList.size() > 0">
left join tab_haoban_staff_department_related c on a.staff_id = c.staff_id and c.status_flag = 1
</if>
where a.wx_enterprise_id=#{wxEnterpriseId}
<if test="departmentIdList != null and departmentIdList.size() > 0">
and c.department_id IN
<foreach collection="departmentIdList" item="id" index="index" open="(" close=")" separator=",">
#{id,jdbcType=VARCHAR}
</foreach>
</if>
<if test="null != searchParams and ''!=searchParams ">
and b.staff_name like #{searchParams}
</if>
and b.status_flag = 1
<if test="departmentIdList != null and departmentIdList.size() > 0">
group by a.staff_id
</if>
) t limit ${startItem},${pageSize}
</select>
<select id="listOwnerForStatistic" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
SELECT a.staff_id staffId , a.wx_enterprise_id wxEnterpriseId ,
......
......@@ -29,6 +29,7 @@
<result column="send_flag" property="sendFlag" />
<result column="material_from" property="materialFrom" />
<result column="send_all_flag" property="sendAllFlag" />
<result column="all_search_params" property="allSearchParams" />
</resultMap>
<sql id="Base_Column_List">
plan_id,
......@@ -52,7 +53,7 @@
success_chat_count,
fail_chat_count ,
wx_enterprise_id , enterprise_id , send_flag ,
material_from , send_all_flag
material_from , send_all_flag , all_search_params
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert"
......@@ -79,7 +80,7 @@
send_count,
success_chat_count,
fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag,
material_from , send_all_flag
material_from , send_all_flag , all_search_params
)VALUES(
#{planId},
#{name},
......@@ -101,7 +102,7 @@
#{sendCount},
#{successChatCount},
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1,
#{materialFrom} , #{sendAllFlag}
#{materialFrom} , #{sendAllFlag} , #{allSearchParams}
)
]]>
</insert>
......@@ -145,7 +146,8 @@
end_time=#{endTime},
expire_days=#{expireDays},
material_from=#{materialFrom} ,
send_all_flag = #{sendAllFlag}
send_all_flag = #{sendAllFlag} ,
all_search_params = #{allSearchParams}
where plan_id = #{planId}
]]>
</update>
......
......@@ -170,15 +170,14 @@
<if test="null != searchParams">
and b.name like #{searchParams}
</if>
<if test="1==clerkTaskStatus">
and b.end_time > now()
</if>
<if test="2==clerkTaskStatus">
and b.end_time <![CDATA[<=]]> now()
</if>
group by b.plan_id
having notSendCount
order by b.end_time desc , a.create_time desc
<if test="1==clerkTaskStatus">
and b.end_time > now()
</if>
<if test="2==clerkTaskStatus">
and b.end_time <![CDATA[<=]]> now()
</if>
group by b.plan_id
order by b.end_time desc , a.create_time desc
</select>
<select id="listOwnerLogPageForWxa" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
......
......@@ -380,10 +380,15 @@ public class StaffController extends WebBaseController {
}
}
if(null != login.getSuperAdmin() && login.getSuperAdmin()==1 && manageFlag == 1) {
ClerkDTO superClerk = this.clerkService.getSuperAdminByEnterpriseId(enterpriseId) ;
if(superClerk.getPhoneNumber().contains(search)) {
ClerkDTO superClerk = this.clerkService.getSuperAdminByEnterpriseId(enterpriseId) ;
if(superClerk.getPhoneNumber().contains(search) || superClerk.getClerkCode().equals(search)) {
superClerk.setClerkName("超级管理员");
retList.add(EntityUtil.changeEntityByJSON(ClerkInfoVo.class, superClerk));
ClerkInfoVo superVO = EntityUtil.changeEntityByJSON(ClerkInfoVo.class, superClerk) ;
// 判断是否有有关联
if(CollectionUtils.isNotEmpty(staffClerkRelationApiService.listByClerkIds(Arrays.asList(superClerk.getClerkId())))) {
superVO.setRelationStatus(1);
}
retList.add(superVO);
}
}
return resultResponse(HaoBanErrCode.ERR_1, retList);
......@@ -559,20 +564,17 @@ public class StaffController extends WebBaseController {
}
mergeClerkInfo(voList, wxEnterpriseId);
String fileName = wxEnterpriseName + "通讯录" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATE_8);
List<String> titleList =Lists.newArrayList("姓名", "职务", "部门", "手机号", "关联状态", "关联导购");
List<String> fileList = Lists.newArrayList("staffName", "position", "departmentName", "phoneNumber", "relationFlag", "clerkName");
List<String> titleList =Lists.newArrayList("姓名", "职务", "部门", "手机号", "关联状态", "关联导购","成员明文userid");
List<String> fileList = Lists.newArrayList("staffName", "position", "departmentName", "phoneNumber", "relationFlag", "clerkName","wxUserId");
if (flag){
titleList.add("所属商户");
fileList.add("enterpriseName");
}
//针对未升级好办独立应用的企业,导出表格增加导出字段:成员明文userid、成员加密userid、许可状态、许可激活时间、许可到期时间
if(enterprise != null && enterprise.getWxSecurityType() != 5){
titleList.add("成员明文userid");
titleList.add("成员加密userid");
titleList.add("许可状态");
titleList.add("许可激活时间");
titleList.add("许可到期时间");
fileList.add("wxUserId");
fileList.add("wxOpenUseId");
fileList.add("status");
fileList.add("activeTime");
......
......@@ -509,13 +509,13 @@ public class TestController extends WebBaseController {
return "wu" ;
}
List<String> list = new ArrayList<>();
String url = dto.getUrlHost() ;
String url = dto.getUrlHost().split("#")[0] ;
String cop = dto.getWxCorpid() ;
SecretSettingDTO s = this.secretSettingApiService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.SELF_APP.getVal()) ;
String token = this.qywxCorpApiService.getToken(cop, s.getSecretVal()) ;
String ip = url.replace("http://", "").replace(":8960","").replace(":8990","") ;
String ip = dto.getUrlHost().split("#")[1] ;
String selfUrl = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token=" + token;
url = url+"/api-qywx-self/qywx/self-post?ip=" + ip + "&url="
+ URLEncoder.encode(selfUrl, "utf-8");
......
......@@ -63,6 +63,16 @@ public class GroupChatPlanVO implements Serializable{
// 是否发送全部
private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() {
return sendAllFlag;
......
......@@ -15,6 +15,7 @@ import java.util.stream.Collectors;
import javax.validation.Valid;
import com.gic.haoban.manage.web.qo.StaffAddVO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -361,6 +362,17 @@ public class WxStaffController extends WebBaseController {
return resultResponse(HaoBanErrCode.ERR_1, vo);
}
@RequestMapping("/staff-add-json")
public HaobanResponse staffAdd(@RequestBody StaffAddVO vo) {
logger.info(JSONObject.toJSONString(vo));
StaffDTO staffDTO = EntityUtil.changeEntityByJSON(StaffDTO.class,vo) ;
String storeId = vo.getStoreId() ;
String clerkCode = vo.getClerkCode() ;
String commitName = vo.getCommitName() ;
Integer version = vo.getVersion() ;
return this.staffAdd(staffDTO,storeId,clerkCode,commitName,version) ;
}
// 新增店员
@HttpLimit
@RequestMapping("/staff-add")
......
package com.gic.haoban.manage.web.qo;
import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
public class StaffAddVO implements Serializable {
/**
* 员工id
*/
private String staffId;
/**
* 企业微信id
*/
private String wxEnterpriseId;
/**
* 手机号
*/
private String phoneNumber;
/**
* 员工姓名
*/
private String staffName;
/**
* 国家码
*/
private String nationCode;
/**
* 昵称
*/
private String nickName;
/**
* 性别
*/
private Integer sex;
/**
* 职位
*/
private String postion;
private String clerkCode;
private int clerkType;
private String clerkId;
private String storeId ;
private String commitName ;
private Integer version ;
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public String getNationCode() {
return nationCode;
}
public void setNationCode(String nationCode) {
this.nationCode = nationCode;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getPostion() {
return postion;
}
public void setPostion(String postion) {
this.postion = postion;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public int getClerkType() {
return clerkType;
}
public void setClerkType(int clerkType) {
this.clerkType = clerkType;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getCommitName() {
return commitName;
}
public void setCommitName(String commitName) {
this.commitName = commitName;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
}
......@@ -37,7 +37,6 @@
<list>
<value>text/html;charset=UTF-8</value>
<value>application/x-www-form-urlencoded;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
......
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