Commit 2ee402c6 by 王祖波

Merge remote-tracking branch 'origin/developer' into developer

parents b269a703 a11a1b7a
package com.gic.haoban.manage.api;
import java.io.Serializable;
import java.util.Date;
/**
* 会员和导购加的好友列表
......@@ -10,10 +11,34 @@ public class ExternalUserClerkDTO implements Serializable {
private String memberId ;
private String clerkId ;
private String storeId ;
// 企微加好友时间
private Date addTime ;
// 好友删成员时间
private Date halfDelTime ;
// 外部联系人ID状态1正常, 3单向好友
private Integer externalStatus ;
public void setExternalStatus(Integer externalStatus) {
this.externalStatus = externalStatus;
}
public Date getAddTime() {
return addTime;
}
public void setAddTime(Date addTime) {
this.addTime = addTime;
}
public Date getHalfDelTime() {
return halfDelTime;
}
public void setHalfDelTime(Date halfDelTime) {
this.halfDelTime = halfDelTime;
}
public Integer getExternalStatus() {
if(null == externalStatus) {
return 1;
......@@ -24,10 +49,6 @@ public class ExternalUserClerkDTO implements Serializable {
return externalStatus;
}
public void setExternalStatus(Integer externalStatus) {
this.externalStatus = externalStatus;
}
public String getMemberId() {
return memberId;
}
......
......@@ -8,7 +8,7 @@ public class CommonMQDTO implements Serializable {
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
*/
private static final long serialVersionUID = -5681421708810402425L;
// 1删除日报定时 2无部门成员修复 3 通知会员好友关系 4社群终止
// 1删除日报定时 2无部门成员修复 3 通知会员好友关系 4社群终止 5 刷新社群群发结果
private int type;
private Object params;
......
......@@ -80,7 +80,7 @@ public class WxEnterpriseQwDTO implements Serializable {
}
public boolean isSelf() {
return this.wxSecurityType == 5 ;
return this.wxSecurityType == 5 || this.wxSecurityType == 6;
}
public int getWxSecurityType() {
......
......@@ -18,6 +18,17 @@ public class ChatEventDTO implements Serializable {
private String corpid;
// 是否自建应用的回调
private int selfCallback = 0 ;
// 用于判断是否代开发应用的回调
private String suiteId;
public String getSuiteId() {
return suiteId;
}
public void setSuiteId(String suiteId) {
this.suiteId = suiteId;
}
public int getSelfCallback() {
return selfCallback;
}
......
package com.gic.haoban.manage.api.dto.hm;
import java.io.Serializable;
public class ClerkQrcodeDTO implements Serializable {
private String clerkId ;
private String qwQrcode ;
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getQwQrcode() {
return qwQrcode;
}
public void setQwQrcode(String qwQrcode) {
this.qwQrcode = qwQrcode;
}
}
......@@ -4,10 +4,7 @@ import java.util.List;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.manage.api.dto.hm.HmBatchCountDTO;
import com.gic.haoban.manage.api.dto.hm.HmBatchModifyResultDTO;
import com.gic.haoban.manage.api.dto.hm.HmQrcodeDTO;
import com.gic.haoban.manage.api.dto.hm.HmQrcodeStoreDTO;
import com.gic.haoban.manage.api.dto.hm.*;
import com.gic.haoban.manage.api.dto.qdto.hm.HmBatchModifyQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeQDTO;
......@@ -197,4 +194,6 @@ public interface HmQrcodeApiService {
ServiceResponse<HmBatchCountDTO> getModifyResult(String wxEnterpriseId , String taskId) ;
List<ClerkQrcodeDTO> listClerkQrcode(String enterpriseId, List<String> clerkIdList);
}
......@@ -93,7 +93,7 @@ public class RewardSender {
}
public RewardReturnBO sendGrowth(String enterpriseId, String memberId, Integer growthValue, String remark, String relationId, String oRelationId) throws BusinessException {
String ruleCode = GrowthRuleEnum.INVITE_ACTIVITY.getRuleCode();
String ruleCode = GrowthRuleEnum.PLAY_GAME.getRuleCode();
MemberGrowthChangeValueReq req = new MemberGrowthChangeValueReq();
req.setEnterpriseId(enterpriseId);
req.setMemberId(memberId);
......
......@@ -43,7 +43,7 @@ public interface DepartmentMapper {
// List<TabHaobanDepartment> listStoreByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
TabHaobanDepartment getRootByEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
List<TabHaobanDepartment> getRootByEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
Page<TabHaobanDepartment> pageFullStoreByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId,@Param("search")String search,@Param("storeIds")List<String> storeIds,@Param("minCount")int minCount);
......
package com.gic.haoban.manage.service.dao.mapper.hm;
import com.gic.haoban.manage.api.dto.hm.ClerkQrcodeDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
import com.gic.haoban.manage.service.entity.hm.TabHaobanHmQrcode;
import com.gic.haoban.manage.service.pojo.bo.hm.HmQrcodeClerkBO;
......@@ -206,6 +207,14 @@ public interface TabHaobanHmQrcodeMapper {
* 返回已有单人活码的clerkId
*/
List<String> listHasQrcodeClerk(@Param("enterpriseId") String enterpriseId, @Param("clerkIdList") List<String> clerkIdList);
/**
* 导购活码
* @param enterpriseId
* @param clerkIdList
* @return
*/
List<ClerkQrcodeDTO> listClerkQrcode(@Param("enterpriseId") String enterpriseId, @Param("clerkIdList") List<String> clerkIdList) ;
/**
* 获取导购单人活码
......
......@@ -12,19 +12,19 @@ import java.util.Set;
*/
public class QywxSyncTagFormatPojo implements Serializable {
/**
* 企业微信与gic标签项对应map
* 企业微信标签值ID -> gic标签值ID
*/
private Map<String, String> qywxToGicTagItemIdMap;
/**
* gic与企业微信标签项对应map
* gic标签值ID -> 企业微信标签值ID
*/
private Map<String, String> gicToQywxTagItemIdMap;
/**
* 商户对应的企业微信标签列表
* gic企业ID -> 企业微信标签值ID LIST
*/
private Map<String, Set<String>> entQywxTagKeysMap;
/**
* 商户对应的gic标签列表
* gic企业ID -> gic标签值ID LIST
*/
private Map<String, Set<String>> entGicTagItemIdMap;
......
......@@ -49,6 +49,10 @@ public class MemberOrderBo implements Serializable {
*/
private Integer times;
/**
* 订单类型
*/
private Integer orderType;
public Integer getOrderStatus() {
return orderStatus;
......@@ -121,4 +125,12 @@ public class MemberOrderBo implements Serializable {
public void setTimes(Integer times) {
this.times = times;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
}
......@@ -518,7 +518,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
public void doPlanSendInfo(Long ownerLogId) {
logger.info("开始群群发统计{}", ownerLogId);
TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(ownerLogId);
if (ownerLog.getSendStatus() == 2) {
if (ownerLog.getSendStatus() == 2 && null != ownerLog.getSendTime() && ownerLog.getSendTime().getTime() < System.currentTimeMillis()+1000*60*60) {
logger.info("已统计过");
return;
}
......@@ -816,6 +816,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
String wxEnterpriseId = dto.getWxEnterpriseId();
String msgid = dto.getMsgid();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
if(null == qwDTO) {
return;
}
String secret = config.getWxSuiteid();
if (qwDTO.isSelf()) {
secret = qwDTO.getSelfSecret();
......@@ -852,6 +855,12 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
if(null != msgid) {
logger.info("获取msgid={},{}",ownerLogId,msgid);
this.groupChatPlanOwnerLogMapper.updateMsgid(ownerLogId,msgid);
CommonMQDTO mq = new CommonMQDTO() ;
mq.setType(5) ;
Map<String,String> map = new HashMap<>() ;
map.put("ownerLogId",ownerLogId+"") ;
mq.setParams(map);
this.haobanCommonMQApiService.putCommonDelayMessage(mq, 60);
}
}catch (Exception e) {
logger.info("异常",e);
......
......@@ -1014,17 +1014,16 @@ public class GroupChatServiceImpl implements GroupChatService {
public void notice(String enterpriseId,String memberId , int addOrQuit) {
logger.info("会员群发退群通知={}",memberId,addOrQuit);
logger.info("会员群入群通知={},{}",memberId,addOrQuit,addOrQuit);
if(StringUtils.isBlank(enterpriseId) || StringUtils.isBlank(memberId)) {
return;
}
JSONObject json = new JSONObject() ;
GroupChatUserNoticeDTO dto = new GroupChatUserNoticeDTO() ;
dto.setEnterpriseId(enterpriseId);
dto.setMemberId(memberId);
dto.setAddOrQuit(addOrQuit);
try {
mqClient.sendMessage("qywxAddGroupChatEvent", json.toJSONString());
mqClient.sendMessage("qywxAddGroupChatEvent",JSONObject.toJSONString(dto));
} catch (Exception e) {
throw new RuntimeException(e);
}
......
package com.gic.haoban.manage.service.service.hm;
import com.gic.haoban.manage.api.dto.hm.ClerkQrcodeDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeQDTO;
import com.gic.haoban.manage.service.pojo.bo.hm.HmQrcodeBO;
......@@ -173,6 +174,8 @@ public interface HmQrcodeService {
List<String> listHasQrcodeClerk(String enterpriseId, List<String> clerkIdList);
List<ClerkQrcodeDTO> listClerkQrcode(String enterpriseId, List<String> clerkIdList);
/**
* 更新导购名称
*
......
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.service.hm.impl;
import java.util.Date;
import java.util.List;
import com.gic.haoban.manage.api.dto.hm.ClerkQrcodeDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -191,6 +192,11 @@ public class HmQrcodeServiceImpl implements HmQrcodeService {
}
@Override
public List<ClerkQrcodeDTO> listClerkQrcode(String enterpriseId, List<String> clerkIdList) {
return this.tabHaobanHmQrcodeMapper.listClerkQrcode(enterpriseId,clerkIdList);
}
@Override
public void updateClerkNameByClerkId(String enterpriseId, String clerkId, String clerkName, String clerkCode) {
tabHaobanHmQrcodeMapper.updateClerkNameByClerkId(enterpriseId, clerkId, clerkName, clerkCode);
tabHaobanHmClerkRelationMapper.updateClerkNameByClerkId(enterpriseId, clerkId, clerkName, clerkCode);
......
......@@ -233,8 +233,11 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override
public DepartmentDTO getRootByEnterpriseId(String wxEnterpriseId) {
TabHaobanDepartment tab = mapper.getRootByEnterpriseId(wxEnterpriseId);
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tab);
List<TabHaobanDepartment> tabList = mapper.getRootByEnterpriseId(wxEnterpriseId);
if(CollectionUtils.isEmpty(tabList) || tabList.size()>1) {
return null ;
}
return EntityUtil.changeEntityByJSON(DepartmentDTO.class, tabList.get(0));
}
@Override
......
......@@ -186,7 +186,7 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
wxUserAddLogService.save(wxUserAddLogQDTO);
//定制
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0);
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0,related.getExternalUserId());
}
/**
......@@ -198,7 +198,22 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
* @param memberId
* @param storeId
*/
private void addDelFriendEvent(String unionId, String clerkId, String wxEnterpriseId, String enterpriseId, String memberId, String storeId, Integer changeType) {
private void addDelFriendEvent(String unionId, String clerkId, String wxEnterpriseId, String enterpriseId, String memberId, String storeId, Integer changeType , String externalUserid) {
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
if(StringUtils.isNotBlank(memberId)) {
logger.info("加好友、删好友通知={}",memberId);
JSONObject json = new JSONObject() ;
json.put("enterpriseId",enterpriseId) ;
json.put("clerkId",clerkId) ;
json.put("memberId",memberId) ;
json.put("externalUserid",externalUserid) ;
json.put("changeType",changeType);
try {
clientInstance.sendMessage("qywxAddFriendEvent", json.toJSONString());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
String addDelFriendEvent = config.getAddDelFriendEvent();
if (!addDelFriendEvent.contains(wxEnterpriseId)) {
logger.info("非定制,无需广播通知");
......@@ -218,7 +233,6 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
logger.info("会员不存在:{}", memberId);
return;
}
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
JSONObject msgBody = new JSONObject();
msgBody.put("cardNo", member.getCardNum());
......
......@@ -77,7 +77,7 @@ public class SecretSettingServiceImpl implements SecretSettingService {
return null;
}
// 如果是纯自建,使用自建的token
if(qwDTO.isSelf()) {
if(qwDTO.isSelf() && StringUtils.isNotBlank(qwDTO.getUrlHost())) {
secretType = SecretTypeEnum.SELF_APP.getVal() ;
}
TabSecretSetting secretSetting = secretSettingMapper.getSecretSetting(wxEnterpriseId, secretType, null);
......
......@@ -198,8 +198,12 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
TabHaobanClerkMainStoreRelated mainStore = this.clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, wxEnterpriseId, storeIdList) ;
String newStoreId = mainStore.getStoreId() ;
StaffClerkRelationDTO mainClerk = this.getOneBindByStoreId(staffId, newStoreId) ;
newClerkId = mainClerk.getClerkId() ;
logger.info("查询到成员的主门店导购={},{}",staffId,newClerkId);
if(null != mainClerk) {
newClerkId = mainClerk.getClerkId();
logger.info("查询到成员的主门店导购={},{}", staffId, newClerkId);
}else {
logger.info("未匹配到导购={},{}",staffId,newStoreId);
}
}
}else {
if(multipleFlag) {
......
......@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map;
import cn.hutool.core.collection.CollUtil;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -52,6 +53,16 @@ public class WxEnterpriseServiceImpl implements WxEnterpriseService {
@Override
public String add(WxEnterpriseDTO wxDTO) {
String wxCorpid = wxDTO.getWxCorpid() ;
if(StringUtils.isBlank(wxCorpid)) {
wxCorpid = wxDTO.getOpenCorpid() ;
}
String key = "wxEnterpriseId:"+wxCorpid ;
RedisUtil.lock(key,3L);
TabHaobanWxEnterprise en = this.getEnterpriseBycorpId(wxCorpid);
if(null != en) {
return en.getWxEnterpriseId() ;
}
logger.info("新增wx_enterprise,dto={}",JSON.toJSONString(wxDTO));
Date now = new Date();
wxDTO.setWxEnterpriseId(StringUtil.randomUUID());
......@@ -61,6 +72,7 @@ public class WxEnterpriseServiceImpl implements WxEnterpriseService {
tabHaobanWxEnterprise.setStatusFlag(1);
tabHaobanWxEnterprise.setBindFlag(1);
mapper.insertSelective(tabHaobanWxEnterprise);
RedisUtil.unlock(key);
return wxDTO.getWxEnterpriseId();
}
......@@ -119,8 +131,22 @@ public class WxEnterpriseServiceImpl implements WxEnterpriseService {
}
qw.setSelfAppid(wxEnterprise.getWxaAppid());
}
qw.setHbWxaAppid(this.getHbAppid(qw, config.getAppid()));
qw.setSelf3thSecret(this.getSecret(qw, config.getWxSuiteid()));
// 只使用代开发(用于从自建转代开发)
if(qw.getWxSecurityType()==6) {
qw.setUrlHost(null);
qw.setDkCorpid(wxEnterprise.getWxCorpid());
qw.setThirdCorpid(wxEnterprise.getWxCorpid());
qw.setMemberCorpid(wxEnterprise.getWxCorpid());
TabSecretSetting secret = secretSettingMapper.getSecretSetting(wxEnterpriseId, SecretTypeEnum.CUSTOMIZED_APP.getVal(), null);
qw.setSelfSecret(secret.getSecretVal());
qw.setSelf3thSecret(secret.getSecretVal());
qw.setSelfAppid(wxEnterprise.getWxaAppid());
TabHaobanWxApplication app = this.wxApplicationMapper.selectByWxEnterpriseIdAndApplicationType(wxEnterpriseId,3) ;
qw.setAgentId(app.getAgentId());
qw.setAgentName(app.getAgentName());
}
qw.setHbWxaAppid(this.getHbAppid(qw, config.getAppid()));
logger.info("企微所有corpid信息={}",JSON.toJSON(qw));
return qw;
}
......
......@@ -39,6 +39,7 @@ import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.haoban.task.manage.api.service.IMarketTaskMemberApiService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.MemberSourceDetailDTO;
import com.gic.member.api.dto.MemberSourceShowDTO;
......@@ -106,6 +107,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired
private StaffClerkRelationService staffClerkRelationService ;
@Autowired
private IMarketTaskMemberApiService iMarketTaskMemberApiService ;
/**
* 查询会员在企业下的好友关系
......@@ -423,6 +426,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
if(type==0) {
log.info("删除会员,memberId:{}", memberId);
this.tabHaobanExternalClerkRelatedMapper.updateStatusByMemberId(memberId, enterpriseId);
this.iMarketTaskMemberApiService.memberEvent(0,enterpriseId,memberId,null);
}else if(type==1) {
//合并会员,会员会先调删除,在调合并。顺序不能调换
log.info("合并会员,memberId:{},新memberId={}", memberId , mergeMemberId);
......@@ -432,6 +436,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
log.info("会员合并 ,更新为企微好友,新memberId:{}", mergeMemberId);
this.memberApiService.updateMemberQywxFlag(enterpriseId, mergeMemberId, 1);
this.staffClerkRelationService.addMemberQywxFlag(enterpriseId,memberId);
this.iMarketTaskMemberApiService.memberEvent(1,enterpriseId,memberId,mergeMemberId);
}
}else if(type==2) {
int m1 = this.tabHaobanExternalClerkRelatedMapper.countByMemberId(memberId, enterpriseId) ;
......@@ -839,6 +844,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
dto.setStoreId(o.getStoreId());
dto.setMemberId(memberId);
dto.setExternalStatus(o.getExternalStatus());
dto.setHalfDelTime(o.getHalfDelTime());
dto.setAddTime(new Date(o.getAddTime()*1000));
return dto ;
}).collect(Collectors.toList());
log.info("好友={}",JSONObject.toJSONString(retList));
......
......@@ -144,6 +144,10 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
Long planId = Long.valueOf(map.get("planId")) ;
this.groupChatPlanService.stopByMsgid(planId);
break ;
case 5 :
Long ownerLogId = Long.valueOf(map.get("ownerLogId")) ;
this.groupChatPlanService.doPlanSendInfo(ownerLogId);
break;
default:
break;
}
......
......@@ -426,6 +426,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
@Override
public String addMemberUnionidRelated(QwFrientNoticeDTO dto) {
log.info("加好友={}",JSONObject.toJSONString(dto));
DealQywxExternalUserPojo dealQywxExternalUserPojo = new DealQywxExternalUserPojo();
dealQywxExternalUserPojo.setType(DealQywxExternalUserPojo.DealType.add.getType());
dealQywxExternalUserPojo.setData(dto);
......@@ -445,7 +446,18 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private void sendWelcome(QwFrientNoticeDTO dto) {
String suiteid = dto.getSuiteid();
if (SELF_APP.equals(suiteid)) {
String corpId = dto.getCorpid();
TabHaobanWxEnterprise wxEnterprise = this.wxEnterpriseService.getEnterpriseBycorpId(corpId) ;
if(null == wxEnterprise) {
log.info("企业查不到={}",corpId);
return ;
}
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterprise.getWxEnterpriseId());
if (qwDTO == null) {
log.info("企业不存在,wxEnterpriseId={}", wxEnterprise.getWxEnterpriseId());
return;
}
if (SELF_APP.equals(suiteid) && qwDTO.getWxSecurityType()!=6) {
return ;
}
if(StringUtils.isEmpty(dto.getWelcomeCode())) {
......@@ -872,16 +884,18 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
/**
* 欧泊莱定制需求
*/
// changeType 0删好友 1加好友
private void addDelFriendEvent(String unionId, String clerkId, String wxEnterpriseId, String enterpriseId, String memberId, String storeId, Integer changeType , String externalUserid , boolean isNewMember) {
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
if(changeType==1) {
log.info("加好友通知={}",memberId);
if(StringUtils.isNotBlank(memberId)) {
log.info("加好友、删好友通知={}",memberId);
JSONObject json = new JSONObject() ;
json.put("enterpriseId",enterpriseId) ;
json.put("clerkId",clerkId) ;
json.put("memberId",memberId) ;
json.put("externalUserid",externalUserid) ;
json.put("isNewMember",isNewMember) ;
json.put("changeType",changeType);
try {
clientInstance.sendMessage("qywxAddFriendEvent", json.toJSONString());
} catch (Exception e) {
......@@ -977,7 +991,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String externalUserid = dto.getExternalUserid();
ExternalUserDTO externalUserDTO;
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
if(qwDTO.isSelf() && dto.getSelfCallback()==0) {
if(qwDTO.isSelf() && dto.getSelfCallback()==0 && qwDTO.getWxSecurityType()==5) {
log.info("非自建应用回调");
return null ;
}
......@@ -1212,8 +1226,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
if (null == wxEnterprise) {
return;
}
if (dto.getSuiteid().equals(SELF_APP)) {
log.info("self不执行");
if (dto.getSuiteid().equals(SELF_APP) && wxEnterprise.getWxSecurityType()!=6) {
log.info("self代开发不执行");
return;
}
pushTagSync(dto.getExternalUserid(), wxUserId
......
......@@ -489,7 +489,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
//获取需要同步的标签
QywxSyncTagFormatPojo syncTagFormat = listSyncTagItems(wxEnterpriseId);
if (syncTagFormat == null) {
logger.info("没有需要同步的标签");
logger.info("没有和企微同步的标签={}",wxEnterpriseId);
resp.setCode(2);
resp.setMessage("没有要同步的标签");
return resp;
......@@ -586,6 +586,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
if (MapUtils.isEmpty(relationMap)) {
return null;
}
// 标签项
List<String> syncTagItemsIds = relationMap.keySet().stream().collect(Collectors.toList());
//同步的标签项
......@@ -614,12 +615,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
@Override
public ServiceResponse syncQywxTagToGicByExternalUserId(String wxEnterpriseId, String externalUserId, String wxUserId , String externalUserInfo) {
logger.info("staff打标同步gic={},{}",externalUserId,wxUserId);
//刷新标签的时候不允许同步
ServiceResponse resp = new ServiceResponse();
//所有以及关联同步的标签
QywxSyncTagFormatPojo syncTagFormatPojo = listSyncTagItems(wxEnterpriseId);
if (syncTagFormatPojo == null) {
logger.info("没有需要同步的标签,wxUserId:{},externalUserId:{},wxId:{}", wxUserId, externalUserId, wxEnterpriseId);
logger.info("没有和企微同步的标签,wxUserId:{},externalUserId:{},wxId:{}", wxUserId, externalUserId, wxEnterpriseId);
resp.setMessage("没有需要同步的标签");
return resp;
}
......@@ -651,14 +653,14 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
}
Map<String, Set<String>> externalTagMap = getExternalTagMap(externalUseridInfo, wxEnterpriseId);
if (MapUtils.isEmpty(externalTagMap)) {
logger.info("该用户没有不存在好友关系,获取不到关联导购打的标签,:externalUseridInfo:{}", externalUseridInfo);
logger.info("没有staff打的企微标签,externalUseridInfo={}", externalUseridInfo);
resp.setMessage("该用户没有不存在好友关系,获取不到关联导购打的标签");
return resp;
}
//当前操作用户企业打的标签
Set<String> staffChangeTagKeys = externalTagMap.get(wxUserId);
if (CollectionUtils.isEmpty(staffChangeTagKeys)) {
logger.info("该用户没有不存在好友关系,获取不到关联导购打的标签,wxUserId:{}", wxUserId);
logger.info("没有staff打的企微标签,staff-qwUserId={}", wxUserId);
resp.setMessage("该用户没有不存在好友关系,获取不到关联导购打的标签");
return resp;
}
......@@ -667,7 +669,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
//获取该外部联系人的所有会员
List<TabHaobanExternalClerkRelated> clerkRelateds = externalClerkRelatedService.listExternalByExternalUserid(wxEnterpriseId, externalUserId);
if (CollectionUtils.isEmpty(clerkRelateds)) {
logger.info("该用户没关联对应的好友:{}", externalUserId);
logger.info("没有好友={}", externalUserId);
resp.setMessage("该用户没关联对应的好友");
return resp;
}
......@@ -708,7 +710,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
Sets.SetView<String> entMemberNeedSetQywxKeys = Sets.intersection(staffHasSetTagKeys, entQywxSyncTagKeys);
Set<String> saveTagIds = entMemberNeedSetQywxKeys.stream().map(qywxKey -> syncTagFormatPojo.getQywxToGicTagItemIdMap().get(qywxKey)).collect(Collectors.toSet());
saveTagIds.addAll(noSyncTagItemIds);
logger.info("该企业会员需要打的标签:{}", JSONObject.toJSONString(entMemberNeedSetQywxKeys));
logger.info("会员需要打的企微标签:{}", JSONObject.toJSONString(entMemberNeedSetQywxKeys));
//更新标签 会自动同步
if (CollectionUtils.isEmpty(saveTagIds)) {
saveMemberTags(new HashSet<>(), clerkRelated.getEnterpriseId(), memberId, clerkRelated.getClerkId());
......
......@@ -916,6 +916,10 @@ public class StaffApiServiceImpl implements StaffApiService {
boolean isMustReturnStoreIdWhenSuperAdmin, Boolean addUnassignedStore) {
//兼容店长和店员登陆
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO == null) {
logger.info("被删除或者冻结:{}", clerkId);
return Collections.singletonList("no_store");
}
if (clerkDTO != null) {
if (clerkDTO.getClerkType() == null || clerkDTO.getClerkType() == 0 || clerkDTO.getClerkType() == 1) {
StoreDTO storeDTO = storeService.getStore(clerkDTO.getStoreId());
......
......@@ -75,6 +75,7 @@ public class GroupChatApiServiceImpl implements GroupChatApiService {
private GroupChatMapper groupChatMapper ;
@Autowired
private GroupChatUserMapper groupChatUserMapper ;
private static final String SELF_APP = "selfSuiteId";
@Override
public ServiceResponse<Page<GroupChatDTO>> listPage(GroupChatSearchQDTO qdto, BasePageInfo basePageInfo) {
......@@ -229,8 +230,14 @@ public class GroupChatApiServiceImpl implements GroupChatApiService {
}
String wxEnterpriseId = wxEnterprise.getWxEnterpriseId();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
if(qwDTO.isSelf() && dto.getSelfCallback()==0) {
logger.info("非自建应用回调");
if(qwDTO.getWxSecurityType()==5) {
if (qwDTO.isSelf() && dto.getSelfCallback() == 0) {
logger.info("非自建应用回调");
return ServiceResponse.success();
}
}
if(qwDTO.getWxSecurityType() !=6 && StringUtils.isNotBlank(dto.getSuiteId()) && SELF_APP.equals(dto.getSuiteId())) {
logger.info("非仅代开的不处理代发的回调");
return ServiceResponse.success();
}
// 群解散事件
......
......@@ -112,6 +112,11 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
Long planId = log.getPlanId() ;
GroupChatPlanBO plan = this.groupChatPlanService.getById(planId) ;
dto.setPlanName(plan.getName());
if(dto.getSendStatus()==1) {
if(plan.getSendFlag()==0 || plan.getEndTime().getTime() < System.currentTimeMillis()) {
dto.setSendStatus(0);
}
}
return ServiceResponse.success(dto);
}
......
......@@ -17,6 +17,7 @@ import com.gic.haoban.manage.service.service.content.InteractRecordService;
import com.gic.haoban.manage.service.service.content.PotentialCustomerService;
import com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor;
import com.gic.haoban.manage.service.task.KafkaMessageServiceImpl;
import com.gic.haoban.manage.service.util.OrderCheckUtil;
import com.gic.member.api.dto.event.lifecycle.CreateMemberEventParam;
import com.gic.member.api.dto.info.MemberSummaryInfoDTO;
import com.gic.member.api.dto.info.qo.QueryMemberInfoDTO;
......@@ -184,8 +185,9 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
return ServiceResponse.success();
}
OrderInfoResp orderInfoResp = serviceResponse.getResult();
if (orderInfoResp.getOrderType() == null || OrderChannelEnum.WEIMOB.getSort() != orderInfoResp.getOrderType()) {
log.info("订单 {} 非微盟渠道", orderId);
if (orderInfoResp.getOrderType() == null ||
!OrderCheckUtil.checkOrderType(orderInfoResp.getOrderType())) {
log.info("订单 {} 非微盟/自研渠道", orderId);
return ServiceResponse.success();
}
......@@ -195,6 +197,7 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
memberOrderBo.setOrderId(orderSaveNotifyDTO.getOrderId());
memberOrderBo.setOrderNumber(orderInfoResp.getRorderNumber());
memberOrderBo.setOrderTime(orderInfoResp.getOrderTime());
memberOrderBo.setOrderType(orderInfoResp.getOrderType());
if (isOnlineOrder) {
memberOrderBo.setTableName(KafkaMessageServiceImpl.tab_gic_eorder);
}else {
......
......@@ -9,8 +9,11 @@ import com.gic.business.order.enums.OrderEnum;
import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO;
import com.gic.business.order.service.ordermanage.OrderInfoOutApiService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.content.api.dto.burypoint.ContentMemberBuryPointDTO;
import com.gic.content.api.dto.setting.ContentSettingDTO;
import com.gic.content.api.enums.ContentMallShopType;
import com.gic.content.api.qdto.burypoint.MemberBuryPointOrderQDTO;
import com.gic.content.api.service.ContentMemberBuryPointApiService;
import com.gic.content.api.service.ContentSettingApiService;
import com.gic.enterprise.api.constant.EnterpriseServiceEnum;
import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO;
......@@ -61,6 +64,8 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
private EnterpriseUseForbidService enterpriseUseForbidService;
@Autowired
private ContentSettingApiService contentSettingApiService;
@Autowired
private ContentMemberBuryPointApiService contentMemberBuryPointApiService;
private static final String ORDER_EVENT_RETRY = "orderEventRetryMQ";
......@@ -184,7 +189,7 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
}
/**
* 处理微盟订单
* 处理微盟/自研订单
* MQ: dealWeimoOrder
* @param params
* @return
......@@ -192,7 +197,7 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
@Override
public ServiceResponse<Void> dealWeimoOrder(String params) {
log.info("处理微盟订单 {}", params);
log.info("处理微盟/自研订单 {}", params);
//订单分为tab_gic_eorder 和 tab_gic_ordeer
MemberOrderBo memberOrderBo = JSON.parseObject(params, MemberOrderBo.class);
......@@ -232,8 +237,9 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
return ServiceResponse.success();
}
if (!ContentMallShopType.WEIMO_MALL.getCode().equals(response.getResult().getMallShopType())) {
log.info("当前企业内容配置非微盟商城 {}", JSON.toJSONString(response));
if (!ContentMallShopType.WEIMO_MALL.getCode().equals(response.getResult().getMallShopType())
&& !ContentMallShopType.THIRD_MALL.getCode().equals(response.getResult().getMallShopType())) {
log.info("当前企业内容配置非微盟/自研商城 {}", JSON.toJSONString(response));
return ServiceResponse.success();
}
......@@ -241,11 +247,24 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
String orderId = memberOrderBo.getOrderId();
String orderNumber = memberOrderBo.getOrderNumber();
Date orderTime = memberOrderBo.getOrderTime();
Integer orderType = memberOrderBo.getOrderType();
InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO();
interactRecordMessageBO.setEnterpriseId(enterpriseId);
interactRecordMessageBO.setMemberId(memberId);
MaterialDataAdaptor.MaterialBizInfo materialBizInfo = materialDataAdaptor.queryMaterialBizInfo(enterpriseId, memberId, orderTime, null);
MaterialDataAdaptor.MaterialBizInfo materialBizInfo = null;
MemberBuryPointOrderQDTO memberBuryPointOrderQDTO = new MemberBuryPointOrderQDTO();
memberBuryPointOrderQDTO.setEnterpriseId(enterpriseId);
memberBuryPointOrderQDTO.setOrderCreateTime(orderTime);
memberBuryPointOrderQDTO.setMemberId(memberId);
memberBuryPointOrderQDTO.setConvFlag(1);
memberBuryPointOrderQDTO.setMallType(2);
memberBuryPointOrderQDTO.setOrderType(orderType);
ServiceResponse<ContentMemberBuryPointDTO> buryPointResponse = contentMemberBuryPointApiService.queryMemberBuryPoint(memberBuryPointOrderQDTO);
if (buryPointResponse.isSuccess() && buryPointResponse.getResult() != null) {
ContentMemberBuryPointDTO result = buryPointResponse.getResult();
materialBizInfo = new MaterialDataAdaptor.MaterialBizInfo(result.getClerkId(), String.valueOf(result.getContentMaterialId()), result.getStoreId());
}
// MaterialDataAdaptor.MaterialBizInfo materialBizInfo = materialDataAdaptor.queryMaterialBizInfo(enterpriseId, memberId, orderTime, null);
if (materialBizInfo == null) {
if (memberOrderBo.getTimes() == null) {
memberOrderBo.setTimes(1);
......
......@@ -114,8 +114,8 @@ public class HaobanQywxFeeApiServiceImpl implements HaobanQywxFeeApiService {
feeOrderListQDTO.setCorpid(corpid);
if (null == RedisUtil.getCache("qywx-order-search-date")) {
feeOrderListQDTO
.setStartTime(DateUtil.beginOfDay(new Date()).offsetNew(DateField.HOUR_OF_DAY, -24).getTime());
feeOrderListQDTO.setEndTime(new Date().getTime());
.setStartTime(DateUtil.beginOfDay(new Date()).offsetNew(DateField.HOUR_OF_DAY, -24).getTime()/1000);
feeOrderListQDTO.setEndTime(new Date().getTime()/1000);
}
feeOrderListQDTO.setLimit(Manage3Constants.QW_LIMIT);
FeeOrderResponseList feeOrderResponseList = qywxUserApiService.listOrder(corpid, config.getCorpid(),
......
......@@ -8,6 +8,7 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.hm.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -33,11 +34,6 @@ import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.hm.HmBatchCountDTO;
import com.gic.haoban.manage.api.dto.hm.HmBatchModifyResultDTO;
import com.gic.haoban.manage.api.dto.hm.HmClerkDTO;
import com.gic.haoban.manage.api.dto.hm.HmQrcodeDTO;
import com.gic.haoban.manage.api.dto.hm.HmQrcodeStoreDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmBatchModifyQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmClerkRelationQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
......@@ -1038,4 +1034,9 @@ public class HmQrcodeApiServiceImpl implements HmQrcodeApiService {
dto.setFailList(failList);
return ServiceResponse.success(dto);
}
@Override
public List<ClerkQrcodeDTO> listClerkQrcode(String enterpriseId, List<String> clerkIdList) {
return this.hmQrcodeService.listClerkQrcode(enterpriseId,clerkIdList);
}
}
package com.gic.haoban.manage.service.util;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.orderecommerce.api.constant.OrderChannelEnum;
import com.google.common.collect.Lists;
import java.util.List;
public class OrderCheckUtil {
private static final List<Integer> DEAL_ORDER_TYPE_LIST = Lists.newArrayList(
OrderChannelEnum.WEIMOB.getSort(),
OrderChannelEnum.BRAND_MALL.getSort());
/**
* 销售线索是否需要处理订单类型
* @param orderType
* @return
*/
public static boolean checkOrderType(Integer orderType) {
return DEAL_ORDER_TYPE_LIST.contains(orderType);
}
}
\ No newline at end of file
......@@ -244,6 +244,7 @@
<dubbo:reference id="contentProducerApiService" interface="com.gic.content.api.service.ContentProducerApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentMemberBuryPointApiService" id="contentMemberBuryPointApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.api.service.integral.IntegralWriteApiService" id="integralWriteApiService" timeout="10000" retries="0" check="false"/>
......@@ -254,5 +255,5 @@
<dubbo:reference id="enterpriseWxaLinkService" interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" timeout="30000" retries="0" check="false"/>
<dubbo:reference id="qywxGroupSendCanvasApiService" interface="com.gic.haoban.task.manage.api.service.QywxGroupSendCanvasApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.haoban.task.api.service.TelTaskApiService" id="telTaskApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.task.manage.api.service.IMarketTaskMemberApiService" id="iMarketTaskMemberApiService"/>
</beans>
\ No newline at end of file
......@@ -263,7 +263,7 @@
</foreach>
and a.status_flag = 1
group by a.staff_id, a.clerk_id) as scr on scr.staff_id = ecr.staff_id
where ecr.status_flag = 1 AND ecr.`external_status` in (1 , 3)
where ecr.status_flag = 1 AND ecr.`external_status` in (1)
and ecr.enterprise_id = #{enterpriseId,jdbcType=VARCHAR}
and ecr.wx_enterprise_id=#{wxEnterpriseId}
and ecr.member_id in
......
......@@ -66,7 +66,7 @@
select
<include refid="Base_Column_List"/>
from tab_haoban_wx_enterprise
where wxa_appid = #{appid} and wx_security_type = 5 and status_flag = 1
where wxa_appid = #{appid} and wx_security_type in ( 5 , 6) and status_flag = 1
</select>
<insert id="insertSelective" parameterType="com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise">
......
......@@ -297,7 +297,7 @@
a.send_time sendTime,
a.msgid msgid
FROM tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
WHERE b.exec_type = 0 AND a.send_status = 1 AND a.msgid IS not NULL and b.end_time <![CDATA[<=]]> now()
WHERE b.exec_type = 0 AND a.send_status = 1 AND a.msgid IS not NULL and b.end_time <![CDATA[<=]]> now() AND end_time > DATE_ADD(CURDATE(), INTERVAL -2 DAY)
</select>
......
......@@ -430,8 +430,18 @@
</foreach>
and hm_type = 1 and status_flag in (1,3)
</select>
<select id="getClerkQrcode" resultType="java.lang.String">
<select id="listClerkQrcode" resultType="com.gic.haoban.manage.api.dto.hm.ClerkQrcodeDTO">
select clerk_id clerkId , wx_qrcode qwQrcode from tab_haoban_hm_qrcode where enterprise_id=#{enterpriseId}
and clerk_id in
<foreach collection="clerkIdList" item="id" index="index" open="(" close=")" separator=",">
#{id}
</foreach>
and hm_type = 1 and status_flag in (1,3)
</select>
<select id="getClerkQrcode" resultType="java.lang.String">
select wx_qrcode from tab_haoban_hm_qrcode where enterprise_id=#{enterpriseId}
and clerk_id = #{clerkId}
and hm_type = 1 and status_flag = 1 limit 1
......
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
/**
* 标签同步
*/
public class TagSyncTest {
public static void main(String[] args) {
JSONObject json = JSONObject.parseObject(getText()) ;
JSONArray list = json.getJSONObject("result").getJSONArray("tag_group") ;
System.out.println(JSONArray.toJSONString(list,true));
}
public static String getText(){
try {
BufferedReader bw = new BufferedReader(new FileReader(new File("d:\\bq.txt"))) ;
StringBuilder sb = new StringBuilder() ;
while(true) {
String s = bw.readLine() ;
if(StringUtils.isBlank(s)) {
break ;
}else {
String ss = new String(s.getBytes(),"UTF-8") ;
sb.append(ss) ;
}
}
bw.close();
return sb.toString() ;
}catch(Exception e) {
}
return null ;
}
}
......@@ -92,6 +92,9 @@ public class DepartmentContoller extends WebBaseController {
page = departmentApiService.pageByParentId(parentId, keyWord, pageInfo);
} else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
if(null == dto) {
return new HaobanResponse(-1,"根部门异常,请重新同步通讯录") ;
}
list.add(dto);
page.setTotalPage(1);
page.setTotalCount(1);
......@@ -131,6 +134,9 @@ public class DepartmentContoller extends WebBaseController {
list = departmentApiService.listByParentId(parentId);
} else {
DepartmentDTO dto = departmentApiService.getRootByEnterpriseId(wxEnterpriseId);
if(null == dto) {
return new HaobanResponse(-1,"根部门异常,请重新同步通讯录") ;
}
list.add(dto);
}
Set<String> enterpriseSet = new HashSet<>();
......
......@@ -498,6 +498,9 @@ public class StaffController extends WebBaseController {
String wxEnterpriseId = login.getWxEnterpriseId();
if(StringUtils.isBlank(departmentId)){
DepartmentDTO dto = this.departmentApiService.getRootByEnterpriseId(wxEnterpriseId) ;
if(null == dto) {
return new HaobanResponse(-1,"根部门异常,请重新同步通讯录") ;
}
departmentId = dto.getDepartmentId() ;
}
List<String> departmentIdSet = new ArrayList<>();
......
......@@ -83,7 +83,8 @@ public class WxEnterpriseController extends WebBaseController {
private SecretSettingApiService secretSettingApiService ;
@Autowired
private ClerkService clerkService;
@Autowired
private WxApplicationApiService wxApplicationApiService ;
//授权企业列表
@RequestMapping("wxa-enterprise-list")
public HaobanResponse wxEnterpriseList() {
......@@ -163,10 +164,16 @@ public class WxEnterpriseController extends WebBaseController {
return resultResponse(HaoBanErrCode.ERR_10012);
}
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseApiService.getQwInfo(wxEnterpriseId) ;
if(qwDTO.isSelf()) {
if(qwDTO.isSelf() && StringUtils.isNotBlank(qwDTO.getUrlHost())) {
return this.fail("已刷新");
}
QywxCorpInfoDTO dto = qywxTokenManageService.getCorpInfo(qwDTO.getThirdCorpid(), config.getWxSuiteid());
QywxCorpInfoDTO dto = null ;
if(qwDTO.getWxSecurityType()==6) {
WxApplicationDTO application = wxApplicationApiService.selectByWxEnterpriseIdAndApplicationType(wxEnterpriseId,3);
dto = qywxTokenManageService.getCorpInfo(qwDTO.getThirdCorpid(), application.getSiteId());
}else {
dto = qywxTokenManageService.getCorpInfo(qwDTO.getThirdCorpid(), config.getWxSuiteid());
}
if (dto == null) {
return resultResponse(HaoBanErrCode.ERR_10012);
}
......@@ -211,9 +218,12 @@ public class WxEnterpriseController extends WebBaseController {
if(wxType==5) {
desc = " ( "+wxEnterpriseDTO.getWxaAppid() +" / " + wxEnterpriseDTO.getUrlHost()+") " ;
}
if(wxType==6) {
desc = "仅代开发" ;
}
int newType = this.wxEnterpriseApiService.calcSecretType(wxEnterpriseId) ;
String diff = "";
if(null != wxType && wxType.intValue() != newType && wxType != 5) {
if(null != wxType && wxType.intValue() != newType && wxType != 5 && wxType != 6) {
diff = "*";
}
return Arrays.asList(wxEnterpriseDTO.getWxCorpid(),wxEnterpriseDTO.getOpenCorpid()).stream().filter(str -> StringUtils.isNotBlank(str)).collect(Collectors.joining(" / ")) + desc + diff;
......
......@@ -8,6 +8,7 @@ import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.account.AccountAuthorizeDTO;
import com.gic.content.api.dto.account.AccountAuthorizeResultDTO;
import com.gic.content.api.dto.account.ContentAccountInfoDTO;
import com.gic.content.api.enums.ContentAccountBizTypeEnum;
import com.gic.content.api.enums.ContentAccountQrCodeSourceType;
import com.gic.content.api.enums.ContentAccountStatusEnum;
import com.gic.content.api.qdto.account.AccountGenerateQrCodeQDTO;
......@@ -88,7 +89,8 @@ public class ContentAccountController {
contentAccountQDTO.setQueryForClerk(Boolean.TRUE);
contentAccountQDTO.setUserCodes(clerkCodes);
contentAccountQDTO.setStoreIds(storeIds);
contentAccountQDTO.setBizType(null);
// 视频号账号暂时下架了
contentAccountQDTO.setBizType(ContentAccountBizTypeEnum.XHS.getCode());
ServiceResponse<Page<ContentAccountInfoDTO>> serviceResponse =
contentAccountApiService.queryAccountList(contentAccountQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
......
......@@ -50,6 +50,9 @@ public class CanvasDataController {
setPageParam(jsonObject, null, null);
//1画布维度2导购维度3会员维度
jsonObject.put("dataType", 1);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_list");
List<CanvasConversionDataVO> list = DataApiUtils.parsePageDataList(res, CanvasConversionDataVO.class);
return RestResponse.successResult(list.size() > 0 ? list.get(0) : new CanvasConversionDataVO());
......@@ -64,6 +67,9 @@ public class CanvasDataController {
public RestResponse<Page<CanvasToDoCompleteMemberVO>> getCanvasToDoCompleteMember(@RequestBody CanvasToDoCompleteMemberQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_mbr");
Page<CanvasToDoCompleteMemberVO> page = DataApiUtils.getPageData(res, CanvasToDoCompleteMemberVO.class);
......@@ -73,6 +79,13 @@ public class CanvasDataController {
return RestResponse.successResult(page);
}
private void removeClerkIdParam(String clerkId, JSONObject jsonObject) {
if (StringUtils.isNotBlank(clerkId) && staffApiService.isManager(clerkId)) {
//店长不需要传参
jsonObject.remove("clerkId");
}
}
/**
* 活动已完成的会员
* @param qo
......@@ -84,6 +97,9 @@ public class CanvasDataController {
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
//1导购2会员
jsonObject.put("dataType", 2);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_clerk");
Page<CanvasConversionMemberVO> page = DataApiUtils.getPageData(res, CanvasConversionMemberVO.class);
......@@ -104,6 +120,7 @@ public class CanvasDataController {
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
//1导购2会员
jsonObject.put("dataType", 1);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_clerk");
Page<CanvasConversionMemberVO> page = DataApiUtils.getPageData(res, CanvasConversionMemberVO.class);
......
......@@ -7,9 +7,11 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.CommonMQDTO;
import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import com.gic.haoban.manage.api.service.HaobanCommonMQApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.web.qo.GroupChatQO;
import org.apache.commons.lang3.StringUtils;
......@@ -43,6 +45,9 @@ public class GroupChatPlanController {
private GroupChatApiService groupChatApiService ;
@Autowired
private MaterialApiService materialApiService;
@Autowired
private HaobanCommonMQApiService haobanCommonMQApiService ;
/**
* 群计划列表 - 分页
......@@ -97,6 +102,13 @@ public class GroupChatPlanController {
qdto.setSearchParams(qo.getChatName());
qdto.setStatus(0);
qdto.setGicFlag(1);
if(null != qo.getOwnLogId()) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(qo.getOwnLogId());
GroupChatPlanOwnerLogDTO owner = resp.getResult();
if (null != owner && owner.getSendStatus()==2) {
return RestResponse.successResult(new Page<>()) ;
}
}
ServiceResponse<Page<GroupChatDTO>> page = this.groupChatApiService.listPage(qdto, qo);
return RestResponse.successResult(page.getResult());
}
......@@ -198,6 +210,14 @@ public class GroupChatPlanController {
ownerInfo.put("clerkName", owner.getClerkName());
ownerInfo.put("ownerLogId", owner.getOwnerLogId());
ownerInfo.put("sendStatus", owner.getSendStatus());
if(owner.getSendStatus() > 0) {
CommonMQDTO mq = new CommonMQDTO() ;
mq.setType(5) ;
Map<String,String> map = new HashMap<>() ;
map.put("ownerLogId",ownerLogId+"") ;
mq.setParams(map);
this.haobanCommonMQApiService.putCommonDelayMessage(mq, 0);
}
ownerInfo.put("dataGetTime",owner.getDataGetTime());
retMap.put("ownerInfo", ownerInfo);
}
......
......@@ -187,7 +187,7 @@ public class GicOrderController {
if (status == 2) {
qdto.setWriteOffClerkId(clerkId);
qdto.setOrderStep("4");
qdto.setDeliveryOptType(1);
//qdto.setDeliveryOptType(1);
}
qdto.setSearchOrderParam(search);
qdto.setBusinessType(businessType);
......@@ -256,14 +256,13 @@ public class GicOrderController {
OrderDetailDTO detail = ret.getResult();
logger.info("订单信息={}", JSON.toJSONString(ret, true));
if (ret.isSuccess()) {
// 已核销,且不是好办核销的
if (null != detail.getOrderInfo().getDeliveryOptType()
&& detail.getOrderInfo().getDeliveryOptType() != 1) {
logger.info("已核销,且不是好办核销的={}", writeOffCode);
return RestResponse.failure("9999", "此自提点无法核销");
if(detail.getOrderInfo().getOrderStep()==4) {
logger.info("提货码已核销={}", writeOffCode);
return RestResponse.failure("9999", "提货码已核销");
}
if (!storeId.equals(detail.getOrderInfo().getPickUpStoreId())) {
return RestResponse.failure("9999", "此自提点无法核销");
logger.info("核销门店不符合={}", writeOffCode);
return RestResponse.failure("9999", "此自提点无法核销,请确认订单核销门店");
}
OrderDetailVO orderDetailVO = this.getOrderDetail(enterpriseId, ret.getResult().getOrderInfo(),
ret.getResult().getOrderItemList(), storeId);
......@@ -483,7 +482,7 @@ public class GicOrderController {
qdto.setPickUpStoreId(storeId);
if (step == 4) {
qdto.setWriteOffClerkId(clerkId);
qdto.setDeliveryOptType(1);
//qdto.setDeliveryOptType(1);
}
qdto.setOrderStep("" + step);
qdto.setPageNum(1);
......
......@@ -13,6 +13,15 @@ public class GroupChatQO extends BasePageInfo implements Serializable {
private String enterpriseId ;
private String wxEnterpriseId ;
private String staffId ;
private Long ownLogId ;
public Long getOwnLogId() {
return ownLogId;
}
public void setOwnLogId(Long ownLogId) {
this.ownLogId = ownLogId;
}
public String getChatName() {
return chatName;
......
......@@ -22,4 +22,8 @@ public class CanvasConversionDataQO implements Serializable {
* mass:群发任务 tel_task:话务任务
*/
private String subType;
private String storeId;
private String clerkId;
}
......@@ -18,4 +18,8 @@ public class CanvasToDoCompleteMemberQO extends PageQo implements Serializable {
* mass:群发任务 tel_task:话务任务
*/
private String subType;
private String storeId;
private String clerkId;
}
......@@ -102,6 +102,11 @@ public class OrderDetailVO implements Serializable {
private String buyerPhone;
/**
* 收货人区号
*/
private String buyerNationcode;
/**
* 自提门店ID
*/
private String pickUpStoreId;
......@@ -270,6 +275,14 @@ public class OrderDetailVO implements Serializable {
this.buyerPhone = buyerPhone;
}
public String getBuyerNationcode() {
return buyerNationcode;
}
public void setBuyerNationcode(String buyerNationcode) {
this.buyerNationcode = buyerNationcode;
}
public void setPickUpStoreId(String pickUpStoreId) {
this.pickUpStoreId = pickUpStoreId;
}
......
......@@ -107,7 +107,18 @@ public class OrderListVO implements Serializable {
* 评价
*/
private EvaluateVO evaluateVO;
// 2 会员自主核销
private Integer deliveryOptType ;
public Integer getDeliveryOptType() {
return deliveryOptType;
}
public void setDeliveryOptType(Integer deliveryOptType) {
this.deliveryOptType = deliveryOptType;
}
public Integer getUsePoint() {
return usePoint;
}
......
......@@ -112,6 +112,11 @@ public class OrderExchangeDetailVO implements Serializable {
private String buyerPhone;
/**
* 收货人区号
*/
private String buyerNationcode;
/**
* 买家物流号(退货物流)
*/
private String buyerLogisticsCode;
......@@ -787,6 +792,14 @@ public class OrderExchangeDetailVO implements Serializable {
this.buyerPhone = buyerPhone;
}
public String getBuyerNationcode() {
return buyerNationcode;
}
public void setBuyerNationcode(String buyerNationcode) {
this.buyerNationcode = buyerNationcode;
}
public void setBuyerLogisticsCode(String buyerLogisticsCode) {
this.buyerLogisticsCode = buyerLogisticsCode;
}
......
......@@ -176,6 +176,7 @@
<dubbo:reference id="storeRankApiService" interface="com.gic.enterprise.api.service.rank.StoreRankApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference id="enterpriseWxaLinkService" interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" timeout="100000" retries="0" check="false" />
<dubbo:reference id="clerkTaskApiService" interface="com.gic.marketing.pro.api.service.clerktask.ClerkTaskApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.HaobanCommonMQApiService" id="haobanCommonMQApiService" timeout="10000"/>
......
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