Commit d8aa270b authored by suhuiguang's avatar suhuiguang

feat(cm):操作日志

1.增加记录操作人名称及所在公司功能需要记录日志注解+RequireUserDeyails注解结合使用
parent eb4886e5
......@@ -60,6 +60,21 @@
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-event</artifactId>
<version>${tyboot-version}</version>
<exclusions>
<exclusion>
<groupId>org.typroject</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-core-auth</artifactId>
<version>${tyboot-version}</version>
<exclusions>
......
package com.yeejoin.amos.boot.biz.common.annotation;
import java.lang.annotation.*;
/**
* @author DELL
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface RequireUserDetails {
boolean needFill() default true;
}
package com.yeejoin.amos.boot.biz.common.aop;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.annotation.RequireUserDetails;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.enums.RequestContextExtra;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
@Component
@Slf4j
@Aspect
@RequiredArgsConstructor
public class UserDetailAspect {
private final RedisUtils redisUtils;
@Before("@annotation(requireUserDetails)")
public void enrichUserContext(JoinPoint joinPoint, RequireUserDetails requireUserDetails) {
if (requireUserDetails.needFill()) {
ReginParams reginParams = loadUserContext();
RequestContext.setAttribute(RequestContextExtra.REAL_NAME, reginParams.getUserModel().getRealName());
RequestContext.setAttribute(RequestContextExtra.COMPANY_NAME, reginParams.getCompany().getCompanyName());
}
}
/**
* 用户选择信心redis获取
**/
private ReginParams loadUserContext() {
return JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
}
}
package com.yeejoin.amos.boot.biz.common.enums;
import org.typroject.tyboot.core.foundation.context.ContextEntityType;
public enum RequestContextExtra implements ContextEntityType {
REAL_NAME, COMPANY_NAME,
}
......@@ -90,17 +90,6 @@
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-event</artifactId>
<version>${tyboot-version}</version>
<exclusions>
<exclusion>
<groupId>org.typroject</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-opendata</artifactId>
<version>${tyboot-version}</version>
<exclusions>
......
......@@ -67,4 +67,10 @@ public class ESUserOperateLogDto {
@Field(type = FieldType.Text)
private String requestDate;
@Field(type = FieldType.Text)
private String realName;
@Field(type = FieldType.Text)
private String companyName;
}
......@@ -15,6 +15,10 @@ import org.typroject.tyboot.component.event.RestEventHandler;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Optional;
import static com.yeejoin.amos.boot.biz.common.enums.RequestContextExtra.COMPANY_NAME;
import static com.yeejoin.amos.boot.biz.common.enums.RequestContextExtra.REAL_NAME;
/**
* @author Administrator
......@@ -56,6 +60,8 @@ public class OperateLogRestEventHandler extends RestEventHandler {
userOperateLogDto.setProduct(restEvent.getRequestContextModel().getProduct());
userOperateLogDto.setLoginId(restEvent.getRequestContextModel().getLoginId());
userOperateLogDto.setRequestDate(DateUtil.formatDateTime(date));
userOperateLogDto.setRealName(Optional.ofNullable(restEvent.getRequestContextModel().getAttribute(REAL_NAME)).map(Object::toString).orElse(""));
userOperateLogDto.setCompanyName(Optional.ofNullable(restEvent.getRequestContextModel().getAttribute(COMPANY_NAME)).map(Object::toString).orElse(""));
esUserOperateLogDao.save(userOperateLogDto);
watch.stop();
log.info("用户操作日志写入es耗时:{}秒", watch.getTotalTimeSeconds());
......
......@@ -23,21 +23,6 @@
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.typroject</groupId>
<artifactId>tyboot-component-event</artifactId>
<version>${tyboot-version}</version>
<exclusions>
<exclusion>
<groupId>org.typroject</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.biz.common.annotation.FieldMapping;
import com.yeejoin.amos.boot.biz.common.annotation.RequireUserDetails;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
......@@ -89,6 +90,7 @@ public class BizDataChangeController extends BaseController {
)
})
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<String> saveV2(@ApiParam(value = "设备或者装置唯一标识") @RequestParam String bizId,
@ApiParam(required = true, value = "单据编号或者record") @RequestParam String applyNo,
@ApiParam(required = true, value = "业务类型") @PathVariable String bizType,
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.annotation.RequireUserDetails;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.JgCertificateReplenishDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgEquipTransferDto;
......@@ -46,7 +47,6 @@ public class JgCertificateReplenishController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryEquByCertificateSeqList")
@ApiOperation(httpMethod = "GET", value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
@RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Map<String, Object>> queryEquByCertificateSeqList(@RequestParam(value = "record") String sequenceNbr) {
return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryEquByCertSeq(sequenceNbr));
}
......@@ -100,7 +100,6 @@ public class JgCertificateReplenishController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
@RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Page<JgCertificateReplenish>> queryForPage(JgCertificateReplenishDto dto,
@ApiParam(value = "当前页码", required = true) @RequestParam(value = "current", defaultValue = "1") int current,
@ApiParam(value = "每页大小", required = true) @RequestParam(value = "size", defaultValue = "20") int size,
......@@ -136,7 +135,6 @@ public class JgCertificateReplenishController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/details")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单据", notes = "根据sequenceNbr查询单据")
@RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Map<String, Object>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryBySequenceNbr(sequenceNbr));
}
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.annotation.RequireUserDetails;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcBizManageModel;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcBizManageServiceImpl;
......@@ -44,6 +45,7 @@ public class JyjcBizManageController extends BaseController {
@PutMapping(value = "/{appSeq}/area-enable")
@ApiOperation(httpMethod = "PUT", value = "企业区域启用-市局使用", notes = "企业区域启用-市局使用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<Boolean> enableBatch(@PathVariable String appSeq) {
return ResponseHelper.buildResponse(jyjcBizManageService.enable(appSeq, getSelectedOrgInfo().getCompany()));
}
......@@ -52,6 +54,7 @@ public class JyjcBizManageController extends BaseController {
@PutMapping(value = "/{appSeq}/area-disable")
@ApiOperation(httpMethod = "PUT", value = "企业区域停用-市局使用", notes = "企业区域停用-市局使用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<Boolean> disableBatch(@PathVariable String appSeq) {
return ResponseHelper.buildResponse(jyjcBizManageService.disable(appSeq, getSelectedOrgInfo().getCompany()));
}
......@@ -61,6 +64,7 @@ public class JyjcBizManageController extends BaseController {
@PostMapping(value = "/{appSeq}/licence")
@ApiOperation(httpMethod = "POST", value = "资质停起用-省局使用", notes = "资质停起用-省局使用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<Boolean> licenceEdit(@PathVariable String appSeq,
@RequestBody Map<String, Object> updateDto) {
List<BaseUnitLicence> lis = JSONObject.parseArray(JSONObject.toJSONString(updateDto.get("licences")), BaseUnitLicence.class);
......@@ -87,6 +91,7 @@ public class JyjcBizManageController extends BaseController {
@PutMapping(value = "/{appSeq}/expireDate")
@ApiOperation(httpMethod = "PUT", value = "业务有效期维护-省局使用", notes = "业务有效期维护-省局使用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<Boolean> expireDateEdit(@PathVariable String appSeq,
@RequestParam String newExpiryDate) {
return ResponseHelper.buildResponse(jyjcBizManageService.expireDateEdit(appSeq, newExpiryDate));
......@@ -110,6 +115,7 @@ public class JyjcBizManageController extends BaseController {
@PutMapping(value = "/region/{appSeq}/status")
@ApiOperation(httpMethod = "PUT", value = "启用停用区域维护-省局使用", notes = "启用停用区域维护-省局使用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<Boolean> regionStatusEdit(@PathVariable String appSeq,
@RequestBody Map<String, Object> data) {
return ResponseHelper.buildResponse(jyjcBizManageService.regionStatusEdit(appSeq, data));
......
......@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.annotation.RequireUserDetails;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
......@@ -391,6 +392,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@DeleteMapping(value = "/deleteBatch")
@ApiOperation(httpMethod = "DELETE", value = "批量删除企业", notes = "批量删除企业")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<List<TzBaseEnterpriseInfo>> deleteBatch(@RequestParam String ids) {
return ResponseHelper.buildResponse(enterpriseManageService.delete(Arrays.asList(ids.split(","))));
}
......@@ -399,6 +401,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@PutMapping(value = "/enableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业启用", notes = "企业启用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<ReginParams> enableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.enable(Arrays.asList(ids.split(",")), new JSONObject(Optional.ofNullable(params).orElse(new JSONObject())), getSelectedOrgInfo()));
}
......@@ -407,6 +410,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@PutMapping(value = "/disableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业停用", notes = "企业停用")
@RestEventTrigger(value = "operateLogRestEventHandler")
@RequireUserDetails
public ResponseModel<ReginParams> disableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.disable(Arrays.asList(ids.split(",")), new JSONObject(params), getSelectedOrgInfo()));
}
......
......@@ -9,17 +9,17 @@
</parent>
<packaging>pom</packaging>
<modules>
<module>amos-boot-module-tcm</module>
<module>amos-boot-module-jg</module>
<module>amos-boot-module-jyjc</module>
<module>amos-boot-module-statistics</module>
<module>amos-boot-module-ymt</module>
<module>amos-boot-module-96333</module>
<module>amos-boot-module-common</module>
<module>amos-boot-module-cylinder</module>
<module>amos-boot-module-jczs</module>
<module>amos-boot-module-ymt</module>
<module>amos-boot-module-tcm</module>
<module>amos-boot-module-app</module>
<module>amos-boot-module-tzspatrol</module>
<module>amos-boot-module-statistics</module>
<module>amos-boot-module-ys</module>
</modules>
<properties>
......@@ -49,6 +49,7 @@
<dependency>
<groupId>com.yeejoin</groupId>
<artifactId>amos-feign-workflow</artifactId>
<version>${amos.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -26,7 +26,7 @@
<springboot.version>2.3.11.RELEASE</springboot.version>
<springcloud.version>Hoxton.SR8</springcloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<tyboot-version>1.1.23-SNAPSHOT</tyboot-version>
<tyboot-version>1.1.26-TZS</tyboot-version>
<amos.version>1.10.8-TZS</amos.version>
<itext.version>7.1.1</itext.version>
<elasticsearch.version>7.15.2</elasticsearch.version>
......
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