xdd-plus/models/help.go

359 lines
8.4 KiB
Go

package models
import (
"fmt"
"os"
"strings"
"gorm.io/gorm"
)
func getVhelpRule(num int) string {
rules := ""
var codes = map[string][]string{
"Fruit": {},
"Pet": {},
"Bean": {},
"JdFactory": {},
"DreamFactory": {},
"Jxnc": {},
"Jdzz": {},
"Joy": {},
"Sgmh": {},
"Cfd": {},
"Cash": {},
}
cks := GetJdCookies()
for _, ck := range cks {
if ck.Help == True || Cdle {
for k := range codes {
switch k {
case "Fruit":
codes[k] = append(codes[k], ck.Fruit)
case "Pet":
codes[k] = append(codes[k], ck.Pet)
case "Bean":
codes[k] = append(codes[k], ck.Bean)
case "JdFactory":
codes[k] = append(codes[k], ck.JdFactory)
case "DreamFactory":
codes[k] = append(codes[k], ck.DreamFactory)
case "Jxnc":
codes[k] = append(codes[k], ck.Jxnc)
case "Jdzz":
codes[k] = append(codes[k], ck.Jdzz)
case "Joy":
codes[k] = append(codes[k], ck.Joy)
case "Sgmh":
codes[k] = append(codes[k], ck.Sgmh)
case "Cfd":
codes[k] = append(codes[k], ck.Cfd)
case "Cash":
codes[k] = append(codes[k], ck.Cash)
}
if len := len(codes[k]); len != 0 {
if codes[k][len-1] == "undefined" || codes[k][len-1] == "" || codes[k][len-1] == "--" {
codes[k] = codes[k][:len-1]
}
}
}
}
}
for k := range codes {
for i, code := range codes[k] {
code = strings.Replace(code, `\n`, ``, -1)
code = strings.Replace(code, `"`, `\"`, -1)
rules += fmt.Sprintf("My%s%d=\"%s\"\n", k, i+1, code)
codes[k][i] = fmt.Sprintf("${My%s%d}", k, i+1)
}
}
for k := range codes {
for i := 0; i < num; i++ {
if len(codes[k]) > 0 {
rules += fmt.Sprintf("ForOther"+k+"%d=\"%s\"\n", i+1, strings.Join(codes[k], "@"))
}
}
}
return rules
}
func getQLHelp(num int) map[string]string {
var codes = map[string][]string{
"Fruit": {},
"Pet": {},
"Bean": {},
"JdFactory": {},
"DreamFactory": {},
"Jxnc": {},
"Jdzz": {},
"Joy": {},
"Sgmh": {},
"Cfd": {},
"Cash": {},
}
cks := GetJdCookies()
for _, ck := range cks {
if ck.Help == True || Cdle {
for k := range codes {
switch k {
case "Fruit":
codes[k] = append(codes[k], ck.Fruit)
case "Pet":
codes[k] = append(codes[k], ck.Pet)
case "Bean":
codes[k] = append(codes[k], ck.Bean)
case "JdFactory":
codes[k] = append(codes[k], ck.JdFactory)
case "DreamFactory":
codes[k] = append(codes[k], ck.DreamFactory)
case "Jxnc":
codes[k] = append(codes[k], ck.Jxnc)
case "Jdzz":
codes[k] = append(codes[k], ck.Jdzz)
case "Joy":
codes[k] = append(codes[k], ck.Joy)
case "Sgmh":
codes[k] = append(codes[k], ck.Sgmh)
case "Cfd":
codes[k] = append(codes[k], ck.Cfd)
case "Cash":
codes[k] = append(codes[k], ck.Cash)
}
if len := len(codes[k]); len != 0 {
if codes[k][len-1] == "undefined" || codes[k][len-1] == "" || codes[k][len-1] == "--" {
codes[k] = codes[k][:len-1]
}
}
}
}
}
var e = map[string]string{
"Fruit": "",
"Pet": "",
"Bean": "",
"JdFactory": "",
"DreamFactory": "",
"Jxnc": "",
"Jdzz": "",
"Joy": "",
"Sgmh": "",
"Cfd": "",
"Cash": "",
}
for k := range codes {
vv := codes[k]
for i := range vv {
vv[i] = strings.Replace(vv[i], `"`, `\"`, -1)
}
e[k] += strings.Join(vv, "@")
}
for k := range e {
n := []string{}
for i := 0; i < num; i++ {
n = append(n, e[k])
}
e[k] = strings.Join(n, "&")
}
var f = map[string]string{}
for k := range e {
switch k {
case "Fruit":
f["FRUITSHARECODES"] = e[k]
case "Pet":
f["PETSHARECODES"] = e[k]
case "Bean":
f["PLANT_BEAN_SHARECODES"] = e[k]
case "JdFactory":
f["DDFACTORY_SHARECODES"] = e[k]
case "DreamFactory":
f["DREAM_FACTORY_SHARE_CODES"] = e[k]
case "Jxnc":
f["JXNC_SHARECODES"] = e[k]
// case "Jdzz":
// f[k] = e[k]
// case "Joy":
// f[k] = e[k]
case "Sgmh":
f["JDSGMH_SHARECODES"] = e[k]
// case "Cfd":
// f[k] = e[k]
case "Cash":
f["JD_CASH_SHARECODES"] = e[k]
}
}
return f
}
func WriteHelpJS(acks []JdCookie) {
cks := GetJdCookies(func(sb *gorm.DB) *gorm.DB {
return sb.Where(fmt.Sprintf("%s = ?", Help), True)
})
var codes = map[string][]string{
"Fruit": {},
"Pet": {},
"Bean": {},
"JdFactory": {},
"DreamFactory": {},
"Jxnc": {},
"Jdzz": {},
"Joy": {},
"Sgmh": {},
"Cfd": {},
"Cash": {},
}
for _, ck := range cks {
for k := range codes {
switch k {
case "Fruit":
codes[k] = append(codes[k], ck.Fruit)
case "Pet":
codes[k] = append(codes[k], ck.Pet)
case "Bean":
codes[k] = append(codes[k], ck.Bean)
case "JdFactory":
codes[k] = append(codes[k], ck.JdFactory)
case "DreamFactory":
codes[k] = append(codes[k], ck.DreamFactory)
case "Jxnc":
codes[k] = append(codes[k], ck.Jxnc)
case "Jdzz":
codes[k] = append(codes[k], ck.Jdzz)
case "Joy":
codes[k] = append(codes[k], ck.Joy)
case "Sgmh":
codes[k] = append(codes[k], ck.Sgmh)
case "Cfd":
codes[k] = append(codes[k], ck.Cfd)
case "Cash":
codes[k] = append(codes[k], ck.Cash)
}
if len := len(codes[k]); len != 0 {
if codes[k][len-1] == "undefined" || codes[k][len-1] == "" {
codes[k] = codes[k][:len-1]
}
}
}
}
var e = map[string][]string{
"Fruit": {},
"Pet": {},
"Bean": {},
"JdFactory": {},
"DreamFactory": {},
"Jxnc": {},
"Jdzz": {},
"Joy": {},
"Sgmh": {},
"Cfd": {},
"Cash": {},
}
var f = func(ss []string, s string) string {
tss := []string{}
for _, v := range ss {
if v != s {
tss = append(tss, v)
}
}
return `'` + strings.Join(tss, "@") + `'`
}
for k := range codes {
for _, ck := range acks {
switch k {
case "Fruit":
e[k] = append(e[k], f(codes[k], ck.Fruit))
case "Pet":
e[k] = append(e[k], f(codes[k], ck.Pet))
case "Bean":
e[k] = append(e[k], f(codes[k], ck.Bean))
case "JdFactory":
e[k] = append(e[k], f(codes[k], ck.JdFactory))
case "DreamFactory":
e[k] = append(e[k], f(codes[k], ck.DreamFactory))
case "Jxnc":
e[k] = append(e[k], f(codes[k], ck.Jxnc))
case "Jdzz":
e[k] = append(e[k], f(codes[k], ck.Jdzz))
case "Joy":
e[k] = append(e[k], f(codes[k], ck.Joy))
case "Sgmh":
e[k] = append(e[k], f(codes[k], ck.Sgmh))
case "Cfd":
e[k] = append(e[k], f(codes[k], ck.Cfd))
case "Cash":
e[k] = append(e[k], f(codes[k], ck.Cash))
}
if len := len(codes[k]); len != 0 {
if codes[k][len-1] == "undefined" || codes[k][len-1] == "" {
codes[k] = codes[k][:len-1]
}
}
}
}
tpl := `let codes = [%s];
for (let i = 0; i < codes.length; i++) {
const index = (i + 1 === 1) ? '' : (i + 1);
exports['%s' + index] = codes[i];
}`
for k, codes := range e {
switch k {
case "Fruit":
WriteToFile(
ExecPath+"/scripts/jdFruitShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "FruitShareCode"),
)
case "Pet":
WriteToFile(
ExecPath+"/scripts/jdPetShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "PetShareCode"),
)
case "Bean":
WriteToFile(
ExecPath+"/scripts/jdPlantBeanShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "PlantBeanShareCodes"),
)
case "JdFactory":
WriteToFile(
ExecPath+"/scripts/jdFactoryShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "shareCodes.js"),
)
case "DreamFactory":
WriteToFile(
ExecPath+"/scripts/jdDreamFactoryShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "shareCodes.js"),
)
case "Jxnc":
WriteToFile(
ExecPath+"/scripts/jdJxncShareCodes.js",
fmt.Sprintf(tpl, strings.Join(codes, ","), "JxncShareCode.js"),
)
case "Jdzz":
case "Joy":
case "Sgmh":
case "Cfd":
case "Cash":
}
}
}
func WriteToFile(fileName string, content string) error {
f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil {
fmt.Println("file create failed. err: " + err.Error())
} else {
// offset
//os.Truncate(filename, 0) //clear
n, _ := f.Seek(0, os.SEEK_END)
_, err = f.WriteAt([]byte(content), n)
// fmt.Println("write succeed!")
defer f.Close()
}
return err
}