Commit c2d37c2630c3761b3dbff0d0227dbc190b5c0cd3

Authored by wdn127929
2 parents 3de2f2bb 1007e741

合并v2.1 发短信

  1 +import 'package:json_annotation/json_annotation.dart';
  2 +
  3 +part 'wx_send_sms_model.g.dart';
  4 +
  5 +@JsonSerializable()
  6 +class WxSendSmsModel extends Object {
  7 + @JsonKey(name: 'ret')
  8 + int ret;
  9 +
  10 + @JsonKey(name: 'data')
  11 + WxSendSmsSunModel data;
  12 +
  13 + @JsonKey(name: 'msg')
  14 + String msg;
  15 +
  16 + WxSendSmsModel(
  17 + this.ret,
  18 + this.data,
  19 + this.msg,
  20 + );
  21 +
  22 + factory WxSendSmsModel.fromJson(Map<String, dynamic> srcJson) =>
  23 + _$WxSendSmsModelFromJson(srcJson);
  24 +
  25 + Map<String, dynamic> toJson() => _$WxSendSmsModelToJson(this);
  26 +}
  27 +
  28 +@JsonSerializable()
  29 +class WxSendSmsSunModel extends Object {
  30 + @JsonKey(name: 'errcode')
  31 + int errcode;
  32 +
  33 + @JsonKey(name: 'send_status_list')
  34 + List<SendStatusList> sendStatusList;
  35 +
  36 + @JsonKey(name: 'query_id')
  37 + String queryId;
  38 +
  39 + WxSendSmsSunModel(
  40 + this.errcode,
  41 + this.sendStatusList,
  42 + this.queryId,
  43 + );
  44 +
  45 + factory WxSendSmsSunModel.fromJson(Map<String, dynamic> srcJson) =>
  46 + _$WxSendSmsSunModelFromJson(srcJson);
  47 +
  48 + Map<String, dynamic> toJson() => _$WxSendSmsSunModelToJson(this);
  49 +}
  50 +
  51 +@JsonSerializable()
  52 +class SendStatusList extends Object {
  53 + @JsonKey(name: 'serial_no')
  54 + String serialNo;
  55 +
  56 + @JsonKey(name: 'phone_number')
  57 + String phoneNumber;
  58 +
  59 + @JsonKey(name: 'code')
  60 + String code;
  61 +
  62 + @JsonKey(name: 'message')
  63 + String message;
  64 +
  65 + @JsonKey(name: 'iso_code')
  66 + String isoCode;
  67 +
  68 + SendStatusList(
  69 + this.serialNo,
  70 + this.phoneNumber,
  71 + this.code,
  72 + this.message,
  73 + this.isoCode,
  74 + );
  75 +
  76 + factory SendStatusList.fromJson(Map<String, dynamic> srcJson) =>
  77 + _$SendStatusListFromJson(srcJson);
  78 +
  79 + Map<String, dynamic> toJson() => _$SendStatusListToJson(this);
  80 +}
  1 +// GENERATED CODE - DO NOT MODIFY BY HAND
  2 +
  3 +part of 'wx_send_sms_model.dart';
  4 +
  5 +// **************************************************************************
  6 +// JsonSerializableGenerator
  7 +// **************************************************************************
  8 +
  9 +WxSendSmsModel _$WxSendSmsModelFromJson(Map<String, dynamic> json) {
  10 + return WxSendSmsModel(
  11 + json['ret'] as int,
  12 + json['data'] == null
  13 + ? null
  14 + : WxSendSmsSunModel.fromJson(json['data'] as Map<String, dynamic>),
  15 + json['msg'] as String);
  16 +}
  17 +
  18 +Map<String, dynamic> _$WxSendSmsModelToJson(WxSendSmsModel instance) =>
  19 + <String, dynamic>{
  20 + 'ret': instance.ret,
  21 + 'data': instance.data,
  22 + 'msg': instance.msg
  23 + };
  24 +
  25 +WxSendSmsSunModel _$WxSendSmsSunModelFromJson(Map<String, dynamic> json) {
  26 + return WxSendSmsSunModel(
  27 + json['errcode'] as int,
  28 + (json['send_status_list'] as List)
  29 + ?.map((e) => e == null
  30 + ? null
  31 + : SendStatusList.fromJson(e as Map<String, dynamic>))
  32 + ?.toList(),
  33 + json['query_id'] as String);
  34 +}
  35 +
  36 +Map<String, dynamic> _$WxSendSmsSunModelToJson(WxSendSmsSunModel instance) =>
  37 + <String, dynamic>{
  38 + 'errcode': instance.errcode,
  39 + 'send_status_list': instance.sendStatusList,
  40 + 'query_id': instance.queryId
  41 + };
  42 +
  43 +SendStatusList _$SendStatusListFromJson(Map<String, dynamic> json) {
  44 + return SendStatusList(
  45 + json['serial_no'] as String,
  46 + json['phone_number'] as String,
  47 + json['code'] as String,
  48 + json['message'] as String,
  49 + json['iso_code'] as String);
  50 +}
  51 +
  52 +Map<String, dynamic> _$SendStatusListToJson(SendStatusList instance) =>
  53 + <String, dynamic>{
  54 + 'serial_no': instance.serialNo,
  55 + 'phone_number': instance.phoneNumber,
  56 + 'code': instance.code,
  57 + 'message': instance.message,
  58 + 'iso_code': instance.isoCode
  59 + };
@@ -91,4 +91,7 @@ class HttpUrl { @@ -91,4 +91,7 @@ class HttpUrl {
91 "?service=App.SendSMS.SendVcCode"; //绑定手机号码时,给用户发送短信验证码接口 91 "?service=App.SendSMS.SendVcCode"; //绑定手机号码时,给用户发送短信验证码接口
92 static const String check_seller_acc = 92 static const String check_seller_acc =
93 "?service=App.User.CheckSellerAcc"; //APP微信登录后检测是否存在商家 93 "?service=App.User.CheckSellerAcc"; //APP微信登录后检测是否存在商家
  94 + static const String app_sendsms_wxSendSms =
  95 + "?service=App.SendSMS.WxSendSms"; //预订安排发短信
  96 +
94 } 97 }
@@ -61,6 +61,7 @@ class InvicationPageState extends State<InvicationPage> { @@ -61,6 +61,7 @@ class InvicationPageState extends State<InvicationPage> {
61 super.initState(); 61 super.initState();
62 62
63 WidgetsBinding.instance.addPostFrameCallback((_) { 63 WidgetsBinding.instance.addPostFrameCallback((_) {
  64 + couponProvider.sendSMS = false;
64 _getActivityByRid(); 65 _getActivityByRid();
65 _getCustomerActivityBaseinfo(); 66 _getCustomerActivityBaseinfo();
66 _getSellerPhotoById(); 67 _getSellerPhotoById();
@@ -599,7 +600,7 @@ class InvicationPageState extends State<InvicationPage> { @@ -599,7 +600,7 @@ class InvicationPageState extends State<InvicationPage> {
599 Overflow.visible, 600 Overflow.visible,
600 children: [ 601 children: [
601 Container( 602 Container(
602 - margin: EdgeInsets.only( 603 + margin: EdgeInsets.only(
603 bottom: 604 bottom:
604 ScreenUtil() 605 ScreenUtil()
605 .setWidth( 606 .setWidth(
@@ -625,8 +626,6 @@ class InvicationPageState extends State<InvicationPage> { @@ -625,8 +626,6 @@ class InvicationPageState extends State<InvicationPage> {
625 .setWidth( 626 .setWidth(
626 24 * 627 24 *
627 2)), 628 2)),
628 - // height:  
629 - // ScreenUtil().setWidth(84 * 2),  
630 decoration: BoxDecoration( 629 decoration: BoxDecoration(
631 borderRadius: BorderRadius.all( 630 borderRadius: BorderRadius.all(
632 Radius.circular( 631 Radius.circular(
@@ -748,12 +747,30 @@ class InvicationPageState extends State<InvicationPage> { @@ -748,12 +747,30 @@ class InvicationPageState extends State<InvicationPage> {
748 child: Row( 747 child: Row(
749 children: <Widget>[ 748 children: <Widget>[
750 GestureDetector( 749 GestureDetector(
751 - onTap: () { 750 + onTap: () async {
752 if (widget.phone.isEmpty) { 751 if (widget.phone.isEmpty) {
753 Utils.showToast("没有预订人电话信息"); 752 Utils.showToast("没有预订人电话信息");
754 return; 753 return;
755 } 754 }
756 - NavigatorUtil.goSmsPage(context, widget.rid); 755 + if (!couponProvider.sendSMS) {
  756 + Map<String, String> params = {
  757 + "phone": widget.phone,
  758 + "Strtext": user.sellername +
  759 + _baseIndoProvider.baseInfoSunModel.name
  760 + };
  761 + bool success = await couponProvider
  762 + .sendSMSWxSendSms(context, params);
  763 + print(success);
  764 + if (success) {
  765 + Utils.showToast('短信已经发送成功!');
  766 + } else {
  767 + Utils.showToast('发送次数太频繁!');
  768 + }
  769 + } else {
  770 + Utils.showToast('短信已经发送成功!');
  771 + }
  772 +
  773 + // NavigatorUtil.goSmsPage(context, widget.rid);
757 }, 774 },
758 child: Container( 775 child: Container(
759 width: ScreenUtil().setWidth(135 * 2), 776 width: ScreenUtil().setWidth(135 * 2),
@@ -3,6 +3,7 @@ import 'package:one_key/constant/constant.dart'; @@ -3,6 +3,7 @@ import 'package:one_key/constant/constant.dart';
3 import 'package:one_key/constant/error.dart'; 3 import 'package:one_key/constant/error.dart';
4 import 'package:one_key/constant/state.dart'; 4 import 'package:one_key/constant/state.dart';
5 import 'package:one_key/models/coupon_model.dart'; 5 import 'package:one_key/models/coupon_model.dart';
  6 +import 'package:one_key/models/wx_send_sms_model.dart';
6 import 'package:one_key/net/dio_util.dart'; 7 import 'package:one_key/net/dio_util.dart';
7 import 'package:one_key/net/http_url.dart'; 8 import 'package:one_key/net/http_url.dart';
8 import 'package:one_key/net/base_resp.dart'; 9 import 'package:one_key/net/base_resp.dart';
@@ -16,6 +17,7 @@ class CouponProvider with ChangeNotifier { @@ -16,6 +17,7 @@ class CouponProvider with ChangeNotifier {
16 PageState pageStateHistory = PageState.Loading; 17 PageState pageStateHistory = PageState.Loading;
17 PageState pageStateSelect = PageState.Loading; 18 PageState pageStateSelect = PageState.Loading;
18 bool hasModify = false; 19 bool hasModify = false;
  20 + bool sendSMS = false;
19 21
20 bool checkValue = true; //优惠券页面“全选”按钮状态 ----- 数据状态全部选中为true 22 bool checkValue = true; //优惠券页面“全选”按钮状态 ----- 数据状态全部选中为true
21 // List<Map<String, dynamic>> listData = []; //优惠券页面数据 23 // List<Map<String, dynamic>> listData = []; //优惠券页面数据
@@ -391,4 +393,49 @@ class CouponProvider with ChangeNotifier { @@ -391,4 +393,49 @@ class CouponProvider with ChangeNotifier {
391 return false; 393 return false;
392 } 394 }
393 } 395 }
  396 +
  397 + ///预定安排微信发短信
  398 + Future<bool> sendSMSWxSendSms(
  399 + BuildContext context, Map<String, String> params,
  400 + {isShowLoading = true}) async {
  401 + BaseResp<dynamic> baseResp = await DioUtil()
  402 + .request<dynamic>(context, Method.get, HttpUrl.app_sendsms_wxSendSms,
  403 + data: params, showLoading: isShowLoading)
  404 + .catchError((error) {
  405 + print(error.toString());
  406 + if (error is MyError) {}
  407 + });
  408 + if (baseResp.code == Constant.status_success) {
  409 + if (baseResp.data == null) {
  410 + return false;
  411 + } else {
  412 + if (WxSendSmsModel.fromJson(baseResp.responseData)
  413 + .data
  414 + .sendStatusList
  415 + .length >
  416 + 0) {
  417 + String code = WxSendSmsModel.fromJson(baseResp.responseData)
  418 + .data
  419 + .sendStatusList[0]
  420 + .code;
  421 + if (code == 'Ok') {
  422 + sendSMS = true;
  423 +
  424 + return true;
  425 + } else if (code == 'LimitExceeded.PhoneNumberSameContentDailyLimit') {
  426 + return false;
  427 + } else {
  428 + return false;
  429 + }
  430 + } else {
  431 + return false;
  432 + }
  433 + }
  434 + } else {
  435 + if (baseResp != null) {
  436 + Utils.showToast(baseResp.msg ?? "");
  437 + }
  438 + return false;
  439 + }
  440 + }
394 } 441 }