Commit 860652c7 by 徐高华

Merge branch 'feature/xgh/240625上线' into 'master'

Feature/xgh/240625上线

See merge request !1956
parents 7377271d 04a86b91
......@@ -78,6 +78,27 @@ public class GroupChatDTO implements Serializable {
}
return clerkRelationExcel;
}
// 群主关联门店
private String ownerStoreCode ;
private String ownerStoreName ;
public String getOwnerStoreCode() {
return ownerStoreCode;
}
public void setOwnerStoreCode(String ownerStoreCode) {
this.ownerStoreCode = ownerStoreCode;
}
public String getOwnerStoreName() {
return ownerStoreName;
}
public void setOwnerStoreName(String ownerStoreName) {
this.ownerStoreName = ownerStoreName;
}
public void setClerkRelationExcel(String clerkRelationExcel) {
this.clerkRelationExcel = clerkRelationExcel;
}
......
......@@ -43,4 +43,6 @@ public interface TabHaobanClerkMainStoreRelatedMapper {
* @return
*/
TabHaobanClerkMainStoreRelated getLastNoStatusByStaffId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffId") String staffId);
List<TabHaobanClerkMainStoreRelated> listByStaffIdList(@Param("list") List<String> staffIdList) ;
}
\ No newline at end of file
......@@ -57,6 +57,6 @@ public interface TabHaobanWelcomeMediaMapper {
*/
List<TabHaobanWelcomeMedia> listByWelcomeId(@Param("welcomeId") String welcomeId);
int updateByMiniProgramId(@Param("mediaUrl") String mediaUrl,@Param("miniProgramId") String miniProgramId);
int updateByMiniProgramId(@Param("mediaId") String mediaId,@Param("miniProgramId") Long id);
}
......@@ -36,6 +36,9 @@ public class TabHaobanWelcomeMedia implements Serializable {
* 媒体文件路径,保存上传路径
*/
private String mediaUrl;
private String mediaId ;
private Date mediaTime ;
/**
* 小程序页面路径
*/
......@@ -61,6 +64,21 @@ public class TabHaobanWelcomeMedia implements Serializable {
*/
private Integer deleteFlag;
public Date getMediaTime() {
return mediaTime;
}
public void setMediaTime(Date mediaTime) {
this.mediaTime = mediaTime;
}
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public Long getWelcomeMediaId() {
return welcomeMediaId;
......
package com.gic.haoban.manage.service.pojo.bo.welcome;
import java.util.Date;
/**
* desc:保存欢迎语媒体bo
*
......@@ -15,6 +17,9 @@ public class SaveWelcomeMediaBO {
* 媒体路径
*/
private String mediaUrl;
private String mediaId ;
private Date mediaTime ;
/**
* 小程序页面路径
*/
......@@ -33,6 +38,22 @@ public class SaveWelcomeMediaBO {
*/
private String miniprogramSettingId;
public Date getMediaTime() {
return mediaTime;
}
public void setMediaTime(Date mediaTime) {
this.mediaTime = mediaTime;
}
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public String getMediaTitle() {
return mediaTitle;
}
......
package com.gic.haoban.manage.service.pojo.bo.welcome;
import java.util.Date;
/**
* desc:欢迎语媒体bo
*
......@@ -36,6 +38,8 @@ public class WelcomeMediaBO {
* 媒体文件路径,保存上传路径
*/
private String mediaUrl;
private String mediaId ;
private Date mediaTime ;
/**
* 小程序页面路径
*/
......@@ -49,6 +53,22 @@ public class WelcomeMediaBO {
*/
private String miniprogramSettingId;
public String getMediaId() {
return mediaId;
}
public void setMediaId(String mediaId) {
this.mediaId = mediaId;
}
public Date getMediaTime() {
return mediaTime;
}
public void setMediaTime(Date mediaTime) {
this.mediaTime = mediaTime;
}
public Long getWelcomeMediaId() {
return welcomeMediaId;
}
......
package com.gic.haoban.manage.service.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMediaMapper;
import com.gic.haoban.manage.service.entity.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -33,10 +37,6 @@ import com.gic.haoban.manage.api.service.hm.HmClerkRelationApiService;
import com.gic.haoban.manage.api.service.hm.HmQrcodeApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.gic.haoban.manage.service.entity.TabMiniprogramSetting;
import com.gic.haoban.manage.service.pojo.bo.hm.KeyDataLinkBO;
import com.gic.haoban.manage.service.pojo.bo.welcome.WelcomeDetailBO;
import com.gic.haoban.manage.service.pojo.bo.welcome.WelcomeMediaBO;
......@@ -96,6 +96,8 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
private HmClerkRelationApiService hmClerkRelationApiService;
@Autowired
private StaffMapper staffMapper;
@Autowired
private TabHaobanWelcomeMediaMapper welcomeMediaMapper ;
private static GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
......@@ -316,14 +318,38 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
String wxEnterpriseId) {
log.info("发送小程序:wxEnterpriseId:{}", wxEnterpriseId);
String miniprogramSettingId = media.getMiniprogramSettingId();
String mediaId = null ;
Long welcomeMediaId = media.getWelcomeMediaId() ;
TabHaobanWelcomeMedia wxa = this.welcomeMediaMapper.queryById(welcomeMediaId) ;
if(StringUtils.isNotBlank(wxa.getMediaId()) && null != wxa.getMediaTime()) {
Date date = new Date();
Date compareDate = DateUtils.addDays(date, -3);
if (wxa.getMediaTime().after(compareDate)) {
mediaId = wxa.getMediaId() ;
}else {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxa.getWxEnterpriseId()) ;
boolean selfFlag = qwDTO.isSelf() ;
JSONResponse jp = qywxSuiteApiService.uploadMedia(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), wxa.getMediaUrl(), "image", QywxMediaTypeEnum.IMAGE.getCode(),selfFlag,qwDTO.getUrlHost());
if (jp.getErrorCode() == 0) {
mediaId = jp.getResult().toString() ;
this.welcomeMediaMapper.updateByMiniProgramId(mediaId,welcomeMediaId);
} else {
throw new RuntimeException("处理素材异常");
}
}
}
TabMiniprogramSetting miniprogramSetting = miniprogramSettingService.getById(miniprogramSettingId);
if (Objects.isNull(miniprogramSetting) || miniprogramSetting.getStatusFlag() == 0) {
log.info("小程序不存在或已被删除, miniprogramSettingId:{}", miniprogramSettingId);
return;
}else {
if(null == mediaId) {
mediaId = miniprogramSetting.getMediaId();
}
}
QywxMiniprogramExternalBaseDTO messageBaseDTO = new QywxMiniprogramExternalBaseDTO();
messageBaseDTO.setAppid(miniprogramSetting.getAppId());
messageBaseDTO.setPicMediaId(miniprogramSetting.getMediaId());
messageBaseDTO.setPicMediaId(mediaId);
messageBaseDTO.setTitle(miniprogramSetting.getTitle());
messageBaseDTO.setPage(media.getMiniProgramPage());
attachments.add(messageBaseDTO);
......
package com.gic.haoban.manage.service.service.impl;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.welcome.dto.WelcomeRemoveCheckDTO;
import com.gic.haoban.manage.api.dto.welcome.qdto.QueryWelcomeQDTO;
import com.gic.haoban.manage.api.enums.FriendSettingTypeEnum;
......@@ -41,9 +43,12 @@ import com.gic.haoban.manage.service.pojo.qo.WelcomeInfoQO;
import com.gic.haoban.manage.service.pojo.qo.WelcomeRelationQO;
import com.gic.haoban.manage.service.service.WelcomeService;
import com.gic.haoban.manage.service.service.WelcomeSuitRangService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.hm.HmLinkService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeService;
import com.gic.haoban.manage.service.service.hm.WelcomeRelationService;
import com.gic.wechat.api.enums.QywxMediaTypeEnum;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -92,6 +97,10 @@ public class WelcomeServiceImpl implements WelcomeService {
private HmLinkService linkService;
@Autowired
private HmQrcodeService qrcodeService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService ;
@Autowired
private WxEnterpriseService wxEnterpriseService ;
private static final int WELCOME_LIMIT = 100;
private static final int DEPARTMENT_NUM_LIMIT = 10000;
private static final int STAFF_NUM_LIMIT = 2000;
......@@ -225,6 +234,9 @@ public class WelcomeServiceImpl implements WelcomeService {
if (CollectionUtils.isEmpty(bo.getWelcomeMediaList())) {
return;
}
String wxEnterpriseId = bo.getWxEnterpriseId() ;
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
boolean selfFlag = qwDTO.isSelf() ;
List<TabHaobanWelcomeMedia> mediaList = bo.getWelcomeMediaList().stream().map(one -> {
TabHaobanWelcomeMedia media = new TabHaobanWelcomeMedia();
media.setWelcomeMediaId(UniqueIdUtils.uniqueLong());
......@@ -232,12 +244,21 @@ public class WelcomeServiceImpl implements WelcomeService {
media.setWelcomeId(welComeId);
media.setMediaTitle(StringUtils.isEmpty(one.getMediaTitle()) ? "-1" : one.getMediaTitle());
media.setMediaType(one.getMediaType());
media.setMediaUrl(StringUtils.isEmpty(one.getMediaUrl()) ? "-1" : one.getMediaUrl());
media.setMediaUrl(one.getMediaUrl());
media.setMiniProgramPage(StringUtils.isEmpty(one.getMiniProgramPage()) ? "-1" : one.getMiniProgramPage());
media.setMediaSize(one.getMediaSize());
media.setMiniProgramId(one.getMiniprogramSettingId());
media.setCreateTime(new Date());
media.setDeleteFlag(0);
if(5 == media.getMediaType() && StringUtils.isNotBlank(media.getMediaUrl())) {
JSONResponse jp = qywxSuiteApiService.uploadMedia(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), media.getMediaUrl(), "image", QywxMediaTypeEnum.IMAGE.getCode(),selfFlag,qwDTO.getUrlHost());
if (jp.getErrorCode() == 0) {
media.setMediaId(jp.getResult().toString());
media.setMediaTime(new Date());
} else {
throw new RuntimeException("处理图片异常");
}
}
return media;
}).collect(Collectors.toList());
// 批量新增
......@@ -364,7 +385,9 @@ public class WelcomeServiceImpl implements WelcomeService {
if (Objects.nonNull(miniprogram)) {
one.setMediaTitle(miniprogram.getTitle());
one.setMiniProgramName(miniprogram.getMiniprogramName());
one.setMediaUrl(miniprogram.getImageUrl());
if(null == one.getMediaUrl() || StringUtils.isBlank(one.getMediaId())) {
one.setMediaUrl(miniprogram.getImageUrl());
}
}
}
// 带参小程序
......@@ -619,6 +642,11 @@ public class WelcomeServiceImpl implements WelcomeService {
bo.setMiniProgramPage(one.getMiniProgramPage());
bo.setMediaSize(one.getMediaSize());
bo.setMiniprogramSettingId(one.getMiniProgramId());
bo.setMediaId(one.getMediaId());
bo.setMediaTime(one.getMediaTime());
if(StringUtils.isBlank(one.getMediaId())) {
bo.setMediaUrl(null);
}
return bo;
}).collect(Collectors.toList());
}
......
......@@ -91,7 +91,7 @@ public class MiniprogramSettingServiceImpl implements MiniprogramSettingService
tabMiniprogramSettingMapper.updateByPrimaryKeySelective(miniprogramSetting);
//判断是否需要更新欢迎语里面冗余小程序的封面
if(null!=miniprogramSetting.getRenewWelcome() && miniprogramSetting.getRenewWelcome()==1){
tabHaobanWelcomeMediaMapper.updateByMiniProgramId(miniprogramSetting.getImageUrl(),miniprogramSetting.getMiniprogramSettingId());
// tabHaobanWelcomeMediaMapper.updateByMiniProgramId(miniprogramSetting.getImageUrl(),miniprogramSetting.getMiniprogramSettingId());
}
}
}
......
......@@ -8,6 +8,10 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanClerkMainStoreRelatedMapper;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -61,6 +65,10 @@ public class GroupChatApiServiceImpl implements GroupChatApiService {
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private WxEnterpriseService wxEnterpriseService ;
@Autowired
private TabHaobanClerkMainStoreRelatedMapper clerkMainStoreRelatedMapper ;
@Autowired
private StoreService storeService ;
@Override
public ServiceResponse<Page<GroupChatDTO>> listPage(GroupChatSearchQDTO qdto, BasePageInfo basePageInfo) {
......@@ -97,16 +105,36 @@ public class GroupChatApiServiceImpl implements GroupChatApiService {
one.setOwnerAddFlag(ownerAddFlag);
});
// 处理关联关系
boolean needClerkReltaion = (qdto.getStatus() == 0);
if (needClerkReltaion) {
List<String> staffIdList = dtoList.stream().filter(dto -> StringUtils.isNotBlank(dto.getStaffId()))
.map(dto -> dto.getStaffId()).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(staffIdList)) {
List<String> relationIdList = this.staffClerkRelationService
.listRelationsStaffId(new HashSet<>(staffIdList));
dtoList.forEach(one -> {
one.setClerkRelationFlag(relationIdList.contains(one.getStaffId()) ? 1 : 0);
});
List<String> staffIdList = dtoList.stream().filter(dto -> StringUtils.isNotBlank(dto.getStaffId()))
.map(dto -> dto.getStaffId()).collect(Collectors.toList());
List<String> relationStaffIdList = null ;
if (CollectionUtils.isNotEmpty(staffIdList)) {
relationStaffIdList = this.staffClerkRelationService.listRelationsStaffId(new HashSet<>(staffIdList));
for (GroupChatDTO one : dtoList) {
one.setClerkRelationFlag(relationStaffIdList.contains(one.getStaffId()) ? 1 : 0);
}
if(CollectionUtils.isNotEmpty(relationStaffIdList)) {
List<TabHaobanClerkMainStoreRelated> storeRelationList = this.clerkMainStoreRelatedMapper.listByStaffIdList(relationStaffIdList);
if(CollectionUtils.isNotEmpty(storeRelationList)) {
List<String> storeIdList = storeRelationList.stream().map(o->o.getStoreId()).collect(Collectors.toSet()).stream().collect(Collectors.toList());
String[] arr = storeIdList.toArray(new String[storeIdList.size()]) ;
List<StoreDTO> storeList = this.storeService.getStores(arr) ;
if(CollectionUtils.isNotEmpty(storeList)) {
Map<String,String> staffMap = storeRelationList.stream().collect(Collectors.toMap(TabHaobanClerkMainStoreRelated::getStaffId,TabHaobanClerkMainStoreRelated::getStoreId,(k1,k2)->k1)) ;
Map<String,StoreDTO> storeMap = storeList.stream().collect(Collectors.toMap(StoreDTO::getStoreId,o->o,(k1,k2)->k1)) ;
for (GroupChatDTO one : dtoList) {
String staffId = one.getStaffId() ;
String storeId = staffMap.get(staffId) ;
if(StringUtils.isNotBlank(storeId)) {
StoreDTO store = storeMap.get(storeId) ;
if(null != store) {
one.setOwnerStoreCode(store.getStoreCode());
one.setOwnerStoreName(store.getStoreName());
}
}
}
}
}
}
}
// 原群主
......
......@@ -122,4 +122,15 @@
and staff_id = #{staffId}
order by create_time desc limit 1
</select>
<select id="listByStaffIdList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_clerk_main_store_related
where staff_id in
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
and status_flag = 1
</select>
</mapper>
\ No newline at end of file
......@@ -15,6 +15,8 @@
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
<result property="mediaId" column="media_id" />
<result property="mediaTime" column="media_time" />
</resultMap>
<!--查询单个-->
......@@ -30,7 +32,7 @@
mini_program_id,
create_time,
update_time,
delete_flag
delete_flag , media_id , media_time
from tab_haoban_welcome_media
where welcome_media_id = #{welcomeMediaId}
</select>
......@@ -47,7 +49,7 @@
mini_program_id,
create_time,
update_time,
delete_flag
delete_flag , media_id , media_time
from tab_haoban_welcome_media
where welcome_id = #{welcomeId} and delete_flag = 0
</select>
......@@ -66,7 +68,7 @@
mini_program_id,
create_time,
update_time,
delete_flag)
delete_flag , media_id , media_time)
values (#{welcomeMediaId},
#{wxEnterpriseId},
#{welcomeId},
......@@ -78,7 +80,7 @@
#{miniProgramId},
#{createTime},
#{updateTime},
#{deleteFlag})
#{deleteFlag} , #{mediaId} , #{mediaTime})
</insert>
<!--通过主键修改数据-->
......@@ -124,8 +126,8 @@
<update id="updateByMiniProgramId">
update tab_haoban_welcome_media
set media_url = #{mediaUrl}
where mini_program_id = #{miniProgramId} and media_type = 5
set media_id = #{mediaId} , media_time = now()
where welcome_media_id = #{miniProgramId}
</update>
</mapper>
......@@ -318,8 +318,8 @@ public class GroupChatController {
ServiceResponse<Page<GroupChatDTO>> page = this.groupChatApiService.listPage(qdto, basePageInfo);
if (page.isSuccess() && CollUtil.isNotEmpty(page.getResult().getResult())){
String fileName = "客户群列表数据";
List<String> titleList = Arrays.asList("客户群ID", "客户群名称", "群人数", "群客户数", "新增总数", "流失总数","群主","群主在好办小程序关联状态","创建时间");
List<String> fileList = Arrays.asList("groupChatId", "name", "totalCount", "totalMemberCount", "addCount", "quitCount", "staffName", "clerkRelationExcel", "createTime");
List<String> titleList = Arrays.asList("客户群ID", "客户群名称", "群人数", "群客户数", "新增总数", "流失总数","群主","群主在好办小程序关联状态","门店名称","门店code","创建时间");
List<String> fileList = Arrays.asList("groupChatId", "name", "totalCount", "totalMemberCount", "addCount", "quitCount", "staffName", "clerkRelationExcel", "ownerStoreName","ownerStoreCode", "createTime");
try {
ExcelUtils.xls(response, request, fileName, page.getResult().getResult(), fileList, titleList);
} catch (Exception e) {
......
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