Fix user preferences

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-04-19 01:25:48 +08:00
parent 2cd6100843
commit 09c2f10a77
2 changed files with 146 additions and 84 deletions
Binary file not shown.
+146 -84
View File
@@ -219,13 +219,13 @@ func ApiHandler(ctx *gin.Context) {
case "unitAll": case "unitAll":
// key = "unit_list_result" // key = "unit_list_result"
unitsData := []model.Active{} unitsData := []model.Active{}
err = MainEng.Table("common_unit_m").Select("*").Find(&unitsData) err = MainEng.Table("common_unit_m").Find(&unitsData)
if err != nil { if err != nil {
panic(err) panic(err)
} }
userUnits := []model.Active{} userUnits := []model.Active{}
err = UserEng.Table("user_unit_m").Select("*").Find(&userUnits) err = UserEng.Table("user_unit_m").Find(&userUnits)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -705,11 +705,14 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err) CheckErr(err)
case "user": case "user":
// key = "user_intro_result" // key = "user_intro_result"
var uId, oId int
_, err := UserEng.Table("user_preference_m").Where("user_id = ?", ctx.GetString("userid")).Cols("user_id,unit_owning_user_id").Get(&uId, &oId)
CheckErr(err)
userIntroResp := model.UserNaviResp{ userIntroResp := model.UserNaviResp{
Result: model.UserNaviResult{ Result: model.UserNaviResult{
User: model.User{ User: model.User{
UserID: 9999999, UserID: uId,
UnitOwningUserID: 41674, UnitOwningUserID: oId,
}, },
}, },
Status: 200, Status: 200,
@@ -732,25 +735,26 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err) CheckErr(err)
case "award": case "award":
// key = "award_result" // key = "award_result"
sql := `SELECT award_id FROM award_m ORDER BY award_id ASC` var aIdList []int
rows, err := MainEng.DB().Query(sql) err := MainEng.Table("award_m").Cols("award_id").Find(&aIdList)
CheckErr(err) CheckErr(err)
defer rows.Close() var aId int
_, err = UserEng.Table("user_preference_m").Where("user_id = ?", ctx.GetString("userid")).Cols("award_id").Get(&aId)
CheckErr(err)
awardsList := []model.AwardInfo{} awardsList := []model.AwardInfo{}
for rows.Next() { for _, id := range aIdList {
var aId int
err = rows.Scan(&aId)
CheckErr(err)
isSet := false isSet := false
if aId == 113 { // 极推穗乃果 if id == aId {
isSet = true isSet = true
} }
awardsList = append(awardsList, model.AwardInfo{ awardsList = append(awardsList, model.AwardInfo{
AwardID: aId, AwardID: id,
IsSet: isSet, IsSet: isSet,
InsertDate: time.Now().Format("2006-01-02 03:04:05"), InsertDate: time.Now().Format("2006-01-02 03:04:05"),
}) })
} }
awardResp := model.AwardInfoResp{ awardResp := model.AwardInfoResp{
Result: model.AwardInfoResult{ Result: model.AwardInfoResult{
AwardInfo: awardsList, AwardInfo: awardsList,
@@ -763,25 +767,26 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err) CheckErr(err)
case "background": case "background":
// key = "background_result" // key = "background_result"
sql := `SELECT background_id FROM background_m ORDER BY background_id ASC` var bIdList []int
rows, err := MainEng.DB().Query(sql) err := MainEng.Table("background_m").Cols("background_id").Find(&bIdList)
CheckErr(err) CheckErr(err)
defer rows.Close() var bId int
_, err = UserEng.Table("user_preference_m").Where("user_id = ?", ctx.GetString("userid")).Cols("background_id").Get(&bId)
CheckErr(err)
backgroundsList := []model.BackgroundInfo{} backgroundsList := []model.BackgroundInfo{}
for rows.Next() { for _, id := range bIdList {
var bId int
err = rows.Scan(&bId)
CheckErr(err)
isSet := false isSet := false
if bId == 143 { // 穗乃果的房间[情人节] if id == bId {
isSet = true isSet = true
} }
backgroundsList = append(backgroundsList, model.BackgroundInfo{ backgroundsList = append(backgroundsList, model.BackgroundInfo{
BackgroundID: bId, BackgroundID: id,
IsSet: isSet, IsSet: isSet,
InsertDate: time.Now().Format("2006-01-02 03:04:05"), InsertDate: time.Now().Format("2006-01-02 03:04:05"),
}) })
} }
backgroundResp := model.BackgroundInfoResp{ backgroundResp := model.BackgroundInfoResp{
Result: model.BackgroundInfoResult{ Result: model.BackgroundInfoResult{
BackgroundInfo: backgroundsList, BackgroundInfo: backgroundsList,
@@ -968,6 +973,63 @@ func ApiHandler(ctx *gin.Context) {
ctx.String(http.StatusForbidden, ErrorMsg) ctx.String(http.StatusForbidden, ErrorMsg)
return return
} }
commonUnit, err := MainEng.Table("common_unit_m").Count()
CheckErr(err)
userUnit, err := UserEng.Table("user_unit_m").Where("user_id = ?", ctx.GetString("userid")).Count()
CheckErr(err)
unitData := tools.UnitData{}
exists, err = MainEng.Table("common_unit_m").Where("unit_owning_user_id = ?", pref.UnitOwningUserID).Get(&unitData)
CheckErr(err)
isCommon := true
if !exists {
_, err = UserEng.Table("user_unit_m").
Where("unit_owning_user_id = ? AND user_id = ?", pref.UnitOwningUserID, ctx.GetString("userid")).Get(&unitData)
CheckErr(err)
isCommon = false
}
var attrId, maxHp, baseSmile, basePure, baseCool int
var smileMax, pureMax, coolMax int
if isCommon {
// 公共卡片仅为100级属性
_, err = MainEng.Table("unit_m").Where("unit_id = ?", unitData.UnitID).
Cols("attribute_id,hp_max,smile_max,pure_max,cool_max").Get(&attrId, &maxHp, &baseSmile, &basePure, &baseCool)
CheckErr(err)
// 偷懒起见不计算饰品、宝石、回忆画廊等属性加成
smileMax = baseSmile
pureMax = basePure
coolMax = baseCool
// } else {
// // 用户卡片需要根据等级计算属性
// // TODO
}
var accessoryOwningId, accessoryId, exp int
_, err = UserEng.Table("accessory_wear_m").Where("unit_owning_user_id = ? AND user_id = ?", pref.UnitOwningUserID, ctx.GetString("userid")).
Cols("accessory_owning_user_id").Get(&accessoryOwningId)
CheckErr(err)
_, err = MainEng.Table("common_accessory_m").Where("accessory_owning_user_id = ?", accessoryOwningId).
Cols("accessory_id,exp").Get(&accessoryId, &exp)
CheckErr(err)
accessoryInfo := tools.AccessoryInfo{
AccessoryOwningUserID: accessoryOwningId,
AccessoryID: accessoryId,
Exp: exp,
NextExp: 0,
Level: 8,
MaxLevel: 8,
RankUpCount: 4,
FavoriteFlag: true,
}
removeSkillIds := []int{}
err = UserEng.Table("skill_equip_m").Where("unit_owning_user_id = ? AND user_id = ?", pref.UnitOwningUserID, ctx.GetString("userid")).
Cols("unit_removable_skill_id").Find(&removeSkillIds)
CheckErr(err)
profileResp := tools.ProfileResp{ profileResp := tools.ProfileResp{
Result: tools.ProfileResult{ Result: tools.ProfileResult{
UserInfo: tools.UserInfo{ UserInfo: tools.UserInfo{
@@ -978,77 +1040,77 @@ func ApiHandler(ctx *gin.Context) {
UnitMax: 5000, UnitMax: 5000,
EnergyMax: 1000, EnergyMax: 1000,
FriendMax: 99, FriendMax: 99,
UnitCnt: 3898, UnitCnt: int(commonUnit + userUnit),
InviteCode: strconv.Itoa(pref.UserID), InviteCode: strconv.Itoa(pref.UserID),
ElapsedTimeFromLogin: "14\u5c0f\u65f6\u524d", ElapsedTimeFromLogin: "14\u5c0f\u65f6\u524d",
Introduction: pref.UserDesc, Introduction: pref.UserDesc,
}, },
CenterUnitInfo: tools.CenterUnitInfo{ CenterUnitInfo: tools.CenterUnitInfo{
UnitOwningUserID: 41674, UnitOwningUserID: unitData.UnitOwningUserID,
UnitID: 3927, UnitID: unitData.UnitID,
Exp: 79700, Exp: unitData.Exp,
NextExp: 0, NextExp: unitData.NextExp,
Level: 100, Level: unitData.Level,
LevelLimitID: 2, LevelLimitID: unitData.LevelLimitID,
MaxLevel: 100, MaxLevel: unitData.MaxLevel,
Rank: 2, Rank: unitData.Rank,
MaxRank: 2, MaxRank: unitData.MaxRank,
Love: 1000, Love: unitData.Love,
MaxLove: 1000, MaxLove: unitData.MaxLove,
UnitSkillLevel: 8, UnitSkillLevel: unitData.UnitSkillLevel,
MaxHp: 6, MaxHp: unitData.MaxHp,
FavoriteFlag: true, FavoriteFlag: unitData.FavoriteFlag,
DisplayRank: 2, DisplayRank: unitData.DisplayRank,
UnitSkillExp: 29900, UnitSkillExp: unitData.UnitSkillExp,
UnitRemovableSkillCapacity: 8, UnitRemovableSkillCapacity: unitData.UnitRemovableSkillCapacity,
Attribute: 1, Attribute: attrId,
Smile: 1, Smile: baseSmile,
Cute: 1, Cute: basePure,
Cool: 1, Cool: baseCool,
IsLoveMax: true, IsLoveMax: unitData.IsLoveMax,
IsLevelMax: true, IsLevelMax: unitData.IsLevelMax,
IsRankMax: true, IsRankMax: unitData.IsRankMax,
IsSigned: true, IsSigned: unitData.IsSigned,
IsSkillLevelMax: true, IsSkillLevelMax: unitData.IsSkillLevelMax,
SettingAwardID: 113, SettingAwardID: pref.AwardID,
RemovableSkillIds: []int{}, RemovableSkillIds: removeSkillIds,
AccessoryInfo: tools.AccessoryInfo{}, AccessoryInfo: accessoryInfo,
Costume: tools.Costume{}, Costume: tools.Costume{},
TotalSmile: 1, TotalSmile: smileMax,
TotalCute: 1, TotalCute: pureMax,
TotalCool: 1, TotalCool: coolMax,
TotalHp: 6, TotalHp: maxHp,
}, },
NaviUnitInfo: tools.NaviUnitInfo{ NaviUnitInfo: tools.NaviUnitInfo{
UnitOwningUserID: 41674, UnitOwningUserID: unitData.UnitOwningUserID,
UnitID: 3927, UnitID: unitData.UnitID,
Exp: 79700, Exp: unitData.Exp,
NextExp: 0, NextExp: unitData.NextExp,
Level: 100, Level: unitData.Level,
MaxLevel: 100, MaxLevel: unitData.MaxLevel,
LevelLimitID: 2, LevelLimitID: unitData.LevelLimitID,
Rank: 2, Rank: unitData.Rank,
MaxRank: 2, MaxRank: unitData.MaxRank,
Love: 1000, Love: unitData.Love,
MaxLove: 1000, MaxLove: unitData.MaxLove,
UnitSkillExp: 29900, UnitSkillExp: unitData.UnitSkillExp,
UnitSkillLevel: 8, UnitSkillLevel: unitData.UnitSkillLevel,
MaxHp: 6, MaxHp: unitData.MaxHp,
UnitRemovableSkillCapacity: 8, UnitRemovableSkillCapacity: unitData.UnitRemovableSkillCapacity,
FavoriteFlag: true, FavoriteFlag: unitData.FavoriteFlag,
DisplayRank: 2, DisplayRank: unitData.DisplayRank,
IsLoveMax: true, IsLoveMax: unitData.IsLoveMax,
IsLevelMax: true, IsLevelMax: unitData.IsLevelMax,
IsRankMax: true, IsRankMax: unitData.IsRankMax,
IsSigned: true, IsSigned: unitData.IsSigned,
IsSkillLevelMax: true, IsSkillLevelMax: unitData.IsSkillLevelMax,
IsRemovableSkillCapacityMax: true, IsRemovableSkillCapacityMax: unitData.IsRemovableSkillCapacityMax,
InsertDate: "2016-10-11 10:33:03", InsertDate: "2016-10-11 10:33:03",
TotalSmile: 1, TotalSmile: smileMax,
TotalCute: 1, TotalCute: pureMax,
TotalCool: 1, TotalCool: coolMax,
TotalHp: 6, TotalHp: maxHp,
RemovableSkillIds: []int{}, RemovableSkillIds: removeSkillIds,
}, },
IsAlliance: false, IsAlliance: false,
FriendStatus: 0, FriendStatus: 0,