Skip to content

Commit a49d67e

Browse files
committed
Server:解决部分情况下(缺省路径)查询条件依赖路径对应值错误;Client:动态的点赞用户列表由后查询改为同动态一起查询
1 parent bbcb5ba commit a49d67e

5 files changed

Lines changed: 65 additions & 76 deletions

File tree

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/model/MomentItem.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ public MomentItem setMoment(Moment moment) {
115115
return this;
116116
}
117117

118-
// @NonNull
118+
// @NonNull
119119
public List<User> getUserList() {
120-
// if (userList == null) {
121-
// userList = new ArrayList<>();
122-
// }
120+
// if (userList == null) {
121+
// userList = new ArrayList<>();
122+
// }
123123
return userList;
124124
}
125125
public MomentItem setUserList(List<User> userList) {
@@ -160,24 +160,38 @@ public boolean getIsPraised(final long userId) {
160160
return value(isPraised);
161161
}
162162
public MomentItem setIsPraised(boolean isPraised) {
163-
return setIsPraised(isPraised, APIJSONApplication.getInstance().getCurrentUserId());
164-
}
165-
public MomentItem setIsPraised(boolean isPraised, long userId) {
166163
this.isPraised = isPraised;
167164

165+
User currentUser = APIJSONApplication.getInstance().getCurrentUser();
166+
long userId = currentUser == null ? 0 : currentUser.getId();
167+
168168
List<Long> list = getPraiseUserIdList();
169169
if (list == null) {
170170
list = new ArrayList<>();
171171
}
172+
if (userList == null) {
173+
userList = new ArrayList<User>();
174+
}
172175
if (isPraised == false) {
173176
list.remove(userId);
177+
if (userList.isEmpty() == false) {
178+
User[] users = userList.toArray(new User[]{});
179+
for (User user : users) {
180+
if (user != null && user.getId() == userId) {
181+
userList.remove(user);
182+
break;
183+
}
184+
}
185+
}
174186
} else {
175187
if (list.contains(userId) == false) {
176188
list.add(userId);
189+
userList.add(currentUser);
177190
}
178191
}
179192
getMoment().setPraiseUserIdList(list);
180193

194+
181195
return this;
182196
}
183197
public int getPraiseCount() {

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/util/HttpRequest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ public static void delete(JSONObject request, int requestCode, OnHttpResponseLis
142142
public static final String KEY_TYPE = "type";
143143

144144

145-
145+
146146
public static final String DATE_UP = "date+";//同 "date ASC"
147147
public static final String DATE_DOWN = "date-";//同 "date DESC"
148-
148+
149149
public static final String ID_AT = KEY_ID + "@";
150150
public static final String USER_ID_AT = KEY_USER_ID + "@";
151151
public static final String MOMENT_ID_AT = "momentId@";
@@ -388,12 +388,12 @@ public static void getMoment(long id, int requestCode, OnHttpResponseListener li
388388

389389
JSONRequest request = new JSONRequest(new Moment(id));
390390
request.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Moment/userId"));
391-
// //praise <<<<<<<<<<<<<<<<<<
392-
// JSONRequest userItem = new JSONRequest();
393-
// userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "Moment/praiseUserIdList")
394-
// .setColumn(COLUMNS_USER_SIMPLE));
395-
// request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
396-
// //praise >>>>>>>>>>>>>>>>>>
391+
//praise <<<<<<<<<<<<<<<<<<
392+
JSONRequest userItem = new JSONRequest();
393+
userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "Moment/praiseUserIdList")
394+
.setColumn(COLUMNS_USER_SIMPLE));
395+
request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
396+
//praise >>>>>>>>>>>>>>>>>>
397397

398398
get(request, requestCode, listener);
399399
}
@@ -448,12 +448,12 @@ public static void getMomentList(int range, long id, com.alibaba.fastjson.JSONOb
448448
request.put(Moment.class.getSimpleName(), moment);
449449
request.put(User.class.getSimpleName(), new JSONRequest(ID_AT, "/Moment/userId").setColumn(COLUMNS_USER));
450450

451-
// //praise <<<<<<<<<<<<<<<<<<
452-
// JSONRequest userItem = new JSONRequest();
453-
// userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "[]/Moment/praiseUserIdList")
454-
// .setColumn(COLUMNS_USER_SIMPLE));
455-
//
456-
// request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
451+
//praise <<<<<<<<<<<<<<<<<<
452+
JSONRequest userItem = new JSONRequest();
453+
userItem.put(User.class.getSimpleName(), new JSONRequest(ID_IN+"@", "[]/Moment/praiseUserIdList")
454+
.setColumn(COLUMNS_USER_SIMPLE));
455+
456+
request.add(userItem.toArray(20, 0, User.class.getSimpleName()));
457457
//praise >>>>>>>>>>>>>>>>>>
458458

459459
//comment <<<<<<<<<<<<<<<<<<

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/view/MomentView.java

Lines changed: 17 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,23 @@
1414

1515
package apijson.demo.client.view;
1616

17+
import java.util.ArrayList;
18+
import java.util.List;
19+
20+
import zuo.biao.apijson.JSONResponse;
21+
import zuo.biao.library.base.BaseView;
22+
import zuo.biao.library.manager.CacheManager;
23+
import zuo.biao.library.manager.HttpManager.OnHttpResponseListener;
24+
import zuo.biao.library.model.Entry;
25+
import zuo.biao.library.ui.AlertDialog;
26+
import zuo.biao.library.ui.AlertDialog.OnDialogButtonClickListener;
27+
import zuo.biao.library.ui.GridAdapter;
28+
import zuo.biao.library.ui.WebViewActivity;
29+
import zuo.biao.library.util.ImageLoaderUtil;
30+
import zuo.biao.library.util.Log;
31+
import zuo.biao.library.util.ScreenUtil;
32+
import zuo.biao.library.util.StringUtil;
33+
import zuo.biao.library.util.TimeUtil;
1734
import android.annotation.SuppressLint;
1835
import android.app.Activity;
1936
import android.content.res.Resources;
@@ -27,10 +44,6 @@
2744
import android.widget.ImageView;
2845
import android.widget.LinearLayout.LayoutParams;
2946
import android.widget.TextView;
30-
31-
import java.util.ArrayList;
32-
import java.util.List;
33-
3447
import apijson.demo.client.R;
3548
import apijson.demo.client.activity_fragment.LoginActivity;
3649
import apijson.demo.client.activity_fragment.MomentActivity;
@@ -43,22 +56,6 @@
4356
import apijson.demo.client.model.User;
4457
import apijson.demo.client.util.HttpRequest;
4558
import apijson.demo.client.view.CommentItemView.OnCommentClickListener;
46-
import zuo.biao.apijson.BaseModel;
47-
import zuo.biao.apijson.JSONRequest;
48-
import zuo.biao.apijson.JSONResponse;
49-
import zuo.biao.library.base.BaseView;
50-
import zuo.biao.library.manager.CacheManager;
51-
import zuo.biao.library.manager.HttpManager.OnHttpResponseListener;
52-
import zuo.biao.library.model.Entry;
53-
import zuo.biao.library.ui.AlertDialog;
54-
import zuo.biao.library.ui.AlertDialog.OnDialogButtonClickListener;
55-
import zuo.biao.library.ui.GridAdapter;
56-
import zuo.biao.library.ui.WebViewActivity;
57-
import zuo.biao.library.util.ImageLoaderUtil;
58-
import zuo.biao.library.util.Log;
59-
import zuo.biao.library.util.ScreenUtil;
60-
import zuo.biao.library.util.StringUtil;
61-
import zuo.biao.library.util.TimeUtil;
6259

6360
/**作品View
6461
* @author Lemon
@@ -194,14 +191,6 @@ public void bindView(MomentItem data_){
194191
vMomentViewDivider.setVisibility(llMomentViewPraise.getVisibility() == View.VISIBLE
195192
&& llMomentViewCommentContainer.getVisibility() == View.VISIBLE ? View.VISIBLE : View.GONE);
196193

197-
if (data.getUserList() == null && BaseModel.isEmpty(moment.getPraiseUserIdList()) == false) {
198-
// HttpRequest.getUserList(0, 0, null, moment.getPraiseUserIdList(), 0, 0, HTTP_GET_PRAISE, this);
199-
200-
JSONRequest userItem = new JSONRequest("id{}", moment.getPraiseUserIdList());
201-
userItem.setColumn("id", "name");
202-
JSONRequest listRequest = new JSONRequest(User.class.getSimpleName(), userItem);
203-
HttpRequest.get(listRequest.toArray(0, 0, User.class.getSimpleName()), HTTP_GET_PRAISE, this);
204-
}
205194
}
206195

207196

@@ -406,7 +395,6 @@ public void onDialogButtonClick(int requestCode, boolean isPositive) {
406395
public static final int HTTP_PRAISE = 1;
407396
public static final int HTTP_CANCLE_PRAISE = 2;
408397
public static final int HTTP_DELETE = 3;
409-
public static final int HTTP_GET_PRAISE = 10;
410398
@Override
411399
public void onHttpResponse(int requestCode, String result, Exception e) {
412400
if (data == null) {
@@ -421,7 +409,6 @@ public void onHttpResponse(int requestCode, String result, Exception e) {
421409
case HTTP_CANCLE_PRAISE:
422410
if (isSucceed) {
423411
data.setIsPraised(requestCode == HTTP_PRAISE);
424-
data.setUserList(null);
425412
bindView(data);
426413
} else {
427414
showShortToast((requestCode == HTTP_PRAISE ? "点赞" : "取消点赞") + "失败,请检查网络后重试");
@@ -442,21 +429,6 @@ public void onHttpResponse(int requestCode, String result, Exception e) {
442429
bindView(data);
443430
}
444431
break;
445-
case HTTP_GET_PRAISE:
446-
if (response.isSucceed()) {
447-
List<User> list = response.getList(User.class.getSimpleName() + "[]", User.class);
448-
if (list == null) {
449-
list = new ArrayList<>();//避免重复请求
450-
}
451-
data.setUserList(list);
452-
if (onDataChangedListener != null) {
453-
onDataChangedListener.onDataChanged();
454-
} else {
455-
bindView(data);
456-
}
457-
//滑动明显卡顿 CacheManager.getInstance().save(MomentItem.class, data, "" + data.getId());
458-
}
459-
break;
460432
}
461433
}
462434

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/view/PraiseTextView.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ public PraiseTextView(Context context, AttributeSet attrs, int defStyle) {
5959
/**设置View
6060
* @param comment
6161
*/
62-
public void setView(List<User> list) {
63-
if (list == null || list.isEmpty()) {
62+
public void setView(List<User> list_) {
63+
if (list_ == null || list_.isEmpty()) {
6464
setText("");
6565
return;
6666
}
6767
//去除无效User
68-
User[] users = list.toArray(new User[]{});
69-
for (int i = 0; i < users.length; i++) {
70-
if (users[i] == null || StringUtil.isNotEmpty(users[i].getName(), true) == false) {
71-
list.remove(i);
68+
List<User> list = new ArrayList<User>();
69+
for (User user: list_) {
70+
if (user != null && StringUtil.isNotEmpty(user.getName(), true)) {
71+
list.add(user);
7272
}
7373
}
7474
int count = list == null ? 0 : list.size();

APIJSON(Server)/APIJSON(Eclipse_JEE)/src/main/java/zuo/biao/apijson/server/Parser.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -603,22 +603,25 @@ && isInRelationMap(path) == false) {
603603
System.out.println("getObject key.endsWith(@) >> parseRelation = " + parseRelation);
604604
String replaceKey = key.substring(0, key.length() - 1);//key{}@ getRealKey(requestMethod, key, false, false);
605605
String keyPath = getAbsPath(path, replaceKey);
606-
String valuePath = new String((String) value);
606+
String valuePath;// = new String((String) value);
607607

608608
if (parseRelation) {
609-
Object target = getValueByPath(getRelationPath(keyPath), true);
609+
//不是能直接获取到valuePath吗?因为更新?
610+
valuePath = getRelationValuePath(keyPath);
611+
Object target = getValueByPath(valuePath, true);
610612
Log.d(TAG, "getObject valuePath = " + valuePath + "; target = " + target);
611613
if (valuePath.equals(target) && isTableKey(table)) {
612614
Log.e(TAG, "getObject ((String) value).equals(target) && isTableKey(table) >> return null;");
613615
return null;//parseRelation时还获取不到就不用再做无效的query了。不考虑 Table:{Table:{}}嵌套
614616
}
615617
//还要isInRelationMap(path)判断 removeRelation(keyPath);
616-
updateRelation(getAbsPath(path, key), keyPath);//request结构已改变,需要更新依赖关系
618+
// updateRelation(getAbsPath(path, key), keyPath);//request结构已改变,需要更新依赖关系
617619

618620
key = replaceKey;
619621
value = target;
620622
} else {
621623
//尽量保留缺省依赖路径,这样就不需要担心路径改变
624+
valuePath = new String((String) value);
622625
//先尝试获取
623626
if (valuePath.startsWith(SEPARATOR)) {
624627
valuePath = getAbsPath(parentPath, valuePath);
@@ -965,7 +968,7 @@ private void putRelation(String keyPath, String valuePath) {
965968
* @param keyPath
966969
* @return
967970
*/
968-
private String getRelationPath(String keyPath) {
971+
private String getRelationValuePath(String keyPath) {
969972
return keyValuePathMap.get(keyPath);
970973
}
971974
/**移除keyPath-valuePath关联

0 commit comments

Comments
 (0)