huxiaoqiang 4 лет назад
Родитель
Сommit
0e8b0f2382
34 измененных файлов с 1595 добавлено и 225 удалено
  1. 26 0
      lib/beans/activity_bean_entity.dart
  2. 12 0
      lib/beans/grab_a_red_envelope_bean_entity.dart
  3. 2 0
      lib/beans/my_shop_bean_entity.dart
  4. 2 1
      lib/beans/store_bean_entity.dart
  5. 4 0
      lib/beans/user_bean_entity.dart
  6. 87 0
      lib/generated/json/activity_bean_entity_helper.dart
  7. 44 0
      lib/generated/json/base/json_convert_content.dart
  8. 41 0
      lib/generated/json/grab_a_red_envelope_bean_entity_helper.dart
  9. 4 0
      lib/generated/json/my_shop_bean_entity_helper.dart
  10. 6 0
      lib/generated/json/store_bean_entity_helper.dart
  11. 10 0
      lib/generated/json/user_bean_entity_helper.dart
  12. 2 1
      lib/https/MyDio.dart
  13. 1 0
      lib/main.dart
  14. 3 0
      lib/my_tools/const.dart
  15. 72 0
      lib/my_tools/daily_red_packet/daily_red_packet.dart
  16. 22 0
      lib/my_tools/dims.dart
  17. 3 2
      lib/my_tools/my_colors.dart
  18. 3 4
      lib/my_tools/my_cookie.dart
  19. 2 2
      lib/my_tools/my_views.dart
  20. 0 1
      lib/my_tools/providers.dart
  21. 1 1
      lib/paegs/ad_details_page/ad_details_page.dart
  22. 1 0
      lib/paegs/gang_page/gang_in_page/gang_announcement_page/gang_announcement_page.dart
  23. 9 0
      lib/paegs/gang_page/gang_in_page/gang_commission_page/gang_commission_page.dart
  24. 71 44
      lib/paegs/gang_page/gang_in_page/gang_in_page.dart
  25. 120 0
      lib/paegs/gang_page/gang_in_page/gang_information_page/gang_information_page.dart
  26. 150 5
      lib/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_details_page.dart
  27. 495 0
      lib/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_order_flow.dart
  28. 157 0
      lib/paegs/gang_page/gang_in_page/gang_information_page/shop_commission_receiver_set_page/shop_commission_receiver_set_page.dart
  29. 1 1
      lib/paegs/home_page/home_page.dart
  30. 44 2
      lib/paegs/mine_page/bind_alipay_page/set_alipay_page.dart
  31. 31 9
      lib/paegs/mine_page/wallet_page/wallet_page.dart
  32. 6 0
      lib/paegs/mine_page/wallet_page/withdraw_page/withdraw_page.dart
  33. 2 1
      lib/paegs/product_details_page/product_details_page.dart
  34. 161 151
      lib/paegs/root_page/root_page.dart

+ 26 - 0
lib/beans/activity_bean_entity.dart

@@ -0,0 +1,26 @@
+import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+import 'package:bbyyy/generated/json/base/json_field.dart';
+
+class ActivityBeanEntity with JsonConvert<ActivityBeanEntity> {
+	List<ActivityBeanData> data;
+	String error;
+}
+
+class ActivityBeanData with JsonConvert<ActivityBeanData> {
+	int min;
+	String city;
+	@JSONField(name: "shop_uid")
+	int shopUid;
+	int id;
+	int type;
+	int max;
+	String province;
+	String county;
+	@JSONField(name: "commodity_id")
+	int commodityId;
+	bool valid;
+	@JSONField(name: "from_date")
+	String fromDate;
+	@JSONField(name: "to_date")
+	String toDate;
+}

+ 12 - 0
lib/beans/grab_a_red_envelope_bean_entity.dart

@@ -0,0 +1,12 @@
+import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+
+class GrabARedEnvelopeBeanEntity with JsonConvert<GrabARedEnvelopeBeanEntity> {
+	GrabARedEnvelopeBeanData data;
+	String error;
+}
+
+class GrabARedEnvelopeBeanData with JsonConvert<GrabARedEnvelopeBeanData> {
+	bool success;
+	double amount;
+	String msg;
+}

+ 2 - 0
lib/beans/my_shop_bean_entity.dart

@@ -54,6 +54,8 @@ class MyShopBeanDataData extends ISuspensionBean  with JsonConvert<MyShopBeanDat
   String recommenderName;
   @JSONField(name: "recommender_pic")
   String recommenderPic;
+  @JSONField(name: "user_remark")
+  String userRemark;
 
   String tagIndex;
 

+ 2 - 1
lib/beans/store_bean_entity.dart

@@ -22,7 +22,8 @@ class StoreBeanDataData with JsonConvert<StoreBeanDataData> {
 	int state;
 	bool banned;
 	@JSONField(name: "shop_commission_pricing")
-	double shopCommissionPricing;
+	double shopCommissionPricing;@JSONField(name: "shop_commission_receiver_uid")
+	int shopCommissionReceiverUid;
 	bool private;
 	@JSONField(name: "owner_uid")
 	int ownerUid;

+ 4 - 0
lib/beans/user_bean_entity.dart

@@ -32,6 +32,10 @@ class UserBeanDataData with JsonConvert<UserBeanDataData> {
 	String registerTime;
 	@JSONField(name: "alipay_account")
 	String aliPayAccount;
+	@JSONField(name: "forbid_withdraw")
+	bool forbidWithdraw;
+	@JSONField(name: "forbid_withdraw_by_shop_uid")
+	int forbidWithdrawByShopUid;
 	@JSONField(name: "alipay_name")
 	String aliPayName;
 	@JSONField(name: "wx_openid")

+ 87 - 0
lib/generated/json/activity_bean_entity_helper.dart

@@ -0,0 +1,87 @@
+import 'package:bbyyy/beans/activity_bean_entity.dart';
+
+activityBeanEntityFromJson(ActivityBeanEntity data, Map<String, dynamic> json) {
+	if (json['data'] != null) {
+		data.data = (json['data'] as List).map((v) => ActivityBeanData().fromJson(v)).toList();
+	}
+	if (json['error'] != null) {
+		data.error = json['error'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> activityBeanEntityToJson(ActivityBeanEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['data'] =  entity.data?.map((v) => v.toJson())?.toList();
+	data['error'] = entity.error;
+	return data;
+}
+
+activityBeanDataFromJson(ActivityBeanData data, Map<String, dynamic> json) {
+	if (json['min'] != null) {
+		data.min = json['min'] is String
+				? int.tryParse(json['min'])
+				: json['min'].toInt();
+	}
+	if (json['city'] != null) {
+		data.city = json['city'].toString();
+	}
+	if (json['shop_uid'] != null) {
+		data.shopUid = json['shop_uid'] is String
+				? int.tryParse(json['shop_uid'])
+				: json['shop_uid'].toInt();
+	}
+	if (json['id'] != null) {
+		data.id = json['id'] is String
+				? int.tryParse(json['id'])
+				: json['id'].toInt();
+	}
+	if (json['type'] != null) {
+		data.type = json['type'] is String
+				? int.tryParse(json['type'])
+				: json['type'].toInt();
+	}
+	if (json['max'] != null) {
+		data.max = json['max'] is String
+				? int.tryParse(json['max'])
+				: json['max'].toInt();
+	}
+	if (json['province'] != null) {
+		data.province = json['province'].toString();
+	}
+	if (json['county'] != null) {
+		data.county = json['county'].toString();
+	}
+	if (json['commodity_id'] != null) {
+		data.commodityId = json['commodity_id'] is String
+				? int.tryParse(json['commodity_id'])
+				: json['commodity_id'].toInt();
+	}
+	if (json['valid'] != null) {
+		data.valid = json['valid'];
+	}
+	if (json['from_date'] != null) {
+		data.fromDate = json['from_date'].toString();
+	}
+	if (json['to_date'] != null) {
+		data.toDate = json['to_date'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> activityBeanDataToJson(ActivityBeanData entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['min'] = entity.min;
+	data['city'] = entity.city;
+	data['shop_uid'] = entity.shopUid;
+	data['id'] = entity.id;
+	data['type'] = entity.type;
+	data['max'] = entity.max;
+	data['province'] = entity.province;
+	data['county'] = entity.county;
+	data['commodity_id'] = entity.commodityId;
+	data['valid'] = entity.valid;
+	data['from_date'] = entity.fromDate;
+	data['to_date'] = entity.toDate;
+	return data;
+}

+ 44 - 0
lib/generated/json/base/json_convert_content.dart

@@ -27,6 +27,8 @@ import 'package:bbyyy/beans/save_qr_code_bean_entity.dart';
 import 'package:bbyyy/generated/json/save_qr_code_bean_entity_helper.dart';
 import 'package:bbyyy/beans/fixed_price_bean_entity.dart';
 import 'package:bbyyy/generated/json/fixed_price_bean_entity_helper.dart';
+import 'package:bbyyy/beans/grab_a_red_envelope_bean_entity.dart';
+import 'package:bbyyy/generated/json/grab_a_red_envelope_bean_entity_helper.dart';
 import 'package:bbyyy/beans/pay_by_alipay_bean_entity.dart';
 import 'package:bbyyy/generated/json/pay_by_alipay_bean_entity_helper.dart';
 import 'package:bbyyy/beans/pay_by_we_chat_bean_entity.dart';
@@ -55,6 +57,8 @@ import 'package:bbyyy/beans/d_b_message_bean_entity.dart';
 import 'package:bbyyy/generated/json/d_b_message_bean_entity_helper.dart';
 import 'package:bbyyy/beans/tourist_goods_bean_entity.dart';
 import 'package:bbyyy/generated/json/tourist_goods_bean_entity_helper.dart';
+import 'package:bbyyy/beans/activity_bean_entity.dart';
+import 'package:bbyyy/generated/json/activity_bean_entity_helper.dart';
 import 'package:bbyyy/beans/table_bean_entity.dart';
 import 'package:bbyyy/generated/json/table_bean_entity_helper.dart';
 import 'package:bbyyy/beans/withdraw_pricing_bean_entity.dart';
@@ -173,6 +177,10 @@ class JsonConvert<T> {
 				return fixedPriceBeanEntityFromJson(data as FixedPriceBeanEntity, json) as T;
 			case FixedPriceBeanData:
 				return fixedPriceBeanDataFromJson(data as FixedPriceBeanData, json) as T;
+			case GrabARedEnvelopeBeanEntity:
+				return grabARedEnvelopeBeanEntityFromJson(data as GrabARedEnvelopeBeanEntity, json) as T;
+			case GrabARedEnvelopeBeanData:
+				return grabARedEnvelopeBeanDataFromJson(data as GrabARedEnvelopeBeanData, json) as T;
 			case PayByAlipayBeanEntity:
 				return payByAlipayBeanEntityFromJson(data as PayByAlipayBeanEntity, json) as T;
 			case PayByWeChatBeanEntity:
@@ -221,6 +229,10 @@ class JsonConvert<T> {
 				return touristGoodsBeanEntityFromJson(data as TouristGoodsBeanEntity, json) as T;
 			case TouristGoodsBeanData:
 				return touristGoodsBeanDataFromJson(data as TouristGoodsBeanData, json) as T;
+			case ActivityBeanEntity:
+				return activityBeanEntityFromJson(data as ActivityBeanEntity, json) as T;
+			case ActivityBeanData:
+				return activityBeanDataFromJson(data as ActivityBeanData, json) as T;
 			case TableBeanEntity:
 				return tableBeanEntityFromJson(data as TableBeanEntity, json) as T;
 			case WithdrawPricingBeanEntity:
@@ -392,6 +404,10 @@ class JsonConvert<T> {
 				return fixedPriceBeanEntityToJson(data as FixedPriceBeanEntity);
 			case FixedPriceBeanData:
 				return fixedPriceBeanDataToJson(data as FixedPriceBeanData);
+			case GrabARedEnvelopeBeanEntity:
+				return grabARedEnvelopeBeanEntityToJson(data as GrabARedEnvelopeBeanEntity);
+			case GrabARedEnvelopeBeanData:
+				return grabARedEnvelopeBeanDataToJson(data as GrabARedEnvelopeBeanData);
 			case PayByAlipayBeanEntity:
 				return payByAlipayBeanEntityToJson(data as PayByAlipayBeanEntity);
 			case PayByWeChatBeanEntity:
@@ -440,6 +456,10 @@ class JsonConvert<T> {
 				return touristGoodsBeanEntityToJson(data as TouristGoodsBeanEntity);
 			case TouristGoodsBeanData:
 				return touristGoodsBeanDataToJson(data as TouristGoodsBeanData);
+			case ActivityBeanEntity:
+				return activityBeanEntityToJson(data as ActivityBeanEntity);
+			case ActivityBeanData:
+				return activityBeanDataToJson(data as ActivityBeanData);
 			case TableBeanEntity:
 				return tableBeanEntityToJson(data as TableBeanEntity);
 			case WithdrawPricingBeanEntity:
@@ -641,6 +661,12 @@ class JsonConvert<T> {
 		if(type == (FixedPriceBeanData).toString()){
 			return FixedPriceBeanData().fromJson(json);
 		}
+		if(type == (GrabARedEnvelopeBeanEntity).toString()){
+			return GrabARedEnvelopeBeanEntity().fromJson(json);
+		}
+		if(type == (GrabARedEnvelopeBeanData).toString()){
+			return GrabARedEnvelopeBeanData().fromJson(json);
+		}
 		if(type == (PayByAlipayBeanEntity).toString()){
 			return PayByAlipayBeanEntity().fromJson(json);
 		}
@@ -713,6 +739,12 @@ class JsonConvert<T> {
 		if(type == (TouristGoodsBeanData).toString()){
 			return TouristGoodsBeanData().fromJson(json);
 		}
+		if(type == (ActivityBeanEntity).toString()){
+			return ActivityBeanEntity().fromJson(json);
+		}
+		if(type == (ActivityBeanData).toString()){
+			return ActivityBeanData().fromJson(json);
+		}
 		if(type == (TableBeanEntity).toString()){
 			return TableBeanEntity().fromJson(json);
 		}
@@ -968,6 +1000,12 @@ class JsonConvert<T> {
 		if(<FixedPriceBeanData>[] is M){
 			return data.map<FixedPriceBeanData>((e) => FixedPriceBeanData().fromJson(e)).toList() as M;
 		}
+		if(<GrabARedEnvelopeBeanEntity>[] is M){
+			return data.map<GrabARedEnvelopeBeanEntity>((e) => GrabARedEnvelopeBeanEntity().fromJson(e)).toList() as M;
+		}
+		if(<GrabARedEnvelopeBeanData>[] is M){
+			return data.map<GrabARedEnvelopeBeanData>((e) => GrabARedEnvelopeBeanData().fromJson(e)).toList() as M;
+		}
 		if(<PayByAlipayBeanEntity>[] is M){
 			return data.map<PayByAlipayBeanEntity>((e) => PayByAlipayBeanEntity().fromJson(e)).toList() as M;
 		}
@@ -1040,6 +1078,12 @@ class JsonConvert<T> {
 		if(<TouristGoodsBeanData>[] is M){
 			return data.map<TouristGoodsBeanData>((e) => TouristGoodsBeanData().fromJson(e)).toList() as M;
 		}
+		if(<ActivityBeanEntity>[] is M){
+			return data.map<ActivityBeanEntity>((e) => ActivityBeanEntity().fromJson(e)).toList() as M;
+		}
+		if(<ActivityBeanData>[] is M){
+			return data.map<ActivityBeanData>((e) => ActivityBeanData().fromJson(e)).toList() as M;
+		}
 		if(<TableBeanEntity>[] is M){
 			return data.map<TableBeanEntity>((e) => TableBeanEntity().fromJson(e)).toList() as M;
 		}

+ 41 - 0
lib/generated/json/grab_a_red_envelope_bean_entity_helper.dart

@@ -0,0 +1,41 @@
+import 'package:bbyyy/beans/grab_a_red_envelope_bean_entity.dart';
+
+grabARedEnvelopeBeanEntityFromJson(GrabARedEnvelopeBeanEntity data, Map<String, dynamic> json) {
+	if (json['data'] != null) {
+		data.data = GrabARedEnvelopeBeanData().fromJson(json['data']);
+	}
+	if (json['error'] != null) {
+		data.error = json['error'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> grabARedEnvelopeBeanEntityToJson(GrabARedEnvelopeBeanEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['data'] = entity.data?.toJson();
+	data['error'] = entity.error;
+	return data;
+}
+
+grabARedEnvelopeBeanDataFromJson(GrabARedEnvelopeBeanData data, Map<String, dynamic> json) {
+	if (json['success'] != null) {
+		data.success = json['success'];
+	}
+	if (json['amount'] != null) {
+		data.amount = json['amount'] is String
+				? double.tryParse(json['amount'])
+				: json['amount'].toDouble();
+	}
+	if (json['msg'] != null) {
+		data.msg = json['msg'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> grabARedEnvelopeBeanDataToJson(GrabARedEnvelopeBeanData entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['success'] = entity.success;
+	data['amount'] = entity.amount;
+	data['msg'] = entity.msg;
+	return data;
+}

+ 4 - 0
lib/generated/json/my_shop_bean_entity_helper.dart

@@ -120,6 +120,9 @@ myShopBeanDataDataFromJson(MyShopBeanDataData data, Map<String, dynamic> json) {
 	if (json['recommender_pic'] != null) {
 		data.recommenderPic = json['recommender_pic'].toString();
 	}
+	if (json['user_remark'] != null) {
+		data.userRemark = json['user_remark'].toString();
+	}
 	if (json['tagIndex'] != null) {
 		data.tagIndex = json['tagIndex'].toString();
 	}
@@ -150,6 +153,7 @@ Map<String, dynamic> myShopBeanDataDataToJson(MyShopBeanDataData entity) {
 	data['recommender_uid'] = entity.recommenderUid;
 	data['recommender_name'] = entity.recommenderName;
 	data['recommender_pic'] = entity.recommenderPic;
+	data['user_remark'] = entity.userRemark;
 	data['tagIndex'] = entity.tagIndex;
 	return data;
 }

+ 6 - 0
lib/generated/json/store_bean_entity_helper.dart

@@ -64,6 +64,11 @@ storeBeanDataDataFromJson(StoreBeanDataData data, Map<String, dynamic> json) {
 				? double.tryParse(json['shop_commission_pricing'])
 				: json['shop_commission_pricing'].toDouble();
 	}
+	if (json['shop_commission_receiver_uid'] != null) {
+		data.shopCommissionReceiverUid = json['shop_commission_receiver_uid'] is String
+				? int.tryParse(json['shop_commission_receiver_uid'])
+				: json['shop_commission_receiver_uid'].toInt();
+	}
 	if (json['private'] != null) {
 		data.private = json['private'];
 	}
@@ -148,6 +153,7 @@ Map<String, dynamic> storeBeanDataDataToJson(StoreBeanDataData entity) {
 	data['state'] = entity.state;
 	data['banned'] = entity.banned;
 	data['shop_commission_pricing'] = entity.shopCommissionPricing;
+	data['shop_commission_receiver_uid'] = entity.shopCommissionReceiverUid;
 	data['private'] = entity.private;
 	data['owner_uid'] = entity.ownerUid;
 	data['owner_name'] = entity.ownerName;

+ 10 - 0
lib/generated/json/user_bean_entity_helper.dart

@@ -84,6 +84,14 @@ userBeanDataDataFromJson(UserBeanDataData data, Map<String, dynamic> json) {
 	if (json['alipay_account'] != null) {
 		data.aliPayAccount = json['alipay_account'].toString();
 	}
+	if (json['forbid_withdraw'] != null) {
+		data.forbidWithdraw = json['forbid_withdraw'];
+	}
+	if (json['forbid_withdraw_by_shop_uid'] != null) {
+		data.forbidWithdrawByShopUid = json['forbid_withdraw_by_shop_uid'] is String
+				? int.tryParse(json['forbid_withdraw_by_shop_uid'])
+				: json['forbid_withdraw_by_shop_uid'].toInt();
+	}
 	if (json['alipay_name'] != null) {
 		data.aliPayName = json['alipay_name'].toString();
 	}
@@ -114,6 +122,8 @@ Map<String, dynamic> userBeanDataDataToJson(UserBeanDataData entity) {
 	data['picture'] = entity.picture;
 	data['register_time'] = entity.registerTime;
 	data['alipay_account'] = entity.aliPayAccount;
+	data['forbid_withdraw'] = entity.forbidWithdraw;
+	data['forbid_withdraw_by_shop_uid'] = entity.forbidWithdrawByShopUid;
 	data['alipay_name'] = entity.aliPayName;
 	data['wx_openid'] = entity.wxOpenid;
 	data['wx_name'] = entity.wxName;

+ 2 - 1
lib/https/MyDio.dart

@@ -220,7 +220,8 @@ class MyDio {
       } else {
         EasyLoading.showToast(simpleBean.error);
         if (simpleBean.error.contains('token') ||
-            simpleBean.error.contains('会话过期,请重新登录')) {
+            simpleBean.error.contains('会话过期,请重新登录') ||
+            simpleBean.error.contains('登录失效,请重新登录')) {
           MyCookie().clean();
           RootPageView().bNIndex = 0;
           navigatorKey.currentState.pushNamedAndRemoveUntil(

+ 1 - 0
lib/main.dart

@@ -40,6 +40,7 @@ import 'beans/system_information_bean_entity.dart';
 import 'https/MyDio.dart';
 import 'https/my_request.dart';
 import 'my_tools/const.dart';
+import 'my_tools/daily_red_packet/daily_red_packet.dart';
 import 'my_tools/dims.dart';
 import 'my_tools/easy_loading/easy_loading.dart';
 import 'my_tools/easy_loading/loading.dart';

+ 3 - 0
lib/my_tools/const.dart

@@ -10,6 +10,9 @@ const int shopUserStaff = 1; //客服
 const int shopUserMember = 2; //顾客
 const int shopUserPartner = 3; //合伙人
 
+//活动类型
+const int activityTypeLoginForCash = 1; //登录领取现金红包
+
 //用户在店铺中的审核状态
 int shopUserReviewing = 0; //审核中
 int shopUserReviewPass = 1; //审核通过

+ 72 - 0
lib/my_tools/daily_red_packet/daily_red_packet.dart

@@ -0,0 +1,72 @@
+import 'dart:convert';
+
+import 'package:bbyyy/beans/activity_bean_entity.dart';
+import 'package:bbyyy/beans/grab_a_red_envelope_bean_entity.dart';
+import 'package:bbyyy/https/MyDio.dart';
+import 'package:bbyyy/my_tools/event_bus.dart';
+import 'package:bbyyy/my_tools/my_cookie.dart';
+
+import '../const.dart';
+import '../dims.dart';
+
+class DailyRedPacketTool {
+  ActivityBeanData dailyRedPacket;
+  GrabARedEnvelopeBeanData grabARedEnvelopeBeanData;
+
+  DailyRedPacketTool._internal();
+
+  static DailyRedPacketTool _singleton = DailyRedPacketTool._internal();
+
+  factory DailyRedPacketTool() => _singleton;
+
+  queryRedEnvelopeInformation() {
+    MyDio().query({
+      "key": "activity",
+      "dims": activityDims,
+      "filters": {
+        'conditions': ['type == $activityTypeLoginForCash']
+      }
+    }, (response, hasError) {
+      if (!hasError) {
+        ActivityBeanEntity entity =
+            ActivityBeanEntity().fromJson(json.decode(response.toString()));
+        if (entity.data.isNotEmpty) {
+          dailyRedPacket = entity.data[0];
+          // EventBus().emit('showRP');
+          if(!dailyRedPacket.valid){
+            return;
+          }
+          try {
+            String lastShowTime = MyCookie().prefs.get('dailyRedPacket');
+            DateTime dateTime = DateTime.now();
+            String sT = '${MyCookie().getUID()}${dateTime.year}-${dateTime.month}-${dateTime.day}';
+            if (lastShowTime == null || lastShowTime == '') {
+              EventBus().emit('showRP');
+              MyCookie().prefs.setString('dailyRedPacket', sT);
+            }else{
+              if(lastShowTime==sT){
+              }else{
+                EventBus().emit('showRP');
+                MyCookie().prefs.setString('dailyRedPacket', sT);
+              }
+            }
+          } catch (e) {}
+        }
+      }
+    }, (error) {});
+  }
+
+  grabARedEnvelope() {
+    MyDio().post(
+        '/model/joinActivity',
+        {'id': dailyRedPacket.id, 'user_uid': MyCookie().getUID()},
+        (response, hasError) {
+          if(!hasError){
+            GrabARedEnvelopeBeanEntity entity = GrabARedEnvelopeBeanEntity().fromJson(json.decode(response.toString()));
+            grabARedEnvelopeBeanData = entity.data;
+            EventBus().emit('grabARedEnvelope',grabARedEnvelopeBeanData);
+          }
+        },
+        (error) {});
+  }
+}

+ 22 - 0
lib/my_tools/dims.dart

@@ -19,6 +19,7 @@ var shopUserDims = [
   "collected",
   "recommender_uid",
   "recommender_name",
+  "user_remark",
   "recommender_pic"
 ];
 
@@ -52,6 +53,7 @@ var shopDims = [
   'hide_members',
   'hide_offline_pay',
   'notice',
+  'shop_commission_receiver_uid',
   'longitude',
   'latitude',
   'auto_address',
@@ -77,6 +79,8 @@ var userDims = [
   "alipay_name",
   "wx_openid",
   "wx_name",
+  "forbid_withdraw",
+  "forbid_withdraw_by_shop_uid",
   "wx_picture"
 ];
 
@@ -242,3 +246,21 @@ var payWayDims = [
   "pay",
   "withdraw"
 ];
+
+var activityDims = [
+  'id',
+  'type',
+  'from_date',
+  'to_date',
+  // 'total',
+  'max',
+  'min',
+  // 'random',
+  // 'left',
+  'province',
+  'city',
+  'county',
+  'shop_uid',
+  'commodity_id',
+  'valid'
+];

+ 3 - 2
lib/my_tools/my_colors.dart

@@ -22,9 +22,10 @@ import 'dart:ui';
   100%=00(全透明)*/
 class MyColors{
   static Color cFF4233 = Color(0xffFF4233);
-  static Color cF25D4B = Color(0xffF25D4B);
+  static Color cF25D4B = Color(0xffEB4935);
   static Color cff3646 = Color(0xffff3646);
-  static Color cF55544 = Color(0xffF55544);
+  static Color cF55544 = Color(0xffE0311E);
+  static Color cEB4935 = Color(0xffEB4935);
   static Color cFFECEB = Color(0xffFFECEB);
   static Color cFF7F86 = Color(0xffFF7F86);
   static Color cF7E4E3 = Color(0xffF7E4E3);

+ 3 - 4
lib/my_tools/my_cookie.dart

@@ -20,10 +20,9 @@ class MyCookie {
   //工厂构造函数
   factory MyCookie() => _singleton;
 
-//  String server = '172.16.104.19';
-   String server = 'bby.banghuo.net';
-  //
-  // String server = '39.108.225.84';
+ // String server = '172.16.104.19';
+  String server = 'bby.banghuo.net';
+//   String server = '39.108.225.84';
   SharedPreferences prefs;
   PackageInfo packageInfo;
   UserBeanDataData userBean;

+ 2 - 2
lib/my_tools/my_views.dart

@@ -57,8 +57,8 @@ class MyViews {
       imageUrl: path,
       height: h,
       width: w,
-      memCacheHeight: h.toInt()*2,
-      memCacheWidth: w.toInt()*2,
+      memCacheHeight: (h.floor())*2,
+      memCacheWidth: (w.floor())*2,
       fit: BoxFit.cover,
       placeholder: (context, url) => SvgPicture.asset(
         placeholder,

+ 0 - 1
lib/my_tools/providers.dart

@@ -11,7 +11,6 @@ class MyLocationProvider with ChangeNotifier, DiagnosticableTreeMixin {
     notifyListeners();
   }
 
-  /// Makes `Counter` readable inside the devtools by listing all of its properties
   @override
   void debugFillProperties(DiagnosticPropertiesBuilder properties) {
     super.debugFillProperties(properties);

+ 1 - 1
lib/paegs/ad_details_page/ad_details_page.dart

@@ -83,7 +83,7 @@ class _AdDetailsPageState extends State<AdDetailsPage> {
               child: Column(
                 children: [
                   MyViews().netImg(
-                      imgURL(widget.data.coverPath), 314, double.infinity,
+                      imgURL(widget.data.coverPath), 314,MediaQuery.of(context).size.width,
                       placeholder: 'images/svg/goodsDefImg.svg'),
                   Container(
                     color: Colors.white,

+ 1 - 0
lib/paegs/gang_page/gang_in_page/gang_announcement_page/gang_announcement_page.dart

@@ -63,6 +63,7 @@ class _GangAnnouncementPageState extends State<GangAnnouncementPage> {
                         child: TextField(
                           controller: _announcement,
                           cursorColor: MyColors.cFF4233,
+                          maxLines: null,
                           cursorWidth: 1.0,
                           onTap: () {},
                           decoration: InputDecoration(

+ 9 - 0
lib/paegs/gang_page/gang_in_page/gang_commission_page/gang_commission_page.dart

@@ -202,6 +202,15 @@ class _GangCommissionPageState extends State<GangCommissionPage> {
                 ),
                 GestureDetector(
                   onTap: () {
+                    try {
+                      if (double.parse(_threshold.text.toString()) > 200) {
+                        showToast('起收金额不能大于200元');
+                        return;
+                      }
+                    } catch (e) {
+                      showToast('请填写正确的起收金额');
+                      return;
+                    }
                     updateCommission();
                   },
                   behavior: HitTestBehavior.translucent,

+ 71 - 44
lib/paegs/gang_page/gang_in_page/gang_in_page.dart

@@ -1,6 +1,5 @@
 import 'dart:async';
 import 'dart:convert';
-import 'dart:io';
 
 import 'package:azlistview/azlistview.dart';
 import 'package:bbyyy/beans/goods_bean_entity.dart';
@@ -15,7 +14,6 @@ import 'package:bbyyy/my_tools/const.dart';
 import 'package:bbyyy/my_tools/dims.dart';
 import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
 import 'package:bbyyy/my_tools/event_bus.dart';
-import 'package:bbyyy/my_tools/map_util.dart';
 import 'package:bbyyy/my_tools/my_colors.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
@@ -62,6 +60,8 @@ class _GangInPageState extends State<GangInPage> {
   bool collect = false;
   bool needRE = false;
   bool canSendGood = false;
+  bool hideOfflinePay = true;
+  bool showMore = false;
 
   _GangInPageState();
 
@@ -193,6 +193,7 @@ class _GangInPageState extends State<GangInPage> {
                   case '货帮详情':
                     MyTools().toPage(context, GangInformationPage(widget.data),
                         (then) {
+                      queryStoreInformation();
                       if (then == '删除货帮') {
                         Navigator.pop(context, '删除货帮');
                       }
@@ -412,7 +413,8 @@ class _GangInPageState extends State<GangInPage> {
                               ),
                               GestureDetector(
                                 onTap: () {
-                                 MyViews().mapNavigationPopup(store.latitude,store.longitude,context);
+                                  MyViews().mapNavigationPopup(
+                                      store.latitude, store.longitude, context);
                                 },
                                 behavior: HitTestBehavior.translucent,
                                 child: Row(
@@ -525,6 +527,30 @@ class _GangInPageState extends State<GangInPage> {
               ),
             ),
           ),
+          if (store != null)
+            GestureDetector(
+              onTap: (){
+                setState(() {
+                  showMore = !showMore;
+                });
+              },
+              behavior: HitTestBehavior.translucent,
+              child: AnimatedContainer(
+                child: showMore?Text(
+                  '货帮公告 : ${store.notice.isEmpty ? '暂无' : store.notice}',
+                ):Text(
+                  '货帮公告 : ${store.notice.isEmpty ? '暂无' : store.notice}',
+                  maxLines: 1,
+                  overflow: TextOverflow.ellipsis,
+                  softWrap: true,
+                ),
+                color: Colors.white,
+                width: double.infinity,
+                padding: EdgeInsets.all(12),
+                margin: EdgeInsets.only(bottom: 10),
+                duration: Duration(seconds: 1),
+              ),
+            ),
           Visibility(
             visible:
                 widget.data.privateShop || paymentAuthority(widget.data.role),
@@ -714,10 +740,12 @@ class _GangInPageState extends State<GangInPage> {
                         behavior: HitTestBehavior.translucent,
                         child: Container(
                             decoration: BoxDecoration(
-                                borderRadius: BorderRadius.only(
-                                  topLeft: Radius.circular(20),
-                                  bottomLeft: Radius.circular(20),
-                                ),
+                                borderRadius: !hideOfflinePay
+                                    ? BorderRadius.only(
+                                        topLeft: Radius.circular(20),
+                                        bottomLeft: Radius.circular(20),
+                                      )
+                                    : BorderRadius.circular(20),
                                 border: Border.all(
                                     color: MyColors.cFF4233, width: 1)),
                             height: 40,
@@ -732,40 +760,41 @@ class _GangInPageState extends State<GangInPage> {
                             alignment: Alignment.center),
                       ),
                     ),
-                    Expanded(
-                      child: GestureDetector(
-                        onTap: () {
-                          if (MyCookie().getUID() == widget.data.ownerUid) {
-                            MyTools().toPage(
-                                context, InitiateCollectionPage(widget.data),
-                                (then) {
-                              if (then is String && then == '发起收款') {
-                                controller.requestRefresh();
-                              }
-                            });
-                          } else {
-                            MyTools().toPage(context,
-                                PayToTheHelperPage(widget.data), (then) {});
-                          }
-                        },
-                        behavior: HitTestBehavior.translucent,
-                        child: Container(
-                            decoration: BoxDecoration(
-                                borderRadius: BorderRadius.only(
-                                  topRight: Radius.circular(20),
-                                  bottomRight: Radius.circular(20),
-                                ),
-                                color: MyColors.cFF4233),
-                            height: 40,
-                            child: MyViews().myText(
-                                MyCookie().getUID() == widget.data.ownerUid
-                                    ? '发起收款'
-                                    : '到店付款',
-                                Colors.white,
-                                14),
-                            alignment: Alignment.center),
-                      ),
-                    )
+                    if (!hideOfflinePay)
+                      Expanded(
+                        child: GestureDetector(
+                          onTap: () {
+                            if (MyCookie().getUID() == widget.data.ownerUid) {
+                              MyTools().toPage(
+                                  context, InitiateCollectionPage(widget.data),
+                                  (then) {
+                                if (then is String && then == '发起收款') {
+                                  controller.requestRefresh();
+                                }
+                              });
+                            } else {
+                              MyTools().toPage(context,
+                                  PayToTheHelperPage(widget.data), (then) {});
+                            }
+                          },
+                          behavior: HitTestBehavior.translucent,
+                          child: Container(
+                              decoration: BoxDecoration(
+                                  borderRadius: BorderRadius.only(
+                                    topRight: Radius.circular(20),
+                                    bottomRight: Radius.circular(20),
+                                  ),
+                                  color: MyColors.cFF4233),
+                              height: 40,
+                              child: MyViews().myText(
+                                  MyCookie().getUID() == widget.data.ownerUid
+                                      ? '发起收款'
+                                      : '到店付款',
+                                  Colors.white,
+                                  14),
+                              alignment: Alignment.center),
+                        ),
+                      )
                   ],
                 ),
               ),
@@ -1275,7 +1304,7 @@ class _GangInPageState extends State<GangInPage> {
             StoreBeanEntity().fromJson(json.decode(response.data.toString()));
         store = entity.data.data[0];
         hideMember = store.hideMembers;
-
+        hideOfflinePay = store.hideOfflinePay;
         //自己的公开店铺
         if (!store.private && store.ownerUid == MyCookie().getUID()) {
           canSendGood = true;
@@ -1534,6 +1563,4 @@ class _GangInPageState extends State<GangInPage> {
       }
     }, (error) {});
   }
-
-
 }

+ 120 - 0
lib/paegs/gang_page/gang_in_page/gang_information_page/gang_information_page.dart

@@ -19,6 +19,7 @@ import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/add_par
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_list_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/remove_member_page/remove_member_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/remove_partner_page/remove_partner_page.dart';
+import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/shop_commission_receiver_set_page/shop_commission_receiver_set_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_order_page/gang_order_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_set_page/gang_set_page.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/shop_flow_page/shop_flow_page.dart';
@@ -49,6 +50,8 @@ class _GangInformationPageState extends State<GangInformationPage> {
   RefreshController controller = RefreshController(initialRefresh: true);
   bool privacyProtection = false;
   bool hideMember = true;
+  bool hideOfflinePay = true;
+  int shopCommissionReceiverUid = 0;
 
   _GangInformationPageState();
 
@@ -960,6 +963,34 @@ class _GangInformationPageState extends State<GangInformationPage> {
                         ),
                       ),
                     ),
+                    Visibility(
+                      visible:permissionToModifyCustomerName(widget.data.role),
+                      child: GestureDetector(
+                        onTap: () {},
+                        behavior: HitTestBehavior.translucent,
+                        child: Container(
+                          child: Row(
+                            children: [
+                              Text(
+                                '到店付款',
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 15),
+                              ),
+                              CupertinoSwitch(
+                                  value: !hideOfflinePay,
+                                  onChanged: (v) {
+                                    modifyInStorePaymentStatus();
+                                  }),
+                            ],
+                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                          ),
+                          padding:
+                          EdgeInsets.symmetric(horizontal: 16, vertical: 12),
+                          color: Colors.white,
+                          margin: EdgeInsets.only(top: 3),
+                        ),
+                      ),
+                    ),
                     Visibility(
                       visible: false,
                       //widget.data.ownerUid == MyCookie().getUID()
@@ -1093,6 +1124,41 @@ class _GangInformationPageState extends State<GangInformationPage> {
                         ),
                       ),
                     ),
+                    if(setCustomerServicePermissions(widget.data.role)&&member.length!=0&&store!=null)
+                    GestureDetector(
+                      onTap: () {
+                          MyTools().toPage(context, ShopCommissionReceiverSetPage(data: widget.data,shopCommissionReceiverUid: shopCommissionReceiverUid,store: store,), (then){
+                            queryStoreInformation();
+                          });
+                      },
+                      behavior: HitTestBehavior.translucent,
+                      child: Container(
+                        child: Row(
+                          children: [
+                            Text(
+                              '佣金收取',
+                              style: TextStyle(
+                                  color: MyColors.c333333, fontSize: 15),
+                            ),
+                            Row(
+                              children: [
+                                ClipRRect(
+                                  child: MyViews().netImg(imgURL(shopCommissionReceiverPic()), 40, 40),
+                                  borderRadius: BorderRadius.all(Radius.circular(20)),
+                                ),
+                                Container(child: Text(shopCommissionReceiverNU(),style: TextStyle(),),margin: EdgeInsets.symmetric(horizontal: 10),),
+                                SvgPicture.asset('images/svg/箭头.svg'),
+                              ],
+                            ),
+                          ],
+                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                        ),
+                        padding:
+                        EdgeInsets.symmetric(horizontal: 16, vertical: 12),
+                        color: Colors.white,
+                        margin: EdgeInsets.only(top: 3),
+                      ),
+                    ),
                     Visibility(
                       visible: checkStoreFlowPermissions(widget.data.role),
                       child: GestureDetector(
@@ -1253,6 +1319,8 @@ class _GangInformationPageState extends State<GangInformationPage> {
             StoreBeanEntity().fromJson(json.decode(response.data.toString()));
         store = entity.data.data[0];
         hideMember = store.hideMembers;
+        hideOfflinePay = store.hideOfflinePay;
+        shopCommissionReceiverUid = store.shopCommissionReceiverUid;
         setState(() {});
       }
       endRe(controller);
@@ -1326,4 +1394,56 @@ class _GangInformationPageState extends State<GangInformationPage> {
       }, (error) {});
     });
   }
+
+  void modifyInStorePaymentStatus() {
+    MyDio().update({"key": "shop",
+      "values": {
+        "id": store.id,
+        "hide_offline_pay":!hideOfflinePay
+      }}, (response, hasError) {
+      if(!hasError){
+        showToast('修改成功');
+        hideOfflinePay = !hideOfflinePay;
+        setState(() {
+
+        });
+      }
+    }, (error) { });
+  }
+
+  String shopCommissionReceiverPic() {
+    String pic = '';
+    if(shopCommissionReceiverUid==0){
+      member.forEach((element) {
+        if(element.userUid==store.ownerUid){
+          pic = element.userPic;
+        }
+      });
+    }else{
+      member.forEach((element) {
+        if(element.userUid==shopCommissionReceiverUid){
+          pic = element.userPic;
+        }
+      });
+    }
+    return pic;
+  }
+
+  String shopCommissionReceiverNU() {
+    String nu = '';
+    if(shopCommissionReceiverUid==0){
+      member.forEach((element) {
+        if(element.userUid==store.ownerUid){
+          nu = '${element.userName} (${element.userUid})';
+        }
+      });
+    }else{
+      member.forEach((element) {
+        if(element.userUid==shopCommissionReceiverUid){
+          nu = '${element.userName} (${element.userUid})';
+        }
+      });
+    }
+    return nu;
+  }
 }

+ 150 - 5
lib/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_details_page.dart

@@ -3,8 +3,12 @@ import 'dart:convert';
 import 'package:bbyyy/beans/my_shop_bean_entity.dart';
 import 'package:bbyyy/beans/user_bean_entity.dart';
 import 'package:bbyyy/my_tools/dims.dart';
+import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
+import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_order_flow.dart';
 import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/set_recommended_person_page.dart';
+import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
 
 import '../../../../../https/MyDio.dart';
 import '../../../../../https/url.dart';
@@ -25,8 +29,10 @@ class MemberDetailsPage extends StatefulWidget {
 
 class _MemberDetailsPageState extends State<MemberDetailsPage> {
   TextEditingController _name = TextEditingController();
+  TextEditingController _reMak = TextEditingController();
   UserBeanDataData user;
   MyShopBeanDataData referrer;
+  bool frozen = false;
 
   @override
   void initState() {
@@ -44,6 +50,9 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
     if (_name.text.isEmpty) {
       _name.text = widget.member.userName;
     }
+    if (_reMak.text.isEmpty) {
+      _reMak.text = widget.member.userRemark;
+    }
     return GestureDetector(
       onTap: () {
         MyTools().hideKeyboard(context);
@@ -107,7 +116,7 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
                             child: Row(
                               children: [
                                 Container(
-                                  width: 50,
+                                  width: 60,
                                   child: Text(
                                     '昵称',
                                     style: TextStyle(
@@ -158,7 +167,58 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
                             child: Row(
                               children: [
                                 Container(
-                                  width: 50,
+                                  width: 60,
+                                  child: Text(
+                                    '备注',
+                                    style: TextStyle(
+                                        color: MyColors.c333333, fontSize: 15),
+                                  ),
+                                  margin: EdgeInsets.only(right: 28),
+                                ),
+                                Expanded(
+                                    child: TextField(
+                                  controller: _reMak,
+                                  cursorColor: MyColors.cFF4233,
+                                  cursorWidth: 1.0,
+                                  onTap: () {},
+                                  textAlign: TextAlign.start,
+                                  decoration: InputDecoration(
+                                    border: InputBorder.none,
+                                    disabledBorder: InputBorder.none,
+                                    enabledBorder: InputBorder.none,
+                                    focusedBorder: InputBorder.none,
+                                    isDense: true,
+                                    hintText: '请输入备注',
+                                    hintStyle: TextStyle(
+                                        color: MyColors.c999999, fontSize: 16),
+                                    contentPadding: const EdgeInsets.fromLTRB(
+                                        0, 4.5, 0, 4.5),
+                                  ),
+                                  maxLines: 1,
+                                  style: TextStyle(
+                                      color: MyColors.c333333,
+                                      fontSize: 16,
+                                      height: 1.3,
+                                      letterSpacing: 0.2),
+                                  keyboardType: TextInputType.text,
+                                  onChanged: (t) {},
+                                ))
+                              ],
+                            ),
+                          ),
+                          Container(
+                            height: 0.5,
+                            margin: EdgeInsets.symmetric(horizontal: 15),
+                            color: MyColors.cE7E7E7,
+                          ),
+                          Container(
+                            height: 55,
+                            alignment: Alignment.center,
+                            padding: EdgeInsets.symmetric(horizontal: 15),
+                            child: Row(
+                              children: [
+                                Container(
+                                  width: 60,
                                   child: Text(
                                     'ID号',
                                     style: TextStyle(
@@ -190,7 +250,7 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
                                   child: Row(
                                     children: [
                                       Container(
-                                        width: 50,
+                                        width: 60,
                                         child: Text(
                                           '推荐人',
                                           style: TextStyle(
@@ -310,7 +370,67 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
                                 ),
                               ],
                             ),
-                          )
+                          ),
+                          Container(
+                            height: 0.5,
+                            margin: EdgeInsets.symmetric(horizontal: 15),
+                            color: MyColors.cE7E7E7,
+                          ),
+                          Container(
+                            height: 55,
+                            alignment: Alignment.center,
+                            padding: EdgeInsets.symmetric(horizontal: 15),
+                            child: Row(
+                              children: [
+                                Container(
+                                  width: 60,
+                                  child: Text(
+                                    '冻结提现',
+                                    style: TextStyle(
+                                        color: MyColors.c333333, fontSize: 15),
+                                  ),
+                                  margin: EdgeInsets.only(right: 28),
+                                ),
+                                CupertinoSwitch(
+                                    value: frozen,
+                                    onChanged: (v) {
+                                      frozenWithdrawal();
+                                    }),
+                              ],
+                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                            ),
+                          ),
+                          Container(
+                            height: 0.5,
+                            margin: EdgeInsets.symmetric(horizontal: 15),
+                            color: MyColors.cE7E7E7,
+                          ),
+                          GestureDetector(
+                            onTap: (){
+                              MyTools().toPage(context, MemberOrderFlowPage(widget.member), (then){});
+                            },
+                            behavior: HitTestBehavior.translucent,
+                            child: Container(
+                              height: 55,
+                              alignment: Alignment.center,
+                              padding: EdgeInsets.symmetric(horizontal: 15),
+                              child: Row(
+                                children: [
+                                  Container(
+                                    width: 60,
+                                    child: Text(
+                                      '交易流水',
+                                      style: TextStyle(
+                                          color: MyColors.c333333, fontSize: 15),
+                                    ),
+                                    margin: EdgeInsets.only(right: 28),
+                                  ),
+                                  SvgPicture.asset('images/svg/箭头.svg')
+                                ],
+                                mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                              ),
+                            ),
+                          ),
                         ],
                       ),
                     ),
@@ -323,6 +443,7 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
                                 showToast('昵称为空');
                                 return;
                               } else {
+                                EasyLoading.show();
                                 saveReferrer();
                               }
                             },
@@ -407,7 +528,8 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
         showToast('修改成功');
         Navigator.pop(context);
       }
-    }, (error) {});
+    }, (error) {
+    });
   }
 
   void queryUserId() {
@@ -423,6 +545,7 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
         UserBeanEntity entity =
             UserBeanEntity().fromJson(json.decode(response.data.toString()));
         user = entity.data.data[0];
+        frozen = user.forbidWithdraw;
         setState(() {});
       }
     }, (error) {});
@@ -436,6 +559,7 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
         'recommender_uid': referrer.recommenderUid,
         'recommender_name': referrer.recommenderName,
         'recommender_pic': referrer.recommenderPic,
+        'user_remark':_reMak.text.toString()
       }
     }, (response, hasError) {
       updateMemberName();
@@ -443,4 +567,25 @@ class _MemberDetailsPageState extends State<MemberDetailsPage> {
       updateMemberName();
     });
   }
+
+  void frozenWithdrawal() {
+    showSimpleDialog(frozen ? '是否解除该用户提现限制?' : '是否禁止该用户提现?', context, () {
+      MyDio().update({
+        "key": "user",
+        "values": {
+          "forbid_withdraw": !frozen,
+          "forbid_withdraw_by_shop_uid": widget.member.shopUid,
+          'id': user.id
+        }
+      }, (response, hasError) {
+        if (!hasError) {
+          setState(() {
+            frozen = !frozen;
+          });
+          showToast('修改成功');
+          Navigator.pop(context);
+        }
+      }, (error) {});
+    });
+  }
 }

+ 495 - 0
lib/paegs/gang_page/gang_in_page/gang_information_page/member_list_page/member_order_flow.dart

@@ -0,0 +1,495 @@
+import 'dart:convert';
+
+import 'package:bbyyy/beans/flow_bean_entity.dart';
+import 'package:bbyyy/beans/my_shop_bean_entity.dart';
+import 'package:bbyyy/beans/store_bean_entity.dart';
+import 'package:bbyyy/beans/user_balance_entity.dart';
+import 'package:bbyyy/https/MyDio.dart';
+import 'package:bbyyy/https/url.dart';
+import 'package:bbyyy/my_tools/const.dart';
+import 'package:bbyyy/my_tools/dims.dart';
+import 'package:bbyyy/my_tools/my_colors.dart';
+import 'package:bbyyy/my_tools/my_cookie.dart';
+import 'package:bbyyy/my_tools/my_tools.dart';
+import 'package:bbyyy/my_tools/my_views.dart';
+import 'package:bbyyy/pay/pay_tools.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/svg.dart';
+import 'package:pull_to_refresh/pull_to_refresh.dart';
+
+import 'dart:math' as math;
+
+
+class MemberOrderFlowPage extends StatefulWidget {
+  MyShopBeanDataData data;
+  MemberOrderFlowPage(this.data);
+
+  @override
+  _MemberOrderFlowPageState createState() => _MemberOrderFlowPageState();
+}
+
+class _MemberOrderFlowPageState extends State<MemberOrderFlowPage> {
+  int page = 1;
+  int total = 0;
+  double totalAmount = 0.0;
+  RefreshController controller = RefreshController(initialRefresh: true);
+  List<FlowBeanDataDataRecords> flow = [];
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      body: Column(
+        children: [
+          Stack(
+            children: [
+              Container(
+                decoration: BoxDecoration(
+                  gradient: LinearGradient(colors: MyColors.lg),
+                ),
+                height: 220,
+              ),
+              Column(
+                children: [
+                  SafeArea(
+                    bottom: false,
+                    child: Container(
+                      height: 45,
+                      width: double.infinity,
+                      color: Colors.transparent,
+                      child: Stack(
+                        children: [
+                          Text(
+                            '资金流水',
+                            style: TextStyle(color: Colors.white, fontSize: 16),
+                          ),
+                          Positioned(
+                            left: 0,
+                            child: GestureDetector(
+                              onTap: () {
+                                Navigator.pop(context);
+                              },
+                              behavior: HitTestBehavior.translucent,
+                              child: Transform.rotate(
+                                angle: math.pi,
+                                child: Padding(
+                                  padding: EdgeInsets.only(
+                                      left: 16, right: 16, top: 8, bottom: 8),
+                                  child: SvgPicture.asset(
+                                    'images/svg/箭头.svg',
+                                    color: Colors.white,
+                                    height: 14,
+                                  ),
+                                ),
+                              ),
+                            ),
+                          ),
+                          // Row(
+                          //   children: [
+                          //     GestureDetector(
+                          //       onTap: () {
+                          //         showSelect();
+                          //       },
+                          //       behavior: HitTestBehavior.translucent,
+                          //       child: Container(
+                          //         padding: EdgeInsets.symmetric(
+                          //             vertical: 8, horizontal: 16),
+                          //         child: Text(
+                          //           '筛选',
+                          //           style: TextStyle(
+                          //               color: Colors.white, fontSize: 16),
+                          //         ),
+                          //       ),
+                          //     ),
+                          //   ],
+                          //   mainAxisAlignment: MainAxisAlignment.end,
+                          // )
+                        ],
+                        alignment: Alignment.center,
+                      ),
+                    ),
+                  ),
+                  Container(
+                    margin: EdgeInsets.only(top: 10),
+                    child: Row(
+                      children: [
+                        ClipRRect(
+                          child: MyViews()
+                              .netImg(imgURL(widget.data.userPic), 36, 36),
+                          borderRadius: BorderRadius.circular(18),
+                        ),
+                        Container(
+                          margin: EdgeInsets.only(left: 10),
+                          child: Text(
+                            '${widget.data.userName}(${widget.data.userUid})',
+                            style: TextStyle(color: Colors.white, fontSize: 15),
+                          ),
+                        ),
+                      ],
+                      mainAxisAlignment: MainAxisAlignment.center,
+                    ),
+                    alignment: Alignment.center,
+                  ),
+                  Container(
+                    margin: EdgeInsets.only(top: 10),
+                    child: Center(
+                      child: Text(
+                        '总额:$totalAmount',
+                        style: TextStyle(color: Colors.white, fontSize: 20),
+                      ),
+                    ),
+                  ),
+                  Container(
+                    margin: EdgeInsets.only(top: 10),
+                    child: Center(
+                      child: Text(
+                        '共$total笔',
+                        style: TextStyle(color: Colors.white, fontSize: 20),
+                      ),
+                    ),
+                  ),
+                ],
+              )
+            ],
+          ),
+          Expanded(
+            child: SmartRefresher(
+              controller: controller,
+              onRefresh: onRefresh,
+              onLoading: onLoading,
+              enablePullDown: true,
+              enablePullUp: true,
+              child: flow.length == 0
+                  ? SingleChildScrollView(child: noData())
+                  : ListView.builder(
+                itemBuilder: (c, index) {
+                  return MyViews().getWalletItem(flow[index], context);
+                },
+                padding: EdgeInsets.only(top: 13),
+                itemCount: flow.length,
+              ),
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
+  StateSetter ss;
+  List<String> types = ['全部', '订单', '佣金'];
+  int typeIndex = 0;
+  List<String> times = ['全部', '今天', '昨天', '本周', '上周', '本月'];
+  int timeIndex = 0;
+
+  void showSelect() {
+    showModalBottomSheet(
+        backgroundColor: Colors.transparent,
+        context: context,
+        builder: (context) {
+          return StatefulBuilder(builder: (c, s) {
+            ss = s;
+            return Container(
+              color: Colors.transparent,
+              height: 240 +
+                  (MediaQuery.of(context).size.width / 3 / 2.5) *
+                      ((types.length / 3).ceil()),
+              child: Column(
+                children: [
+                  Container(
+                    padding:
+                    EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 0),
+                    decoration: BoxDecoration(
+                        color: Colors.white,
+                        borderRadius: BorderRadius.only(
+                            topLeft: Radius.circular(8),
+                            topRight: Radius.circular(8))),
+                    child: Row(
+                      children: [
+                        GestureDetector(
+                          onTap: () {
+                            Navigator.pop(context);
+                          },
+                          behavior: HitTestBehavior.translucent,
+                          child: Padding(
+                            padding: const EdgeInsets.all(8.0),
+                            child: Text(
+                              '取消',
+                              style: TextStyle(
+                                  color: MyColors.cFF4233, fontSize: 14),
+                            ),
+                          ),
+                        ),
+                        Text(
+                          '类型筛选',
+                          style:
+                          TextStyle(color: MyColors.c333333, fontSize: 16),
+                        ),
+                        GestureDetector(
+                          child: Padding(
+                            padding: const EdgeInsets.all(8.0),
+                            child: Text(
+                              '确定',
+                              style: TextStyle(
+                                  color: MyColors.cFF4233, fontSize: 14),
+                            ),
+                          ),
+                          behavior: HitTestBehavior.translucent,
+                          onTap: () {
+                            Navigator.pop(context);
+                            controller.requestRefresh();
+                          },
+                        ),
+                      ],
+                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    ),
+                    height: 39.5,
+                  ),
+                  Container(
+                    height: 0.5,
+                    color: MyColors.cF5F5F5,
+                  ),
+                  Expanded(
+                    child: Container(
+                      color: Colors.white,
+                      child: SingleChildScrollView(
+                        child: Column(
+                          children: [
+                            Visibility(
+                              visible: types.length > 1,
+                              child: Container(
+                                height: 20 +
+                                    (MediaQuery.of(context).size.width /
+                                        3 /
+                                        2.5) *
+                                        ((types.length / 3).ceil()),
+                                color: Colors.white,
+                                child: Column(
+                                  children: [
+                                    Container(
+                                      child: Text(
+                                        '类型筛选',
+                                        style: TextStyle(
+                                            color: MyColors.c333333,
+                                            fontSize: 15),
+                                      ),
+                                      margin: EdgeInsets.only(
+                                          left: 18, top: 5, bottom: 5),
+                                      height: 20,
+                                    ),
+                                    Expanded(
+                                      child: GridView(
+                                        gridDelegate:
+                                        SliverGridDelegateWithFixedCrossAxisCount(
+                                            crossAxisCount: 3,
+                                            childAspectRatio: 3),
+                                        children: getTypeItems(),
+                                        physics: NeverScrollableScrollPhysics(),
+                                      ),
+                                    )
+                                  ],
+                                  crossAxisAlignment: CrossAxisAlignment.start,
+                                ),
+                              ),
+                            ),
+                            Visibility(
+                              visible: times.length > 1,
+                              child: Container(
+                                height: 20 +
+                                    (MediaQuery.of(context).size.width /
+                                        3 /
+                                        2.5) *
+                                        ((times.length / 3).ceil()),
+                                color: Colors.white,
+                                child: Column(
+                                  children: [
+                                    Container(
+                                      child: Text(
+                                        '时间筛选',
+                                        style: TextStyle(
+                                            color: MyColors.c333333,
+                                            fontSize: 15),
+                                      ),
+                                      margin: EdgeInsets.only(
+                                          left: 18, top: 5, bottom: 5),
+                                      height: 20,
+                                    ),
+                                    Expanded(
+                                      child: GridView(
+                                        gridDelegate:
+                                        SliverGridDelegateWithFixedCrossAxisCount(
+                                            crossAxisCount: 3,
+                                            childAspectRatio: 3),
+                                        children: getTimeItems(),
+                                        physics: NeverScrollableScrollPhysics(),
+                                      ),
+                                    )
+                                  ],
+                                  crossAxisAlignment: CrossAxisAlignment.start,
+                                ),
+                              ),
+                            ),
+                          ],
+                          crossAxisAlignment: CrossAxisAlignment.start,
+                        ),
+                      ),
+                    ),
+                  )
+                ],
+              ),
+            );
+          });
+        });
+  }
+
+  getTypeItems() {
+    List<Widget> item = [];
+    for (int i = 0; i < types.length; i++) {
+      item.add(GestureDetector(
+        onTap: () {
+          ss(() {
+            if (typeIndex == i) {
+              typeIndex = -1;
+            } else {
+              typeIndex = i;
+            }
+          });
+          // getTime(timeIndex);
+        },
+        behavior: HitTestBehavior.translucent,
+        child: Container(
+          alignment: Alignment.center,
+          child: Container(
+            decoration: BoxDecoration(
+                color: i == typeIndex ? MyColors.cFFECEB : MyColors.cEDEDED,
+                borderRadius: BorderRadius.all(Radius.circular(4))),
+            height: 34,
+            width: 100,
+            child: Text(
+              types[i],
+              style: TextStyle(
+                  color: i == typeIndex ? MyColors.cFF4233 : MyColors.c666666,
+                  fontSize: 14),
+            ),
+            alignment: Alignment.center,
+          ),
+        ),
+      ));
+    }
+    return item;
+  }
+
+  getTimeItems() {
+    List<Widget> item = [];
+    for (int i = 0; i < times.length; i++) {
+      item.add(GestureDetector(
+        onTap: () {
+          ss(() {
+            if (timeIndex == i) {
+              timeIndex = -1;
+            } else {
+              timeIndex = i;
+            }
+          });
+          if (timeIndex != 0) {
+            getTime(timeIndex - 1);
+          }
+        },
+        behavior: HitTestBehavior.translucent,
+        child: Container(
+          alignment: Alignment.center,
+          child: Container(
+            decoration: BoxDecoration(
+                color: i == timeIndex ? MyColors.cFFECEB : MyColors.cEDEDED,
+                borderRadius: BorderRadius.all(Radius.circular(4))),
+            height: 34,
+            width: 100,
+            child: Text(
+              times[i],
+              style: TextStyle(
+                  color: i == timeIndex ? MyColors.cFF4233 : MyColors.c666666,
+                  fontSize: 14),
+            ),
+            alignment: Alignment.center,
+          ),
+        ),
+      ));
+    }
+    return item;
+  }
+
+  void myFlow() {
+
+    var conditions = [
+      "user_uid==${widget.data.userUid}",
+      'paid_amount > 0 '
+    ];
+    conditions.add('type IN [$flowTypeOrderThirdPlatform]');
+    conditions.add('shop_uid == ${widget.data.shopUid}');
+    if (typeIndex != 0 && typeIndex != -1) {
+      conditions.add("type IN ${typeIndex == 1 ? [
+      flowTypeOrderCommodity,
+          flowTypeOrderAnnualFee,
+          flowTypeOrderVirtualProduct,
+          flowTypeOrderThirdPlatform,
+          flowTypeOrderOfflineTransfer,
+          flowTypeScancodeAilyPay
+          ] : [flowTypeShopCommission]}");
+    }
+    if (timeIndex != 0 && timeIndex != -1) {
+      conditions.add("pay_time between ${getTime(timeIndex - 1)}");
+    }
+    MyDio().query({
+      "key": "flow",
+      "filters": {"conditions": conditions},
+      "dims": flowDims,
+      "order_by": ["id,DESC"],
+      "paging": [page, 50]
+    }, (response, hasError) {
+      if (!hasError) {
+        FlowBeanEntity entity =
+        FlowBeanEntity().fromJson(json.decode(response.data.toString()));
+        total = entity.data.total;
+        totalAmount = entity.data.data.totalAmount;
+        if (page == 1) {
+          flow.clear();
+        }
+        try {
+          flow.addAll(entity.data.data.records);
+        } catch (e) {}
+        setState(() {});
+      }
+      endRe(controller);
+    }, (error) {});
+  }
+
+  void onRefresh() {
+    page = 1;
+    checkIfYouAreTheOwner();
+    myFlow();
+  }
+
+  void onLoading() {
+    page++;
+    myFlow();
+  }
+
+  void checkIfYouAreTheOwner() {
+    MyDio().query({
+      "key": "shop",
+      "filters": {
+        "conditions": ["owner_uid == ${MyCookie().getUID()}"]
+      },
+      "dims": shopDims,
+      "paging": [1, 5000]
+    }, (response, hasError) {
+      if (!hasError) {
+        StoreBeanEntity entity =
+        StoreBeanEntity().fromJson(json.decode(response.data.toString()));
+        if (entity.data.data.length == 0) {
+          types.remove('佣金');
+        }
+        setState(() {});
+      }
+      endRe(controller);
+    }, (error) {});
+  }
+}

+ 157 - 0
lib/paegs/gang_page/gang_in_page/gang_information_page/shop_commission_receiver_set_page/shop_commission_receiver_set_page.dart

@@ -0,0 +1,157 @@
+import 'dart:convert';
+
+import 'package:bbyyy/beans/my_shop_bean_entity.dart';
+import 'package:bbyyy/beans/store_bean_entity.dart';
+import 'package:bbyyy/https/MyDio.dart';
+import 'package:bbyyy/https/url.dart';
+import 'package:bbyyy/my_tools/const.dart';
+import 'package:bbyyy/my_tools/dims.dart';
+import 'package:bbyyy/my_tools/my_colors.dart';
+import 'package:bbyyy/my_tools/my_tools.dart';
+import 'package:bbyyy/my_tools/my_views.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+class ShopCommissionReceiverSetPage extends StatefulWidget {
+  MyShopBeanDataData data;
+  int shopCommissionReceiverUid;
+  StoreBeanDataData store;
+
+  ShopCommissionReceiverSetPage(
+      {this.data, this.shopCommissionReceiverUid, this.store});
+
+  @override
+  _ShopCommissionReceiverSetPage createState() =>
+      _ShopCommissionReceiverSetPage();
+}
+
+class _ShopCommissionReceiverSetPage
+    extends State<ShopCommissionReceiverSetPage> {
+  List<MyShopBeanDataData> memberList = [];
+
+  @override
+  void initState() {
+    super.initState();
+    queryRecommender();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      body: Column(
+        children: [
+          MyViews().myAppBar('选择佣金管理人', context, []),
+          Expanded(
+              child: ListView.builder(
+            itemBuilder: (BuildContext context, int index) {
+              return GestureDetector(
+                onTap: () {
+                  showSimpleDialog(
+                      '确认设置 ${memberList[index].userName} 为佣金管理者吗?', context,
+                      () {
+                    setUpCommissionManager(memberList[index].userUid);
+                    Navigator.pop(context);
+                  });
+                },
+                behavior: HitTestBehavior.translucent,
+                child: Container(
+                  padding: EdgeInsets.only(left: 15, right: 15),
+                  color: Colors.white,
+                  child: Column(
+                    children: [
+                      Container(
+                        margin: EdgeInsets.only(top: 8, bottom: 6),
+                        child: Row(
+                          children: [
+                            Row(
+                              children: [
+                                Container(
+                                  margin: EdgeInsets.only(right: 6),
+                                  child: ClipRRect(
+                                    child: MyViews().netImg(
+                                        imgURL(memberList[index].userPic),
+                                        42,
+                                        42),
+                                    borderRadius: BorderRadius.circular(21),
+                                  ),
+                                ),
+                                MyViews().myText(
+                                    '${memberList[index].userName} (${memberList[index].userUid})',
+                                    MyColors.c333333,
+                                    15),
+                                if (memberList[index].userUid ==
+                                        widget.shopCommissionReceiverUid ||
+                                    (widget.shopCommissionReceiverUid == 0 &&
+                                        memberList[index].role ==
+                                            shopUserOwner))
+                                  Container(
+                                    margin: EdgeInsets.only(left: 20),
+                                    decoration: BoxDecoration(
+                                        color: MyColors.cFF4233,
+                                        borderRadius:
+                                            BorderRadius.circular(12)),
+                                    height: 24,
+                                    width: 40,
+                                    child: Text(
+                                      '当前',
+                                      style: TextStyle(
+                                          color: Colors.white, fontSize: 12),
+                                    ),
+                                    alignment: Alignment.center,
+                                  ),
+                              ],
+                            ),
+                          ],
+                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                        ),
+                      ),
+                      Container(
+                        height: 0.5,
+                        color: MyColors.cE7E7E7,
+                      )
+                    ],
+                  ),
+                ),
+              );
+            },
+            itemCount: memberList.length,
+            padding: EdgeInsets.symmetric(vertical: 10),
+          ))
+        ],
+      ),
+    );
+  }
+
+  void queryRecommender() {
+    var conditions = ["shop_uid==${widget.data.shopUid}", "review_state==1"];
+    conditions.add('role IN [$shopUserPartner,$shopUserOwner]');
+    MyDio().query({
+      "key": "shop_user",
+      "filters": {"conditions": conditions},
+      "dims": shopUserDims,
+      "paging": [1, 2000]
+    }, (response, hasError) {
+      if (!hasError) {
+        MyShopBeanEntity entity =
+            MyShopBeanEntity().fromJson(json.decode(response.data.toString()));
+        memberList = entity.data.data;
+        setState(() {});
+      }
+    }, (error) {});
+  }
+
+  void setUpCommissionManager(int userUid) {
+    MyDio().update({
+      "key": "shop",
+      "values": {"id": widget.store.id, 'shop_commission_receiver_uid': userUid}
+    }, (response, hasError) {
+      if(!hasError){
+        showToast('设置成功');
+        widget.shopCommissionReceiverUid = userUid;
+        setState(() {
+
+        });
+      }
+    }, (error) {});
+  }
+}

+ 1 - 1
lib/paegs/home_page/home_page.dart

@@ -385,7 +385,7 @@ class _HomePageState extends State<HomePage>
                           ),
                         )
                       : MyViews().netImg(
-                          imgURL(netImgs[index]), H, double.infinity,
+                          imgURL(netImgs[index]), H, MediaQuery.of(context).size.width,
                           placeholder: 'images/svg/goodsDefImg.svg');
                 },
                 itemCount: netImgs.length == 0 ? imgs.length : netImgs.length,

+ 44 - 2
lib/paegs/mine_page/bind_alipay_page/set_alipay_page.dart

@@ -1,4 +1,5 @@
 import 'package:bbyyy/https/MyDio.dart';
+import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
 import 'package:bbyyy/my_tools/my_colors.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
@@ -37,7 +38,23 @@ class _SetAlipayPageState extends State<SetAlipayPage> {
         backgroundColor: Colors.white,
         body: Column(
           children: [
-            MyViews().myAppBar('绑定支付宝账号', context, []),
+            MyViews().myAppBar('绑定支付宝账号', context, [
+              GestureDetector(
+                onTap: (){
+                  showSimpleDialog('确认删除该账号?', context, (){
+                    delAccountNumber();
+                  });
+                },
+                behavior: HitTestBehavior.translucent,
+                child: Container(
+                  padding: EdgeInsets.symmetric(horizontal: 16,vertical: 5),
+                  child: Text(
+                    '删除',
+                    style: TextStyle(color: MyColors.cFF4233, fontSize: 16),
+                  ),
+                ),
+              ),
+            ]),
             Expanded(
               child: SingleChildScrollView(
                 child: Column(
@@ -108,7 +125,7 @@ class _SetAlipayPageState extends State<SetAlipayPage> {
                           enabledBorder: InputBorder.none,
                           focusedBorder: InputBorder.none,
                           isDense: true,
-                          hintText: '请输入支付宝账号',
+                          hintText: '请填写账号绑定人姓名',
                           hintStyle:
                               TextStyle(color: MyColors.c999999, fontSize: 16),
                           contentPadding:
@@ -170,6 +187,7 @@ class _SetAlipayPageState extends State<SetAlipayPage> {
   }
 
   void saveAlipayNum() {
+    EasyLoading.show();
     MyDio().update({
       "key": "user",
       "values": {
@@ -183,6 +201,30 @@ class _SetAlipayPageState extends State<SetAlipayPage> {
       if (!hasError) {
         MyCookie().userBean.aliPayAccount = controller.text.toString();
         MyCookie().userBean.aliPayName = name.text.toString();
+        showToast('绑定成功');
+        Navigator.pop(context);
+      }
+    }, (error) {});
+  }
+
+  void delAccountNumber() {
+    EasyLoading.show();
+    MyDio().update({
+      "key": "user",
+      "values": {
+        "name": MyCookie().loginInformation.data.extra.name,
+        "picture": MyCookie().loginInformation.data.extra.picture,
+        "id": MyCookie().loginInformation.data.extra.id,
+        "alipay_account": '',
+        "alipay_name": ''
+      }
+    }, (response, hasError) {
+      if (!hasError) {
+        controller.clear();
+        name.clear();
+        MyCookie().userBean.aliPayAccount = '';
+        MyCookie().userBean.aliPayName = '';
+        showToast('清除成功');
         Navigator.pop(context);
       }
     }, (error) {});

+ 31 - 9
lib/paegs/mine_page/wallet_page/wallet_page.dart

@@ -303,7 +303,7 @@ class _WalletPageState extends State<WalletPage> {
   }
 
   StateSetter ss;
-  List<String> types = ['全部', '订单', '佣金'];
+  List<String> types = ['全部', '订单', '佣金','提现'];
   int typeIndex = 0;
   List<String> times = ['全部', '今天', '昨天', '本周', '上周', '本月'];
   int timeIndex = 0;
@@ -558,14 +558,36 @@ class _WalletPageState extends State<WalletPage> {
       // "paid_amount ${sTab == 0 ? '>' : '<'} 0"
     ];
     if (typeIndex != 0 && typeIndex != -1) {
-      conditions.add("type IN ${typeIndex == 1 ? [
-          flowTypeOrderCommodity,
-          flowTypeOrderAnnualFee,
-          flowTypeOrderVirtualProduct,
-          flowTypeOrderThirdPlatform,
-          flowTypeOrderOfflineTransfer,
-          flowTypeScancodeAilyPay
-        ] : [flowTypeShopCommission]}");
+      switch(typeIndex){
+        case 1:
+          conditions.add('type IN ${[
+            flowTypeOrderCommodity,
+            flowTypeOrderAnnualFee,
+            flowTypeOrderVirtualProduct,
+            flowTypeOrderThirdPlatform,
+            flowTypeOrderOfflineTransfer,
+            flowTypeScancodeAilyPay
+          ]}');
+          break;
+        case 2:
+          conditions.add('type IN ${[
+            flowTypeShopCommission
+          ]}');
+          break;
+        case 3:
+          conditions.add('type IN ${[
+            flowTypeWithdraw
+          ]}');
+          break;
+      }
+      // conditions.add("type IN ${typeIndex == 1 ? [
+      //     flowTypeOrderCommodity,
+      //     flowTypeOrderAnnualFee,
+      //     flowTypeOrderVirtualProduct,
+      //     flowTypeOrderThirdPlatform,
+      //     flowTypeOrderOfflineTransfer,
+      //     flowTypeScancodeAilyPay
+      //   ] : [flowTypeShopCommission]}");
     }
     if (timeIndex != 0 && timeIndex != -1) {
       conditions.add("pay_time between ${getTime(timeIndex - 1)}");

+ 6 - 0
lib/paegs/mine_page/wallet_page/withdraw_page/withdraw_page.dart

@@ -347,6 +347,12 @@ class _WithdrawPageState extends State<WithdrawPage> {
                                 showToast('请选择提现方式');
                                 return;
                               }
+                              if(MyCookie().userBean.forbidWithdraw){
+                                showSimpleDialog('你已经被冻结提现,请联系群主或客服。', context, (){
+                                  Navigator.pop(context);
+                                });
+                                return;
+                              }
                               if (withdrawalStatus == 0) {
                                 withdrawalStatus = 1;
                                 withdraw();

+ 2 - 1
lib/paegs/product_details_page/product_details_page.dart

@@ -17,6 +17,7 @@ import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_in_page.dart';
 import 'package:bbyyy/paegs/place_an_order_page/place_an_order_page.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
 
 class ProductDetailsPage extends StatefulWidget {
   GoodsBeanDataData data;
@@ -124,7 +125,7 @@ class _ProductDetailsPageState extends State<ProductDetailsPage> {
                   child: Column(
                     children: [
                       MyViews().netImg(
-                          imgURL(widget.data.coverPath), 314, double.infinity,
+                          imgURL(widget.data.coverPath), 314, MediaQuery.of(context).size.width,
                           placeholder: 'images/svg/goodsDefImg.svg'),
                       Container(
                         color: Colors.white,

+ 161 - 151
lib/paegs/root_page/root_page.dart

@@ -2,9 +2,11 @@ import 'dart:async';
 import 'dart:convert';
 
 import 'package:bbyyy/beans/coupon_bean_entity.dart';
+import 'package:bbyyy/beans/grab_a_red_envelope_bean_entity.dart';
 import 'package:bbyyy/beans/user_bean_entity.dart';
 import 'package:bbyyy/https/MyDio.dart';
 import 'package:bbyyy/https/my_request.dart';
+import 'package:bbyyy/my_tools/daily_red_packet/daily_red_packet.dart';
 import 'package:bbyyy/my_tools/dims.dart';
 import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart';
 import 'package:bbyyy/my_tools/event_bus.dart';
@@ -17,8 +19,10 @@ import 'package:bbyyy/my_tools/pop_up_queue.dart';
 import 'package:bbyyy/nsq/nsq.dart' as Nsq;
 import 'package:bbyyy/paegs/gang_page/gang_page.dart';
 import 'package:bbyyy/paegs/home_page/home_page.dart';
+import 'package:bbyyy/paegs/mine_page/bind_alipay_page/bind_alipay_page.dart';
 import 'package:bbyyy/paegs/mine_page/mine_page.dart';
 import 'package:bbyyy/paegs/mine_page/order_page/order_page.dart';
+import 'package:bbyyy/paegs/mine_page/wallet_page/withdraw_page/withdraw_page.dart';
 import 'package:bbyyy/paegs/msg_page/msg_page.dart';
 import 'package:bbyyy/paegs/root_page/root_page_view.dart';
 import 'package:flutter/cupertino.dart';
@@ -76,7 +80,8 @@ class _RootPageState extends State<RootPage> {
     queryPersonalInformation();
     checkForUpdates(context);
     Future.delayed(Duration(seconds: 1), () {
-      checkCouponEvent();
+      // checkCouponEvent();
+      DailyRedPacketTool().queryRedEnvelopeInformation();
     });
   }
 
@@ -194,22 +199,22 @@ class _RootPageState extends State<RootPage> {
   }
 
   //查询优惠券活动
-  checkCouponEvent() {
-    MyDio().query({
-      "key": "coupon_distribute",
-      "filters": {
-        "conditions": ["valid==true"],
-      },
-      "dims": couponDistributeDims,
-      "paging": [1, 100]
-    }, (response, hasError) {
-      if (!hasError) {
-        CouponBeanEntity entity =
-            CouponBeanEntity().fromJson(json.decode(response.data.toString()));
-        PopUpQueue().coupon.addAll(entity.data.data);
-      }
-    }, (error) {});
-  }
+  // checkCouponEvent() {
+  //   MyDio().query({
+  //     "key": "coupon_distribute",
+  //     "filters": {
+  //       "conditions": ["valid==true"],
+  //     },
+  //     "dims": couponDistributeDims,
+  //     "paging": [1, 100]
+  //   }, (response, hasError) {
+  //     if (!hasError) {
+  //       CouponBeanEntity entity =
+  //           CouponBeanEntity().fromJson(json.decode(response.data.toString()));
+  //       PopUpQueue().coupon.addAll(entity.data.data);
+  //     }
+  //   }, (error) {});
+  // }
 
   int showWitch = 0;
 
@@ -220,36 +225,39 @@ class _RootPageState extends State<RootPage> {
       barrierDismissible: false,
       // false = user must tap button, true = tap outside dialog
       builder: (BuildContext dialogContext) {
-        return StatefulBuilder(builder: (BuildContext context, void Function(void Function()) setState) {
-          return Container(
-            child: Column(
-              children: [
-                showRedEnvelope(setState),
-                GestureDetector(
-                  onTap: () {
-                    showWitch = 0;
-                    Navigator.pop(context);
-                  },
-                  child: Container(
-                    margin: EdgeInsets.only(top: 24 * ppx),
-                    child: Icon(
-                      Icons.clear,
-                      color: Colors.white,
+        return StatefulBuilder(
+          builder:
+              (BuildContext context, void Function(void Function()) setState) {
+            return Container(
+              child: Column(
+                children: [
+                  showRedEnvelope(setState),
+                  GestureDetector(
+                    onTap: () {
+                      showWitch = 0;
+                      Navigator.pop(context);
+                    },
+                    child: Container(
+                      margin: EdgeInsets.only(top: 24 * ppx),
+                      child: Icon(
+                        Icons.clear,
+                        color: Colors.white,
+                      ),
+                      height: 28 * ppx,
+                      width: 28 * ppx,
+                      alignment: Alignment.center,
+                      decoration: BoxDecoration(
+                          color: MyColors.c25E7E7E7,
+                          borderRadius: BorderRadius.circular(14 * ppx)),
                     ),
-                    height: 28 * ppx,
-                    width: 28 * ppx,
-                    alignment: Alignment.center,
-                    decoration: BoxDecoration(
-                        color: MyColors.c25E7E7E7,
-                        borderRadius: BorderRadius.circular(14 * ppx)),
-                  ),
-                )
-              ],
-              mainAxisAlignment: MainAxisAlignment.center,
-            ),
-            alignment: Alignment.center,
-          );
-        },);
+                  )
+                ],
+                mainAxisAlignment: MainAxisAlignment.center,
+              ),
+              alignment: Alignment.center,
+            );
+          },
+        );
       },
     );
   }
@@ -267,6 +275,8 @@ class _RootPageState extends State<RootPage> {
     }
   }
 
+  bool grab = false;
+
   Stack redEnvelopeP1(void Function(void Function() p1) setState) {
     return Stack(
       children: [
@@ -289,9 +299,31 @@ class _RootPageState extends State<RootPage> {
           left: ((375 / 2 - 45) * ppx),
           child: GestureDetector(
             onTap: () {
-              setState((){
-                showWitch = 1;
+              setState(() {
+                grab = true;
               });
+              if (DailyRedPacketTool().dailyRedPacket.valid) {
+                EventBus().on('grabARedEnvelope', (arg) {
+                  if (arg is GrabARedEnvelopeBeanData) {
+                    if (arg.success) {
+                      setState(() {
+                        showWitch = 1;
+                      });
+                    } else {
+                      setState(() {
+                        showWitch = 2;
+                      });
+                    }
+                  }
+                  EventBus().off('grabARedEnvelope');
+                });
+                DailyRedPacketTool().grabARedEnvelope();
+              } else {
+                setState(() {
+                  showWitch = 2;
+                });
+              }
+
             },
             behavior: HitTestBehavior.translucent,
             child: Container(
@@ -300,14 +332,25 @@ class _RootPageState extends State<RootPage> {
                   borderRadius: BorderRadius.circular(45 * ppx)),
               height: 90 * ppx,
               width: 90 * ppx,
-              child: Text(
-                '抢',
-                style: TextStyle(
-                    color: MyColors.c333333,
-                    fontSize: 40 * ppx,
-                    decoration: TextDecoration.none,
-                    fontWeight: FontWeight.normal),
-              ),
+              child: grab
+                  ? Container(
+                      height: 40,
+                      width: 40,
+                      padding: const EdgeInsets.all(2.0),
+                      child: CircularProgressIndicator(
+                        backgroundColor: Colors.transparent,
+                        valueColor: AlwaysStoppedAnimation(Colors.white),
+                        strokeWidth: 2,
+                      ),
+                    )
+                  : Text(
+                      '抢',
+                      style: TextStyle(
+                          color: MyColors.c333333,
+                          fontSize: 40 * ppx,
+                          decoration: TextDecoration.none,
+                          fontWeight: FontWeight.normal),
+                    ),
               alignment: Alignment.center,
             ),
           ),
@@ -319,7 +362,7 @@ class _RootPageState extends State<RootPage> {
               Container(
                 margin: EdgeInsets.only(top: 28 * ppx),
                 child: Text(
-                  '登红包',
+                  '登红包',
                   style: TextStyle(
                       color: Colors.white,
                       fontSize: 32 * ppx,
@@ -356,7 +399,7 @@ class _RootPageState extends State<RootPage> {
             width: double.infinity,
             decoration: BoxDecoration(
                 borderRadius: BorderRadius.circular(16),
-                color: MyColors.cF55544),
+                color: MyColors.cEB4935),
             margin: EdgeInsets.symmetric(horizontal: 45 * ppx),
             alignment: Alignment.bottomCenter,
           ),
@@ -366,76 +409,63 @@ class _RootPageState extends State<RootPage> {
             children: [
               SvgPicture.asset('images/svg/logo.svg'),
               Container(
-                margin: EdgeInsets.only(top: 48 * ppx),
+                margin: EdgeInsets.only(top: 67 * ppx),
                 child: Text(
-                  '0.30元',
+                  '${DailyRedPacketTool().grabARedEnvelopeBeanData.amount}元',
                   style: TextStyle(
                       color: MyColors.cF1D19B,
-                      fontSize: 30 * ppx,
-                      fontWeight: FontWeight.normal,
+                      fontSize: 38 * ppx,
+                      fontWeight: FontWeight.bold,
                       decoration: TextDecoration.none),
                 ),
               ),
-              Container(
-                margin: EdgeInsets.only(top: 10 * ppx),
-                child: RichText(
-                  text: TextSpan(
-                      text: '自动划入钱包,去',
-                      style: TextStyle(
-                          color: MyColors.c333333,
-                          decoration: TextDecoration.none,
-                          fontSize: 13 * ppx),
-                      children: [
-                        TextSpan(
-                            text: '提现',
-                            style: TextStyle(
-                                color: MyColors.c44D7B6,
-                                decoration: TextDecoration.underline,
-                                fontSize: 13 * ppx),
-                            recognizer: TapGestureRecognizer()
-                              ..onTap = () {
-                                setState((){
-                                  showWitch = 2;
-                                });
-                              }),
-                      ]),
-                ),
-              )
             ],
           ),
           top: 37 * ppx,
         ),
         Positioned(
-          child: Column(
-            children: [
-              Text(
-                '详细规则',
-                style: TextStyle(
-                    color: Colors.white,
-                    fontSize: 12 * ppx,
-                    fontWeight: FontWeight.normal,
-                    decoration: TextDecoration.none),
-              ),
-              Container(
-                margin: EdgeInsets.only(top: 4 * ppx),
-                child: Text(
-                  '每人每天限领一份,每天八点官方准时派发登陆活动,',
-                  style: TextStyle(
-                      color: Colors.white,
-                      fontSize: 9 * ppx,
-                      fontWeight: FontWeight.normal,
-                      decoration: TextDecoration.none),
-                ),
-              ),
-              Text(
-                '每天10000元,最高可直接领取100元!!!',
+          child: RichText(
+            text: TextSpan(
+                text: '自动划入钱包,去',
                 style: TextStyle(
                     color: Colors.white,
-                    fontSize: 9 * ppx,
-                    fontWeight: FontWeight.normal,
-                    decoration: TextDecoration.none),
-              ),
-            ],
+                    decoration: TextDecoration.none,
+                    fontSize: 13 * ppx),
+                children: [
+                  TextSpan(
+                      text: '提现',
+                      style: TextStyle(
+                          color: Colors.white,
+                          decoration: TextDecoration.underline,
+                          fontSize: 13 * ppx),
+                      recognizer: TapGestureRecognizer()
+                        ..onTap = () {
+                          if (MyCookie().userBean.aliPayAccount.isEmpty ||
+                              MyCookie().userBean.aliPayName.isEmpty) {
+                            MyTools().toPage(context, BindAlipayPage(),
+                                    (then) {
+                                  if (MyCookie()
+                                      .userBean
+                                      .aliPayAccount
+                                      .isNotEmpty &&
+                                      MyCookie()
+                                          .userBean
+                                          .aliPayName
+                                          .isNotEmpty) {
+                                    MyTools().toPage(context, WithdrawPage(),
+                                            (then) {
+                                          queryPersonalInformation();
+                                        });
+                                  }
+                                });
+                          } else {
+                            MyTools().toPage(context, WithdrawPage(),
+                                    (then) {
+                                  queryPersonalInformation();
+                                });
+                          }
+                        }),
+                ]),
           ),
           bottom: 20 * ppx,
         )
@@ -453,7 +483,7 @@ class _RootPageState extends State<RootPage> {
             width: double.infinity,
             decoration: BoxDecoration(
                 borderRadius: BorderRadius.circular(16),
-                color: MyColors.cF55544),
+                color: MyColors.cEB4935),
             margin: EdgeInsets.symmetric(horizontal: 45 * ppx),
           ),
         ),
@@ -463,13 +493,17 @@ class _RootPageState extends State<RootPage> {
               SvgPicture.asset('images/svg/logo.svg'),
               Container(
                 margin: EdgeInsets.only(top: 64 * ppx),
+                padding: EdgeInsets.symmetric(horizontal: 12*ppx),
+                width: ppx*285,
                 child: Text(
-                  '呀!来晚了,明天我一定准时!',
+                  '${DailyRedPacketTool().grabARedEnvelopeBeanData.msg}',
+                  textAlign: TextAlign.center,
                   style: TextStyle(
                       color: MyColors.cF1D19B,
-                      fontSize: 15 * ppx,
+                      fontSize: 18 * ppx,
                       fontWeight: FontWeight.normal,
-                      decoration: TextDecoration.none),
+                      decoration: TextDecoration.none,),
+                  maxLines: 5,
                 ),
               )
             ],
@@ -477,36 +511,13 @@ class _RootPageState extends State<RootPage> {
           top: 37 * ppx,
         ),
         Positioned(
-          child: Column(
-            children: [
-              Text(
-                '详细规则',
-                style: TextStyle(
-                    color: Colors.white,
-                    fontSize: 12 * ppx,
-                    fontWeight: FontWeight.normal,
-                    decoration: TextDecoration.none),
-              ),
-              Container(
-                margin: EdgeInsets.only(top: 4 * ppx),
-                child: Text(
-                  '每人每天限领一份,每天八点官方准时派发登陆活动,',
-                  style: TextStyle(
-                      color: Colors.white,
-                      fontSize: 9 * ppx,
-                      fontWeight: FontWeight.normal,
-                      decoration: TextDecoration.none),
-                ),
-              ),
-              Text(
-                '每天10000元,最高可直接领取100元!!!',
-                style: TextStyle(
-                    color: Colors.white,
-                    fontSize: 9 * ppx,
-                    fontWeight: FontWeight.normal,
-                    decoration: TextDecoration.none),
-              ),
-            ],
+          child: Text(
+            '谢谢支持,欢迎参与后续活动!',
+            style: TextStyle(
+                color: Colors.white,
+                fontSize: 13 * ppx,
+                fontWeight: FontWeight.normal,
+                decoration: TextDecoration.none),
           ),
           bottom: 20 * ppx,
         )
@@ -524,7 +535,6 @@ class RedEnvelopePath extends CustomPainter {
     ..strokeWidth = 15.0; //画笔的宽度
   @override
   void paint(Canvas canvas, Size size) {
-    print(size);
     var path = Path()
       ..moveTo(0, 0)
       ..quadraticBezierTo(size.width / 2, 80, size.width, 0)
@@ -538,6 +548,6 @@ class RedEnvelopePath extends CustomPainter {
 
   @override
   bool shouldRepaint(covariant CustomPainter oldDelegate) {
-    return null;
+    return false;
   }
 }