Commit 31765f5a41eb831aff4c093fb35568a09adf1794

Authored by wdn127929
1 parent 57aa676b

过期提示,有问题,重复提醒

@@ -54,7 +54,8 @@ class SellerVersionSunModel { @@ -54,7 +54,8 @@ class SellerVersionSunModel {
54 vtype = json['vtype']; 54 vtype = json['vtype'];
55 vname = json['vname']; 55 vname = json['vname'];
56 rdate = json['rdate']; 56 rdate = json['rdate'];
57 - edate = json['edate']; 57 + edate = '1694830573';
  58 + // edate = json['edate'];
58 cdate = json['cdate']; 59 cdate = json['cdate'];
59 } 60 }
60 61
@@ -44,6 +44,7 @@ import '../../models/customer_by_seller_model.dart'; @@ -44,6 +44,7 @@ import '../../models/customer_by_seller_model.dart';
44 import '../../app.dart'; 44 import '../../app.dart';
45 45
46 import '../../models/get_seller_info_model.dart'; 46 import '../../models/get_seller_info_model.dart';
  47 +import '../../models/seller_version_model.dart';
47 import '../../models/user.dart'; 48 import '../../models/user.dart';
48 import '../../provider/collect_store_provider.dart'; 49 import '../../provider/collect_store_provider.dart';
49 import '../../provider/feast_model.dart'; 50 import '../../provider/feast_model.dart';
@@ -89,6 +90,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -89,6 +90,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
89 Timer timerSeller; 90 Timer timerSeller;
90 Timer timerSellerEdate; //店铺过期时间提醒 91 Timer timerSellerEdate; //店铺过期时间提醒
91 92
  93 + Timer timerSellerModuleEdate; //模块过期提醒
  94 +
92 int xgCount = 1; //注册信鸽次数,最多5次 95 int xgCount = 1; //注册信鸽次数,最多5次
93 96
94 DateTime lastBack; 97 DateTime lastBack;
@@ -101,6 +104,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -101,6 +104,8 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
101 104
102 CollectStoreProvider collectStoreProvider; 105 CollectStoreProvider collectStoreProvider;
103 106
  107 + Map dataSp = Map();
  108 +
104 //实现监听 109 //实现监听
105 Future<dynamic> platformCallHandler(MethodCall call) async { 110 Future<dynamic> platformCallHandler(MethodCall call) async {
106 switch (call.method) { 111 switch (call.method) {
@@ -272,7 +277,32 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -272,7 +277,32 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
272 277
273 getSellerVersion() async { 278 getSellerVersion() async {
274 await collectStoreProvider.getSellerVersion(context); 279 await collectStoreProvider.getSellerVersion(context);
275 - 280 + if (collectStoreProvider.sellerVersionList != null) {
  281 +//获取到店铺过期时间
  282 + //店铺过期提醒
  283 + // 计算时间差
  284 + //店铺过期日期
  285 + List<SellerVersionSunModel> showData = [];
  286 + // App.sp.remove('sellerEdateModule');
  287 +
  288 + collectStoreProvider.sellerVersionList.forEach((element) {
  289 + _edateSellerModuleShow(showData, element, dataSp);
  290 + });
  291 + print(showData);
  292 + print(dataSp);
  293 + App.sp.setString("sellerEdateModule", json.encode(dataSp));
  294 + if (showData != null && showData.length > 0) {
  295 + DialogUtil.showSellerVersionEdateDialog(context, showData, (object) {});
  296 + }
  297 + //通过showdata 弹窗
  298 +
  299 + // timerSellerModuleEdate = Timer.periodic(Duration(days: 1), (_) {
  300 + // //店铺过期提醒
  301 + // // 计算时间差
  302 + // //店铺过期日期
  303 + // _edateShow();
  304 + // });
  305 + }
276 setState(() {}); 306 setState(() {});
277 } 307 }
278 308
@@ -324,6 +354,179 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { @@ -324,6 +354,179 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
324 // 354 //
325 } 355 }
326 356
  357 + _setSpSellerModule(String day, SellerVersionSunModel sellerVersionSunModel) {
  358 + Map data = Map();
  359 + List days = [];
  360 +
  361 + //已经存进去过数据
  362 + if (App.sp.containsKey('sellerEdateModule')) {
  363 + data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  364 + days = data[sellerVersionSunModel.vid] ?? [];
  365 + }
  366 + days.add(day);
  367 + print(data);
  368 +
  369 + data[sellerVersionSunModel.vid] = days;
  370 + return data;
  371 + }
  372 + // _setSpSellerModule(String day, SellerVersionSunModel sellerVersionSunModel) {
  373 + // Map data = Map();
  374 + // List days = [];
  375 +
  376 + // //已经存进去过数据
  377 + // if (App.sp.containsKey('sellerEdateModule')) {
  378 + // data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  379 + // days = data[sellerVersionSunModel.vid] ?? [];
  380 + // }
  381 + // days.add(day);
  382 + // print(data);
  383 +
  384 + // data[sellerVersionSunModel.vid] = days;
  385 + // print(data);
  386 + // App.sp.setString("sellerEdateModule", json.encode(data));
  387 + // }
  388 +
  389 + _removeSpSellerModule(SellerVersionSunModel sellerVersionSunModel) {
  390 + //已经存进去过数据
  391 + if (App.sp.containsKey('sellerEdateModule')) {
  392 + Map data = {};
  393 + data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  394 + data.removeWhere((key, value) => key == sellerVersionSunModel.vid);
  395 + if (data != null && data.length == 0) {
  396 + App.sp.remove("sellerEdateModule");
  397 + } else {
  398 + App.sp.setString("sellerEdateModule", json.encode(data));
  399 + }
  400 + }
  401 + }
  402 +
  403 + _edateSellerModuleShow(List<SellerVersionSunModel> showData,
  404 + SellerVersionSunModel sellerVersionSunModel, Map dataSp) async {
  405 + //店铺过期提醒
  406 + // 计算时间差
  407 + //店铺过期日期
  408 + DateTime edate = DateTime.fromMillisecondsSinceEpoch(
  409 + int.parse(sellerVersionSunModel.edate) * 1000);
  410 +
  411 + //当前日期
  412 + final datenow = DateTime.now();
  413 +
  414 + //比较相差的天数
  415 + int difference = edate.difference(datenow).inDays;
  416 +
  417 + int differenceSeconds = edate.difference(datenow).inSeconds;
  418 + if (difference == 7) {
  419 + if (App.sp.containsKey('sellerEdateModule')) {
  420 + //已经存进去过数据
  421 +
  422 + Map data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  423 + List days = data[sellerVersionSunModel.vid] ?? [];
  424 + if (!days.contains('7')) {
  425 + //7天没有提醒过
  426 + showData.add(sellerVersionSunModel); //7天已经提醒过了
  427 +
  428 + _setSpSellerModule('7', sellerVersionSunModel);
  429 + }
  430 + } else {
  431 + //7天没有提醒过
  432 + showData.add(sellerVersionSunModel); //7天已经提醒过了
  433 + _setSpSellerModule('7', sellerVersionSunModel);
  434 + }
  435 +
  436 + // _showSellerAlert('7', edate);
  437 + } else if (difference == 3) {
  438 + //过期差3天,提醒一次
  439 +
  440 + // _showSellerAlert('3', edate);
  441 + if (App.sp.containsKey('sellerEdateModule')) {
  442 + //已经存进去过数据
  443 +
  444 + Map data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  445 + List days = data[sellerVersionSunModel.vid] ?? [];
  446 + if (!days.contains('3')) {
  447 + //3天没有提醒过
  448 + showData.add(sellerVersionSunModel); //3天已经提醒过了
  449 + _setSpSellerModule('3', sellerVersionSunModel);
  450 + }
  451 + } else {
  452 + //3天没有提醒过
  453 + showData.add(sellerVersionSunModel); //3天已经提醒过了
  454 + _setSpSellerModule('3', sellerVersionSunModel);
  455 + }
  456 + } else if (difference == 2) {
  457 + //过期差2天,提醒一次
  458 +
  459 + if (App.sp.containsKey('sellerEdateModule')) {
  460 + //已经存进去过数据
  461 +
  462 + Map data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  463 + List days = data[sellerVersionSunModel.vid] ?? [];
  464 + if (!days.contains('2')) {
  465 + //2天没有提醒过
  466 + showData.add(sellerVersionSunModel); //2天已经提醒过了
  467 + // _showSellerAlert('2', edate);
  468 + _setSpSellerModule('2', sellerVersionSunModel);
  469 + }
  470 + } else {
  471 + //2天没有提醒过
  472 + showData.add(sellerVersionSunModel); //3天已经提醒过了
  473 + _setSpSellerModule('2', sellerVersionSunModel);
  474 + }
  475 + } else if (difference == 1) {
  476 + //过期差1天,提醒一次
  477 +
  478 + if (App.sp.containsKey('sellerEdateModule')) {
  479 + //已经存进去过数据
  480 +
  481 + Map data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  482 + List days = data[sellerVersionSunModel.vid] ?? [];
  483 + if (!days.contains('1')) {
  484 + //1天没有提醒过
  485 + showData.add(sellerVersionSunModel); //1天已经提醒过了
  486 + // _showSellerAlert('1', edate);
  487 + _setSpSellerModule('1', sellerVersionSunModel);
  488 + }
  489 + } else {
  490 + //1天没有提醒过
  491 + showData.add(sellerVersionSunModel); //1天已经提醒过了
  492 + // _showSellerAlert('1', edate);
  493 + _setSpSellerModule('1', sellerVersionSunModel);
  494 + }
  495 + } else if (difference == 0 && differenceSeconds > 0) {
  496 + //剩余不足一天
  497 +
  498 + if (App.sp.containsKey('sellerEdateModule')) {
  499 + //已经存进去过数据
  500 +
  501 + Map data = json.decode(App.sp.getString('sellerEdateModule')) ?? {};
  502 + List days = data[sellerVersionSunModel.vid] ?? [];
  503 + if (!days.contains('0')) {
  504 + //0天没有提醒过
  505 + showData.add(sellerVersionSunModel); //0天已经提醒过了
  506 + // _showSellerAlert('0', edate);
  507 +
  508 + dataSp.addAll(_setSpSellerModule('0', sellerVersionSunModel));
  509 + print(dataSp);
  510 + }
  511 + } else {
  512 + //0天没有提醒过
  513 + showData.add(sellerVersionSunModel); //0天已经提醒过了
  514 + // _showSellerAlert('0', edate);
  515 + dataSp.addAll(_setSpSellerModule('0', sellerVersionSunModel));
  516 + print(dataSp);
  517 + }
  518 + } else if (difference < 0 || (difference == 0 && differenceSeconds <= 0)) {
  519 + //已到期
  520 + // _showSellerAlert('-1', edate);
  521 + } else if (difference > 7) {
  522 + //没到期
  523 + //
  524 + _removeSpSellerModule(sellerVersionSunModel);
  525 + }
  526 +
  527 + // 根据showdata 进行提醒
  528 + }
  529 +
327 ///获取店铺过期时间 530 ///获取店铺过期时间
328 _getSellerById() async { 531 _getSellerById() async {
329 StoreBaseIndoProvider storeBaseIndoProvider = 532 StoreBaseIndoProvider storeBaseIndoProvider =
@@ -38,6 +38,7 @@ import 'package:url_launcher/url_launcher.dart'; @@ -38,6 +38,7 @@ import 'package:url_launcher/url_launcher.dart';
38 38
39 import '../models/cookbook_model.dart'; 39 import '../models/cookbook_model.dart';
40 import '../models/radio_model.dart'; 40 import '../models/radio_model.dart';
  41 +import '../models/seller_version_model.dart';
41 import '../models/theme_color_model.dart'; 42 import '../models/theme_color_model.dart';
42 43
43 typedef CustomCallBack = void Function(Object object); 44 typedef CustomCallBack = void Function(Object object);
@@ -55,6 +56,176 @@ typedef ClickCallback = void Function(String value); @@ -55,6 +56,176 @@ typedef ClickCallback = void Function(String value);
55 // }; 56 // };
56 57
57 class DialogUtil { 58 class DialogUtil {
  59 + //模块快过期提醒
  60 + static showSellerVersionEdateDialog(BuildContext context,
  61 + List<SellerVersionSunModel> showData, CustomCallBack callback,
  62 + {GestureTapCallback onTapLeft, GestureTapCallback onTapRight}) {
  63 + List<String> names = showData.map((e) => e.vname).toList();
  64 + return showDialog(
  65 + context: context,
  66 + barrierDismissible: true,
  67 + builder: (BuildContext context) {
  68 + return Center(child: StatefulBuilder(builder: (context, state) {
  69 + // locationState = state;
  70 + return Material(
  71 + color: Colors.transparent,
  72 + child: Container(
  73 + width: double.infinity,
  74 + margin: EdgeInsets.symmetric(horizontal: w(37)),
  75 + decoration: BoxDecoration(
  76 + color: MyColours.color_ffffff,
  77 + borderRadius: BorderRadius.circular(
  78 + r(8),
  79 + )),
  80 + child: Column(
  81 + mainAxisSize: MainAxisSize.min,
  82 + crossAxisAlignment: CrossAxisAlignment.start,
  83 + children: <Widget>[
  84 + Padding(
  85 + padding: EdgeInsets.symmetric(horizontal: w(10)),
  86 + child: Column(
  87 + crossAxisAlignment: CrossAxisAlignment.start,
  88 + children: [
  89 + VEmptyView(50),
  90 + Container(
  91 + child: Text('您的:',
  92 + style: TextStyle(
  93 + color: MyColours.color_515151,
  94 + fontSize: font(14)))),
  95 + VEmptyView(60),
  96 + ListView.builder(
  97 + itemCount: showData.length,
  98 + shrinkWrap: true,
  99 + itemBuilder:
  100 + (BuildContext context, int index) {
  101 + SellerVersionSunModel
  102 + sellerVersionSunModel =
  103 + showData[index];
  104 + return Column(
  105 + crossAxisAlignment:
  106 + CrossAxisAlignment.start,
  107 + children: [
  108 + Container(
  109 + child: Text(
  110 + '${sellerVersionSunModel.vname}功能即将在:',
  111 + style: TextStyle(
  112 + color: MyColours
  113 + .color_515151,
  114 + fontSize:
  115 + font(14)))),
  116 + VEmptyView(10),
  117 + Container(
  118 + child: Text(
  119 + DateUtil.formatDate(
  120 + DateTime.fromMillisecondsSinceEpoch(
  121 + int.parse(sellerVersionSunModel
  122 + .edate) *
  123 + 1000),
  124 + format:
  125 + DateFormats.full,
  126 + ),
  127 + style: TextStyle(
  128 + color: MyColours
  129 + .color_E34D59,
  130 + fontSize:
  131 + font(14)))),
  132 + ]);
  133 + }),
  134 + Container(
  135 + child: Text('您可以:',
  136 + style: TextStyle(
  137 + color: MyColours.color_515151,
  138 + fontSize: font(14)))),
  139 + VEmptyView(60),
  140 + Container(
  141 + child: Text('点击“前往续费” ',
  142 + style: TextStyle(
  143 + color: MyColours.color_515151,
  144 + fontSize: font(14)))),
  145 + VEmptyView(20),
  146 + Container(
  147 + child: Text('或者',
  148 + style: TextStyle(
  149 + color: MyColours.color_515151,
  150 + fontSize: font(14)))),
  151 + VEmptyView(20),
  152 + Container(
  153 + child: Text('联系您的服务商续费 ${names.toString()}功能;',
  154 + style: TextStyle(
  155 + color: MyColours.color_515151,
  156 + fontSize: font(14)))),
  157 + VEmptyView(60),
  158 + Container(
  159 + child: Text('*您可以通过开通超能版获得全部软件功能。',
  160 + style: TextStyle(
  161 + color: MyColours.color_515151,
  162 + fontSize: font(14)))),
  163 + VEmptyView(50),
  164 + ])),
  165 + MyDivider(double.infinity, w(1),
  166 + color: MyColours.color_DBDBDB),
  167 + Row(
  168 + // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  169 + children: [
  170 + Expanded(
  171 + flex: 1,
  172 + child: RoundButton(
  173 + text: '取消',
  174 + // width: (ScreenUtil().screenWidth -
  175 + // ScreenUtil().setWidth(62) * 2) /
  176 + // 2,
  177 + height: ScreenUtil().setWidth(112),
  178 + // radius: ScreenUtil().setWidth(10),
  179 + gradientStart: Colors.transparent,
  180 + gradientEnd: Colors.transparent,
  181 + textColor: MyColours.color_515151,
  182 + isBold: false,
  183 + fontSize: 32,
  184 + onPressed: () {
  185 + Navigator.pop(context);
  186 + })),
  187 + MyDivider(ScreenUtil().setWidth(2),
  188 + ScreenUtil().setWidth(112),
  189 + color: MyColours.color_DBDBDB),
  190 + Expanded(
  191 + flex: 1,
  192 + child: RoundButton(
  193 + text: '前往开通',
  194 + // width: (ScreenUtil().screenWidth -
  195 + // ScreenUtil().setWidth(62) * 2) /
  196 + // 2,
  197 + height: ScreenUtil().setWidth(112),
  198 + // radius: ScreenUtil().setWidth(10),
  199 + gradientStart: Colors.transparent,
  200 + gradientEnd: Colors.transparent,
  201 + textColor: MyColours.color_438E93,
  202 + fontSize: 32,
  203 + onPressed: () {
  204 + // Navigator.pop(context, {
  205 + // 'spec': menuSunModel.specCan != null &&
  206 + // menuSunModel.specCan.length > 0
  207 + // ? menuSunModel.specCan
  208 + // .where((element) =>
  209 + // element.select == true)
  210 + // .toList()
  211 + // : [],
  212 + // 'practice': menuSunModel.practice !=
  213 + // null &&
  214 + // menuSunModel.practice.length > 0
  215 + // ? menuSunModel.practice
  216 + // .where((element) =>
  217 + // element.select == true)
  218 + // .toList()
  219 + // : []
  220 + // });
  221 + })),
  222 + ],
  223 + ),
  224 + ])));
  225 + }));
  226 + });
  227 + }
  228 +
58 //功能购买提醒 229 //功能购买提醒
59 static showSellerVersionBuyDialog( 230 static showSellerVersionBuyDialog(
60 BuildContext context, String title, CustomCallBack callback, 231 BuildContext context, String title, CustomCallBack callback,