@@ -2,6 +2,7 @@ package hdl | |||||
import ( | import ( | ||||
"applet/app/customer/md" | "applet/app/customer/md" | ||||
"applet/app/customer/svc" | |||||
"applet/app/db" | "applet/app/db" | ||||
"applet/app/db/model" | "applet/app/db/model" | ||||
"applet/app/e" | "applet/app/e" | ||||
@@ -12,6 +13,7 @@ import ( | |||||
func CentralKitchenForSchoolPackage(c *gin.Context) { | func CentralKitchenForSchoolPackage(c *gin.Context) { | ||||
enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "")) | enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "")) | ||||
//1、查询出当前合适的package | //1、查询出当前合适的package | ||||
var m []model.CentralKitchenForSchoolPackage | var m []model.CentralKitchenForSchoolPackage | ||||
now := time.Now().Format("2006-01-02 15:04:05") | now := time.Now().Format("2006-01-02 15:04:05") | ||||
@@ -51,6 +53,35 @@ func CentralKitchenForSchoolPackage(c *gin.Context) { | |||||
} | } | ||||
resp = append(resp, tempResp) | resp = append(resp, tempResp) | ||||
} | } | ||||
//3、查询对应年级下餐标 | |||||
userIdentityId := c.DefaultQuery("user_identity_id", "") | |||||
if userIdentityId != "" { | |||||
err1, mealLabelListForBreakfast := svc.GetUserIdentityForGradeWithMealLabel(userIdentityId, 1) //获取早餐 | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
err1, mealLabelListForLunch := svc.GetUserIdentityForGradeWithMealLabel(userIdentityId, 2) //获取wu餐 | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
err1, mealLabelListForDinner := svc.GetUserIdentityForGradeWithMealLabel(userIdentityId, 3) //获取wu餐 | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
e.OutSuc(c, map[string]interface{}{ | |||||
"list": resp, | |||||
"meal_label_list_for_break_fast": mealLabelListForBreakfast, | |||||
"meal_label_list_for_break_lunch": mealLabelListForLunch, | |||||
"meal_label_list_for_break_dinner": mealLabelListForDinner, | |||||
}, nil) | |||||
return | |||||
} | |||||
e.OutSuc(c, map[string]interface{}{ | e.OutSuc(c, map[string]interface{}{ | ||||
"list": resp, | "list": resp, | ||||
}, nil) | }, nil) | ||||
@@ -59,6 +59,15 @@ type FindCentralKitchenForSchoolPackageReq struct { | |||||
IsOpenDinner int32 `json:"is_open_dinner"` | IsOpenDinner int32 `json:"is_open_dinner"` | ||||
IsOpenReplenish int32 `json:"is_open_replenish"` | IsOpenReplenish int32 `json:"is_open_replenish"` | ||||
} `json:"date_list" binding:"required" label:"日期"` | } `json:"date_list" binding:"required" label:"日期"` | ||||
//MealLabelListForBreakFast []MealLabelList `json:"meal_label_list_for_break_fast" label:"早餐-餐标集合"` | |||||
//MealLabelListForLunch []MealLabelList `json:"meal_label_list_for_break_lunch" label:"午餐-餐标集合"` | |||||
//MealLabelListForDinner []MealLabelList `json:"meal_label_list_for_break_dinner" label:"晚餐-餐标集合"` | |||||
} | |||||
type MealLabelList struct { | |||||
Id int `json:"id" label:"id"` | |||||
Name string `json:"name" binding:"required" label:"餐标名称"` | |||||
Price string `json:"price" binding:"required" label:"单价"` | |||||
} | } | ||||
type FindNursingHomePackageReq struct { | type FindNursingHomePackageReq struct { | ||||
@@ -1,15 +1,19 @@ | |||||
package md | package md | ||||
type BuyPackageReq struct { | type BuyPackageReq struct { | ||||
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"` | |||||
UserIdentityId int `json:"user_identity_id" binding:"required" label:"用户身份id"` | |||||
PackageId int `json:"package_id" label:"套餐ID"` | |||||
PackageIds []int `json:"package_ids" label:"套餐ID"` | |||||
Kind int `json:"kind" binding:"required" label:"购买类型(1:按学期购买 2:按月购买 3:按天购买 4:补餐)"` | |||||
IsBuyBreakfast int `json:"is_buy_breakfast" label:"是否购买早餐(1:是 2:否)"` | |||||
IsBuyLunch int `json:"is_buy_lunch" label:"是否购买午餐(1:是 2:否)"` | |||||
IsBuyDinner int `json:"is_buy_dinner" label:"是否购买晚餐(1:是 2:否)"` | |||||
WithDays []struct { | |||||
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"` | |||||
UserIdentityId int `json:"user_identity_id" binding:"required" label:"用户身份id"` | |||||
PackageId int `json:"package_id" label:"套餐ID"` | |||||
PackageIds []int `json:"package_ids" label:"套餐ID"` | |||||
Kind int `json:"kind" binding:"required" label:"购买类型(1:按学期购买 2:按月购买 3:按天购买 4:补餐)"` | |||||
IsBuyByMealLabel bool `json:"is_buy_by_meal_label" label:"是否通过餐标购买"` | |||||
IsBuyBreakfast int `json:"is_buy_breakfast" label:"是否购买早餐(1:是 2:否)"` | |||||
MealLabelIdForBreakfast int `json:"meal_label_id_for_breakfast" label:"早餐餐标id"` | |||||
IsBuyLunch int `json:"is_buy_lunch" label:"是否购买午餐(1:是 2:否)"` | |||||
MealLabelIdForLunch int `json:"meal_label_id_for_lunch" label:"午餐餐标id"` | |||||
IsBuyDinner int `json:"is_buy_dinner" label:"是否购买晚餐(1:是 2:否)"` | |||||
MealLabelIdForDinner int `json:"meal_label_id_for_dinner" label:"晚餐餐标id"` | |||||
WithDays []struct { | |||||
Date string `json:"date" label:"日期"` | Date string `json:"date" label:"日期"` | ||||
IsBuyBreakfast int `json:"is_buy_breakfast" label:"是否购买早餐(1:是 2:否)"` | IsBuyBreakfast int `json:"is_buy_breakfast" label:"是否购买早餐(1:是 2:否)"` | ||||
IsBuyLunch int `json:"is_buy_lunch" label:"是否购买午餐(1:是 2:否)"` | IsBuyLunch int `json:"is_buy_lunch" label:"是否购买午餐(1:是 2:否)"` | ||||
@@ -7,6 +7,8 @@ import ( | |||||
"applet/app/db/model" | "applet/app/db/model" | ||||
"applet/app/enum" | "applet/app/enum" | ||||
"applet/app/utils" | "applet/app/utils" | ||||
"errors" | |||||
"fmt" | |||||
"time" | "time" | ||||
) | ) | ||||
@@ -25,11 +27,45 @@ func CalcBySchoolTerm(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) | |||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
//classWithUserDb := db.ClassWithUserDb{} | |||||
//classWithUserDb.Set() | |||||
//classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
mealLabelDb := db.MealLabelDb{} | |||||
mealLabelDb.Set(buyPackageReq.EnterpriseId) | |||||
var mealLabelForBreakfast, mealLabelForLunch, mealLabelForDinner *model.MealLabel | |||||
if buyPackageReq.IsBuyBreakfast == 1 { | |||||
mealLabelForBreakfast, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForBreakfast == nil { | |||||
err = errors.New("未查询到早餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyLunch == 1 { | |||||
mealLabelForLunch, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForLunch == nil { | |||||
err = errors.New("未查询到午餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyDinner == 1 { | |||||
mealLabelForDinner, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForDinner == nil { | |||||
err = errors.New("未查询到晚餐餐标记录") | |||||
return | |||||
} | |||||
} | } | ||||
//2、查询出当前合适的package | //2、查询出当前合适的package | ||||
@@ -73,17 +109,19 @@ func CalcBySchoolTerm(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
amount = mealLabelForBreakfast.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForBreakfast.Id, | |||||
MealLabelName: mealLabelForBreakfast.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -92,18 +130,20 @@ func CalcBySchoolTerm(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
amount = mealLabelForLunch.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForLunch.Id, | |||||
MealLabelName: mealLabelForLunch.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -112,17 +152,19 @@ func CalcBySchoolTerm(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
amount = mealLabelForDinner.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForDinner.Id, | |||||
MealLabelName: mealLabelForDinner.Name, | |||||
}) | }) | ||||
} | } | ||||
} | } | ||||
@@ -146,11 +188,45 @@ func CalcByMonth(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (tota | |||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
//classWithUserDb := db.ClassWithUserDb{} | |||||
//classWithUserDb.Set() | |||||
//classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
mealLabelDb := db.MealLabelDb{} | |||||
mealLabelDb.Set(buyPackageReq.EnterpriseId) | |||||
var mealLabelForBreakfast, mealLabelForLunch, mealLabelForDinner *model.MealLabel | |||||
if buyPackageReq.IsBuyBreakfast == 1 { | |||||
mealLabelForBreakfast, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForBreakfast == nil { | |||||
err = errors.New("未查询到早餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyLunch == 1 { | |||||
mealLabelForLunch, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForLunch == nil { | |||||
err = errors.New("未查询到午餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyDinner == 1 { | |||||
mealLabelForDinner, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForDinner == nil { | |||||
err = errors.New("未查询到晚餐餐标记录") | |||||
return | |||||
} | |||||
} | } | ||||
//2、查询出当前合适的package | //2、查询出当前合适的package | ||||
@@ -194,18 +270,19 @@ func CalcByMonth(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (tota | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
amount = mealLabelForBreakfast.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForBreakfast.Id, | |||||
MealLabelName: mealLabelForBreakfast.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -214,18 +291,20 @@ func CalcByMonth(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (tota | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
amount = mealLabelForLunch.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForLunch.Id, | |||||
MealLabelName: mealLabelForLunch.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -234,17 +313,19 @@ func CalcByMonth(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (tota | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
amount = mealLabelForDinner.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForDinner.Id, | |||||
MealLabelName: mealLabelForDinner.Name, | |||||
}) | }) | ||||
} | } | ||||
} | } | ||||
@@ -267,11 +348,45 @@ func CalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalP | |||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
//classWithUserDb := db.ClassWithUserDb{} | |||||
//classWithUserDb.Set() | |||||
//classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
mealLabelDb := db.MealLabelDb{} | |||||
mealLabelDb.Set(buyPackageReq.EnterpriseId) | |||||
var mealLabelForBreakfast, mealLabelForLunch, mealLabelForDinner *model.MealLabel | |||||
if buyPackageReq.IsBuyBreakfast == 1 { | |||||
mealLabelForBreakfast, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForBreakfast == nil { | |||||
err = errors.New("未查询到早餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyLunch == 1 { | |||||
mealLabelForLunch, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForLunch == nil { | |||||
err = errors.New("未查询到午餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyDinner == 1 { | |||||
mealLabelForDinner, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForDinner == nil { | |||||
err = errors.New("未查询到晚餐餐标记录") | |||||
return | |||||
} | |||||
} | } | ||||
now := time.Now() | now := time.Now() | ||||
@@ -301,19 +416,20 @@ func CalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalP | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
amount = mealLabelForBreakfast.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForBreakfast.Id, | |||||
MealLabelName: mealLabelForBreakfast.Name, | |||||
}) | }) | ||||
totalPrice += utils.StrToFloat64(amount) | |||||
} | } | ||||
if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | ||||
@@ -321,17 +437,20 @@ func CalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalP | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
amount = mealLabelForLunch.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Amount: amount, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForLunch.Id, | |||||
MealLabelName: mealLabelForLunch.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -340,17 +459,19 @@ func CalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalP | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
amount = mealLabelForDinner.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForDinner.Id, | |||||
MealLabelName: mealLabelForDinner.Name, | |||||
}) | }) | ||||
} | } | ||||
} | } | ||||
@@ -359,12 +480,6 @@ func CalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalP | |||||
} | } | ||||
func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | ||||
//sysCfgDb := db.SysCfgDb{} | |||||
//sysCfgDb.Set() | |||||
//cfg, err := sysCfgDb.SysCfgGetOne(enum.CentralKitchenForSchoolReserveMealTime) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
//1、查询出套餐基础设置 | //1、查询出套餐基础设置 | ||||
centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | ||||
@@ -373,18 +488,46 @@ func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackag | |||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//now := time.Now() | |||||
//today, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) | |||||
//tomorrowDay := today.AddDate(0, 0, 1) | |||||
//centralKitchenForSchoolReserveMealTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" "+cfg.Val+":00", time.Local) | |||||
//classWithUserDb := db.ClassWithUserDb{} | |||||
//classWithUserDb.Set() | |||||
//classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
mealLabelDb := db.MealLabelDb{} | |||||
mealLabelDb.Set(buyPackageReq.EnterpriseId) | |||||
var mealLabelForBreakfast, mealLabelForLunch, mealLabelForDinner *model.MealLabel | |||||
if buyPackageReq.IsBuyBreakfast == 1 { | |||||
mealLabelForBreakfast, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForBreakfast == nil { | |||||
err = errors.New("未查询到早餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyLunch == 1 { | |||||
mealLabelForLunch, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForLunch == nil { | |||||
err = errors.New("未查询到午餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
if buyPackageReq.IsBuyDinner == 1 { | |||||
mealLabelForDinner, err = mealLabelDb.GetMealLabel(buyPackageReq.MealLabelIdForBreakfast) | |||||
if err != nil { | |||||
return | |||||
} | |||||
if mealLabelForDinner == nil { | |||||
err = errors.New("未查询到晚餐餐标记录") | |||||
return | |||||
} | |||||
} | |||||
//2、循环拼接数据 | //2、循环拼接数据 | ||||
for _, v1 := range buyPackageReq.WithDays { | for _, v1 := range buyPackageReq.WithDays { | ||||
@@ -407,19 +550,20 @@ func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackag | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
amount = mealLabelForBreakfast.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForBreakfast.Id, | |||||
MealLabelName: mealLabelForBreakfast.Name, | |||||
}) | }) | ||||
totalPrice += utils.StrToFloat64(amount) | |||||
} | } | ||||
if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | ||||
@@ -427,17 +571,20 @@ func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackag | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
amount = mealLabelForLunch.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Amount: amount, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForLunch.Id, | |||||
MealLabelName: mealLabelForLunch.Name, | |||||
}) | }) | ||||
} | } | ||||
@@ -446,20 +593,38 @@ func CalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackag | |||||
if isTeacher { | if isTeacher { | ||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | ||||
} else { | } else { | ||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
amount = mealLabelForDinner.Price | |||||
} | } | ||||
totalPrice += utils.StrToFloat64(amount) | totalPrice += utils.StrToFloat64(amount) | ||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | ||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
MealLabelId: mealLabelForDinner.Id, | |||||
MealLabelName: mealLabelForDinner.Name, | |||||
}) | }) | ||||
} | } | ||||
} | } | ||||
return | return | ||||
} | } | ||||
func GetUserIdentityForGradeWithMealLabel(userIdentityId string, kind int32) (err error, resp []md2.MealLabelList) { | |||||
sql := fmt.Sprintf("SELECT ml.* FROM class_with_user cwu INNER JOIN class c ON cwu.class_id = c.id INNER JOIN grade g ON c.grade_id = g.id LEFT JOIN meal_label ml ON g.id = ml.grade_id WHERE cwu.`user_identity_id`= %s AND ml.kind = %d;", userIdentityId, kind) | |||||
nativeString, err := db.QueryNativeString(db.Db, sql) | |||||
if err != nil { | |||||
return err, nil | |||||
} | |||||
for _, v := range nativeString { | |||||
resp = append(resp, md2.MealLabelList{ | |||||
Id: utils.StrToInt(v["id"]), | |||||
Name: v["name"], | |||||
Price: v["price"], | |||||
}) | |||||
} | |||||
return | |||||
} |
@@ -0,0 +1,465 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/admin/md" | |||||
md2 "applet/app/customer/md" | |||||
"applet/app/db" | |||||
"applet/app/db/model" | |||||
"applet/app/enum" | |||||
"applet/app/utils" | |||||
"time" | |||||
) | |||||
func OldCalcBySchoolTerm(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | |||||
sysCfgDb := db.SysCfgDb{} | |||||
sysCfgDb.Set() | |||||
cfg, err := sysCfgDb.SysCfgGetOne(enum.CentralKitchenForSchoolReserveMealTime) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//1、查询出套餐基础设置 | |||||
centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | |||||
centralKitchenForSchoolWithSpec.Set(buyPackageReq.EnterpriseId) | |||||
centralKitchenForSchoolWithSpecData, err := centralKitchenForSchoolWithSpec.GetCentralKitchenForSchoolWithSpec() | |||||
if err != nil { | |||||
return | |||||
} | |||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//2、查询出当前合适的package | |||||
var m []model.CentralKitchenForSchoolPackage | |||||
now := time.Now() | |||||
today, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) | |||||
tomorrowDay := today.AddDate(0, 0, 1) | |||||
err = db.Db.Where("enterprise_id =?", buyPackageReq.EnterpriseId).In("id", buyPackageReq.PackageIds).And("is_delete = 0").And("state = 1").Desc("end_date").Find(&m) | |||||
if err != nil { | |||||
return | |||||
} | |||||
centralKitchenForSchoolReserveMealTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" "+cfg.Val+":00", time.Local) | |||||
//3、循环拼接数据 | |||||
for _, v := range m { | |||||
centralKitchenForSchoolPackageWithDayDb := db.CentralKitchenForSchoolPackageWithDayDb{} | |||||
centralKitchenForSchoolPackageWithDayDb.Set(v.Id) | |||||
centralKitchenForSchoolPackageWithDay, err1 := centralKitchenForSchoolPackageWithDayDb.FindCentralKitchenForSchoolPackageWithDay() | |||||
if err1 != nil { | |||||
return | |||||
} | |||||
for _, v1 := range *centralKitchenForSchoolPackageWithDay { | |||||
//3.1、判断是否小于今天 | |||||
date, _ := time.ParseInLocation("2006-01-02", v1.Date, time.Local) | |||||
if today.After(date) || today.Equal(date) { | |||||
continue | |||||
} | |||||
if tomorrowDay.Equal(date) { | |||||
//2.2、判断是否过了明日可订餐时间 | |||||
if now.After(centralKitchenForSchoolReserveMealTime) { | |||||
continue | |||||
} | |||||
} | |||||
//3.3、计算价格 && 组装数据 | |||||
if v1.IsOpenBreakfast == md.OpenBreakfast && buyPackageReq.IsBuyBreakfast == 1 { | |||||
//早餐 | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
if v1.IsOpenLunch == md.OpenLunch && buyPackageReq.IsBuyLunch == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
if v1.IsOpenDinner == md.OpenDinner && buyPackageReq.IsBuyDinner == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
return | |||||
} | |||||
func OldCalcByMonth(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | |||||
sysCfgDb := db.SysCfgDb{} | |||||
sysCfgDb.Set() | |||||
cfg, err := sysCfgDb.SysCfgGetOne(enum.CentralKitchenForSchoolReserveMealTime) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//1、查询出套餐基础设置 | |||||
centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | |||||
centralKitchenForSchoolWithSpec.Set(buyPackageReq.EnterpriseId) | |||||
centralKitchenForSchoolWithSpecData, err := centralKitchenForSchoolWithSpec.GetCentralKitchenForSchoolWithSpec() | |||||
if err != nil { | |||||
return | |||||
} | |||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//2、查询出当前合适的package | |||||
var m []model.CentralKitchenForSchoolPackage | |||||
now := time.Now() | |||||
today, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) | |||||
tomorrowDay := today.AddDate(0, 0, 1) | |||||
err = db.Db.Where("enterprise_id =?", buyPackageReq.EnterpriseId).And("id =?", buyPackageReq.PackageId).And("is_delete = 0").And("state = 1").Find(&m) | |||||
if err != nil { | |||||
return | |||||
} | |||||
centralKitchenForSchoolReserveMealTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" "+cfg.Val+":00", time.Local) | |||||
//3、循环拼接数据 | |||||
for _, v := range m { | |||||
centralKitchenForSchoolPackageWithDayDb := db.CentralKitchenForSchoolPackageWithDayDb{} | |||||
centralKitchenForSchoolPackageWithDayDb.Set(v.Id) | |||||
centralKitchenForSchoolPackageWithDay, err1 := centralKitchenForSchoolPackageWithDayDb.FindCentralKitchenForSchoolPackageWithDay() | |||||
if err1 != nil { | |||||
return | |||||
} | |||||
for _, v1 := range *centralKitchenForSchoolPackageWithDay { | |||||
//3.1、判断是否小于今天 | |||||
date, _ := time.ParseInLocation("2006-01-02", v1.Date, time.Local) | |||||
if today.After(date) || today.Equal(date) { | |||||
continue | |||||
} | |||||
if tomorrowDay.Equal(date) { | |||||
//2.2、判断是否过了今日可订餐时间 | |||||
if now.After(centralKitchenForSchoolReserveMealTime) { | |||||
continue | |||||
} | |||||
} | |||||
//3.3、计算价格 && 组装数据 | |||||
if v1.IsOpenBreakfast == md.OpenBreakfast && buyPackageReq.IsBuyBreakfast == 1 { | |||||
//早餐 | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
if v1.IsOpenLunch == md.OpenLunch && buyPackageReq.IsBuyLunch == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Amount: amount, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
if v1.IsOpenDinner == md.OpenDinner && buyPackageReq.IsBuyDinner == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
} | |||||
} | |||||
return | |||||
} | |||||
func OldCalcByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | |||||
sysCfgDb := db.SysCfgDb{} | |||||
sysCfgDb.Set() | |||||
cfg, err := sysCfgDb.SysCfgGetOne(enum.CentralKitchenForSchoolReserveMealTime) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//1、查询出套餐基础设置 | |||||
centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | |||||
centralKitchenForSchoolWithSpec.Set(buyPackageReq.EnterpriseId) | |||||
centralKitchenForSchoolWithSpecData, err := centralKitchenForSchoolWithSpec.GetCentralKitchenForSchoolWithSpec() | |||||
if err != nil { | |||||
return | |||||
} | |||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
now := time.Now() | |||||
today, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) | |||||
tomorrowDay := today.AddDate(0, 0, 1) | |||||
centralKitchenForSchoolReserveMealTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" "+cfg.Val+":00", time.Local) | |||||
//2、循环拼接数据 | |||||
for _, v1 := range buyPackageReq.WithDays { | |||||
//2.1、判断是否小于今天 | |||||
date, _ := time.ParseInLocation("2006-01-02", v1.Date, time.Local) | |||||
if today.After(date) || today.Equal(date) { | |||||
continue | |||||
} | |||||
if tomorrowDay.Equal(date) { | |||||
//2.2、判断是否过了今日可订餐时间 | |||||
if now.After(centralKitchenForSchoolReserveMealTime) { | |||||
continue | |||||
} | |||||
} | |||||
//2.3、计算价格 && 组装数据 | |||||
if v1.IsBuyBreakfast == 1 && buyPackageReq.IsBuyBreakfast == 1 { | |||||
//早餐 | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
} | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
} | |||||
if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Amount: amount, | |||||
}) | |||||
} | |||||
if v1.IsBuyDinner == 1 && buyPackageReq.IsBuyDinner == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
} | |||||
return | |||||
} | |||||
func OldCalcSupplementaryByDay(uid int, isTeacher bool, buyPackageReq md2.BuyPackageReq) (totalPrice float64, data []*model.CentralKitchenForSchoolUserWithDay, err error) { | |||||
//sysCfgDb := db.SysCfgDb{} | |||||
//sysCfgDb.Set() | |||||
//cfg, err := sysCfgDb.SysCfgGetOne(enum.CentralKitchenForSchoolReserveMealTime) | |||||
//if err != nil { | |||||
// return | |||||
//} | |||||
//1、查询出套餐基础设置 | |||||
centralKitchenForSchoolWithSpec := db.CentralKitchenForSchoolWithSpec{} | |||||
centralKitchenForSchoolWithSpec.Set(buyPackageReq.EnterpriseId) | |||||
centralKitchenForSchoolWithSpecData, err := centralKitchenForSchoolWithSpec.GetCentralKitchenForSchoolWithSpec() | |||||
if err != nil { | |||||
return | |||||
} | |||||
classWithUserDb := db.ClassWithUserDb{} | |||||
classWithUserDb.Set() | |||||
classWithUserInfo, err := classWithUserDb.GetInfoByUserIdentityId(buyPackageReq.UserIdentityId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
//now := time.Now() | |||||
//today, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) | |||||
//tomorrowDay := today.AddDate(0, 0, 1) | |||||
//centralKitchenForSchoolReserveMealTime, _ := time.ParseInLocation("2006-01-02 15:04:05", now.Format("2006-01-02")+" "+cfg.Val+":00", time.Local) | |||||
//2、循环拼接数据 | |||||
for _, v1 := range buyPackageReq.WithDays { | |||||
//2.1、判断是否小于今天 | |||||
//date, _ := time.ParseInLocation("2006-01-02", v1.Date, time.Local) | |||||
//if today.After(date) || today.Equal(date) { | |||||
// continue | |||||
//} | |||||
//if tomorrowDay.Equal(date) { | |||||
// //2.2、判断是否过了今日可订餐时间 | |||||
// if now.After(centralKitchenForSchoolReserveMealTime) { | |||||
// continue | |||||
// } | |||||
//} | |||||
//2.3、计算价格 && 组装数据 | |||||
if v1.IsBuyBreakfast == 1 && buyPackageReq.IsBuyBreakfast == 1 { | |||||
//早餐 | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.BreakfastUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.BreakfastUnitPrice | |||||
} | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForBreakfast, | |||||
Date: v1.Date, | |||||
Amount: amount, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
} | |||||
if v1.IsBuyLunch == 1 && buyPackageReq.IsBuyLunch == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.LunchUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.LunchUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForLunch, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
Amount: amount, | |||||
}) | |||||
} | |||||
if v1.IsBuyDinner == 1 && buyPackageReq.IsBuyDinner == 1 { | |||||
var amount string | |||||
if isTeacher { | |||||
amount = centralKitchenForSchoolWithSpecData.DinnerUnitPriceForTeacher | |||||
} else { | |||||
amount = classWithUserInfo.Period.DinnerUnitPrice | |||||
} | |||||
totalPrice += utils.StrToFloat64(amount) | |||||
data = append(data, &model.CentralKitchenForSchoolUserWithDay{ | |||||
Uid: uid, | |||||
EnterpriseId: buyPackageReq.EnterpriseId, | |||||
IdentityId: buyPackageReq.UserIdentityId, | |||||
Kind: enum.CentralKitchenForSchoolUserWithDayKindForDinner, | |||||
Amount: amount, | |||||
Date: v1.Date, | |||||
State: enum.CentralKitchenForSchoolUserWithDayStateForWait, | |||||
}) | |||||
} | |||||
} | |||||
return | |||||
} |
@@ -54,27 +54,55 @@ func BuyPackageForAli(c *gin.Context, req md.BuyPackageReq) (outTradeNo, tradeNo | |||||
var totalPrice float64 | var totalPrice float64 | ||||
var data []*model.CentralKitchenForSchoolUserWithDay | var data []*model.CentralKitchenForSchoolUserWithDay | ||||
if req.Kind == 1 { | if req.Kind == 1 { | ||||
totalPrice, data, err = CalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 2 { | if req.Kind == 2 { | ||||
totalPrice, data, err = CalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 3 { | if req.Kind == 3 { | ||||
totalPrice, data, err = CalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 4 { | if req.Kind == 4 { | ||||
totalPrice, data, err = CalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
total = utils.Float64ToStr(totalPrice) | total = utils.Float64ToStr(totalPrice) | ||||
@@ -169,27 +197,55 @@ func BuyPackageForWx(c *gin.Context, req md.BuyPackageReq) (outTradeNo, total st | |||||
var totalPrice float64 | var totalPrice float64 | ||||
var data []*model.CentralKitchenForSchoolUserWithDay | var data []*model.CentralKitchenForSchoolUserWithDay | ||||
if req.Kind == 1 { | if req.Kind == 1 { | ||||
totalPrice, data, err = CalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcBySchoolTerm(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 2 { | if req.Kind == 2 { | ||||
totalPrice, data, err = CalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcByMonth(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 3 { | if req.Kind == 3 { | ||||
totalPrice, data, err = CalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
if req.Kind == 4 { | if req.Kind == 4 { | ||||
totalPrice, data, err = CalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
if req.IsBuyByMealLabel { | |||||
totalPrice, data, err = CalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} else { | |||||
totalPrice, data, err = OldCalcSupplementaryByDay(user.Id, isTeacher, req) | |||||
if err != nil { | |||||
return | |||||
} | |||||
} | } | ||||
} | } | ||||
total = utils.Float64ToStr(totalPrice) | total = utils.Float64ToStr(totalPrice) | ||||
@@ -1,13 +1,15 @@ | |||||
package model | package model | ||||
type CentralKitchenForSchoolUserWithDay struct { | type CentralKitchenForSchoolUserWithDay struct { | ||||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||||
OrdNo string `json:"ord_no" xorm:"not null default '' comment('订单号') VARCHAR(50)"` | |||||
Uid int `json:"uid" xorm:"not null default 0 comment('用户id') INT(11)"` | |||||
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('校企id') INT(11)"` | |||||
IdentityId int `json:"identity_id" xorm:"not null default 0 comment('身份id') INT(11)"` | |||||
Kind int `json:"kind" xorm:"not null default 1 comment('就餐类型(1:早餐 2:午餐 3:晚餐)') TINYINT(1)"` | |||||
Amount string `json:"amount" xorm:"not null default '' comment('金额') CHAR(50)"` | |||||
Date string `json:"date" xorm:"not null default '0000-00-00' comment('日期') CHAR(50)"` | |||||
State int `json:"state" xorm:"not null default 1 comment('状态(1:待就餐 2:已就餐 3:退款中 4:已退款)') TINYINT(1)"` | |||||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||||
OrdNo string `json:"ord_no" xorm:"not null default '' comment('订单号') VARCHAR(50)"` | |||||
Uid int `json:"uid" xorm:"not null default 0 comment('用户id') INT(11)"` | |||||
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('校企id') INT(11)"` | |||||
IdentityId int `json:"identity_id" xorm:"not null default 0 comment('身份id') INT(11)"` | |||||
Kind int `json:"kind" xorm:"not null default 1 comment('就餐类型(1:早餐 2:午餐 3:晚餐)') TINYINT(1)"` | |||||
Amount string `json:"amount" xorm:"not null default '' comment('金额') CHAR(50)"` | |||||
MealLabelId int `json:"meal_label_id" xorm:"not null default '' comment('餐标id') INT(11)"` | |||||
MealLabelName string `json:"meal_label_name" xorm:"not null default '' comment('餐标名称') CHAR(50)"` | |||||
Date string `json:"date" xorm:"not null default '0000-00-00' comment('日期') CHAR(50)"` | |||||
State int `json:"state" xorm:"not null default 1 comment('状态(1:待就餐 2:已就餐 3:退款中 4:已退款)') TINYINT(1)"` | |||||
} | } |