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 { type GetUserInfoResponse struct {
Uid int64 `json:"uid"` Uid int64 `json:"uid"`
NickName string `json:"nickName"` NickName string `json:"nickName"`
HeadImgUrl string `json:"headImgUrl"` HeadImgUrl string `json:"headImgUrl"`
Discount float32 `json:"discount"` Discount float32 `json:"discount"`
Amount int `json:"amount"` Amount int `json:"amount"`
Role int `json:"role"` Role int `json:"role"`
UserPets []UserPetInfo `json:"userPets"` UserPets []UserPetInfo `json:"userPets"`
Car models.ServiceCar `json:"car"`
} }
// 获取用户信息 // 获取用户信息
@ -188,6 +189,12 @@ func (p DefParty) getUserInfo() web_iris.Party {
if getUserInfoResponse.Amount == 0 { if getUserInfoResponse.Amount == 0 {
getUserInfoResponse.Discount = 1 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) Success(ctx, headerInfo, getUserInfoResponse)
}) })
}} }}

View File

@ -47,9 +47,9 @@ func (p DefParty) carServiceOrderList() web_iris.Party {
} }
var orderMains []models.OrderMain var orderMains []models.OrderMain
if carServiceOrderListRequest.Status == 0 { 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 { } 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 var orderDetails []OrderDetail
for _, value := range orderMains { for _, value := range orderMains {
@ -102,11 +102,7 @@ func (p DefParty) carServiceProcess() web_iris.Party {
OrderExistError.Fail(ctx, carServiceProcessRequest) OrderExistError.Fail(ctx, carServiceProcessRequest)
return return
} }
database.Instance().Model(&models.OrderServiceRecord{}).Create(&models.OrderServiceRecord{
OrderId: carServiceProcessRequest.SubOrderId,
FilePath: carServiceProcessRequest.FileName,
Type: carServiceProcessRequest.Type,
})
var mainOrder models.OrderMain var mainOrder models.OrderMain
database.Instance().Model(&models.OrderMain{}).Where("order_id = ?", subOrderInfo.MainOrderId).Find(&mainOrder) database.Instance().Model(&models.OrderMain{}).Where("order_id = ?", subOrderInfo.MainOrderId).Find(&mainOrder)
if mainOrder.Id == 0 { if mainOrder.Id == 0 {
@ -118,6 +114,11 @@ func (p DefParty) carServiceProcess() web_iris.Party {
OrderError.Fail(ctx, carServiceProcessRequest) OrderError.Fail(ctx, carServiceProcessRequest)
return return
} }
if carServiceProcessRequest.PayAmount > 0 {
subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount
subOrderInfo.PayTime = time.Now()
subOrderInfo.PayStatus = 1
}
subOrderInfo.OrderStatus = 2 subOrderInfo.OrderStatus = 2
mainOrder.OrderStatus = 2 mainOrder.OrderStatus = 2
database.Instance().Save(&mainOrder) database.Instance().Save(&mainOrder)
@ -128,21 +129,35 @@ func (p DefParty) carServiceProcess() web_iris.Party {
return return
} }
subOrderInfo.OrderStatus = 3 subOrderInfo.OrderStatus = 3
subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount if carServiceProcessRequest.PayAmount > 0 {
if subOrderInfo.PayAmount == 0 { subOrderInfo.PayAmount = carServiceProcessRequest.PayAmount
subOrderInfo.PayAmount = subOrderInfo.TotalAmount subOrderInfo.PayTime = time.Now()
subOrderInfo.PayStatus = 1
} }
subOrderInfo.PayTime = time.Now()
subOrderInfo.PayRemark = carServiceProcessRequest.PayRemark subOrderInfo.PayRemark = carServiceProcessRequest.PayRemark
database.Instance().Save(&subOrderInfo) database.Instance().Save(&subOrderInfo)
var count int64 var count int64
database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ?", subOrderInfo.MainOrderId).Count(&count) database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ?", subOrderInfo.MainOrderId).Count(&count)
var countStatus int64 var countStatus int64
database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ? and status = 3", subOrderInfo.MainOrderId).Count(&countStatus) 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 { if count == countStatus {
mainOrder.OrderStatus = 3 mainOrder.OrderStatus = 3
database.Instance().Save(&mainOrder) 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)}) Success(ctx, carServiceProcessRequest, CarServiceProcessResponse{GetOrderDetail(mainOrder.OrderId)})
}) })

View File

@ -5,6 +5,7 @@ import (
"github.com/kataras/iris/v12" "github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/context" "github.com/kataras/iris/v12/context"
"go.uber.org/zap" "go.uber.org/zap"
"gorm.io/gorm"
"gorm.io/gorm/clause" "gorm.io/gorm/clause"
"io" "io"
"pet-house.com/business/models" "pet-house.com/business/models"
@ -120,7 +121,8 @@ func (p DefParty) orderCreate() web_iris.Party {
PayType: 1, PayType: 1,
Discount: 100, Discount: 100,
TotalAmount: totalAmount, TotalAmount: totalAmount,
PayAmount: 0, PayAmount: totalAmount,
PayTime: time.Now(),
ProjectionServiceTime: projectionServiceTime, ProjectionServiceTime: projectionServiceTime,
} }
orderTotalAmount = orderTotalAmount + int(totalAmount) orderTotalAmount = orderTotalAmount + int(totalAmount)
@ -133,19 +135,24 @@ func (p DefParty) orderCreate() web_iris.Party {
orderMain.ProjectionServiceTime = projectionServiceTimeAll orderMain.ProjectionServiceTime = projectionServiceTimeAll
var userInfo *models.User var userInfo *models.User
database.Instance().Model(&models.User{}).Where("id = ?", headerBaseInfo.Uid).Find(&userInfo) database.Instance().Model(&models.User{}).Where("id = ?", headerBaseInfo.Uid).Find(&userInfo)
if userInfo.Discount > 0 {
orderTotalAmount = orderTotalAmount * (userInfo.Discount / 100)
}
tx := database.Instance().Begin() tx := database.Instance().Begin()
var db4 *gorm.DB
if userInfo.Amount >= orderTotalAmount { if userInfo.Amount >= orderTotalAmount {
orderMain.PayStatus = 1 orderMain.PayStatus = 1
orderMain.PayTotalAmount = orderTotalAmount
userInfo.Amount = userInfo.Amount - orderTotalAmount userInfo.Amount = userInfo.Amount - orderTotalAmount
updateValues := map[string]interface{}{ updateValues := map[string]interface{}{
"Amount": userInfo.Amount, "Amount": userInfo.Amount,
} }
tx.Model(&userInfo).Updates(&updateValues) db4 = tx.Model(&userInfo).Updates(&updateValues)
} }
db := tx.Model(&models.OrderDetail{}).CreateInBatches(&orderSubDetailList, len(orderSubDetailList)) db := tx.Model(&models.OrderDetail{}).CreateInBatches(&orderSubDetailList, len(orderSubDetailList))
db1 := tx.Model(&models.OrderSub{}).CreateInBatches(&orderSubList, len(orderSubList)) db1 := tx.Model(&models.OrderSub{}).CreateInBatches(&orderSubList, len(orderSubList))
db2 := tx.Model(&models.OrderMain{}).Create(&orderMain) 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() tx.Callback()
orderLock.Unlock() orderLock.Unlock()
zap_server.ZAPLOG.Error("订单插入失败", zap.Any("db", db.Error), zap.Any("db1", db1.Error), zap.Any("db2", db2.Error)) 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客服电话 ConfigType string `json:"configType"` //类型 0banner 1关于我们 2客服电话
ContentType int `json:"contentType"` //1文本 2链接 ContentType int `json:"contentType"` //1文本 2链接
Sort int `json:"sort"` //排序位 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:"-"` //创建时间 CreateTime time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP" json:"-"` //创建时间
} }
@ -126,6 +128,8 @@ type OrderMain struct {
ServiceRemark string `json:"serviceRemark"` //服务备注 ServiceRemark string `json:"serviceRemark"` //服务备注
CreateTime time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"` //创建时间 CreateTime time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP" json:"createTime"` //创建时间
PayStatus int `gorm:"default:0" json:"payStatus"` //支付状态 0未支付 1已支付 PayStatus int `gorm:"default:0" json:"payStatus"` //支付状态 0未支付 1已支付
DispatchStatus int `gorm:"default:0" json:"dispatchStatus"` //派单状态 0未派单 1已派单
PayTotalAmount int `json:"payTotalAmount"` //支付总金额
} }
// OrderSub 子订单 // OrderSub 子订单
@ -139,6 +143,7 @@ type OrderSub struct {
Discount int `json:"discount"` //折扣 Discount int `json:"discount"` //折扣
TotalAmount int32 `gorm:"not null" json:"totalAmount"` //总金额 TotalAmount int32 `gorm:"not null" json:"totalAmount"` //总金额
ProjectionServiceTime int `json:"projectionServiceTime"` //服务预估时长 ProjectionServiceTime int `json:"projectionServiceTime"` //服务预估时长
PayStatus int `gorm:"default:0" json:"payStatus"` //支付状态 0未支付 1已支付
PayAmount int32 `json:"payAmount"` //实际支付金额 PayAmount int32 `json:"payAmount"` //实际支付金额
PayTime time.Time `gorm:"type:timestamp;" json:"payTime"` //支付时间 PayTime time.Time `gorm:"type:timestamp;" json:"payTime"` //支付时间
PayRemark string `json:"payRemark"` //支付备注 PayRemark string `json:"payRemark"` //支付备注