Merge remote-tracking branch 'remotes/origin/dev' into test

yun-zuoyi
汪云昊 5 years ago
commit 7e7f7ed1ec

@ -0,0 +1,33 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:47
* @Modify:
**/
public interface ISysLogUserLoginService {
/**
*
* @param sysLogUserLogin
* @param pager
* @return
*/
ListPager<SysLogUserLogin> querySysLogUserLoginByPager(SysLogUserLogin sysLogUserLogin, Pager pager);
/**
*
* @param sysLogUserLogin
* @return
*/
List<SysLogUserLogin> findSysUserLoginList(SysLogUserLogin sysLogUserLogin);
}

@ -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,14 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRecord;
import cn.estsh.impp.framework.base.service.ICrudService;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-03 22:01
* @Modify:
**/
public interface ISysOrderNoRecordService extends ICrudService<SysOrderNoRecord> {
}

@ -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));
}
}

@ -1,8 +1,12 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.base.ISysLogService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -12,20 +16,24 @@ import cn.estsh.i3plus.pojo.platform.platbean.*;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;
/**
* @Description :
@ -42,6 +50,13 @@ public class ImppLogController extends CoreBaseController {
@Autowired
private ISysLogService logService;
@Autowired
private EntityManager entityManager;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
/**
*
*
@ -206,11 +221,11 @@ public class ImppLogController extends CoreBaseController {
@ApiOperation(value = "添加操作日志", notes = "添加操作日志,可用于国际化")
public ResultBean logClean(String time) {
try {
Date thisTime = TimeTool.parseDate(time);
String startTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 00:00:00";
String endTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 23:59:59";
logService.actionCleanLog(startTime, endTime);
int to = RedisCacheTool.getSysConfigIntVal(CommonConstWords.LOG_STORAGE_DAYS, CommonConstWords.LOG_STORAGE_DAYS_DEFAULT);
Date thisTime = TimeTool.timeCalc(new Date(), Calendar.DAY_OF_MONTH, -2 - to);
String startTime = TimeTool.getToday(thisTime) + " 00:00:00";
String endTime = TimeTool.getToday(TimeTool.timeCalc(thisTime, Calendar.DAY_OF_MONTH, to)) + " 23:59:59";
logService.actionCleanLog(startTime,endTime);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep).build();
@ -219,4 +234,62 @@ public class ImppLogController extends CoreBaseController {
}
}
/**
*
* @param logOperate
* @param response
* @throws Exception
*/
@GetMapping(value = "/operate/export")
@ApiOperation(value = "操作日志导出", notes = "操作日志导出")
public void exportSysLogUserLogin(SysLogOperate logOperate, HttpServletResponse response) throws Exception {
File file = null;
try {
Pager pager = Pager.defaultPager();
pager.setCurrentPage(0);
pager.setTotalPages(1);
List<SysLogOperate> list = new ArrayList();
do {
pager.next();
ListPager listPager = logService.queryLogOperatePager(logOperate, pager);
if (listPager.getObjectPager().getTotalRows() >= 10000) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION.getCode())
.setErrorDetail("数据过大导出数据建议在10000以内")
.build();
}
list.addAll(listPager.getObjectList());
pager= listPager.getObjectPager();
} while (pager.hasNext());
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
Class logOperateClass =SysLogOperate.class;
String fileName = "log-operate-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
File excle = excelTool.exportData(file, list, logOperateClass, (LinkedHashMap<String, String>) ExcelTool.getColName(logOperateClass));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName,true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(excle)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
}
} finally {
FileUtils.deleteQuietly(file);
}
}
}

@ -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()));
}
}

@ -0,0 +1,101 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogUserLoginService;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:45
* @Modify:
**/
@RestController
@Api(tags = "用户登录日志")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-user-login")
public class SysLogUserLoginController extends CoreBaseController {
@Autowired
private ISysLogUserLoginService sysLogUserLoginService;
@Autowired
private EntityManager entityManager;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@GetMapping("/query")
@ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询")
public ResultBean querySysLogUserLogin(SysLogUserLogin sysLogUserLogin, Pager pager){
try {
ListPager logUserLoginListPager = sysLogUserLoginService.querySysLogUserLoginByPager(sysLogUserLogin, pager);
return ResultBean.success("查询成功").setListPager(logUserLoginListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/export")
@ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询")
public void exportSysLogUserLogin(SysLogUserLogin sysLogUserLogin, HttpServletResponse response) throws Exception {
File file = null;
try {
List<SysLogUserLogin> list = sysLogUserLoginService.findSysUserLoginList(sysLogUserLogin);
ExcelTool excelTool = new ExcelTool(entityManager, redisRes);
String fileName = "log-user-login-" + System.currentTimeMillis() + ".xls";
file = new File(fileName);
file.createNewFile();
File excle = excelTool.exportData(file, list, SysLogUserLogin.class, (LinkedHashMap<String, String>) ExcelTool.getColName(SysLogUserLogin.class));
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件名
response.addHeader("Content-type", FileContentTypeTool.getContentType(StringTool.getStringFileSuffix(fileName,true)));
// 设置文件名
try (BufferedInputStream bis = new BufferedInputStream(new DataInputStream(new FileInputStream(excle)))) {
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
}
} finally {
FileUtils.deleteQuietly(file);
}
}
}

@ -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 : 2020-09-03 11: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));
}
}
}

@ -3,10 +3,12 @@ package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionPlan;
@ -25,7 +27,6 @@ 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 org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
@ -56,16 +57,17 @@ public class PojoVersionQueueReceiver {
@Autowired
private SnowflakeIdMaker snowflakeIdMaker;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
/**
* QUEUE_SWEB_NOTICE
*
* @return
* @throws Exception
*/
@Bean
public Queue getQueueSwebNoticeQueue(){
public Queue getQueueSwebNoticeQueue() {
return new Queue(QUEUE_IMPP_POJO_VERSION);
}
@ -74,39 +76,39 @@ public class PojoVersionQueueReceiver {
boolean isNack = false;
try {
byte[] messageBody = message.getBody();
if(messageBody != null && messageBody.length > 0){
if (messageBody != null && messageBody.length > 0) {
String msg = new String(messageBody);
if(StringUtils.isNotBlank(msg)){
if (StringUtils.isNotBlank(msg)) {
// 当前操作数据
SysPojoVersion afterVersion = JSON.parseObject(msg, SysPojoVersion.class);
// 是否进行版本控制
Object redisValue = redisRes.getObject(CommonConstWords.REDIS_PREFIX_POJO_VERSION + ":" + afterVersion.getSoftType() + ":" + afterVersion.getRefClass());
if(Objects.nonNull(redisValue)){
if (Objects.nonNull(redisValue)) {
SysPojoVersionPlan versionPlan = JSON.parseObject(redisValue.toString(), SysPojoVersionPlan.class);
Map<String,Object> afterMap = JsonUtilTool.decode(afterVersion.getBean(), Map.class);
Map<String, Object> afterMap = JsonUtilTool.decode(afterVersion.getBean(), Map.class);
SysPojoVersionDetail afterVersionDetail = null;
Map<String, String> mapPropDesc = afterVersion.getPojoPropDesc();
// 已存在数据
SysPojoVersion beforeVersion = null;
SysPojoVersionDetail beforeVersionDetail = null;
Map<String,Object> beforeMap = new HashMap<>();
Map<String, Object> beforeMap = new HashMap<>();
Integer versionNo; // 对象版本
CommonEnumUtil.DAO_OPERATE_TYPE operateType = CommonEnumUtil.DAO_OPERATE_TYPE.INSERT; // 操作类型
Map<String, MapDifference.ValueDifference<Object>> differing; // 版本对比
String pojoCompare = null;
Map<String, MapDifference.ValueDifference<Object>> mapDiff; // 版本对比
String userName = StringUtils.isNotBlank(afterVersion.getModifyUser()) ? afterVersion.getModifyUser() : afterVersion.getCreateUser();
if(!"insert".equals(afterVersion.getVersionMethodName())){ // 不是新增数据的时候则需要查询历史记录
if (!"insert".equals(afterVersion.getVersionMethodName())) { // 不是新增数据的时候则需要查询历史记录
// 已存在数据封装
if(afterVersion != null){
if (afterVersion != null) {
afterVersion.setOrderByParam("createDatetime");
afterVersion.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue());
beforeVersion = pojoVersionService.getPojoVersion(afterVersion);
if(Objects.nonNull(beforeVersion)){
if (Objects.nonNull(beforeVersion)) {
beforeVersionDetail = pojoVersionDetailService.get(beforeVersion.getPojoDetailId());
if(Objects.nonNull(beforeVersionDetail)){
if (Objects.nonNull(beforeVersionDetail)) {
beforeMap.putAll(JsonUtilTool.decode(beforeVersionDetail.getPojoAfter(), Map.class));
}
}
@ -119,8 +121,7 @@ public class PojoVersionQueueReceiver {
afterMap.remove(key);
}
differing = Maps.difference(beforeMap, afterMap).entriesDiffering();
mapDiff = Maps.difference(beforeMap, afterMap).entriesDiffering();
// // 忽略版本控制属性
// if(differing != null ){
// for (String key : CommonConstWords.POJO_VERSION_ATTR_INGNORE) {
@ -130,7 +131,7 @@ public class PojoVersionQueueReceiver {
// }
// pojoCompare = differing.toString();
// }
pojoCompare = differing != null && differing.size() > 0 ? differing.toString() : null;
String pojoCompare = mapDiff == null ? null : mapDiff.toString();
versionNo = Objects.nonNull(beforeVersion) ? beforeVersion.getVersionNo() : 0;
afterVersion.setVersionNo(++versionNo);
@ -141,34 +142,121 @@ public class PojoVersionQueueReceiver {
afterVersionDetail = new SysPojoVersionDetail();
afterVersionDetail.setId(snowflakeIdMaker.nextId());
afterVersionDetail.setPojoVersionId(afterVersion.getId());
afterVersionDetail.setPojoBefore(JSON.toJSONString(beforeMap));
afterVersionDetail.setPojoAfter(JSON.toJSONString(afterMap));
afterVersionDetail.setPojoCompare(pojoCompare);
ConvertBean.serviceModelInitialize(afterVersionDetail,userName);
afterVersionDetail.setPojoBeforeTxt(getMapToStr(beforeMap, mapPropDesc));
afterVersionDetail.setPojoAfterTxt(getMapToStr(afterMap, mapPropDesc));
afterVersionDetail.setPojoCompareTxt(getMapDiffToStr(mapDiff, mapPropDesc));
ConvertBean.serviceModelInitialize(afterVersionDetail, userName);
pojoVersionDetailService.insert(afterVersionDetail);
afterVersion.setOperateType(operateType.getValue());
afterVersion.setVersionNo(versionNo);
afterVersion.setPojoCompare(pojoCompare);
afterVersion.setPojoCompareTxt(getMapDiffToStr(mapDiff, mapPropDesc));
afterVersion.setPojoDetailId(afterVersionDetail.getId());
ConvertBean.serviceModelInitialize(afterVersion,userName);
ConvertBean.serviceModelInitialize(afterVersion, userName);
pojoVersionService.insert(afterVersion);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
} finally {
try {
if(isNack){
if (isNack) {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}else{
} else {
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
}
}catch (Exception e){
LOGGER.error("Pojo Version MQ ACK Error Message :{}",e.getMessage());
} catch (Exception e) {
LOGGER.error("Pojo Version MQ ACK Error Message :{}", e.getMessage());
}
}
}
/**
* Map
*
* @param mapData
* @param mapPropDesc
* @return
*/
private String getMapToStr(Map<String, Object> mapData, Map<String, String> mapPropDesc) {
if (mapData == null) {
mapData = new HashMap<>();
}
if (mapPropDesc == null) {
mapData = new HashMap<>();
}
StringBuilder stringBuffer = new StringBuilder();
String key;
for (Map.Entry<String, Object> entry : mapData.entrySet()) {
key = mapPropDesc.get(entry.getKey());
if (key == null) {
key = entry.getKey();
}
stringBuffer.append(key).append(":").append(entry.getValue()).append(",");
}
return stringBuffer.toString();
}
/**
* MapDifference
*
* @param mapData
* @param mapPropDesc
* @return
*/
private String getMapDiffToStr(Map<String, MapDifference.ValueDifference<Object>> mapData, Map<String, String> mapPropDesc) {
if (mapData == null) {
mapData = new HashMap<>();
}
if (mapPropDesc == null) {
mapData = new HashMap<>();
}
StringBuilder stringBuffer = new StringBuilder();
String key;
MapDifference.ValueDifference<Object> valDiff;
for (Map.Entry<String, MapDifference.ValueDifference<Object>> entry : mapData.entrySet()) {
valDiff = entry.getValue();
if (valDiff == null) {
continue;
}
key = mapPropDesc.get(entry.getKey());
if (key == null) {
key = entry.getKey();
}
stringBuffer.append("修改值 ").append(key)
.append(",旧值为 ").append(valDiff.leftValue())
.append(",新值为 ").append(valDiff.rightValue())
.append("。");
}
return stringBuffer.toString();
}
public static void main(String[] args) {
Map<String, String> orginMap = new HashMap<>();
orginMap.put("name", "wyh");
orginMap.put("age", "18");
orginMap.put("sex", "male");
Map<String, String> newMap = new HashMap<>();
newMap.put("name", "hyw");
newMap.put("age", "81");
MapDifference mapDiff = Maps.difference(orginMap, newMap);
System.out.println(mapDiff.entriesDiffering());
System.out.println(mapDiff.entriesInCommon());
System.out.println(mapDiff.entriesOnlyOnLeft());
System.out.println(mapDiff.entriesOnlyOnRight());
System.out.println(mapDiff.areEqual());
System.out.println(ExcelTool.getColName(SysConfig.class));
}
}

@ -1,15 +1,8 @@
package cn.estsh.i3plus.core.apiservice.schedulejob;
import cn.estsh.i3plus.core.api.iservice.base.ISysLogService;
import cn.estsh.i3plus.core.apiservice.serviceimpl.base.SysLogElasticSearchService;
import cn.estsh.i3plus.core.apiservice.serviceimpl.base.SysLogMongoService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogException;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogOperate;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime;
import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
@ -20,6 +13,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Date;
/**
@ -46,9 +40,9 @@ public class CoreLogClearJob extends BaseImppScheduleJob {
@Override
public void executeImppJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
int to = RedisCacheTool.getSysConfigIntVal(CommonConstWords.LOG_STORAGE_DAYS, CommonConstWords.LOG_STORAGE_DAYS_DEFAULT);
Date thisTime = new Date();
String startTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, to)) + " 00:00:00";
String endTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, to)) + " 23:59:59";
Date thisTime = TimeTool.timeCalc(new Date(), Calendar.DAY_OF_MONTH, -2 - to);
String startTime = TimeTool.getToday(thisTime) + " 00:00:00";
String endTime = TimeTool.getToday(TimeTool.timeCalc(thisTime, Calendar.DAY_OF_MONTH, to)) + " 23:59:59";
logService.actionCleanLog(startTime,endTime);
}

@ -3,13 +3,18 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base;
import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRuleService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
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.stereotype.Service;
@ -27,6 +32,7 @@ import static cn.estsh.i3plus.platform.common.util.CommonConstWords.REDIS_PREFIX
**/
@Service
public class SynchronizedService implements ISynchronizedService {
public static final Logger LOGGER = LoggerFactory.getLogger(SynchronizedService.class);
@Autowired
private ISysOrderNoRuleService sysOrderNoRuleService;
@ -34,6 +40,9 @@ public class SynchronizedService implements ISynchronizedService {
@Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public synchronized SysOrderNoRule nextOrderNo(String code) {
List<SysOrderNoRule> list = nextOrderNo(code, NumberUtils.INTEGER_ONE);
@ -84,7 +93,16 @@ public class SynchronizedService implements ISynchronizedService {
codeRole.setSerialNo(redisRes.putObjAdditational(redisKey, codeRole.getSerialNo(), incr)-incr);
// 生成单号更缓存
return sysOrderNoRuleService.doGetSysOrderNoRuleByNum(codeRole, num);
List<SysOrderNoRule> orderNoRuleList = sysOrderNoRuleService.doGetSysOrderNoRuleByNum(codeRole, num);
try {
rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_ORDER_NO_RECORD, JsonUtilTool.encode(orderNoRuleList));
} catch (Exception e) {
LOGGER.error("单号记录推送异常", e);
}
// 生成单号更缓存
return orderNoRuleList;
}
}

@ -20,7 +20,10 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Description :
@ -202,50 +205,25 @@ public class SysLogElasticSearchService implements ISysLogService {
@Override
public void actionCleanLog(String startTime, String endTime) {
ElasticSearchTool.reload();
try{
SysLogOperate operate = new SysLogOperate();
operate.setCreateDatetime(startTime);
operate.setCreateDateTimeStart(startTime);
operate.setCreateDateTimeEnd(endTime);
deleteLogOperate(operate);
}catch (Exception e){
}
try {
SysLogSystem system = new SysLogSystem();
system.setCreateDatetime(startTime);
system.setCreateDateTimeStart(startTime);
system.setCreateDateTimeEnd(endTime);
deleteLogSystem(system);
ElasticSearchTool.deleteIndex(ElasticSearchPack.getIndexName(SysLogSystem.class),startTime,endTime);
}catch (Exception e){
LOGGER.error("清除系统日志异常",e);
}
try {
SysLogException exception = new SysLogException();
exception.setCreateDatetime(startTime);
exception.setCreateDateTimeStart(startTime);
exception.setCreateDateTimeEnd(endTime);
deleteLogException(exception);
ElasticSearchTool.deleteIndex(ElasticSearchPack.getIndexName(SysLogOperate.class),startTime,endTime);
}catch (Exception e){
LOGGER.error("清除系统操作日志异常",e);
}
try {
SysLogTaskTime taskTime = new SysLogTaskTime();
taskTime.setCreateDatetime(startTime);
taskTime.setCreateDateTimeStart(startTime);
taskTime.setCreateDateTimeEnd(endTime);
deleteLogTaskTime(taskTime);
ElasticSearchTool.deleteIndex(ElasticSearchPack.getIndexName(SysLogException.class),startTime,endTime);
}catch (Exception e){
LOGGER.error("清除系统异常日志异常",e);
}
try {
SysLogConsole console = new SysLogConsole();
console.setCreateDatetime(startTime);
console.setCreateDateTimeStart(startTime);
console.setCreateDateTimeEnd(endTime);
deleteLogConsoleTime(console);
ElasticSearchTool.deleteIndex(ElasticSearchPack.getIndexName(SysLogTaskTime.class),startTime,endTime);
}catch (Exception e){
LOGGER.error("清除定时任务日志异常",e);
}
}

@ -0,0 +1,55 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogUserLoginService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-08-31 11:51
* @Modify:
**/
@Service
public class SysLogUserLoginService implements ISysLogUserLoginService {
@Autowired
private SysLogUserLoginRepository sysLogUserLoginRDao;
/**
*
*
* @param sysLogUserLogin
* @param pager
* @return
*/
@Override
public ListPager<SysLogUserLogin> querySysLogUserLoginByPager(SysLogUserLogin sysLogUserLogin, Pager pager) {
DdlPackBean ddlPackBean = CoreHqlPack.packHqlQuerySysLogUserLogin(sysLogUserLogin);
int count = sysLogUserLoginRDao.findByHqlWhereCount(ddlPackBean);
PagerHelper.getPager(pager, count);
return new ListPager<>(sysLogUserLoginRDao.findByHqlWherePage(ddlPackBean, pager), pager);
}
/**
*
*
* @param sysLogUserLogin
* @return
*/
@Override
public List<SysLogUserLogin> findSysUserLoginList(SysLogUserLogin sysLogUserLogin) {
DdlPackBean ddlPackBean = CoreHqlPack.packHqlQuerySysLogUserLogin(sysLogUserLogin);
return sysLogUserLoginRDao.findByHqlWhere(ddlPackBean);
}
}

@ -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,17 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRecordService;
import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRecord;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-03 22:02
* @Modify:
**/
@Service
public class SysOrderNoRecordService extends CrudService<SysOrderNoRecord> implements ISysOrderNoRecordService {
}

@ -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