diff --git a/domain/model/groupPower_m/group_power_apply.go b/domain/model/groupPower_m/group_power_apply.go index 175752635ae27701983e168e15d0880a087eaabc..029d1db6f6321a1463e922fb40ee8bda7ff199a2 100644 --- a/domain/model/groupPower_m/group_power_apply.go +++ b/domain/model/groupPower_m/group_power_apply.go @@ -4,6 +4,7 @@ import ( "git.hilo.cn/hilo-common/domain" "gorm.io/gorm" "hilo-group/myerr" + "hilo-group/myerr/bizerr" "time" ) @@ -17,12 +18,14 @@ type GroupPowerApplyJoin struct { } func InsertGroupPowerApplyJoin(model *domain.Model, userId, familyId uint64) error { - nowTime := time.Now() - sql := "insert into group_power_apply_join(user_id,group_power_id,is_accept,created_time,updated_time) " + - "value(?,?,?,?,?) on duplicate key update is_accept=?,created_time=?,updated_time=?" - err := model.Db.Exec(sql, userId, familyId, 0, nowTime, nowTime, 0, nowTime, nowTime).Error - if err != nil { - return myerr.WrapErr(err) + sql := "insert into group_power_apply_join(user_id,group_power_id,is_accept) " + + "select ?, ?, ? where not exists (select id from group_power_apply_join where user_id=? and group_power_id=? and is_accept=0)" + result := model.Db.Exec(sql, userId, familyId, 0, userId, familyId) + if result.Error != nil { + return myerr.WrapErr(result.Error) + } + if result.RowsAffected <= 0 { + return myerr.WrapErr(bizerr.GroupPowerHaveAlreadyApply) } return nil } diff --git a/myerr/bizerr/bizCode.go b/myerr/bizerr/bizCode.go index 664624a0aed30423b4ec0a08ef156ef62b5f4ea4..df59a3c8b5ce31599a97e108e1d1035cc76c4765 100644 --- a/myerr/bizerr/bizCode.go +++ b/myerr/bizerr/bizCode.go @@ -84,6 +84,7 @@ var ( GroupPowerHaveNoJoin = myerr.NewBusinessCode(15011, "You have no joined power", myerr.BusinessData{}) // 还未加入国家势力 GroupPowerHaveNoPower = myerr.NewBusinessCode(15012, "You have no power", myerr.BusinessData{}) // 没有权限 GroupPowerHaveNoApply = myerr.NewBusinessCode(15013, "User have no apply", myerr.BusinessData{}) // 没有找到申请 + GroupPowerHaveAlreadyApply = myerr.NewBusinessCode(15014, "Already applied", myerr.BusinessData{}) // 已经申请过 TaskHasAward = myerr.NewBusinessCode(19001, "task has award", myerr.BusinessData{}) diff --git a/mysql/3.5.0.sql b/mysql/3.5.0.sql index 418d74a3c58bf010148a3ddaee1693868a26fed6..57294c2ee506362162772bf5d8c672d1024c0050 100644 --- a/mysql/3.5.0.sql +++ b/mysql/3.5.0.sql @@ -27,6 +27,6 @@ CREATE TABLE `group_power_apply_join` ( `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `is_accept` tinyint NOT NULL DEFAULT '0' COMMENT '是否已经接受', PRIMARY KEY (`id`), - UNIQUE KEY `u_apply` (`user_id`,`group_power_id`) USING BTREE, - KEY `group_power_id` (`group_power_id`) + KEY `group_power_id` (`group_power_id`), + KEY `user_id` (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='申请加入家族'; \ No newline at end of file