This commit is contained in:
yan.y 2024-05-12 21:09:02 +08:00
parent 798e7aae92
commit 7b753da3d9
4 changed files with 55 additions and 21 deletions

View File

@ -156,13 +156,14 @@ func (p DefParty) updateUserInfo() web_iris.Party {
}
type GetUserInfoResponse struct {
Uid int64 `json:"uid"`
NickName string `json:"nickName"`
HeadImgUrl string `json:"headImgUrl"`
Discount float32 `json:"discount"`
Amount int `json:"amount"`
Role int `json:"role"`
UserPets []UserPetInfo `json:"userPets"`
Uid int64 `json:"uid"`
NickName string `json:"nickName"`
HeadImgUrl string `json:"headImgUrl"`
Discount float32 `json:"discount"`
Amount int `json:"amount"`
Role int `json:"role"`
UserPets []UserPetInfo `json:"userPets"`
Car models.ServiceCar `json:"car"`
}
// 获取用户信息
@ -188,6 +189,12 @@ func (p DefParty) getUserInfo() web_iris.Party {
if getUserInfoResponse.Amount == 0 {
getUserInfoResponse.Discount = 1
}
if userInfo.Role == 1 {
var serviceCarUser models.ServiceCarUser
database.Instance().Model(&models.ServiceCarUser{}).Where("uid = ?", userInfo.Id).Find(&serviceCarUser)
getUserInfoResponse.Car = CarMap[serviceCarUser.CarId]
getUserInfoResponse.Car.ServiceAddr = ServiceAddrMap[getUserInfoResponse.Car.ServiceAddrId]
}
Success(ctx, headerInfo, getUserInfoResponse)
})
}}

View File

@ -47,9 +47,9 @@ func (p DefParty) carServiceOrderList() web_iris.Party {
}
var orderMains []models.OrderMain
if carServiceOrderListRequest.Status == 0 {
database.Instance().Model(&models.OrderMain{}).Joins("JOIN car_orders ON order_mains.order_id = car_orders.order_id").Where("car_orders.car_id = ? AND order_mains.status > 0", serviceCarUser.CarId).Order(clause.OrderByColumn{Column: clause.Column{Name: "order_mains.service_time"}, Desc: false}).Offset((carServiceOrderListRequest.PageNo - 1) * carServiceOrderListRequest.PageSize).Limit(carServiceOrderListRequest.PageSize).Find(&orderMains)
database.Instance().Model(&models.OrderMain{}).Joins("JOIN car_orders ON order_mains.order_id = car_orders.order_id").Where("car_orders.car_id = ? AND order_mains.status > 0", serviceCarUser.CarId).Order(clause.OrderByColumn{Column: clause.Column{Name: "order_mains.service_time"}, Desc: true}).Offset((carServiceOrderListRequest.PageNo - 1) * carServiceOrderListRequest.PageSize).Limit(carServiceOrderListRequest.PageSize).Find(&orderMains)
} else {
database.Instance().Model(&models.OrderMain{}).Joins("JOIN car_orders ON order_mains.order_id = car_orders.order_id").Where("car_orders.car_id = ? AND order_mains.status = ?", serviceCarUser.CarId, carServiceOrderListRequest.Status).Order(clause.OrderByColumn{Column: clause.Column{Name: "order_mains.service_time"}, Desc: false}).Offset((carServiceOrderListRequest.PageNo - 1) * carServiceOrderListRequest.PageSize).Limit(carServiceOrderListRequest.PageSize).Find(&orderMains)
database.Instance().Model(&models.OrderMain{}).Joins("JOIN car_orders ON order_mains.order_id = car_orders.order_id").Where("car_orders.car_id = ? AND order_mains.status = ?", serviceCarUser.CarId, carServiceOrderListRequest.Status).Order(clause.OrderByColumn{Column: clause.Column{Name: "order_mains.service_time"}, Desc: true}).Offset((carServiceOrderListRequest.PageNo - 1) * carServiceOrderListRequest.PageSize).Limit(carServiceOrderListRequest.PageSize).Find(&orderMains)
}
var orderDetails []OrderDetail
for _, value := range orderMains {
@ -102,11 +102,7 @@ func (p DefParty) carServiceProcess() web_iris.Party {
OrderExistError.Fail(ctx, carServiceProcessRequest)
return
}
database.Instance().Model(&models.OrderServiceRecord{}).Create(&models.OrderServiceRecord{
OrderId: carServiceProcessRequest.SubOrderId,
FilePath: carServiceProcessRequest.FileName,
Type: carServiceProcessRequest.Type,
})
var mainOrder models.OrderMain
database.Instance().Model(&models.OrderMain{}).Where("order_id = ?", subOrderInfo.MainOrderId).Find(&mainOrder)
if mainOrder.Id == 0 {
@ -118,6 +114,11 @@ func (p DefParty) carServiceProcess() web_iris.Party {
OrderError.Fail(ctx, carServiceProcessRequest)
return
}
if carServiceProcessRequest.PayAmount > 0 {
subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount
subOrderInfo.PayTime = time.Now()
subOrderInfo.PayStatus = 1
}
subOrderInfo.OrderStatus = 2
mainOrder.OrderStatus = 2
database.Instance().Save(&mainOrder)
@ -128,21 +129,35 @@ func (p DefParty) carServiceProcess() web_iris.Party {
return
}
subOrderInfo.OrderStatus = 3
subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount
if subOrderInfo.PayAmount == 0 {
subOrderInfo.PayAmount = subOrderInfo.TotalAmount
if carServiceProcessRequest.PayAmount > 0 {
subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount
subOrderInfo.PayTime = time.Now()
subOrderInfo.PayStatus = 1
}
subOrderInfo.PayTime = time.Now()
subOrderInfo.PayRemark = carServiceProcessRequest.PayRemark
database.Instance().Save(&subOrderInfo)
var count int64
database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ?", subOrderInfo.MainOrderId).Count(&count)
var countStatus int64
database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ? and status = 3", subOrderInfo.MainOrderId).Count(&countStatus)
var payStatus int64
database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ? and pay_status = 1", subOrderInfo.MainOrderId).Count(&payStatus)
if count == payStatus {
mainOrder.PayStatus = 1
database.Instance().Save(&mainOrder)
}
if count == countStatus {
mainOrder.OrderStatus = 3
database.Instance().Save(&mainOrder)
}
} else if carServiceProcessRequest.Type == 3 {
subOrderInfo.PayRemark = carServiceProcessRequest.PayRemark
database.Instance().Save(&subOrderInfo)
database.Instance().Model(&models.OrderServiceRecord{}).Create(&models.OrderServiceRecord{
OrderId: carServiceProcessRequest.SubOrderId,
FilePath: carServiceProcessRequest.FileName,
Type: carServiceProcessRequest.Type,
})
}
Success(ctx, carServiceProcessRequest, CarServiceProcessResponse{GetOrderDetail(mainOrder.OrderId)})
})

View File

@ -5,6 +5,7 @@ import (
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context"
"go.uber.org/zap"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"io"
"pet-house.com/business/models"
@ -120,7 +121,8 @@ func (p DefParty) orderCreate() web_iris.Party {
PayType: 1,
Discount: 100,
TotalAmount: totalAmount,
PayAmount: 0,
PayAmount: totalAmount,
PayTime: time.Now(),
ProjectionServiceTime: projectionServiceTime,
}
orderTotalAmount = orderTotalAmount + int(totalAmount)
@ -133,19 +135,24 @@ func (p DefParty) orderCreate() web_iris.Party {
orderMain.ProjectionServiceTime = projectionServiceTimeAll
var userInfo *models.User
database.Instance().Model(&models.User{}).Where("id = ?", headerBaseInfo.Uid).Find(&userInfo)
if userInfo.Discount > 0 {
orderTotalAmount = orderTotalAmount * (userInfo.Discount / 100)
}
tx := database.Instance().Begin()
var db4 *gorm.DB
if userInfo.Amount >= orderTotalAmount {
orderMain.PayStatus = 1
orderMain.PayTotalAmount = orderTotalAmount
userInfo.Amount = userInfo.Amount - orderTotalAmount
updateValues := map[string]interface{}{
"Amount": userInfo.Amount,
}
tx.Model(&userInfo).Updates(&updateValues)
db4 = tx.Model(&userInfo).Updates(&updateValues)
}
db := tx.Model(&models.OrderDetail{}).CreateInBatches(&orderSubDetailList, len(orderSubDetailList))
db1 := tx.Model(&models.OrderSub{}).CreateInBatches(&orderSubList, len(orderSubList))
db2 := tx.Model(&models.OrderMain{}).Create(&orderMain)
if db.Error != nil || db1.Error != nil || db2.Error != nil {
if db4.Error != nil || db.Error != nil || db1.Error != nil || db2.Error != nil {
tx.Callback()
orderLock.Unlock()
zap_server.ZAPLOG.Error("订单插入失败", zap.Any("db", db.Error), zap.Any("db1", db1.Error), zap.Any("db2", db2.Error))

View File

@ -111,6 +111,8 @@ type SystemConfig struct {
ConfigType string `json:"configType"` //类型 0banner 1关于我们 2客服电话
ContentType int `json:"contentType"` //1文本 2链接
Sort int `json:"sort"` //排序位
JumpType int `gorm:"default:0" json:"JumpType"` //跳转类型 0无法跳转 1跳转外部 2跳转内部
JumpUrl string `json:"jumpUrl"` //跳转url
CreateTime time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP" json:"-"` //创建时间
}
@ -126,6 +128,8 @@ type OrderMain struct {
ServiceRemark string `json:"serviceRemark"` //服务备注
CreateTime time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"` //创建时间
PayStatus int `gorm:"default:0" json:"payStatus"` //支付状态 0未支付 1已支付
DispatchStatus int `gorm:"default:0" json:"dispatchStatus"` //派单状态 0未派单 1已派单
PayTotalAmount int `json:"payTotalAmount"` //支付总金额
}
// OrderSub 子订单
@ -139,6 +143,7 @@ type OrderSub struct {
Discount int `json:"discount"` //折扣
TotalAmount int32 `gorm:"not null" json:"totalAmount"` //总金额
ProjectionServiceTime int `json:"projectionServiceTime"` //服务预估时长
PayStatus int `gorm:"default:0" json:"payStatus"` //支付状态 0未支付 1已支付
PayAmount int32 `json:"payAmount"` //实际支付金额
PayTime time.Time `gorm:"type:timestamp;" json:"payTime"` //支付时间
PayRemark string `json:"payRemark"` //支付备注