fix:
This commit is contained in:
parent
d7be9e94f1
commit
a8fdb04881
|
@ -518,7 +518,6 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
logger.Error("err:", err)
|
||||
}
|
||||
} else if notify.Attach == wxpay.WxPayUpgradeMember {
|
||||
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
|
@ -580,6 +579,25 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
} else if notify.Attach == wxpay.WxPayShareCardRetrieve {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notify.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
fmt.Println("UpgradeMember:", record.Uid)
|
||||
//var user model.User
|
||||
//err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// return
|
||||
//}
|
||||
|
||||
_, err = model.NewShareCardRetrieveQuerySet(model.DB).IDEq(record.OrderId).
|
||||
GetUpdater().SetPayState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update pay state err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
logger.Debug("微信推动支付通知")
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/status"
|
||||
"mh-server/lib/wxpay"
|
||||
"mh-server/model"
|
||||
)
|
||||
|
||||
|
@ -300,18 +303,239 @@ func ShareCardRetrieveCreate(c *gin.Context) {
|
|||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
err := req.RetrieveCreate()
|
||||
req.Uid = uc.Uid
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
if user == nil {
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
if user.MemberLevel != 2 && user.MemberLevel != 4 && user.MemberLevel != 5 {
|
||||
logger.Error("user not is member err:")
|
||||
RespJson(c, status.NotMember, nil)
|
||||
return
|
||||
}
|
||||
req.Amount = 10 // TODO
|
||||
retrieve, err := req.RetrieveCreate()
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve create err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if req.RetrieveCardType == 1 {
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
//user := model.GetUserByUid(uc.Uid)
|
||||
//if user == nil {
|
||||
// RespJson(c, status.Unauthorized, nil)
|
||||
// return
|
||||
//}
|
||||
|
||||
webPay, err := wxpay.WebPay(retrieve.OrderSn, req.Amount, user.WxOpenID, "N", wxpay.WxPayShareCardRetrieve)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: retrieve.OrderSn, OrderId: retrieve.ID, OrderType: 1}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"web_pay": webPay,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
func ShareCardRetrieveList(c *gin.Context) {
|
||||
req := model.ShareCardRetrieveListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("parameter err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.Uid = uc.Uid
|
||||
list, totalPage, err := req.List()
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve list err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"list": list,
|
||||
"cur_page": req.Page,
|
||||
"total_page": totalPage,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
func ShareCardRetrieveDetail(c *gin.Context) {
|
||||
req := struct {
|
||||
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("parameter err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
//uc := auth.GetCurrentUser(c)
|
||||
//if uc == nil {
|
||||
// RespJson(c, status.Unauthorized, nil)
|
||||
// return
|
||||
//}
|
||||
//req.Uid = uc.Uid
|
||||
|
||||
info, err := model.GetShareCardRetrieveInfo(req.ShareCardRetrieveId)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve list err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//ret := map[string]interface{}{
|
||||
// "list": list,
|
||||
// "cur_page": req.Page,
|
||||
// "total_page": totalPage,
|
||||
//}
|
||||
RespOK(c, info)
|
||||
return
|
||||
}
|
||||
|
||||
func ShareCardRetrieveCancel(c *gin.Context) {
|
||||
req := struct {
|
||||
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("parameter err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
//uc := auth.GetCurrentUser(c)
|
||||
//if uc == nil {
|
||||
// RespJson(c, status.Unauthorized, nil)
|
||||
// return
|
||||
//}
|
||||
//req.Uid = uc.Uid
|
||||
|
||||
//info, err := model.GetShareCardRetrieveInfo(req.ShareCardRetrieveId)
|
||||
//if err != nil {
|
||||
// logger.Error("share card retrieve list err:", err)
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
var retrieve model.ShareCardRetrieve
|
||||
err := model.NewShareCardRetrieveQuerySet(model.DB).IDEq(req.ShareCardRetrieveId).One(&retrieve)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
var refundOrderSn string
|
||||
if retrieve.RetrieveCardType == 2 {
|
||||
refundOrderSn = model.GetShareCardRetrieveOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uint32(retrieve.Uid), OpenNo: refundOrderSn, OrderId: retrieve.ID, OrderType: 2}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
orderRefund := wxpay.OrderRefund{
|
||||
OutTradeNo: retrieve.OrderSn,
|
||||
OutRefundNo: refundOrderSn,
|
||||
NotifyUrl: "",
|
||||
Amount: wxpay.OrderRefundAmount{
|
||||
Refund: retrieve.PayAmount,
|
||||
Total: retrieve.PayState,
|
||||
Currency: "CNY",
|
||||
},
|
||||
}
|
||||
//bytes, _ := json.Marshal(order)
|
||||
//fmt.Println("订单取消:", string(bytes))
|
||||
orderRefundJson, _ := json.Marshal(&orderRefund)
|
||||
fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson))
|
||||
//err = wxpay.WxPayOrderRefund(orderRefund)
|
||||
err = wxpay.TransactionOrderRefund(orderRefund)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
begin := model.DB.Begin()
|
||||
qs := model.NewShareCardRetrieveQuerySet(begin).IDEq(req.ShareCardRetrieveId).GetUpdater().
|
||||
SetState(model.RetrieveStateCancel).SetPickupCode("已取消")
|
||||
if refundOrderSn != "" {
|
||||
qs = qs.SetRefundOrderSn(refundOrderSn)
|
||||
}
|
||||
_, err = qs.UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update share card retrieve err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
_, err = model.NewShareCardRetrieveCardQuerySet(begin).ShareCardRetrieveIdEq(req.ShareCardRetrieveId).GetUpdater().
|
||||
SetState(model.RetrieveStateCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update share card retrieve card err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
logger.Error("commit err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//ret := map[string]interface{}{
|
||||
//}
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func ShareCardRetrieveConfirm(c *gin.Context) {
|
||||
req := struct {
|
||||
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("parameter err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
begin := model.DB.Begin()
|
||||
_, err := model.NewShareCardRetrieveQuerySet(begin).IDEq(req.ShareCardRetrieveId).GetUpdater().
|
||||
SetState(model.RetrieveStateReceivedCard).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update share card retrieve err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
_, err = model.NewShareCardRetrieveCardQuerySet(begin).ShareCardRetrieveIdEq(req.ShareCardRetrieveId).GetUpdater().
|
||||
SetState(model.RetrieveStateReceivedCard).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update share card retrieve card err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
logger.Error("commit err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ const (
|
|||
WxPayExchangeGoods = "exchange_goods" // 兑换商品
|
||||
WxPayUpgradeMember = "upgrade_member" // 多级会员
|
||||
WxPayMemberExpireDelay = "member_expire_delay" // 会员过期滞纳金
|
||||
WxPayShareCardRetrieve = "share_card_retrieve" // 会员过期滞纳金
|
||||
|
||||
//NotifyUrl = "https://switch.deovo.com:8001/api/v1/wxpay/notice" // TODO 数据库配置 生产
|
||||
//NotifyUrl = "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice" // TODO 测试
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -112,6 +112,9 @@ func InitTestDB() {
|
|||
&UserShareCardVm{},
|
||||
&ShareCardDateVm{},
|
||||
&ShareCardVmRecord{},
|
||||
&ShareCardRetrieve{},
|
||||
&ShareCardRetrieveCard{},
|
||||
|
||||
//&GameShareCardVm{},
|
||||
)
|
||||
|
||||
|
|
|
@ -543,6 +543,23 @@ func GetPickupCode() string {
|
|||
|
||||
}
|
||||
|
||||
func GetShareCardRetrievePickupCode() string {
|
||||
for {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
code := fmt.Sprintf("%d", rand.Intn(1000000)+100000)
|
||||
//count, err := NewOrderQuerySet(DB).PickupCodeEq(code).Count()
|
||||
count, err := NewShareCardRetrieveQuerySet(DB).PickupCodeEq(code).Count()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
if count == 0 {
|
||||
return code
|
||||
}
|
||||
}
|
||||
//将时间戳设置成种子数
|
||||
|
||||
}
|
||||
|
||||
func (m *Order) Cancel() (bool, Order, error) {
|
||||
var (
|
||||
order Order
|
||||
|
|
|
@ -62,19 +62,20 @@ const (
|
|||
// gen:qs
|
||||
type UserShareCard struct {
|
||||
Model
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
BillSn string `json:"bill_sn" gorm:"index"`
|
||||
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
||||
State string `json:"state" gorm:"index"`
|
||||
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
||||
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
||||
ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
ProfitState uint32 `json:"profit_state"` // 1-未生效 2-生效
|
||||
TotalVm uint32 `json:"total_vm"` // 累计积分
|
||||
SerialNumberRetrieve string `json:"serial_number_retrieve" gorm:"index"` // 收卡编号
|
||||
GameCard GameCard `json:"game_card" gorm:"-"`
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
BillSn string `json:"bill_sn" gorm:"index"`
|
||||
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
||||
State string `json:"state" gorm:"index"`
|
||||
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
||||
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
||||
ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
ProfitState uint32 `json:"profit_state"` // 1-未生效 2-生效
|
||||
TotalVm uint32 `json:"total_vm"` // 累计积分
|
||||
RetrieveSerialNumber string `json:"retrieve_serial_number" gorm:"index"` // 收卡编号
|
||||
RetrieveGameCardGoodsId uint32 `json:"retrieve_game_card_goods_id" gorm:"index"` // 收回卡id
|
||||
GameCard GameCard `json:"game_card" gorm:"-"`
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
|
@ -136,19 +137,25 @@ type ShareCardVmRecord struct {
|
|||
// gen:qs
|
||||
type ShareCardRetrieve struct {
|
||||
Model
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
|
||||
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡 2-邮寄
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
ExpressCompany string `json:"express_company"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no"` // 物流单号
|
||||
StockRemovalTime time.Time `json:"stock_removal_time"` // 出库时间
|
||||
StockTime time.Time `json:"stock_time"` // 入库时间
|
||||
Remark string `json:"remark"`
|
||||
|
||||
Store Store `json:"store" gorm:"-"`
|
||||
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
|
||||
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡门店 2-邮寄
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
ExpressCompany string `json:"express_company"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no"` // 物流单号
|
||||
StockRemovalTime time.Time `json:"stock_removal_time"` // 出库时间
|
||||
StockTime time.Time `json:"stock_time"` // 入库时间
|
||||
PayState uint32 `json:"pay_state"` // 1-未支付 2-已支付
|
||||
PayAmount uint32 `json:"pay_amount"` // 支付金额
|
||||
Remark string `json:"remark"`
|
||||
OrderSn string `json:"order_sn" gorm:"index"` // 订单编号
|
||||
AddressId uint32 `json:"address_id" gorm:"index"` // 收货地址
|
||||
RefundOrderSn string `json:"refund_order_sn" gorm:"index"` // 订单编号退费
|
||||
PickupCode string `json:"pickup_code"` // 取货码
|
||||
Store Store `json:"store" gorm:"-"`
|
||||
UserAddress UserAddress `json:"user_address" gorm:"-"`
|
||||
ShareCardRetrieveCards []ShareCardRetrieveCard `json:"share_card_retrieve_cards" gorm:"-"`
|
||||
//TotalVm uint32 `json:"total_vm"` // 累计积分
|
||||
//ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
|
||||
//GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
||||
|
@ -160,6 +167,8 @@ type ShareCardRetrieve struct {
|
|||
}
|
||||
|
||||
const (
|
||||
RetrieveStateInCheck = "in_check" // 待审核
|
||||
RetrieveStateCheckLose = "check_lose" // 审核失败
|
||||
RetrieveStateOutStock = "out_stock" // 暂无库存
|
||||
RetrieveStateInSendCard = "in_send_card" // 待发卡
|
||||
RetrieveStateInPickCard = "in_pick_card" // 待取卡
|
||||
|
@ -171,23 +180,27 @@ const (
|
|||
// gen:qs
|
||||
type ShareCardRetrieveCard struct {
|
||||
Model
|
||||
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id" gorm:"index"`
|
||||
UserShareCardId uint32 `json:"user_share_card_id" gorm:"index"` // 用户共享卡收回
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
|
||||
BillSn string `json:"bill_sn" gorm:"index"`
|
||||
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
||||
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡 2-邮寄
|
||||
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
||||
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
Remark string `json:"remark"`
|
||||
GameCard GameCard `json:"game_card" gorm:"-"`
|
||||
Store Store `json:"store" gorm:"-"`
|
||||
ShareCardRetrieveId uint32 `json:"share_card_retrieve_id" gorm:"index"`
|
||||
UserShareCardId uint32 `json:"user_share_card_id" gorm:"index"` // 用户共享卡收回
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
State string `json:"state" gorm:"index"` // 1-暂无库存 2-待发卡 3-待取卡 4-已发卡 5-已收卡 6-已取消
|
||||
BillSn string `json:"bill_sn" gorm:"index"`
|
||||
GameCardId uint32 `json:"game_card_id" gorm:"index"`
|
||||
RetrieveCardType uint32 `json:"retrieve_card_type" gorm:"index"` // 1-送卡 2-邮寄
|
||||
GameCardGoodsId uint32 `json:"game_card_goods_id" gorm:"index"`
|
||||
UserShareCardBillId uint32 `json:"user_share_card_bill_id" gorm:"index"`
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
Remark string `json:"remark"`
|
||||
RetrieveSerialNumber string `json:"retrieve_serial_number" gorm:"index"` // 收卡编号
|
||||
RetrieveGameCardGoodsId uint32 `json:"retrieve_game_card_goods_id" gorm:"index"` // 收回卡id
|
||||
GameCard GameCard `json:"game_card" gorm:"-"`
|
||||
Store Store `json:"store" gorm:"-"`
|
||||
|
||||
ShareCardRetrieve ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
|
||||
//TotalVm uint32 `json:"total_vm"` // 累计积分
|
||||
//ShareCardBillGameId uint32 `json:"share_card_bill_game_id" gorm:"index"`
|
||||
// share_card_retrieve_card
|
||||
}
|
||||
|
||||
func GetUserShareCardBillList(uid uint32, page, pageSize int, state string) ([]UserShareCardBill, int, error) {
|
||||
|
@ -274,7 +287,7 @@ func UserShareCardBillListSetGame(list []UserShareCardBill) []UserShareCardBill
|
|||
games[i].GameCard = v
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for i, _ := range games {
|
||||
billMap[games[i].UserShareCardBillId] = append(billMap[games[i].UserShareCardBillId], games[i])
|
||||
}
|
||||
|
@ -416,80 +429,310 @@ type ShareCardRetrieveCreateReq struct {
|
|||
SerialNumbers []string `json:"serial_numbers"`
|
||||
StoreId uint32 `json:"store_id"` // 门店id
|
||||
RetrieveCardType uint32 `json:"retrieve_card_type"`
|
||||
AddressId uint32 `json:"address_id"` // 收货地址
|
||||
Amount uint32 `json:"amount"` // 金额
|
||||
Uid uint32 `json:"uid"`
|
||||
}
|
||||
|
||||
func (m *ShareCardRetrieveCreateReq) RetrieveCreate() error {
|
||||
func (m *ShareCardRetrieveCreateReq) RetrieveCreate() (*ShareCardRetrieve, error) {
|
||||
var userShareCards []UserShareCard
|
||||
err := NewUserShareCardQuerySet(DB).SerialNumberIn(m.SerialNumbers...).All(&userShareCards)
|
||||
if err != nil {
|
||||
logger.Error("user share card err:", err)
|
||||
return err
|
||||
}
|
||||
gameIds := make([]uint64, 0)
|
||||
for i, _ := range userShareCards {
|
||||
gameIds = append(gameIds, uint64(userShareCards[i].GameCardId))
|
||||
return nil, err
|
||||
}
|
||||
//gameIds := make([]uint64, 0)
|
||||
//for i, _ := range userShareCards {
|
||||
// gameIds = append(gameIds, uint64(userShareCards[i].GameCardId))
|
||||
//}
|
||||
|
||||
//var gameCardGoodsStocks []GameCardGoodsStock
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(m.StoreId)).GameCardIdIn(gameIds...).All(&gameCardGoodsStocks)
|
||||
//if err != nil {
|
||||
// logger.Error("game card goods stock err:", err)
|
||||
// return err
|
||||
//}
|
||||
var gameGoods []GameCardGoods
|
||||
err = NewGameCardGoodsQuerySet(DB).GameCardIdIn(gameIds...).StatusEq(1).OrderAscByID().All(&gameGoods)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("game card goods err:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
//state := RetrieveStateInSendCard
|
||||
//for i, _ := range gameGoods {
|
||||
// if gameGoods[i].Status == {
|
||||
// }
|
||||
//var gameGoods []GameCardGoods
|
||||
//err = NewGameCardGoodsQuerySet(DB).GameCardIdIn(gameIds...).StatusEq(1).OrderAscByID().All(&gameGoods)
|
||||
//if err != nil && err != RecordNotFound {
|
||||
// logger.Error("game card goods err:", err)
|
||||
// return err
|
||||
//}
|
||||
|
||||
payState := uint32(1)
|
||||
if m.RetrieveCardType == 1 {
|
||||
payState = 2
|
||||
}
|
||||
begin := DB.Begin()
|
||||
retrieve := &ShareCardRetrieve{
|
||||
Uid: m.Uid,
|
||||
RetrieveCardType: m.RetrieveCardType,
|
||||
StoreId: m.StoreId,
|
||||
State: RetrieveStateInCheck,
|
||||
OrderSn: GetShareCardRetrieveOrderSn(),
|
||||
PayState: payState,
|
||||
AddressId: m.AddressId,
|
||||
PayAmount: m.Amount,
|
||||
PickupCode: GetShareCardRetrievePickupCode(),
|
||||
}
|
||||
err = begin.Create(&retrieve).Error
|
||||
if err != nil {
|
||||
logger.Error("create share card retrieve err:", err)
|
||||
return err
|
||||
return retrieve, err
|
||||
}
|
||||
|
||||
for i, _ := range userShareCards {
|
||||
ShareCardRetrieveCard{
|
||||
card := &ShareCardRetrieveCard{
|
||||
ShareCardRetrieveId: retrieve.ID,
|
||||
UserShareCardId: userShareCards[i].ID,
|
||||
Uid: m.Uid,
|
||||
SerialNumber: userShareCards[i].SerialNumber,
|
||||
State: "",
|
||||
BillSn: "",
|
||||
GameCardId: 0,
|
||||
RetrieveCardType: 0,
|
||||
GameCardGoodsId: 0,
|
||||
UserShareCardBillId: 0,
|
||||
StoreId: 0,
|
||||
Remark: "",
|
||||
GameCard: GameCard{},
|
||||
Store: Store{},
|
||||
State: RetrieveStateInCheck,
|
||||
BillSn: userShareCards[i].BillSn,
|
||||
GameCardId: userShareCards[i].GameCardId,
|
||||
RetrieveCardType: m.RetrieveCardType,
|
||||
GameCardGoodsId: userShareCards[i].GameCardGoodsId,
|
||||
UserShareCardBillId: userShareCards[i].ShareCardBillGameId,
|
||||
StoreId: m.StoreId,
|
||||
}
|
||||
err = begin.Create(&card).Error
|
||||
if err != nil {
|
||||
logger.Error("create share card retrieve card err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
logger.Error("commit err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
return retrieve, nil
|
||||
}
|
||||
|
||||
func GetUserCardBySerialNumber(serialNumber string, list []GameCardGoods) (*GameCardGoods, bool) {
|
||||
//func GetUserCardBySerialNumber(serialNumber string, list []GameCardGoods) (*GameCardGoods, bool) {
|
||||
// for i, _ := range list {
|
||||
// if list[i].SerialNumber == serialNumber {
|
||||
// return &list[i], true
|
||||
// }
|
||||
// }
|
||||
// return nil, false
|
||||
//}
|
||||
|
||||
//func SetUserCardSerialNumber(storeId uint32, list []UserShareCard) ([]UserShareCard, error) {
|
||||
// for i, _ := range list {
|
||||
// var goods GameCardGoods
|
||||
// err := NewGameCardGoodsQuerySet(DB).StoreIdEq(uint64(storeId)).SerialNumberEq(list[i].SerialNumber).
|
||||
// StatusEq(1).One(&goods)
|
||||
// if err != nil && err != RecordNotFound {
|
||||
// logger.Error("game card goods err:", err)
|
||||
// return list, err
|
||||
// }
|
||||
// if goods.ID == list[i].GameCardGoodsId {
|
||||
// list[i].SerialNumber = goods.SerialNumber
|
||||
// list[i].GameCardGoodsIdRetrieve = goods.ID
|
||||
// }
|
||||
// }
|
||||
// return list, nil
|
||||
//}
|
||||
//
|
||||
//func SetRandomCardSerialNumber(storeId uint32, list []UserShareCard) ([]UserShareCard, error) {
|
||||
// for i, _ := range list {
|
||||
// var goods GameCardGoods
|
||||
// err := NewGameCardGoodsQuerySet(DB).StoreIdEq(uint64(storeId)).GameCardIdEq(uint64(list[i].GameCardId)).
|
||||
// StatusEq(1).OrderAscByID().Limit(1).One(&goods)
|
||||
// if err != nil && err != RecordNotFound {
|
||||
// logger.Error("game card goods err:", err)
|
||||
// return list, err
|
||||
// }
|
||||
// list[i].SerialNumber = goods.SerialNumber
|
||||
// list[i].GameCardGoodsIdRetrieve = goods.ID
|
||||
// }
|
||||
// return list, nil
|
||||
//}
|
||||
|
||||
type ShareCardRetrieveListReq struct {
|
||||
Uid uint32 `json:"uid"`
|
||||
State string `json:"state"`
|
||||
Page int `json:"cur_page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
|
||||
func (m *ShareCardRetrieveListReq) List() ([]ShareCardRetrieve, int, error) {
|
||||
var retrieveCards []ShareCardRetrieve
|
||||
qs := NewShareCardRetrieveQuerySet(DB).PayStateEq(2)
|
||||
if m.State != "" {
|
||||
qs = qs.StateEq(m.State)
|
||||
}
|
||||
page := m.Page - 1
|
||||
if page < 0 {
|
||||
page = 0
|
||||
}
|
||||
if m.PageSize == 0 {
|
||||
m.PageSize = 10
|
||||
}
|
||||
|
||||
count, err := qs.Count()
|
||||
if err != nil {
|
||||
logger.Error("user share card bill count err:", err)
|
||||
return retrieveCards, 0, err
|
||||
}
|
||||
totalPage := count/m.PageSize + 1
|
||||
err = qs.OrderDescByID().Offset(page * m.PageSize).Limit(m.PageSize).All(&retrieveCards)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("user share card bill err:", err)
|
||||
return retrieveCards, 0, err
|
||||
}
|
||||
if len(retrieveCards) == 0 {
|
||||
return retrieveCards, totalPage, nil
|
||||
}
|
||||
retrieveCards = ShareCardRetrieveListSetGames(retrieveCards)
|
||||
return retrieveCards, totalPage, nil
|
||||
}
|
||||
|
||||
func ShareCardRetrieveListSetGames(list []ShareCardRetrieve) []ShareCardRetrieve {
|
||||
gameIds := make([]uint32, 0, len(list))
|
||||
retrieveIds := make([]uint32, 0, len(list))
|
||||
for i, _ := range list {
|
||||
if list[i].SerialNumber == serialNumber {
|
||||
return &list[i], true
|
||||
//gameIds = append(gameIds, list[i].GameCardId)
|
||||
retrieveIds = append(retrieveIds, list[i].ID)
|
||||
}
|
||||
if len(retrieveIds) == 0 {
|
||||
return list
|
||||
}
|
||||
var cards []ShareCardRetrieveCard
|
||||
err := NewShareCardRetrieveCardQuerySet(DB).ShareCardRetrieveIdIn(retrieveIds...).All(&cards)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve card err:", err)
|
||||
return list
|
||||
}
|
||||
for i, _ := range cards {
|
||||
gameIds = append(gameIds, cards[i].GameCardId)
|
||||
}
|
||||
if len(gameIds) == 0 {
|
||||
logger.Error("game ids err:", err)
|
||||
return list
|
||||
}
|
||||
gameMap, err := GameCardMap(gameIds)
|
||||
if err != nil {
|
||||
logger.Error("game card map err:", err)
|
||||
return list
|
||||
}
|
||||
for i, _ := range cards {
|
||||
v, ok := gameMap[cards[i].GameCardId]
|
||||
if ok {
|
||||
cards[i].GameCard = v
|
||||
}
|
||||
}
|
||||
return nil, false
|
||||
|
||||
cardsMap := make(map[uint32][]ShareCardRetrieveCard, 0)
|
||||
for i, _ := range cards {
|
||||
cardsMap[cards[i].ShareCardRetrieveId] = append(
|
||||
cardsMap[cards[i].ShareCardRetrieveId], cards[i])
|
||||
}
|
||||
|
||||
//retrieveMap, err := GetShareCardRetrieveMap(retrieveIds)
|
||||
//if err != nil {
|
||||
// logger.Error("get share card retrieve map err:", err)
|
||||
// return list
|
||||
//}
|
||||
for i, _ := range list {
|
||||
v, ok1 := cardsMap[list[i].ID]
|
||||
if ok1 {
|
||||
list[i].ShareCardRetrieveCards = v
|
||||
}
|
||||
//retrieve, ok2 := retrieveMap[list[i].ShareCardRetrieveId]
|
||||
//if ok2 {
|
||||
// list[i].ShareCardRetrieve = retrieve
|
||||
//}
|
||||
}
|
||||
|
||||
return list
|
||||
}
|
||||
|
||||
func ShareCardRetrieveCardListSetGame(list []ShareCardRetrieveCard) []ShareCardRetrieveCard {
|
||||
gameIds := make([]uint32, 0, len(list))
|
||||
retrieveIds := make([]uint32, 0, len(list))
|
||||
for i, _ := range list {
|
||||
gameIds = append(gameIds, list[i].GameCardId)
|
||||
retrieveIds = append(retrieveIds, list[i].ShareCardRetrieveId)
|
||||
}
|
||||
|
||||
cardMap, err := GameCardMap(gameIds)
|
||||
if err != nil {
|
||||
logger.Error("game card map err:", err)
|
||||
return list
|
||||
}
|
||||
|
||||
for i, _ := range list {
|
||||
v, ok1 := cardMap[list[i].GameCardId]
|
||||
if ok1 {
|
||||
list[i].GameCard = v
|
||||
}
|
||||
}
|
||||
|
||||
return list
|
||||
}
|
||||
|
||||
func GetShareCardRetrieveMap(ids []uint32) (map[uint32]ShareCardRetrieve, error) {
|
||||
retrieveMap := make(map[uint32]ShareCardRetrieve, 0)
|
||||
if len(ids) == 0 {
|
||||
return retrieveMap, nil
|
||||
}
|
||||
var retrieves []ShareCardRetrieve
|
||||
err := NewShareCardRetrieveQuerySet(DB).IDIn(ids...).All(&retrieves)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve err:", err)
|
||||
return retrieveMap, err
|
||||
}
|
||||
for i, _ := range retrieves {
|
||||
retrieveMap[retrieves[i].ID] = retrieves[i]
|
||||
}
|
||||
return retrieveMap, nil
|
||||
}
|
||||
|
||||
func GetShareCardRetrieveInfo(retrieveId uint32) (ShareCardRetrieve, error) {
|
||||
var retrieve ShareCardRetrieve
|
||||
err := NewShareCardRetrieveQuerySet(DB).IDEq(retrieveId).One(&retrieve)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
var cards []ShareCardRetrieveCard
|
||||
err = NewShareCardRetrieveCardQuerySet(DB).ShareCardRetrieveIdEq(retrieveId).All(&cards)
|
||||
if err != nil {
|
||||
logger.Error("share card retrieve card err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
|
||||
retrieve.ShareCardRetrieveCards = ShareCardRetrieveCardListSetGame(cards)
|
||||
err = retrieve.SetStore()
|
||||
if err != nil {
|
||||
logger.Error("store err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
|
||||
err = retrieve.SetUserAddress()
|
||||
if err != nil {
|
||||
logger.Error("user address err:", err)
|
||||
return retrieve, err
|
||||
}
|
||||
|
||||
return retrieve, nil
|
||||
}
|
||||
|
||||
func (m *ShareCardRetrieve) SetStore() error {
|
||||
err := NewStoreQuerySet(DB).IDEq(m.StoreId).One(&m.Store)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("set store err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *ShareCardRetrieve) SetUserAddress() error {
|
||||
err := NewUserAddressQuerySet(DB).IDEq(m.AddressId).One(&m.UserAddress)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("set store err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 用户收回卡
|
||||
|
|
|
@ -204,7 +204,7 @@ type UserOpenMemberRecord struct {
|
|||
Uid uint32 `json:"uid"`
|
||||
OpenNo string `json:"open_no" gorm:"index"`
|
||||
OrderId uint32 `json:"order_id"`
|
||||
OrderType uint32 `json:"order_type"` // 1-物流支付 2-取消物流租卡 3-滞纳金
|
||||
OrderType uint32 `json:"order_type"` // 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡
|
||||
MemberLevel uint32 `json:"member_level"`
|
||||
MemberExpire time.Time `json:"member_expire"` // 会员到期时间
|
||||
}
|
||||
|
@ -423,6 +423,21 @@ func GetShareCardBillSn() string {
|
|||
return billSn
|
||||
}
|
||||
|
||||
func GetShareCardRetrieveOrderSn() string {
|
||||
var orderSn string
|
||||
for {
|
||||
orderSn = utils.GetSerialNo32HEXString()
|
||||
count, err := NewShareCardRetrieveQuerySet(DB).OrderSnEq(orderSn).Count()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
if count == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
return orderSn
|
||||
}
|
||||
|
||||
func (m *User) Edit() {
|
||||
err := DB.Save(m).Error
|
||||
if err != nil {
|
||||
|
|
|
@ -195,7 +195,11 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
shareCard.POST("bill/my_card", controller.UserShareCardMyCard) // 我的共享卡
|
||||
shareCard.POST("user_card_vm", controller.UserShareCardVmRecord) // 我的共享卡积分记录
|
||||
|
||||
shareCard.POST("retrieve/add", controller.ShareCardRetrieveCreate) // 我的共享卡收回
|
||||
shareCard.POST("retrieve/add", controller.ShareCardRetrieveCreate) // 我的共享卡收回
|
||||
shareCard.POST("retrieve_card/cancel", controller.ShareCardRetrieveCancel) // 我的共享卡收回取消
|
||||
shareCard.POST("retrieve_card/list", controller.ShareCardRetrieveList) // 我的共享卡收回审核
|
||||
shareCard.POST("retrieve_card/detail", controller.ShareCardRetrieveDetail) // 我的共享卡收回审核
|
||||
shareCard.POST("retrieve_card/confirm", controller.ShareCardRetrieveConfirm) // 我的共享卡收回审核
|
||||
|
||||
//shoppingCart.POST("del", controller.ShoppingCartDel) //
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user