Skip to content

Commit

Permalink
fix: add admin role api
Browse files Browse the repository at this point in the history
  • Loading branch information
huanghanzhilian committed Jan 12, 2024
1 parent ad9aba1 commit 750f5a7
Show file tree
Hide file tree
Showing 15 changed files with 122 additions and 59 deletions.
4 changes: 2 additions & 2 deletions app/(main)/admin/(dashboard-layout)/orders/page.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use client'

import { useGetOrdersQuery } from '@/store/services'
import { useGetOrdersListQuery } from '@/store/services'

import {
Pagination,
Expand All @@ -24,7 +24,7 @@ const OrdersHome = () => {
const changeRoute = useChangeRoute()

//? Get Orders Query
const { data, isSuccess, isFetching, error, isError, refetch } = useGetOrdersQuery({
const { data, isSuccess, isFetching, error, isError, refetch } = useGetOrdersListQuery({
page,
pageSize: 5,
})
Expand Down
4 changes: 2 additions & 2 deletions app/(main)/admin/(dashboard-layout)/reviews/page.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use client'

import { useGetReviewsQuery } from '@/store/services'
import { useGetReviewsListQuery } from '@/store/services'

import {
Pagination,
Expand All @@ -23,7 +23,7 @@ const ReviewsPage = () => {
const changeRoute = useChangeRoute()

//? Get Review Data
const { data, isError, error, isFetching, refetch, isSuccess } = useGetReviewsQuery({
const { data, isError, error, isFetching, refetch, isSuccess } = useGetReviewsListQuery({
page,
})

Expand Down
23 changes: 23 additions & 0 deletions app/api/order/list/route.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { setJson, apiHandler } from '@/helpers/api'
import { getQuery, orderRepo } from '@/helpers'

const getOrders = apiHandler(
async req => {
const query = getQuery(req)
const page = query.page ? +query.page : 1
const page_size = query.page_size ? +query.page_size : 10
const result = await orderRepo.getAll({
page,
page_size,
})
return setJson({
data: result,
})
},
{
isJwt: true,
identity: 'admin',
}
)

export const GET = getOrders
15 changes: 7 additions & 8 deletions app/api/order/route.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import joi from 'joi'

import { setJson, apiHandler } from '@/helpers/api'
import { getQuery, orderRepo } from '@/helpers'

Expand All @@ -9,13 +8,13 @@ const getOrders = apiHandler(
const page = query.page ? +query.page : 1
const page_size = query.page_size ? +query.page_size : 10
const userId = req.headers.get('userId')
const role = req.headers.get('userRole')
const result = await orderRepo.getAll({
userId,
role,
page,
page_size,
})
const result = await orderRepo.getAll(
{
page,
page_size,
},
{ user: userId }
)
return setJson({
data: result,
})
Expand Down
26 changes: 26 additions & 0 deletions app/api/reviews/list/route.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { getQuery, reviewRepo } from '@/helpers'
import { apiHandler, setJson } from '@/helpers/api'

const getAll = apiHandler(
async req => {
const query = getQuery(req)

const page = query.page ? +query.page : 1
const page_size = query.page_size ? +query.page_size : 10

const result = await reviewRepo.getAll({
page,
page_size,
})

return setJson({
data: result,
})
},
{
isJwt: true,
identity: 'admin',
}
)

export const GET = getAll
24 changes: 7 additions & 17 deletions app/api/reviews/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,21 @@ import { getQuery, reviewRepo } from '@/helpers'

const getAll = apiHandler(
async req => {
const userRoot = req.headers.get('userRoot')
const userId = req.headers.get('userId')
const query = getQuery(req)

const page = query.page ? +query.page : 1
const page_size = query.page_size ? +query.page_size : 10

let result

if (userRoot === 'true') {
result = await reviewRepo.getAll({
const result = await reviewRepo.getAll(
{
page,
page_size,
})
} else {
result = await reviewRepo.getAll(
{
page,
page_size,
},
{
user: userId,
}
)
}
},
{
user: userId,
}
)

return setJson({
data: result,
Expand Down
6 changes: 3 additions & 3 deletions components/Search.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ export default function Search() {

//? Render(s)
return (
<>
<div className="flex flex-row flex-grow max-w-3xl">
<div
onClick={searchModalHanlders.open}
className="flex flex-row flex-grow max-w-3xl rounded-md bg-zinc-200/80"
className="flex flex-row flex-grow rounded-md bg-zinc-200/80"
>
<button className="flex-grow py-1 px-3 text-left bg-transparent outline-none cursor-pointer text-gray-400 focus:border-none">
善假于物,用好搜索...
Expand All @@ -20,6 +20,6 @@ export default function Search() {
</button>
</div>
<SearchModal isShow={isShowSearchModal} onClose={searchModalHanlders.close} />
</>
</div>
)
}
2 changes: 1 addition & 1 deletion components/cart/CartDropdown.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export default function CartDropdown() {
<>
{/* Header */}
<div className="flex items-center justify-between px-3 py-4">
<span className="">{totalItems} 个商品</span>
<span className="">{totalItems} 件商品</span>
<ArrowLink path="/checkout/cart">查看购物车</ArrowLink>
</div>
{/* Itmes */}
Expand Down
4 changes: 2 additions & 2 deletions components/modals/SearchModal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const SearchModal = props => {
<Modal.Body>
<div className="flex flex-row my-3 rounded-md bg-zinc-200/80">
<div className="p-2">
<Icons.Search className="icon " />
<Icons.Search className="icon text-gray-500" />
</div>
<input
type="text"
Expand All @@ -75,7 +75,7 @@ const SearchModal = props => {
onChange={handleChange}
/>
<button type="button" className="p-2" onClick={handleRemoveSearch}>
<Icons.Close className="icon" />
<Icons.Close className="icon text-gray-500" />
</button>
</div>
<div className="overflow-y-auto lg:max-h-[500px]">
Expand Down
2 changes: 1 addition & 1 deletion components/product/ProductCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const ProductCard = props => {
}`}
>
<SpecialSell discount={product.discount} inStock={product.inStock} />
<div className="flex items-center gap-4 sm:flex-col">
<div className="flex items-center gap-4 sm:flex-col sm:space-x-4">
<div className="sm:flex sm:p-1 ">
<ResponsiveImage
dimensions="h-[28vw] w-[26vw] sm:w-56 sm:h-60 sm:mb-8 xl:w-44 xl:h-48"
Expand Down
2 changes: 1 addition & 1 deletion components/skeleton/ProductSkeleton.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default function ProductSkeleton() {
return (
<div className="sm:grid sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
<Skeleton count={10}>
<Skeleton.Items className="pt-2 pb-3 border-b border-gray-100 sm:h-[540px] xl:h-[470px] sm:px-3 flex items-center gap-4 sm:flex-col">
<Skeleton.Items className="pt-2 pb-3 border-b border-gray-100 sm:h-[540px] xl:h-[470px] sm:px-3 flex items-center gap-4 sm:flex-col sm:space-x-4">
<Skeleton.Item
height="h-[216px]"
width="w-[26vw] sm:w-56"
Expand Down
23 changes: 7 additions & 16 deletions helpers/db-repo/order-repo.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,15 @@
import { Product, Order } from '@/models'
import { db } from '..'

const getAll = async ({ userId, role, page, page_size }) => {
const getAll = async ({ page, page_size }, filter) => {
await db.connect()
let orders
let ordersLength
if (role !== 'admin') {
orders = await Order.find({ user: userId })
.populate('user', '-password')
.skip((page - 1) * page_size)
.limit(page_size)
ordersLength = await Order.countDocuments({ user: userId })
} else {
orders = await Order.find()
.populate('user', '-password')
.skip((page - 1) * page_size)
.limit(page_size)
ordersLength = await Order.countDocuments()
}
const orders = await Order.find(filter)
.populate('user', '-password')
.skip((page - 1) * page_size)
.limit(page_size)
const ordersLength = await Order.countDocuments(filter)
await db.disconnect()

return {
orders,
ordersLength,
Expand Down
12 changes: 10 additions & 2 deletions store/services/order.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import apiSlice from './api'

export const orderApiSlice = apiSlice.injectEndpoints({
endpoints: builder => ({
getOrders: builder.query({
getOrdersList: builder.query({
query: ({ page = 1, pageSize = 10 }) => ({
url: `/api/order?page=${page}&page_size=${pageSize}`,
url: `/api/order/list?page=${page}&page_size=${pageSize}`,
method: 'GET',
}),
providesTags: (result, error, arg) =>
Expand All @@ -19,6 +19,13 @@ export const orderApiSlice = apiSlice.injectEndpoints({
: ['Order'],
}),

getOrders: builder.query({
query: ({ page = 1, pageSize = 10 }) => ({
url: `/api/order?page=${page}&page_size=${pageSize}`,
method: 'GET',
}),
}),

getSingleOrder: builder.query({
query: ({ id }) => ({
url: `/api/order/${id}`,
Expand Down Expand Up @@ -52,4 +59,5 @@ export const {
useGetSingleOrderQuery,
useUpdateOrderMutation,
useCreateOrderMutation,
useGetOrdersListQuery,
} = orderApiSlice
12 changes: 10 additions & 2 deletions store/services/review.service.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import apiSlice from './api'
export const reviewApiSlice = apiSlice.injectEndpoints({
endpoints: builder => ({
getReviews: builder.query({
getReviewsList: builder.query({
query: ({ page }) => ({
url: `/api/reviews?page=${page}`,
url: `/api/reviews/list?page=${page}`,
method: 'GET',
}),
providesTags: result =>
Expand All @@ -18,6 +18,13 @@ export const reviewApiSlice = apiSlice.injectEndpoints({
: ['Review'],
}),

getReviews: builder.query({
query: ({ page }) => ({
url: `/api/reviews?page=${page}`,
method: 'GET',
}),
}),

createReview: builder.mutation({
query: ({ body }) => ({
url: `/api/reviews`,
Expand Down Expand Up @@ -78,4 +85,5 @@ export const {
useGetProductReviewsQuery,
useEditReviewMutation,
useCreateReviewMutation,
useGetReviewsListQuery,
} = reviewApiSlice
22 changes: 20 additions & 2 deletions store/services/user.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,16 @@ export const userApiSlice = apiSlice.injectEndpoints({
method: 'POST',
body,
}),
invalidatesTags: ['User'],
invalidatesTags: [
'User',
'Review',
'Details',
'Order',
'Product',
'Category',
'Slider',
'Banner',
],
}),

getUserInfo: builder.query({
Expand All @@ -25,7 +34,16 @@ export const userApiSlice = apiSlice.injectEndpoints({
method: 'POST',
body,
}),
invalidatesTags: ['User'],
invalidatesTags: [
'User',
'Review',
'Details',
'Order',
'Product',
'Category',
'Slider',
'Banner',
],
}),
getUsers: builder.query({
query: ({ page }) => ({
Expand Down

0 comments on commit 750f5a7

Please sign in to comment.