Initial commit: MSH System\n\n- msh_single_uniapp: Vue 2 + UniApp 前端(微信小程序/H5/App/支付宝小程序)\n- msh_crmeb_22: Spring Boot 2.2 后端(C端API/管理端/业务逻辑)\n- models-integration: AI服务集成(Coze/KieAI/腾讯ASR)\n- docs: 产品文档与设计稿
This commit is contained in:
231
msh_single_uniapp/api/activity.js
Normal file
231
msh_single_uniapp/api/activity.js
Normal file
@@ -0,0 +1,231 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
/*
|
||||
* 所有活动接口 包括:拼团,砍价,秒杀
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 拼团列表
|
||||
*
|
||||
*/
|
||||
export function getCombinationList(data) {
|
||||
return request.get('combination/list', data,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团详情
|
||||
*
|
||||
*/
|
||||
export function getCombinationDetail(id) {
|
||||
return request.get('combination/detail/'+id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团 开团
|
||||
*/
|
||||
export function getCombinationPink(id) {
|
||||
return request.get("combination/pink/" + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团 取消开团
|
||||
*/
|
||||
export function postCombinationRemove(data) {
|
||||
return request.post("combination/remove",data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团 更多拼团
|
||||
*/
|
||||
export function getCombinationMore(data) {
|
||||
return request.get("combination/more",data,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价列表
|
||||
*/
|
||||
export function getBargainList(data) {
|
||||
return request.get("bargain/list", data,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 砍价列表(已参与)
|
||||
* @param object data
|
||||
*/
|
||||
export function getBargainUserList(data){
|
||||
return request.get('bargain/record',data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 取消砍价
|
||||
* @param int bargainId
|
||||
*/
|
||||
export function bargainUserCancel(bargainId){
|
||||
return request.post('bargain/user/cancel', { bargainId: bargainId})
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价产品详情
|
||||
*/
|
||||
export function getBargainDetail(id) {
|
||||
return request.get("bargain/detail/" + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户砍价信息,注意自己的活动和别人的活动的区别
|
||||
*/
|
||||
export function getBargainUser(data) {
|
||||
return request.get("bargain/user", data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 砍价开启
|
||||
*/
|
||||
export function postBargainStart(bargainId) {
|
||||
return request.post("bargain/start", { bargainId: bargainId});
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价 帮助好友砍价
|
||||
*/
|
||||
export function postBargainHelp(data) {
|
||||
return request.post("bargain/help", data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价 砍掉金额
|
||||
*/
|
||||
export function postBargainHelpPrice(data) {
|
||||
return request.post("bargain/help/price", data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价 砍价帮
|
||||
*/
|
||||
export function postBargainHelpList(params,data) {
|
||||
return request.get("bargain/help/list?limit="+params.limit+"&page="+params.page, data,{});
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀产品时间区间
|
||||
*
|
||||
*/
|
||||
export function getSeckillIndexTime(){
|
||||
return request.get('seckill/index',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀产品列表
|
||||
* @param int time
|
||||
* @param object data
|
||||
*/
|
||||
export function getSeckillList(time,data){
|
||||
return request.get('seckill/list/'+time,data,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀产品详情
|
||||
* @param int id
|
||||
*/
|
||||
export function getSeckillDetail(id){
|
||||
return request.get('seckill/detail/'+id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价海报
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function getBargainPoster(data){
|
||||
return request.post('bargain/poster',data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼团海报
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function getCombinationPoster(data){
|
||||
return request.post('combination/poster',data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价取消
|
||||
*/
|
||||
export function getBargainUserCancel(data) {
|
||||
return request.post("/bargain/user/cancel", data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取秒杀小程序二维码
|
||||
*/
|
||||
export function seckillCode(id,data) {
|
||||
return request.get("seckill/code/"+id,data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取拼团小程序二维码
|
||||
*/
|
||||
export function scombinationCode(id) {
|
||||
return request.get("combination/code/"+id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒杀产品时间区间
|
||||
* @param int id
|
||||
*/
|
||||
export function getSeckillHeaderApi(){
|
||||
return request.get('seckill/header',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页秒杀产品列表
|
||||
*/
|
||||
export function getSeckillIndexApi(){
|
||||
return request.get('seckill/index',{},{noAuth:true});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 首页拼团产品列表
|
||||
*/
|
||||
export function getCombinationIndexApi(){
|
||||
return request.get('combination/index',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页砍价产品列表
|
||||
*/
|
||||
export function getBargainIndexApi(){
|
||||
return request.get('bargain/index',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页砍价产品列表
|
||||
*/
|
||||
export function bargainHeaderApi(){
|
||||
return request.get('bargain/header');
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼图列表头部
|
||||
*/
|
||||
export function combinationHeaderApi(){
|
||||
return request.get('combination/header');
|
||||
}
|
||||
|
||||
316
msh_single_uniapp/api/api.js
Normal file
316
msh_single_uniapp/api/api.js
Normal file
@@ -0,0 +1,316 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
/**
|
||||
* 公共接口 ,优惠券接口 , 行业此讯 , 手机号码注册
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* 获取主页数据 无需授权
|
||||
*
|
||||
*/
|
||||
export function getIndexData()
|
||||
{
|
||||
return request.get("index",{},{ noAuth : true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录授权login
|
||||
*
|
||||
*/
|
||||
export function getLogo()
|
||||
{
|
||||
return request.get('wechat/getLogo', {}, { noAuth : true});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存form_id
|
||||
* @param string formId
|
||||
*/
|
||||
export function setFormId(formId) {
|
||||
return request.post("wechat/set_form_id", { formId: formId});
|
||||
}
|
||||
|
||||
/**
|
||||
* 领取优惠卷
|
||||
* @param int couponId
|
||||
*
|
||||
*/
|
||||
export function setCouponReceive(couponId){
|
||||
return request.post('coupon/receive', { couponId: couponId});
|
||||
}
|
||||
/**
|
||||
* 优惠券列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getCoupons(data){
|
||||
return request.get('coupons',data,{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的优惠券
|
||||
* @param int types 0全部 1未使用 2已使用
|
||||
*/
|
||||
export function getUserCoupons(data){
|
||||
return request.get('coupon/list',data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章分类列表
|
||||
*
|
||||
*/
|
||||
export function getArticleCategoryList(){
|
||||
return request.get('article/category/list',{},{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章列表
|
||||
* @param int cid
|
||||
*
|
||||
*/
|
||||
export function getArticleList(cid,data){
|
||||
return request.get('article/list/' + cid, data,{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章 热门列表
|
||||
*
|
||||
*/
|
||||
export function getArticleHotList(){
|
||||
return request.get('article/hot/list',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章 轮播列表
|
||||
*
|
||||
*/
|
||||
export function getArticleBannerList(){
|
||||
return request.get('article/banner/list',{},{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 文章详情
|
||||
* @param int id
|
||||
*
|
||||
*/
|
||||
export function getArticleDetails(id){
|
||||
return request.get('article/info',id,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号+验证码登录接口
|
||||
* @param object data
|
||||
*/
|
||||
export function loginMobile(data){
|
||||
return request.post('login/mobile',data,{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取短信KEY
|
||||
* @param object phone
|
||||
*/
|
||||
export function verifyCode(){
|
||||
return request.get('verify_code', {},{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码发送
|
||||
* @param object phone
|
||||
*/
|
||||
export function registerVerify(phone){
|
||||
return request.post('sendCode', { phone: phone },{noAuth:true},1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号注册
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function phoneRegister(data){
|
||||
return request.post('register',data,{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号修改密码
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function phoneRegisterReset(data){
|
||||
return request.post('register/reset',data,{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号+密码登录
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function phoneLogin(data){
|
||||
return request.post('login',data,{noAuth:true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换H5登录
|
||||
* @param object data
|
||||
*/
|
||||
// #ifdef MP
|
||||
export function switchH5Login(){
|
||||
return request.post('switch_h5', { 'from':'routine'});
|
||||
}
|
||||
// #endif
|
||||
|
||||
/*
|
||||
* h5切换公众号登录
|
||||
* */
|
||||
// #ifdef H5
|
||||
export function switchH5Login() {
|
||||
return request.post("switch_h5", { 'from': "wechat" });
|
||||
}
|
||||
// #endif
|
||||
|
||||
/**
|
||||
* 换绑手机号
|
||||
*
|
||||
*/
|
||||
export function bindingPhone(data){
|
||||
return request.post('update/binding',data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 换绑手机号校验
|
||||
*
|
||||
*/
|
||||
export function bindingVerify(data){
|
||||
return request.post('update/binding/verify',data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登錄
|
||||
*
|
||||
*/
|
||||
export function logout(){
|
||||
return request.get('logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订阅消息id
|
||||
*/
|
||||
export function getTemlIds(data)
|
||||
{
|
||||
return request.get('wechat/program/my/temp/list', data , { noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页拼团数据
|
||||
*/
|
||||
export function pink()
|
||||
{
|
||||
return request.get('pink', {}, { noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取城市信息
|
||||
*/
|
||||
export function getCity() {
|
||||
return request.get('city/list', { }, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小程序直播列表
|
||||
*/
|
||||
export function getLiveList(page,limit) {
|
||||
return request.get('wechat/live', { page, limit}, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小程序二维码
|
||||
*/
|
||||
export function getQrcode(data) {
|
||||
return request.post('qrcode/get',data,{ noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主题换色配置
|
||||
*/
|
||||
export function getTheme() {
|
||||
return request.get('index/color/config',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主题换色配置
|
||||
*/
|
||||
export function getAppVersion() {
|
||||
return request.get('index/get/version',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全局本地图片域名
|
||||
*/
|
||||
export function getImageDomain() {
|
||||
return request.get('image/domain',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品排行榜
|
||||
*/
|
||||
export function productRank(){
|
||||
return request.get('product/leaderboard',{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验token是否有效
|
||||
*/
|
||||
export function tokenIsExistApi(){
|
||||
return request.post(`token/is/exist`,{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录配置
|
||||
*/
|
||||
export function loginConfigApi(){
|
||||
return request.get(`login/config`,{},{noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航信息
|
||||
*/
|
||||
export function getBottomNavigationApi(){
|
||||
return request.get(`get/bottom/navigation`,{},{noAuth:true});
|
||||
}
|
||||
/**
|
||||
* 协议详情
|
||||
*/
|
||||
export function agreementInfo(info){
|
||||
return request.get(`agreement/${info}`,{},{noAuth:true});
|
||||
}
|
||||
/**
|
||||
* 首页装修
|
||||
*/
|
||||
export function pagediyInfoApi(id){
|
||||
return request.get(`pagediy/info/${id}`,{},{noAuth:true});
|
||||
}
|
||||
/**
|
||||
* 首页 第二级商品分类
|
||||
*
|
||||
*/
|
||||
export function getCategoryTwo(id)
|
||||
{
|
||||
return request.get(`categorybypid/${id}`,{},{ noAuth : true});
|
||||
}
|
||||
/**
|
||||
* 获取备案设置
|
||||
*
|
||||
*/
|
||||
export function getConfigCopyright(id)
|
||||
{
|
||||
return request.get(`config/get/copyright`,{},{ noAuth : true},{},true);
|
||||
}
|
||||
464
msh_single_uniapp/api/models-api.js
Normal file
464
msh_single_uniapp/api/models-api.js
Normal file
@@ -0,0 +1,464 @@
|
||||
// API服务工具文件
|
||||
// 统一访问 crmeb-front 项目,基地址来自 config/app.js
|
||||
import { domain } from '@/config/app.js'
|
||||
const API_BASE_URL = domain
|
||||
|
||||
/**
|
||||
* 通用请求方法
|
||||
* @param {string} url 请求地址
|
||||
* @param {object} options 请求配置
|
||||
* @returns {Promise} 请求结果
|
||||
*/
|
||||
function request(url, options = {}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${API_BASE_URL}${url}`,
|
||||
method: options.method || 'GET',
|
||||
data: options.data || {},
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
...options.header
|
||||
},
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(new Error(`请求失败: ${res.statusCode}`))
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
reject(error)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID获取文章详情
|
||||
* @param {string|number} id 文章ID
|
||||
* @returns {Promise} 文章详情数据
|
||||
*/
|
||||
function getArticleById(id) {
|
||||
return request(`/api/front/article-models/${id}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文章列表
|
||||
* @param {object} params 查询参数
|
||||
* @param {number} params.page 页码,默认1
|
||||
* @param {number} params.size 每页数量,默认10
|
||||
* @returns {Promise} 文章列表数据
|
||||
*/
|
||||
function getArticleList(params = { page: 1, size: 10 }) {
|
||||
// 构建查询字符串(兼容小程序环境)
|
||||
const queryString = Object.keys(params)
|
||||
.filter(key => params[key] !== undefined && params[key] !== null)
|
||||
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
||||
.join('&')
|
||||
|
||||
const url = queryString ? `/api/front/article-models?${queryString}` : '/api/front/article-models'
|
||||
return request(url, {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件查询文章列表
|
||||
* @param {object} params 查询参数
|
||||
* @param {number} params.statusTask 任务状态(可选)
|
||||
* @param {string} params.uid 用户ID(可选)
|
||||
* @param {string} params.tags 标签(可选)
|
||||
* @param {string} params.type 文章类型(可选)
|
||||
* @param {number} params.page 页码,默认1
|
||||
* @param {number} params.size 每页数量,默认10
|
||||
* @returns {Promise} 符合条件的文章列表数据
|
||||
*/
|
||||
function searchArticles(params = { page: 1, size: 10 }) {
|
||||
// 构建查询字符串(兼容小程序环境)
|
||||
const queryString = Object.keys(params)
|
||||
.filter(key => params[key] !== undefined && params[key] !== null)
|
||||
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
||||
.join('&')
|
||||
|
||||
const url = queryString ? `/api/front/article-models/search?${queryString}` : '/api/front/article-models/search'
|
||||
return request(url, {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建文生视频任务
|
||||
* @param {object} params 创建参数
|
||||
* @param {string} params.prompt 文本描述
|
||||
* @param {Array} params.image_urls 图片URL数组(可选)
|
||||
* @param {string} params.aspect_ratio 视频比例,如 'portrait' 或 '16:9'
|
||||
* @param {number} params.n_frames 帧数,默认5
|
||||
* @param {string} params.size 视频尺寸,默认 'standard'
|
||||
* @param {boolean} params.remove_watermark 是否移除水印,默认true
|
||||
* @returns {Promise} 任务创建结果
|
||||
*/
|
||||
function createTextToVideoTask(params) {
|
||||
const requestBody = {
|
||||
model: "sora-2-text-to-video",
|
||||
title: params.prompt,
|
||||
task_id: "",
|
||||
nickname: params.nickname || "",
|
||||
uid: params.uid || "",
|
||||
input: {
|
||||
prompt: params.prompt,
|
||||
image_urls: params.image_urls || [],
|
||||
aspect_ratio: params.aspect_ratio || "portrait",
|
||||
n_frames: params.n_frames || 5,
|
||||
size: params.size || "standard",
|
||||
remove_watermark: params.remove_watermark !== false
|
||||
}
|
||||
}
|
||||
|
||||
return request('/api/front/kieai/text-to-video', {
|
||||
method: 'POST',
|
||||
data: requestBody
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建图生视频任务
|
||||
* @param {object} params 创建参数
|
||||
* @param {string} params.imageUrl 图片URL
|
||||
* @param {string} params.prompt 文本描述(可选)
|
||||
* @param {string} params.aspect_ratio 视频比例,如 'portrait' 或 '16:9'
|
||||
* @param {number} params.n_frames 帧数,默认5
|
||||
* @param {string} params.size 视频尺寸,默认 'standard'
|
||||
* @param {boolean} params.remove_watermark 是否移除水印,默认true
|
||||
* @returns {Promise} 任务创建结果
|
||||
*/
|
||||
function createImageToVideoTask(params) {
|
||||
const requestBody = {
|
||||
model: "sora-2-image-to-video",
|
||||
title: params.prompt || "根据图片生成视频",
|
||||
task_id: "",
|
||||
nickname: params.nickname || "",
|
||||
uid: params.uid || "",
|
||||
input: {
|
||||
prompt: params.prompt || "根据图片生成视频",
|
||||
image_urls: [params.imageUrl],
|
||||
aspect_ratio: params.aspect_ratio || "portrait",
|
||||
n_frames: params.n_frames || 5,
|
||||
size: params.size || "standard",
|
||||
remove_watermark: params.remove_watermark !== false
|
||||
}
|
||||
}
|
||||
|
||||
return request('/api/front/kieai/image-to-video', {
|
||||
method: 'POST',
|
||||
data: requestBody
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建图片编辑任务
|
||||
* @param {object} params 创建参数
|
||||
* @param {string} params.prompt 编辑描述,如"改一下"、"去掉背景"
|
||||
* @param {Array} params.image_urls 图片URL数组
|
||||
* @param {string} params.output_format 输出格式,默认'png'
|
||||
* @param {string} params.image_size 图片尺寸,默认'2:3'
|
||||
* @param {string} params.title 任务标题,默认使用prompt
|
||||
* @param {string} params.task_id 任务ID(可选)
|
||||
* @returns {Promise} 任务创建结果
|
||||
*/
|
||||
function createImageEditTask(params) {
|
||||
const requestBody = {
|
||||
model: "google/nano-banana-edit",
|
||||
title: params.title || params.prompt || "图片编辑",
|
||||
task_id: params.task_id || "",
|
||||
nickname: params.nickname || "",
|
||||
uid: params.uid || "",
|
||||
input: {
|
||||
prompt: params.prompt,
|
||||
image_urls: params.image_urls || [],
|
||||
output_format: params.output_format || "png",
|
||||
image_size: params.image_size || "2:3",
|
||||
aspect_ratio: params.aspect_ratio || "9:16",
|
||||
resolution: params.resolution || "2K",
|
||||
}
|
||||
}
|
||||
|
||||
return request('/api/front/kieai/image-edit', {
|
||||
method: 'POST',
|
||||
data: requestBody
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建图片编辑任务
|
||||
* @param {object} params 创建参数
|
||||
* @param {string} params.prompt 编辑描述,如"改一下"、"去掉背景"
|
||||
* @param {Array} params.image_urls 图片URL数组
|
||||
* @param {string} params.output_format 输出格式,默认'png'
|
||||
* @param {string} params.aspect_ratio 图片尺寸,默认'2:3'
|
||||
* @param {string} params.title 任务标题,默认使用prompt
|
||||
* @param {string} params.task_id 任务ID(可选)
|
||||
* @returns {Promise} 任务创建结果
|
||||
*/
|
||||
function createImageEditTaskPro(params) {
|
||||
const requestBody = {
|
||||
model: "nano-banana-pro",
|
||||
title: params.title || params.prompt || "图片编辑",
|
||||
task_id: params.task_id || "",
|
||||
nickname: params.nickname || "",
|
||||
uid: params.uid || "",
|
||||
input: {
|
||||
prompt: params.prompt,
|
||||
image_urls: params.image_urls || [],
|
||||
output_format: params.output_format || "png",
|
||||
aspect_ratio: params.aspect_ratio || "2:3",
|
||||
resolution: params.resolution || "2K"
|
||||
}
|
||||
}
|
||||
|
||||
return request('/api/front/kieai/image-edit', {
|
||||
method: 'POST',
|
||||
data: requestBody
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户上传文件
|
||||
* @param {string} filePath 文件路径
|
||||
* @param {object} options 上传配置
|
||||
* @param {string} options.model 模块类型,默认'user'
|
||||
* @param {string} options.pid 分类ID,默认'0'
|
||||
* @returns {Promise} 上传结果
|
||||
*/
|
||||
function uploadFile(filePath, options = {}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url: `${API_BASE_URL}/api/front/upload/imageOuter`,
|
||||
filePath: filePath,
|
||||
name: 'multipart',
|
||||
formData: {
|
||||
model: options.model || 'user',
|
||||
pid: options.pid || '0'
|
||||
},
|
||||
success: (res) => {
|
||||
try {
|
||||
let data = res.data
|
||||
if (typeof data === 'string') {
|
||||
data = JSON.parse(data)
|
||||
}
|
||||
if (!data || typeof data !== 'object') {
|
||||
throw new Error('响应格式异常')
|
||||
}
|
||||
if (data.code === 200) {
|
||||
// 拼接完整的图片URL
|
||||
const fullUrl = data.data.url.startsWith('http')
|
||||
? data.data.url
|
||||
: `https://uthink2025.oss-cn-shanghai.aliyuncs.com/${data.data.url}`
|
||||
resolve({
|
||||
...data,
|
||||
data: {
|
||||
...data.data,
|
||||
fullUrl: fullUrl
|
||||
}
|
||||
})
|
||||
} else {
|
||||
reject(new Error(data.message || '上传失败'))
|
||||
}
|
||||
} catch (error) {
|
||||
const raw = typeof res.data === 'string' ? res.data.slice(0, 300) : String(res.data || '')
|
||||
const msg = error.message || '响应数据解析失败'
|
||||
reject(new Error(msg + (raw ? ' body: ' + raw : '')))
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
reject(new Error('上传请求失败'))
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建语音识别任务
|
||||
* @param {object} params 请求参数
|
||||
* @param {string} params.url 音频文件URL
|
||||
* @param {string} params.engineModelType 引擎模型类型,默认16k_zh
|
||||
* @param {number} params.channelNum 声道数,默认1
|
||||
* @param {number} params.resTextFormat 结果文本格式,默认0
|
||||
* @param {number} params.sourceType 源类型,默认0
|
||||
* @returns {Promise} 识别任务信息
|
||||
*/
|
||||
function createAsrTask(params) {
|
||||
const defaultParams = {
|
||||
engineModelType: '16k_zh',
|
||||
channelNum: 1,
|
||||
resTextFormat: 0,
|
||||
sourceType: 0,
|
||||
filterDirty: false,
|
||||
filterModal: false,
|
||||
convertNumMode: false,
|
||||
wordInfo: false
|
||||
}
|
||||
|
||||
return request('/api/front/tencent/asr/create-task', {
|
||||
method: 'POST',
|
||||
data: {
|
||||
...defaultParams,
|
||||
...params
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询语音识别任务状态
|
||||
* @param {string|number} taskId 任务ID
|
||||
* @returns {Promise} 任务状态和识别结果
|
||||
*/
|
||||
function queryAsrStatus(taskId) {
|
||||
return request(`/api/front/tencent/asr/query-status/${taskId}`)
|
||||
}
|
||||
|
||||
// ==================== 扣子Coze API ====================
|
||||
|
||||
/**
|
||||
* Coze - 发起对话 (Chat)
|
||||
* @param {object} data 请求参数
|
||||
* @param {string} data.bot_id 机器人ID
|
||||
* @param {string} data.user_id 用户ID
|
||||
* @param {Array} data.additional_messages 附加消息列表
|
||||
* @param {boolean} data.stream 是否流式返回
|
||||
* @param {boolean} data.auto_save_history 是否自动保存历史
|
||||
* @param {object} data.meta_data 元数据
|
||||
* @returns {Promise} 对话响应
|
||||
*/
|
||||
function cozeChat(data) {
|
||||
return request('/api/front/coze/chat', {
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 检索对话详情 (Retrieve Chat)
|
||||
* @param {object} params 请求参数
|
||||
* @param {string} params.conversationId 会话ID
|
||||
* @param {string} params.chatId 对话ID
|
||||
* @returns {Promise} 对话详情
|
||||
*/
|
||||
function cozeRetrieveChat(params) {
|
||||
return request('/api/front/coze/chat/retrieve', {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 查看对话消息详情 (List Messages)
|
||||
* @param {object} params 请求参数
|
||||
* @param {string} params.conversationId 会话ID
|
||||
* @param {string} params.chatId 对话ID
|
||||
* @returns {Promise} 消息列表
|
||||
*/
|
||||
function cozeMessageList(params) {
|
||||
return request('/api/front/coze/chat/messages/list', {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 执行工作流 (Run Workflow)
|
||||
* @param {object} data 请求参数
|
||||
* @param {string} data.workflowId 工作流ID
|
||||
* @param {object} data.parameters 工作流参数
|
||||
* @param {boolean} data.isAsync 是否异步
|
||||
* @returns {Promise} 执行结果
|
||||
*/
|
||||
function cozeWorkflowRun(data) {
|
||||
return request('/api/front/coze/workflow/run', {
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 执行工作流 (Run Workflow Stream)
|
||||
* @param {object} data 请求参数
|
||||
* @param {string} data.workflowId 工作流ID
|
||||
* @param {object} data.parameters 工作流参数
|
||||
* @returns {Promise} 执行结果
|
||||
*/
|
||||
function cozeWorkflowStream(data) {
|
||||
return request('/api/front/coze/workflow/stream', {
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 恢复工作流 (Resume Workflow)
|
||||
* @param {object} data 请求参数
|
||||
* @param {string} data.workflow_id 工作流ID
|
||||
* @param {string} data.event_id 事件ID
|
||||
* @param {string} data.resume_data 恢复数据
|
||||
* @param {number} data.resume_type 恢复类型
|
||||
* @returns {Promise} 执行结果
|
||||
*/
|
||||
function cozeWorkflowResume(data) {
|
||||
return request('/api/front/coze/workflow/resume', {
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Coze - 上传文件 (Upload File)
|
||||
* @param {string} filePath 文件路径
|
||||
* @returns {Promise} 上传结果
|
||||
*/
|
||||
function cozeUploadFile(filePath) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url: `${API_BASE_URL}/api/front/coze/file/upload`,
|
||||
filePath: filePath,
|
||||
name: 'file',
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200) {
|
||||
try {
|
||||
const data = JSON.parse(res.data)
|
||||
resolve(data)
|
||||
} catch (e) {
|
||||
reject(new Error('响应解析失败'))
|
||||
}
|
||||
} else {
|
||||
reject(new Error(`上传失败: ${res.statusCode}`))
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
request,
|
||||
getArticleById,
|
||||
getArticleList,
|
||||
searchArticles,
|
||||
createTextToVideoTask,
|
||||
createImageToVideoTask,
|
||||
createImageEditTask,
|
||||
createImageEditTaskPro,
|
||||
uploadFile,
|
||||
createAsrTask,
|
||||
queryAsrStatus,
|
||||
// Coze API
|
||||
cozeChat,
|
||||
cozeRetrieveChat,
|
||||
cozeMessageList,
|
||||
cozeWorkflowRun,
|
||||
cozeWorkflowStream,
|
||||
cozeWorkflowResume,
|
||||
cozeUploadFile
|
||||
}
|
||||
281
msh_single_uniapp/api/order.js
Normal file
281
msh_single_uniapp/api/order.js
Normal file
@@ -0,0 +1,281 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
|
||||
/**
|
||||
* 获取购物车列表
|
||||
* @param numType boolean true 购物车数量,false=购物车产品数量
|
||||
*/
|
||||
export function getCartCounts(numType,type) {
|
||||
return request.get("cart/count?numType=" + numType + "&type=" + type);
|
||||
}
|
||||
/**
|
||||
* 获取购物车列表
|
||||
*
|
||||
*/
|
||||
export function getCartList(data) {
|
||||
return request.get("cart/list", data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改购物车数量
|
||||
* @param int cartId 购物车id
|
||||
* @param int number 修改数量
|
||||
*/
|
||||
export function changeCartNum(cartId, number) {
|
||||
return request.post("cart/num", {
|
||||
id: cartId,
|
||||
number: number
|
||||
}, {}, 1);
|
||||
}
|
||||
/**
|
||||
* 清除购物车
|
||||
* @param object ids join(',') 切割成字符串
|
||||
*/
|
||||
export function cartDel(ids) {
|
||||
if (typeof ids === 'object')
|
||||
ids = ids.join(',');
|
||||
return request.post('cart/delete', {
|
||||
ids: ids
|
||||
}, {}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车重选提交
|
||||
*
|
||||
*/
|
||||
export function getResetCart(data) {
|
||||
return request.post('cart/resetcart', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getOrderList(data) {
|
||||
return request.get('order/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单产品信息
|
||||
* @param string unique
|
||||
*/
|
||||
export function orderProduct(data) {
|
||||
return request.post('order/product', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单评价
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function orderComment(data) {
|
||||
return request.post('order/comment', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单支付
|
||||
* @param object data
|
||||
*/
|
||||
export function orderPay(data) {
|
||||
return request.post('pay/payment', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单统计数据
|
||||
*/
|
||||
export function orderData() {
|
||||
return request.get('order/data')
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单取消
|
||||
* @param string id
|
||||
*
|
||||
*/
|
||||
export function orderCancel(id) {
|
||||
return request.post('order/cancel', {
|
||||
id: id
|
||||
}, {}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除已完成订单
|
||||
* @param string uni
|
||||
*
|
||||
*/
|
||||
export function orderDel(uni) {
|
||||
return request.post('order/del', {
|
||||
id: uni
|
||||
}, {}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
* @param string uni
|
||||
*/
|
||||
export function getOrderDetail(uni) {
|
||||
return request.get('order/detail/' + uni);
|
||||
}
|
||||
|
||||
/**
|
||||
* 再次下单
|
||||
* @param string uni
|
||||
*
|
||||
*/
|
||||
export function orderAgain(uni) {
|
||||
return request.post('order/again', {
|
||||
orderNo: uni
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单收货
|
||||
* @param string uni
|
||||
*
|
||||
*/
|
||||
export function orderTake(uni) {
|
||||
return request.post('order/take', {
|
||||
id: uni
|
||||
}, {}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单查询物流信息
|
||||
* @returns {*}
|
||||
*/
|
||||
export function express(uni) {
|
||||
return request.get("order/express/" + uni);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退款理由
|
||||
*
|
||||
*/
|
||||
export function ordeRefundReason() {
|
||||
return request.get('order/refund/reason');
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单退款审核
|
||||
* @param object data
|
||||
*/
|
||||
export function orderRefundVerify(data) {
|
||||
return request.post('order/refund', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单确认获取订单详细信息
|
||||
* @param string cartId
|
||||
*/
|
||||
export function orderConfirm(cartId, isNew, addAgain,secKill,combination,bargain) {
|
||||
return request.post('order/confirm', {
|
||||
cartIds: cartId,
|
||||
isNew: isNew,
|
||||
addAgain: addAgain,
|
||||
secKill: secKill,
|
||||
combination:combination,
|
||||
bargain:bargain
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前金额能使用的优惠卷
|
||||
* @param string price
|
||||
*
|
||||
*/
|
||||
export function getCouponsOrderPrice(preOrderNo) {
|
||||
return request.get(`coupons/order/${preOrderNo}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单创建
|
||||
* @param string key
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function orderCreate(data) {
|
||||
return request.post('order/create', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算订单金额
|
||||
* @param key
|
||||
* @param data
|
||||
* @returns {*}
|
||||
*/
|
||||
export function postOrderComputed(data) {
|
||||
return request.post("order/computed/price", data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字符串 转base64
|
||||
* @param object data
|
||||
*/
|
||||
export function qrcodeApi(data) {
|
||||
return request.post('qrcode/str2base64', data, {}, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信查询支付结果
|
||||
* @param object data
|
||||
*/
|
||||
export function wechatQueryPayResult(data) {
|
||||
return request.get('pay/queryPayResult?orderNo=' + data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付宝查询支付结果
|
||||
* @param object data
|
||||
*/
|
||||
export function alipayQueryPayResult(data) {
|
||||
return request.get('pay/queryAliPayResult?orderNo=' + data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请退款商品详情
|
||||
* @param object data
|
||||
*/
|
||||
export function applyRefund(orderId) {
|
||||
return request.get(`order/apply/refund/${orderId}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 预下单
|
||||
* @param object data
|
||||
*/
|
||||
export function preOrderApi(data) {
|
||||
return request.post(`order/pre/order`, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载预下单
|
||||
* @param object preOrderNo
|
||||
*/
|
||||
export function loadPreOrderApi(preOrderNo) {
|
||||
return request.get(`order/load/pre/${preOrderNo}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付配置
|
||||
* @param object preOrderNo
|
||||
*/
|
||||
export function getPayConfig(preOrderNo) {
|
||||
return request.get(`order/get/pay/config`);
|
||||
}
|
||||
/**
|
||||
* 获取支付配置
|
||||
*
|
||||
*/
|
||||
export function getOrderPayConfig() {
|
||||
return request.get(`pay/get/config`);
|
||||
}
|
||||
119
msh_single_uniapp/api/public.js
Normal file
119
msh_single_uniapp/api/public.js
Normal file
@@ -0,0 +1,119 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
import wechat from "@/libs/wechat.js";
|
||||
import {
|
||||
toLogin,
|
||||
checkLogin
|
||||
} from '../libs/login';
|
||||
/**
|
||||
* 获取微信公众号js配置
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getWechatConfig() {
|
||||
return request.get("wechat/config",{ url: encodeURIComponent(wechat.signLink()) },{ noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信sdk配置
|
||||
* @returns {*}
|
||||
*/
|
||||
export function wechatAuth(code, spread) {
|
||||
var reg=/^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 ,判断正整数用/^[1-9]+[0-9]*]*$/
|
||||
spread = reg.test(spread) ? spread : 0;
|
||||
return request.get(
|
||||
"wechat/authorize/login?code=" + code + "&spread_spid=" + spread, {},
|
||||
{ noAuth: true }
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录授权login
|
||||
*
|
||||
*/
|
||||
export function getLogo()
|
||||
{
|
||||
// wechat/get_logo
|
||||
return request.get('wechat/getLogo', {}, { noAuth : true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序用户登录
|
||||
* @param data object 小程序用户登录信息
|
||||
*/
|
||||
export function login(code,data) {
|
||||
return request.post("wechat/authorize/program/login?code="+code, data, { noAuth : true });
|
||||
}
|
||||
/**
|
||||
* 分享
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getShare() {
|
||||
return request.get("share", {}, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取关注海报
|
||||
* @returns {*}
|
||||
*/
|
||||
export function follow() {
|
||||
return request.get("wechat/follow", {}, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图片base64
|
||||
* @retins {*}
|
||||
* */
|
||||
export function imageBase64(image) {
|
||||
return request.post("qrcode/base64",image,{ noAuth: true },1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动复制口令功能
|
||||
* @returns {*}
|
||||
*/
|
||||
export function copyWords() {
|
||||
return request.get("copy_words", {}, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信(公众号,小程序)绑定手机号
|
||||
* @param {Object} data
|
||||
*/
|
||||
export function getUserPhone(data){
|
||||
return request.post('wechat/register/binding/phone',data,{noAuth : true});
|
||||
}
|
||||
|
||||
/**
|
||||
* APP微信登录
|
||||
* @param {Object} data
|
||||
*/
|
||||
export function appAuth(data) {
|
||||
return request.post("wechat/authorize/app/login", data, { noAuth : true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 苹果登录
|
||||
* @param {Object} data
|
||||
*/
|
||||
export function appleLogin(data) {
|
||||
return request.post("ios/login", data, { noAuth : true });
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 苹果绑定手机号
|
||||
* @param {Object} data
|
||||
*/
|
||||
export function iosBinding(data) {
|
||||
return request.post("ios/binding/phone", data, { noAuth : true });
|
||||
}
|
||||
231
msh_single_uniapp/api/store.js
Normal file
231
msh_single_uniapp/api/store.js
Normal file
@@ -0,0 +1,231 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
|
||||
/**
|
||||
* 获取产品详情
|
||||
* @param int id
|
||||
*
|
||||
*/
|
||||
export function getProductDetail(id, type) {
|
||||
return request.get('product/detail/' + id + '?type=' + type, {}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 产品分享二维码 推广员
|
||||
* @param int id
|
||||
*/
|
||||
// #ifndef MP
|
||||
export function getProductCode(id) {
|
||||
return request.get('product/code/' + id, {});
|
||||
}
|
||||
// #endif
|
||||
// #ifdef MP
|
||||
export function getProductCode(id) {
|
||||
return request.get('product/code/' + id, {
|
||||
user_type: 'routine'
|
||||
});
|
||||
}
|
||||
// #endif
|
||||
|
||||
/**
|
||||
* 添加收藏
|
||||
* @param int id
|
||||
* @param string category product=普通产品,product_seckill=秒杀产品
|
||||
*/
|
||||
export function collectAdd(id, category) {
|
||||
return request.post('collect/add', {
|
||||
id: id,
|
||||
'category': category === undefined ? 'product' : category
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消收藏产品
|
||||
* @param int id
|
||||
*/
|
||||
export function collectDel(proId) {
|
||||
return request.post(`collect/cancel/${proId}`);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除收藏产品
|
||||
* @param string id
|
||||
*/
|
||||
export function collectDelete(ids) {
|
||||
return request.post(`collect/delete`,ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 购车添加
|
||||
*
|
||||
*/
|
||||
export function postCartAdd(data) {
|
||||
return request.post('cart/save', data, {});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类列表
|
||||
*
|
||||
*/
|
||||
export function getCategoryList() {
|
||||
return request.get('category', {}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取产品列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getProductslist(data) {
|
||||
return request.get('products', data, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品列表(个别分类模型使用)
|
||||
* @param object data
|
||||
*/
|
||||
export function productList(data) {
|
||||
return request.get('product/list', data, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推荐产品
|
||||
*
|
||||
*/
|
||||
export function getProductHot(page, limit) {
|
||||
return request.get("product/hot", {
|
||||
page: page === undefined ? 1 : page,
|
||||
limit: limit === undefined ? 4 : limit
|
||||
}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 批量收藏
|
||||
*
|
||||
* @param object id 产品编号 join(',') 切割成字符串
|
||||
* @param string category
|
||||
*/
|
||||
export function collectAll(id, category) {
|
||||
return request.post('collect/all', {
|
||||
id: id,
|
||||
category: category === undefined ? 'product' : category
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页产品的轮播图和产品信息
|
||||
* @param int type
|
||||
*
|
||||
*/
|
||||
export function getGroomList(type, data) {
|
||||
return request.get('index/product/' + type, data, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取收藏列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getCollectUserList(data) {
|
||||
return request.get('collect/user', data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取产品评论
|
||||
* @param int id
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function getReplyList(id, data) {
|
||||
return request.get('reply/list/' + id, data,{
|
||||
noAuth: true
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 产品评价数量和好评度
|
||||
* @param int id
|
||||
*/
|
||||
export function getReplyConfig(id) {
|
||||
return request.get('reply/config/' + id,{},{
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取搜索关键字获取
|
||||
*
|
||||
*/
|
||||
export function getSearchKeyword() {
|
||||
return request.get('search/keyword', {}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店列表
|
||||
* @returns {*}
|
||||
*/
|
||||
export function storeListApi(data) {
|
||||
return request.post("store/list", data, {}, 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 优品推荐
|
||||
* @param object data
|
||||
*/
|
||||
export function getProductGood() {
|
||||
return request.get('product/good',{},{
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情页产品评论
|
||||
* @param int id
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function getReplyProduct(id) {
|
||||
return request.get('reply/product/' + id,{}, {
|
||||
noAuth: true
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品的sku
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getAttr(id) {
|
||||
return request.get("product/sku/detail/" + id);
|
||||
}
|
||||
/**
|
||||
* 根据商品id集合查询对应商品
|
||||
* @param {string} ids
|
||||
*/
|
||||
export function productByidsApi(ids) {
|
||||
return request.get(`product/byids/${ids}`,{}, {
|
||||
noAuth: true
|
||||
});
|
||||
}
|
||||
526
msh_single_uniapp/api/tool.js
Normal file
526
msh_single_uniapp/api/tool.js
Normal file
@@ -0,0 +1,526 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | Tool模块API接口
|
||||
// +----------------------------------------------------------------------
|
||||
// | 包含:食谱计算器、AI营养师、饮食打卡、食物百科、营养知识等接口
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
import { HTTP_REQUEST_URL, TOKENNAME } from "@/config/app.js";
|
||||
import store from "@/store";
|
||||
|
||||
// ==================== 食谱计算器相关 ====================
|
||||
|
||||
/**
|
||||
* 计算营养方案
|
||||
* @param {Object} data - 计算参数
|
||||
* @param {String} data.gender - 性别:male/female
|
||||
* @param {Number} data.age - 年龄
|
||||
* @param {Number} data.height - 身高(cm)
|
||||
* @param {Boolean} data.dialysis - 是否透析:true/false
|
||||
* @param {String} data.dialysisType - 透析类型:hemodialysis/peritoneal (可选)
|
||||
* @param {Number} data.dryWeight - 干体重(kg)
|
||||
* @param {Number} data.creatinine - 血肌酐(μmol/L)
|
||||
*/
|
||||
export function calculateNutrition(data) {
|
||||
return request.post('tool/calculator/calculate', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取计算结果详情
|
||||
* @param {Number} id - 计算结果ID
|
||||
*/
|
||||
export function getCalculatorResult(id) {
|
||||
return request.get('tool/calculator/result/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 采纳营养计划
|
||||
* @param {Number} resultId - 计算结果ID
|
||||
*/
|
||||
export function adoptNutritionPlan(resultId) {
|
||||
return request.post('tool/calculator/adopt', { resultId });
|
||||
}
|
||||
|
||||
// ==================== AI营养师相关 ====================
|
||||
|
||||
/**
|
||||
* 发送消息给AI营养师
|
||||
* @param {Object} data - 消息数据
|
||||
* @param {String} data.content - 消息内容
|
||||
* @param {String} data.type - 消息类型:text/image/voice
|
||||
* @param {String} data.imageUrl - 图片URL(当type为image时)
|
||||
* @param {String} data.voiceUrl - 语音URL(当type为voice时)
|
||||
* @param {String} data.conversationId - 会话ID(可选,用于继续对话)
|
||||
*/
|
||||
export function sendAIMessage(data) {
|
||||
return request.post('tool/ai-nutritionist/message', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取AI回复
|
||||
* @param {String} messageId - 消息ID
|
||||
*/
|
||||
export function getAIResponse(messageId) {
|
||||
return request.get('tool/ai-nutritionist/response/' + messageId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取对话历史
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.conversationId - 会话ID(可选)
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getConversationHistory(data) {
|
||||
return request.get('tool/ai-nutritionist/history', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空对话历史
|
||||
* @param {String} conversationId - 会话ID(可选)
|
||||
*/
|
||||
export function clearConversation(conversationId) {
|
||||
return request.post('tool/ai-nutritionist/clear', { conversationId });
|
||||
}
|
||||
|
||||
// ==================== 饮食打卡相关 ====================
|
||||
|
||||
/**
|
||||
* 提交打卡记录
|
||||
* @param {Object} data - 打卡数据
|
||||
* @param {String} data.mealType - 餐次:breakfast/lunch/dinner/snack
|
||||
* @param {String} data.date - 打卡日期:YYYY-MM-DD
|
||||
* @param {Array} data.images - 图片URL数组
|
||||
* @param {String} data.remark - 备注
|
||||
* @param {String} data.voiceUrl - 语音备注URL(可选)
|
||||
* @param {String} data.taskId - 语音识别任务ID(可选)
|
||||
* @param {String} data.dishes - 菜品清单(JSON字符串)
|
||||
* @param {Object} data.nutrition - 营养数据(可选)
|
||||
* @param {Boolean} data.enableAIVideo - 是否生成AI视频
|
||||
* @param {Boolean} data.enableAIAnalysis - 是否开启AI识别
|
||||
*/
|
||||
export function submitCheckin(data) {
|
||||
return request.post('tool/checkin/submit', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取打卡记录列表
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.date - 日期:YYYY-MM-DD(可选)
|
||||
* @param {String} data.mealType - 餐次(可选)
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getCheckinList(data) {
|
||||
return request.get('tool/checkin/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取打卡记录详情
|
||||
* @param {Number} id - 打卡记录ID
|
||||
*/
|
||||
export function getCheckinDetail(id) {
|
||||
return request.get('tool/checkin/detail/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取连续打卡统计
|
||||
*/
|
||||
export function getCheckinStreak() {
|
||||
return request.get('tool/checkin/streak');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取打卡日历数据
|
||||
* @param {String} yearMonth - 年月:YYYY-MM
|
||||
*/
|
||||
export function getCheckinCalendar(yearMonth) {
|
||||
return request.get('tool/checkin/calendar', { yearMonth });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取打卡任务列表
|
||||
*/
|
||||
export function getCheckinTasks() {
|
||||
return request.get('tool/checkin/tasks');
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询视频任务状态
|
||||
* @param {String} taskId - 任务ID
|
||||
*/
|
||||
export function getVideoTaskStatus(taskId) {
|
||||
return request.get(`kieai/video/task/${taskId}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键复制打卡
|
||||
* @param {Number} sourceRecordId - 源打卡记录ID
|
||||
* @param {Object} data - 修改后的数据(可选)
|
||||
*/
|
||||
export function copyCheckin(sourceRecordId, data) {
|
||||
return request.post('tool/checkin/copy', {
|
||||
sourceRecordId,
|
||||
...data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键借鉴打卡
|
||||
* @param {Number} sourcePostId - 源社区内容ID
|
||||
* @param {Object} data - 修改后的数据(可选)
|
||||
*/
|
||||
export function learnCheckin(sourcePostId, data) {
|
||||
return request.post('tool/checkin/learn', {
|
||||
sourcePostId,
|
||||
...data
|
||||
});
|
||||
}
|
||||
|
||||
// ==================== 食物百科相关 ====================
|
||||
|
||||
/**
|
||||
* 搜索食物
|
||||
* @param {Object} data - 搜索参数
|
||||
* @param {String} data.keyword - 搜索关键词
|
||||
* @param {String} data.category - 分类(可选)
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function searchFood(data) {
|
||||
return request.get('tool/food/search', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取食物列表(按分类)
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.category - 分类:all/grain/vegetable/fruit/meat/seafood
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getFoodList(data) {
|
||||
return request.get('tool/food/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取食物详情
|
||||
* @param {String} id - 食物ID或名称
|
||||
*/
|
||||
export function getFoodDetail(id) {
|
||||
return request.get('tool/food/detail/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取相似食物推荐
|
||||
* @param {String} foodId - 食物ID
|
||||
*/
|
||||
export function getSimilarFoods(foodId) {
|
||||
return request.get('tool/food/similar/' + foodId);
|
||||
}
|
||||
|
||||
// ==================== 营养知识相关 ====================
|
||||
|
||||
/**
|
||||
* 获取营养知识列表
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.type - 类型:nutrients/guide/article
|
||||
* @param {String} data.category - 分类(可选)
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getKnowledgeList(data) {
|
||||
return request.get('tool/knowledge/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取营养知识详情
|
||||
* @param {Number} id - 知识ID
|
||||
*/
|
||||
export function getKnowledgeDetail(id) {
|
||||
return request.get('tool/knowledge/detail/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取营养素详情
|
||||
* @param {String} name - 营养素名称
|
||||
*/
|
||||
export function getNutrientDetail(name) {
|
||||
return request.get('tool/knowledge/nutrient/' + name);
|
||||
}
|
||||
|
||||
// ==================== 打卡社区相关 ====================
|
||||
|
||||
/**
|
||||
* 获取社区内容列表
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.tab - Tab类型:recommend/latest/follow/hot
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getCommunityList(data) {
|
||||
return request.get('tool/community/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取社区内容详情
|
||||
* @param {Number} id - 内容ID
|
||||
*/
|
||||
export function getCommunityDetail(id) {
|
||||
return request.get('tool/community/detail/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布社区内容
|
||||
* @param {Object} data - 内容数据
|
||||
* @param {String} data.title - 标题
|
||||
* @param {String} data.content - 内容
|
||||
* @param {Array} data.images - 图片URL数组
|
||||
* @param {Array} data.tags - 标签数组
|
||||
* @param {Number} data.checkInRecordId - 关联的打卡记录ID(可选)
|
||||
*/
|
||||
export function publishCommunityPost(data) {
|
||||
return request.post('tool/community/publish', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 点赞/取消点赞
|
||||
* @param {Number} postId - 内容ID
|
||||
* @param {Boolean} isLike - 是否点赞:true/false
|
||||
*/
|
||||
export function toggleLike(postId, isLike) {
|
||||
return request.post('tool/community/like', { postId, isLike });
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏/取消收藏
|
||||
* @param {Number} postId - 内容ID
|
||||
* @param {Boolean} isCollect - 是否收藏:true/false
|
||||
*/
|
||||
export function toggleCollect(postId, isCollect) {
|
||||
return request.post('tool/community/collect', { postId, isCollect });
|
||||
}
|
||||
|
||||
/**
|
||||
* 发表评论
|
||||
* @param {Object} data - 评论数据
|
||||
* @param {Number} data.postId - 内容ID
|
||||
* @param {String} data.content - 评论内容
|
||||
* @param {Number} data.parentCommentId - 父评论ID(可选,用于回复)
|
||||
* @param {Number} data.replyToUserId - 回复的用户ID(可选)
|
||||
*/
|
||||
export function addComment(data) {
|
||||
return request.post('tool/community/comment', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取评论列表
|
||||
* @param {Number} postId - 内容ID
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getCommentList(postId, data) {
|
||||
return request.get('tool/community/comment/list/' + postId, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关注/取消关注用户
|
||||
* @param {Number} userId - 用户ID
|
||||
* @param {Boolean} isFollow - 是否关注:true/false
|
||||
*/
|
||||
export function toggleFollow(userId, isFollow) {
|
||||
return request.post('tool/community/follow', { userId, isFollow });
|
||||
}
|
||||
|
||||
/**
|
||||
* 分享内容
|
||||
* @param {Number} postId - 内容ID
|
||||
*/
|
||||
export function sharePost(postId) {
|
||||
return request.post('tool/community/share', { postId });
|
||||
}
|
||||
|
||||
// ==================== 积分系统相关 ====================
|
||||
|
||||
/**
|
||||
* 获取用户积分信息
|
||||
*/
|
||||
export function getUserPoints() {
|
||||
return request.get('tool/points/info');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取积分规则
|
||||
*/
|
||||
export function getPointsRules() {
|
||||
return request.get('tool/points/rules');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取积分流水
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
* @param {String} data.type - 类型:earn/consume(可选)
|
||||
*/
|
||||
export function getPointsHistory(data) {
|
||||
return request.get('tool/points/history', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取积分兑换列表
|
||||
*/
|
||||
export function getPointsExchangeList() {
|
||||
return request.get('tool/points/exchange/list');
|
||||
}
|
||||
|
||||
/**
|
||||
* 积分兑换
|
||||
* @param {Number} exchangeId - 兑换项ID
|
||||
*/
|
||||
export function exchangePoints(exchangeId) {
|
||||
return request.post('tool/points/exchange', { exchangeId });
|
||||
}
|
||||
|
||||
// ==================== 首页数据相关 ====================
|
||||
|
||||
/**
|
||||
* 获取首页数据
|
||||
*/
|
||||
export function getHomeData() {
|
||||
return request.get('tool/home/data');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推荐食谱列表
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {Number} data.limit - 数量限制
|
||||
*/
|
||||
export function getRecommendedRecipes(data) {
|
||||
return request.get('tool/home/recipes', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取推荐营养知识
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {Number} data.limit - 数量限制
|
||||
*/
|
||||
export function getRecommendedKnowledge(data) {
|
||||
return request.get('tool/home/knowledge', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户健康档案状态
|
||||
*/
|
||||
export function getUserHealthStatus() {
|
||||
return request.get('tool/home/health-status');
|
||||
}
|
||||
|
||||
// ==================== 食谱相关 ====================
|
||||
|
||||
/**
|
||||
* 获取食谱列表
|
||||
* @param {Object} data - 查询参数
|
||||
* @param {String} data.mealType - 餐次(可选)
|
||||
* @param {Number} data.page - 页码
|
||||
* @param {Number} data.limit - 每页数量
|
||||
*/
|
||||
export function getRecipeList(data) {
|
||||
return request.get('tool/recipe/list', data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取食谱详情
|
||||
* @param {Number} id - 食谱ID
|
||||
*/
|
||||
export function getRecipeDetail(id) {
|
||||
return request.get('tool/recipe/detail/' + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏/取消收藏食谱
|
||||
* @param {Number} recipeId - 食谱ID
|
||||
* @param {Boolean} isFavorite - 是否收藏:true/false
|
||||
*/
|
||||
export function toggleRecipeFavorite(recipeId, isFavorite) {
|
||||
return request.post('tool/recipe/favorite', { recipeId, isFavorite });
|
||||
}
|
||||
|
||||
// ==================== 文件上传相关 ====================
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @param {String} filePath - 图片临时路径
|
||||
* @param {String} type - 上传类型:checkin/community/avatar
|
||||
*/
|
||||
export function uploadImage(filePath, type = 'checkin') {
|
||||
return new Promise((resolve, reject) => {
|
||||
const token = store.state.app.token || '';
|
||||
const header = {};
|
||||
if (token) {
|
||||
header[TOKENNAME] = token;
|
||||
}
|
||||
|
||||
uni.uploadFile({
|
||||
url: HTTP_REQUEST_URL + '/api/front/tool/upload/image',
|
||||
filePath: filePath,
|
||||
name: 'file',
|
||||
formData: {
|
||||
type: type
|
||||
},
|
||||
header: header,
|
||||
success: (res) => {
|
||||
try {
|
||||
const data = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
|
||||
if (data.code === 200) {
|
||||
resolve(data.data);
|
||||
} else {
|
||||
reject(data.message || '上传失败');
|
||||
}
|
||||
} catch (e) {
|
||||
reject('解析响应失败');
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject('上传失败:' + (err.errMsg || '网络错误'));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传语音
|
||||
* @param {String} filePath - 语音临时路径
|
||||
*/
|
||||
export function uploadVoice(filePath) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const token = store.state.app.token || '';
|
||||
const header = {};
|
||||
if (token) {
|
||||
header[TOKENNAME] = token;
|
||||
}
|
||||
|
||||
uni.uploadFile({
|
||||
url: HTTP_REQUEST_URL + '/api/front/tool/upload/voice',
|
||||
filePath: filePath,
|
||||
name: 'file',
|
||||
header: header,
|
||||
success: (res) => {
|
||||
try {
|
||||
const data = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
|
||||
if (data.code === 200) {
|
||||
resolve(data.data);
|
||||
} else {
|
||||
reject(data.message || '上传失败');
|
||||
}
|
||||
} catch (e) {
|
||||
reject('解析响应失败');
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject('上传失败:' + (err.errMsg || '网络错误'));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
483
msh_single_uniapp/api/user.js
Normal file
483
msh_single_uniapp/api/user.js
Normal file
@@ -0,0 +1,483 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: CRMEB Team <admin@crmeb.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
import request from "@/utils/request.js";
|
||||
import Cache from "@/utils/cache.js"
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*
|
||||
*/
|
||||
export function getUserInfo(){
|
||||
return request.get('user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置用户分享
|
||||
*
|
||||
*/
|
||||
export function userShare(){
|
||||
return request.post('user/share');
|
||||
}
|
||||
|
||||
/**
|
||||
* h5用户登录
|
||||
* @param data object 用户账号密码
|
||||
*/
|
||||
export function loginH5(data) {
|
||||
return request.post("login", data, { noAuth : true });
|
||||
}
|
||||
|
||||
/**
|
||||
* h5用户手机号登录
|
||||
* @param data object 用户手机号 也只能
|
||||
*/
|
||||
export function loginMobile(data) {
|
||||
return request.post("login/mobile", data, { noAuth : true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码key
|
||||
*/
|
||||
export function getCodeApi() {
|
||||
return request.get("verify_code", {}, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* h5用户发送验证码
|
||||
* @param data object 用户手机号
|
||||
*/
|
||||
export function registerVerify(phone){
|
||||
return request.post('sendCode', { phone: phone },{noAuth:true},1)
|
||||
}
|
||||
|
||||
/**
|
||||
* h5用户手机号注册
|
||||
* @param data object 用户手机号 验证码 密码
|
||||
*/
|
||||
export function register(data) {
|
||||
return request.post("register", data, { noAuth : true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户手机号修改密码
|
||||
* @param data object 用户手机号 验证码 密码
|
||||
*/
|
||||
export function registerReset(data) {
|
||||
return request.post("register/reset", data, { noAuth: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户中心菜单
|
||||
*
|
||||
*/
|
||||
export function getMenuList() {
|
||||
return request.get("menu/user");
|
||||
}
|
||||
|
||||
/*
|
||||
* 签到用户信息
|
||||
* */
|
||||
export function postSignUser(sign) {
|
||||
return request.post("user/sign/user", sign);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签到配置
|
||||
*
|
||||
*/
|
||||
export function getSignConfig(){
|
||||
return request.get('user/sign/config')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签到列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getSignList(data){
|
||||
return request.get('user/sign/list',data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户签到
|
||||
*/
|
||||
export function setSignIntegral(){
|
||||
return request.get('user/sign/integral')
|
||||
}
|
||||
|
||||
/**
|
||||
* 签到列表(年月)
|
||||
* @param object data
|
||||
*
|
||||
*/
|
||||
export function getSignMonthList(data){
|
||||
return request.get('user/sign/month',data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动状态
|
||||
*
|
||||
*/
|
||||
export function userActivity(){
|
||||
return request.get('user/activity');
|
||||
}
|
||||
|
||||
/*
|
||||
* 余额明细(types|2=全部,1=支出,2=收入)
|
||||
* */
|
||||
export function getCommissionInfo(data) {
|
||||
return request.get("spread/commission/detail", data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 提现记录 getCountApi
|
||||
* */
|
||||
export function getRecordApi(q) {
|
||||
return request.get("extract/record", q);
|
||||
}
|
||||
|
||||
/*
|
||||
* 提现总金额
|
||||
* */
|
||||
export function getCountApi() {
|
||||
return request.get("extract/totalMoney");
|
||||
}
|
||||
|
||||
/*
|
||||
* 积分记录
|
||||
* */
|
||||
export function getIntegralList(q) {
|
||||
return request.get("integral/list", q);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分销海报图片
|
||||
*
|
||||
*/
|
||||
export function spreadBanner(data){
|
||||
return request.get('user/spread/banner',data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 获取推广用户一级和二级
|
||||
* @param object data
|
||||
*/
|
||||
export function spreadPeople(data){
|
||||
return request.get('spread/people',data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 推广佣金/提现总和
|
||||
* @param int type
|
||||
*/
|
||||
export function spreadCount(type){
|
||||
return request.get('spread/count/'+type);
|
||||
}
|
||||
|
||||
/*
|
||||
* 推广数据 当前佣金 提现总金额
|
||||
* */
|
||||
export function getSpreadInfo() {
|
||||
return request.get("commission");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 推广订单
|
||||
* @param object data
|
||||
*/
|
||||
export function spreadOrder(data){
|
||||
return request.get('spread/order',data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 获取推广人排行
|
||||
* */
|
||||
export function getRankList(q) {
|
||||
return request.get("rank", q);
|
||||
}
|
||||
|
||||
/*
|
||||
* 获取佣金排名
|
||||
* */
|
||||
export function getBrokerageRank(q) {
|
||||
return request.get("brokerage_rank", q);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提现申请
|
||||
* @param object data
|
||||
*/
|
||||
export function extractCash(data){
|
||||
return request.post('extract/cash',data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 提现银行/提现最低金额
|
||||
*
|
||||
*/
|
||||
export function extractBank(){
|
||||
return request.get('extract/bank');
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员等级列表
|
||||
*
|
||||
*/
|
||||
export function userLevelGrade(){
|
||||
return request.get('user/level/grade');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某个等级任务
|
||||
* @param int id 任务id
|
||||
*/
|
||||
export function userLevelTask(id){
|
||||
return request.get('user/level/task/'+id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否可以成为会员
|
||||
*
|
||||
*/
|
||||
export function userLevelDetection(){
|
||||
return request.get('user/level/detection');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 地址列表
|
||||
* @param object data
|
||||
*/
|
||||
export function getAddressList(data){
|
||||
return request.get('address/list',data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置默认地址
|
||||
* @param int id
|
||||
*/
|
||||
export function setAddressDefault(id){
|
||||
return request.post('address/default/set',{id:id})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改 添加地址
|
||||
* @param object data
|
||||
*/
|
||||
export function editAddress(data){
|
||||
return request.post('address/edit',data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除地址
|
||||
* @param int id
|
||||
*
|
||||
*/
|
||||
export function delAddress(id){
|
||||
return request.post('address/del',{id:id})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单个地址
|
||||
* @param int id
|
||||
*/
|
||||
export function getAddressDetail(id){
|
||||
return request.get('address/detail/'+id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
* @param object
|
||||
*/
|
||||
export function userEdit(data){
|
||||
return request.post('user/edit',data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 退出登录
|
||||
* */
|
||||
export function getLogout() {
|
||||
return request.get("logout");
|
||||
}
|
||||
/**
|
||||
* 小程序充值
|
||||
*
|
||||
*/
|
||||
export function rechargeRoutine(data){
|
||||
return request.post('recharge/routine',data)
|
||||
}
|
||||
/*
|
||||
* 公众号充值
|
||||
* */
|
||||
export function rechargeWechat(data) {
|
||||
return request.post("recharge/wechat", data);
|
||||
}
|
||||
|
||||
/*
|
||||
* app微信充值
|
||||
* */
|
||||
export function appWechat(data) {
|
||||
return request.post("recharge/wechat/app", data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 余额充值
|
||||
* */
|
||||
export function transferIn(data) {
|
||||
return request.post("recharge/transferIn", data,{},1);
|
||||
}
|
||||
|
||||
/*
|
||||
* 支付宝充值
|
||||
* */
|
||||
export function alipayFull(data) {
|
||||
return request.post("recharge/alipay", data,{});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取默认地址
|
||||
*
|
||||
*/
|
||||
export function getAddressDefault(){
|
||||
return request.get('address/default');
|
||||
}
|
||||
|
||||
/**
|
||||
* 充值金额选择
|
||||
*/
|
||||
export function getRechargeApi() {
|
||||
return request.get("recharge/index");
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录记录
|
||||
*/
|
||||
export function setVisit(data)
|
||||
{
|
||||
return request.post('user/set_visit', {...data}, { noAuth:true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 客服列表
|
||||
*/
|
||||
export function serviceList() {
|
||||
return request.get("user/service/lst");
|
||||
}
|
||||
/**
|
||||
* 客服详情
|
||||
*/
|
||||
export function getChatRecord(to_uid, data) {
|
||||
return request.get("user/service/record/" + to_uid, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 静默绑定推广人
|
||||
* @param {Object} puid
|
||||
*/
|
||||
export function spread(puid)
|
||||
{
|
||||
return request.get("user/bindSpread?spreadPid="+ puid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前用户在佣金排行第几名
|
||||
*
|
||||
*/
|
||||
export function brokerageRankNumber(data)
|
||||
{
|
||||
return request.get("user/brokerageRankNumber",data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员等级经验值;
|
||||
*
|
||||
*/
|
||||
export function getlevelInfo()
|
||||
{
|
||||
return request.get("user/level/grade");
|
||||
}
|
||||
|
||||
/**
|
||||
* 经验值明细;
|
||||
*
|
||||
*/
|
||||
export function getlevelExpList(data)
|
||||
{
|
||||
return request.get("user/expList",data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 经验值明细;
|
||||
*
|
||||
*/
|
||||
export function getuserDalance()
|
||||
{
|
||||
return request.get("user/balance");
|
||||
}
|
||||
|
||||
/*
|
||||
统计
|
||||
*
|
||||
*/
|
||||
export function computeUser(){
|
||||
uni.request({
|
||||
url: document.location.protocol + '//shop.crmeb.net/index.php/admin/server.upgrade_api/updatewebinfo',
|
||||
method:'POST',
|
||||
data: {
|
||||
host:window.location.host,
|
||||
https:document.location.protocol,
|
||||
version:'CRMEB-JAVA-SY-V2.0',
|
||||
ip:Cache.has('Ip') ? Cache.get('Ip') : ''
|
||||
},
|
||||
dataType:'json',
|
||||
success: (res) => {}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 账单记录;
|
||||
*
|
||||
*/
|
||||
export function getBillList(data)
|
||||
{
|
||||
return request.get("recharge/bill/record",data);
|
||||
}
|
||||
|
||||
/*
|
||||
* 积分中心详情
|
||||
* */
|
||||
export function postIntegralUser() {
|
||||
return request.get("integral/user");
|
||||
}
|
||||
|
||||
/*
|
||||
* 立即提现 冻结期、冻结佣金、可提现佣金、最低可提现金额
|
||||
* */
|
||||
export function extractUser() {
|
||||
return request.get("extract/user");
|
||||
}
|
||||
|
||||
/*
|
||||
* 推广人统计页 推广人数(一级+二级)、一级人数、二级人数
|
||||
* */
|
||||
export function spreadPeoCount() {
|
||||
return request.get("spread/people/count");
|
||||
}
|
||||
|
||||
/**
|
||||
* 版权信息
|
||||
*/
|
||||
export function copyrightApi(){
|
||||
return request.get(`copyright/info`,{},{noAuth:true});
|
||||
}
|
||||
Reference in New Issue
Block a user