提交代码

This commit is contained in:
guanj
2026-04-24 09:13:17 +08:00
parent 747d3139cf
commit ce78b65875
32 changed files with 2470 additions and 1142 deletions

View File

@@ -1,238 +1,245 @@
import request from '../js/request'
/**
* 发送验证码
* @param {*} params.type 0:登录 1:注册 2:修改密码 6:忘记密码 4:更换手机号第二步获取验证码 5:更换手机号第一步获取验证码
* @returns
*/
export function apiGetYms(params) {
return request({
url: '/user-boot/appUser/authCode',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
type: params.type,
},
method: 'POST',
})
}
/**
* 登录
* @param {*} params.type 0:ysm 1:pwd
* @returns
*/
export function apiLogin(params) {
console.log(uni.getStorageSync('devCode'))
return request({
url: '/shiningCloud/user/login',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
key: params.key.trim(),
type: params.type,
},
method: 'POST',
})
}
/**
* 验证码登录
* @param {*} params.type 0:ysm 1:pwd
* @returns
*/
export function apiYsmLogin(params) {
uni.setStorageSync('access_token', 'Basic bmpjbmFwcDpuamNucHFz')
return request({
url: '/pqs-auth/oauth/token',
data: {
grant_type: 'sms_code',
phone: params.phone,
smsCode: params.smsCode.trim(),
},
method: 'POST',
})
}
/**
* 注册
* @param {*} params
* @returns
*/
export function apiRegister(params) {
return request({
url: '/user-boot/appUser/register',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
code: params.code.trim(),
},
method: 'POST',
})
}
/**
* app用户注册完自动登录
* @param params
* @returns {*}
*/
export function autoLogin(phone) {
return request({
url: '/pqs-auth/oauth/autoLogin',
data: {
phone: phone,
},
method: 'POST',
})
}
// 第一次登录设置密码
export function apiSetPsd(params) {
return request({
url: '/shiningCloud/user/setPsd',
data: {
userId: uni.getStorageSync('userInfo').userIndex,
devCode: uni.getStorageSync('devCode'),
password: params.password.trim(),
},
method: 'POST',
})
}
// 重置密码
export function apiReSetPsd(params) {
return request({
url: '/user-boot/appUser/resetPsd',
data: {
phone: params.phone,
code: params.code.trim(),
devCode: uni.getStorageSync('devCode'),
password: params.password.trim(),
},
method: 'POST',
})
}
// 更换手机号第一步
export function apiComfirmCode(params) {
return request({
url: '/user-boot/appUser/confirmCode',
data: {
devCode: uni.getStorageSync('devCode'),
phone: params.phone,
code: params.code.trim(),
},
method: 'POST',
})
}
// 重新绑定手机号
export function apiRebindPhone(params) {
return request({
url: '/user-boot/appUser/rebindPhone',
data: {
devCode: uni.getStorageSync('devCode'),
userId: uni.getStorageSync('userInfo').userIndex,
phoneNew: params.phone,
code: params.code.trim(),
},
method: 'POST',
})
}
// 角色升级
export function roleUpdate({ userId, referralCode }) {
return request({
url: '/user-boot/appRole/roleUpdate',
method: 'post',
data: {
devCode: uni.getStorageSync('devCode'),
referralCode,
userId,
},
})
}
// 密码登录
export function apiPwdLogin(params) {
return request({
url: '/pqs-auth/oauth/token',
header: {
Authorization: 'Basic bmpjbnRlc3Q6bmpjbnBxcw==', // 客户端信息加密摘要认证
},
params,
method: 'POST',
})
}
//登录获取公钥
export function gongkey(data) {
console.log(data)
return request({
url: '/user-boot/user/generateSm2Key',
method: 'get',
data: data,
})
}
// 修改手机号
export function apiModifyPsd(params) {
return request({
url: '/user-boot/appUser/modifyPsd',
data: {
devCode: uni.getStorageSync('devCode'),
userId: uni.getStorageSync('userInfo').userIndex,
phone: params.phone,
password: params.password.trim(),
code: params.code.trim(),
},
method: 'POST',
})
}
// 更改用户信息
export function apiUpdateUser(params) {
return request({
url: '/user-boot/user/updateAppUser',
data: {
...params,
},
header: {
'Content-Type': 'application/json',
},
method: 'PUT',
})
}
// 更改用户信息
export function apiDeleteUser(params) {
return request({
url: '/user-boot/user/delete',
data: {
id: uni.getStorageSync('userInfo').userIndex,
},
method: 'DELETE',
})
}
// 更新用户推送标识
export function apiUpdatePush(params) {
uni.getPushClientId({
success: (res) => {
console.log('🚀 ~ apiUpdatePush111 ~ res:', res)
let push_clientid = res.cid
console.log(push_clientid, 'push_clientid')
request({
url: '/user-boot/appUser/updateDevCode',
data: {
devCode: push_clientid,
userId: uni.getStorageSync('userInfo').userIndex,
},
method: 'POST',
})
},
fail(err) {
console.log('🚀 ~ apiUpdatePush222 ~ res:', err)
},
})
}
import request from '../js/request'
/**
* 发送验证码
* @param {*} params.type 0:登录 1:注册 2:修改密码 6:忘记密码 4:更换手机号第二步获取验证码 5:更换手机号第一步获取验证码
* @returns
*/
export function apiGetYms(params) {
return request({
url: '/user-boot/appUser/authCode',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
type: params.type,
},
method: 'POST',
})
}
/**
* 登录
* @param {*} params.type 0:ysm 1:pwd
* @returns
*/
export function apiLogin(params) {
console.log(uni.getStorageSync('devCode'))
return request({
url: '/shiningCloud/user/login',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
key: params.key.trim(),
type: params.type,
},
method: 'POST',
})
}
/**
* 验证码登录
* @param {*} params.type 0:ysm 1:pwd
* @returns
*/
export function apiYsmLogin(params) {
uni.setStorageSync('access_token', 'Basic bmpjbmFwcDpuamNucHFz')
return request({
url: '/pqs-auth/oauth/token',
data: {
grant_type: 'sms_code',
phone: params.phone,
smsCode: params.smsCode.trim(),
},
method: 'POST',
})
}
/**
* 注册
* @param {*} params
* @returns
*/
export function apiRegister(params) {
return request({
url: '/user-boot/appUser/register',
data: {
phone: params.phone,
devCode: uni.getStorageSync('devCode'),
code: params.code.trim(),
},
method: 'POST',
})
}
/**
* app用户注册完自动登录
* @param params
* @returns {*}
*/
export function autoLogin(phone) {
return request({
url: '/pqs-auth/oauth/autoLogin',
data: {
phone: phone,
},
method: 'POST',
})
}
// 第一次登录设置密码
export function apiSetPsd(params) {
return request({
url: '/shiningCloud/user/setPsd',
data: {
userId: uni.getStorageSync('userInfo').userIndex,
devCode: uni.getStorageSync('devCode'),
password: params.password.trim(),
},
method: 'POST',
})
}
// 重置密码
export function apiReSetPsd(params) {
return request({
url: '/user-boot/appUser/resetPsd',
data: {
phone: params.phone,
code: params.code.trim(),
devCode: uni.getStorageSync('devCode'),
password: params.password.trim(),
},
method: 'POST',
})
}
// 更换手机号第一步
export function apiComfirmCode(params) {
return request({
url: '/user-boot/appUser/confirmCode',
data: {
devCode: uni.getStorageSync('devCode'),
phone: params.phone,
code: params.code.trim(),
},
method: 'POST',
})
}
// 重新绑定手机号
export function apiRebindPhone(params) {
return request({
url: '/user-boot/appUser/rebindPhone',
data: {
devCode: uni.getStorageSync('devCode'),
userId: uni.getStorageSync('userInfo').userIndex,
phoneNew: params.phone,
code: params.code.trim(),
},
method: 'POST',
})
}
// 角色升级
export function roleUpdate({ userId, referralCode }) {
return request({
url: '/user-boot/appRole/roleUpdate',
method: 'post',
data: {
devCode: uni.getStorageSync('devCode'),
referralCode,
userId,
},
})
}
// 密码登录
export function apiPwdLogin(params) {
return request({
url: '/pqs-auth/oauth/token',
header: {
Authorization: 'Basic bmpjbnRlc3Q6bmpjbnBxcw==', // 客户端信息加密摘要认证
},
params,
method: 'POST',
})
}
//登录获取公钥
export function gongkey(data) {
console.log(data)
return request({
url: '/user-boot/user/generateSm2Key',
method: 'get',
data: data,
})
}
// 修改手机号
export function apiModifyPsd(params) {
return request({
url: '/user-boot/appUser/modifyPsd',
data: {
devCode: uni.getStorageSync('devCode'),
userId: uni.getStorageSync('userInfo').userIndex,
phone: params.phone,
password: params.password.trim(),
code: params.code.trim(),
},
method: 'POST',
})
}
// 更改用户信息
export function apiUpdateUser(params) {
return request({
url: '/user-boot/user/updateAppUser',
data: {
...params,
},
header: {
'Content-Type': 'application/json',
},
method: 'PUT',
})
}
// 更改用户信息
export function apiDeleteUser(params) {
return request({
url: '/user-boot/user/delete',
data: {
id: uni.getStorageSync('userInfo').userIndex,
},
method: 'DELETE',
})
}
// 更新用户推送标识
export function apiUpdatePush(params) {
uni.getPushClientId({
success: (res) => {
console.log('🚀 ~ apiUpdatePush111 ~ res:', res)
let push_clientid = res.cid
console.log(push_clientid, 'push_clientid')
request({
url: '/user-boot/appUser/updateDevCode',
data: {
devCode: push_clientid,
userId: uni.getStorageSync('userInfo').userIndex,
},
method: 'POST',
})
},
fail(err) {
console.log('🚀 ~ apiUpdatePush222 ~ res:', err)
},
})
}
// 获取当前版本号
export function getLastData() {
return request({
url: '/cs-system-boot/appVersion/getLastData?versionType=APP',
method: 'POST',
})
}

View File

@@ -292,6 +292,20 @@ image {
font-size: 30rpx;
}
.boxClick:active {
transform: scale(0.94);
opacity: 0.8;
// transform: scale(0.94);
// opacity: 0.8;
animation: elastic-bounce 0.5s;
}
@keyframes elastic-bounce {
0% {
transform: scale(1);
}
50% {
transform: scale(0.96);
}
100% {
transform: scale(1);
}
}

View File

@@ -27,7 +27,7 @@ export default (options = {}) => {
}
uni.request({
url,
timeout: 1000 *30,
timeout: 1000 * 60,
data: {
...options.data,
},

227
common/js/update.js Normal file
View File

@@ -0,0 +1,227 @@
import { getLastData } from '../api/user.js'
export const checkAppUpdate = () => {
// 开发环境跳过检查
const isDev = process.env.NODE_ENV === 'development'
// if (isDev) {
console.log('开发环境,不执行更新检查')
return
// }
// 获取当前应用信息
plus.runtime.getProperty(plus.runtime.appid, (info) => {
const currentVersion = info.version
getLastData()
.then((res) => {
// let res = {
// data: {
// versionName: 'v1.6.83',
// forceUpdate: '1',
// androidPath: 'https://app.liuyingyong.cn/build/download/3c26e400-3a33-11f1-8997-a16e76fa35b3',
// // androidPath: 'http://112.4.144.18:8040/shiningCloud/file/canneng_wulian.apk',
// iosPath: 'xxxx',
// },
// }
if (!res?.data) {
console.log('未获取到版本信息')
return
}
// 适配新的接口返回格式
const { versionName, androidPath, iosPath, forceUpdate = '1' } = res.data
// 版本相同则不需要更新
if (versionName.includes(currentVersion)) {
console.log('已是最新版本')
return
}
const isForce = forceUpdate === '1' // 字符串 '1' 表示强制更新
const iosUrl = iosPath
handleUpdate({ version: versionName, androidPath, iosUrl, isForce })
})
.catch((err) => {
console.error('获取版本接口失败', err)
})
})
}
/**
* 处理更新逻辑
*/
const handleUpdate = ({ version, androidPath, iosUrl, isForce }) => {
const isAndroid = plus.os.name === 'Android'
const isIOS = plus.os.name === 'iOS'
if (isAndroid) {
handleAndroidUpdate({ androidPath, isForce })
} else if (isIOS) {
handleIOSUpdate({ iosUrl, isForce })
} else {
console.warn('未知操作系统')
}
}
/**
* 处理安卓更新
*/
const handleAndroidUpdate = ({ androidPath, isForce }) => {
if (!androidPath?.length) {
console.error('未找到安卓安装包')
uni.showToast({
title: '更新包不存在',
icon: 'error',
})
return
}
const downloadUrl = androidPath
uni.showModal({
title: '更新提示',
content: '发现新版本,是否立即更新?',
showCancel: !isForce, // 强制更新隐藏取消按钮
confirmText: '去更新',
cancelText: '暂不更新',
success: (modalRes) => {
if (modalRes.confirm) {
downloadAndInstallApk(downloadUrl)
} else if (isForce) {
// 强制更新且用户取消,退出应用
plus.runtime.quit()
}
},
})
}
/**
* 处理iOS更新
*/
const handleIOSUpdate = ({ iosUrl, isForce }) => {
if (!iosUrl) {
console.error('未找到iOS下载链接')
uni.showToast({
title: '更新链接不存在',
icon: 'error',
})
return
}
uni.showModal({
title: '更新提示',
content: '发现新版本,请前往 App Store 更新',
showCancel: !isForce,
confirmText: '去更新',
cancelText: '暂不更新',
success: (modalRes) => {
if (modalRes.confirm) {
plus.runtime.openURL(iosUrl)
}
// 强制更新时,无论确认还是取消都退出应用
if (isForce) {
setTimeout(() => {
plus.runtime.quit()
}, 300) // 给跳转留一点时间
}
},
})
}
/**
* 下载并安装APK安卓专用
*/
const downloadAndInstallApk = (url) => {
// 显示原生进度条
let progressWaiting = plus.nativeUI.showWaiting('正在下载中,请稍等...', {
modal: true,
round: true,
close: false, // 不允许用户关闭
padlock: true, // 锁定屏幕
})
const options = {
filename: '_doc/update/canneng_wulian.apk',
timeout: 120,
}
const downloadTask = plus.downloader.createDownload(url, options, (downloadedFile, status) => {
progressWaiting.close()
if (status === 200) {
installApk(downloadedFile.filename, url)
} else {
handleDownloadError(url)
}
})
// // 更新进度
downloadTask.addEventListener('statechanged', (task) => {
if (task.state === 3 && task.totalSize > 0) {
const percent = ((task.downloadedSize / task.totalSize) * 100).toFixed(0)
console.log("🚀 ~ downloadAndInstallApk ~ percent:", percent)
// 直接更新 waiting 的标题,不会闪烁
progressWaiting.setTitle(`正在下载更新 ${percent}%`)
}
})
downloadTask.start()
}
/**
* 安装APK
*/
const installApk = (filePath, downloadUrl) => {
console.log('🚀 ~ installApk ~ filePath:', filePath)
plus.runtime.install(
filePath,
{ force: true },
() => {
// 安装成功
uni.showModal({
title: '安装成功',
content: '是否立即重启应用?',
showCancel: false,
confirmText: '立即重启',
success: () => {
plus.runtime.restart()
},
})
},
(error) => {
console.error('安装失败', error)
uni.showModal({
title: '安装失败',
content: `安装失败:${error.message}\n请检查是否已开启安装权限`,
confirmText: '重试',
cancelText: '取消',
success: (res) => {
if (res.confirm) {
downloadAndInstallApk(downloadUrl)
}
},
})
},
)
}
/**
* 处理下载错误
*/
const handleDownloadError = (downloadUrl) => {
uni.showModal({
title: '下载失败',
content: '网络异常或下载链接失效,是否重试?',
confirmText: '重试',
cancelText: '取消',
success: (res) => {
if (res.confirm) {
downloadAndInstallApk(downloadUrl)
}
},
})
}