/* 情人豆核心前端交互(解锁/分享,依赖 jQuery)。 城市切换已改为原生
+ 链接,无需JS。 */ (function ($) { 'use strict'; if (!$) return; function qrdGoLogin() { location.href = '/login/?redirect_to=' + encodeURIComponent(location.href); } // ---- 联系方式解锁 ---- // 整页缓存下 isUser/nonce 都可能失真,wordpress_logged_in 又是 HttpOnly 读不到。 // 所以点击时先向服务器要新鲜 nonce + 真实登录态,再用它解锁。admin-ajax 不被缓存。 $(document).on('click', '.qrd-unlock-btn', function () { var $box = $(this).closest('.qrd-contact-box'); var target = $box.data('target'); var $btn = $(this); var reset = function () { $btn.prop('disabled', false).text('花 ' + QRD.unlockCost + ' 情人豆解锁联系方式'); }; $btn.prop('disabled', true).text('解锁中…'); $.post(QRD.ajax, { action: 'qrd_get_nonce' }).done(function (n) { if (!n || !n.success) { alert('网络错误,请重试'); reset(); return; } if (!n.data.logged_in) { $btn.text('请先登录…'); qrdGoLogin(); return; } $.post(QRD.ajax, { action: 'qrd_unlock_contact', nonce: n.data.nonce, target: target }).done(function (res) { if (res.success) { var html = ''; $box.find('.qrd-contacts').replaceWith(html); $btn.remove(); $box.find('.qrd-unlock-tip').remove(); } else if (res.data && res.data.code === 'login') { $btn.text('请先登录…'); qrdGoLogin(); } else if (res.data && res.data.code === 'insufficient') { if (confirm('情人豆不足,是否前往充值?')) location.href = '/vip/'; reset(); } else { alert((res.data && res.data.msg) || '解锁失败'); reset(); } }).fail(function () { alert('网络错误,请重试'); reset(); }); }).fail(function () { alert('网络错误,请重试'); reset(); }); }); // ---- 相册:上传 ---- $(document).on('change', '.qrd-album-add input[type=file]', function () { var files = this.files; if (!files || !files.length) return; var $manage = $(this).closest('.qrd-album-manage'); var $grid = $manage.find('.qrd-album-grid'); var $add = $manage.find('.qrd-album-add'); var max = parseInt($manage.data('max'), 10) || 12; var self = this; function uploadOne(i) { if (i >= files.length) { self.value = ''; return; } if ($grid.find('.qrd-album-item').length >= max) { alert('相册已满(最多 ' + max + ' 张)'); self.value = ''; return; } var fd = new FormData(); fd.append('action', 'qrd_album_upload'); fd.append('nonce', QRD.nonce); fd.append('file', files[i]); $add.addClass('is-loading'); $.ajax({ url: QRD.ajax, type: 'POST', data: fd, processData: false, contentType: false }) .done(function (res) { if (res.success) { var $item = $('
' + '
'); $add.before($item); } else { alert((res.data && res.data.msg) || '上传失败'); } }) .fail(function () { alert('上传出错,请重试'); }) .always(function () { $add.removeClass('is-loading'); uploadOne(i + 1); }); } uploadOne(0); }); // ---- 相册:删除 ---- $(document).on('click', '.qrd-album-del', function () { var $item = $(this).closest('.qrd-album-item'); var id = $item.data('id'); if (!id || !confirm('确定删除这张照片?')) return; $.post(QRD.ajax, { action: 'qrd_album_delete', nonce: QRD.nonce, id: id }) .done(function (res) { if (res.success) $item.remove(); else alert((res.data && res.data.msg) || '删除失败'); }) .fail(function () { alert('删除出错,请重试'); }); }); // ---- 分享得豆(微信/小红书) ---- $(document).on('click', '.qrd-share', function (e) { e.preventDefault(); var platform = $(this).data('platform'); // wechat | xiaohongshu var post = $(this).data('post') || 0; var url = encodeURIComponent(location.href); var title = encodeURIComponent(document.title); if (platform === 'wechat') { // 微信:弹出二维码让用户扫码转发(移动端直接唤起) showWechatQR(location.href); } else if (platform === 'xiaohongshu') { // 小红书:复制链接引导用户去App发布 copyText(location.href); alert('链接已复制,去小红书App粘贴发布即可获得情人豆~'); } // 记一次分享奖励(后端有每日上限) if (QRD.isUser) { $.post(QRD.ajax, { action: 'qrd_share_reward', nonce: QRD.nonce, platform: platform, post: post }) .done(function (res) { if (res.success) toast('分享成功 +' + res.data.add + ' 情人豆'); }); } }); function showWechatQR(url) { var api = 'https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=' + encodeURIComponent(url); var $m = $('

' + '二维码
'); $('body').append($m); $m.on('click', function (e) { if (e.target === this || $(e.target).hasClass('qrd-modal-x')) $m.remove(); }); } function copyText(t) { var el = document.createElement('textarea'); el.value = t; document.body.appendChild(el); el.select(); try { document.execCommand('copy'); } catch (e) {} document.body.removeChild(el); } function toast(msg) { var $t = $('
' + msg + '
').appendTo('body'); setTimeout(function () { $t.addClass('show'); }, 10); setTimeout(function () { $t.removeClass('show'); setTimeout(function () { $t.remove(); }, 300); }, 2000); } })(jQuery);
别空耗情人豆,寻芳直接对接