user.dart 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import 'package:provider/provider.dart';
  2. import 'package:twong/providers/message.dart';
  3. import 'index.dart';
  4. import '../utils/index.dart';
  5. import '../models/index.dart';
  6. extension UserAPI on Network {
  7. // get user balance
  8. Future<Balance> getBalance() async {
  9. var resp = await Request.get('user/balance');
  10. return Balance.fromJson(resp);
  11. }
  12. // get user cart list
  13. Future<CartList> getCartList() async {
  14. var resp = await Request.get("cart/list");
  15. return CartList.fromJson(resp);
  16. }
  17. Future cartNum({int id, int number}) async {
  18. var data = {
  19. "id": id,
  20. "number": number
  21. };
  22. return Request.post("cart/num", params: data);
  23. }
  24. // add product ro cart
  25. Future<dynamic> addCart({dynamic cartNum = 1, dynamic news = 1, dynamic productId, String uniqueId}) async {
  26. var data = {
  27. "cartNum" : cartNum,
  28. "new": news,
  29. "productId": productId,
  30. "uniqueId": uniqueId
  31. };
  32. var resp = await Request.post("cart/add", params: data);
  33. var cart = resp as Map<String, dynamic>;
  34. return cart['cartId'];
  35. }
  36. // add a product to collect
  37. Future addCollect(dynamic id) async {
  38. var params = {
  39. "id": id,
  40. "category": 'product'
  41. };
  42. return await Request.post('collect/add', params: params);
  43. }
  44. // remove a product from collect
  45. Future delCollect(dynamic id) async {
  46. var params = {
  47. "id": id,
  48. "category": 'product'
  49. };
  50. return await Request.post('collect/del', params: params);
  51. }
  52. // get user collect list
  53. Future<List<Collect>> getCollect ({dynamic page = "1", dynamic limit = "20"}) async {
  54. var resp = await Request.get('collect/user?page=$page&limit=$limit');
  55. List<Collect> list = List<Collect>();
  56. var collects = resp as List;
  57. for(var item in collects) {
  58. list.add(Collect.fromJson(item));
  59. }
  60. return list;
  61. }
  62. Future<List<VipConfig>> getVipConfig() async {
  63. var resp = await Request.get("user/level/grade");
  64. var configs = List<VipConfig>();
  65. for(var item in resp["list"] as List) {
  66. configs.add(VipConfig.fromJson(item));
  67. }
  68. return configs;
  69. }
  70. Future<VipInfo> getVipInfo() async {
  71. var resp = await Request.get("user/vip/info");
  72. return VipInfo.fromJson(resp);
  73. }
  74. Future getCashRecord({int type = 4, int page = 1, int limit = 10}) async {
  75. var resp = await Request.get("spread/commission/$type?page=$page&limit=$limit");
  76. }
  77. Future<List<Message>> getMessage() async {
  78. var resp = await Request.get("user/mails");
  79. List<Message> list = List<Message>();
  80. for(var item in resp as List) {
  81. list.add(Message.fromJson(item));
  82. }
  83. var context = Cache.navigator.currentState.overlay.context;
  84. Provider.of<MessageModel>(context, listen: false).update(list);
  85. return list;
  86. }
  87. Future<PromotionPeopleData> getPromotionPeople({int grade = 0,
  88. String keyword = "", int limit = 15, int page = 1, String sort = "" }) async {
  89. var params = {
  90. "grade": grade,
  91. "keyword": keyword,
  92. "limit": limit,
  93. "page": page,
  94. "sort": sort
  95. };
  96. var resp = await Request.post("spread/people", params: params);
  97. return PromotionPeopleData.fromJson(resp);
  98. }
  99. Future getPromotionCommission() async {
  100. var resp = await Request.get("commission");
  101. return resp;
  102. }
  103. Future<List<PromoteRecordList>> getPromotionRecord({int type, int page = 1, int limit = 3}) async {
  104. var resp = await Request.get("spread/commission/$type?page=$page&limit=$limit");
  105. var list = List<PromoteRecordList>();
  106. for(var item in resp as List){
  107. list.add(PromoteRecordList.fromJson(item));
  108. }
  109. return list;
  110. }
  111. Future<PromotionOrderData> getPromotionOrder({int page = 1, int limit = 15}) async {
  112. var params = {
  113. "page": page,
  114. "limit": limit
  115. };
  116. var resp = await Request.post("spread/order", params: params);
  117. return PromotionOrderData.fromJson(resp);
  118. }
  119. // get user address list
  120. Future<List<Address>> getAddressList({int page = 1, int limit = 20}) async {
  121. var resp = await Request.get("address/list?page=$page&limit=$limit");
  122. List<Address> list = List<Address>();
  123. for(var item in resp as List) {
  124. list.add(Address.fromJson(item));
  125. }
  126. return list;
  127. }
  128. Future editAddress(Address address) async {
  129. var params = {
  130. "detail": address.detail,
  131. "is_default": address.is_default,
  132. "phone": address.phone,
  133. "real_name": address.real_name,
  134. "post_code": address.post_code,
  135. "address": {
  136. "province": address.province,
  137. "city": address.city,
  138. "city_id": address.city_id,
  139. "district": address.district
  140. }
  141. };
  142. return Request.post("address/edit", params: params);
  143. }
  144. Future delAddress(num id) async {
  145. return Request.post("address/del", params: { "id": id });
  146. }
  147. Future<RechargeIndex> getRecharge() async {
  148. var resp = await Request.get("recharge/index");
  149. return RechargeIndex.fromJson(resp);
  150. }
  151. Future recharge({ num id, String price, String type }) async {
  152. var params = {
  153. "from": "app",
  154. "payType": type,
  155. "price": pragma,
  156. "rechargeId": id
  157. };
  158. var resp = await Request.post("recharge/wechat", params: params);
  159. return OrderInfo.fromJson(resp);
  160. }
  161. Future editUser({ String nickname , String avatar }) async {
  162. var params = {
  163. "avatar": avatar == null ? Cache.user.avatar : avatar,
  164. "nickname": nickname == null ? Cache.user.nickname : nickname
  165. };
  166. return await Request.post("user/edit", params: params);
  167. }
  168. }