From ee2b52ebf1ad2107539634973b41e1e0d6ff6432 Mon Sep 17 00:00:00 2001 From: "yan.y" Date: Fri, 14 Mar 2025 14:27:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=93=E9=87=8D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/api/common.go | 51 +++++++++++------------ business/api/goods.go | 15 ++++--- business/api/pet.go | 91 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 121 insertions(+), 36 deletions(-) diff --git a/business/api/common.go b/business/api/common.go index f5913c3..d6f498e 100644 --- a/business/api/common.go +++ b/business/api/common.go @@ -130,8 +130,9 @@ var ServiceAddrMap map[int64]models.ServiceAddr var PetGoodsMap map[string][]models.PetGoods var GoodsMap map[int64]models.Goods var CarMap map[int]models.ServiceCar -var ReserveMap map[string]models.ReserveTimeFilter -var AddrServiceMap map[int64]models.AddrServiceTime + +// var ReserveMap map[string]models.ReserveTimeFilter +// var AddrServiceMap map[int64]models.AddrServiceTime var CouponsMap map[int]models.Coupons func DataInit() { @@ -143,7 +144,7 @@ func DataInit() { PetBaseInfoMapC1[value.Id] = value } PetBaseInfoMap = PetBaseInfoMapC1 - zap_server.ZAPLOG.Info("dataInit petBastInfoMap : ", zap.Any("petBastInfoMap", PetBaseInfoMap)) + //zap_server.ZAPLOG.Info("dataInit petBastInfoMap : ", zap.Any("petBastInfoMap", PetBaseInfoMap)) //--------------------------------------------------服务地址数据--------------------------------------------------------- var serviceAddrList []models.ServiceAddr database.Instance().Model(&models.ServiceAddr{}).Where("status = 1").Find(&serviceAddrList) @@ -151,8 +152,8 @@ func DataInit() { for _, value := range serviceAddrList { ServiceAddrMapC1[value.Id] = value } - ServiceAddrMap := ServiceAddrMapC1 - zap_server.ZAPLOG.Info("dataInit ServiceAddrMap : ", zap.Any("ServiceAddrMap", ServiceAddrMap)) + ServiceAddrMap = ServiceAddrMapC1 + //zap_server.ZAPLOG.Info("dataInit ServiceAddrMap : ", zap.Any("ServiceAddrMap", ServiceAddrMap)) //--------------------------------------------------宠物商品关联数据--------------------------------------------------------- var petGoodsList []models.PetGoods database.Instance().Model(&models.PetGoods{}).Where("status = 1").Find(&petGoodsList) @@ -166,7 +167,7 @@ func DataInit() { } } PetGoodsMap = PetGoodsMapC1 - zap_server.ZAPLOG.Info("dataInit petGoodsMap : ", zap.Any("petGoodsMap", PetGoodsMap)) + //zap_server.ZAPLOG.Info("dataInit petGoodsMap : ", zap.Any("petGoodsMap", PetGoodsMap)) //--------------------------------------------------商品数据--------------------------------------------------------- var goodsList []models.Goods database.Instance().Model(&models.Goods{}).Where("status = 1").Find(&goodsList) @@ -175,7 +176,7 @@ func DataInit() { GoodsMapC1[value.Id] = value } GoodsMap = GoodsMapC1 - zap_server.ZAPLOG.Info("dataInit GoodsMap : ", zap.Any("GoodsMap", GoodsMap)) + //zap_server.ZAPLOG.Info("dataInit GoodsMap : ", zap.Any("GoodsMap", GoodsMap)) var carList []models.ServiceCar database.Instance().Model(&models.ServiceCar{}).Where("car_status = 1").Find(&carList) var CarMapC1 = make(map[int]models.ServiceCar) @@ -183,23 +184,23 @@ func DataInit() { CarMapC1[value.Id] = value } CarMap = CarMapC1 - zap_server.ZAPLOG.Info("dataInit CarMap : ", zap.Any("CarMap", CarMap)) - var timesList []models.ReserveTimeFilter - database.Instance().Model(&models.ReserveTimeFilter{}).Find(×List) - var ReserveMapC1 = make(map[string]models.ReserveTimeFilter) - for _, value := range timesList { - ReserveMapC1[value.Content] = value - } - ReserveMap = ReserveMapC1 - zap_server.ZAPLOG.Info("dataInit ReserveMap : ", zap.Any("ReserveMap", ReserveMap)) - var serviceTimesList []models.AddrServiceTime - database.Instance().Model(&models.AddrServiceTime{}).Find(&serviceTimesList) - var AddrServiceMapC1 = make(map[int64]models.AddrServiceTime) - for _, value := range serviceTimesList { - AddrServiceMapC1[value.ServiceAddrId] = value - } - AddrServiceMap = AddrServiceMapC1 - zap_server.ZAPLOG.Info("dataInit AddrServiceMap : ", zap.Any("AddrServiceMap", AddrServiceMap)) + //zap_server.ZAPLOG.Info("dataInit CarMap : ", zap.Any("CarMap", CarMap)) + //var timesList []models.ReserveTimeFilter + //database.Instance().Model(&models.ReserveTimeFilter{}).Find(×List) + //var ReserveMapC1 = make(map[string]models.ReserveTimeFilter) + //for _, value := range timesList { + // ReserveMapC1[value.Content] = value + //} + //ReserveMap = ReserveMapC1 + //zap_server.ZAPLOG.Info("dataInit ReserveMap : ", zap.Any("ReserveMap", ReserveMap)) + //var serviceTimesList []models.AddrServiceTime + //database.Instance().Model(&models.AddrServiceTime{}).Find(&serviceTimesList) + //var AddrServiceMapC1 = make(map[int64]models.AddrServiceTime) + //for _, value := range serviceTimesList { + // AddrServiceMapC1[value.ServiceAddrId] = value + //} + //AddrServiceMap = AddrServiceMapC1 + //zap_server.ZAPLOG.Info("dataInit AddrServiceMap : ", zap.Any("AddrServiceMap", AddrServiceMap)) var couponsList []models.Coupons database.Instance().Model(&models.Coupons{}).Where("status = 1 and expire_time > ?", time.Now().UnixNano()/int64(time.Millisecond)).Find(&couponsList) var CouponsMapC1 = make(map[int]models.Coupons) @@ -207,7 +208,7 @@ func DataInit() { CouponsMapC1[value.Id] = value } CouponsMap = CouponsMapC1 - zap_server.ZAPLOG.Info("dataInit CouponsMap : ", zap.Any("Coupons", CouponsMap)) + //zap_server.ZAPLOG.Info("dataInit CouponsMap : ", zap.Any("Coupons", CouponsMap)) } func DataCacheJob() { diff --git a/business/api/goods.go b/business/api/goods.go index 084fdda..5eea913 100644 --- a/business/api/goods.go +++ b/business/api/goods.go @@ -55,15 +55,15 @@ func (p DefParty) goodsList() web_iris.Party { } //先取默认的商品 key := "0" + strconv.Itoa(userPetInfo.PetBaseInfo.PetType) + "0" + "0" - goodsList := getPetGoodsList(key) + goodsList := GetPetGoodsList(key) key1 := strconv.Itoa(userPetInfo.PetBaseInfo.Id) + strconv.Itoa(userPetInfo.PetBaseInfo.PetType) + strconv.Itoa(userPetInfo.PetInfo.Weight) + "0" - goodsList = append(goodsList, getPetGoodsList(key1)...) + goodsList = append(goodsList, GetPetGoodsList(key1)...) key2 := strconv.Itoa(userPetInfo.PetBaseInfo.Id) + strconv.Itoa(userPetInfo.PetBaseInfo.PetType) + strconv.Itoa(userPetInfo.PetInfo.Weight) + strconv.Itoa(userPetInfo.PetBaseInfo.Hair) - goodsList = append(goodsList, getPetGoodsList(key2)...) + goodsList = append(goodsList, GetPetGoodsList(key2)...) key3 := "0" + strconv.Itoa(userPetInfo.PetBaseInfo.PetType) + strconv.Itoa(userPetInfo.PetInfo.Weight) + strconv.Itoa(userPetInfo.PetBaseInfo.Hair) - goodsList = append(goodsList, getPetGoodsList(key3)...) + goodsList = append(goodsList, GetPetGoodsList(key3)...) key4 := "0" + strconv.Itoa(userPetInfo.PetBaseInfo.PetType) + strconv.Itoa(userPetInfo.PetInfo.Weight) + "0" - goodsList = append(goodsList, getPetGoodsList(key4)...) + goodsList = append(goodsList, GetPetGoodsList(key4)...) var goodsT1 []GoodsDetail var goodsT2 []GoodsDetail var goodsT3 []GoodsDetail @@ -110,11 +110,14 @@ func (p DefParty) goodsList() web_iris.Party { }} } -func getPetGoodsList(key string) []GoodsDetail { +func GetPetGoodsList(key string) []GoodsDetail { var goodsList []GoodsDetail baseGoodsList := PetGoodsMap[key] for _, value := range baseGoodsList { goods := GoodsMap[value.GoodsId] + if goods.Id == 0 { + continue + } goodsDetail := GoodsDetail{ Id: goods.Id, Name: goods.Name, diff --git a/business/api/pet.go b/business/api/pet.go index 7803b95..911361f 100644 --- a/business/api/pet.go +++ b/business/api/pet.go @@ -4,23 +4,27 @@ import ( "encoding/json" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/context" + "go.uber.org/zap" "io" "pet-house.com/business/models" + "pet-house.com/business/utils" "pet-house.com/core/server/database" "pet-house.com/core/server/web/web_iris" + "pet-house.com/core/server/zap_server" + "strconv" ) var CatWeightMap = map[int]string{ 1: "0-1.5kg", - 2: "1.5-3kg", + 2: "0-3kg", 3: "3-5kg", 4: "5-8kg", - //5: "8kg以上", + 6: "8kg以上", } var DogWeightMap = map[int]string{ - 1: "0-3kg", + 1: "0-5kg", 2: "3-6kg", - 3: "6-9kg", + 3: "5-9kg", 4: "9-13kg", 5: "13-18kg", 6: "18-22kg", @@ -145,7 +149,7 @@ func (p DefParty) petAddOrEdit() web_iris.Party { } else { pet.Id = petAddOrEditRequest.Id var userPetInfo models.Pet - database.Instance().Model(&models.Pet{}).Where("id = ? and uid = ?", pet.Id, headerBaseInfo.Uid).Find(&userPetInfo) + database.Instance().Model(&models.Pet{}).Where("id = ?", pet.Id).Find(&userPetInfo) var userInfo *models.User database.Instance().Model(&models.User{}).Where("id = ?", headerBaseInfo.Uid).Find(&userInfo) if userPetInfo.Id == 0 && userInfo.Role == 0 { @@ -159,6 +163,83 @@ func (p DefParty) petAddOrEdit() web_iris.Party { PetInfoNotUpdateError.Fail(ctx, petAddOrEditRequest) return } + } else { + if userPetInfo.Weight != pet.Weight { + //护理人员修改体重,需要更新对应的服务项目 + var orderMainList []models.OrderMain + database.Instance().Model(&models.OrderMain{}).Where("uid = ? and order_status in (1,2)", userPetInfo.Uid).Find(&orderMainList) + for _, orderMain := range orderMainList { + if orderMain.PayStatus == 1 { + continue + } + var orderSubList []models.OrderSub + database.Instance().Model(&models.OrderSub{}).Where("main_order_id = ? ", orderMain.OrderId).Find(&orderSubList) + for orderSubIndex, orderSub := range orderSubList { + var orderDetailList []models.OrderDetail + database.Instance().Model(&models.OrderDetail{}).Where("sub_order_id = ? ", orderSub.OrderId).Find(&orderDetailList) + for orderDetailIndex, orderDetail := range orderDetailList { + var newGoodsDetail GoodsDetail + orderGoods := GoodsMap[orderDetail.GoodsId] + var goodsList []GoodsDetail + petBaseInfo := PetBaseInfoMap[userPetInfo.PetId] + key1 := strconv.Itoa(petBaseInfo.Id) + strconv.Itoa(petBaseInfo.PetType) + strconv.Itoa(pet.Weight) + "0" + goodsList = append(goodsList, GetPetGoodsList(key1)...) + key2 := strconv.Itoa(petBaseInfo.Id) + strconv.Itoa(petBaseInfo.PetType) + strconv.Itoa(pet.Weight) + strconv.Itoa(petBaseInfo.Hair) + goodsList = append(goodsList, GetPetGoodsList(key2)...) + key3 := "0" + strconv.Itoa(petBaseInfo.PetType) + strconv.Itoa(pet.Weight) + strconv.Itoa(petBaseInfo.Hair) + goodsList = append(goodsList, GetPetGoodsList(key3)...) + key4 := "0" + strconv.Itoa(petBaseInfo.PetType) + strconv.Itoa(pet.Weight) + "0" + goodsList = append(goodsList, GetPetGoodsList(key4)...) + for _, goodsDetail := range goodsList { + //取同名称 同类型 同子类型的商品 + if goodsDetail.Name == orderGoods.Name && goodsDetail.GoodsType == orderGoods.GoodsType && goodsDetail.GoodsSubType == orderGoods.GoodsSubType { + zap_server.ZAPLOG.Info("更新体重命中的商品", zap.Any("原价", orderGoods.Price), zap.Any("Name", goodsDetail.Name), zap.Any("Price", goodsDetail.Price), zap.Any("GoodsType", goodsDetail.GoodsType), zap.Any("GoodsSubType", goodsDetail.GoodsSubType)) + newGoodsDetail = goodsDetail + break + } + } + if newGoodsDetail.Id > 0 { + zap_server.ZAPLOG.Info("订单更新前", zap.Any("orderDetailId", orderDetail.SubOrderId), zap.Any("GoodsId", orderDetail.GoodsId), zap.Any("Amount", orderDetail.Amount), zap.Any("DiscountAmount", orderDetail.DiscountAmount)) + //更新订单商品 + orderDetail.GoodsId = newGoodsDetail.Id + orderDetail.Amount = newGoodsDetail.Price + orderDetail.DiscountAmount = int(utils.RoundToOneDecimalPlace(float64(orderDetail.Amount)*(float64(orderDetail.Discount)/100.0)) * 10) + zap_server.ZAPLOG.Info("商品订单更新后", zap.Any("orderDetailId", orderDetail.SubOrderId), zap.Any("GoodsId", orderDetail.GoodsId), zap.Any("Amount", orderDetail.Amount), zap.Any("DiscountAmount", orderDetail.DiscountAmount)) + database.Instance().Model(&orderDetail).Updates(&orderDetail) + orderDetailList[orderDetailIndex] = orderDetail + } + } + var totalAmount = 0 + var goodsOriginAmount = 0 + var goodsDiscountAmount = 0 + for _, orderDetail := range orderDetailList { + if orderDetail.DiscountAmount > 0 { + goodsDiscountAmount = goodsDiscountAmount + orderDetail.DiscountAmount + } else { + goodsOriginAmount = goodsOriginAmount + orderDetail.Amount + } + totalAmount = totalAmount + orderDetail.Amount + } + zap_server.ZAPLOG.Info("子订单更新前", zap.Any("orderSubId", orderSub.OrderId), zap.Any("goodsOriginAmount", orderSub.GoodsOriginAmount), zap.Any("goodsDiscountAmount", orderSub.GoodsDiscountAmount), zap.Any("totalAmount", orderSub.TotalAmount), zap.Any("PayAmount", orderSub.PayAmount)) + orderSub.GoodsOriginAmount = goodsOriginAmount + orderSub.GoodsDiscountAmount = goodsDiscountAmount + orderSub.TotalAmount = totalAmount + orderSub.PayAmount = goodsDiscountAmount + (goodsOriginAmount * 10) + zap_server.ZAPLOG.Info("子订单更新后", zap.Any("orderSubId", orderSub.OrderId), zap.Any("goodsOriginAmount", orderSub.GoodsOriginAmount), zap.Any("goodsDiscountAmount", orderSub.GoodsDiscountAmount), zap.Any("totalAmount", orderSub.TotalAmount), zap.Any("PayAmount", orderSub.PayAmount)) + database.Instance().Model(&orderSub).Updates(&orderSub) + orderSubList[orderSubIndex] = orderSub + } + var totalAmount = 0 + for _, orderSub := range orderSubList { + totalAmount = totalAmount + orderSub.TotalAmount + } + zap_server.ZAPLOG.Info("主订单更新前", zap.Any("orderMainId", orderMain.OrderId), zap.Any("totalAmount", orderMain.TotalAmount)) + orderMain.TotalAmount = totalAmount + zap_server.ZAPLOG.Info("主订单更新后", zap.Any("orderMainId", orderMain.OrderId), zap.Any("totalAmount", orderMain.TotalAmount)) + database.Instance().Model(&orderMain).Updates(&orderMain) + } + } + } updateValues := map[string]interface{}{ "NickName": pet.NickName,