Skip to content

Commit

Permalink
feat: feedback support filter and search
Browse files Browse the repository at this point in the history
用户反馈支持过滤和搜索

Log:
  • Loading branch information
myml committed Nov 8, 2023
1 parent fda6722 commit f30c03d
Show file tree
Hide file tree
Showing 12 changed files with 365 additions and 118 deletions.
1 change: 1 addition & 0 deletions src/api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ add_library(${PROJECT_NAME}
api.cpp
diskCacheShare.h
diskCacheShare.cpp
getFeedbackParam.h
)
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR})
target_link_libraries(${PROJECT_NAME} QtDeepinHomeAPI)
81 changes: 47 additions & 34 deletions src/api/api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "api.h"

namespace SyncAPI {
API::API(QObject *parent)
: QObject(parent)
{
Expand Down Expand Up @@ -92,55 +93,64 @@ QSharedPointer<DHClientApi> API::getClient(QString server, QString token)
}

// 获取反馈
QList<DHHandlers_FeedbackPublicListResponse> API::getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QString &type,
const OptionalParam<QString> &status)
QList<DHFeedback_PublicListResponse> API::getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const GetFeedbackOptionalParam &param)
{
auto client = getClient(server);
client->getFeedback(language, offset, limit, type, status);
return waitSignal<QList<DHHandlers_FeedbackPublicListResponse>>(
client.data(), &DHClientApi::getFeedbackSignalFull, &DHClientApi::getFeedbackSignalEFull);
client->getFeedback(language,
offset,
limit,
param.type,
param.status,
param.public_id,
param.order,
param.version,
param.keyword);
return waitSignal<QList<DHFeedback_PublicListResponse>>(client.data(),
&DHClientApi::getFeedbackSignalFull,
&DHClientApi::getFeedbackSignalEFull);
}

// 根据public id获取反馈
QList<DHHandlers_FeedbackPublicListResponse> API::getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QStringList publicID)
QList<DHFeedback_PublicListResponse> API::getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QStringList publicID)
{
auto client = getClient(server);
client->getFeedback(language,
offset,
limit,
OptionalParam<QString>(),
OptionalParam<QString>(),
OptionalParam<QList<QString>>(),
publicID);
return waitSignal<QList<DHHandlers_FeedbackPublicListResponse>>(
client.data(), &DHClientApi::getFeedbackSignalFull, &DHClientApi::getFeedbackSignalEFull);
return waitSignal<QList<DHFeedback_PublicListResponse>>(client.data(),
&DHClientApi::getFeedbackSignalFull,
&DHClientApi::getFeedbackSignalEFull);
}

// 获取反馈的统计信息
QList<DeepinHomeAPI::DHHandlers_PublicStatResponse> API::getFeedbackStat(const QString &server,
QList<DeepinHomeAPI::DHFeedback_PublicStatResponse> API::getFeedbackStat(const QString &server,
const QStringList &publicID)
{
auto client = getClient(server);
client->getFeedbackStat(publicID);
return waitSignal<QList<DeepinHomeAPI::DHHandlers_PublicStatResponse>>(
return waitSignal<QList<DeepinHomeAPI::DHFeedback_PublicStatResponse>>(
client.data(),
&DHClientApi::getFeedbackStatSignalFull,
&DHClientApi::getFeedbackStatSignalEFull);
}

QList<DeepinHomeAPI::DHHandlers_FeedbackUserListResponse> API::getUserFeedback(
QList<DeepinHomeAPI::DHFeedback_UserListResponse> API::getUserFeedback(
const QString &server, const QString &token, const int &offset, const int &limit, QString type)
{
auto client = getClient(server, token);
client->getUserFeedback(offset, limit, type);
return waitSignal<QList<DeepinHomeAPI::DHHandlers_FeedbackUserListResponse>>(
return waitSignal<QList<DeepinHomeAPI::DHFeedback_UserListResponse>>(
client.data(),
&DHClientApi::getUserFeedbackSignalFull,
&DHClientApi::getUserFeedbackSignalEFull);
Expand All @@ -154,7 +164,7 @@ void API::createUserFeedbackRelation(const QString &server,
{
auto client = getClient(server, token);
client->createFeedbackRelation(feedback_id, relation);
waitSignal<DHHandlers_UserRelationResposne>(client.data(),
waitSignal<DHFeedback_UserRelationResposne>(client.data(),
&DHClientApi::createFeedbackRelationSignalFull,
&DHClientApi::createFeedbackRelationSignalEFull);
}
Expand All @@ -167,7 +177,7 @@ void API::removeUserFeedbackRelation(const QString &server,
{
auto client = getClient(server, token);
client->removeFeedbackRelation(feedback_id, relation);
waitSignal<DHHandlers_UserRelationResposne>(client.data(),
waitSignal<DHFeedback_UserRelationResposne>(client.data(),
&DHClientApi::removeFeedbackRelationSignalFull,
&DHClientApi::removeFeedbackRelationSignalEFull);
}
Expand All @@ -177,18 +187,18 @@ void API::addFeedbackView(const QString &server, const QString &feedback_id)
{
auto client = getClient(server);
client->addFeedbackView(feedback_id);
waitSignal<DHHandlers_PublicViewResponse>(client.data(),
waitSignal<DHFeedback_PublicViewResponse>(client.data(),
&DHClientApi::addFeedbackViewSignalFull,
&DHClientApi::addFeedbackViewSignalEFull);
}

// 查看反馈的回复
QList<DHHandlers_PublicReplyResponse> API::getFeedbackReply(const QString &server,
QList<DHFeedback_PublicReplyResponse> API::getFeedbackReply(const QString &server,
const QString &feedback_id)
{
auto client = getClient(server);
client->getFeedbackReply(feedback_id);
return waitSignal<QList<DHHandlers_PublicReplyResponse>>(
return waitSignal<QList<DHFeedback_PublicReplyResponse>>(
client.data(),
&DHClientApi::getFeedbackReplySignalFull,
&DHClientApi::getFeedbackReplySignalEFull);
Expand Down Expand Up @@ -254,7 +264,7 @@ QString API::createFeedback(const QString &server,
const QStringList &snapshots)
{
auto client = getClient(server, token);
DHHandlers_CreateFeedbackRequest req;
DHFeedback_CreateFeedbackRequest req;
req.setType(type);
req.setLanguage(language);
req.setTitle(title);
Expand All @@ -264,7 +274,7 @@ QString API::createFeedback(const QString &server,
req.setScreenshots(snapshots);
client->createFeedback(req);
auto resp
= waitSignal<DHHandlers_CreateFeedbackResponse>(client.data(),
= waitSignal<DHFeedback_CreateFeedbackResponse>(client.data(),
&DHClientApi::createFeedbackSignalFull,
&DHClientApi::createFeedbackSignalEFull);
return resp.getPublicId();
Expand All @@ -275,28 +285,29 @@ QString API::getSetting(const QString &server, const QString &settingKey)
{
auto client = getClient(server);
client->getSetting(settingKey);
auto resp = waitSignal<DHHandlers_GetStetingResponse>(
client.data(), &DHClientApi::getSettingSignalFull, &DHClientApi::getSettingSignalEFull);
auto resp = waitSignal<DHHandlers_GetStetingResponse>(client.data(),
&DHClientApi::getSettingSignalFull,
&DHClientApi::getSettingSignalEFull);
return resp.getValue();
};

// 获取和用户有关联的反馈
QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse> API::getFeedbackRelation(
QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse> API::getFeedbackRelation(
const QString &server, const QString &token, int offset, int limit, const QString &relation)
{
auto client = getClient(server, token);
client->getFeedbackRelation(offset,
limit,
OptionalParam<QList<QString>>(),
QStringList(relation));
return waitSignal<QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse>>(
return waitSignal<QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse>>(
client.data(),
&DHClientApi::getFeedbackRelationSignalFull,
&DHClientApi::getFeedbackRelationSignalEFull);
}

// 获取用户和反馈的关联关系
QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse> API::getFeedbackRelation(
QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse> API::getFeedbackRelation(
const QString &server,
const QString &token,
int offset,
Expand All @@ -306,7 +317,7 @@ QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse> API::getFeedba
{
auto client = getClient(server, token);
client->getFeedbackRelation(offset, limit, publicID, relation);
return waitSignal<QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse>>(
return waitSignal<QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse>>(
client.data(),
&DHClientApi::getFeedbackRelationSignalFull,
&DHClientApi::getFeedbackRelationSignalEFull);
Expand Down Expand Up @@ -398,3 +409,5 @@ DHHandlers_ClientUserInfoResponse API::getLoginInfo(QString server, QString toke
&DHClientApi::getLoginInfoSignalFull,
&DHClientApi::getLoginInfoSignalEFull);
}

} // namespace SyncAPI
43 changes: 22 additions & 21 deletions src/api/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@

#include "diskCacheShare.h"
#include <DHClientApi.h>
#include <getFeedbackParam.h>

using namespace DeepinHomeAPI;

namespace SyncAPI {
class APIException : public QException
{
public:
Expand Down Expand Up @@ -58,34 +60,32 @@ class API : public QObject
DHHandlers_ClientLoginResponse getClientToken(QString server, QString code);
DHHandlers_ClientUserInfoResponse getLoginInfo(QString server, QString token);
QSharedPointer<DHClientApi> getClient(QString server, QString token = "");
QList<DHHandlers_FeedbackPublicListResponse> getFeedback(
const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QString &type,
const OptionalParam<QString> &status = OptionalParam<QString>());
QList<DHHandlers_FeedbackPublicListResponse> getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QStringList publicID);
QList<DeepinHomeAPI::DHHandlers_PublicStatResponse> getFeedbackStat(const QString &server,
QList<DHFeedback_PublicListResponse> getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const GetFeedbackOptionalParam &param);
QList<DHFeedback_PublicListResponse> getFeedback(const QString &server,
const QString &language,
const int &offset,
const int &limit,
const QStringList publicID);
QList<DeepinHomeAPI::DHFeedback_PublicStatResponse> getFeedbackStat(const QString &server,
const QStringList &publicID);
QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse> getFeedbackRelation(
QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse> getFeedbackRelation(
const QString &server, const QString &token, int offset, int limit, const QString &relation);
QList<DeepinHomeAPI::DHHandlers_FeedbackUserRelationListResponse> getFeedbackRelation(
QList<DeepinHomeAPI::DHFeedback_UserRelationListResponse> getFeedbackRelation(
const QString &server,
const QString &token,
int offset,
int limit,
const QStringList &publicID,
const QStringList &relation);
QList<DeepinHomeAPI::DHHandlers_FeedbackUserListResponse> getUserFeedback(const QString &server,
const QString &token,
const int &offset,
const int &limit,
QString type);
QList<DeepinHomeAPI::DHFeedback_UserListResponse> getUserFeedback(const QString &server,
const QString &token,
const int &offset,
const int &limit,
QString type);
void createUserFeedbackRelation(const QString &server,
const QString &token,
const QString &feedback_id,
Expand All @@ -95,7 +95,7 @@ class API : public QObject
const QString &feedback_id,
const QString &relation);
void addFeedbackView(const QString &server, const QString &feedback_id);
QList<DHHandlers_PublicReplyResponse> getFeedbackReply(const QString &server,
QList<DHFeedback_PublicReplyResponse> getFeedbackReply(const QString &server,
const QString &feedback_id);
QString uploadFile(const QString &server, const QString &token, const QString &filepath);
QString createFeedback(const QString &server,
Expand All @@ -110,4 +110,5 @@ class API : public QObject
QString getSetting(const QString &server, const QString &settingKey);
};

} // namespace SyncAPI
#endif // DEEPIN_HOME_API_H
44 changes: 44 additions & 0 deletions src/api/getFeedbackParam.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
// SPDX-License-Identifier: LGPL-3.0-or-later

#include <DHClientApi.h>
#include <QJsonObject>

using namespace DeepinHomeAPI;

namespace SyncAPI {
class GetFeedbackOptionalParam
{
public:
OptionalParam<QString> type;
OptionalParam<QList<QString>> status;
OptionalParam<QList<QString>> public_id;
OptionalParam<QString> order;
OptionalParam<QString> version;
OptionalParam<QString> keyword;
GetFeedbackOptionalParam(QJsonObject obj){
fromJsonObject(obj);
};
void fromJsonObject(QJsonObject obj)
{
if (obj["type"].toString().length() > 0) {
type = obj["type"].toString();
}
if (obj["status"].toArray().size() > 0) {
status = obj["status"].toVariant().toStringList();
}
if (obj["public_id"].toArray().size() > 0) {
public_id = obj["public_id"].toVariant().toStringList();
}
if (obj["order"].toString().length() > 0) {
order = obj["order"].toString();
}
if (obj["version"].toString().length() > 0) {
version = obj["version"].toString();
}
if (obj["keyword"].toString().length() > 0) {
keyword = obj["keyword"].toString();
}
};
};
} // namespace SyncAPI
2 changes: 2 additions & 0 deletions src/main/account.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
#include <QDesktopServices>
#include <QObject>

using namespace SyncAPI;

struct UserInfo
{
QString uid;
Expand Down
2 changes: 2 additions & 0 deletions src/main/homeDaemon.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#include <QSystemTrayIcon>
#include <QTimer>

using namespace SyncAPI;

class HomeDaemon : public QObject, protected QDBusContext
{
Q_OBJECT
Expand Down
Loading

0 comments on commit f30c03d

Please sign in to comment.