fix:问题反馈

This commit is contained in:
li 2022-04-21 14:59:12 +08:00
parent 30fca5a0a4
commit dcac87d0e2
6 changed files with 184 additions and 35 deletions

View File

@ -383,15 +383,16 @@ func ShareCardRetrieveCreate(c *gin.Context) {
RespJson(c, status.ShareCardRetrieveExistAppliedCard, nil)
return
}
req.Amount = 40 // TODO 测试数据
//req.Amount = 40 // TODO 测试数据
retrieve, err := req.RetrieveCreate()
if err != nil {
logger.Error("share card retrieve create err:", err)
if err.Error() == "before_6_month" {
RespJson(c, status.CardRetrieveBefore6Month, nil)
return
}
} else {
RespJson(c, status.InternalServerError, nil)
}
return
}
if req.RetrieveCardType == 1 {
@ -624,6 +625,8 @@ func CardIssueCreate(c *gin.Context) {
ObtainType string `json:"obtain_type"` // 卡类型
Problem string `json:"problem"` // 问题
Remark string `json:"remark"`
TransportType uint32 `json:"transport_type"` // 1-送卡到门店 2-邮寄
UserAddressId uint32 `json:"user_address_id"` // 用户地址
}{}
if c.ShouldBindJSON(&req) != nil {
logger.Error("parameter err")
@ -635,7 +638,18 @@ func CardIssueCreate(c *gin.Context) {
RespJson(c, status.Unauthorized, nil)
return
}
count, err := model.NewCardIssueFeedbackQuerySet(model.DB).RelevanceIdEq(req.RelevanceId).
StateNe(model.CardIssueStateCanceled).Count()
if err != nil {
logger.Error("card issue feedback count err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
if count > 0 {
logger.Error("card issue feedback exist")
RespJson(c, status.IssueFeedbackRepetition, nil)
return
}
var feedback *model.CardIssueFeedback
if req.ObtainType == "retrieve_card" {
var shareCardRetrieveCard model.ShareCardRetrieveCard
@ -667,6 +681,8 @@ func CardIssueCreate(c *gin.Context) {
Problem: req.Problem,
Remark: req.Remark,
State: model.CardIssueStateFollowing,
TransportType: req.TransportType,
UserAddressId: req.UserAddressId,
}
} else if req.ObtainType == "rent_card" {
var orderCard model.OrderCard
@ -692,13 +708,21 @@ func CardIssueCreate(c *gin.Context) {
Problem: req.Problem,
Remark: req.Remark,
State: model.CardIssueStateFollowing,
TransportType: req.TransportType,
UserAddressId: req.UserAddressId,
}
_, err = model.NewOrderCardQuerySet(model.DB).IDEq(req.RelevanceId).GetUpdater().SetIssueType(1).UpdateNum()
if err != nil {
logger.Error("order err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
} else {
logger.Error("obtain type err:")
RespJson(c, status.InternalServerError, nil)
return
}
err := model.DB.Create(feedback).Error
err = model.DB.Create(feedback).Error
if err != nil {
logger.Error("create feedback err:")
RespJson(c, status.InternalServerError, nil)
@ -742,7 +766,15 @@ func CardIssueCancel(c *gin.Context) {
RespJson(c, status.InternalServerError, nil)
return
}
if cardIssueFeedback.ObtainType == model.ObtainTypeRentCard {
_, err = model.NewOrderCardQuerySet(model.DB).IDEq(cardIssueFeedback.RelevanceId).GetUpdater().
SetIssueType(2).UpdateNum()
if err != nil {
logger.Error("order err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
}
RespOK(c, nil)
return
}
@ -759,6 +791,9 @@ func CardIssueList(c *gin.Context) {
return
}
uc := auth.GetCurrentUser(c)
//uc := &auth.UserClaims{
// Uid: 49393347,
//}
if uc == nil {
logger.Error("user err")
RespJson(c, status.Unauthorized, nil)
@ -783,7 +818,7 @@ func CardIssueList(c *gin.Context) {
if req.PageSize == 0 {
req.PageSize = 10
}
totalPage := count / req.PageSize
totalPage := count/req.PageSize + 1
err = qs.OrderDescByID().Offset(page * req.PageSize).Limit(req.PageSize).All(&issueFeedbacks)
if err != nil && err != model.RecordNotFound {
@ -833,8 +868,16 @@ func CardIssueInfo(c *gin.Context) {
RespJson(c, status.InternalServerError, nil)
return
}
var userAddress model.UserAddress
err = model.NewUserAddressQuerySet(model.DB).IDEq(issueFeedback.UserAddressId).One(&userAddress)
if err != nil && err != model.RecordNotFound {
logger.Error("game card err")
RespJson(c, status.InternalServerError, nil)
return
}
issueFeedback.Store = &store
issueFeedback.GameCard = &gameCard
issueFeedback.UserAddress = &userAddress
RespOK(c, issueFeedback)
return
@ -855,7 +898,7 @@ func CardIssueDeliver(c *gin.Context) {
//var issueFeedback model.CardIssueFeedback
_, err := model.NewCardIssueFeedbackQuerySet(model.DB).IDEq(req.CardIssueFeedbackId).GetUpdater().
SetExpressCompany(req.ExpressCompany).SetExpressCompanyNo(req.ExpressCompanyNo).
SetDeliverExpressNo(req.ExpressNo).UpdateNum()
SetExpressNo(req.ExpressNo).UpdateNum()
if err != nil {
logger.Error("card issue feedback err")
RespJson(c, status.InternalServerError, nil)

View File

@ -97,6 +97,7 @@ const (
ShareCardRetrieveExistAppliedCard = 500513 // 共享单状态不能取消
IssueFeedbackReceiptTimeOver48Hour = 500514 // 问题反馈 超过 48小时
CardRetrieveBefore6Month = 500515 // 用户收回卡需要半年后
IssueFeedbackRepetition = 500516 // 问题反馈已存在,不能重复反馈
GoodsNotSale = 500508 // 商品已下架
@ -226,6 +227,7 @@ var statusMsg = map[int]string{
ShareCardRetrieveExistAppliedCard: "存在重复申请收回的卡",
IssueFeedbackReceiptTimeOver48Hour: "签收后已超过48小时",
CardRetrieveBefore6Month: "收回的卡需共享满半年",
IssueFeedbackRepetition: "改卡反馈已存在,不能重复反馈",
PayStateIng: "支付中",
PayStateFail: "支付失败",
MoneySufficient: "余额不足",

View File

@ -1115,6 +1115,62 @@ func (qs OrderCardQuerySet) IDNotIn(ID ...uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("id NOT IN (?)", ID))
}
// IssueTypeEq is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeEq(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type = ?", issueType))
}
// IssueTypeGt is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeGt(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type > ?", issueType))
}
// IssueTypeGte is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeGte(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type >= ?", issueType))
}
// IssueTypeIn is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeIn(issueType ...uint32) OrderCardQuerySet {
if len(issueType) == 0 {
qs.db.AddError(errors.New("must at least pass one issueType in IssueTypeIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("issue_type IN (?)", issueType))
}
// IssueTypeLt is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeLt(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type < ?", issueType))
}
// IssueTypeLte is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeLte(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type <= ?", issueType))
}
// IssueTypeNe is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeNe(issueType uint32) OrderCardQuerySet {
return qs.w(qs.db.Where("issue_type != ?", issueType))
}
// IssueTypeNotIn is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) IssueTypeNotIn(issueType ...uint32) OrderCardQuerySet {
if len(issueType) == 0 {
qs.db.AddError(errors.New("must at least pass one issueType in IssueTypeNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("issue_type NOT IN (?)", issueType))
}
// Limit is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) Limit(limit int) OrderCardQuerySet {
@ -1181,6 +1237,12 @@ func (qs OrderCardQuerySet) OrderAscByID() OrderCardQuerySet {
return qs.w(qs.db.Order("id ASC"))
}
// OrderAscByIssueType is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) OrderAscByIssueType() OrderCardQuerySet {
return qs.w(qs.db.Order("issue_type ASC"))
}
// OrderAscByOrderId is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) OrderAscByOrderId() OrderCardQuerySet {
@ -1307,6 +1369,12 @@ func (qs OrderCardQuerySet) OrderDescByID() OrderCardQuerySet {
return qs.w(qs.db.Order("id DESC"))
}
// OrderDescByIssueType is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) OrderDescByIssueType() OrderCardQuerySet {
return qs.w(qs.db.Order("issue_type DESC"))
}
// OrderDescByOrderId is an autogenerated method
// nolint: dupl
func (qs OrderCardQuerySet) OrderDescByOrderId() OrderCardQuerySet {
@ -2157,6 +2225,13 @@ func (u OrderCardUpdater) SetID(ID uint32) OrderCardUpdater {
return u
}
// SetIssueType is an autogenerated method
// nolint: dupl
func (u OrderCardUpdater) SetIssueType(issueType uint32) OrderCardUpdater {
u.fields[string(OrderCardDBSchema.IssueType)] = issueType
return u
}
// SetOrderId is an autogenerated method
// nolint: dupl
func (u OrderCardUpdater) SetOrderId(orderId uint32) OrderCardUpdater {
@ -2297,6 +2372,7 @@ var OrderCardDBSchema = struct {
RevertExpressCompanyNo OrderCardDBSchemaField
RevertExpressNo OrderCardDBSchemaField
RevertExpressDuration OrderCardDBSchemaField
IssueType OrderCardDBSchemaField
}{
ID: OrderCardDBSchemaField("id"),
@ -2320,6 +2396,7 @@ var OrderCardDBSchema = struct {
RevertExpressCompanyNo: OrderCardDBSchemaField("revert_express_company_no"),
RevertExpressNo: OrderCardDBSchemaField("revert_express_no"),
RevertExpressDuration: OrderCardDBSchemaField("revert_express_duration"),
IssueType: OrderCardDBSchemaField("issue_type"),
}
// Update updates OrderCard fields by primary key
@ -2347,6 +2424,7 @@ func (o *OrderCard) Update(db *gorm.DB, fields ...OrderCardDBSchemaField) error
"revert_express_company_no": o.RevertExpressCompanyNo,
"revert_express_no": o.RevertExpressNo,
"revert_express_duration": o.RevertExpressDuration,
"issue_type": o.IssueType,
}
u := map[string]interface{}{}
for _, f := range fields {

View File

@ -105,6 +105,7 @@ func InitTestDB() {
&UserRentCard{},
&UserConsumeRecord{},
&UserMemberExpireDelay{},
&UserShareCardBill{},
&ShareCardBillGame{},
&UserShareCard{},
@ -155,6 +156,18 @@ func InitDBProd() {
DBProd.AutoMigrate(
&RedeemCode{},
&UserRedeemCode{},
&UserShareCardBill{},
&ShareCardBillGame{},
&UserShareCard{},
&ShareCardVmRecord{},
&UserShareCardVm{},
&ShareCardDateVm{},
&ShareCardGameVm{},
&ShareCardRetrieve{},
&ShareCardRetrieveCard{},
&GameCardLabel{},
&CardIssueFeedback{},
)
if err := DBProd.DB().Ping(); err != nil {
@ -164,6 +177,10 @@ func InitDBProd() {
fmt.Println("DB init success")
}
func TestInitProdDBModel(t *testing.T) {
InitDBProd()
}
func TestHotSearch_TableName(t *testing.T) {
InitTestDB()

View File

@ -88,7 +88,7 @@ type OrderCard struct {
RevertExpressNo string `json:"revert_express_no"` // 归还物流单号
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
//Status uint8 `json:"status" gorm:"index"` // 1-待领取 2-游玩中 3-已归还 4-未领取
IssueType uint32 `json:"issue_type"` // 问题类型: 1-问题反馈 2-正常
Postage uint32 `json:"postage" gorm:"-"` // 邮费
ExpressCompany string `json:"express_company" gorm:"-"` // 物流公司
ExpressCompanyNo string `json:"express_company_no" gorm:"-"` // 物流公司编号
@ -97,6 +97,7 @@ type OrderCard struct {
GameName string `json:"name" gorm:"-"` // 名称
GamePrice uint32 `json:"price" gorm:"-"` // 价格
GameCoverImg string `json:"cover_img" gorm:"-"` // 封面
IssueFeedbackStoreId uint32 `json:"issue_feedback_store_id" gorm:"-"` // 问题反馈门店
Order *Order `json:"order" gorm:"-"` // 订单
//PickupCode string `json:"pickup_code"` // 取货码
}
@ -134,35 +135,37 @@ func OrderCardListSetGameInfo(list []OrderCard) []OrderCard {
return list
}
fmt.Println("ids:", ids)
cardMap, err := GameCardMap(ids)
if err != nil {
logger.Error("err:", err)
return list
}
bytes, _ := json.Marshal(&cardMap)
orderMapbytes, _ := json.Marshal(&orderMap)
fmt.Println("cardMap:", string(bytes))
fmt.Println("orderMap:", string(orderMapbytes))
//fmt.Println("ids:", ids)
//NewCardIssueFeedbackQuerySet(DB).SerialNumberEq()
//bytes, _ := json.Marshal(&cardMap)
//orderMapbytes, _ := json.Marshal(&orderMap)
//fmt.Println("cardMap:", string(bytes))
//fmt.Println("orderMap:", string(orderMapbytes))
for i, _ := range list {
fmt.Println("list[i].GameCardId", list[i].GameCardId)
fmt.Println("list[i].OrderId", list[i].OrderId)
//fmt.Println("list[i].GameCardId", list[i].GameCardId)
//fmt.Println("list[i].OrderId", list[i].OrderId)
gameCard, ok1 := cardMap[list[i].GameCardId]
order, ok2 := orderMap[list[i].OrderId]
fmt.Printf("gameCard1:%#v \n", gameCard)
//fmt.Printf("gameCard1:%#v \n", gameCard)
if ok1 && ok2 {
if order.CardStatus == 2 || order.CardStatus == 3 {
order.CardStatus = 4
}
fmt.Printf("gameCard2:%#v \n", gameCard)
//fmt.Printf("gameCard2:%#v \n", gameCard)
list[i].GameName = gameCard.Name
list[i].GameCoverImg = gameCard.CoverImg
list[i].GamePrice = gameCard.Price
list[i].Order = &order
}
}
listbytes, _ := json.Marshal(&list)
fmt.Println("listbytes:", string(listbytes))
//listbytes, _ := json.Marshal(&list)
//fmt.Println("listbytes:", string(listbytes))
return list
}
@ -292,9 +295,9 @@ func (m *Order) Revert() error {
// logger.Error("order card status completed")
// return errors.New("order card status completed")
//}
fmt.Println("GameCardGoodsId------:", m.GameCardGoodsId)
fmt.Println("ID------:", m.ID)
fmt.Println("OrderCardId------:", m.OrderCardId)
//fmt.Println("GameCardGoodsId------:", m.GameCardGoodsId)
//fmt.Println("ID------:", m.ID)
//fmt.Println("OrderCardId------:", m.OrderCardId)
err := NewOrderCardQuerySet(DB).IDEq(m.OrderCardId).One(&orderCard)
//err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).GameCardGoodsIdEq(uint32(m.GameCardGoodsId)).One(&orderCard)
if err != nil {
@ -814,6 +817,7 @@ func (m *Order) CreatOrderCard(cards []CardInfo, storeId uint32, gdb *gorm.DB) e
DeliveryType: m.DeliveryType,
SerialNumber: "",
PayStatus: m.PayStatus,
IssueType: 2,
}
err := gdb.Create(orderCard).Error
if err != nil {

View File

@ -258,6 +258,7 @@ type ShareCardRetrieveCard struct {
const (
CardIssueStateFollowing = "following" // 处理中
CardIssueStateFollowed = "followed" // 已处理
CardIssueStateInDeliver = "in_deliver" // 发货中
CardIssueStateCompleted = "completed" // 已完成
CardIssueStateCanceled = "canceled" // 已取消
)
@ -296,12 +297,15 @@ type CardIssueFeedback struct {
CheckSysUid string `json:"check_sys_uid" gorm:"index"` // 检测店员账号用户id
ReceiptTime time.Time `json:"receipt_time"` // 签收时间
//CheckShopAssistant string `json:"check_shop_assistant" gorm:"index"` // 检测店员账号
TransportType uint32 `json:"transport_type" gorm:"index"` // 1-送卡到门店 2-邮寄
UserAddressId uint32 `json:"user_address_id" gorm:"index"`
UserInfo *User `json:"user_info" gorm:"-"`
GameCard *GameCard `json:"game_card" gorm:"-"`
Store *Store `json:"store" gorm:"-"`
ShareCardRetrieve *ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
Order *Order `json:"order" gorm:"-"`
UserAddress *UserAddress `json:"user_address" gorm:"-"`
// card_issue_feedback
}
@ -667,6 +671,7 @@ func (m *ShareCardRetrieveCreateReq) RetrieveCreate() (*ShareCardRetrieve, error
//for i, _ := range userShareCards {
// gameIds = append(gameIds, uint64(userShareCards[i].GameCardId))
//}
// TODO 共享卡半年收回
for i, _ := range userShareCards {
if userShareCards[i].CreatedAt.AddDate(0, 6, 0).After(time.Now()) {
logger.Error("user share before 6 month")