package service import ( "encoding/json" "errors" "pure/global" "pure/model" "pure/model/request" "pure/model/response" ) func GetUserAddressList(userID string, info *request.ReqAddress) (error, any) { var ( err error list []model.Address ) db := global.MG_DB.Model(&model.Address{}).Where("user_id=?", userID) if info.ID != 0 { db = db.Where("id=?", info.ID) } err = db.Find(&list).Error if err != nil { return errors.New("获取收货地址失败"), nil } return nil, list } func AddUserAddressList(userID string, data *model.Address) error { var ( err error ) data.UserID = userID if data.FirstName == "" || data.LastName == "" || data.Bldg == "" || data.City == "" || data.Street == "" || data.State == "" || data.ZipCode == "" { return errors.New("有必填项未填写") } if len(data.FirstName) > 255 { return errors.New("FirstName长度超出限制") } if len(data.LastName) > 255 { return errors.New("LastName长度超出限制") } if len(data.Street) > 255 { return errors.New("Street长度超出限制") } if len(data.Bldg) > 255 { return errors.New("Bldg长度超出限制") } if len(data.City) > 255 { return errors.New("City长度超出限制") } if len(data.State) > 255 { return errors.New("State长度超出限制") } if len(data.ZipCode) > 255 { return errors.New("ZipCode长度超出限制") } if len(data.Phone) > 20 { return errors.New("Phone长度超出限制") } if data.Default == 1 { global.MG_DB.Model(&model.Address{}).Where("user_id=?", userID).Update("default", 2) } err = global.MG_DB.Model(&model.Address{}).Create(data).Error if err != nil { return errors.New("添加收货地址失败") } return nil } func UpdateAddress(userID string, data *model.Address) error { var ( err error ) if data.FirstName == "" || data.LastName == "" || data.Bldg == "" || data.City == "" || data.Street == "" || data.State == "" || data.ZipCode == "" { return errors.New("有必填项未填写") } if len(data.FirstName) > 255 { return errors.New("FirstName长度超出限制") } if len(data.LastName) > 255 { return errors.New("LastName长度超出限制") } if len(data.Street) > 255 { return errors.New("Street长度超出限制") } if len(data.Bldg) > 255 { return errors.New("Bldg长度超出限制") } if len(data.City) > 255 { return errors.New("City长度超出限制") } if len(data.State) > 255 { return errors.New("State长度超出限制") } if len(data.ZipCode) > 255 { return errors.New("ZipCode长度超出限制") } if len(data.Phone) > 20 { return errors.New("Phone长度超出限制") } data.UserID = userID if data.Default == 1 { global.MG_DB.Model(&model.Address{}).Where("user_id=?", userID).Update("default", 2) } err = global.MG_DB.Model(&model.Address{}).Where("user_id=? and id=?", userID, data.ID).Updates(data).Error if err != nil { return errors.New("修改收货地址失败") } return nil } func DeleteAddress(userID string, ID *global.BASE_ID) error { var ( err error ) err = global.MG_DB.Model(&model.Address{}).Where("user_id=? and id=?", userID, ID.ID).Delete(&model.Address{}).Error if err != nil { return errors.New("删除收货地址失败") } return nil } func GetUsSelect() (error, any) { var ( err error list []model.UsSelect data []model.UsCitys ) err = global.MG_DB.Model(&model.UsStates{}).Find(&list).Error if err != nil { return errors.New("获取地址失败"), nil } err = global.MG_DB.Model(&model.UsCitys{}).Find(&data).Error if err != nil { return errors.New("获取地址失败"), nil } for v := range list { for x := range data { if data[x].IDState == list[v].ID { list[v].Child = append(list[v].Child, data[x]) } } } return nil, list } func GetTrack(trackId int64) ([]response.TrackItem, error) { var list []response.TrackItem var values []model.TrackValue var track model.Track err := global.MG_DB.Model(&model.Track{}).Where("id=?", trackId).First(&track).Error if err != nil { return list, err } err = json.Unmarshal([]byte(track.Value), &values) if err != nil { return list, err } for _, v := range values { list = append(list, response.TrackItem{ CheckpointDate: v.CheckpointDate, DeliveryStatus: v.CheckpointDeliveryStatus, TrackingDetail: v.TrackingDetail, DeliveryStatusCn: toDeliveryStatus(v.CheckpointDeliveryStatus), }) } return list, nil } func toDeliveryStatus(status string) string { switch status { case "transit": return "运输途中" case "pickup": return "到达待取" case "delivered": return "已签收" } return "" }