Skip to content

Commit a5808c9

Browse files
YunaiVgitee-org
authored andcommitted
!259 Review代码修改
Merge pull request !259 from 疯狂的世界/dev
2 parents 17c3197 + 3a96812 commit a5808c9

File tree

16 files changed

+713
-136
lines changed

16 files changed

+713
-136
lines changed

src/api/member/config/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import request from '@/config/axios'
2+
3+
export interface ConfigVO {
4+
id: number
5+
pointTradeDeductEnable: number
6+
pointTradeDeductUnitPrice: number
7+
pointTradeDeductMaxPrice: number
8+
pointTradeGivePoint: number
9+
}
10+
11+
// 查询积分设置详情
12+
export const getConfig = async () => {
13+
return await request.get({ url: `/member/config/get` })
14+
}
15+
16+
// 新增修改积分设置
17+
export const saveConfig = async (data: ConfigVO) => {
18+
return await request.put({ url: `/member/config/save`, data })
19+
}

src/api/member/point/config/index.ts

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/api/member/signin/config/index.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import request from '@/config/axios'
22

33
export interface SignInConfigVO {
4-
id: number
5-
day: number | null
6-
point: number | null
7-
enable: boolean | null
4+
id?: number
5+
day?: number
6+
point?: number
7+
experience?: number
8+
status?: number
89
}
910

1011
// 查询积分签到规则列表

src/api/member/user/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,13 @@ export const updateUser = async (data: UserVO) => {
4141
export const updateUserLevel = async (data: any) => {
4242
return await request.put({ url: `/member/user/update-level`, data })
4343
}
44+
45+
// 修改会员用户积分
46+
export const updateUserPoint = async (data: any) => {
47+
return await request.put({ url: `/member/user/update-point`, data })
48+
}
49+
50+
// 修改会员用户余额
51+
export const updateUserBalance = async (data: any) => {
52+
return await request.put({ url: `/member/user/update-balance`, data })
53+
}

src/api/pay/wallet/index.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import request from '@/config/axios'
2+
3+
/** 用户钱包查询参数 */
4+
export interface PayWalletUserReqVO {
5+
userId: number
6+
userType: number
7+
}
8+
/** 钱包 VO */
9+
export interface WalletVO {
10+
id: number
11+
userId: number
12+
userType: number
13+
balance: number
14+
totalExpense: number
15+
totalRecharge: number
16+
freezePrice: number
17+
}
18+
19+
/** 查询用户钱包详情 */
20+
export const getUserWallet = async (params: PayWalletUserReqVO) => {
21+
return await request.get<WalletVO>({ url: `/pay/wallet/user-wallet`, params })
22+
}

src/utils/constants.ts

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,20 @@
44
* 枚举类
55
*/
66

7+
// ========== COMMON 模块 ==========
78
// 全局通用状态枚举
89
export const CommonStatusEnum = {
910
ENABLE: 0, // 开启
1011
DISABLE: 1 // 禁用
1112
}
1213

14+
// 全局用户类型枚举
15+
export const UserTypeEnum = {
16+
MEMBER: 1, // 会员
17+
ADMIN: 2 // 管理员
18+
}
19+
20+
// ========== SYSTEM 模块 ==========
1321
/**
1422
* 菜单的类型枚举
1523
*/
@@ -38,6 +46,25 @@ export const SystemDataScopeEnum = {
3846
DEPT_SELF: 5 // 仅本人数据权限
3947
}
4048

49+
/**
50+
* 用户的社交平台的类型枚举
51+
*/
52+
export const SystemUserSocialTypeEnum = {
53+
DINGTALK: {
54+
title: '钉钉',
55+
type: 20,
56+
source: 'dingtalk',
57+
img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png'
58+
},
59+
WECHAT_ENTERPRISE: {
60+
title: '企业微信',
61+
type: 30,
62+
source: 'wechat_enterprise',
63+
img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png'
64+
}
65+
}
66+
67+
// ========== INFRA 模块 ==========
4168
/**
4269
* 代码生成模板类型
4370
*/
@@ -65,24 +92,7 @@ export const InfraApiErrorLogProcessStatusEnum = {
6592
IGNORE: 2 // 已忽略
6693
}
6794

68-
/**
69-
* 用户的社交平台的类型枚举
70-
*/
71-
export const SystemUserSocialTypeEnum = {
72-
DINGTALK: {
73-
title: '钉钉',
74-
type: 20,
75-
source: 'dingtalk',
76-
img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png'
77-
},
78-
WECHAT_ENTERPRISE: {
79-
title: '企业微信',
80-
type: 30,
81-
source: 'wechat_enterprise',
82-
img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png'
83-
}
84-
}
85-
95+
// ========== PAY 模块 ==========
8696
/**
8797
* 支付渠道枚举
8898
*/
@@ -177,6 +187,7 @@ export const PayOrderStatusEnum = {
177187
}
178188
}
179189

190+
// ========== MALL - 商品模块 ==========
180191
/**
181192
* 商品 SPU 状态
182193
*/
@@ -195,6 +206,7 @@ export const ProductSpuStatusEnum = {
195206
}
196207
}
197208

209+
// ========== MALL - 营销模块 ==========
198210
/**
199211
* 优惠劵模板的有限期类型的枚举
200212
*/
@@ -273,6 +285,7 @@ export const PromotionDiscountTypeEnum = {
273285
}
274286
}
275287

288+
// ========== MALL - 交易模块 ==========
276289
/**
277290
* 分销关系绑定模式枚举
278291
*/

src/views/member/point/config/index.vue renamed to src/views/member/config/index.vue

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,32 @@
1313

1414
<el-tabs>
1515
<el-tab-pane label="积分">
16-
<el-form-item label="积分抵扣" prop="tradeDeductEnable">
17-
<el-switch v-model="formData.tradeDeductEnable" style="user-select: none" />
16+
<el-form-item label="积分抵扣" prop="pointTradeDeductEnable">
17+
<el-switch v-model="formData.pointTradeDeductEnable" style="user-select: none" />
1818
<el-text class="w-full" size="small" type="info">下单积分是否抵用订单金额</el-text>
1919
</el-form-item>
20-
<el-form-item label="积分抵扣" prop="tradeDeductUnitPrice">
20+
<el-form-item label="积分抵扣" prop="pointTradeDeductUnitPrice">
2121
<el-input-number
22-
v-model="computedTradeDeductUnitPrice"
22+
v-model="computedPointTradeDeductUnitPrice"
2323
placeholder="请输入积分抵扣金额"
2424
:precision="2"
2525
/>
2626
<el-text class="w-full" size="small" type="info">
2727
积分抵用比例(1 积分抵多少金额),单位:元
2828
</el-text>
2929
</el-form-item>
30-
<el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice">
30+
<el-form-item label="积分抵扣最大值" prop="pointTradeDeductMaxPrice">
3131
<el-input-number
32-
v-model="formData.tradeDeductMaxPrice"
32+
v-model="formData.pointTradeDeductMaxPrice"
3333
placeholder="请输入积分抵扣最大值"
3434
/>
3535
<el-text class="w-full" size="small" type="info">
3636
单次下单积分使用上限,0 不限制
3737
</el-text>
3838
</el-form-item>
39-
<el-form-item label="1 元赠送多少分" prop="tradeGivePoint">
39+
<el-form-item label="1 元赠送多少分" prop="pointTradeGivePoint">
4040
<el-input-number
41-
v-model="formData.tradeGivePoint"
41+
v-model="formData.pointTradeGivePoint"
4242
placeholder="请输入 1 元赠送多少积分"
4343
/>
4444
<el-text class="w-full" size="small" type="info">
@@ -55,9 +55,9 @@
5555
</ContentWrap>
5656
</template>
5757
<script lang="ts" setup>
58-
import * as ConfigApi from '@/api/member/point/config'
58+
import * as ConfigApi from '@/api/member/config'
5959
60-
defineOptions({ name: 'MemberPointConfig' })
60+
defineOptions({ name: 'MemberConfig' })
6161
6262
const { t } = useI18n() // 国际化
6363
const message = useMessage() // 消息弹窗
@@ -66,17 +66,17 @@ const dialogVisible = ref(false) // 弹窗的是否展示
6666
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
6767
const formData = ref({
6868
id: undefined,
69-
tradeDeductEnable: true,
70-
tradeDeductUnitPrice: 0,
71-
tradeDeductMaxPrice: 0,
72-
tradeGivePoint: 0
69+
pointTradeDeductEnable: true,
70+
pointTradeDeductUnitPrice: 0,
71+
pointTradeDeductMaxPrice: 0,
72+
pointTradeGivePoint: 0
7373
})
7474
75-
// 创建一个计算属性,用于将 tradeDeductUnitPrice 显示为带两位小数的形式
76-
const computedTradeDeductUnitPrice = computed({
77-
get: () => (formData.value.tradeDeductUnitPrice / 100).toFixed(2),
78-
set: (newValue) => {
79-
formData.value.tradeDeductUnitPrice = Math.round(newValue * 100)
75+
// 创建一个计算属性,用于将 pointTradeDeductUnitPrice 显示为带两位小数的形式
76+
const computedPointTradeDeductUnitPrice = computed({
77+
get: () => (formData.value.pointTradeDeductUnitPrice / 100).toFixed(2),
78+
set: (newValue: number) => {
79+
formData.value.pointTradeDeductUnitPrice = Math.round(newValue * 100)
8080
}
8181
})
8282

src/views/member/signin/config/SignInConfigForm.vue

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
只允许设置 1-7,默认签到 7 天为一个周期
1414
</el-text>
1515
</el-form-item>
16-
<el-form-item label="签到分数" prop="point">
17-
<el-input-number v-model="formData.point" :precision="0" />
16+
<el-form-item label="奖励积分" prop="point">
17+
<el-input-number v-model="formData.point" :min="0" :precision="0" />
18+
</el-form-item>
19+
<el-form-item label="奖励经验" prop="experience">
20+
<el-input-number v-model="formData.experience" :min="0" :precision="0" />
1821
</el-form-item>
1922
<el-form-item label="开启状态" prop="status">
2023
<el-radio-group v-model="formData.status">
@@ -46,12 +49,30 @@ const dialogVisible = ref(false) // 弹窗的是否展示
4649
const dialogTitle = ref('') // 弹窗的标题
4750
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
4851
const formType = ref('') // 表单的类型:create - 新增;update - 修改
49-
const formData = ref({
50-
id: undefined,
51-
day: undefined,
52-
point: undefined
52+
const formData = ref<SignInConfigApi.SignInConfigVO>({} as SignInConfigApi.SignInConfigVO)
53+
// 奖励校验规则
54+
const awardValidator = (rule: any, _value: any, callback: any) => {
55+
if (!formData.value.point && !formData.value.experience) {
56+
callback(new Error('奖励积分与奖励经验至少配置一个'))
57+
return
58+
}
59+
60+
// 清除另一个字段的错误提示
61+
const otherAwardField = rule?.field === 'point' ? 'experience' : 'point'
62+
formRef.value.validateField(otherAwardField, () => null)
63+
callback()
64+
}
65+
const formRules = reactive({
66+
day: [{ required: true, message: '签到天数不能空', trigger: 'blur' }],
67+
point: [
68+
{ required: true, message: '奖励积分不能空', trigger: 'blur' },
69+
{ validator: awardValidator, trigger: 'blur' }
70+
],
71+
experience: [
72+
{ required: true, message: '奖励经验不能空', trigger: 'blur' },
73+
{ validator: awardValidator, trigger: 'blur' }
74+
]
5375
})
54-
const formRules = reactive({})
5576
const formRef = ref() // 表单 Ref
5677
5778
/** 打开弹窗 */
@@ -82,14 +103,11 @@ const submitForm = async () => {
82103
// 提交请求
83104
formLoading.value = true
84105
try {
85-
const data = formData.value as unknown as SignInConfigApi.SignInConfigVO
86106
if (formType.value === 'create') {
87-
//默认新创建的自动启动
88-
data.enable = true
89-
await SignInConfigApi.createSignInConfig(data)
107+
await SignInConfigApi.createSignInConfig(formData.value)
90108
message.success(t('common.createSuccess'))
91109
} else {
92-
await SignInConfigApi.updateSignInConfig(data)
110+
await SignInConfigApi.updateSignInConfig(formData.value)
93111
message.success(t('common.updateSuccess'))
94112
}
95113
dialogVisible.value = false
@@ -105,7 +123,8 @@ const resetForm = () => {
105123
formData.value = {
106124
id: undefined,
107125
day: undefined,
108-
point: undefined,
126+
point: 0,
127+
experience: 0,
109128
status: CommonStatusEnum.ENABLE
110129
}
111130
formRef.value?.resetFields()

src/views/member/signin/config/index.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
prop="day"
2121
:formatter="(_, __, cellValue) => ['第', cellValue, '天'].join(' ')"
2222
/>
23-
<el-table-column label="获得积分" align="center" prop="point" />
23+
<el-table-column label="奖励积分" align="center" prop="point" />
24+
<el-table-column label="奖励经验" align="center" prop="experience" />
2425
<el-table-column label="状态" align="center" prop="status">
2526
<template #default="scope">
2627
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />

0 commit comments

Comments
 (0)