feat: add resident miniapp MVP

This commit is contained in:
王鹏
2026-07-07 16:38:13 +08:00
parent bb325151d6
commit 576c54ec9d
52 changed files with 17865 additions and 66 deletions

View File

@@ -0,0 +1,26 @@
const { request } = require('../utils/request')
function listAddresses() {
return request({ url: '/api/mini/addresses' })
}
function createAddress(data) {
return request({
url: '/api/mini/addresses',
method: 'POST',
data
})
}
function setDefaultAddress(id) {
return request({
url: '/api/mini/addresses/' + id + '/default',
method: 'PUT'
})
}
module.exports = {
listAddresses,
createAddress,
setDefaultAddress
}

View File

@@ -0,0 +1,48 @@
const { request } = require('../utils/request')
function calculateExpressFeeCent(packageCount) {
if (packageCount <= 0) {
throw new Error('件数必须大于0')
}
return 300 + Math.max(0, packageCount - 1) * 100
}
function createExpressOrder(data) {
return request({
url: '/api/mini/express-orders',
method: 'POST',
data
})
}
function listExpressOrders() {
return request({ url: '/api/mini/express-orders' })
}
function getExpressOrderDetail(id) {
return request({ url: '/api/mini/express-orders/' + id })
}
function cancelExpressOrder(id, reason) {
return request({
url: '/api/mini/express-orders/' + id + '/cancel',
method: 'PUT',
data: { reason }
})
}
function completeExpressOrder(id) {
return request({
url: '/api/mini/express-orders/' + id + '/complete',
method: 'PUT'
})
}
module.exports = {
calculateExpressFeeCent,
createExpressOrder,
listExpressOrders,
getExpressOrderDetail,
cancelExpressOrder,
completeExpressOrder
}

View File

@@ -0,0 +1,9 @@
const { calculateExpressFeeCent } = require('./expressApi')
describe('calculateExpressFeeCent', () => {
test('matches backend express fee rule', () => {
expect(calculateExpressFeeCent(1)).toBe(300)
expect(calculateExpressFeeCent(2)).toBe(400)
expect(calculateExpressFeeCent(4)).toBe(600)
})
})

View File

@@ -0,0 +1,41 @@
const { request } = require('../utils/request')
function listGroupBuys() {
return request({ url: '/api/mini/group-buys' })
}
function getGroupBuyDetail(id) {
return request({ url: '/api/mini/group-buys/' + id })
}
function createGroupBuyOrder(data) {
return request({
url: '/api/mini/group-buy-orders',
method: 'POST',
data
})
}
function listGroupBuyOrders() {
return request({ url: '/api/mini/group-buy-orders' })
}
function getGroupBuyOrderDetail(id) {
return request({ url: '/api/mini/group-buy-orders/' + id })
}
function cancelGroupBuyOrder(id) {
return request({
url: '/api/mini/group-buy-orders/' + id + '/cancel',
method: 'PUT'
})
}
module.exports = {
listGroupBuys,
getGroupBuyDetail,
createGroupBuyOrder,
listGroupBuyOrders,
getGroupBuyOrderDetail,
cancelGroupBuyOrder
}

View File

@@ -0,0 +1,21 @@
const { request } = require('../utils/request')
function getHomeData() {
return Promise.all([
request({ url: '/api/mini/banners' }).catch(() => []),
request({ url: '/api/mini/notices' }).catch(() => []),
request({ url: '/api/mini/products' }).catch(() => []),
request({ url: '/api/mini/group-buys' }).catch(() => []),
request({ url: '/api/mini/second-goods' }).catch(() => [])
]).then(([banners, notices, products, groupBuys, secondGoods]) => ({
banners,
notices,
products,
groupBuys,
secondGoods
}))
}
module.exports = {
getHomeData
}

View File

@@ -0,0 +1,14 @@
const { request } = require('../utils/request')
function listNotices() {
return request({ url: '/api/mini/notices' })
}
function getNoticeDetail(id) {
return request({ url: '/api/mini/notices/' + id })
}
module.exports = {
listNotices,
getNoticeDetail
}

View File

@@ -0,0 +1,22 @@
const { request } = require('../utils/request')
function listGoodsOrders() {
return request({ url: '/api/mini/goods-orders' })
}
function getGoodsOrderDetail(id) {
return request({ url: '/api/mini/goods-orders/' + id })
}
function cancelGoodsOrder(id) {
return request({
url: '/api/mini/goods-orders/' + id + '/cancel',
method: 'PUT'
})
}
module.exports = {
listGoodsOrders,
getGoodsOrderDetail,
cancelGoodsOrder
}

View File

@@ -0,0 +1,31 @@
const { request } = require('../utils/request')
function listCategories() {
return request({ url: '/api/mini/product-categories' })
}
function listProducts(categoryId) {
return request({
url: '/api/mini/products',
data: categoryId ? { categoryId } : {}
})
}
function getProductDetail(id) {
return request({ url: '/api/mini/products/' + id })
}
function createGoodsOrder(data) {
return request({
url: '/api/mini/goods-orders',
method: 'POST',
data
})
}
module.exports = {
listCategories,
listProducts,
getProductDetail,
createGoodsOrder
}

View File

@@ -0,0 +1,26 @@
const { request } = require('../utils/request')
function listSecondGoods(category) {
return request({
url: '/api/mini/second-goods',
data: category ? { category } : {}
})
}
function getSecondGoodsDetail(id) {
return request({ url: '/api/mini/second-goods/' + id })
}
function createSecondGoods(data) {
return request({
url: '/api/mini/second-goods',
method: 'POST',
data
})
}
module.exports = {
listSecondGoods,
getSecondGoodsDetail,
createSecondGoods
}