Implement accessory info and wear list
CREATE TABLE "accessory_wear_m" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "accessory_owning_user_id" INTEGER, "unit_owning_user_id" INTEGER, "user_id" INTEGER ); Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
Binary file not shown.
Binary file not shown.
+21
-3
@@ -32,7 +32,7 @@ func ApiHandler(ctx *gin.Context) {
|
|||||||
var res []byte
|
var res []byte
|
||||||
var err error
|
var err error
|
||||||
// fmt.Println(v)
|
// fmt.Println(v)
|
||||||
// fmt.Println(v.Module, v.Action)
|
fmt.Println(v.Module, v.Action)
|
||||||
|
|
||||||
switch v.Module {
|
switch v.Module {
|
||||||
case "login":
|
case "login":
|
||||||
@@ -309,10 +309,23 @@ func ApiHandler(ctx *gin.Context) {
|
|||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
case "accessoryAll":
|
case "accessoryAll":
|
||||||
// key = "unit_accessory_result"
|
// key = "unit_accessory_result"
|
||||||
|
accessoryList := []model.AccessoryList{}
|
||||||
|
err := MainEng.Table("common_accessory_m").Find(&accessoryList)
|
||||||
|
CheckErr(err)
|
||||||
|
for k, _ := range accessoryList {
|
||||||
|
accessoryList[k].NextExp = 0
|
||||||
|
accessoryList[k].Level = 8
|
||||||
|
accessoryList[k].MaxLevel = 8
|
||||||
|
accessoryList[k].RankUpCount = 4
|
||||||
|
accessoryList[k].FavoriteFlag = true
|
||||||
|
}
|
||||||
|
wearingInfo := []model.WearingInfo{}
|
||||||
|
err = UserEng.Table("accessory_wear_m").Where("user_id = ?", ctx.GetString("userid")).Find(&wearingInfo)
|
||||||
|
CheckErr(err)
|
||||||
unitAccResp := model.UnitAccessoryAllResp{
|
unitAccResp := model.UnitAccessoryAllResp{
|
||||||
Result: model.UnitAccessoryAllResult{
|
Result: model.UnitAccessoryAllResult{
|
||||||
AccessoryList: []interface{}{},
|
AccessoryList: accessoryList,
|
||||||
WearingInfo: []interface{}{},
|
WearingInfo: wearingInfo,
|
||||||
EspecialCreateFlag: false,
|
EspecialCreateFlag: false,
|
||||||
},
|
},
|
||||||
Status: 200,
|
Status: 200,
|
||||||
@@ -321,6 +334,11 @@ func ApiHandler(ctx *gin.Context) {
|
|||||||
}
|
}
|
||||||
res, err = json.Marshal(unitAccResp)
|
res, err = json.Marshal(unitAccResp)
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
|
// case "accessoryTab":
|
||||||
|
// case "accessoryMaterialAll":
|
||||||
|
default:
|
||||||
|
err = errors.New("invalid option")
|
||||||
|
CheckErr(err)
|
||||||
}
|
}
|
||||||
case "costume":
|
case "costume":
|
||||||
// key = "costume_list_result"
|
// key = "costume_list_result"
|
||||||
|
|||||||
@@ -256,3 +256,64 @@ func SetDeckNameHandler(ctx *gin.Context) {
|
|||||||
|
|
||||||
ctx.String(http.StatusOK, string(resp))
|
ctx.String(http.StatusOK, string(resp))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WearAccessory(ctx *gin.Context) {
|
||||||
|
fmt.Println(ctx.PostForm("request_data"))
|
||||||
|
req := model.WearAccessoryReq{}
|
||||||
|
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.AccessoryOwningUserID, v.UnitOwningUserID)
|
||||||
|
_, err := session.Table("accessory_wear_m").
|
||||||
|
Where("accessory_owning_user_id = ? AND unit_owning_user_id = ? AND user_id = ?", v.AccessoryOwningUserID, v.UnitOwningUserID, ctx.GetString("userid")).
|
||||||
|
Delete()
|
||||||
|
if err != nil {
|
||||||
|
session.Rollback()
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 佩戴饰品
|
||||||
|
for _, v := range req.Wear {
|
||||||
|
fmt.Println("Wear:", v.AccessoryOwningUserID, v.UnitOwningUserID)
|
||||||
|
data := model.AccessoryWearData{
|
||||||
|
AccessoryOwningUserID: v.AccessoryOwningUserID,
|
||||||
|
UnitOwningUserID: v.UnitOwningUserID,
|
||||||
|
UserId: ctx.GetString("userid"),
|
||||||
|
}
|
||||||
|
_, err := session.Table("accessory_wear_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)
|
||||||
|
|
||||||
|
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))
|
||||||
|
}
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ func main() {
|
|||||||
m.POST("/unit/deckName", handler.SetDeckNameHandler)
|
m.POST("/unit/deckName", handler.SetDeckNameHandler)
|
||||||
m.POST("/unit/favorite", handler.SetDisplayRankHandler)
|
m.POST("/unit/favorite", handler.SetDisplayRankHandler)
|
||||||
m.POST("/unit/setDisplayRank", handler.SetDisplayRankHandler)
|
m.POST("/unit/setDisplayRank", handler.SetDisplayRankHandler)
|
||||||
|
m.POST("/unit/wearAccessory", handler.WearAccessory)
|
||||||
m.POST("/user/changeName", handler.ChangeNameHandler)
|
m.POST("/user/changeName", handler.ChangeNameHandler)
|
||||||
m.POST("/user/changeNavi", handler.ChangeNaviHandler)
|
m.POST("/user/changeNavi", handler.ChangeNaviHandler)
|
||||||
m.POST("/user/setNotificationToken", handler.SetNotificationTokenHandler)
|
m.POST("/user/setNotificationToken", handler.SetNotificationTokenHandler)
|
||||||
|
|||||||
+62
-4
@@ -1,11 +1,31 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
type UnitAccessoryAllResult struct {
|
// AccessoryList ...
|
||||||
AccessoryList []interface{} `json:"accessory_list"`
|
type AccessoryList struct {
|
||||||
WearingInfo []interface{} `json:"wearing_info"`
|
AccessoryOwningUserID int `json:"accessory_owning_user_id" xorm:"accessory_owning_user_id"`
|
||||||
EspecialCreateFlag bool `json:"especial_create_flag"`
|
AccessoryID int `json:"accessory_id" xorm:"accessory_id"`
|
||||||
|
Exp int `json:"exp" xorm:"exp"`
|
||||||
|
NextExp int `json:"next_exp" xorm:"-"`
|
||||||
|
Level int `json:"level" xorm:"-"`
|
||||||
|
MaxLevel int `json:"max_level" xorm:"-"`
|
||||||
|
RankUpCount int `json:"rank_up_count" xorm:"-"`
|
||||||
|
FavoriteFlag bool `json:"favorite_flag" xorm:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WearingInfo
|
||||||
|
type WearingInfo struct {
|
||||||
|
UnitOwningUserID int `json:"unit_owning_user_id" xorm:"unit_owning_user_id"`
|
||||||
|
AccessoryOwningUserID int `json:"accessory_owning_user_id" xorm:"accessory_owning_user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnitAccessoryAllResult ...
|
||||||
|
type UnitAccessoryAllResult struct {
|
||||||
|
AccessoryList []AccessoryList `json:"accessory_list"`
|
||||||
|
WearingInfo []WearingInfo `json:"wearing_info"`
|
||||||
|
EspecialCreateFlag bool `json:"especial_create_flag"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnitAccessoryAllResp ...
|
||||||
type UnitAccessoryAllResp struct {
|
type UnitAccessoryAllResp struct {
|
||||||
Result UnitAccessoryAllResult `json:"result"`
|
Result UnitAccessoryAllResult `json:"result"`
|
||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
@@ -13,6 +33,44 @@ type UnitAccessoryAllResp struct {
|
|||||||
TimeStamp int64 `json:"timeStamp"`
|
TimeStamp int64 `json:"timeStamp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WearAccessoryReq ...
|
||||||
|
type WearAccessoryReq struct {
|
||||||
|
Module string `json:"module"`
|
||||||
|
Remove []Remove `json:"remove"`
|
||||||
|
Action string `json:"action"`
|
||||||
|
TimeStamp int `json:"timeStamp"`
|
||||||
|
Wear []Wear `json:"wear"`
|
||||||
|
Mgd int `json:"mgd"`
|
||||||
|
CommandNum string `json:"commandNum"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove ...
|
||||||
|
type Remove struct {
|
||||||
|
AccessoryOwningUserID int `json:"accessory_owning_user_id"`
|
||||||
|
UnitOwningUserID int `json:"unit_owning_user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wear ...
|
||||||
|
type Wear struct {
|
||||||
|
AccessoryOwningUserID int `json:"accessory_owning_user_id"`
|
||||||
|
UnitOwningUserID int `json:"unit_owning_user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessoryWearData ...
|
||||||
|
type AccessoryWearData struct {
|
||||||
|
Id int `xorm:"id pk autoincr"`
|
||||||
|
AccessoryOwningUserID int `xorm:"accessory_owning_user_id"`
|
||||||
|
UnitOwningUserID int `xorm:"unit_owning_user_id"`
|
||||||
|
UserId string `xorm:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessoryWearResp ...
|
||||||
|
type AccessoryWearResp struct {
|
||||||
|
ResponseData []interface{} `json:"response_data"`
|
||||||
|
ReleaseInfo []interface{} `json:"release_info"`
|
||||||
|
StatusCode int `json:"status_code"`
|
||||||
|
}
|
||||||
|
|
||||||
// module: unit, action: unitAll
|
// module: unit, action: unitAll
|
||||||
type Costume struct {
|
type Costume struct {
|
||||||
UnitID int `json:"unit_id"`
|
UnitID int `json:"unit_id"`
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package tools
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type AccessoryData struct {
|
||||||
|
AccessoryId int `xorm:"accessory_id"`
|
||||||
|
SmileMax int `xorm:"smile_max"`
|
||||||
|
PureMax int `xorm:"pure_max"`
|
||||||
|
CoolMax int `xorm:"cool_max"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommonAccessoryData struct {
|
||||||
|
AccessoryOwningUserId int `xorm:"accessory_owning_user_id pk autoincr"`
|
||||||
|
AccessoryId int `xorm:"accessory_id"`
|
||||||
|
Exp int `xorm:"exp"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcessAccessoryData() {
|
||||||
|
var accessoryData []AccessoryData
|
||||||
|
err := MainEng.Table("accessory_m").Where("max_level = 8 AND rarity = 4").Cols("accessory_id,smile_max,pure_max,cool_max").Find(&accessoryData)
|
||||||
|
CheckErr(err)
|
||||||
|
|
||||||
|
for _, data := range accessoryData {
|
||||||
|
var exp int
|
||||||
|
exists, err := MainEng.Table("accessory_level_m").Where("accessory_id = ?", data.AccessoryId).Select("MAX(next_exp)").Get(&exp)
|
||||||
|
CheckErr(err)
|
||||||
|
if !exists {
|
||||||
|
fmt.Println("LOL")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
commonData := CommonAccessoryData{
|
||||||
|
AccessoryId: data.AccessoryId,
|
||||||
|
Exp: exp,
|
||||||
|
}
|
||||||
|
// fmt.Println(commonData)
|
||||||
|
// 每种饰品生成9个
|
||||||
|
for i := 0; i < 9; i++ {
|
||||||
|
affected, err := MainEng.Table("common_accessory_m").Insert(&commonData)
|
||||||
|
CheckErr(err)
|
||||||
|
fmt.Printf("Time: %d, Aff: %d\n", i, affected)
|
||||||
|
|
||||||
|
commonData.AccessoryOwningUserId += i + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -916,8 +916,8 @@ func GenApi2Data() {
|
|||||||
unitAccResp := model.UnitAccessoryAllResp{
|
unitAccResp := model.UnitAccessoryAllResp{
|
||||||
// _ = model.UnitAccessoryAllResp{
|
// _ = model.UnitAccessoryAllResp{
|
||||||
Result: model.UnitAccessoryAllResult{
|
Result: model.UnitAccessoryAllResult{
|
||||||
AccessoryList: []interface{}{},
|
AccessoryList: []model.AccessoryList{},
|
||||||
WearingInfo: []interface{}{},
|
WearingInfo: []model.WearingInfo{},
|
||||||
EspecialCreateFlag: false,
|
EspecialCreateFlag: false,
|
||||||
},
|
},
|
||||||
Status: 200,
|
Status: 200,
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ func init() {
|
|||||||
// GenDownloadDb()
|
// GenDownloadDb()
|
||||||
// GenCommonUnitData()
|
// GenCommonUnitData()
|
||||||
InitUserData(0)
|
InitUserData(0)
|
||||||
|
// ProcessAccessoryData()
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckErr(err error) {
|
func CheckErr(err error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user