mirror of
https://github.com/yangjian102621/geekai.git
synced 2026-04-11 21:54:26 +08:00
增加订单超时系统配置,WebFooter 增加公安备案号
This commit is contained in:
@@ -67,8 +67,7 @@ type BaseConfig struct {
|
||||
RegisterWays []string `json:"register_ways,omitempty"` // 注册方式:支持手机(mobile),邮箱注册(email),账号密码注册
|
||||
EnabledRegister bool `json:"enabled_register,omitempty"` // 是否开放注册
|
||||
|
||||
OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间
|
||||
VipInfoText string `json:"vip_info_text,omitempty"` // 会员页面充值说明
|
||||
OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间,单位:分钟
|
||||
|
||||
InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值
|
||||
DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力
|
||||
@@ -89,10 +88,10 @@ type BaseConfig struct {
|
||||
SdNegPrompt string `json:"sd_neg_prompt"` // SD 默认反向提示词
|
||||
MjMode string `json:"mj_mode"` // midjourney 默认的API模式,relax, fast, turbo
|
||||
|
||||
IndexNavs []int `json:"index_navs"` // 首页显示的导航菜单
|
||||
Copyright string `json:"copyright"` // 版权信息
|
||||
DefaultNickname string `json:"default_nickname"` // 默认昵称
|
||||
ICP string `json:"icp"` // ICP 备案号
|
||||
IndexNavs []int `json:"index_navs"` // 首页显示的导航菜单
|
||||
Copyright string `json:"copyright"` // 版权信息
|
||||
ICP string `json:"icp"` // ICP 备案号
|
||||
GaBeian string `json:"ga_beian"` // 公安备案号
|
||||
|
||||
EmailWhiteList []string `json:"email_white_list"` // 邮箱白名单列表
|
||||
AssistantModelId int `json:"assistant_model_id"` // 用来做提示词,翻译的AI模型 id
|
||||
|
||||
@@ -259,25 +259,28 @@ func (h *AdminJimengHandler) UpdateConfig(c *gin.Context) {
|
||||
// 保存配置
|
||||
tx := h.DB.Begin()
|
||||
value := utils.JsonEncode(&req)
|
||||
config := model.Config{Name: types.ConfigKeyJimeng, Value: value}
|
||||
var exist model.Config
|
||||
tx.Where("name", types.ConfigKeyJimeng).First(&exist)
|
||||
|
||||
err := tx.FirstOrCreate(&config).Error
|
||||
if err != nil {
|
||||
resp.ERROR(c, "保存配置失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if config.Id > 0 {
|
||||
config.Value = value
|
||||
err = tx.Updates(&config).Error
|
||||
if exist.Id > 0 {
|
||||
exist.Value = value
|
||||
err := tx.Updates(&exist).Error
|
||||
if err != nil {
|
||||
resp.ERROR(c, "更新配置失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
} else {
|
||||
exist.Name = types.ConfigKeyJimeng
|
||||
exist.Value = value
|
||||
err := tx.Create(&exist).Error
|
||||
if err != nil {
|
||||
resp.ERROR(c, "创建配置失败: "+err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 更新服务中的客户端配置
|
||||
err = h.jimengClient.UpdateConfig(req)
|
||||
err := h.jimengClient.UpdateConfig(req)
|
||||
if err != nil {
|
||||
resp.ERROR(c, err.Error())
|
||||
tx.Rollback()
|
||||
|
||||
@@ -129,8 +129,8 @@ func (h *OrderHandler) Clear(c *gin.Context) {
|
||||
}
|
||||
deleteIds := make([]uint, 0)
|
||||
for _, order := range orders {
|
||||
// 只删除 5 分钟内的未支付订单
|
||||
if time.Now().After(order.CreatedAt.Add(time.Minute * 5)) {
|
||||
// 只删除超时的未支付订单
|
||||
if time.Now().After(order.CreatedAt.Add(time.Minute * time.Duration(h.App.SysConfig.Base.OrderPayTimeout))) {
|
||||
deleteIds = append(deleteIds, order.Id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,30 @@
|
||||
<template>
|
||||
<div class="foot-container">
|
||||
<div class="footer">
|
||||
<div class="footer text-base">
|
||||
<div>
|
||||
<a :href="gitURL" target="_blank">
|
||||
{{ title }} -
|
||||
{{ version }}
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<div class="flex justify-center text-sm">
|
||||
<span class="mr-2">{{ copyRight }}</span>
|
||||
<a href="https://beian.miit.gov.cn" target="_blank">{{ icp }}</a>
|
||||
</div>
|
||||
<div class="flex justify-center text-sm">
|
||||
<a href="https://beian.miit.gov.cn" target="_blank">ICP备案:{{ icp }}</a>
|
||||
<span>|</span>
|
||||
<img
|
||||
src="https://inews.gtimg.com/newsapp_bt/0/0613150938895_706/0"
|
||||
class="w-4 h-4 mx-1"
|
||||
alt="beian"
|
||||
/>
|
||||
<a
|
||||
:href="`http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=${getCodeNum(
|
||||
gaBeian
|
||||
)}`"
|
||||
target="_blank"
|
||||
>{{ gaBeian }}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -24,6 +39,7 @@ const version = ref(import.meta.env.VITE_VERSION)
|
||||
const gitURL = ref(import.meta.env.VITE_GITHUB_URL)
|
||||
const copyRight = ref('')
|
||||
const icp = ref('')
|
||||
const gaBeian = ref('')
|
||||
const license = ref({})
|
||||
const props = defineProps({
|
||||
textColor: {
|
||||
@@ -42,6 +58,7 @@ getSystemInfo()
|
||||
new Date().getFullYear() +
|
||||
' All rights reserved'
|
||||
icp.value = res.data.icp
|
||||
gaBeian.value = res.data.ga_beian
|
||||
})
|
||||
.catch((e) => {
|
||||
showMessageError('获取系统配置失败:' + e.message)
|
||||
@@ -54,6 +71,16 @@ getLicenseInfo()
|
||||
.catch((e) => {
|
||||
showMessageError('获取 License 失败:' + e.message)
|
||||
})
|
||||
|
||||
// 获取公安备案号
|
||||
const getCodeNum = (code) => {
|
||||
// 提取数字
|
||||
const num = code.match(/\d+/)
|
||||
if (num) {
|
||||
return num[0]
|
||||
}
|
||||
return ''
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -64,7 +91,7 @@ getLicenseInfo()
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
background: var(--theme-bg);
|
||||
// background: var(--theme-bg);
|
||||
margin-top: -4px;
|
||||
|
||||
.footer {
|
||||
|
||||
@@ -33,11 +33,14 @@
|
||||
<login-dialog :show="true" @success="handleLoginSuccess" ref="loginDialogRef" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer-bar />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import FooterBar from '@/components/FooterBar.vue'
|
||||
import LoginDialog from '@/components/LoginDialog.vue'
|
||||
import { setUserToken } from '@/store/session'
|
||||
import { isMobile } from '@/utils/libs'
|
||||
|
||||
@@ -39,11 +39,14 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer-bar />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import FooterBar from '@/components/FooterBar.vue'
|
||||
import LoginDialog from '@/components/LoginDialog.vue'
|
||||
import { isMobile } from '@/utils/libs'
|
||||
import { onMounted, ref } from 'vue'
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
<div class="detail-item">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">审核结果</label>
|
||||
<div class="bg-gray-50 p-3 rounded">
|
||||
<div class="flex flex-col space-y-2">
|
||||
<div class="flex flex-col !items-start space-y-2">
|
||||
<el-tag
|
||||
type="primary"
|
||||
size="small"
|
||||
|
||||
@@ -72,14 +72,14 @@
|
||||
<el-input v-model="system['copyright']" placeholder="更改此选项需要获取 License 授权" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="默认昵称" prop="default_nickname">
|
||||
<el-input v-model="system['default_nickname']" placeholder="默认昵称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="ICP 备案号" prop="icp">
|
||||
<el-input v-model="system['icp']" placeholder="请输入 ICP 备案号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="公安备案号" prop="ga_beian">
|
||||
<el-input v-model="system['ga_beian']" placeholder="请输入公安备案号" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<template #label>
|
||||
<div class="label-title">
|
||||
@@ -165,14 +165,19 @@
|
||||
<el-input type="textarea" :rows="2" v-model="system['sd_neg_prompt']" placeholder="" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="会员充值说明" prop="vip_info_text">
|
||||
<el-form-item label="订单支付超时时间" prop="order_pay_timeout">
|
||||
<template #label>
|
||||
<div class="label-title">
|
||||
会员充值说明
|
||||
<span class="text-xs text-gray-500">(会员充值页面的充值说明文字)</span>
|
||||
订单支付超时时间
|
||||
<span class="text-xs text-gray-500">(订单支付超时时间,单位:分钟)</span>
|
||||
</div>
|
||||
</template>
|
||||
<el-input type="textarea" :rows="2" v-model="system['vip_info_text']" placeholder="" />
|
||||
<el-input-number
|
||||
:min="5"
|
||||
:max="30"
|
||||
v-model.number="system['order_pay_timeout']"
|
||||
placeholder="单位:分钟"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="MJ默认API模式" prop="mj_mode">
|
||||
|
||||
Reference in New Issue
Block a user