Implement removable skill

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-04-18 20:20:06 +08:00
parent 48e2b2ac73
commit 2cd6100843
6 changed files with 171 additions and 6 deletions
+50 -3
View File
@@ -296,10 +296,57 @@ func ApiHandler(ctx *gin.Context) {
CheckErr(err)
case "removableSkillInfo":
// key = "owning_equip_result"
var skillEquipCount []model.SkillEquipCount
err := UserEng.Table("skill_equip_m").Where("user_id = ?", ctx.GetString("userid")).Select("unit_removable_skill_id,COUNT(*) AS ct").
GroupBy("unit_removable_skill_id").Find(&skillEquipCount)
CheckErr(err)
var rmSkillIds []int
err = MainEng.Table("unit_removable_skill_m").Where("effect_range = 1").Cols("unit_removable_skill_id").Find(&rmSkillIds)
CheckErr(err)
owingInfo := []model.OwningInfo{}
for _, id := range rmSkillIds {
info := model.OwningInfo{
UnitRemovableSkillID: id,
TotalAmount: 9,
EquippedAmount: 0,
InsertDate: "2023-01-01 12:00:00",
}
for _, sk := range skillEquipCount {
if id == sk.UnitRemovableSkillId {
info.EquippedAmount = sk.Count
break
}
}
owingInfo = append(owingInfo, info)
}
// equipInfo := []model.SkillEquip{}
// err = UserEng.Table("skill_equip_m").Where("user_id = ?", ctx.GetString("userid")).Cols("unit_removable_skill_id,unit_owning_user_id").Find(&equipInfo)
// CheckErr(err)
var unitOwningIds []int
err = UserEng.Table("skill_equip_m").Where("user_id = ?", ctx.GetString("userid")).Cols("unit_owning_user_id").GroupBy("unit_owning_user_id").Find(&unitOwningIds)
CheckErr(err)
equipInfo := map[int]interface{}{}
for _, v := range unitOwningIds {
detail := []model.SkillEquipDetail{}
err = UserEng.Table("skill_equip_m").Where("user_id = ? AND unit_owning_user_id = ?", ctx.GetString("userid"), v).
Cols("unit_removable_skill_id").Find(&detail)
CheckErr(err)
equipInfo[v] = model.SkillEquipList{
UnitOwningUserID: v,
Detail: detail,
}
}
rmSkillResp := model.RemovableSkillResp{
Result: model.RemovableSkillResult{
OwningInfo: []model.OwningInfo{},
EquipmentInfo: []interface{}{},
OwningInfo: owingInfo,
EquipmentInfo: equipInfo,
}, // 宝石
Status: 200,
CommandNum: false,
@@ -312,7 +359,7 @@ func ApiHandler(ctx *gin.Context) {
accessoryList := []model.AccessoryList{}
err := MainEng.Table("common_accessory_m").Find(&accessoryList)
CheckErr(err)
for k, _ := range accessoryList {
for k := range accessoryList {
accessoryList[k].NextExp = 0
accessoryList[k].Level = 8
accessoryList[k].MaxLevel = 8
+62
View File
@@ -317,3 +317,65 @@ func WearAccessory(ctx *gin.Context) {
ctx.String(http.StatusOK, string(resp))
}
func RemoveSkillEquip(ctx *gin.Context) {
fmt.Println(ctx.PostForm("request_data"))
req := model.SkillEquipReq{}
if err := json.Unmarshal([]byte(ctx.PostForm("request_data")), &req); err != nil {
panic(err)
}
UserEng.ShowSQL(true)
// 开始事务
session := UserEng.NewSession()
defer session.Close()
if err := session.Begin(); err != nil {
session.Rollback()
panic(err)
}
// 取下宝石
for _, v := range req.Remove {
fmt.Println("Remove:", v.UnitOwningUserID, v.UnitRemovableSkillID)
_, err := session.Table("skill_equip_m").
Where("unit_removable_skill_id = ? AND unit_owning_user_id = ? AND user_id = ?", v.UnitRemovableSkillID, v.UnitOwningUserID, ctx.GetString("userid")).
Delete()
if err != nil {
session.Rollback()
panic(err)
}
}
// 佩戴宝石
for _, v := range req.Equip {
fmt.Println("Equip:", v.UnitOwningUserID, v.UnitRemovableSkillID)
data := model.SkillEquipData{
UnitRemovableSkillId: v.UnitRemovableSkillID,
UnitOwningUserID: v.UnitOwningUserID,
UserId: ctx.GetString("userid"),
}
_, err := session.Table("skill_equip_m").Insert(&data)
CheckErr(err)
}
if err := session.Commit(); err != nil {
session.Rollback()
panic(err)
}
wearResp := model.AwardSetResp{
ResponseData: []interface{}{},
ReleaseInfo: []interface{}{},
StatusCode: 200,
}
resp, err := json.Marshal(wearResp)
CheckErr(err)
fmt.Println(string(resp))
nonce := ctx.GetInt("nonce")
nonce++
ctx.Header("user_id", ctx.GetString("userid"))
ctx.Header("authorize", fmt.Sprintf("consumerKey=lovelive_test&timeStamp=%d&version=1.1&token=%s&nonce=%d&user_id=%s&requestTimeStamp=%d", time.Now().Unix(), ctx.GetString("token"), nonce, ctx.GetString("userid"), ctx.GetInt64("req_time")))
ctx.Header("X-Message-Sign", base64.StdEncoding.EncodeToString(encrypt.RSA_Sign_SHA1(resp, "privatekey.pem")))
ctx.String(http.StatusOK, string(resp))
}