瑞口令生成页面

master
laiiihz 4 years ago
parent a924d27e9c
commit 7df60ce03d

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1,68 @@
import 'dart:math';
class RUICodeModel {
int goodsId;
int userId;
RUICodeModel({
this.goodsId,
this.userId,
});
}
class RUICodeUtil {
static String secureStr =
'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKL1234567890';
///
static String encrypt(int goodsId, int userId) {
return '¥¥${_num2String(goodsId)}${split()}${_num2String(userId)}¥¥';
}
static bool isCode(String value) {
return value.contains(RegExp('¥¥[a-zA-z0-9]*¥¥瑞库客'));
}
///
static RUICodeModel decrypt(String value) {
String temp = value.split('¥¥')[value.indexOf('¥¥') + 1];
List<String> raw = temp.split(RegExp('(Z|X|C|V|B|N|M)'));
int goodsId = _string2Num(raw[0]);
int userId = _string2Num(raw[1]);
return RUICodeModel(goodsId: goodsId, userId: userId);
}
static String _num2String(int value) {
int secureLen = secureStr.length;
int tag = -1;
String result = '';
int tempValue = value;
do {
if (tempValue < secureLen)
tag = tempValue;
else
tag = tempValue % secureLen;
tempValue = tempValue ~/ secureLen;
result += secureStr[tag];
} while (tempValue > 0);
result = result.split('').reversed.join('');
return result;
}
static int _string2Num(String value) {
int result = 0;
List<String> tempList = value.split('');
int count = 0;
while (tempList.isNotEmpty) {
count++;
result += secureStr.indexOf(tempList.last) * count * secureStr.length;
tempList.removeLast();
}
return result;
}
static String split() {
String randomSplit = 'ZXCVBNM';
return randomSplit[Random().nextInt(randomSplit.length)];
}
}

@ -9,11 +9,13 @@ import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/third_party/wechat/wechat_utils.dart';
import 'package:recook/utils/rui_code_util.dart';
import 'package:recook/widgets/bottom_sheet/bottom_share_dialog.dart';
import 'package:recook/widgets/share_page/share_goods_poster_page.dart';
import 'package:recook/widgets/share_page/share_url_poster_page.dart';
import 'package:recook/widgets/toast.dart';
import 'package:sharesdk_plugin/sharesdk_plugin.dart';
import 'package:fluwx/fluwx.dart' as Fluwx;
class ShareTool {
static bool qqInstalled = true;
@ -288,6 +290,83 @@ class ShareTool {
Navigator.pop(context);
},
);
PlatformItem ruiCode = PlatformItem(
'瑞口令',
Image.asset(
R.ASSETS_SHARE_BOTTOM_RUI_CODE_PNG,
width: 36,
height: 36,
),
itemClick: () async {
Navigator.pop(context);
String code = '$miniTitle】复制这段描述,打开瑞库客,购全球好物${RUICodeUtil.encrypt(
int.parse(goodsId),
UserManager.instance.user.info.id,
)}\n';
Clipboard.setData(ClipboardData(text: code));
bool needWechat = await showDialog(
context: context,
child: Center(
child: Material(
color: Colors.transparent,
child: Container(
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(rSize(6)),
color: Colors.white,
),
margin: EdgeInsets.symmetric(horizontal: rSize(40)),
padding: EdgeInsets.symmetric(
horizontal: rSize(28), vertical: rSize(20)),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'瑞口令复制成功',
style: TextStyle(
color: Colors.black,
fontSize: rSP(16),
),
),
rHBox(10),
Text(
code,
style: TextStyle(
color: Color(0xFF666666),
fontSize: rSP(14),
),
),
rHBox(20),
MaterialButton(
color: Color(0xFFF82F33),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
height: rSize(33),
minWidth: rSize(119),
padding: EdgeInsets.zero,
elevation: 0,
shape: StadiumBorder(),
onPressed: () => Navigator.pop(context, true),
child: Text(
'去微信分享粘贴',
style: TextStyle(
fontSize: rSP(12),
color: Colors.white,
),
),
),
],
),
),
),
),
);
if (needWechat == true) {
await Fluwx.openWeChatApp();
}
},
);
List<PlatformItem> itemList = [
// miniItem,
qrcode,
@ -300,6 +379,7 @@ class ShareTool {
itemList.add(qqItem);
}
itemList.add(addToLiveGoodsCart);
itemList.add(ruiCode);
// if (ShareTool.weiboInstalled){
// itemList.add(weiboItem);
// }

Loading…
Cancel
Save