企业微信适配

yun-zuoyi
汪云昊 5 years ago
parent d1c033cfdb
commit c64d619b0a

@ -139,4 +139,20 @@ public interface ISysMessageService {
*/
@ApiOperation(value = "批量删除用户消息")
void deleteSysRefUserMessageByIds(Long[] ids);
/**
* idid
* @param msgId
* @param userId
*/
@ApiOperation(value = "根据消息id和用户id找到用户消息记录")
SysRefUserMessage getSysRefUserMessageByMsgIdAndUserId(Long msgId,Long userId);
/**
*
* @param sysRefUserMessage
* @return
*/
@ApiOperation(value = "查询用户消息")
List<SysRefUserMessage> findSysRefUserMessage(SysRefUserMessage sysRefUserMessage);
}

@ -0,0 +1,37 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserExternal;
import cn.estsh.impp.framework.base.service.ICrudService;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-03 13:45
* @Modify:
**/
public interface ISysRefUserExternalService extends ICrudService<SysRefUserExternal> {
/**
* id
* @param externalRef
* @param valueList
* @return id
*/
List<Long> findUserByExternalRefAndValue(Integer externalRef, List<String> valueList);
/**
* id
* @param externalRef
* @param userIdList id
* @return
*/
List<String> findExternalValueByRefAndUserId(Integer externalRef, List<Long> userIdList);
SysRefUserExternal getSysRefUserExternalByRefAndValue(Integer externalRef, String value);
SysRefUserExternal getSysRefUserExternalByRefAndUserId(Integer externalRef, Long userId);
}

@ -125,6 +125,13 @@ public interface ISysUserService {
List<SysUser> list();
/**
*
* @return
*/
@ApiOperation(value = "查询所有",notes = "查询所有账号信息")
List<SysUser> listByUserOrganizeCode();
/**
*
* @param roleId ID
* @return ID

@ -81,6 +81,12 @@
<artifactId>i3plus-core-api</artifactId>
</dependency>
<!-- api调用 -->
<dependency>
<groupId>i3plus.sdk</groupId>
<artifactId>i3plus-sdk-wechat</artifactId>
</dependency>
<!-- impp framework -->
<dependency>
<groupId>impp.framework</groupId>

@ -0,0 +1,187 @@
package cn.estsh.i3plus.core.apiservice.controller.base;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRefUserExternalService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserExternal;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.sdk.webchat.work.aes.AesException;
import cn.estsh.i3plus.sdk.webchat.work.enumutil.WorkWeChatEnumUtil;
import cn.estsh.i3plus.sdk.webchat.work.pojo.MsgTaskCardEvent;
import cn.estsh.i3plus.sdk.webchat.work.pojo.WorkWeChatUser;
import cn.estsh.i3plus.sdk.webchat.work.util.WorkWeChatTool;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-02 19:08
* @Modify:
**/
@RestController
@Api(tags = "外部系统对接")
@RequestMapping("/impp/external-system")
public class ExternalSystemController {
public static final Logger LOGGER = LoggerFactory.getLogger(ExternalSystemController.class);
@Autowired
private ISysUserService sysUserService;
@Autowired
private ISysRefUserExternalService sysRefUserExternalService;
/**
* rabbitMQ
*/
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping(value = "/enterprise-wechat/msg-callback")
@ApiOperation(value = "消息回调测试",notes = "消息回调测试")
public String test(@RequestParam(name = "msg_signature") String msgSignature, String timestamp,
String nonce, String echostr) throws AesException {
return new WorkWeChatTool().msgCallbackVerify(msgSignature, timestamp,nonce, echostr);
}
@PostMapping(value = "/enterprise-wechat/msg-callback")
@ApiOperation(value = "消息回调",notes = "消息回调")
public ResultBean listSysLocaleLanguage(@RequestParam(name = "msg_signature") String msgSignature, String timestamp,
String nonce,@RequestBody String msgStr) {
try {
WorkWeChatTool workWeChatTool = new WorkWeChatTool();
MsgTaskCardEvent msgTaskCardEvent = workWeChatTool.msgCallbackDecrypt(msgSignature,timestamp,nonce,msgStr);
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK, JSON.toJSONString(msgTaskCardEvent));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(msgTaskCardEvent);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/enterprise-wechat/bind-user-ref")
@ApiOperation(value = "绑定用户关系",notes = "绑定用户关系")
public ResultBean workWeChatUserBind() {
try {
WorkWeChatTool workWeChatTool = new WorkWeChatTool();
// 获取所有微信用户并按照配置的绑定数据转为map
WorkWeChatEnumUtil.WECHAT_USER_BIND_PROPERTY weChatUserBindProperty = WorkWeChatEnumUtil.WECHAT_USER_BIND_PROPERTY
.valueOfEnum(RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_WORK_WECHAT_BIND_USER_PROPERTY));
List<WorkWeChatUser> weChatUserList = workWeChatTool.getAllDeptUserListDetail();
Map<String, WorkWeChatUser> weChatUserMap = weChatUserList.stream()
.collect(
Collectors.toMap(
weChatUserBindProperty::getUserProperty,
Function.identity(),
(existing, replacement) -> existing)
);
// 查询所有用户并根据配置属性进行匹配创建关系数据
ImppEnumUtil.USER_BIND_PROPERTY userBindProperty = ImppEnumUtil.USER_BIND_PROPERTY
.valueOfEnum(
RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_WORK_WECHAT_BIND_IMPP_USER_PROPERTY)
);
List<SysUser> sysUserList = sysUserService.list();
for (SysUser sysUser : sysUserList) {
String propertyValue = getUserProperty(userBindProperty, sysUser);
if (propertyValue != null && weChatUserMap.containsKey(propertyValue)) {
String webChatUserId = weChatUserMap.get(propertyValue).getUserId();
SysRefUserExternal sysRefUserExternal =
sysRefUserExternalService.getSysRefUserExternalByRefAndUserId(
ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue(), sysUser.getId()
);
// 判断是否存在如果存在则修改,不存在则新增
if(sysRefUserExternal == null){
sysRefUserExternal = new SysRefUserExternal();
sysRefUserExternal.setUserId(sysUser.getId());
sysRefUserExternal.setExternalRef(ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue());
sysRefUserExternal.setRefValue(webChatUserId);
sysRefUserExternalService.insert(sysRefUserExternal);
} else if (!webChatUserId.equals(sysRefUserExternal.getRefValue())) {
sysRefUserExternal.setRefValue(webChatUserId);
sysRefUserExternalService.update(sysRefUserExternal);
}
}
}
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
private String getUserProperty(ImppEnumUtil.USER_BIND_PROPERTY userBindProperty,SysUser sysUser){
String userBindPropertyValue = null;
switch (userBindProperty){
case USER_LOGIN_NAME:
userBindPropertyValue =sysUser.getUserLoginName();
break;
case USER_NAME:
userBindPropertyValue = sysUser.getUserName();
break;
case USER_EMP_NO:
userBindPropertyValue =sysUser.getUserEmpNo();
break;
case EMAIL:
userBindPropertyValue =sysUser.getUserEmail();
break;
case USER_PHONE:
userBindPropertyValue =sysUser.getUserPhone();
break;
case USER_WECHAT_NO:
userBindPropertyValue =sysUser.getUserWeChatNo();
break;
}
return userBindPropertyValue;
}
public static void main(String[] args) throws JAXBException {
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"\n" +
"<xml>\n" +
" <ToUserName><![CDATA[wwe40a593e30ed3196]]></ToUserName>\n" +
" <FromUserName><![CDATA[WangYunHao]]></FromUserName>\n" +
" <MsgType><![CDATA[event]]></MsgType>\n" +
" <Event><![CDATA[taskcard_click]]></Event>\n" +
" <CreateTime>1599057699</CreateTime>\n" +
" <EventKey><![CDATA[key111]]></EventKey>\n" +
" <TaskId><![CDATA[7]]></TaskId>\n" +
" <AgentId>1000002</AgentId>\n" +
"</xml>\n";
JAXBContext context = JAXBContext.newInstance(MsgTaskCardEvent.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
MsgTaskCardEvent boy2 = (MsgTaskCardEvent) unmarshaller.unmarshal(new StringReader(xml));
System.out.println(boy2);
System.out.println(JSON.toJSONString(boy2));
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.sdk.webchat.work.enumutil.WorkWeChatEnumUtil;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.util.LocaleUtils;
import cn.estsh.impp.framework.boot.util.ResultBean;
@ -355,4 +356,28 @@ public class SysEnumController extends CoreBaseController {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.USER_CUSTOMIZE_CONFIG_TYPE.values()));
}
/**
*
*
* @return
*/
@GetMapping("/user-bind-property")
@ApiOperation(value = "用户绑定属性", notes = "用户绑定属性")
public ResultBean getUserBindProperty() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.USER_BIND_PROPERTY.values()));
}
/**
*
*
* @return
*/
@GetMapping("/work-wechat-user-bind-property")
@ApiOperation(value = "企业微信用户绑定属性", notes = "企业微信用户绑定属性")
public ResultBean getWeChatUserBindProperty() {
return new ResultBean(true, "操作成功",
LocaleUtils.getEnumLocaleResValuesToList(WorkWeChatEnumUtil.WECHAT_USER_BIND_PROPERTY.values()));
}
}

@ -174,7 +174,6 @@ public class SysMessageController extends CoreBaseController {
public ResultBean<SysMessage> queryOutboxByPager(SysMessage sysMessage,Pager pager){
try {
// 发件人为当前用户
sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue());
sysMessage.setMessageSenderId(getSessionUser().getUser().getId());
ListPager sysMessageListPager = sysMessageService.querySysMessageByPager(sysMessage,pager);
@ -299,6 +298,23 @@ public class SysMessageController extends CoreBaseController {
}
/**
* CORE -
* @return
*/
@GetMapping(value = "/operate/user-message/find")
@ApiOperation(value = "查看用户未读站内信")
public ResultBean<SysRefUserMessage> findReceiveStatus(SysRefUserMessage sysRefUserMessage){
try {
List<SysRefUserMessage> userMessageList = sysMessageService.findSysRefUserMessage(sysRefUserMessage);
return ResultBean.success("操作成功").setResultList(userMessageList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
* @param refUserMessagePagerModel
* @return

@ -276,7 +276,7 @@ public class SysUserController extends CoreBaseController{
@ApiOperation(value = "查询所有用户", notes = "查询所有系统用户")
public ResultBean findAll() {
try {
List<SysUser> list = sysUserService.list();
List<SysUser> list = sysUserService.listByUserOrganizeCode();
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(list);

@ -0,0 +1,208 @@
package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRefUserExternalService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserExternal;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
import cn.estsh.i3plus.sdk.webchat.work.enumutil.WorkWeChatEnumUtil;
import cn.estsh.i3plus.sdk.webchat.work.pojo.MsgResponse;
import cn.estsh.i3plus.sdk.webchat.work.pojo.MsgTaskCardEvent;
import cn.estsh.i3plus.sdk.webchat.work.util.WorkWeChatTool;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.Channel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2018-11-15 22:15
* @Modify:
**/
@ConditionalOnExpression("'${impp.mq.queue.work.we-chat:true}' == 'true'")
@Configuration
public class MessageWorkWeChatQueueReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(MessageWorkWeChatQueueReceiver.class);
@Autowired
private ISysMessageService sysMessageService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private ISysRefUserExternalService sysRefUserExternalService;
@Bean
public Queue getQueueImppWorkWeChatMsg(){
return new Queue(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG);
}
@Bean
public Queue getQueueImppWorkWeChatMsgCallback(){
return new Queue(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK);
}
/**
*
*
* @param data
* @param channel
* @param message
*/
@RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG)
public void processWorkWeChatMsg(String data, Channel channel, Message message) {
SysMessage msg = JsonUtilTool.decode(data, SysMessage.class);
Long startTime = System.currentTimeMillis();
try {
LOGGER.debug("【MQ-QUEUE_IMPP_WORK_WECHAT_MSG】数据接收成功{}", msg);
if (msg.getMessageSendTime() == null) {
msg.setMessageSendTime(TimeTool.getNowTime(true));
}
// 持久化消息化消息并初始化状态
ConvertBean.serviceModelInitialize(msg, msg.getMessageSenderNameRdd());
msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SENDING.getValue());
msg = sysMessageService.insertSysMessage(msg);
// 默认发送成功
msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_SUCCESS.getValue());
// 收件人信息
List<Long> userIdList = new ArrayList<>();
SysRefUserMessage refUserMessage;
SysUser sysUser;
Long userId;
for (String userIdStr : msg.getMessageReceiversId().split(",")) {
userId =Long.valueOf(userIdStr);
sysUser = sysUserService.getSysUserById(userId);
refUserMessage = new SysRefUserMessage();
refUserMessage.setMessageId(msg.getId());
refUserMessage.setMessageSoftType(msg.getMessageSoftType());
refUserMessage.setMessageTitleRdd(msg.getMessageTitle());
refUserMessage.setMessageTypeRdd(msg.getMessageType());
refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd());
refUserMessage.setReceiverId(sysUser.getId());
refUserMessage.setReceiverNameRdd(sysUser.getUserName());
refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue());
refUserMessage.setReceiverTime(TimeTool.getNowTime(true));
refUserMessage.setIsUrgent(msg.getIsUrgent());
sysMessageService.insertSysRefUserMessage(refUserMessage);
userIdList.add(userId);
}
// 查询到关联的用户企业微信账号并发送
List<String> weChatUserIdList = sysRefUserExternalService.findExternalValueByRefAndUserId(
ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue(), userIdList);
WorkWeChatTool workWeChatTool = new WorkWeChatTool();
MsgResponse msgResponse = null;
try {
msgResponse = workWeChatTool.sendTaskCardMsg(weChatUserIdList, msg.getMessageTitle(),
msg.getMessageContent(), msg.getId().toString());
LOGGER.info("企业微信信息发送结果{}", JsonUtilTool.encode(msgResponse));
} catch (Exception e) {
msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_FAIL.getValue());
msg.setErrorMessage(e.getMessage());
}
sysMessageService.updateSysMessage(msg);
//信息已处理
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
LOGGER.error("【MQ-QUEUE_IMPP_WORK_WECHAT_MSG】处理出错{}", e.getMessage(), e);
//丢弃这条消息
try {
// 未成功处理,重新发送
channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);
} catch (IOException e1) {
e1.printStackTrace();
}
} finally {
LOGGER.info("[Core Work WeChat] Message Id:{} , 耗时{}, Message Info :{}", msg.getId(),
System.currentTimeMillis() - startTime, JSON.toJSONString(msg));
}
}
/**
*
*
* @param data
* @param channel
* @param message
*/
@RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK)
public void processWorkWeChatMsgCallback(String data, Channel channel, Message message) {
MsgTaskCardEvent msgTaskCardEvent = JsonUtilTool.decode(data, MsgTaskCardEvent.class);
Long startTime = System.currentTimeMillis();
try {
if (!WorkWeChatEnumUtil.MSG_EVENT.TASK_CARD_CLICK.getValue().equals(msgTaskCardEvent.getEvent())) {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
return;
}
Long msgId = Long.parseLong(msgTaskCardEvent.getTaskId());
SysRefUserExternal sysRefUserExternal = sysRefUserExternalService.getSysRefUserExternalByRefAndValue(
ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue(), msgTaskCardEvent.getFromUserName()
);
if(sysRefUserExternal == null ){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("用户关系不存在")
.build();
}
SysRefUserMessage sysRefUserMessage = sysMessageService.getSysRefUserMessageByMsgIdAndUserId(msgId,
sysRefUserExternal.getUserId());
sysMessageService.updateSysRefUserMessageStatusByIds(new Long[]{sysRefUserMessage.getId()},
ImppEnumUtil.MESSAGE_STATUS.READ.getValue());
//信息已处理
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
LOGGER.error("【MQ-QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK】处理出错{}", e.getMessage(), e);
//丢弃这条消息
try {
// 未成功处理,重新发送
// channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e1) {
e1.printStackTrace();
}
} finally {
LOGGER.info("[Core Work WeChat] Email Id:{} , 耗时{}, Message Info :{}", msgTaskCardEvent.getTaskId(),
System.currentTimeMillis() - startTime, JSON.toJSONString(msgTaskCardEvent));
}
}
}

@ -158,6 +158,9 @@ public class SysMessageService implements ISysMessageService {
// 邮件
if(ImppEnumUtil.MESSAGE_TYPE.MAIL.getValue() == sysMessage.getMessageTypeValue()){
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_MESSAGE_MAIL, JSON.toJSONString(sysMessage));
// 微信信息
}else if(ImppEnumUtil.MESSAGE_TYPE.WORK_WECHAT_TASK_CARD.getValue() == sysMessage.getMessageTypeValue()){
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG, JSON.toJSONString(sysMessage));
// 站内信
}else if(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue() == sysMessage.getMessageTypeValue()){
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_MESSAGE_LETTER,JSON.toJSONString(sysMessage));
@ -251,4 +254,27 @@ public class SysMessageService implements ISysMessageService {
sysRefUserMessageRDao.deleteByIds(ids);
}
/**
*
*
* @param msgId
* @param userId
*/
@Override
public SysRefUserMessage getSysRefUserMessageByMsgIdAndUserId(Long msgId, Long userId) {
return sysRefUserMessageRDao.getByProperty(
new String[]{"messageId", "receiverId"},
new Object[]{msgId, userId}
);
}
/**
* @param sysRefUserMessage
* @return
*/
@Override
public List<SysRefUserMessage> findSysRefUserMessage(SysRefUserMessage sysRefUserMessage) {
return sysRefUserMessageRDao.findByHqlWhere(CoreHqlPack.packHqlSysRefUserMessage(sysRefUserMessage));
}
}

@ -0,0 +1,65 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRefUserExternalService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserExternal;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-03 13:46
* @Modify:
**/
@Service
public class SysRefUserExternalService extends CrudService<SysRefUserExternal> implements ISysRefUserExternalService {
public List<Long> findUserByExternalRefAndValue(Integer externalRef, List<String> valueList) {
List<Long> userIdList = new ArrayList<>();
DdlPackBean ddlPackBean = CoreHqlPack.packHqlFindUserIdByExternalRef(externalRef, valueList);
List<SysRefUserExternal> sysRefUserExternalList = getRepository().findByHqlWhere(ddlPackBean);
if (CollectionUtils.isNotEmpty(sysRefUserExternalList)) {
sysRefUserExternalList.forEach(item -> userIdList.add(item.getUserId()));
}
return userIdList;
}
public List<String> findExternalValueByRefAndUserId(Integer externalRef, List<Long> userIdList) {
List<String> refValList = new ArrayList<>();
DdlPackBean ddlPackBean = CoreHqlPack.packHqlFindExternalRefByUserId(externalRef, userIdList);
List<SysRefUserExternal> sysRefUserExternalList = getRepository().findByHqlWhere(ddlPackBean);
if (CollectionUtils.isNotEmpty(sysRefUserExternalList)) {
sysRefUserExternalList.forEach(item -> refValList.add(item.getRefValue()));
}
return refValList;
}
@Override
public SysRefUserExternal getSysRefUserExternalByRefAndValue(Integer externalRef, String value) {
SysRefUserExternal sysRefUserExternal = new SysRefUserExternal();
sysRefUserExternal.setExternalRef(externalRef);
sysRefUserExternal.setRefValue(value);
return getRepository().getByProperty(CoreHqlPack.packHqlGetSysRefUserExternal(sysRefUserExternal));
}
@Override
public SysRefUserExternal getSysRefUserExternalByRefAndUserId(Integer externalRef, Long userId) {
SysRefUserExternal sysRefUserExternal = new SysRefUserExternal();
sysRefUserExternal.setExternalRef(externalRef);
sysRefUserExternal.setUserId(userId);
return getRepository().getByProperty(CoreHqlPack.packHqlGetSysRefUserExternal(sysRefUserExternal));
}
}

@ -401,6 +401,22 @@ public class SysUserService implements ISysUserService {
public List<SysUser> list() {
LOGGER.debug("平台用户 SYS_USER find All");
return userRDao.findByProperty(
new String[]{"isDeleted","isValid"},
new Object[]{
CommonEnumUtil.IS_DEAL.NO.getValue(),
CommonEnumUtil.IS_VAILD.VAILD.getValue()
});
}
/**
*
*
* @return
*/
@Override
public List<SysUser> listByUserOrganizeCode() {
LOGGER.debug("平台用户 SYS_USER listByUserOrganizeCode");
return userRDao.findByProperty(
new String[]{"isDeleted","isValid","organizeCode"},
new Object[]{
CommonEnumUtil.IS_DEAL.NO.getValue(),

@ -128,6 +128,12 @@
</dependency>
<dependency>
<groupId>i3plus.sdk</groupId>
<artifactId>i3plus-sdk-wechat</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>i3plus.platform</groupId>
<artifactId>i3plus-platform-common</artifactId>
<version>${project.version}</version>

Loading…
Cancel
Save