fix: can not change user's power in admin console

This commit is contained in:
RockYang 2024-03-25 11:40:03 +08:00
parent 3075bfb7fc
commit 49b5906bc7
8 changed files with 64 additions and 13 deletions

View File

@ -56,6 +56,13 @@ WeChatBot = false
AccessSecret = ""
Bucket = ""
Domain = "" # OSS Bucket 所绑定的域名,如 https://img.r9it.com
[OSS.AliYun]
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
AccessKey = ""
AccessSecret = ""
Bucket = "chatgpt-plus"
SubDir = ""
Domain = ""
[[MjConfigs]]
Enabled = false

View File

@ -150,8 +150,9 @@ type SystemConfig struct {
EnabledReward bool `json:"enabled_reward,omitempty"` // 启用众筹功能
PowerPrice float64 `json:"power_price,omitempty"` // 算力单价
OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间
DefaultModels []int `json:"default_models,omitempty"` // 默认开通的 AI 模型
OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间
VipInfoText string `json:"vip_info_text"` // 会员页面充值说明
DefaultModels []int `json:"default_models,omitempty"` // 默认开通的 AI 模型
MjPower int `json:"mj_power,omitempty"` // MJ 绘画消耗算力
SdPower int `json:"sd_power,omitempty"` // SD 绘画消耗算力

View File

@ -89,7 +89,7 @@ func (h *UserHandler) Save(c *gin.Context) {
resp.ERROR(c, "user not found")
return
}
var changePower = user.Power != data.Power
var oldPower = user.Power
user.Username = data.Username
user.Status = data.Status
user.Vip = data.Vip
@ -98,22 +98,28 @@ func (h *UserHandler) Save(c *gin.Context) {
user.ChatModels = utils.JsonEncode(data.ChatModels)
user.ExpiredTime = utils.Str2stamp(data.ExpiredTime)
res = h.DB.Updates(&user)
res = h.DB.Select("username", "status", "vip", "power", "chat_roles_json", "chat_models_json", "expired_time").Updates(&user)
if res.Error != nil {
resp.ERROR(c, "更新数据库失败!")
return
}
// 记录算力日志
if changePower {
if oldPower != user.Power {
mark := types.PowerAdd
amount := user.Power - oldPower
if oldPower > user.Power {
mark = types.PowerSub
amount = oldPower - user.Power
}
h.DB.Create(&model.PowerLog{
UserId: user.Id,
Username: user.Username,
Type: types.PowerGift,
Amount: user.Power,
Amount: amount,
Balance: user.Power,
Mark: types.PowerAdd,
Mark: mark,
Model: "管理员",
Remark: fmt.Sprintf("后台管理员强制修改用户算力,修改值:%d, 管理员ID%d", user.Power, h.GetLoginUserId(c)),
Remark: fmt.Sprintf("后台管理员强制修改用户算力,修改前:%d,修改后:%d, 管理员ID%d", oldPower, user.Power, h.GetLoginUserId(c)),
CreatedAt: time.Now(),
})
}

View File

@ -59,6 +59,13 @@ WeChatBot = false
AccessSecret = ""
Bucket = ""
Domain = "" # OSS Bucket 所绑定的域名,如 https://img.r9it.com
[OSS.AliYun]
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
AccessKey = ""
AccessSecret = ""
Bucket = "chatgpt-plus"
SubDir = ""
Domain = ""
[[MjConfigs]]
Enabled = false

View File

@ -31,10 +31,12 @@
<script setup>
import {useRouter} from "vue-router";
import {ref} from "vue";
import {onMounted, ref} from "vue";
import {httpGet} from "@/utils/http";
import {ElMessage} from "element-plus";
const router = useRouter();
const logo = '/images/logo.png';
const logo = ref('/images/logo.png');
const navs = ref([
{path: "/chat", icon_path: "/images/chat.png", title: "对话聊天"},
{path: "/mj", icon_path: "/images/mj.png", title: "MJ 绘画"},
@ -51,6 +53,14 @@ const changeNav = (item) => {
curPath.value = item.path
router.push(item.path)
}
onMounted(() => {
httpGet("/api/config/get?key=system").then(res => {
logo.value = res.data['logo']
}).catch(e => {
ElMessage.error("获取系统配置失败:" + e.message)
})
})
</script>
<style lang="stylus" scoped>

View File

@ -107,7 +107,7 @@ const hits = ref(0)
const regNum = ref(0)
const rate = ref(0)
const isLogin = ref(false)
const showLoginDialog = ref(true)
const showLoginDialog = ref(false)
onMounted(() => {
initData()
@ -152,6 +152,7 @@ const initData = () => {
ElMessage.error("获取系统配置失败:" + e.message)
})
}).catch(() => {
showLoginDialog.value = true
});
}
</script>

View File

@ -36,8 +36,7 @@
<div class="product-box">
<div class="info" v-if="orderPayInfoText !== ''">
<el-alert type="success" show-icon :closable="false" effect="dark">
<strong>说明:</strong> 月度会员年度会员每月赠送 {{ vipMonthPower }} 点算力赠送算力当月有效当月没有消费完的算力不结余到下个月
点卡充值的算力长期有效
<strong>说明:</strong> {{ vipInfoText }}
</el-alert>
</div>
@ -208,6 +207,7 @@ const payWays = ref({})
const amount = ref(0)
const payName = ref("支付宝")
const curPay = ref("alipay") //
const vipInfoText = ref("")
onMounted(() => {
@ -233,6 +233,7 @@ onMounted(() => {
}
vipMonthPower.value = res.data['vip_month_power']
powerPrice.value = res.data['power_price']
vipInfoText.value = res.data['vip_info_text']
}).catch(e => {
ElMessage.error("获取系统配置失败:" + e.message)
})

View File

@ -147,6 +147,24 @@
</div>
</el-form-item>
<el-form-item label="会员充值说明" prop="order_pay_timeout">
<div class="tip-input">
<el-input v-model="system['vip_info_text']" placeholder=""/>
<div class="info">
<el-tooltip
effect="dark"
content="会员充值页面的充值说明文字"
raw-content
placement="right"
>
<el-icon>
<InfoFilled/>
</el-icon>
</el-tooltip>
</div>
</div>
</el-form-item>
<el-form-item label="默认AI模型" prop="default_models">
<template #default>
<div class="tip-input">