添加用户配送地址管理API

This commit is contained in:
gazebo
2019-10-17 13:54:32 +08:00
parent b234e26eff
commit 2483b33dc1
6 changed files with 344 additions and 13 deletions

View File

@@ -13,6 +13,14 @@ type StoreWithCityName struct {
CityName string `json:"cityName"`
}
type UserDeliveryAddressEx struct {
model.UserDeliveryAddress
UserName string
CityName string
DistrictName string
}
func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err error) {
sql := fmt.Sprintf(`
SELECT *
@@ -64,7 +72,7 @@ func GetUsers(db *DaoDB, userType int, keyword string, userIDs []string, userID2
sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Rollback(db)
defer Commit(db)
if err = GetRows(db, &userList, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db)
}
@@ -149,3 +157,54 @@ func GetStoreListByMobileOrStoreIDs(db *DaoDB, mobile string, shortRoleNameList
err = GetRows(db, &storeList, sql, sqlParams...)
return storeList, err
}
func QueryUserDeliveryAddress(db *DaoDB, userIDs []string, offset, pageSize int) (addressList []*UserDeliveryAddressEx, totalCount int, err error) {
sql := `
SELECT SQL_CALC_FOUND_ROWS
t1.*,
t2.name user_name,
district.name district_name,
city.name city_name
FROM user_delivery_address t1
LEFT JOIN user t2 ON t2.user_id = t1.user_id
LEFT JOIN place district ON district.code = t1.district_code
LEFT JOIN place city ON city.code = t1.city_code
WHERE t1.deleted_at = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
}
if len(userIDs) > 0 {
sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")"
sqlParams = append(sqlParams, userIDs)
}
offset = FormalizePageOffset(offset)
pageSize = FormalizePageSize(pageSize)
sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &addressList, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db)
}
return addressList, totalCount, err
}
func ClearUserDeliveryAddressDefault(db *DaoDB, userID string, defAddressID int) (err error) {
sql := `
UPDATE user_delivery_address t1
SET t1.is_default = 0
WHERE t1.deleted_at = ? AND t1.user_id = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
userID,
}
if defAddressID > 0 {
sql += " AND t1.id <> ?"
sqlParams = append(sqlParams, defAddressID)
}
_, err = ExecuteSQL(db, sql, sqlParams...)
return err
}

View File

@@ -112,17 +112,42 @@ type UserDeliveryAddress struct {
ModelIDCULD
UserID string `orm:"size(48);column(user_id)" json:"userID"` // 内部唯一标识
Name string `orm:"size(255)" json:"name"`
Tag string `orm:"size(32)" json:"tag"`
ConsigneeName string `orm:"size(32)" json:"consigneeName"`
ConsigneeMobile string `orm:"size(32)" json:"consigneeMobile"`
AutoAddress string `orm:"size(255)" json:"autoAddress"` // 这个是通过坐标自动获取的结构化的地址
Address string `orm:"size(255)" json:"address"` // 这个是用户手输入的详细地址
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ?
Lng int `json:"-"` // 乘了10的6次方
Lat int `json:"-"` // 乘了10的6次方
Remark string `orm:"type(text)" json:"-"`
IsDefault int8 `json:"isDefault"`
Tag string `orm:"size(32)" json:"tag"`
ConsigneeName string `orm:"size(32)" json:"consigneeName"`
ConsigneeMobile string `orm:"size(32)" json:"consigneeMobile"`
Address string `orm:"size(255)" json:"address"` // 这个是用户手输入的详细地址
Lng float64 `orm:"digits(10);decimals(6)" json:"lng"` // 乘了10的6次方
Lat float64 `orm:"digits(10);decimals(6)" json:"lat"` // 乘了10的6次方
AutoAddress string `orm:"size(255)" json:"autoAddress"` // 这个是通过坐标自动获取的结构化的地址
CityCode int `orm:"default(0);null" json:"cityCode"` // 根据坐标获得
DistrictCode int `orm:"default(0);null" json:"districtCode"` // 根据坐标获得
Remark string `orm:"type(text)" json:"remark"`
IsDefault int8 `json:"isDefault"`
}
func (*UserDeliveryAddress) TableUnique() [][]string {
return [][]string{
// []string{"UserID", "ConsigneeMobile", "DeletedAt"},
}
}
type UserCartItem struct {
ModelIDCUL
UserID string `orm:"size(48);column(user_id)" json:"userID"`
StoreID int `orm:"column(store_id)" json:"storeID"`
SkuID int `orm:"column(sku_id)"`
ActID int `orm:"column(act_id)" json:"actID"`
Count int `json:"count"`
AddedAt time.Time `orm:"auto_now_add;type(datetime)" json:"addedAt"`
}
func (*UserCartItem) TableUnique() [][]string {
return [][]string{
[]string{"UserID", "StoreID", "SkuID", "ActID"},
}
}