| @ -0,0 +1,81 @@ | |||
| package productrpc | |||
| import ( | |||
| "strconv" | |||
| "time" | |||
| ) | |||
| /* | |||
| * 检查商品状态 | |||
| * 2020/09/16 | |||
| */ | |||
| func CheckStatus(productInfo map[string]string, arrival_time string) (int, string) { | |||
| if productInfo["Status"] == "0" { //是否在售 | |||
| return 8405, "商品已下架" | |||
| if productInfo["Status"] == "2" { //是否在售 | |||
| return 8405, "商品已售罄" | |||
| } | |||
| } | |||
| if productInfo["Status"] != "1" { //是否在售 | |||
| return 8405, "商品未上架" | |||
| } | |||
| if productInfo["AutoOnSale"] == "1" { | |||
| if productInfo["EndSaleTime"] != "0" && productInfo["EndSaleTime"] != "" { //销售截止日期 | |||
| end_sale_time, _ := strconv.ParseInt(productInfo["EndSaleTime"], 10, 64) | |||
| if time.Unix(end_sale_time, 0).Before(time.Now()) { //截止日期在当前时间之前 | |||
| return 8407, "商品已过有效期" | |||
| } | |||
| } | |||
| if productInfo["StartSaleTime"] != "0" && productInfo["StartSaleTime"] != "" { //销售开始日期 | |||
| end_sale_time, _ := strconv.ParseInt(productInfo["StartSaleTime"], 10, 64) | |||
| if time.Unix(end_sale_time, 0).After(time.Now()) { //开始日期在当前时间之后 | |||
| return 8406, "商品未开售" | |||
| } | |||
| } | |||
| } | |||
| if productInfo["ValidityType"] == "1" { //用户选定使用日期 | |||
| if arrival_time == "" { | |||
| return 10005, "请选择使用日期" | |||
| } else { | |||
| advance, _ := strconv.Atoi(productInfo["Advance"]) //提前几天 | |||
| arrival_time_int64, err := strconv.ParseInt(arrival_time, 10, 64) | |||
| var release_time_int64, end_time_int64 int64 = 0, 0 | |||
| now := time.Now().Unix() | |||
| if err != nil { // 转换失败 | |||
| return 10005, "日期错误" | |||
| } | |||
| if arrival_time_int64 < now { //不能在当前时间之前 | |||
| return 10005, "日期选择错误" | |||
| } | |||
| if productInfo["Releasetime"] != "" && productInfo["Releasetime"] != "0" { | |||
| release_time_int64, _ = strconv.ParseInt(productInfo["Releasetime"], 10, 64) | |||
| } | |||
| if productInfo["Endtime"] != "" && productInfo["Endtime"] != "0" { | |||
| end_time_int64, err = strconv.ParseInt(productInfo["Endtime"], 10, 64) | |||
| if err == nil { | |||
| if advance > 0 { | |||
| end_time_int64 = end_time_int64 - int64(advance*24*3600) //提前几天截止预约 | |||
| if end_time_int64 < now { | |||
| return 8409, "已截止购买" | |||
| } | |||
| } | |||
| } | |||
| } | |||
| if release_time_int64 > 0 && arrival_time_int64 < release_time_int64 { //未到服务时间 | |||
| return 10006, "请选择" + time.Unix(release_time_int64, 0).Format("2006-01-02") + "之后的日期" | |||
| } | |||
| if end_time_int64 > 0 { | |||
| if arrival_time_int64 > end_time_int64 { //已过服务时间 | |||
| return 10006, "请选择" + time.Unix(end_time_int64, 0).Format("2006-01-02") + "之前的日期" | |||
| } | |||
| } | |||
| } | |||
| } | |||
| return 0, "" | |||
| } | |||