Commit ce288612 by guojuxing

门店选择器变更日志

parent 9323e1bd
package com.gic.plug.web.controller; package com.gic.plug.web.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.gic.auth.dto.ResourceGroupDTO;
import com.gic.auth.service.ResourceGroupApiService;
import com.gic.enterprise.error.ErrorCode;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.store.dto.StoreWidgetLogDTO;
import com.gic.store.service.StoreWidgetLogApiService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -16,27 +33,15 @@ import com.gic.plug.web.qo.StoreWidgetCountQO; ...@@ -16,27 +33,15 @@ 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.StoreRegionAuthUtil; import com.gic.plug.web.utils.StoreRegionAuthUtil;
import com.gic.plug.web.utils.StoreWidgetLogUtils;
import com.gic.plug.web.vo.*; import com.gic.plug.web.vo.*;
import com.gic.search.business.api.constant.enums.OperateEnum;
import com.gic.store.constant.StoreESFieldsEnum; import com.gic.store.constant.StoreESFieldsEnum;
import com.gic.store.dto.StoreInfoDTO;
import com.gic.store.dto.StoreRegionDTO; import com.gic.store.dto.StoreRegionDTO;
import com.gic.store.dto.StoreSearchDTO; import com.gic.store.dto.StoreSearchDTO;
import com.gic.store.dto.StoreWidgetDTO; import com.gic.store.dto.StoreWidgetDTO;
import com.gic.store.service.StoreApiService; import com.gic.store.service.StoreApiService;
import com.gic.store.service.StoreRegionApiService; import com.gic.store.service.StoreRegionApiService;
import com.gic.store.service.StoreWidgetApiService; import com.gic.store.service.StoreWidgetApiService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/** /**
* @author zhiwj * @author zhiwj
...@@ -58,6 +63,12 @@ public class StoreController { ...@@ -58,6 +63,12 @@ public class StoreController {
private UserResourceApiService userResourceApiService; private UserResourceApiService userResourceApiService;
@Autowired @Autowired
private ResourceApiService resourceApiService; private ResourceApiService resourceApiService;
@Autowired
private StoreWidgetLogUtils storeWidgetLogUtils;
@Autowired
private StoreWidgetLogApiService storeWidgetLogApiService;
@Autowired
private ResourceGroupApiService resourceGroupApiService;
@RequestMapping("/list-store-region") @RequestMapping("/list-store-region")
public RestResponse listStoreRegion(String search) { public RestResponse listStoreRegion(String search) {
...@@ -116,29 +127,59 @@ public class StoreController { ...@@ -116,29 +127,59 @@ public class StoreController {
@RequestMapping("save-store-widget") @RequestMapping("save-store-widget")
public RestResponse saveStoreWidget(@RequestBody StoreWidgetQO storeWidgetQO){ public RestResponse saveStoreWidget(@RequestBody StoreWidgetQO storeWidgetQO){
//参数组装
StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO(); StoreWidgetDTO storeWidgetDTO = new StoreWidgetDTO();
storeWidgetDTO.setAuthSearchParam(storeWidgetQO.getAuthSearchParam()); storeWidgetDTO.setAuthSearchParam(storeWidgetQO.getAuthSearchParam());
storeWidgetDTO.setSearchParam(storeWidgetQO.getSearchParam()); storeWidgetDTO.setSearchParam(storeWidgetQO.getSearchParam());
storeWidgetDTO.setStoreWidgetId(storeWidgetQO.getStoreWidgetId()); storeWidgetDTO.setStoreWidgetId(storeWidgetQO.getStoreWidgetId());
if(storeWidgetQO.getStoreWidgetId()!= null){ storeWidgetDTO.setStoreWidgetId(null);
StoreWidgetDTO old = this.storeWidgetApiService.getStoreWidget(storeWidgetQO.getStoreWidgetId()).getResult();
if(old != null){
if(StringUtils.isNotBlank(storeWidgetQO.getAuthSearchParam()) && !storeWidgetQO.getAuthSearchParam().equals(old.getAuthSearchParam())){
storeWidgetDTO.setStoreWidgetId(null);
} else if(StringUtils.isBlank(storeWidgetQO.getAuthSearchParam()) && StringUtils.isNotBlank(storeWidgetQO.getAuthSearchParam())){
storeWidgetDTO.setStoreWidgetId(null);
}
}
}
storeWidgetDTO.setWriteBackParam(storeWidgetQO.getWriteBackParam()); storeWidgetDTO.setWriteBackParam(storeWidgetQO.getWriteBackParam());
storeWidgetDTO.setAuthMode(storeWidgetQO.getAuthMode()); storeWidgetDTO.setAuthMode(storeWidgetQO.getAuthMode());
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();
} }
/**
* 门店选择器,编辑的时候,获取最新一名操作人信息
* @param storeWidgetId
* @return
*/
@RequestMapping("get-store-widget-last-operator")
public RestResponse getStoreWidgetLastOperator(Integer storeWidgetId) {
return ResultControllerUtils.commonResultOne(storeWidgetLogApiService.getLastOperationInfo(storeWidgetId), StoreWidgetLogVO.class);
}
/**
* 根据用户ID查询对应的资源组-门店选择器数据
* @param userId
* @return
* @throws ClassNotFoundException
*/
@RequestMapping("get-user-store-widget-resource")
public RestResponse getUserStoreWidgetResource(Integer userId) throws ClassNotFoundException{
return RestResponse.success(getStoreResourceByUser(userId));
}
/**
* 查询门店选择器的操作日志
* @param storeWidgetId
* @param pageNum
* @param pageSize
* @return
*/
@RequestMapping("list-store-widget-log")
public RestResponse listStoreWidgetLog(Integer storeWidgetId, Integer pageNum, Integer pageSize) {
return ResultControllerUtils
.commonPageResult(storeWidgetLogApiService.pageStoreWidgetLog(storeWidgetId, pageNum, pageSize), StoreWidgetLogVO.class);
}
@RequestMapping("get-store-widget") @RequestMapping("get-store-widget")
public RestResponse getStoreWidget(Integer storeWidgetId) throws ClassNotFoundException { public RestResponse getStoreWidget(Integer storeWidgetId) throws ClassNotFoundException {
ServiceResponse<StoreWidgetDTO> response = this.storeWidgetApiService.getStoreWidget(storeWidgetId); ServiceResponse<StoreWidgetDTO> response = this.storeWidgetApiService.getStoreWidget(storeWidgetId);
...@@ -155,24 +196,39 @@ public class StoreController { ...@@ -155,24 +196,39 @@ public class StoreController {
@RequestMapping("get-user-store-resource") @RequestMapping("get-user-store-resource")
@ResponseBody @ResponseBody
public RestResponse getUserStoreResouce() throws ClassNotFoundException { public RestResponse getUserStoreResource() throws ClassNotFoundException {
if(UserDetailUtils.getUserDetail().getUserInfo().getSuperAdmin() != 1){ //管理员
ServiceResponse<UserResourceDTO> resource = this.userResourceApiService.getResourceByUserId(UserDetailUtils.getUserDetail().getUserId()); if (UserDetailUtils.getUserDetail().getUserInfo().getSuperAdmin() != 1) {
if (resource.isSuccess() && resource.getResult() != null) { return RestResponse.success(getStoreResourceByUser(UserDetailUtils.getUserDetail().getUserId()));
ServiceResponse<ResourceDTO> serviceResource = this.resourceApiService.getResource(resource.getResult().getResourceId()); }
if(serviceResource.isSuccess() && serviceResource.getResult() != null){ //超管
ServiceResponse<StoreWidgetDTO> storeWidget = this.storeWidgetApiService.getStoreWidget(serviceResource.getResult().getStoreResource().intValue()); return RestResponse.success(new StoreResourceVO());
if(storeWidget.isSuccess() && storeWidget.getResult() != null){ }
StoreResourceVO vo = new StoreResourceVO();
vo.setAuthMode(storeWidget.getResult().getAuthMode()); private StoreResourceVO getStoreResourceByUser(Integer userId) throws ClassNotFoundException {
vo.setSearchJson(storeWidget.getResult().getSearchParam()); //查询管理员的资源组
vo.setSceenBack(this.getScreenBack(storeWidget.getResult().getSearchParam())); ServiceResponse<UserResourceDTO> resource = this.userResourceApiService
return RestResponse.success(vo); .getResourceByUserId(userId);
} if (resource.isSuccess() && resource.getResult() != null) {
//todo 前端对齐之后,要切换最新的接口 resourceGroupApiService
ServiceResponse<ResourceDTO> serviceResource = this.resourceApiService
.getResource(resource.getResult().getResourceId());
//资源组-门店选择器ID
if(serviceResource.isSuccess() && serviceResource.getResult() != null){
ServiceResponse<StoreWidgetDTO> storeWidget = this.storeWidgetApiService
.getStoreWidget(serviceResource.getResult().getStoreResource().intValue());
if(storeWidget.isSuccess()){
StoreWidgetDTO storeWidgetDTO = storeWidget.getResult();
StoreResourceVO vo = new StoreResourceVO();
vo.setAuthMode(storeWidget.getResult().getAuthMode());
vo.setSearchJson(storeWidget.getResult().getSearchParam());
vo.setSceenBack(getScreenBack(storeWidgetDTO.getSearchParam()));
return vo;
} }
} }
} }
return RestResponse.success(new StoreResourceVO()); return new StoreResourceVO();
} }
private List<ScreenBackVO> getScreenBack(String param) throws ClassNotFoundException { private List<ScreenBackVO> getScreenBack(String param) throws ClassNotFoundException {
......
package com.gic.plug.web.utils;
import org.apache.commons.lang.StringUtils;
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;
/**
* 门店选择器操作日志工具类
* @ClassName:
* @Description: 

* @author guojuxing

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

*/
@Component
public class StoreWidgetLogUtils {
@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 = null;
if (storeWidgetId != null) {
ServiceResponse<StoreWidgetDTO> oldStoreWidgetResponse = storeWidgetApiService.getStoreWidget(storeWidgetId);
if (!oldStoreWidgetResponse.isSuccess()) {
return;
}
oldStoreWidget = oldStoreWidgetResponse.getResult();
}
//操作日志对象组装
StoreWidgetLogSaveDTO logSaveDTO;
if (oldStoreWidget == null) {
logSaveDTO = buildStoreWidgetLogWhenCreate(storeWidgetQO, newStoreWidgetId);
} else {
//需要更新日志关联关系
storeWidgetLogApiService.tmpUpdateByStoreWidgetId(storeWidgetId, newStoreWidgetId);
logSaveDTO = buildStoreWidgetLogWhenUpdate(oldStoreWidget, storeWidgetQO, newStoreWidgetId);
}
//写日志
storeWidgetLogApiService.saveStoreWidgetLog(logSaveDTO);
}
/**
* 组装日志对象-编辑场景
* @param oldStoreWidget 老数据
* @param storeWidgetQO 前端传入的参数
* @param newStoreWidgetId 新增门店选择器产生的ID
* @return
*/
private static StoreWidgetLogSaveDTO buildStoreWidgetLogWhenUpdate(StoreWidgetDTO oldStoreWidget, StoreWidgetQO storeWidgetQO,
Integer newStoreWidgetId) {
if (oldStoreWidget == null) {
return null;
}
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;
}
}
package com.gic.plug.web.vo;
import java.io.Serializable;
import java.util.Date;
/**
* 门店选择器日志
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/14 9:21 AM

*/
public class StoreWidgetLogVO implements Serializable{
private static final long serialVersionUID = -9070357100287133477L;
/**
* 1:变更权限范围 2:编辑筛选条件
*/
private Integer logType;
/**
* 1:创建 2:操作
*/
private Integer operationType;
/**
* 操作人ID user_id
*/
private Integer operationId;
/**
* 操作人名称 冗余
*/
private String operationName;
/**
* 操作人职位 1:CRM经理、2:商城运营经理、3:IT经理。冗余
*/
private Integer operationPosition;
/**
* 操作人职位 1:CRM经理、2:商城运营经理、3:IT经理。冗余
*/
private String operationPositionText;
/**
*
*/
private Date createTime;
public Integer getLogType() {
return logType;
}
public StoreWidgetLogVO setLogType(Integer logType) {
this.logType = logType;
return this;
}
public Integer getOperationType() {
return operationType;
}
public StoreWidgetLogVO setOperationType(Integer operationType) {
this.operationType = operationType;
return this;
}
public Integer getOperationId() {
return operationId;
}
public StoreWidgetLogVO setOperationId(Integer operationId) {
this.operationId = operationId;
return this;
}
public String getOperationName() {
return operationName;
}
public StoreWidgetLogVO setOperationName(String operationName) {
this.operationName = operationName;
return this;
}
public Integer getOperationPosition() {
return operationPosition;
}
public StoreWidgetLogVO setOperationPosition(Integer operationPosition) {
this.operationPosition = operationPosition;
return this;
}
public String getOperationPositionText() {
return operationPositionText;
}
public StoreWidgetLogVO setOperationPositionText(String operationPositionText) {
this.operationPositionText = operationPositionText;
return this;
}
public Date getCreateTime() {
return createTime;
}
public StoreWidgetLogVO setCreateTime(Date createTime) {
this.createTime = createTime;
return this;
}
@Override
public String toString() {
return "StoreWidgetLogVO{" +
"logType=" + logType +
", operationType=" + operationType +
", operationId=" + operationId +
", operationName='" + operationName + '\'' +
", operationPosition=" + operationPosition +
", operationPositionText='" + operationPositionText + '\'' +
", createTime=" + createTime +
'}';
}
}
...@@ -62,4 +62,7 @@ ...@@ -62,4 +62,7 @@
<dubbo:reference interface="com.gic.store.service.StoreTagApiService" id="storeTagApiService" timeout="10000" retries="0" /> <dubbo:reference interface="com.gic.store.service.StoreTagApiService" id="storeTagApiService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.mall.api.service.MallCordApiService" id="mallCordApiService" timeout="10000" retries="0" /> <dubbo:reference interface="com.gic.mall.api.service.MallCordApiService" id="mallCordApiService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.mall.api.service.MallProApiService" id="mallProApiService" timeout="10000" retries="0" /> <dubbo:reference interface="com.gic.mall.api.service.MallProApiService" id="mallProApiService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.store.service.StoreWidgetLogApiService" id="storeWidgetLogApiService" timeout="6000"/>
<dubbo:reference interface="com.gic.auth.service.ResourceGroupApiService" id="resourceGroupApiService" timeout="6000"/>
</beans> </beans>
\ No newline at end of file
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