优化积分修改时的备注写入适配多语言

This commit is contained in:
2026-07-27 12:34:34 +08:00
parent 881581a8f0
commit 778cdc01da
5 changed files with 38 additions and 38 deletions

View File

@@ -15,7 +15,7 @@ class PointsLog extends Backend
protected ?object $model = null;
protected array $withJoinTable = ['userAsset', 'admin'];
protected array|string $preExcludeFields = ['id', 'before', 'after', 'memo', 'admin_id', 'create_time'];
protected array|string $preExcludeFields = ['id', 'before', 'after', 'admin_id', 'create_time'];
protected array|string $quickSearchField = [
'userAsset.playx_user_id',
'userAsset.username',

View File

@@ -1,13 +0,0 @@
<?php
return [
'User asset' => 'User asset',
'Points adjustment' => 'Points adjustment',
'User asset not found' => 'User asset not found',
'Points adjustment must be a non-zero integer' => 'Points adjustment must be a non-zero integer',
'Insufficient available points' => 'Insufficient available points',
'Administrator added %s points' => 'Administrator added %s points',
'Administrator deducted %s points' => 'Administrator deducted %s points',
'Points log cannot be modified' => 'Points log cannot be modified',
'Points log cannot be deleted' => 'Points log cannot be deleted',
];

View File

@@ -1,13 +0,0 @@
<?php
return [
'User asset' => '用户资产',
'Points adjustment' => '调整积分',
'User asset not found' => '用户资产不存在',
'Points adjustment must be a non-zero integer' => '调整积分必须为非零整数',
'Insufficient available points' => '可用积分不足',
'Administrator added %s points' => '管理员增加积分 %s',
'Administrator deducted %s points' => '管理员扣除积分 %s',
'Points log cannot be modified' => '积分流水不允许修改',
'Points log cannot be deleted' => '积分流水不允许删除',
];

View File

@@ -37,9 +37,19 @@ class MallPointsLog extends \app\common\model\MallPointsLog
$model->before = $before;
$model->after = $after;
$pointsAbs = abs($scoreValue);
$model->memo = $scoreValue > 0
? sprintf(__('Administrator added %s points'), $pointsAbs)
: sprintf(__('Administrator deducted %s points'), $pointsAbs);
$memo = trim(strval($model->getData('memo') ?? ''));
if ($memo === '') {
$memo = $scoreValue > 0
? sprintf(__('Administrator added %s points'), $pointsAbs)
: sprintf(__('Administrator deducted %s points'), $pointsAbs);
} else {
if (function_exists('mb_substr')) {
$memo = mb_substr($memo, 0, 255);
} else {
$memo = substr($memo, 0, 255);
}
}
$model->memo = $memo;
$userAsset->available_points = $after;
$userAsset->save();

View File

@@ -92,7 +92,7 @@ interface UserAssetInfo {
}
const config = useConfig()
const { t } = useI18n()
const { t, locale } = useI18n()
const injectedBaTable = inject<baTableClass>('baTable')
if (!injectedBaTable) {
throw new Error('baTable is not provided')
@@ -132,17 +132,24 @@ const rules: Partial<Record<string, FormItemRule[]>> = reactive({
],
})
const syncMemoToForm = (scoreValue: number) => {
let memoText = ''
if (scoreValue > 0) {
memoText = t('mall.pointsLog.admin_add_memo', { value: Math.abs(scoreValue) })
} else if (scoreValue < 0) {
memoText = t('mall.pointsLog.admin_deduct_memo', { value: Math.abs(scoreValue) })
}
state.memo = memoText
if (baTable.form.items) {
baTable.form.items.memo = memoText
}
}
const changeScore = (value: number | undefined) => {
const scoreValue = value ?? 0
const availablePoints = state.userAsset.available_points ?? 0
state.after = availablePoints + scoreValue
if (scoreValue > 0) {
state.memo = t('mall.pointsLog.admin_add_memo', { value: Math.abs(scoreValue) })
} else if (scoreValue < 0) {
state.memo = t('mall.pointsLog.admin_deduct_memo', { value: Math.abs(scoreValue) })
} else {
state.memo = ''
}
syncMemoToForm(scoreValue)
}
const getUserAssetInfo = () => {
@@ -151,6 +158,9 @@ const getUserAssetInfo = () => {
state.userAsset = {}
state.after = 0
state.memo = ''
if (baTable.form.items) {
baTable.form.items.memo = ''
}
return
}
@@ -168,6 +178,12 @@ watch(
}
}
)
watch(locale, () => {
if (baTable.form.operate === 'Add') {
changeScore(baTable.form.items?.score_value as number | undefined)
}
})
</script>
<style scoped lang="scss"></style>