修复(#49): 修复清空备注时数据丢失 — RefererId 改为指针类型

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-05-26 08:35:45 -07:00
parent f7f890c990
commit 27f1203282
4 changed files with 84 additions and 45 deletions
@@ -46,13 +46,13 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
}
err = l.svcCtx.UserModel.Transaction(l.ctx, func(tx *gorm.DB) error {
if userInfo.Balance != req.Balance {
change := req.Balance - userInfo.Balance
if req.Balance != nil && userInfo.Balance != *req.Balance {
change := *req.Balance - userInfo.Balance
balanceLog := log.Balance{
Type: log.BalanceTypeAdjust,
Amount: change,
OrderNo: "",
Balance: req.Balance,
Balance: *req.Balance,
Timestamp: time.Now().UnixMilli(),
}
content, _ := balanceLog.Marshal()
@@ -66,14 +66,14 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
if err != nil {
return err
}
userInfo.Balance = req.Balance
userInfo.Balance = *req.Balance
}
if userInfo.GiftAmount != req.GiftAmount {
change := req.GiftAmount - userInfo.GiftAmount
if req.GiftAmount != nil && userInfo.GiftAmount != *req.GiftAmount {
change := *req.GiftAmount - userInfo.GiftAmount
if change != 0 {
var changeType uint16
if userInfo.GiftAmount < req.GiftAmount {
if userInfo.GiftAmount < *req.GiftAmount {
changeType = log.GiftTypeIncrease
} else {
changeType = log.GiftTypeReduce
@@ -81,7 +81,7 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
giftLog := log.Gift{
Type: changeType,
Amount: change,
Balance: req.GiftAmount,
Balance: *req.GiftAmount,
Remark: "Admin adjustment",
Timestamp: time.Now().UnixMilli(),
}
@@ -96,23 +96,27 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
if err != nil {
return err
}
userInfo.GiftAmount = req.GiftAmount
userInfo.GiftAmount = *req.GiftAmount
}
}
if req.Commission != userInfo.Commission {
if isWithdrawalScene(req.Remark) {
if req.Commission != nil && *req.Commission != userInfo.Commission {
remark := ""
if req.Remark != nil {
remark = *req.Remark
}
if isWithdrawalScene(remark) {
logWithdrawalGuard(l.Logger, userInfo.Id)
return errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "commission overwrite is blocked in withdrawal scene")
}
change := req.Commission - userInfo.Commission
change := *req.Commission - userInfo.Commission
if err = l.svcCtx.UserModel.UpdateCommission(l.ctx, userInfo.Id, change, tx); err != nil {
return err
}
if err = logicCommon.WriteCommissionLog(tx, userInfo.Id, log.CommissionTypeAdjust, change, ""); err != nil {
return err
}
userInfo.Commission = req.Commission
userInfo.Commission = *req.Commission
}
if req.Avatar != "" {
userInfo.Avatar = req.Avatar
@@ -120,8 +124,8 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
if req.ReferCode != "" {
userInfo.ReferCode = req.ReferCode
}
if req.RefererId != 0 {
userInfo.RefererId = req.RefererId
if req.RefererId != nil {
userInfo.RefererId = *req.RefererId
}
if req.Enable != nil {
userInfo.Enable = req.Enable
@@ -129,8 +133,8 @@ func (l *UpdateUserBasicInfoLogic) UpdateUserBasicInfo(req *types.UpdateUserBasi
if req.IsAdmin != nil {
userInfo.IsAdmin = req.IsAdmin
}
if req.Remark != "" {
userInfo.Remark = req.Remark
if req.Remark != nil {
userInfo.Remark = *req.Remark
}
if req.OnlyFirstPurchase != nil {
userInfo.OnlyFirstPurchase = req.OnlyFirstPurchase