Commit 62fd2618 by shenjunjie

Merge branch 'feature' into 'dev'

Feature

See merge request !300
parents 4c6fd853 2f21c9a5
...@@ -108,7 +108,8 @@ public class AopLogRecord { ...@@ -108,7 +108,8 @@ public class AopLogRecord {
uri, methodName, httpMethod, arguments, now, severAddress, null); uri, methodName, httpMethod, arguments, now, severAddress, null);
UserLogRecord userLogRecord = userLogRecord(projectId, userInfo, joinPoint, methodSignature, ResponseResult); UserLogRecord userLogRecord = userLogRecord(projectId, userInfo, joinPoint, methodSignature, ResponseResult);
if (Objects.nonNull(userLogRecord)) { if (Objects.nonNull(userLogRecord)) {
userLogRecordDao.insertOne(userLogRecord); String collectionName = userLogRecordDao.generateCollectionName();
userLogRecordDao.insertOne(userLogRecord, collectionName);
} }
String collectionName = behaviorDao.generateCollectionName(); String collectionName = behaviorDao.generateCollectionName();
behaviorDao.insertOneWithoutId(behavior, collectionName); behaviorDao.insertOneWithoutId(behavior, collectionName);
...@@ -142,12 +143,31 @@ public class AopLogRecord { ...@@ -142,12 +143,31 @@ public class AopLogRecord {
JSONObject jsonObject = (JSONObject) JSON.toJSON(args[0]); JSONObject jsonObject = (JSONObject) JSON.toJSON(args[0]);
List<Object> res = new ArrayList<>(value.length); List<Object> res = new ArrayList<>(value.length);
for (String v : value) { for (String v : value) {
if (v.contains(":")){
String[] fatherSplit = v.split(":", 2);
JSONObject object = jsonObject.getJSONObject(fatherSplit[0]);
if (Objects.nonNull(object)) {
String[] sonSplit = fatherSplit[1].split(",");
List<Object> sonList = new ArrayList<>(sonSplit.length);
for (String s : sonSplit) {
Object o = object.get(s);
if (Objects.nonNull(o) && StringUtils.isNotBlank(o.toString())) {
sonList.add(o);
}
}
if (1 == sonList.size()) {
res.add(sonList.get(0));
} else{
res.add("{" + Tools.concatWithMinus(sonList) + "}");
}
}
}
Object o = jsonObject.get(v); Object o = jsonObject.get(v);
if (Objects.nonNull(o)) { if (Objects.nonNull(o) && StringUtils.isNotBlank(o.toString())) {
res.add(o); res.add(o);
} }
} }
String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concat(res) : ""; String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concatWithMinus(res) : "";
return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now); return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now);
} }
// 获取接口传参(value为获取传参的具体字段)并与操作描述description拼接返回,传参值不为实体 // 获取接口传参(value为获取传参的具体字段)并与操作描述description拼接返回,传参值不为实体
...@@ -161,7 +181,7 @@ public class AopLogRecord { ...@@ -161,7 +181,7 @@ public class AopLogRecord {
} }
} }
} }
String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concat(res) : ""; String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concatWithMinus(res) : "";
return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now); return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now);
} }
// 获取接口返回值(value为获取返回值的具体字段)并与操作描述description拼接返回,返回值为实体 // 获取接口返回值(value为获取返回值的具体字段)并与操作描述description拼接返回,返回值为实体
...@@ -174,7 +194,7 @@ public class AopLogRecord { ...@@ -174,7 +194,7 @@ public class AopLogRecord {
res.add(s); res.add(s);
} }
} }
String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concat(res) : ""; String suffix = CollectionUtils.isNotEmpty(res) ? "-" + Tools.concatWithMinus(res) : "";
return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now); return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix + suffix, userInfo.getRoleId(), now, now);
} }
return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix, userInfo.getRoleId(), now, now); return new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), prefix, userInfo.getRoleId(), now, now);
......
...@@ -121,6 +121,7 @@ public class AppArticleController extends BaseController { ...@@ -121,6 +121,7 @@ public class AppArticleController extends BaseController {
@ApiOperation("舆情列表-生成聚合") @ApiOperation("舆情列表-生成聚合")
@PostMapping("/mark/aggree") @PostMapping("/mark/aggree")
@LogRecord(description = "舆情库-舆情列表-聚合")
public ResponseResult generateYuqingMarkAggreeList(@RequestBody JSONObject info) { public ResponseResult generateYuqingMarkAggreeList(@RequestBody JSONObject info) {
Long startTime = info.getLong("startTime"); Long startTime = info.getLong("startTime");
Long endTime = info.getLong("endTime"); Long endTime = info.getLong("endTime");
......
...@@ -135,7 +135,7 @@ public class AppSearchController extends BaseController { ...@@ -135,7 +135,7 @@ public class AppSearchController extends BaseController {
} }
@ApiOperation("搜索-全网搜") @ApiOperation("搜索-全网搜")
@LogRecord(values = {"keyword", "search"}, description = "全网搜", arguments = true, entity = true) @LogRecord(values = {"fans", "sensitiveChannels:father,son", "keyword", "search"}, description = "全网搜", arguments = true, entity = true)
@PostMapping("/searchWhole") @PostMapping("/searchWhole")
public ResponseResult searchWholeNetwork(@RequestBody SearchFilterDTO dto) { public ResponseResult searchWholeNetwork(@RequestBody SearchFilterDTO dto) {
// 针对商业数据库做限制 // 针对商业数据库做限制
......
...@@ -8,5 +8,5 @@ import com.zhiwei.brandkbs2.pojo.UserLogRecord; ...@@ -8,5 +8,5 @@ import com.zhiwei.brandkbs2.pojo.UserLogRecord;
* @author: cjz * @author: cjz
* @date: 2023-03-22 10:46 * @date: 2023-03-22 10:46
*/ */
public interface UserLogRecordDao extends BaseMongoDao<UserLogRecord>{ public interface UserLogRecordDao extends BaseMongoDao<UserLogRecord>, ShardingMongo{
} }
...@@ -7,9 +7,21 @@ import org.springframework.stereotype.Component; ...@@ -7,9 +7,21 @@ import org.springframework.stereotype.Component;
@Component("UserLogRecordDao") @Component("UserLogRecordDao")
public class UserLogRecordDaoImpl extends BaseMongoDaoImpl<UserLogRecord> implements UserLogRecordDao { public class UserLogRecordDaoImpl extends BaseMongoDaoImpl<UserLogRecord> implements UserLogRecordDao {
private static final String COLLECTION_NAME = "brandkbs_user_log_record"; private static final String COLLECTION_PREFIX = "brandkbs_user_log_record";
private static final String TIME_PATTERN = "yyyy";
public UserLogRecordDaoImpl() { public UserLogRecordDaoImpl() {
super(COLLECTION_NAME); super(null);
}
@Override
public String collectionPrefix() {
return COLLECTION_PREFIX;
}
@Override
public String timePattern() {
return TIME_PATTERN;
} }
} }
...@@ -14,7 +14,6 @@ import org.springframework.data.mongodb.core.mapping.Document; ...@@ -14,7 +14,6 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Getter @Getter
@Setter @Setter
@AllArgsConstructor @AllArgsConstructor
@Document(collection = "brandkbs_user_log_record")
public class UserLogRecord extends AbstractBaseMongo{ public class UserLogRecord extends AbstractBaseMongo{
/** /**
* 项目id * 项目id
......
...@@ -175,26 +175,43 @@ public class BehaviorServiceImpl implements BehaviorService { ...@@ -175,26 +175,43 @@ public class BehaviorServiceImpl implements BehaviorService {
return; return;
} }
UserLogRecord userLogRecord = new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), description, userInfo.getRoleId(), now, now); UserLogRecord userLogRecord = new UserLogRecord(projectId, userInfo.getUserId(), userInfo.getNickname(), description, userInfo.getRoleId(), now, now);
userLogRecordDao.insertOne(userLogRecord); String collectionName = userLogRecordDao.generateCollectionName();
userLogRecordDao.insertOne(userLogRecord, collectionName);
} }
} }
@Override @Override
public PageVO<UserLogRecord> findLogRecordList(int page, int size, long startTime, long endTime, String nickname) { public PageVO<UserLogRecord> findLogRecordList(int page, int size, long startTime, long endTime, String nickname) {
Date start = new Date(startTime);
Date end = new Date(endTime);
String projectId = UserThreadLocal.getProjectId(); String projectId = UserThreadLocal.getProjectId();
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime)); query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime));
query.addCriteria(Criteria.where("projectId").is(projectId)); query.addCriteria(Criteria.where("projectId").is(projectId));
String[] collectionNames = userLogRecordDao.generateCollectionNames(start, end);
userLogRecordDao.addSort(query, "{\"cTime\":\"descend\"}"); userLogRecordDao.addSort(query, "{\"cTime\":\"descend\"}");
if (StringUtils.isNotEmpty(nickname)) { if (StringUtils.isNotEmpty(nickname)) {
userDao.addKeywordFuzz(query, nickname, "nickname"); userDao.addKeywordFuzz(query, nickname, "nickname");
} }
long count = userLogRecordDao.count(query); List<UserLogRecord> behaviorList = new ArrayList<>();
int pageSizeFlag = size;
int skipCount = (page - 1) * size; int skipCount = (page - 1) * size;
query.limit(size); if (0 != collectionNames.length) {
query.skip(skipCount); for (int i = collectionNames.length - 1; i >= 0; i--) {
List<UserLogRecord> resList = userLogRecordDao.findList(query); if (behaviorList.size() >= size) {
return PageVO.createPageVo(count, page, size, resList); break;
} else {
query.limit(pageSizeFlag);
query.skip(skipCount);
List<UserLogRecord> list = userLogRecordDao.findList(query, collectionNames[i]);
behaviorList.addAll(list);
}
skipCount = 0;
pageSizeFlag = size - behaviorList.size();
}
}
long count = userLogRecordDao.count(query);
return PageVO.createPageVo(count, page, size, behaviorList);
} }
@Override @Override
......
...@@ -526,15 +526,16 @@ public class Tools { ...@@ -526,15 +526,16 @@ public class Tools {
} }
/** /**
* 拼接字符串,以_隔开 * 拼接字符串,以-隔开
* *
* @param objects 可变参数 * @param objects 可变参数
* @return 拼接后的字符串 * @return 拼接后的字符串
*/ */
public static String concat(List<Object> objects) { public static String concatWithMinus(List<Object> objects) {
String separator = "-";
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (Object obj : objects) { for (Object obj : objects) {
sb.append(obj).append(Constant.DEFAULT_SEPARATOR); sb.append(obj).append(separator);
} }
String resultStr = sb.toString(); String resultStr = sb.toString();
return resultStr.substring(0, resultStr.length() - 1); return resultStr.substring(0, resultStr.length() - 1);
......
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