数据模型使用指针类型字段以避免空值自动更新的问题

This commit is contained in:
2025-05-26 10:57:39 +08:00
parent 1e7b5777a2
commit c08d625975
43 changed files with 457 additions and 397 deletions

View File

@@ -4,6 +4,7 @@ import (
"encoding/base64"
"errors"
"log/slog"
"platform/pkg/u"
auth2 "platform/web/auth"
client2 "platform/web/domains/client"
m "platform/web/models"
@@ -328,8 +329,8 @@ func Introspect(c *fiber.Ctx) error {
if profile.Phone != "" {
profile.Phone = maskPhone(profile.Phone)
}
if profile.IDNo != "" {
profile.IDNo = maskIdNo(profile.IDNo)
if profile.IDNo != nil && *profile.IDNo != "" {
profile.IDNo = u.P(maskIdNo(*profile.IDNo))
}
return c.JSON(IntrospectResp{*profile})
}

View File

@@ -122,7 +122,7 @@ func CreateChannel(c *fiber.Ctx) error {
if err != nil {
return err
}
if user.IDToken == "" {
if user.IDToken == nil || *user.IDToken == "" {
return fiber.NewError(fiber.StatusForbidden, "账号未实名")
}
@@ -178,8 +178,8 @@ func CreateChannel(c *fiber.Ctx) error {
Port: channel.ProxyPort,
}
if req.AuthType == s.ChannelAuthTypePass {
resp[i].Username = &channel.Username
resp[i].Password = &channel.Password
resp[i].Username = channel.Username
resp[i].Password = channel.Password
}
}
return c.JSON(resp)

View File

@@ -1,6 +1,7 @@
package handlers
import (
"platform/pkg/u"
"platform/web/auth"
edge2 "platform/web/domains/edge"
proxy2 "platform/web/domains/proxy"
@@ -57,7 +58,7 @@ func OnlineEdge(c *fiber.Ctx) (err error) {
Isp: int32(req.ISP),
Prov: req.Prov,
City: req.City,
ProxyID: fwd.ID,
ProxyID: &fwd.ID,
Type: int32(edge2.TypeSelfHosted),
Status: 1,
}
@@ -138,7 +139,7 @@ func AllEdgesAvailable(c *fiber.Ctx) (err error) {
for i, info := range infos {
edges[i] = AllEdgesAvailableRespItem{
Ip: info.Host,
Port: info.ProxyPort,
Port: u.Z(info.ProxyPort),
Isp: edge2.ISPToStr(edge2.ISP(info.Isp)),
Prov: info.Prov,
City: info.City,

View File

@@ -47,7 +47,7 @@ func Identify(c *fiber.Ctx) error {
if err != nil {
return err
}
if user.IDToken != "" {
if user.IDToken != nil && *user.IDToken != "" {
// 用户已实名认证
return c.JSON(IdentifyRes{
Identified: true,
@@ -170,9 +170,9 @@ func IdentifyCallback(c *fiber.Ctx) error {
).
Updates(m.User{
IDType: info.Type,
IDNo: info.IdNo,
IDToken: info.Token,
Name: info.Name,
IDNo: &info.IdNo,
IDToken: &info.Token,
Name: &info.Name,
})
if err != nil {
return err

View File

@@ -7,6 +7,7 @@ import (
"log/slog"
"platform/pkg/u"
auth2 "platform/web/auth"
"platform/web/core"
proxy2 "platform/web/domains/proxy"
g "platform/web/globals"
"platform/web/globals/orm"
@@ -65,7 +66,7 @@ func OnlineProxy(c *fiber.Ctx) (err error) {
Version: int32(req.Version),
Type: int32(proxy2.TypeSelfHosted),
Host: ip.String(),
Secret: secret,
Secret: &secret,
Status: 1,
}
err = q.Proxy.
@@ -90,12 +91,15 @@ func OnlineProxy(c *fiber.Ctx) (err error) {
var permits []ProxyPermit
for _, channel := range channels {
if channel.EdgeID == nil {
return core.NewBizErr("通道未分配边缘节点")
}
permit := ProxyPermit{
Id: channel.EdgeID,
Id: *channel.EdgeID,
Expire: time.Time(channel.Expiration),
Whitelists: u.P(strings.Split(channel.Whitelists, ",")),
Username: &channel.Username,
Password: &channel.Password,
Whitelists: u.P(strings.Split(u.Z(channel.Whitelists), ",")),
Username: channel.Username,
Password: channel.Password,
}
permits = append(permits, permit)
}

View File

@@ -39,10 +39,10 @@ func UpdateUser(c *fiber.Ctx) error {
_, err = q.User.
Where(q.User.ID.Eq(authCtx.Payload.Id)).
Updates(m.User{
Username: req.Username,
Email: req.Email,
ContactQQ: req.ContactQQ,
ContactWechat: req.ContactWechat,
Username: &req.Username,
Email: &req.Email,
ContactQQ: &req.ContactQQ,
ContactWechat: &req.ContactWechat,
})
if err != nil {
return err
@@ -78,8 +78,8 @@ func UpdateAccount(c *fiber.Ctx) error {
_, err = q.User.
Where(q.User.ID.Eq(authCtx.Payload.Id)).
Updates(m.User{
Username: req.Username,
Password: req.Password,
Username: &req.Username,
Password: &req.Password,
})
if err != nil {
return err

View File

@@ -98,7 +98,7 @@ func CreateWhitelist(c *fiber.Ctx) error {
err = q.Whitelist.Create(&m.Whitelist{
UserID: authContext.Payload.Id,
Host: req.Host,
Remark: req.Remark,
Remark: &req.Remark,
})
return nil
}
@@ -134,7 +134,7 @@ func UpdateWhitelist(c *fiber.Ctx) error {
Updates(&m.Whitelist{
ID: req.ID,
Host: req.Host,
Remark: req.Remark,
Remark: &req.Remark,
})
if err != nil {
return err