Commit 2a00277c by guojuxing

门店选择器日志接口调整

parent 90ce1e53
...@@ -29,7 +29,6 @@ import com.gic.plug.web.qo.StoreWidgetCountQO; ...@@ -29,7 +29,6 @@ import com.gic.plug.web.qo.StoreWidgetCountQO;
import com.gic.plug.web.qo.StoreWidgetQO; import com.gic.plug.web.qo.StoreWidgetQO;
import com.gic.plug.web.strategy.init.StrategyInit; import com.gic.plug.web.strategy.init.StrategyInit;
import com.gic.plug.web.utils.StoreResourceAuthUtils; import com.gic.plug.web.utils.StoreResourceAuthUtils;
import com.gic.plug.web.utils.StoreWidgetLogUtils;
import com.gic.plug.web.utils.storeresourceauth.StoreResourceUtils; import com.gic.plug.web.utils.storeresourceauth.StoreResourceUtils;
import com.gic.plug.web.vo.*; import com.gic.plug.web.vo.*;
import com.gic.store.constant.StoreESFieldsEnum; import com.gic.store.constant.StoreESFieldsEnum;
...@@ -60,8 +59,6 @@ public class StoreController { ...@@ -60,8 +59,6 @@ public class StoreController {
@Autowired @Autowired
private UserResourceApiService userResourceApiService; private UserResourceApiService userResourceApiService;
@Autowired @Autowired
private StoreWidgetLogUtils storeWidgetLogUtils;
@Autowired
private StoreWidgetLogApiService storeWidgetLogApiService; private StoreWidgetLogApiService storeWidgetLogApiService;
@Autowired @Autowired
private ResourceGroupApiService resourceGroupApiService; private ResourceGroupApiService resourceGroupApiService;
...@@ -133,18 +130,15 @@ public class StoreController { ...@@ -133,18 +130,15 @@ public class StoreController {
/** /**
* 更新权限范围 * 更新权限范围
* @param storeWidgetId * @param storeWidgetId
* @param authSearchParam
* @return * @return
*/ */
@RequestMapping("update-auth-search-param") @RequestMapping("update-auth-search-param")
public RestResponse updateAuth(Integer storeWidgetId, String authSearchParam) { public RestResponse updateAuth(Integer storeWidgetId) {
StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO(); StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO();
storeWidgetDTO.setStoreWidgetId(storeWidgetId); storeWidgetDTO.setStoreWidgetId(storeWidgetId);
storeWidgetDTO.setAuthSearchParam(authSearchParam); storeWidgetDTO.setUserId(UserDetailUtils.getUserDetail().getUserId());
ServiceResponse<Integer> response = storeWidgetApiService.updateAuth(storeWidgetDTO); ServiceResponse<Integer> response = storeWidgetApiService.updateAuth(storeWidgetDTO);
if (response.isSuccess()) { if (response.isSuccess()) {
//写日志
storeWidgetLogUtils.saveStoreWidgetWhenEditAuth(storeWidgetId, authSearchParam);
return RestResponse.success(); return RestResponse.success();
} }
return RestResponse.failure(response.getCode(), response.getMessage()); return RestResponse.failure(response.getCode(), response.getMessage());
...@@ -154,22 +148,17 @@ public class StoreController { ...@@ -154,22 +148,17 @@ public class StoreController {
public RestResponse saveStoreWidget(@RequestBody StoreWidgetQO storeWidgetQO){ public RestResponse saveStoreWidget(@RequestBody StoreWidgetQO storeWidgetQO){
//参数组装 //参数组装
StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO(); StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO();
//前端约定了,该字段不会传值
//问题:跟下面写日志接口有重合调用查询旧纪录接口
storeWidgetDTO.setAuthSearchParam(storeWidgetLogUtils.getAuthSearchParamData(
storeWidgetQO.getStoreWidgetId(),
storeWidgetQO.getAuthSearchParam()));
storeWidgetDTO.setSearchParam(storeWidgetQO.getSearchParam()); storeWidgetDTO.setSearchParam(storeWidgetQO.getSearchParam());
storeWidgetDTO.setStoreWidgetId(storeWidgetQO.getStoreWidgetId()); storeWidgetDTO.setStoreWidgetId(storeWidgetQO.getStoreWidgetId());
storeWidgetDTO.setStoreWidgetId(null);
storeWidgetDTO.setWriteBackParam(storeWidgetQO.getWriteBackParam()); storeWidgetDTO.setWriteBackParam(storeWidgetQO.getWriteBackParam());
storeWidgetDTO.setAuthMode(storeWidgetQO.getAuthMode()); storeWidgetDTO.setAuthMode(storeWidgetQO.getAuthMode());
storeWidgetDTO.setScreenDetailData(storeWidgetQO.getScreenDetailData());
storeWidgetDTO.setScreenSimpleData(storeWidgetQO.getScreenSimpleData());
storeWidgetDTO.setUserId(UserDetailUtils.getUserDetail().getUserId());
ServiceResponse<Integer> storeWidgetResponse = this.storeWidgetApiService.saveAuthStoreWidget(storeWidgetDTO); ServiceResponse<Integer> storeWidgetResponse = this.storeWidgetApiService.saveAuthStoreWidget(storeWidgetDTO);
if (storeWidgetResponse.isSuccess()) { if (storeWidgetResponse.isSuccess()) {
//写日志
storeWidgetLogUtils.saveStoreWidgetLog(storeWidgetQO, storeWidgetResponse.getResult());
return RestResponse.success(storeWidgetResponse.getResult()); return RestResponse.success(storeWidgetResponse.getResult());
} }
return RestResponse.success(); return RestResponse.success();
......
...@@ -15,6 +15,16 @@ public class StoreWidgetQO implements Serializable { ...@@ -15,6 +15,16 @@ public class StoreWidgetQO implements Serializable {
private String writeBackParam; private String writeBackParam;
private Integer authMode; private Integer authMode;
/**
* 前端需要字段(条件筛选)
*/
private String screenDetailData;
/**
* 前端需要字段(条件筛选)
*/
private String screenSimpleData;
public Integer getStoreWidgetId() { public Integer getStoreWidgetId() {
return storeWidgetId; return storeWidgetId;
} }
...@@ -54,4 +64,22 @@ public class StoreWidgetQO implements Serializable { ...@@ -54,4 +64,22 @@ public class StoreWidgetQO implements Serializable {
public void setAuthMode(Integer authMode) { public void setAuthMode(Integer authMode) {
this.authMode = authMode; this.authMode = authMode;
} }
public String getScreenDetailData() {
return screenDetailData;
}
public StoreWidgetQO setScreenDetailData(String screenDetailData) {
this.screenDetailData = screenDetailData;
return this;
}
public String getScreenSimpleData() {
return screenSimpleData;
}
public StoreWidgetQO setScreenSimpleData(String screenSimpleData) {
this.screenSimpleData = screenSimpleData;
return this;
}
} }
package com.gic.plug.web.utils;
import com.gic.store.dto.StoreWidgetLogDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.enterprise.utils.UserDetailUtils;
import com.gic.plug.web.qo.StoreWidgetQO;
import com.gic.store.dto.StoreWidgetDTO;
import com.gic.store.dto.StoreWidgetLogSaveDTO;
import com.gic.store.service.StoreWidgetApiService;
import com.gic.store.service.StoreWidgetLogApiService;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 门店选择器操作日志工具类
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/13 7:54 PM

*/
@Component
public class StoreWidgetLogUtils {
private static Logger logger = LogManager.getLogger(StoreWidgetLogUtils.class);
@Autowired
private StoreWidgetLogApiService storeWidgetLogApiService;
@Autowired
private StoreWidgetApiService storeWidgetApiService;
/**
* 写门店选择器日志
* @param storeWidgetQO
* @param newStoreWidgetId
*/
public void saveStoreWidgetLog(StoreWidgetQO storeWidgetQO, Integer newStoreWidgetId) {
Integer storeWidgetId = storeWidgetQO.getStoreWidgetId();
//如果是编辑,则会有值,用于判断创建还是编辑
StoreWidgetDTO oldStoreWidget = getOldStoreWidget(storeWidgetId);
//操作日志对象组装
StoreWidgetLogSaveDTO logSaveDTO;
if (oldStoreWidget == null) {
logSaveDTO = buildStoreWidgetLogWhenCreate(storeWidgetQO, newStoreWidgetId);
} else {
//copy旧门店选择器ID上挂载的日志到新的ID上面
copyStoreWidgetLog(storeWidgetId, newStoreWidgetId);
//新门店选择器ID上新增新的日志
logSaveDTO = buildStoreWidgetLogWhenUpdate(oldStoreWidget, storeWidgetQO, newStoreWidgetId);
}
//写日志
storeWidgetLogApiService.saveStoreWidgetLog(logSaveDTO);
}
/**
* 因为该字段和其他数据分离开来,需要根据ID查询旧记录数据
* @param storeWidgetId
* @param authSearchParam
* @return
*/
public String getAuthSearchParamData(Integer storeWidgetId, String authSearchParam) {
if (StringUtils.isBlank(authSearchParam)) {
StoreWidgetDTO oldStoreWidget = getOldStoreWidget(storeWidgetId);
if (oldStoreWidget != null) {
return oldStoreWidget.getAuthSearchParam();
}
}
return authSearchParam;
}
/**
* 只更新权限范围数据的日志
* @param storeWidgetId
* @param authSearchParam
*/
public void saveStoreWidgetWhenEditAuth(Integer storeWidgetId, String authSearchParam) {
StoreWidgetDTO oldStoreWidget = getOldStoreWidget(storeWidgetId);
if (oldStoreWidget != null) {
//操作日志对象组装
StoreWidgetQO storeWidgetQO = new StoreWidgetQO();
storeWidgetQO.setAuthSearchParam(authSearchParam);
StoreWidgetLogSaveDTO logSaveDTO = buildStoreWidgetLogWhenUpdate(oldStoreWidget, storeWidgetQO, storeWidgetId);
//写日志
storeWidgetLogApiService.saveStoreWidgetLog(logSaveDTO);
}
}
/**
* copy旧门店选择器ID上挂载的日志到新的ID上面
* @param oldStoreWidgetId
* @param newStoreWidgetId
*/
private void copyStoreWidgetLog(Integer oldStoreWidgetId, Integer newStoreWidgetId) {
//查询旧uuid上面挂载的日志数据
ServiceResponse<List<StoreWidgetLogDTO>> response = storeWidgetLogApiService.listStoreWidgetLog(oldStoreWidgetId);
if (response.isSuccess()) {
List<StoreWidgetLogDTO> list = response.getResult();
if (CollectionUtils.isNotEmpty(list)) {
//复制数据到新uuid上面
List<StoreWidgetLogDTO> copyList = list.stream().map(e ->
e.setStoreWidgetId(newStoreWidgetId)
.setStoreWidgetLogId(null)).collect(Collectors.toList());
//
storeWidgetLogApiService.tmpInsert(copyList);
}
}
}
private StoreWidgetDTO getOldStoreWidget(Integer storeWidgetId) {
if (storeWidgetId == null) {
return null;
}
ServiceResponse<StoreWidgetDTO> oldStoreWidgetResponse = storeWidgetApiService.getStoreWidget(storeWidgetId);
if (!oldStoreWidgetResponse.isSuccess()) {
logger.info("根据门店选择器ID:{},查询不到记录", storeWidgetId);
return null;
}
return oldStoreWidgetResponse.getResult();
}
/**
* 组装日志对象-编辑场景
* @param oldStoreWidget 老数据
* @param storeWidgetQO 前端传入的参数
* @param newStoreWidgetId 新增门店选择器产生的ID
* @return
*/
private static StoreWidgetLogSaveDTO buildStoreWidgetLogWhenUpdate(StoreWidgetDTO oldStoreWidget, StoreWidgetQO storeWidgetQO,
Integer newStoreWidgetId) {
String authSearchParam = storeWidgetQO.getAuthSearchParam();
String searchParam = storeWidgetQO.getSearchParam();
//操作日志对象组装
StoreWidgetLogSaveDTO logSaveDTO = buildCommon(newStoreWidgetId);
//编辑
//编辑类型
logSaveDTO.setOperationType(2);
//是否是权限变更范围类型
boolean isNotAuthChangeType = StringUtils.isBlank(authSearchParam) || authSearchParam.equals(oldStoreWidget.getAuthSearchParam());
if (isNotAuthChangeType) {
//编辑筛选条件类型
logSaveDTO.setLogType(2);
logSaveDTO.setSearchParamBefore(oldStoreWidget.getSearchParam());
if (StringUtils.isNotBlank(searchParam)) {
logSaveDTO.setSearchParamAfter(searchParam);
}
} else {
//权限变更范围类型
logSaveDTO.setLogType(1);
//记录变更前的权限范围数据
logSaveDTO.setSearchParamBefore(oldStoreWidget.getAuthSearchParam());
if (StringUtils.isNotBlank(authSearchParam)) {
//记录变更后的权限范围数据
logSaveDTO.setSearchParamAfter(authSearchParam);
}
}
return logSaveDTO;
}
/**
* 组装日志对象-创建场景
* @param storeWidgetQO 前端传入的参数
* @param newStoreWidgetId 新增门店选择器产生的ID
* @return
*/
private static StoreWidgetLogSaveDTO buildStoreWidgetLogWhenCreate(StoreWidgetQO storeWidgetQO, Integer newStoreWidgetId) {
String authSearchParam = storeWidgetQO.getAuthSearchParam();
String searchParam = storeWidgetQO.getSearchParam();
//操作日志对象组装
StoreWidgetLogSaveDTO logSaveDTO = buildCommon(newStoreWidgetId);
//创建
logSaveDTO.setOperationType(1);
boolean isAuthChangeType = StringUtils.isNotBlank(authSearchParam);
if (isAuthChangeType) {
//权限变更范围类型
logSaveDTO.setLogType(1);
logSaveDTO.setSearchParamAfter(authSearchParam);
} else {
//编辑筛选条件类型
logSaveDTO.setLogType(2);
logSaveDTO.setSearchParamAfter(searchParam);
}
return logSaveDTO;
}
private static StoreWidgetLogSaveDTO buildCommon(Integer newStoreWidgetId) {
StoreWidgetLogSaveDTO logSaveDTO = new StoreWidgetLogSaveDTO();
logSaveDTO.setOperationId(UserDetailUtils.getUserDetail().getUserId());
logSaveDTO.setEnterpriseId(UserDetailUtils.getUserDetail().getEnterpriseId());
logSaveDTO.setStoreWidgetId(newStoreWidgetId);
return logSaveDTO;
}
}
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