diff --git a/assets/user/downgrade_master.png.webp b/assets/user/downgrade_master.png.webp deleted file mode 100644 index 0599eed..0000000 Binary files a/assets/user/downgrade_master.png.webp and /dev/null differ diff --git a/assets/user/downgrade_master.webp b/assets/user/downgrade_master.webp new file mode 100644 index 0000000..ad83e65 Binary files /dev/null and b/assets/user/downgrade_master.webp differ diff --git a/assets/user/downgrade_silver.png.webp b/assets/user/downgrade_silver.png.webp deleted file mode 100644 index 03a0c77..0000000 Binary files a/assets/user/downgrade_silver.png.webp and /dev/null differ diff --git a/assets/user/downgrade_silver.webp b/assets/user/downgrade_silver.webp new file mode 100644 index 0000000..87799b1 Binary files /dev/null and b/assets/user/downgrade_silver.webp differ diff --git a/lib/main.dart b/lib/main.dart index 2e8f111..38f371a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,6 +13,7 @@ import 'package:hive/hive.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:oktoast/oktoast.dart'; +import 'package:package_info/package_info.dart'; import 'package:package_signature/package_signature.dart'; import 'package:raw_toast/raw_toast.dart'; import 'package:recook/constants/api.dart'; @@ -44,6 +45,8 @@ void main() async { cameras = await availableCameras(); //TODO ios settings + PackageInfo _packageInfo = await PackageInfo.fromPlatform(); + AppConfig.versionNumber = _packageInfo.buildNumber; //初始化AMap // AmapLocation.instance.init(iosKey: 'e8a8057cfedcdcadcf4e8f2c7f8de982'); diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 53dc573..4ad707f 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -1504,10 +1504,10 @@ class _HomePageState extends BaseStoreState if (oldLevel < nowLevel) { switch (UserLevelTool.roleLevelEnum(nowLevel)) { case UserRoleLevel.Silver: - img = R.ASSETS_USER_DOWNGRADE_SILVER_PNG_WEBP; + img = R.ASSETS_USER_DOWNGRADE_SILVER_WEBP; break; case UserRoleLevel.Master: - img = R.ASSETS_USER_DOWNGRADE_MASTER_PNG_WEBP; + img = R.ASSETS_USER_DOWNGRADE_MASTER_WEBP; break; default: break; @@ -1560,6 +1560,7 @@ class _HomePageState extends BaseStoreState for (var item in noticeList) { final int gold = item['gold']; final int silver = item['silver']; + final int id = item['id']; String goldValue = ''; String silverValue = ''; if (gold != null && gold != 0) goldValue = '$gold张黄金卡'; @@ -1573,13 +1574,30 @@ class _HomePageState extends BaseStoreState await Get.dialog(Center( child: GestureDetector( onTap: () async { - await HttpManager.post(APIV2.userAPI.confirmUserCardChange, {}); + await HttpManager.post( + APIV2.userAPI.confirmUserCardChange, + {"noticeId": id}, + ); await Get.to(UpgradeCardPageV2()); Get.back(); }, child: Container( margin: EdgeInsets.symmetric(horizontal: 50.w), - child: Center(child: Text('您有$result已退至您的卡包')), + child: Center( + child: Material( + color: Colors.transparent, + child: Transform.translate( + offset: Offset(0, 20.w), + child: Text( + '您有$result已退至您的卡包', + style: TextStyle( + fontSize: 14.sp, + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ), + )), decoration: BoxDecoration( image: DecorationImage( image: AssetImage(R.ASSETS_USER_NOTICE_CARD_PNG), diff --git a/lib/pages/upgradeCard/upgrade_card_send_page_v2.dart b/lib/pages/upgradeCard/upgrade_card_send_page_v2.dart index 60e7359..1821244 100644 --- a/lib/pages/upgradeCard/upgrade_card_send_page_v2.dart +++ b/lib/pages/upgradeCard/upgrade_card_send_page_v2.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:recook/constants/api.dart'; +import 'package:recook/constants/api_v2.dart'; import 'package:recook/manager/http_manager.dart'; import 'package:recook/manager/user_manager.dart'; import 'package:recook/models/invite_list_model.dart'; +import 'package:recook/pages/user/model/user_common_model.dart'; import 'package:recook/pages/user/widget/user_group_card.dart'; import 'package:recook/utils/user_level_tool.dart'; import 'package:recook/widgets/recook/recook_scaffold.dart'; @@ -19,21 +21,19 @@ class UpgradeeCardSendPageV2 extends StatefulWidget { class _UpgradeeCardSendPageV2State extends State { int _page = 1; - Future> fetchList(int page, String searchCond) async { - ResultData resultData = await HttpManager.post(UserApi.invite, { - "userId": UserManager.instance.user.info.id, - "SearchCond": searchCond, - "page": page, + Future> fetchList(String searchCond) async { + ResultData resultData = await HttpManager.post(APIV2.userAPI.myGroup, { + "keyword": '', }); if (resultData == null || resultData.data == null || resultData.data['data'] == null) return []; return (resultData.data['data'] as List) - .map((e) => InviteModel.fromJson(e)) + .map((e) => UserCommonModel.fromJson(e)) .toList(); } - List _models = []; + List _models = []; GSRefreshController _refreshController = GSRefreshController(initialRefresh: true); @@ -45,7 +45,7 @@ class _UpgradeeCardSendPageV2State extends State { body: RefreshWidget( onRefresh: () async { _page = 1; - await fetchList(_page, ''); + _models = await fetchList(''); _refreshController.refreshCompleted(); setState(() {}); }, @@ -56,8 +56,8 @@ class _UpgradeeCardSendPageV2State extends State { return UserGroupCard( name: item.nickname, wechatId: item.wechatNo, - phone: item.phoneNum, - shopRole: UserLevelTool.roleLevelEnum(item.role), + phone: item.phone, + shopRole: UserLevelTool.roleLevelEnum(item.roleLevel), groupCount: item.count, headImg: item.headImgUrl, id: item.userId, diff --git a/lib/pages/upgradeCard/upgrade_card_unused_view.dart b/lib/pages/upgradeCard/upgrade_card_unused_view.dart index 91abb58..51809e7 100644 --- a/lib/pages/upgradeCard/upgrade_card_unused_view.dart +++ b/lib/pages/upgradeCard/upgrade_card_unused_view.dart @@ -130,6 +130,12 @@ class _UserCard extends StatelessWidget { return ''; } + String get _cardFace { + if (model.type == 1) return R.ASSETS_USER_UPGRADE_GOLD_CARD_WEBP; + if (model.type == 2) return R.ASSETS_USER_UPGRADE_SILVER_CARD_WEBP; + return ''; + } + @override Widget build(BuildContext context) { return Container( @@ -242,7 +248,7 @@ class _UserCard extends StatelessWidget { ), decoration: BoxDecoration( image: DecorationImage( - image: AssetImage(R.ASSETS_USER_UPGRADE_SILVER_CARD_WEBP), + image: AssetImage(_cardFace), ), ), ); diff --git a/lib/pages/upgradeCard/upgrade_card_used_view.dart b/lib/pages/upgradeCard/upgrade_card_used_view.dart index 6440f85..9e939b5 100644 --- a/lib/pages/upgradeCard/upgrade_card_used_view.dart +++ b/lib/pages/upgradeCard/upgrade_card_used_view.dart @@ -99,7 +99,7 @@ class _userCard extends StatelessWidget { String typeValue = ''; if (type == 1) typeValue = '黄金卡'; if (type == 2) typeValue = '白银卡'; - bool used = status == 1; + bool used = status != 2; return Material( color: Colors.white, borderRadius: BorderRadius.circular(5.w), diff --git a/lib/pages/user/account_and_safety/account_and_safety_page.dart b/lib/pages/user/account_and_safety/account_and_safety_page.dart index 1928bf8..27095ca 100644 --- a/lib/pages/user/account_and_safety/account_and_safety_page.dart +++ b/lib/pages/user/account_and_safety/account_and_safety_page.dart @@ -58,7 +58,9 @@ class _AccountAndSafetyPageState extends State { final cancel = ReToast.loading(text: '修改中'); secureValue = !secureValue; await HttpManager.post( - APIV2.userAPI.securePhone, {'secure': secureValue ? 1 : 0}); + APIV2.userAPI.securePhone, + {'secure': secureValue ? 1 : 0}, + ); cancel(); setState(() {}); }, diff --git a/lib/pages/user/invite/group_invite_card.dart b/lib/pages/user/invite/group_invite_card.dart index d4ade90..05cd759 100644 --- a/lib/pages/user/invite/group_invite_card.dart +++ b/lib/pages/user/invite/group_invite_card.dart @@ -6,6 +6,7 @@ import 'package:recook/constants/api_v2.dart'; import 'package:recook/manager/http_manager.dart'; import 'package:recook/manager/user_manager.dart'; import 'package:recook/pages/user/model/user_common_model.dart'; +import 'package:recook/pages/user/widget/user_group_card_detail_page.dart'; import 'package:recook/utils/user_level_tool.dart'; import 'package:recook/constants/header.dart'; import 'package:recook/widgets/alert.dart'; @@ -14,7 +15,9 @@ import 'package:velocity_x/velocity_x.dart'; class GroupInviteCard extends StatelessWidget { final UserCommonModel model; - const GroupInviteCard({Key key, @required this.model}) : super(key: key); + final bool canTap; + const GroupInviteCard({Key key, @required this.model, this.canTap = false}) + : super(key: key); _renderItem(String asset, String value) { String displayValue = value; if (displayValue?.isEmpty ?? true) { @@ -148,7 +151,7 @@ class GroupInviteCard extends StatelessWidget { @override Widget build(BuildContext context) { - return Row( + final widget = Row( children: [ 16.wb, Column( @@ -187,11 +190,10 @@ class GroupInviteCard extends StatelessWidget { 5.hb, Row( children: [ - _renderItem( - R.ASSETS_USER_ICON_GROUP_PNG, model.count.toString()), + _renderItem(R.ASSETS_USER_ICON_GROUP_PNG, model.countValue), _renderItem( R.ASSETS_USER_ICON_MONEY_PNG, - model.amount.toStringAsFixed(2), + model.amountValue, ), ], ), @@ -201,21 +203,30 @@ class GroupInviteCard extends StatelessWidget { Column( mainAxisAlignment: MainAxisAlignment.start, children: [ - if (model.isRecommand) - MaterialButton( - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - minWidth: 0, - padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 12.w), - child: Image.asset( - R.ASSETS_USER_USER_RECOMMEND_SINGLE_PNG, - height: 17.w, - ), - onPressed: upgradeFunc, - ), + model.isRecommand + ? MaterialButton( + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + minWidth: 0, + padding: + EdgeInsets.symmetric(horizontal: 20.w, vertical: 12.w), + child: Image.asset( + R.ASSETS_USER_USER_RECOMMEND_SINGLE_PNG, + height: 17.w, + width: 17.w, + ), + onPressed: upgradeFunc, + ) + : 57.wb, 44.hb, ], ), ], ); + return GestureDetector( + onTap: () { + if (canTap) Get.to(() => UserGroupCardDetailPage(id: model.userId)); + }, + child: widget, + ); } } diff --git a/lib/pages/user/invite/my_group_page_v2.dart b/lib/pages/user/invite/my_group_page_v2.dart index 71a6229..fa44c06 100644 --- a/lib/pages/user/invite/my_group_page_v2.dart +++ b/lib/pages/user/invite/my_group_page_v2.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:recook/manager/user_manager.dart'; import 'package:recook/pages/user/functions/user_func.dart'; import 'package:recook/pages/user/invite/group_invite_card.dart'; import 'package:recook/pages/user/model/user_common_model.dart'; @@ -47,6 +48,17 @@ class _MyGroupPageV2State extends State { ).expand(); } + String get _renderTitle { + switch (usersMode) { + case UsersMode.MY_GROUP: + return '我的自营店铺'; + case UsersMode.MY_RECOMMEND: + return '我的分销店铺'; + case UsersMode.MY_REWARD: + return '我的代理店铺'; + } + } + Widget get _renderShitVerticalLine => Container( height: 20.w, width: 1.w, @@ -161,7 +173,7 @@ class _MyGroupPageV2State extends State { children: [ 54.hb, 16.wb, - '我的自营店铺'.text.bold.size(14.sp).black.make(), + _renderTitle.text.bold.size(14.sp).black.make(), MaterialButton( padding: EdgeInsets.all(4.w), minWidth: 0, @@ -193,13 +205,34 @@ class _MyGroupPageV2State extends State { 20.wb, ], ), - ..._models.map((e) => GroupInviteCard(model: e)).toList().sepWidget( - separate: Divider( - indent: 65.w, - endIndent: 15.w, - height: 1.w, - thickness: 1.w, - )), + ..._models + .map((e) => GroupInviteCard( + model: e, canTap: usersMode == UsersMode.MY_GROUP)) + .toList() + ..insertAll( + 0, + usersMode == UsersMode.MY_GROUP + ? [ + GroupInviteCard( + model: UserCommonModel( + remarkName: '本人', + nickname: + UserManager.instance.user.info.nickname, + phone: UserManager.instance.user.info.mobile, + headImgUrl: + UserManager.instance.user.info.headImgUrl, + wechatNo: + UserManager.instance.user.info.wechatNo, + userId: UserManager.instance.user.info.id, + flag: 0, + amount: -1, + count: -1, + roleLevel: + UserManager.instance.user.info.roleLevel, + ), + canTap: false) + ] + : []), ], ), margin: EdgeInsets.symmetric(horizontal: 16.w), diff --git a/lib/pages/user/model/user_common_model.dart b/lib/pages/user/model/user_common_model.dart index a3289ce..38beecc 100644 --- a/lib/pages/user/model/user_common_model.dart +++ b/lib/pages/user/model/user_common_model.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:recook/utils/user_level_tool.dart'; class UserCommonModel { @@ -16,17 +17,31 @@ class UserCommonModel { bool get isRecommand => flag == 1; + String get countValue { + if (count == -1) + return '—'; + else + return (count ?? 0).toString(); + } + + String get amountValue { + if (amount == -1) + return '—'; + else + return (amount ?? 0.0).toStringAsFixed(2); + } + UserCommonModel({ - this.userId, - this.headImgUrl, - this.nickname, - this.phone, - this.wechatNo, - this.remarkName, - this.count, - this.roleLevel, - this.flag, - this.amount, + @required this.userId, + @required this.headImgUrl, + @required this.nickname, + @required this.phone, + @required this.wechatNo, + @required this.remarkName, + @required this.count, + @required this.roleLevel, + @required this.flag, + @required this.amount, }); UserCommonModel.fromJson(Map json) { diff --git a/pubspec.yaml b/pubspec.yaml index e68cf9d..472775c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: recook description: Recook Market App. publish_to: "none" -version: 1.6.0-vip+270 +version: 1.6.1-vip+271 environment: sdk: ">=2.10.0 <3.0.0"