| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- package main
- import (
- "Vali-Tools/handlers" // 根据实际项目路径调整
- "Vali-Tools/utils"
- "context"
- "fmt"
- "github.com/wailsapp/wails/v2/pkg/options"
- "github.com/wailsapp/wails/v2/pkg/runtime"
- "os"
- "strings"
- )
- // App struct
- type App struct {
- ctx context.Context
- Token string
- Env string
- directoryHandler *handlers.DirectoryHandler
- dialogHandler *handlers.DialogHandler
- UrlHost string // 根据实际项目路径调整
- HomePage string //首次要打开得页面路径
- handlerRequest *handlers.HandlerRequests
- }
- var wailsContext *context.Context
- // NewApp creates a new App application struct
- func NewApp() *App {
- return &App{}
- }
- // startup is called when the app starts
- func (a *App) startup(ctx context.Context) {
- a.ctx = ctx
- wailsContext = &ctx
- a.directoryHandler = handlers.NewDirectoryHandler(ctx)
- a.dialogHandler = handlers.NewDialogHandler(ctx)
- fmt.Printf("All startup args: %v\n", os.Args)
- args := os.Args
- if len(args) > 1 {
- Args := args[1]
- paramsMap := a.parsArguments(Args)
- a.Token = paramsMap["token"]
- env := paramsMap["env"]
- page := paramsMap["page"]
- urlHost := "https://dev2.pubdata.cn"
- if env != "dev" && env != "" {
- urlHost = "https://dev2.valimart.net"
- }
- a.UrlHost = urlHost
- a.HomePage = page
- println("Token:", a.Token)
- println("UrlHost", a.UrlHost)
- a.handlerRequest = handlers.NewHandlerRequests(ctx, a.Token, a.UrlHost)
- fmt.Printf("获取到了Token信息: %s\n", a.Token)
- }
- }
- func (a *App) onSecondInstanceLaunch(secondInstanceData options.SecondInstanceData) {
- secondInstanceArgs := secondInstanceData.Args
- println("user opened second instance", strings.Join(secondInstanceData.Args, ","))
- println("user opened second from", secondInstanceData.WorkingDirectory)
- runtime.WindowUnminimise(*wailsContext)
- runtime.Show(*wailsContext)
- go runtime.EventsEmit(*wailsContext, "launchArgs", secondInstanceArgs)
- }
- // 解析参数
- func (a *App) parsArguments(params string) map[string]string {
- result := make(map[string]string)
- pairs := strings.Split(params, "&")
- for _, pair := range pairs {
- kv := strings.Split(pair, "=")
- if len(kv) == 2 {
- result[kv[0]] = kv[1]
- }
- }
- return result
- }
- type UserInfo struct {
- AccountName string `json:"account_name"`
- CompanyName string `json:"brand_company_name"`
- RealName string `json:"real_name"`
- }
- // GetAppArgument 获取APP传递得参数
- func (a *App) GetAppArgument() interface{} {
- if a.handlerRequest == nil {
- fmt.Printf("handlerRequest未初始化\n")
- return nil
- }
- info, err := a.handlerRequest.GetUserInfo()
- if err != nil {
- fmt.Printf("获取用户信息失败: %v\n", err)
- return nil
- }
- // 将 map 转换为 JSON 再解析为结构体
- // 安全地提取用户信息数据
- var userInfo interface{}
- if infoMap, ok := info.(map[string]interface{}); ok {
- if data, exists := infoMap["data"]; exists {
- userInfo = data
- } else {
- userInfo = infoMap
- }
- } else {
- userInfo = info
- }
- return map[string]interface {
- }{
- "token": a.Token,
- "user_info": userInfo,
- "home_page": a.HomePage,
- }
- }
- // SelectDirectory 目录选择方法
- func (a *App) SelectDirectory() (string, error) {
- return a.dialogHandler.SelectDirectory()
- }
- // HandlerDirectory 处理目录复制的主要方法
- func (a *App) HandlerDirectory(sourceDir, targetDir string) error {
- return a.directoryHandler.HandlerDirectory(sourceDir, targetDir)
- }
- // HandlerOutPutDirectory 处理输出目录
- func (a *App) HandlerOutPutDirectory() []handlers.ImageResult {
- applicationDirectory, err := a.directoryHandler.GetApplicationDirectory()
- if err != nil {
- return nil
- }
- directory, err := a.directoryHandler.HandlerOutPutDirectory(applicationDirectory + "/output")
- if err != nil {
- return []handlers.ImageResult{}
- }
- return directory
- }
- type PostJsonData struct {
- ImageUrl string `json:"image_url"`
- GoodsArtNo string `json:"goods_art_no"`
- Category string `json:"category"`
- Description string `json:"description"`
- Price string `json:"price"`
- }
- func (a *App) MakeProducts(imageProduct []handlers.ImageResult) map[string]interface{} {
- // 生成产品册
- var postData []PostJsonData
- for _, product := range imageProduct {
- result, err := a.handlerRequest.MakeFileRequest(utils.UploadImages, product.ImagePath, "file")
- if err != nil {
- fmt.Printf("上传图片失败: %v\n", err)
- continue
- }
- if resultMap, ok := result.(map[string]interface{}); ok {
- // 安全获取 data 字段
- dataValue, exists := resultMap["data"]
- if !exists {
- fmt.Println("响应中未找到 data 字段")
- continue
- }
- // 类型断言为 map[string]interface{}
- reqData, ok := dataValue.(map[string]interface{})
- if !ok {
- fmt.Printf("data字段类型不正确,期望map[string]interface{},实际类型: %T\n", dataValue)
- continue
- }
- var imageUrl string
- if urlValue, exists := reqData["url"]; exists {
- // 安全转换为字符串
- switch v := urlValue.(type) {
- case string:
- imageUrl = v
- case fmt.Stringer:
- imageUrl = v.String()
- default:
- imageUrl = fmt.Sprintf("%v", v)
- }
- }
- // 安全获取各个字段并进行类型转换
- goodsArtNo := product.GoodsArtNo
- category := product.Category
- description := product.Description
- priceValue := product.Price
- // 添加到 postData
- postData = append(postData, PostJsonData{
- ImageUrl: imageUrl,
- GoodsArtNo: goodsArtNo,
- Category: category,
- Description: description,
- Price: priceValue,
- })
- }
- }
- HLMData := map[string]interface{}{
- "data": postData,
- }
- result, err := a.handlerRequest.MakePostRequest(utils.CreateProduct, HLMData)
- if err != nil {
- fmt.Printf("request err:%v\n", err)
- return nil
- }
- if resultMap, ok := result.(map[string]interface{}); ok {
- dataValue, exists := resultMap["data"]
- if !exists {
- return nil
- }
- reqData, _ := dataValue.(map[string]interface{})
- //a.UrlHost
- productIndex, _ := reqData["product_index"].(string)
- urlShuffix := "/product_catalog/index.html?product_index="
- // 检查 URL 是否包含特定域名
- HtmlUrl := "https://b2b2.valimart.net"
- if strings.Contains(a.UrlHost, "pubdata.cn") {
- // 处理 pubdata.cn 域名的逻辑
- HtmlUrl = "https://b2b2.pubdata.cn"
- }
- returnUrl := HtmlUrl + urlShuffix + productIndex
- fmt.Println("返回的URL:", returnUrl)
- return map[string]interface{}{
- "url": returnUrl,
- }
- }
- return nil
- }
|