caixianzhi pc接口修改完成

This commit is contained in:
rain
2026-06-08 17:31:30 +08:00
parent 3a2081f395
commit 7f7fd61ec0
10 changed files with 1737 additions and 12 deletions
+217
View File
@@ -76,6 +76,26 @@
<div class="uc-nickname" id="userNickName">未登录</div>
<div class="uc-level" id="userLevel">普通会员</div>
<div class="uc-phone" id="userPhone"></div>
<div class="wechatBindCard" id="wechat-bind-card">
<div class="wechatBindTop">
<div class="wechatBindIconBox">
<img class="wechatBindIcon" src="../public/img/pay-wechat.png" alt="微信" />
</div>
<div class="wechatBindInfo">
<div class="wechatBindTitle">微信账号</div>
<div class="wechatBindDesc" id="wechat-bind-desc">检测中...</div>
</div>
<div class="wechatBindStateDot"></div>
</div>
<button
type="button"
class="wechatBindButton"
id="wechat-bind-button"
onclick="openWeChatBindPopup()"
>
绑定微信
</button>
</div>
</div>
<div class="uc-actions">
<button
@@ -120,6 +140,27 @@
</div>
</div>
<div class="wechatBindCard" id="wechat-bind-card">
<div class="wechatBindTop">
<div class="wechatBindIconBox">
<img class="wechatBindIcon" src="../public/img/pay-wechat.png" alt="微信" />
</div>
<div class="wechatBindInfo">
<div class="wechatBindTitle">微信账号</div>
<div class="wechatBindDesc" id="wechat-bind-desc">正在检测绑定状态...</div>
</div>
<div class="wechatBindStateDot"></div>
</div>
<div class="wechatBindLine"></div>
<button
type="button"
class="wechatBindButton"
id="wechat-bind-button"
onclick="openWeChatBindPopup()"
>
绑定微信
</button>
</div>
<!-- Balance Cards -->
<div class="uc-balance-grid">
<div class="uc-balance-item">
@@ -370,10 +411,43 @@
</button>
<div id="mask-layer"></div>
<div id="wechat-bind-popup">
<div class="wechatBindPopupHeader">
<div>
<div class="wechatBindPopupTitle">绑定微信</div>
<div class="wechatBindPopupSub">绑定后可使用微信快捷登录当前账号</div>
</div>
<div class="popup-close" onclick="closeWeChatBindPopup()">
<i class="layui-icon layui-icon-close"></i>
</div>
</div>
<div class="wechatBindPopupBody">
<div class="wechatBindFormRow">
<label>手机号</label>
<input id="wechatBindPhone" type="text" placeholder="请输入手机号" />
</div>
<div class="wechatBindFormRow">
<label>短信验证码</label>
<div class="wechatBindCodeBox">
<input id="wechatBindSmsCode" type="text" placeholder="请输入验证码" />
<button type="button" onclick="sendWeChatBindSms()">获取验证码</button>
</div>
</div>
<div class="wechatBindFormRow">
<label>登录密码</label>
<input id="wechatBindPassword" type="password" placeholder="请输入登录密码" />
</div>
<div class="wechatBindTip">当前接口需要微信授权参数、手机号、短信验证码和密码。</div>
<button type="button" class="wechatBindSubmit" onclick="submitWeChatBind()">确认绑定</button>
</div>
</div>
<script src="../public/js/md5.js"></script>
<script>
const $ = layui.$;
var currentUserData = null;
var accountInfoData = {};
var menuListData = [];
var signInPageNum = 1;
var articlePageNum = 1;
@@ -466,6 +540,148 @@
$("#publishArticleBtn").toggle(expert);
}
function loadAccountInfoForWechat() {
ApiClient.get(ApiClient.API.accountInfo, null, { headers: CommonUtil.authHeaders() })
.then(function (res) {
accountInfoData = ApiClient.isSuccess(res) && res.data ? res.data : {};
updateWechatBindPanel();
})
.catch(function () {
accountInfoData = {};
updateWechatBindPanel();
});
}
function isWechatBound() {
var data = Object.assign({}, currentUserData || {}, accountInfoData || {});
return Boolean(
data.openId ||
data.openid ||
data.wxOpenId ||
data.wechatOpenId ||
data.wechatOpenid ||
data.unionId ||
data.wechatUnionId ||
data.wechatBound ||
data.isWechatBound,
);
}
function updateWechatBindPanel() {
var $desc = $("#wechat-bind-desc");
var $button = $("#wechat-bind-button");
var $card = $("#wechat-bind-card");
if (!$desc.length || !$button.length) return;
$card.removeClass("is-bound is-pending is-ready");
if (isWechatBound()) {
$desc.text("微信已绑定");
$card.addClass("is-bound");
$button
.text("已绑定")
.removeClass("is-pending")
.addClass("is-bound")
.prop("disabled", true);
return;
}
$desc.text("未绑定微信");
$card.addClass("is-ready");
$button
.text("绑定微信")
.removeClass("is-bound is-pending")
.prop("disabled", false);
}
function getWechatAuthParams() {
var params = new URLSearchParams(window.location.search);
return {
socialCode: params.get("socialCode") || params.get("code") || "",
socialState: params.get("socialState") || params.get("state") || "",
};
}
function openWeChatBindPopup() {
var authParams = getWechatAuthParams();
if (isWechatBound()) {
layui.layer.msg("当前账号已绑定微信", { icon: 1 });
return;
}
if (!authParams.socialCode) {
layui.layer.msg("请先通过微信授权入口进入绑定流程", { icon: 0 });
return;
}
$("#wechatBindPhone").val(
(currentUserData && currentUserData.phoneNumber) ||
accountInfoData.phoneNumber ||
"",
);
$("#wechatBindSmsCode").val("");
$("#wechatBindPassword").val("");
$("#mask-layer").show();
$("#wechat-bind-popup").show();
}
function closeWeChatBindPopup() {
$("#wechat-bind-popup").hide();
$("#mask-layer").hide();
}
function sendWeChatBindSms() {
var phoneNumber = $("#wechatBindPhone").val().trim();
if (!phoneNumber) {
layui.layer.msg("请输入手机号", { icon: 2 });
return;
}
ApiClient.get(ApiClient.API.authSocialBindPhoneSmsCode, {
phoneNumber: phoneNumber,
}).then(function (res) {
if (ApiClient.isSuccess(res)) {
layui.layer.msg("验证码已发送", { icon: 1 });
} else {
layui.layer.msg(res.msg || "验证码发送失败", { icon: 2 });
}
});
}
function submitWeChatBind() {
var authParams = getWechatAuthParams();
var phoneNumber = $("#wechatBindPhone").val().trim();
var smsCode = $("#wechatBindSmsCode").val().trim();
var password = $("#wechatBindPassword").val();
if (!authParams.socialCode) {
layui.layer.msg("缺少微信授权参数", { icon: 2 });
return;
}
if (!phoneNumber || !smsCode || !password) {
layui.layer.msg("请完整填写绑定信息", { icon: 2 });
return;
}
ApiClient.post(ApiClient.API.authSocialBind, {
source: "wechat_open",
socialCode: authParams.socialCode,
socialState: authParams.socialState,
phoneNumber: phoneNumber,
smsCode: smsCode,
password: hex_md5(password),
}).then(function (res) {
if (ApiClient.isSuccess(res)) {
layui.layer.msg("微信绑定成功", { icon: 1 });
try {
sessionStorage.setItem("wechatAccountBindSuccess", "1");
} catch (e) {}
closeWeChatBindPopup();
loadUserDetail();
} else {
layui.layer.msg(res.msg || "微信绑定失败", { icon: 2 });
}
});
}
function isTodayTime(value) {
if (!value) return false;
var dateText = String(value).slice(0, 10);
@@ -534,6 +750,7 @@
: "普通会员",
);
updateExpertActions(data);
loadAccountInfoForWechat();
$("#userPoints").html((data.points || 0) + "<span>点</span>");
if (hasSignedTodayValue(data)) {
setSignInButtonSigned(readSignedToday(data));