message_net.dart 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
import 'package:clx_flutter_message/core/api/api.dart';
import '../../clx_flutter_message.dart';

mixin MessageNet {
  final api = Api();

  //获取未处理消息
  Future<List<MessageData>> getUnReadMessage() async {
    var result = await _fetchMessage(2);
    if (result['code'] == 0) {
      var data = result['data']?['records'];
      if (data != null && data is List) {
        return Future(() => data.map((e) => MessageData.fromJson(e)).toList());
      }
    }

    return Future(() => List.empty());
  }

  //获取未处理的公告
  Future<List<MessageData>> getUnReadNotice() async {
    var result = await _fetchMessage(1);
    if (result['code'] == 0) {
      var data = result['data']?['records'];
      if (data != null && data is List) {
        return Future(() => data.map((e) => MessageData.fromJson(e)).toList());
      }
    }

    return Future(() => List.empty());
  }

  // 标记消息为已读
  Future<bool> markReadAction(MessageData? message) async {
    if (message?.status == 10) return Future.value(true);
    var result = await api.requestSync(
        method: Method.put,
        requestUrl: '/message-in-app/message/record/updateRecord',
        queryParameters: {
          'id': message?.id,
          'status': 10,
        });
    return result['code'] == 0;
  }

  // 删除消息
  Future<bool> removeMessageAction(MessageData? message) async {
    var result = await api.requestSync(
        method: Method.put,
        requestUrl: '/message-in-app/message/record/deleteMessage',
        queryParameters: {
          'id': message?.id,
        });
    return result['code'] == 0;
  }

  //忽略消息
  Future<bool> ignoreAction(MessageData? message) {
    return markReadAction(message);
  }

  //标记消息已经展示
  void setMessageShowed(MessageData? message) {
    if (message == null) {
      return;
    }
    api.requestSync(
        method: Method.put,
        requestUrl: '/message-in-app/message/record/updateRecordShow',
        queryParameters: {'id': message.id, 'showStatus': 1});
  }

  Future<dynamic> _fetchMessage(showTypes) async {
    var result = await api.requestSync(
      requestUrl: '/message-in-app/message/record/pageShowMessage',
      method: Method.post,
      data: {
        'pageNum': 1,
        'pageSize': 100,
        'accessKey': messageConfig.inAppAccessKey,
        'showTypes': [showTypes]
      },
    );
    return result;
  }
}