diff --git a/short_drama.db b/short_drama.db index f763fb4..ad15d6b 100644 Binary files a/short_drama.db and b/short_drama.db differ diff --git a/shortdrama/dao/user_dao.go b/shortdrama/dao/user_dao.go index c7f96b3..2f79b58 100644 --- a/shortdrama/dao/user_dao.go +++ b/shortdrama/dao/user_dao.go @@ -50,30 +50,24 @@ func init() { if len(r) > 0 { userVersion = r[0]["user_version"].Int() } - if userVersion < 1 { + if userVersion == 0 { g.Log().Info(ctx, "migration: convert historical UTC time data to local timezone") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameDrama+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameEpisode+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameScene+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameCharacter+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameProp+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameBackgroundMusic+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameModelConfig+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameGenerationTask+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentConfig+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours')") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentOrder+" SET paid_at = datetime(paid_at, '+8 hours') WHERE paid_at IS NOT NULL") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentOrder+" SET updated_at = datetime(updated_at, '+8 hours') WHERE updated_at IS NOT NULL") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameUser+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours') WHERE username = 'admin'") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameAccountTransaction+" SET created_at = datetime(created_at, '+8 hours') WHERE created_at IS NOT NULL") - _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentChannelTrade+" SET created_at = datetime(created_at, '+8 hours') WHERE created_at IS NOT NULL") - _, _ = g.DB().Exec(ctx, "PRAGMA user_version = 1") + g.DB().Exec(ctx, "UPDATE "+public.TableNameUser+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours') WHERE created_at LIKE '%-%T%:%.%Z' OR created_at LIKE '%-%T%:%s%z'") + g.DB().Exec(ctx, "UPDATE "+public.TableNameAccountTransaction+" SET created_at = datetime(created_at, '+8 hours') WHERE created_at LIKE '%-%T%:%.%Z' OR created_at LIKE '%-%T%:%s%z' AND created_at IS NOT NULL") + g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentOrder+" SET created_at = datetime(created_at, '+8 hours'), updated_at = datetime(updated_at, '+8 hours'), paid_at = datetime(paid_at, '+8 hours') WHERE created_at LIKE '%-%T%:%.%Z' OR created_at LIKE '%-%T%:%s%z'") + g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentConfig+" SET created_at = datetime(created_at, '+8 hours') WHERE created_at LIKE '%-%T%:%.%Z' OR created_at LIKE '%-%T%:%s%z'") + g.DB().Exec(ctx, "UPDATE "+public.TableNamePaymentChannelTrade+" SET created_at = datetime(created_at, '+8 hours') WHERE created_at LIKE '%-%T%:%.%Z' OR created_at LIKE '%-%T%:%s%z'") + g.DB().Exec(ctx, "PRAGMA user_version = 1") } + + // 补充 province 字段到各表的 DDL(仅针对在 province 列存在前入库的老数据) + _, _ = g.DB().Exec(ctx, "UPDATE "+public.TableNameUser+" SET province = region WHERE province = '' AND region != ''") } func (d *userDao) Insert(ctx context.Context, data *entity.User) (int64, error) { r, err := g.DB().Exec(ctx, - "INSERT INTO "+public.TableNameUser+" (role, username, phone, password, name, region, address, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now','localtime'), datetime('now','localtime'))", - data.Role, data.Username, data.Phone, data.Password, data.Name, data.Region, data.Address) + "INSERT INTO "+public.TableNameUser+" (role, username, phone, password, name, province, region, address, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, datetime('now','localtime'), datetime('now','localtime'))", + data.Role, data.Username, data.Phone, data.Password, data.Name, data.Province, data.Region, data.Address) if err != nil { return 0, err } @@ -119,12 +113,9 @@ func (d *userDao) GetByAccount(ctx context.Context, account string) (*entity.Use func (d *userDao) GetByPhone(ctx context.Context, phone string) (*entity.User, error) { var u entity.User err := g.DB().Model(public.TableNameUser).Ctx(ctx).Where("phone", phone).Scan(&u) - if err != nil { + if err != nil || u.Id == 0 { return nil, err } - if u.Phone == "" { - return nil, nil - } return &u, nil } @@ -139,25 +130,31 @@ func (d *userDao) UpdateFields(ctx context.Context, id int64, data g.Map) error } func (d *userDao) ListByRole(ctx context.Context, role string, page, pageSize int) ([]*entity.User, int, error) { - m := g.DB().Model(public.TableNameUser).Ctx(ctx).Where("role", role) - count, err := m.Count() + total, err := g.DB().Model(public.TableNameUser).Ctx(ctx).Where("role", role).Count() if err != nil { return nil, 0, err } - var list []*entity.User - err = m.Page(page, pageSize).OrderAsc("id").Scan(&list) - return list, count, err + var users []*entity.User + err = g.DB().Model(public.TableNameUser).Ctx(ctx).Where("role", role).Page(page, pageSize).OrderAsc("id").Scan(&users) + return users, total, err } func (d *userDao) ListByAgent(ctx context.Context, agentId int64, page, pageSize int) ([]*entity.User, int, error) { - m := g.DB().Model(public.TableNameUser).Ctx(ctx). - InnerJoin(public.TableNameCustomerProfile, "cp", "cp.user_id = "+public.TableNameUser+".id"). - Where("cp.agent_id", agentId) - count, err := m.Count() + // 查询指定代理商名下的客户 + total, err := g.DB().Model(public.TableNameUser+" u"). + InnerJoin(public.TableNameCustomerProfile+" cp", "cp.user_id = u.id"). + Where("cp.agent_id", agentId). + Count() if err != nil { return nil, 0, err } - var list []*entity.User - err = m.Page(page, pageSize).OrderAsc(public.TableNameUser + ".id").Scan(&list) - return list, count, err + var users []*entity.User + err = g.DB().Model(public.TableNameUser+" u"). + InnerJoin(public.TableNameCustomerProfile+" cp", "cp.user_id = u.id"). + Where("cp.agent_id", agentId). + Fields("u.*"). + Page(page, pageSize). + OrderAsc("u.id"). + Scan(&users) + return users, total, err } diff --git a/shortdrama/service/auth_service.go b/shortdrama/service/auth_service.go index 8227ee7..b45cc4b 100644 --- a/shortdrama/service/auth_service.go +++ b/shortdrama/service/auth_service.go @@ -35,7 +35,7 @@ func init() { ctx := context.Background() adminExisting, _ := dao.User.GetByUsername(ctx, "admin") if adminExisting == nil { - hash, _ := bcrypt.GenerateFromPassword([]byte("admin123"), bcrypt.DefaultCost) + hash, _ := bcrypt.GenerateFromPassword([]byte("Tongli686^*^"), bcrypt.DefaultCost) _, _ = g.DB().Model("user").Ctx(ctx).Data(g.Map{ "role": "admin", "username": "admin", @@ -45,7 +45,7 @@ func init() { } test1Existing, _ := dao.User.GetByUsername(ctx, "test1") if test1Existing == nil { - hash, _ := bcrypt.GenerateFromPassword([]byte("admin123"), bcrypt.DefaultCost) + hash, _ := bcrypt.GenerateFromPassword([]byte("Tongli686^*^"), bcrypt.DefaultCost) _, _ = g.DB().Model("user").Ctx(ctx).Data(g.Map{ "role": "agent", "username": "test1",