package common import ( "strconv" "time" "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/services/analysis/internal/dao" "lone-services/services/analysis/internal/model" ) func parseValidityTime(date string) (utils.CustomTime, error) { timeStr := date if len(date) == len("2006-01-02 15:04") { timeStr = date + ":00" } t, err := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local) if err != nil { return utils.CustomTime{}, err } return utils.CustomTime{Time: t}, nil } func BindStoreAuth(userId, storeId int64, validityTime string) error { vt, err := parseValidityTime(validityTime) if err != nil { return err } authModel := model.UserStoreAuthModel{}.Init() w := modelbase.Params{ Eq: map[string]string{ "user_id": strconv.FormatInt(userId, utils.NumberTen), "store_id": strconv.FormatInt(storeId, utils.NumberTen), "status": strconv.Itoa(int(dao.StatusEnabled)), }, } var oldList []dao.UserStoreAuth if err := authModel.Items(w, &oldList); err != nil { return err } if len(oldList) > 0 { if _, err := authModel.Edit(w, map[string]interface{}{ "status": dao.StatusDisabled, }); err != nil { return err } } return authModel.Create(&dao.UserStoreAuth{ UserId: userId, StoreId: storeId, ValidityTime: vt, Status: dao.StatusEnabled, CreatedAt: utils.Now(), }) } func ListStoreAuth(userId int64) ([]dao.UserStoreAuth, error) { var list []dao.UserStoreAuth err := model.UserStoreAuthModel{}.Init().Items(modelbase.Params{ Eq: map[string]string{ "user_id": strconv.FormatInt(userId, utils.NumberTen), "status": strconv.Itoa(int(dao.StatusEnabled)), }, }, &list) return list, err } func DisableStoreAuth(id, userId int64) (int64, error) { return model.UserStoreAuthModel{}.Init().Edit(modelbase.Params{ Eq: map[string]string{ "id": strconv.FormatInt(id, utils.NumberTen), "user_id": strconv.FormatInt(userId, utils.NumberTen), "status": strconv.Itoa(int(dao.StatusEnabled)), }, }, map[string]interface{}{ "status": dao.StatusDisabled, }) } func UpdateStoreAuthTime(id, userId int64, validityTime string) (int64, error) { vt, err := parseValidityTime(validityTime) if err != nil { return utils.NumberZero, err } return model.UserStoreAuthModel{}.Init().Edit(modelbase.Params{ Eq: map[string]string{ "id": strconv.FormatInt(id, utils.NumberTen), "user_id": strconv.FormatInt(userId, utils.NumberTen), "status": strconv.Itoa(int(dao.StatusEnabled)), }, }, map[string]interface{}{ "validity_time": vt, }) }