From 96de8e978a60343998558253e359031d803e7cba Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Sat, 28 Dec 2024 17:13:18 +0800 Subject: [PATCH] v1.0.0 --- .../api/internal/logic/pay/paymentlogic.go | 17 ++++++--- app/user/model/userModel_gen.go | 35 ++++++++++--------- deploy/sql/user.sql | 1 + 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/app/user/cmd/api/internal/logic/pay/paymentlogic.go b/app/user/cmd/api/internal/logic/pay/paymentlogic.go index 9706d7f..dbcf8fd 100644 --- a/app/user/cmd/api/internal/logic/pay/paymentlogic.go +++ b/app/user/cmd/api/internal/logic/pay/paymentlogic.go @@ -65,14 +65,23 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, } var prepayID string var outTradeNo string - + var amount float64 + user, err := l.svcCtx.UserModel.FindOne(l.ctx, userID) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "生成订单, 获取用户信息失败: %+v", err) + } + if user.Inside == 1 { + amount = 0.01 + } else { + amount = product.SellPrice + } var createOrderErr error if req.PayMethod == "wechatpay" { outTradeNo = l.svcCtx.WechatPayService.GenerateOutTradeNo() - prepayID, createOrderErr = l.svcCtx.WechatPayService.CreateWechatOrder(l.ctx, product.SellPrice, product.Description, outTradeNo) + prepayID, createOrderErr = l.svcCtx.WechatPayService.CreateWechatOrder(l.ctx, amount, product.Description, outTradeNo) } else if req.PayMethod == "alipay" { outTradeNo = l.svcCtx.AlipayService.GenerateOutTradeNo() - prepayID, createOrderErr = l.svcCtx.AlipayService.CreateAlipayOrder(l.ctx, product.SellPrice, product.Description, outTradeNo) + prepayID, createOrderErr = l.svcCtx.AlipayService.CreateAlipayOrder(l.ctx, amount, product.Description, outTradeNo) } else if req.PayMethod == "appleiap" { outTradeNo = l.svcCtx.ApplePayService.GenerateOutTradeNo() prepayID = l.svcCtx.ApplePayService.GetIappayAppID(product.ProductEn) @@ -88,7 +97,7 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp, ProductId: product.Id, PaymentPlatform: req.PayMethod, PaymentScene: "app", - Amount: product.SellPrice, + Amount: amount, Status: "pending", } orderInsertResult, insertOrderErr := l.svcCtx.OrderModel.Insert(ctx, session, &order) diff --git a/app/user/model/userModel_gen.go b/app/user/model/userModel_gen.go index ec3d97d..2ddb76e 100644 --- a/app/user/model/userModel_gen.go +++ b/app/user/model/userModel_gen.go @@ -6,7 +6,7 @@ import ( "context" "database/sql" "fmt" - "qnc-server/deploy/script/model" + model2 "qnc-server/deploy/script/model" "strings" "time" @@ -67,6 +67,7 @@ type ( Password sql.NullString `db:"password"` Nickname string `db:"nickname"` Info string `db:"info"` + Inside int64 `db:"inside"` } ) @@ -82,11 +83,11 @@ func (m *defaultUserModel) Insert(ctx context.Context, session sqlx.Session, dat qncUserIdKey := fmt.Sprintf("%s%v", cacheQncUserIdPrefix, data.Id) qncUserMobileKey := fmt.Sprintf("%s%v", cacheQncUserMobilePrefix, data.Mobile) return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("INSERT INTO %s (%s) VALUES (?, ?, ?, ?, ?, ?, ?)", m.table, userRowsExpectAutoSet) + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, userRowsExpectAutoSet) if session != nil { - return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info) + return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside) } - return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info) + return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside) }, qncUserIdKey, qncUserMobileKey) } @@ -94,14 +95,14 @@ func (m *defaultUserModel) FindOne(ctx context.Context, id int64) (*User, error) qncUserIdKey := fmt.Sprintf("%s%v", cacheQncUserIdPrefix, id) var resp User err := m.QueryRowCtx(ctx, &resp, qncUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error { - query := fmt.Sprintf("SELECT %s FROM %s WHERE `id` = ? AND del_state = ? limit 1", userRows, m.table) + query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", userRows, m.table) return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo) }) switch err { case nil: return &resp, nil case sqlc.ErrNotFound: - return nil, model.ErrNotFound + return nil, model2.ErrNotFound default: return nil, err } @@ -111,7 +112,7 @@ func (m *defaultUserModel) FindOneByMobile(ctx context.Context, mobile string) ( qncUserMobileKey := fmt.Sprintf("%s%v", cacheQncUserMobilePrefix, mobile) var resp User err := m.QueryRowIndexCtx(ctx, &resp, qncUserMobileKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) { - query := fmt.Sprintf("SELECT %s FROM %s WHERE `mobile` = ? AND del_state = ? limit 1", userRows, m.table) + query := fmt.Sprintf("select %s from %s where `mobile` = ? and del_state = ? limit 1", userRows, m.table) if err := conn.QueryRowCtx(ctx, &resp, query, mobile, globalkey.DelStateNo); err != nil { return nil, err } @@ -121,7 +122,7 @@ func (m *defaultUserModel) FindOneByMobile(ctx context.Context, mobile string) ( case nil: return &resp, nil case sqlc.ErrNotFound: - return nil, model.ErrNotFound + return nil, model2.ErrNotFound default: return nil, err } @@ -135,11 +136,11 @@ func (m *defaultUserModel) Update(ctx context.Context, session sqlx.Session, new qncUserIdKey := fmt.Sprintf("%s%v", cacheQncUserIdPrefix, data.Id) qncUserMobileKey := fmt.Sprintf("%s%v", cacheQncUserMobilePrefix, data.Mobile) return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("UPDATE %s SET %s WHERE `id` = ?", m.table, userRowsWithPlaceHolder) + query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, userRowsWithPlaceHolder) if session != nil { - return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Id) + return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id) } - return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Id) + return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id) }, qncUserIdKey, qncUserMobileKey) } @@ -158,11 +159,11 @@ func (m *defaultUserModel) UpdateWithVersion(ctx context.Context, session sqlx.S qncUserIdKey := fmt.Sprintf("%s%v", cacheQncUserIdPrefix, data.Id) qncUserMobileKey := fmt.Sprintf("%s%v", cacheQncUserMobilePrefix, data.Mobile) sqlResult, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("UPDATE %s SET %s WHERE `id` = ? AND version = ? ", m.table, userRowsWithPlaceHolder) + query := fmt.Sprintf("update %s set %s where `id` = ? and version = ? ", m.table, userRowsWithPlaceHolder) if session != nil { - return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Id, oldVersion) + return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id, oldVersion) } - return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Id, oldVersion) + return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id, oldVersion) }, qncUserIdKey, qncUserMobileKey) if err != nil { return err @@ -172,7 +173,7 @@ func (m *defaultUserModel) UpdateWithVersion(ctx context.Context, session sqlx.S return err } if updateCount == 0 { - return model.ErrNoRowsUpdate + return model2.ErrNoRowsUpdate } return nil @@ -389,7 +390,7 @@ func (m *defaultUserModel) Delete(ctx context.Context, session sqlx.Session, id qncUserIdKey := fmt.Sprintf("%s%v", cacheQncUserIdPrefix, id) qncUserMobileKey := fmt.Sprintf("%s%v", cacheQncUserMobilePrefix, data.Mobile) _, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("DELETE FROM %s WHERE `id` = ?", m.table) + query := fmt.Sprintf("delete from %s where `id` = ?", m.table) if session != nil { return session.ExecCtx(ctx, query, id) } @@ -401,7 +402,7 @@ func (m *defaultUserModel) formatPrimary(primary interface{}) string { return fmt.Sprintf("%s%v", cacheQncUserIdPrefix, primary) } func (m *defaultUserModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary interface{}) error { - query := fmt.Sprintf("SELECT %s FROM %s WHERE `id` = ? AND del_state = ? limit 1", userRows, m.table) + query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", userRows, m.table) return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo) } diff --git a/deploy/sql/user.sql b/deploy/sql/user.sql index 5f9aed8..b76d086 100644 --- a/deploy/sql/user.sql +++ b/deploy/sql/user.sql @@ -16,6 +16,7 @@ CREATE TABLE `user` ( `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', `info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '', + `inside` tinyint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `unique_mobile` (`mobile`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';