diff --git a/app/agent/hdl/hdl_base.go b/app/agent/hdl/hdl_base.go new file mode 100644 index 0000000..9ba144e --- /dev/null +++ b/app/agent/hdl/hdl_base.go @@ -0,0 +1,143 @@ +package hdl + +import ( + "applet/app/cfg" + "applet/app/db" + "applet/app/db/model" + "applet/app/e" + "applet/app/md" + "applet/app/svc" + "applet/app/utils" + "github.com/gin-gonic/gin" + "github.com/jinzhu/copier" + "github.com/tidwall/gjson" + "io/ioutil" +) + +// WechatBase 微信支付配置获取 +// @Summary 基本配置-微信支付配置获取 +// @Tags 基本配置 +// @Description 基本配置-微信支付配置获取 +// @Accept json +// @Produce json +// @Success 200 {object} md.WechatPay "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/wechat/base [GET] +func WechatBase(c *gin.Context) { + user := svc.GetUser(c) + info, _ := db.UserThirdPartyFindByID(svc.MasterDb(c), user.Info.Uid) + var res = md.WechatPay{} + if info != nil { + res.PayWxApiKey = gjson.Get(info.WechatPayInfo, "pay_wx_api_key").String() + res.PayWxMchId = gjson.Get(info.WechatPayInfo, "pay_wx_mch_id").String() + } + e.OutSuc(c, res, nil) + return +} + +// WechatBaseSet 微信支付配置保存 +// @Summary 基本配置-微信支付配置保存 +// @Tags 基本配置 +// @Description 基本配置-微信支付配置保存 +// @Accept json +// @Produce json +// @Param req body md.WechatPay true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/wechat/base/set [POST] +func WechatBaseSet(c *gin.Context) { + var arg md.WechatPay + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + info, _ := db.UserThirdPartyFindByID(svc.MasterDb(c), user.Info.Uid) + if info == nil { + info = &model.UserThirdParty{ + Uid: user.Info.Uid, + } + svc.MasterDb(c).Insert(info) + } + var data md.WechatPaySave + copier.Copy(&data, &arg) + data.WechatP12ApiclientCert = c.GetString("mid") + "_" + utils.IntToStr(user.Info.Uid) + "_wechat_apiclient_cert.p12" + info.WechatPayInfo = utils.SerializeStr(data) + svc.MasterDb(c).Where("uid=?", info.Uid).Cols("wechat_pay_info").Update(info) + e.OutSuc(c, "success", nil) + return +} + +// AlipayBase 支付宝支付配置获取 +// @Summary 基本配置-支付宝支付配置获取 +// @Tags 基本配置 +// @Description 基本配置-支付宝支付配置获取 +// @Accept json +// @Produce json +// @Success 200 {object} md.AlipayPay "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/alipay/base [GET] +func AlipayBase(c *gin.Context) { + user := svc.GetUser(c) + info, _ := db.UserThirdPartyFindByID(svc.MasterDb(c), user.Info.Uid) + var res = md.AlipayPay{} + if info != nil { + res.PayAliNewAppId = gjson.Get(info.WechatPayInfo, "pay_ali_new_app_id").String() + res.PayAliNewPrivateKey = gjson.Get(info.WechatPayInfo, "pay_ali_new_private_key").String() + } + e.OutSuc(c, res, nil) + return +} + +// AlipayBaseSet 微信支付配置保存 +// @Summary 基本配置-微信支付配置保存 +// @Tags 基本配置 +// @Description 基本配置-微信支付配置保存 +// @Accept json +// @Produce json +// @Param req body md.AlipayPay true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/alipay/base/set [POST] +func AlipayBaseSet(c *gin.Context) { + var arg md.AlipayPay + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + info, _ := db.UserThirdPartyFindByID(svc.MasterDb(c), user.Info.Uid) + if info == nil { + info = &model.UserThirdParty{ + Uid: user.Info.Uid, + } + svc.MasterDb(c).Insert(info) + } + var data md.AlipayPaySet + copier.Copy(&data, &arg) + data.PayAliUseType = "1" + data.PayAppCertSn = c.GetString("mid") + "_" + utils.IntToStr(user.Info.Uid) + "_payAliNewAppCertSn.crt" + data.PayAlipayRootCertSn = c.GetString("mid") + "_" + utils.IntToStr(user.Info.Uid) + "_payAliNewAlipayRootCertSn.crt" + data.PayAlipayrsaPublicKey = c.GetString("mid") + "_" + utils.IntToStr(user.Info.Uid) + "_payAliNewAlipayrsaPublicKey.crt" + + path := "./static/" + if cfg.Prd { + path = "/etc/zyos-admin/wx_check_file/" + } + PayAliNewAppCertSn, _ := ioutil.ReadFile(path + data.PayAppCertSn) // 读取文件内容 + if string(PayAliNewAppCertSn) != "" { + data.PayAliNewAppCertSn = string(PayAliNewAppCertSn) + } + PayAlipayRootCertSn, _ := ioutil.ReadFile(path + data.PayAlipayRootCertSn) // 读取文件内容 + if string(PayAlipayRootCertSn) != "" { + data.PayAliNewAlipayRootCertSn = string(PayAlipayRootCertSn) + } + PayAlipayrsaPublicKey, _ := ioutil.ReadFile(path + data.PayAlipayrsaPublicKey) // 读取文件内容 + if string(PayAlipayrsaPublicKey) != "" { + data.PayAliNewAlipayrsaPublicKey = string(PayAlipayrsaPublicKey) + } + info.AlipayPayInfo = utils.SerializeStr(data) + svc.MasterDb(c).Where("uid=?", info.Uid).Cols("alipay_pay_info").Update(info) + e.OutSuc(c, "success", nil) + return +} diff --git a/app/agent/hdl/hdl_goods.go b/app/agent/hdl/hdl_goods.go new file mode 100644 index 0000000..88db194 --- /dev/null +++ b/app/agent/hdl/hdl_goods.go @@ -0,0 +1,32 @@ +package hdl + +import ( + "applet/app/agent/svc" + "github.com/gin-gonic/gin" +) + +func GoodsCate(c *gin.Context) { + svc.GoodsCate(c) +} +func GoodsCateSave(c *gin.Context) { + svc.GoodsCateSave(c) +} +func GoodsCateShow(c *gin.Context) { + svc.GoodsCateShow(c) +} +func GoodsCateDel(c *gin.Context) { + svc.GoodsCateDel(c) +} + +func Goods(c *gin.Context) { + svc.Goods(c) +} +func GoodsSave(c *gin.Context) { + svc.GoodsSave(c) +} +func GoodsDel(c *gin.Context) { + svc.GoodsDel(c) +} +func GoodsDetail(c *gin.Context) { + svc.GoodsDetail(c) +} diff --git a/app/agent/hdl/hdl_login.go b/app/agent/hdl/hdl_login.go new file mode 100644 index 0000000..cd1d847 --- /dev/null +++ b/app/agent/hdl/hdl_login.go @@ -0,0 +1,20 @@ +package hdl + +import ( + "applet/app/agent/svc" + "github.com/gin-gonic/gin" +) + +// Login 登陆 +// @Summary 登陆 +// @Tags 登陆 +// @Description 登入 +// @Accept json +// @Produce json +// @Param req body md.FastLoginRequestBody true "请求参数" +// @Success 200 {object} md.LoginResponse "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/login [post] +func Login(c *gin.Context) { + svc.Login(c) +} diff --git a/app/agent/hdl/hdl_order.go b/app/agent/hdl/hdl_order.go new file mode 100644 index 0000000..66c9caf --- /dev/null +++ b/app/agent/hdl/hdl_order.go @@ -0,0 +1 @@ +package hdl diff --git a/app/agent/hdl/hdl_service_file_upload.go b/app/agent/hdl/hdl_service_file_upload.go new file mode 100644 index 0000000..c408018 --- /dev/null +++ b/app/agent/hdl/hdl_service_file_upload.go @@ -0,0 +1,45 @@ +package hdl + +import ( + "applet/app/cfg" + "applet/app/e" + "applet/app/svc" + "applet/app/utils" + "fmt" + "github.com/gin-gonic/gin" + "net/http" + "strings" +) + +// ServiceFileUpload 上传文件 +// @Summary 基本配置-上传文件 +// @Tags 基本配置 +// @Description 基本配置-上传文件 +// @Accept json +// @Produce json +// @Param req body true "请求参数 表单提交 file文件流 type类型 微信p12文件-wechat_apiclient_cert 支付宝应用公钥证书 payAliNewAppCertSn 支付宝公钥证书 payAliNewAlipayrsaPublicKey 支付宝根证书 payAliNewAlipayRootCertSn" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/service/file/upload [POST] + +func ServiceFileUpload(c *gin.Context) { + // 单文件上传 + file, err := c.FormFile("file") + if err != nil { + c.String(http.StatusBadRequest, fmt.Sprintf("upload error: %s", err.Error())) + return + } + user := svc.GetUser(c) + ext := strings.Split(file.Filename, ".") + newName := c.GetString("mid") + "_" + utils.IntToStr(user.Info.Uid) + "_" + c.PostForm("type") + "." + ext[1] + path := "./static/" + if cfg.Prd { + path = "/etc/zyos-admin/wx_check_file/" + } + if err := c.SaveUploadedFile(file, path+newName); err != nil { + e.OutErr(c, 400, err.Error()) + return + } + e.OutSuc(c, "success", nil) + return +} diff --git a/app/agent/hdl/hdl_store.go b/app/agent/hdl/hdl_store.go new file mode 100644 index 0000000..21e4f9b --- /dev/null +++ b/app/agent/hdl/hdl_store.go @@ -0,0 +1,300 @@ +package hdl + +import ( + "applet/app/db" + "applet/app/db/model" + "applet/app/e" + "applet/app/md" + "applet/app/svc" + "applet/app/utils" + "encoding/json" + "github.com/gin-gonic/gin" + "time" +) + +// UserStoreList 门店列表 +// @Summary 门店-列表 +// @Tags 门店 +// @Description 门店-列表 +// @Accept json +// @Produce json +// @Param req body md.Store true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/store/list [POST] +func UserStoreList(c *gin.Context) { + var arg md.Store + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + list, count := db.GetUserList(svc.MasterDb(c), arg, user.Info.Uid) + data := make([]map[string]interface{}, 0) + if list != nil { + currentMonth := utils.GetTimeRange("current_month") + for _, v := range *list { + store := v.CommunityTeamStore + tmp := map[string]interface{}{ + "uid": utils.IntToStr(v.User.Uid), + "create_at": store.CreateAt.Format("2006-01-02 15:04:05"), + "name": "", + "address": "", + "logo": "", + "order_count": "0", + "order_amount": "0", + "agent_commission": "0", + "platform_commission": "0", + "base_commission": "0", + "work_state": "", + } + count1, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=?", v.User.Uid, user.Info.Uid).In("state", []string{"1", "2"}).Count(&model.CommunityTeamOrder{}) + sum, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=? and create_at>=?", v.User.Uid, user.Info.Uid, time.Unix(currentMonth["start"], 0).Format("2006-01-02 15:04:05")).In("state", []string{"1", "2"}).Sum(&model.CommunityTeamOrder{}, "amount") + tmp["order_count"] = utils.Int64ToStr(count1) + tmp["order_amount"] = svc.GetCommissionPrec(c, utils.Float64ToStr(sum), "2", "") + tmp["name"] = store.Name + tmp["address"] = store.Address + tmp["logo"] = store.Logo + tmp["work_state"] = "营业中" + if store.WorkState == 1 { + tmp["work_state"] = "休息中" + } + tmp["agent_commission"] = store.AgentCommission + data = append(data, tmp) + } + } + res := map[string]interface{}{ + "total": count, + "list": data, + } + e.OutSuc(c, res, nil) +} + +// UserStoreSave 门店编辑 +// @Summary 门店-门店编辑 +// @Tags 门店 +// @Description 门店-门店编辑 +// @Accept json +// @Produce json +// @Param req body md.StoreSave true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/store/save [POST] +func UserStoreSave(c *gin.Context) { + var arg md.StoreSave + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + store := db.GetUserStore(svc.MasterDb(c), utils.StrToInt(arg.Uid)) + if store == nil { + e.OutErr(c, 400, e.NewErr(400, "门店不存在")) + return + } + store.AgentCommission = arg.AgentCommission + svc.MasterDb(c).Where("id=?", store.Id).Cols("agent_commission").Update(store) + e.OutSuc(c, "success", nil) + return +} + +// UserStoreOrder 门店订单-订单管理共用一个 +// @Summary 门店-门店订单 +// @Tags 门店 +// @Description 门店-门店订单 +// @Accept json +// @Produce json +// @Param req body md.StoreOrder true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/store/order [POST] +func UserStoreOrder(c *gin.Context) { + var arg md.StoreOrder + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + data, total, _ := db.GetStoreOrderList(svc.MasterDb(c), arg, user.Info.Uid) + list := make([]map[string]string, 0) + if data != nil { + stateList := []string{"待付款", "已支付", "已提货", "已取消"} + for _, v := range *data { + tmp := map[string]string{ + "oid": utils.Int64ToStr(v.Oid), + "uid": utils.IntToStr(v.Uid), + "phone": "", + "nickname": "", + "store_name": "", + "state_str": stateList[v.State], + "amount": v.Amount, + "agent_commission": v.AgentCommission, + "state": utils.IntToStr(v.State), + "create_at": v.CreateAt.Format("2006-01-02 15:04:05"), + "confirm_at": utils.Int64ToStr(v.Oid), + } + if v.ConfirmAt.IsZero() == false { + tmp["confirm_at"] = v.ConfirmAt.Format("2006-01-02 15:04:05") + } + user1, _ := db.UserFindByID(svc.MasterDb(c), v.Uid) + if user1 != nil { + tmp["phone"] = user1.Phone + tmp["nickname"] = user1.Nickname + } + store := db.GetUserStore(svc.MasterDb(c), v.StoreUid) + if store != nil { + tmp["store_name"] = store.Name + } + list = append(list, tmp) + } + } + res := map[string]interface{}{ + "total": total, + "state": []map[string]string{ + {"name": "待付款", "value": "0"}, + {"name": "已支付", "value": "1"}, + {"name": "已提货", "value": "2"}, + {"name": "已取消", "value": "3"}, + }, + "list": list, + } + e.OutSuc(c, res, nil) +} + +// UserStoreOrderDetail 门店订单详情-订单管理共用一个 +// @Summary 门店-门店订单详情 +// @Tags 门店 +// @Description 门店-门店订单详情 +// @Accept json +// @Produce json +// @Param req body md.StoreOrderDetail true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/store/order/detail [POST] +func UserStoreOrderDetail(c *gin.Context) { + var arg md.StoreOrderDetail + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + order := db.GetOrderByOid(svc.MasterDb(c), arg.Oid) + if order == nil { + e.OutErr(c, 400, e.NewErr(400, "订单不存在")) + return + } + stateList := []string{"待付款", "已支付", "已提货", "已取消"} + payMethodStr := []string{"余额支付", "支付宝支付", "微信支付"} + orderInfoMap := make([]map[string]string, 0) + res := map[string]interface{}{ + "oid": utils.Int64ToStr(order.Oid), + "uid": utils.IntToStr(order.Uid), + "phone": order.Phone, + "nickname": "", + "store_name": "", + "memo": order.Memo, + "coupon": order.Coupon, + "code": order.Code, + "amount": order.Amount, + "all_amount": utils.Float64ToStr(utils.StrToFloat64(order.Amount) + utils.StrToFloat64(order.Coupon)), + "pay_method_str": payMethodStr[order.PayMethod], + "state_str": stateList[order.State], + "state": utils.IntToStr(order.State), + "create_at": order.CreateAt.Format("2006-01-02 15:04:05"), + "confirm_at": "", + "pay_at": "", + "order_info": orderInfoMap, + } + if order.ConfirmAt.IsZero() == false { + res["confirm_at"] = order.ConfirmAt.Format("2006-01-02 15:04:05") + } else { + res["confirm_at"] = order.Timer + if order.IsNow == 1 { + res["confirm_at"] = "立即提货" + } + } + if order.PayAt.IsZero() == false { + res["pay_at"] = order.PayAt.Format("2006-01-02 15:04:05") + } + + user, _ := db.UserFindByID(svc.MasterDb(c), order.Uid) + if user != nil { + res["nickname"] = user.Nickname + if order.Phone == "" { + res["phone"] = user.Phone + } + } + store := db.GetUserStore(svc.MasterDb(c), order.StoreUid) + if store != nil { + res["store_name"] = store.Name + } + orderInfo := db.GetOrderInfoAllEg(svc.MasterDb(c), arg.Oid) + if orderInfo != nil { + for _, v := range *orderInfo { + skuData := make([]md.Sku, 0) + json.Unmarshal([]byte(v.SkuInfo), &skuData) + skuStr := "" + for _, v1 := range skuData { + if skuStr != "" { + skuStr += ";" + } + skuStr += v1.Value + } + tmp := map[string]string{ + "sku_str": skuStr, + "goods_title": v.Title, + "goods_img": v.Img, + "num": utils.IntToStr(v.Num), + "amount": utils.Float64ToStr(float64(v.Num) * utils.StrToFloat64(v.Price)), + } + orderInfoMap = append(orderInfoMap, tmp) + } + res["order_info"] = orderInfoMap + } + + e.OutSuc(c, res, nil) + return +} + +// UserStoreTotal 销售额统计 +// @Summary 门店-销售额统计 +// @Tags 门店 +// @Description 门店-销售额统计 +// @Accept json +// @Produce json +// @Param req body md.StoreOrderTotal true "请求参数" +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/store/total [POST] +func UserStoreTotal(c *gin.Context) { + var arg md.StoreOrderTotal + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + currentMonth := utils.GetTimeRange("current_month") + today := utils.GetTimeRange("today") + withinSevenDays := utils.GetTimeRange("within_seven_days") + + monthSum, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=? and create_at>=?", arg.StoreUid, user.Info.Uid, time.Unix(currentMonth["start"], 0).Format("2006-01-02 15:04:05")).In("state", []string{"1", "2"}).Sum(&model.CommunityTeamOrder{}, "amount") + daySum, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=? and create_at>=?", arg.StoreUid, user.Info.Uid, time.Unix(today["start"], 0).Format("2006-01-02 15:04:05")).In("state", []string{"1", "2"}).Sum(&model.CommunityTeamOrder{}, "amount") + withinSevenDaysSum, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=? and create_at>=?", arg.StoreUid, user.Info.Uid, time.Unix(withinSevenDays["start"], 0).Format("2006-01-02 15:04:05")).In("state", []string{"1", "2"}).Sum(&model.CommunityTeamOrder{}, "amount") + list := []map[string]string{ + {"name": "本日销售额", "value": utils.Float64ToStr(daySum)}, + {"name": "近七日销售额", "value": utils.Float64ToStr(withinSevenDaysSum)}, + {"name": "本月销售额", "value": utils.Float64ToStr(monthSum)}, + } + commission, _ := svc.MasterDb(c).Where("store_uid=? and parent_uid=? ", arg.StoreUid, user.Info.Uid).Sum(&model.CommunityTeamOrder{}, "agent_commission") + + store := db.GetStoreIdEg(svc.MasterDb(c), arg.StoreUid) + res := map[string]interface{}{ + "list": list, + "platform_bili": "-", + "platform_amount": "-", + "base_bili": "-", + "base_amount": "-", + "agent_bili": store.AgentCommission + "%", + "agent_amount": utils.Float64ToStr(commission), + } + e.OutSuc(c, res, nil) + return +} diff --git a/app/agent/hdl/hdl_user.go b/app/agent/hdl/hdl_user.go new file mode 100644 index 0000000..c9e2ad9 --- /dev/null +++ b/app/agent/hdl/hdl_user.go @@ -0,0 +1,27 @@ +package hdl + +import ( + "applet/app/e" + "applet/app/svc" + "github.com/gin-gonic/gin" +) + +// User 用户信息 +// @Summary 用户信息 +// @Tags 用户信息 +// @Description 用户信息 +// @Accept json +// @Produce json +// @Success 200 {string} "" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/v1/communityTeam/agent/user [GET] +func User(c *gin.Context) { + user := svc.GetUser(c) + res := map[string]string{ + "head_img": user.Profile.AvatarUrl, + "nickname": user.Info.Nickname, + "phone": user.Info.Phone, + } + e.OutSuc(c, res, nil) + return +} diff --git a/app/agent/svc/svc_base.go b/app/agent/svc/svc_base.go new file mode 100644 index 0000000..b3463c0 --- /dev/null +++ b/app/agent/svc/svc_base.go @@ -0,0 +1 @@ +package svc diff --git a/app/agent/svc/svc_goods.go b/app/agent/svc/svc_goods.go new file mode 100644 index 0000000..69e15a1 --- /dev/null +++ b/app/agent/svc/svc_goods.go @@ -0,0 +1,386 @@ +package svc + +import ( + "applet/app/db" + "applet/app/db/model" + "applet/app/e" + "applet/app/md" + "applet/app/svc" + "applet/app/utils" + "applet/app/utils/logx" + "encoding/json" + "github.com/gin-gonic/gin" + "github.com/jinzhu/copier" + "github.com/shopspring/decimal" + "strings" + "time" +) + +func GoodsCate(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + arg["uid"] = utils.IntToStr(user.Info.Uid) + arg["store_type"] = "2" + cate, total := db.GetGoodsCate(svc.MasterDb(c), arg) + list := make([]map[string]string, 0) + if cate != nil { + for _, v := range *cate { + tmp := map[string]string{ + "id": utils.IntToStr(v.Id), + "sort": utils.IntToStr(v.Sort), + "is_show": utils.IntToStr(v.IsShow), + "title": v.Title, + } + list = append(list, tmp) + } + } + res := map[string]interface{}{ + "list": list, "total": total, + } + e.OutSuc(c, res, nil) + return +} +func GoodsCateSave(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + var data = &model.CommunityTeamCate{} + + if utils.StrToInt(arg["id"]) > 0 { + cate := db.GetGoodsCateById(svc.MasterDb(c), arg["id"]) + if cate == nil { + e.OutErr(c, 400, e.NewErr(400, "分类不存在")) + return + } + data = cate + } else { + data = &model.CommunityTeamCate{ + IsShow: utils.StrToInt(arg["is_show"]), + } + svc.MasterDb(c).Insert(data) + } + data.StoreType = 2 + data.Uid = user.Info.Uid + data.Sort = utils.StrToInt(arg["sort"]) + data.IsShow = utils.StrToInt(arg["is_show"]) + data.Title = arg["title"] + svc.MasterDb(c).Where("id=?", data.Id).Update(data) + e.OutSuc(c, "success", nil) + return + +} +func GoodsCateShow(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + cate := db.GetGoodsCateById(svc.MasterDb(c), arg["id"]) + if cate == nil { + e.OutErr(c, 400, e.NewErr(400, "分类不存在")) + return + } + cate.IsShow = utils.StrToInt(arg["is_show"]) + svc.MasterDb(c).Where("id=?", cate.Id).Cols("is_show").Update(cate) + e.OutSuc(c, "success", nil) + return + +} +func GoodsCateDel(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + svc.MasterDb(c).In("id", strings.Split(arg["ids"], ",")).Delete(&model.CommunityTeamCate{}) + e.OutSuc(c, "success", nil) + return +} + +func Goods(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user := svc.GetUser(c) + arg["uid"] = utils.IntToStr(user.Info.Uid) + arg["store_type"] = "2" + cate, total := db.GetStoreGoods(svc.MasterDb(c), arg) + list := make([]map[string]string, 0) + cateData := db.GetGoodsCateAll(svc.MasterDb(c)) + cateList := make([]map[string]string, 0) + cateMap := make(map[int]string) + if cateData != nil { + for _, v := range *cateData { + tmp := map[string]string{ + "name": v.Title, "value": utils.IntToStr(v.Id), + } + cateList = append(cateList, tmp) + cateMap[v.Id] = v.Title + } + } + if cate != nil { + stateMap := []string{"上架", "下架"} + scheme, host := svc.ImageBucket(c) + for _, v := range *cate { + tmp := map[string]string{ + "id": utils.IntToStr(v.Id), + "title": v.Title, + "price": v.Price, + "info": v.Info, + "img_url": svc.ImageFormatWithBucket(scheme, host, v.Img), + "create_at": v.CreateAt.Format("2006-01-02 15:04:05"), + "cate": cateMap[v.Cid], + "state": stateMap[v.State], + } + list = append(list, tmp) + } + } + res := map[string]interface{}{ + "list": list, "total": total, "cate_list": cateList, + } + e.OutSuc(c, res, nil) + return +} +func GoodsSave(c *gin.Context) { + var args md.AddGoodsReq + if err := c.ShouldBindJSON(&args); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + saleCount := 0 + eg := svc.MasterDb(c) + user := svc.GetUser(c) + if utils.StrToInt(args.Base.Id) != 0 { + oldGoods := db.GetGoodsById(eg, args.Base.Id) + if oldGoods == nil { + e.OutErr(c, 400, e.NewErr(400, "商品不存在")) + return + } + saleCount = oldGoods.SaleCount + } + sess := eg.NewSession() + defer func() { + _ = sess.Close() + }() + err := sess.Begin() + if err != nil { + e.OutErr(c, 400, e.NewErr(400, err.Error())) + return + } + // 商品基本信息保存 + var goods model.CommunityTeamGoods + err = copier.Copy(&goods, args.Base) + goods.StoreType = 2 + goods.Uid = user.Info.Uid + goods.Id = utils.StrToInt(args.Base.Id) + goods.Stock = utils.StrToInt(args.Base.Stock) + goods.State = utils.StrToInt(args.Base.State) + goods.Cid = utils.StrToInt(args.Base.Cid) + goods.IsSingleSku = utils.StrToInt(args.Base.IsSingleSku) + goods.Sort = utils.StrToInt(args.Base.Sort) + if err != nil { + _ = sess.Rollback() + e.OutErr(c, 400, e.NewErr(400, err.Error())) + return + } + goods.SaleCount = saleCount + goods.Img = args.Base.Img + goods.ImageList = utils.SerializeStr([]string{args.Base.Img}) + goods.Spe = utils.SerializeStr(args.Base.Spe) + // 商品价格处理 + if goods.IsSingleSku == 1 { // 单规格 计算折扣价 + args.SkuList = []md.MallGoodsSku{ + { + Price: args.Base.Price, + Stock: args.Base.Stock, + Indexes: "", + Sku: []map[string]string{}, + }, + } + } else { // 多规格 + var totalStock = 0 + minPriceD, err := decimal.NewFromString(args.SkuList[0].Price) + if err != nil { + _ = sess.Rollback() + e.OutErr(c, 400, e.NewErr(400, "规格价格格式有误")) + return + } + for _, item := range args.SkuList { + tempPrice, err := decimal.NewFromString(item.Price) + totalStock += utils.StrToInt(item.Stock) + if err != nil { + _ = sess.Rollback() + logx.Warn("", err) + e.OutErr(c, 400, e.NewErr(400, "规格价格格式有误")) + return + } + if tempPrice.LessThan(minPriceD) { + minPriceD = tempPrice + } + } + goods.Price = minPriceD.String() + goods.Stock = totalStock + } + goods.UpdateAt = time.Now() + if utils.StrToInt(args.Base.Id) == 0 { // 新增goods + goods.CreateAt = time.Now() + _, err = sess.Insert(&goods) + if err != nil { + logx.Warn(err) + _ = sess.Rollback() + e.OutErr(c, 400, e.NewErr(400, "插入商品数据失败")) + return + } + } else { // 更新数据 + oldGoods := db.GetGoodsByIdSess(sess, args.Base.Id) + goods.CreateAt = oldGoods.CreateAt + _, err = sess.Where(" id = ?", args.Base.Id). + AllCols().Update(&goods) + if err != nil { + _ = sess.Rollback() + logx.Warn(err) + e.OutErr(c, 400, e.NewErr(400, "更新商品失败")) + return + } + } + skuModelList := make([]*model.CommunityTeamSku, 0, len(args.SkuList)) + for _, item := range args.SkuList { + skuModelList = append(skuModelList, &model.CommunityTeamSku{ + GoodsId: goods.Id, + Price: item.Price, + Stock: utils.StrToInt(item.Stock), + Indexes: GetIndexesStr(&args.Base, item), + Sku: utils.SerializeStr(&item.Sku), + Discount: "10", + }) + } + // 插入sku信息 + if len(skuModelList) != 0 { + insert, err := sess.Insert(skuModelList) + if err != nil || insert < 1 { + _ = sess.Rollback() + e.OutErr(c, 400, e.NewErr(400, "商品规格插入失败")) + return + } + } + + sess.Commit() + e.OutSuc(c, "success", nil) + return + +} +func GetIndexesStr(baseGoods *md.BaseGoods, goodsSku md.MallGoodsSku) string { + spe := baseGoods.Spe + sku := goodsSku.Sku + result := "" + + for index, item := range sku { + for _, itm := range spe { + if item["name"] == itm.Name { + for i, v := range spe[index].Values { + if v == item["value"] { + result = result + utils.IntToStr(i) + "-" + } + } + } + } + } + return strings.Trim(result, "-") +} + +func GoodsDel(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + svc.MasterDb(c).In("id", strings.Split(arg["ids"], ",")).Delete(&model.CommunityTeamGoods{}) + svc.MasterDb(c).In("goods_id", strings.Split(arg["ids"], ",")).Delete(&model.CommunityTeamSku{}) + e.OutSuc(c, "success", nil) + return +} +func GoodsDetail(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + goods := db.GetGoodsById(svc.MasterDb(c), arg["id"]) + if goods == nil { + e.OutErr(c, 400, e.NewErr(400, "商品不存在")) + return + } + cateData := db.GetGoodsCateAll(svc.MasterDb(c)) + cateList := make([]map[string]string, 0) + cateMap := make(map[int]string) + if cateData != nil { + for _, v := range *cateData { + tmp := map[string]string{ + "name": v.Title, "value": utils.IntToStr(v.Id), + } + cateList = append(cateList, tmp) + cateMap[v.Id] = v.Title + } + } + stateMap := []string{"上架", "下架"} + scheme, host := svc.ImageBucket(c) + res := md.BaseGoods{ + Id: utils.IntToStr(goods.Id), + Title: goods.Title, + Cid: utils.IntToStr(goods.Cid), + CategoryName: cateMap[goods.Cid], + IsSingleSku: utils.IntToStr(goods.IsSingleSku), + Price: goods.Price, + Stock: utils.IntToStr(goods.Stock), + Img: goods.Img, + ImgUrl: svc.ImageFormatWithBucket(scheme, host, goods.Img), + Spe: nil, + Sort: utils.IntToStr(goods.Sort), + Info: goods.Info, + State: utils.IntToStr(goods.State), + StateStr: stateMap[goods.State], + } + GoodsSpe := make([]md.GoodsSpe, 0) + json.Unmarshal([]byte(goods.Spe), &GoodsSpe) + for k, v := range GoodsSpe { + if len(v.Values) == 0 { + GoodsSpe[k].Values = make([]string, 0) + } + } + res.Spe = GoodsSpe + sku := db.GetGoodsSkuById(svc.MasterDb(c), goods.Id) + skuList := make([]md.MallGoodsSku, 0) + if sku != nil { + for _, v := range *sku { + skuMap := make([]map[string]string, 0) + json.Unmarshal([]byte(v.Sku), &skuMap) + tmp := md.MallGoodsSku{ + SkuID: utils.Int64ToStr(v.SkuId), + GoodsID: utils.IntToStr(v.GoodsId), + Price: v.Price, + Stock: utils.IntToStr(v.Stock), + Indexes: v.Indexes, + Sku: skuMap, + } + skuList = append(skuList, tmp) + } + } + if goods.IsSingleSku == 1 { + skuList = nil + } + re := map[string]interface{}{ + "base": res, + "sku_list": skuList, + } + e.OutSuc(c, re, nil) + return +} diff --git a/app/agent/svc/svc_login.go b/app/agent/svc/svc_login.go new file mode 100644 index 0000000..e293bcf --- /dev/null +++ b/app/agent/svc/svc_login.go @@ -0,0 +1,43 @@ +package svc + +import ( + "applet/app/db" + "applet/app/e" + "applet/app/md" + "applet/app/svc" + "applet/app/utils" + "github.com/gin-gonic/gin" +) + +func Login(c *gin.Context) { + r := new(md.LoginResponse) + requestBody := new(md.FastLoginRequestBody) + if err := c.ShouldBindJSON(&requestBody); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + user, _ := db.UserFindByMobileAll(svc.MasterDb(c), requestBody.Mobile) + if user == nil { + e.OutErr(c, 400, e.NewErr(400, "账号不存在")) + return + } + if user.Password != utils.Md5(requestBody.Password) { + e.OutErr(c, 400, e.NewErr(400, "密码不正确")) + return + } + userParty, _ := db.UserThirdPartyFindByID(svc.MasterDb(c), user.Uid) + if userParty == nil || userParty.IsAgent == 0 { + e.OutErr(c, 400, e.NewErr(400, "请联系平台成为代理")) + return + } + if err := svc.FastLoginUserExist(c, r, requestBody); err != nil { + if e.ErrorIsAccountBan(err) { + e.OutErr(c, e.ERR_USER_IS_BAN, err) + return + } + e.OutErr(c, 400, err) + return + } + e.OutSuc(c, r, nil) + return +} diff --git a/app/agent/svc/svc_order.go b/app/agent/svc/svc_order.go new file mode 100644 index 0000000..b3463c0 --- /dev/null +++ b/app/agent/svc/svc_order.go @@ -0,0 +1 @@ +package svc diff --git a/app/agent/svc/svc_store.go b/app/agent/svc/svc_store.go new file mode 100644 index 0000000..b3463c0 --- /dev/null +++ b/app/agent/svc/svc_store.go @@ -0,0 +1 @@ +package svc diff --git a/app/db/db_good.go b/app/db/db_good.go new file mode 100644 index 0000000..f862099 --- /dev/null +++ b/app/db/db_good.go @@ -0,0 +1,51 @@ +package db + +import ( + "applet/app/db/model" + "applet/app/utils" + "xorm.io/xorm" +) + +func GetStoreGoods(eg *xorm.Engine, req map[string]string) (*[]model.CommunityTeamGoods, int64) { + var data []model.CommunityTeamGoods + limit := utils.StrToInt(req["size"]) + start := (utils.StrToInt(req["p"]) - 1) * limit + sess := eg.Where("uid=?", req["uid"]).OrderBy("sort desc,id desc").Limit(limit, start) + if req["title"] != "" { + sess.And("title like ?", "%"+req["title"]+"%") + } + if req["cid"] != "" { + sess.And("cid=?", req["cid"]) + } + if req["store_type"] != "" { + sess.And("store_type=?", req["store_type"]) + } + if req["start_time"] != "" { + sess.And("create_at>=?", req["start_time"]) + } + if req["end_time"] != "" { + sess.And("create_at<=?", req["end_time"]) + } + count, err := sess.FindAndCount(&data) + if err != nil { + return nil, count + } + return &data, count +} + +func GetGoodsById(eg *xorm.Engine, id string) *model.CommunityTeamGoods { + var data model.CommunityTeamGoods + get, err := eg.Where("id=?", id).Get(&data) + if get == false || err != nil { + return nil + } + return &data +} +func GetGoodsByIdSess(sess *xorm.Session, id string) *model.CommunityTeamGoods { + var data model.CommunityTeamGoods + get, err := sess.Where("id=?", id).Get(&data) + if get == false || err != nil { + return nil + } + return &data +} diff --git a/app/db/db_good_cate.go b/app/db/db_good_cate.go new file mode 100644 index 0000000..c334b3a --- /dev/null +++ b/app/db/db_good_cate.go @@ -0,0 +1,42 @@ +package db + +import ( + "applet/app/db/model" + "applet/app/utils" + "xorm.io/xorm" +) + +func GetGoodsCateAll(eg *xorm.Engine) *[]model.CommunityTeamCate { + var data []model.CommunityTeamCate + err := eg.Where("uid=0").OrderBy("sort desc,id desc").Find(&data) + if err != nil { + return nil + } + return &data +} +func GetGoodsCate(eg *xorm.Engine, req map[string]string) (*[]model.CommunityTeamCate, int64) { + var data []model.CommunityTeamCate + limit := utils.StrToInt(req["size"]) + start := (utils.StrToInt(req["p"]) - 1) * limit + sess := eg.Where("uid=?", req["uid"]).OrderBy("sort desc,id desc").Limit(limit, start) + if req["title"] != "" { + sess.And("title like ?", "%"+req["title"]+"%") + } + if req["store_type"] != "" { + sess.And("store_type=?", req["store_type"]) + } + count, err := sess.FindAndCount(&data) + if err != nil { + return nil, count + } + return &data, count +} + +func GetGoodsCateById(eg *xorm.Engine, id string) *model.CommunityTeamCate { + var data model.CommunityTeamCate + get, err := eg.Where("id=?", id).Get(&data) + if get == false || err != nil { + return nil + } + return &data +} diff --git a/app/db/db_order.go b/app/db/db_order.go index 29d4879..db04099 100644 --- a/app/db/db_order.go +++ b/app/db/db_order.go @@ -2,10 +2,19 @@ package db import ( "applet/app/db/model" + "applet/app/md" "applet/app/utils" "xorm.io/xorm" ) +func GetOrderByOid(eg *xorm.Engine, oid string) *model.CommunityTeamOrder { + var data model.CommunityTeamOrder + get, err := eg.Where("oid=?", oid).Get(&data) + if get == false || err != nil { + return nil + } + return &data +} func GetOrderEg(eg *xorm.Engine, oid string) *model.CommunityTeamOrder { var data model.CommunityTeamOrder get, err := eg.Where("oid=?", oid).Get(&data) @@ -70,3 +79,58 @@ func GetOrderList(eg *xorm.Engine, arg map[string]string) *[]model.CommunityTeam } return &data } +func GetStoreOrderList(eg *xorm.Engine, req md.StoreOrder, parent_uid int) (*[]model.CommunityTeamOrder, int64, error) { + var data []model.CommunityTeamOrder + sess := eg.Where("1=1") + if req.Oid != "" { + sess.And("oid like ?", "%"+req.Oid+"%") + } + + if req.StoreName != "" { + var store []model.CommunityTeamStore + eg.Where("name like ?", "%"+req.StoreName+"%").Find(&store) + ids := []int{-1} + for _, v := range store { + ids = append(ids, v.Id) + } + sess.In("store_uid", ids) + } + if req.Phone != "" { + var user []model.User + eg.Where("phone like ?", "%"+req.Phone+"%").Find(&user) + ids := []int{-1} + for _, v := range user { + ids = append(ids, v.Uid) + } + sess.In("uid", ids) + } + if req.Nickname != "" { + var user []model.User + eg.Where("nickname like ?", "%"+req.Nickname+"%").Find(&user) + ids := []int{-1} + for _, v := range user { + ids = append(ids, v.Uid) + } + sess.In("uid", ids) + } + if req.StoreUid != "" { + sess.And("store_uid=?", req.StoreUid) + } + if parent_uid > 0 { + sess.And("parent_uid=?", parent_uid) + } + + if req.StartTime != "" { + sess.And("create_at>=?", req.StartTime) + } + if req.EndTime != "" { + sess.And("create_at<=?", req.EndTime) + } + size := utils.StrToInt(req.Size) + start := (utils.StrToInt(req.P) - 1) * size + count, err := sess.Limit(size, start).OrderBy("create_at desc,id desc").FindAndCount(&data) + if err != nil { + return nil, 0, err + } + return &data, count, nil +} diff --git a/app/db/db_other_city_login_list.go b/app/db/db_other_city_login_list.go new file mode 100644 index 0000000..22d9866 --- /dev/null +++ b/app/db/db_other_city_login_list.go @@ -0,0 +1,32 @@ +package db + +import ( + "applet/app/db/model" + "applet/app/utils/logx" + "xorm.io/xorm" +) + +func OtherCityLoginByUid(Db *xorm.Engine, uid int) (*model.OtherCityLoginList, error) { + var o model.OtherCityLoginList + has, err := Db.Where("uid = ?", uid).Desc("time").Get(&o) + if err != nil || !has { + return nil, err + } + return &o, nil +} + +// 插入 +func OtherCityLoginByInsert(Db *xorm.Engine, list *model.OtherCityLoginList) { + row, err := Db.InsertOne(list) + if err != nil || row == 0 { + _ = logx.Warn(err) + } +} + +// 更新 +func OtherCityLoginByUpdate(Db *xorm.Engine, list *model.OtherCityLoginList) { + row, err := Db.ID(list.Id).Cols("is_notice").Update(list) + if err != nil || row == 0 { + _ = logx.Warn(err) + } +} diff --git a/app/db/db_sku.go b/app/db/db_sku.go new file mode 100644 index 0000000..6c9bba6 --- /dev/null +++ b/app/db/db_sku.go @@ -0,0 +1,15 @@ +package db + +import ( + "applet/app/db/model" + "xorm.io/xorm" +) + +func GetGoodsSkuById(eg *xorm.Engine, id int) *[]model.CommunityTeamSku { + var data []model.CommunityTeamSku + err := eg.Where("goods_id=?", id).Find(&data) + if err != nil { + return nil + } + return &data +} diff --git a/app/db/db_store.go b/app/db/db_store.go index 718491b..22eb2c1 100644 --- a/app/db/db_store.go +++ b/app/db/db_store.go @@ -7,6 +7,15 @@ import ( "xorm.io/xorm" ) +func GetUserStore(eg *xorm.Engine, id int) *model.CommunityTeamStore { + var data model.CommunityTeamStore + get, err := eg.Where("uid=?", id).Get(&data) + if get == false || err != nil { + return nil + } + return &data +} + func GetStore(eg *xorm.Engine, arg map[string]string) []map[string]string { lng := utils.StrToFloat64(arg["lng"]) lat := utils.StrToFloat64(arg["lat"]) @@ -19,10 +28,14 @@ func GetStore(eg *xorm.Engine, arg map[string]string) []map[string]string { } else if arg["uid"] != "" { where += " and store_type=1 and uid=" + arg["parent_uid"] } else { - where += " and store_type=" + arg["store_type"] + if arg["store_type"] == "3" { + where += " and store_type in(1,2)" + } else { + where += " and store_type=" + arg["store_type"] + } } if arg["city"] != "" { - where += " and address like '%" + arg["city"] + "%'" + where += " and city like '%" + arg["city"] + "%'" } if arg["province_id"] != "" { where += " and province_id = '" + arg["province_id"] + "'" @@ -62,7 +75,11 @@ where %s %s` } else if arg["uid"] != "" { where += " and cts.store_type=1 and cts.uid=" + arg["parent_uid"] } else { - where += " and cts.store_type=" + arg["store_type"] + if arg["store_type"] == "3" { + where += " and cts.store_type in(1,2)" + } else { + where += " and cts.store_type=" + arg["store_type"] + } } if arg["city"] != "" { where += " and cts.city='" + arg["city"] + "'" diff --git a/app/db/db_user.go b/app/db/db_user.go index 00dcf05..82310a8 100644 --- a/app/db/db_user.go +++ b/app/db/db_user.go @@ -2,6 +2,8 @@ package db import ( "applet/app/db/model" + "applet/app/md" + "applet/app/utils" "applet/app/utils/logx" "fmt" "strings" @@ -21,6 +23,13 @@ func UserisExistByUsernameAndPassword(Db *xorm.Engine, username, password, zone } return &user, nil } +func UserThirdPartyFindByID(Db *xorm.Engine, id interface{}) (*model.UserThirdParty, error) { + var m model.UserThirdParty + if has, err := Db.Where("uid = ?", id).Get(&m); err != nil || has == false { + return nil, logx.Warn(err) + } + return &m, nil +} // UserisExistByMobile is exist func UserisExistByMobile(Db *xorm.Engine, n string) (bool, error) { @@ -393,3 +402,19 @@ func UserProfileCheckInviteCode(eg *xorm.Engine, uid int, inviteCode string) boo } return true } + +func GetUserList(eg *xorm.Engine, arg md.Store, uid int) (*[]md.StoreGroup, int64) { + var data []md.StoreGroup + sess := eg.Table("user").Where("user.is_marketer=? and community_team_store.parent_uid=?", 1, uid) + size := utils.StrToInt(arg.Size) + start := (utils.StrToInt(arg.P) - 1) * size + if arg.Name != "" { + sess.And("community_team_store.name like ?", "%"+arg.Name+"%") + } + sess.Join("LEFT", "community_team_store", "user.uid = community_team_store.uid") + count, err := sess.Limit(size, start).Desc("user.create_at").FindAndCount(&data) + if err != nil { + return nil, count + } + return &data, count +} diff --git a/app/db/model/community_team_order.go b/app/db/model/community_team_order.go index dfdf25a..5765f43 100644 --- a/app/db/model/community_team_order.go +++ b/app/db/model/community_team_order.go @@ -5,37 +5,38 @@ import ( ) type CommunityTeamOrder struct { - Id int `json:"id" xorm:"not null pk autoincr INT(11)"` - Uid int `json:"uid" xorm:"default 0 INT(11)"` - StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` - StoreUid int `json:"store_uid" xorm:"default 0 comment('门店用户id') INT(11)"` - ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` - Num int `json:"num" xorm:"default 0 comment('') INT(11)"` - CouponId int `json:"coupon_id" xorm:"default 0 comment('') INT(11)"` - Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` - Commission string `json:"commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` - CreateAt time.Time `json:"create_at" xorm:"DATETIME"` - UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` - CancelAt time.Time `json:"cancel_at" xorm:"DATETIME"` - BuyPhone string `json:"buy_phone" xorm:"VARCHAR(255)"` - Phone string `json:"phone" xorm:"VARCHAR(255)"` - BuyName string `json:"buy_name" xorm:"VARCHAR(255)"` - State int `json:"state" xorm:"default 0 comment('0待付款 1已支付 2已提货') INT(11)"` - PayAt time.Time `json:"pay_at" xorm:"comment('付款时间') DATETIME"` - ConfirmAt time.Time `json:"confirm_at" xorm:"comment('提货时间') DATETIME"` - Oid int64 `json:"oid" xorm:"default 0 comment('主单号') BIGINT(20)"` - Code string `json:"code" xorm:"comment('提货码') VARCHAR(255)"` - Type int `json:"type" xorm:"default 0 comment('0自提 1外卖') INT(1)"` - PayMethod int `json:"pay_method" xorm:"default 0 comment('1余额 2支付宝 3微信') INT(11)"` - PayId string `json:"pay_id" xorm:"comment('第三方的支付id') VARCHAR(255)"` - Amount string `json:"amount" xorm:"default 0.00 comment('总金额') DECIMAL(20,2)"` - Memo string `json:"memo" xorm:"comment('备注') VARCHAR(255)"` - TakeTime time.Time `json:"take_time" xorm:"comment('预计提货时间') DATETIME"` - MealNum int `json:"meal_num" xorm:"default 0 comment('餐具数量') INT(11)"` - Coupon string `json:"coupon" xorm:"default 0.00 DECIMAL(10,2)"` - Timer string `json:"timer" xorm:"comment('预计提货时间') VARCHAR(255)"` - IsNow int `json:"is_now" xorm:"default 0 comment('是否立即提货') INT(1)"` - StoreSettleAt int `json:"store_settle_at" xorm:"default 0 comment('') INT(11)"` - SettleAt int `json:"settle_at" xorm:"default 0 comment('') INT(11)"` - CommissionAt int `json:"commission_at" xorm:"default 0 comment('') INT(11)"` + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"default 0 INT(11)"` + StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` + StoreUid int `json:"store_uid" xorm:"default 0 comment('门店用户id') INT(11)"` + ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` + Num int `json:"num" xorm:"default 0 comment('') INT(11)"` + CouponId int `json:"coupon_id" xorm:"default 0 comment('') INT(11)"` + Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` + Commission string `json:"commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` + AgentCommission string `json:"agent_commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` + CreateAt time.Time `json:"create_at" xorm:"DATETIME"` + UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` + CancelAt time.Time `json:"cancel_at" xorm:"DATETIME"` + BuyPhone string `json:"buy_phone" xorm:"VARCHAR(255)"` + Phone string `json:"phone" xorm:"VARCHAR(255)"` + BuyName string `json:"buy_name" xorm:"VARCHAR(255)"` + State int `json:"state" xorm:"default 0 comment('0待付款 1已支付 2已提货') INT(11)"` + PayAt time.Time `json:"pay_at" xorm:"comment('付款时间') DATETIME"` + ConfirmAt time.Time `json:"confirm_at" xorm:"comment('提货时间') DATETIME"` + Oid int64 `json:"oid" xorm:"default 0 comment('主单号') BIGINT(20)"` + Code string `json:"code" xorm:"comment('提货码') VARCHAR(255)"` + Type int `json:"type" xorm:"default 0 comment('0自提 1外卖') INT(1)"` + PayMethod int `json:"pay_method" xorm:"default 0 comment('1余额 2支付宝 3微信') INT(11)"` + PayId string `json:"pay_id" xorm:"comment('第三方的支付id') VARCHAR(255)"` + Amount string `json:"amount" xorm:"default 0.00 comment('总金额') DECIMAL(20,2)"` + Memo string `json:"memo" xorm:"comment('备注') VARCHAR(255)"` + TakeTime time.Time `json:"take_time" xorm:"comment('预计提货时间') DATETIME"` + MealNum int `json:"meal_num" xorm:"default 0 comment('餐具数量') INT(11)"` + Coupon string `json:"coupon" xorm:"default 0.00 DECIMAL(10,2)"` + Timer string `json:"timer" xorm:"comment('预计提货时间') VARCHAR(255)"` + IsNow int `json:"is_now" xorm:"default 0 comment('是否立即提货') INT(1)"` + StoreSettleAt int `json:"store_settle_at" xorm:"default 0 comment('') INT(11)"` + SettleAt int `json:"settle_at" xorm:"default 0 comment('') INT(11)"` + CommissionAt int `json:"commission_at" xorm:"default 0 comment('') INT(11)"` } diff --git a/app/db/model/community_team_store.go b/app/db/model/community_team_store.go index 60cc0f0..17aa36a 100644 --- a/app/db/model/community_team_store.go +++ b/app/db/model/community_team_store.go @@ -5,20 +5,27 @@ import ( ) type CommunityTeamStore struct { - Id int `json:"id" xorm:"not null pk autoincr INT(11)"` - Uid int `json:"uid" xorm:"default 0 INT(11)"` - StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` - ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` - Lat string `json:"lat" xorm:"default 0.000000 comment('纬度') DECIMAL(30,6)"` - Lng string `json:"lng" xorm:"default 0.000000 comment('经度') DECIMAL(30,6)"` - Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` - Commission string `json:"commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` - CreateAt time.Time `json:"create_at" xorm:"DATETIME"` - UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` - State int `json:"state" xorm:"default 0 comment('0非店长 1店长') INT(1)"` - WorkState int `json:"work_state" xorm:"default 0 comment('0营业中 1休息中') INT(1)"` - Name string `json:"name" xorm:"VARCHAR(255)"` - Province string `json:"province" xorm:"comment('省级的名称') VARCHAR(255)"` - City string `json:"city" xorm:"comment('市级的名称') VARCHAR(255)"` - District string `json:"district" xorm:"comment('县,区名称') VARCHAR(255)"` + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"default 0 INT(11)"` + StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` + ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` + Lat string `json:"lat" xorm:"default 0.000000 comment('纬度') DECIMAL(30,6)"` + Lng string `json:"lng" xorm:"default 0.000000 comment('经度') DECIMAL(30,6)"` + Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` + Commission string `json:"commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` + AgentCommission string `json:"agent_commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` + CreateAt time.Time `json:"create_at" xorm:"DATETIME"` + UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` + State int `json:"state" xorm:"default 0 comment('0非店长 1店长') INT(1)"` + WorkState int `json:"work_state" xorm:"default 0 comment('0营业中 1休息中') INT(1)"` + Name string `json:"name" xorm:"VARCHAR(255)"` + Province string `json:"province" xorm:"comment('省级的名称') VARCHAR(255)"` + City string `json:"city" xorm:"comment('市级的名称') VARCHAR(255)"` + District string `json:"district" xorm:"comment('县,区名称') VARCHAR(255)"` + Timer string `json:"timer" xorm:"comment('') VARCHAR(255)"` + Phone string `json:"phone" xorm:"comment('') VARCHAR(255)"` + Logo string `json:"logo" xorm:"comment('') VARCHAR(255)"` + ProvinceId int `json:"province_id" xorm:"comment('省级的名称') INT(11)"` + CityId int `json:"city_id" xorm:"comment('市级的名称') INT(11)"` + DistrictId int `json:"district_id" xorm:"comment('县,区名称') INT(11)"` } diff --git a/app/db/model/other_city_login_list.go b/app/db/model/other_city_login_list.go new file mode 100644 index 0000000..580574d --- /dev/null +++ b/app/db/model/other_city_login_list.go @@ -0,0 +1,14 @@ +package model + +type OtherCityLoginList struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"default 0 comment('用户id') INT(11)"` + NowIp string `json:"now_ip" xorm:"default '' comment('当前登录ip') VARCHAR(20)"` + NowCity string `json:"now_city" xorm:"default '' comment('当前登录城市') VARCHAR(20)"` + LastIp string `json:"last_ip" xorm:"default '' comment('上次登录ip') VARCHAR(20)"` + LastCity string `json:"last_city" xorm:"default '' comment('上次登录城市') VARCHAR(20)"` + Time int64 `json:"time" xorm:"default 0 comment('时间') INT(11)"` + IsNotice int `json:"is_notice" xorm:"default 0 comment('是否通知过') INT(11)"` + Lat float64 `json:"lat" xorm:"default 0.000000 comment('纬度') INT(11)"` + Lng float64 `json:"lng" xorm:"default 0.000000 comment('经度') INT(11)"` +} diff --git a/app/db/model/user_third_party.go b/app/db/model/user_third_party.go new file mode 100644 index 0000000..4030ae4 --- /dev/null +++ b/app/db/model/user_third_party.go @@ -0,0 +1,9 @@ +package model + +type UserThirdParty struct { + Uid int `json:"uid" xorm:"not null pk autoincr comment('主键ID') INT(10)"` + ThirdPartyJdMiniOpenid string `json:"third_party_jd_mini_openid" xorm:"not null default '' VARCHAR(255)"` + IsAgent int `json:"is_agent" xorm:"default 0 comment('小店代理') INT(1)"` + WechatPayInfo string `json:"wechat_pay_info" xorm:"comment('微信支付配置') VARCHAR(1000)"` + AlipayPayInfo string `json:"alipay_pay_info" xorm:"comment('支付宝') VARCHAR(1000)"` +} diff --git a/app/hdl/hdl_store.go b/app/hdl/hdl_store.go index 58b445d..408ab71 100644 --- a/app/hdl/hdl_store.go +++ b/app/hdl/hdl_store.go @@ -47,6 +47,18 @@ func BankStoreCate(c *gin.Context) { func BankStore(c *gin.Context) { svc.BankStore(c) } +func NewStoreCate(c *gin.Context) { + var res = []map[string]string{ + {"name": "全部店铺", "value": ""}, + {"name": "附近店铺", "value": "1"}, + {"name": "关注店铺", "value": "2"}, + } + e.OutSuc(c, res, nil) + return +} +func NewStore(c *gin.Context) { + svc.NewStore(c) +} func Store(c *gin.Context) { svc.Store(c) } diff --git a/app/md/alipay.go b/app/md/alipay.go index 0eafa67..03ef49e 100644 --- a/app/md/alipay.go +++ b/app/md/alipay.go @@ -40,6 +40,7 @@ type AliPayPayParams struct { OrdId string `json:"ord_id"` Uid string `json:"uid"` Phone string `json:"phone"` + AgentId int `json:"agent_id"` } type PayData struct { PayAppCertSn string `json:"pay_app_cert_sn"` diff --git a/app/md/amap.go b/app/md/amap.go new file mode 100644 index 0000000..b8c130f --- /dev/null +++ b/app/md/amap.go @@ -0,0 +1,14 @@ +package md + +type IpInfo struct { + City string `json:"city"` + Country string `json:"country"` + District string `json:"district"` + Info string `json:"info"` + Infocode string `json:"infocode"` + IP string `json:"ip"` + Isp string `json:"isp"` + Location string `json:"location"` + Province string `json:"province"` + Status string `json:"status"` +} diff --git a/app/md/login.go b/app/md/login.go new file mode 100644 index 0000000..05baf05 --- /dev/null +++ b/app/md/login.go @@ -0,0 +1,13 @@ +package md + +type FastLoginRequestBody struct { + Mobile string `json:"mobile"` + Password string `json:"password"` +} + +type LoginResponse struct { + Token string `json:"token"` + UserID string `json:"user_id"` + Phone string `json:"phone"` + UserName string `json:"username"` +} diff --git a/app/md/md_alipay.go b/app/md/md_alipay.go new file mode 100644 index 0000000..01610e6 --- /dev/null +++ b/app/md/md_alipay.go @@ -0,0 +1,23 @@ +package md + +type AlipayPay struct { + PayAliNewAppId string `json:"pay_ali_new_app_id"` + PayAliNewPrivateKey string `json:"pay_ali_new_private_key"` +} +type AlipayPaySet struct { + PayAliAppId string `json:"pay_ali_app_id"` + PayAliKeyFormatType string `json:"pay_ali_key_format_type"` + PayAliKeyLenType string `json:"pay_ali_key_len_type"` + PayAliKeyType string `json:"pay_ali_key_type"` + PayAliNewAlipayrsaPublicKey string `json:"pay_ali_new_alipayrsa_public_key"` + PayAliNewAlipayRootCertSn string `json:"pay_ali_new_alipay_root_cert_sn"` + PayAliNewAppCertSn string `json:"pay_ali_new_app_cert_sn"` + PayAliNewAppId string `json:"pay_ali_new_app_id"` + PayAliNewPrivateKey string `json:"pay_ali_new_private_key"` + PayAliPrivateKey string `json:"pay_ali_private_key"` + PayAliPublicKey string `json:"pay_ali_public_key"` + PayAliUseType string `json:"pay_ali_use_type"` + PayAppCertSn string `json:"pay_app_cert_sn"` + PayAlipayRootCertSn string `json:"pay_alipay_root_cert_sn"` + PayAlipayrsaPublicKey string `json:"pay_alipayrsa_public_key"` +} diff --git a/app/md/md_api_response.go b/app/md/md_api_response.go new file mode 100644 index 0000000..9460e3b --- /dev/null +++ b/app/md/md_api_response.go @@ -0,0 +1,7 @@ +package md + +type Response struct { + Code string `json:"code" example:"响应码"` + Data interface{} `json:"data" ` //内容 + Msg string `json:"msg" example:"具体错误原因"` +} diff --git a/app/md/md_store.go b/app/md/md_store.go new file mode 100644 index 0000000..bc0cc98 --- /dev/null +++ b/app/md/md_store.go @@ -0,0 +1,35 @@ +package md + +import "applet/app/db/model" + +type Store struct { + P string `json:"p"` + Size string `json:"size"` + Name string `json:"name"` +} +type StoreGroup struct { + model.User `xorm:"extends"` + model.CommunityTeamStore `xorm:"extends"` +} +type StoreSave struct { + Uid string `json:"uid"` + AgentCommission string `json:"agent_commission"` +} + +type StoreOrder struct { + P string `json:"p"` + Size string `json:"size"` + Nickname string `json:"nickname"` + Phone string `json:"phone"` + StartTime string `json:"start_time"` + EndTime string `json:"end_time"` + Oid string `json:"oid"` + StoreUid string `json:"store_uid"` + StoreName string `json:"store_name"` +} +type StoreOrderTotal struct { + StoreUid string `json:"store_uid"` +} +type StoreOrderDetail struct { + Oid string `json:"oid"` +} diff --git a/app/md/md_wechat.go b/app/md/md_wechat.go new file mode 100644 index 0000000..b69c1c0 --- /dev/null +++ b/app/md/md_wechat.go @@ -0,0 +1,12 @@ +package md + +type WechatPay struct { + PayWxApiKey string `json:"pay_wx_api_key" example:"微信支付api密钥"` + PayWxMchId string `json:"pay_wx_mch_id" example:"微信支付商户mch_id"` +} + +type WechatPaySave struct { + PayWxApiKey string `json:"pay_wx_api_key" example:"微信支付api密钥"` + PayWxMchId string `json:"pay_wx_mch_id" example:"微信支付商户mch_id"` + WechatP12ApiclientCert string `json:"wechat_p12_apiclient_cert"` +} diff --git a/app/md/store_goods.go b/app/md/store_goods.go new file mode 100644 index 0000000..2806a53 --- /dev/null +++ b/app/md/store_goods.go @@ -0,0 +1,35 @@ +package md + +type BaseGoods struct { + Id string `json:"id,omitempty" label:"商品ID"` // 商品id,0或不传为新建 + Title string `json:"title" label:"标题"` // 商品标题 + Cid string `json:"cid" label:"商品类目"` // 商品类目id + CategoryName string `json:"category_name" label:"商品类目名称"` // 商品类目 + IsSingleSku string `json:"is_single_sku" default:"1" label:"是否单规格"` //是否单规格,0:否,1:是 + Price string `json:"price" default:"0.00" label:"商品价格"` // 商品价格 + Stock string `json:"stock,omitempty" default:"0" label:"库存"` // 库存 + Img string `json:"img"` + ImgUrl string `json:"img_url"` + Spe []GoodsSpe `json:"spe" label:"商品规格"` // 规格 + Sort string `json:"sort" label:"排序"` + Info string `json:"info" label:""` + State string `json:"state" label:""` + StateStr string `json:"state_str" label:""` +} +type GoodsSpe struct { + SpeId string `json:"spe_id"` + Name string `json:"name" label:"规格名"` // 规格名 + Values []string `json:"values" label:"规格值"` // 规格值 +} +type AddGoodsReq struct { + Base BaseGoods `json:"base" binding:"required" label:"商品基本信息"` // 基本信息 + SkuList []MallGoodsSku `json:"sku_list" label:"商品规格"` // sku列表 +} +type MallGoodsSku struct { + SkuID string `json:"sku_id,omitempty" label:"skuID" copier:"-"` // sku_id 0或不传为新建 + GoodsID string `json:"goods_id,omitempty" label:"商品ID"` // 0或不传为新建 + Price string `json:"price" binding:"required" label:"价格"` // 价格 + Stock string `json:"stock" default:"0" label:"库存"` // 库存 + Indexes string `json:"indexes"` + Sku []map[string]string `json:"sku" label:"规格组合"` // 规格组合 +} diff --git a/app/router/router.go b/app/router/router.go index 372b446..3e5a953 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -1,11 +1,14 @@ package router import ( + agentHdl "applet/app/agent/hdl" "applet/app/cfg" "applet/app/hdl" "applet/app/mw" _ "applet/docs" "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" ) // 初始化路由 @@ -19,6 +22,10 @@ func Init() *gin.Engine { gin.SetMode(mode) //创建一个新的启动器 r := gin.New() + r.GET("/api/swagger/*any", func(c *gin.Context) { + //r.Use(mw.SwagAuth()) + ginSwagger.DisablingWrapHandler(swaggerFiles.Handler, "SWAGGER")(c) + }) r.Use(mw.ChangeHeader) // 是否打印访问日志, 在非正式环境都打印 @@ -37,8 +44,39 @@ func Init() *gin.Engine { c.JSON(405, gin.H{"code": 405, "msg": "method not allowed", "data": []struct{}{}}) }) r.Use(mw.Cors) + routeCommunityTeamAgent(r.Group("/api/v1/communityTeam/agent")) + routeCommunityTeamOwnStore(r.Group("/api/v1/communityTeam/ownStore")) routeCommunityTeam(r.Group("/api/v1/communityTeam")) return r +} +func routeCommunityTeamAgent(r *gin.RouterGroup) { + r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 + r.POST("/login", agentHdl.Login) + r.Use(mw.AuthJWT) + r.GET("/user", agentHdl.User) + r.POST("/service/file/upload", agentHdl.ServiceFileUpload) + r.GET("/wechat/base", agentHdl.WechatBase) + r.POST("/wechat/base/set", agentHdl.WechatBaseSet) + r.GET("/alipay/base", agentHdl.AlipayBase) + r.POST("/alipay/base/set", agentHdl.AlipayBaseSet) + r.POST("/store/list", agentHdl.UserStoreList) + r.POST("/store/save", agentHdl.UserStoreSave) + r.POST("/store/order", agentHdl.UserStoreOrder) + r.POST("/store/order/detail", agentHdl.UserStoreOrderDetail) + r.POST("/store/total", agentHdl.UserStoreTotal) + + r.POST("/goods/list", agentHdl.Goods) + r.POST("/goods/save", agentHdl.GoodsSave) + r.POST("/goods/detail", agentHdl.GoodsDetail) + r.POST("/goods/del", agentHdl.GoodsDel) + r.POST("/goods/cate/list", agentHdl.GoodsCate) + r.POST("/goods/cate/save", agentHdl.GoodsCateSave) + r.POST("/goods/cate/show", agentHdl.GoodsCateShow) + r.POST("/goods/cate/del", agentHdl.GoodsCateDel) + +} +func routeCommunityTeamOwnStore(r *gin.RouterGroup) { + } func routeCommunityTeam(r *gin.RouterGroup) { r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 @@ -48,6 +86,8 @@ func routeCommunityTeam(r *gin.RouterGroup) { r.POST("/city", hdl.City) r.GET("/bank/store/cate", hdl.BankStoreCate) r.POST("/bank/store/list", hdl.BankStore) + r.GET("/new/store/cate", hdl.NewStoreCate) + r.POST("/new/store/list", hdl.NewStore) r.POST("/store", hdl.Store) r.POST("/store/like/list", hdl.StoreLike) r.GET("/goods/cate", hdl.Cate) diff --git a/app/svc/svc_alipay.go b/app/svc/svc_alipay.go index b2b384f..62635d2 100644 --- a/app/svc/svc_alipay.go +++ b/app/svc/svc_alipay.go @@ -8,9 +8,11 @@ import ( "applet/app/utils" "applet/app/utils/logx" "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/pay" + "errors" "fmt" "github.com/gin-gonic/gin" "github.com/iGoogle-ink/gopay/alipay" + "github.com/tidwall/gjson" ) // 支付宝回调处理 @@ -67,10 +69,29 @@ func CommAlipayConfig(c *gin.Context, p *md.AliPayPayParams) (map[string]string, "rsa": SysCfgGet(c, "pay_ali_key_len_type"), "pkcs": SysCfgGet(c, "pay_ali_key_format_type"), } + payAliNewPrivateKey := SysCfgGet(c, "pay_ali_new_private_key") + payAliNewAppId := SysCfgGet(c, "pay_ali_new_app_id") + payAppCertSn := SysCfgGet(c, "pay_app_cert_sn") + payAlipayrsaPublicKey := SysCfgGet(c, "pay_alipayrsa_public_key") + if p.AgentId > 0 { + user, _ := db.UserThirdPartyFindByID(MasterDb(c), p.AgentId) + if user.AlipayPayInfo == "" { + return nil, errors.New("支付失败") + } + req["pay_ali_use_type"] = gjson.Get(user.AlipayPayInfo, "pay_ali_use_type").String() + req["private_key"] = gjson.Get(user.AlipayPayInfo, "pay_ali_private_key").String() + req["app_id"] = gjson.Get(user.AlipayPayInfo, "pay_ali_app_id").String() + req["rsa"] = gjson.Get(user.AlipayPayInfo, "pay_ali_key_len_type").String() + req["pkcs"] = gjson.Get(user.AlipayPayInfo, "pay_ali_key_format_type").String() + payAliNewPrivateKey = gjson.Get(user.AlipayPayInfo, "pay_ali_new_private_key").String() + payAliNewAppId = gjson.Get(user.AlipayPayInfo, "pay_ali_new_app_id").String() + payAppCertSn = gjson.Get(user.AlipayPayInfo, "pay_app_cert_sn").String() + payAlipayrsaPublicKey = gjson.Get(user.AlipayPayInfo, "pay_alipayrsa_public_key").String() + } if req["pay_ali_use_type"] == "1" { - req["private_key"] = SysCfgGet(c, "pay_ali_new_private_key") - req["app_id"] = SysCfgGet(c, "pay_ali_new_app_id") - appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + SysCfgGet(c, "pay_app_cert_sn")) + req["private_key"] = payAliNewPrivateKey + req["app_id"] = payAliNewAppId + appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + payAppCertSn) if err != nil { fmt.Println(err) return nil, err @@ -80,7 +101,7 @@ func CommAlipayConfig(c *gin.Context, p *md.AliPayPayParams) (map[string]string, return nil, err } req["pay_app_cert_sn"] = appCertSN - aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + SysCfgGet(c, "pay_alipayrsa_public_key")) + aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + payAlipayrsaPublicKey) if err != nil { fmt.Println(err) return nil, err diff --git a/app/svc/svc_default_user.go b/app/svc/svc_default_user.go index 63bdaaa..82e7a4f 100644 --- a/app/svc/svc_default_user.go +++ b/app/svc/svc_default_user.go @@ -2,8 +2,14 @@ package svc import ( "applet/app/db" + "applet/app/db/model" + "applet/app/e" "applet/app/md" + "applet/app/utils" + "applet/app/utils/cache" + "applet/app/utils/logx" "errors" + "fmt" "github.com/gin-gonic/gin" "strings" ) @@ -48,3 +54,66 @@ DEFALUT: user.Level = ul return user, nil } + +func FastLoginUserExist(c *gin.Context, r *md.LoginResponse, requestBody *md.FastLoginRequestBody) error { + // 每次登录都会刷新token + var user = &model.User{} + var err error + if requestBody.Mobile != "" { + user, err = db.UserFindByMobileAll(db.DBs[c.GetString("mid")], requestBody.Mobile) + } + if user == nil || user.Uid == 0 { + return e.NewErr(400, "用户不存在") + } + if err != nil { + return err + } + if user.DeleteAt == 1 { + return e.NewErr(403053, "账号被删除,如有疑问请联系客服") + } + //判断用户是否虚拟账号 虚拟账号不能用手机号登陆 + if user.IsFake == 1 { + return e.NewErr(400000, "该手机号无法登陆,请联系客服!") + } + //0未激活,1正常,2冻结 + switch user.State { + case 0: + return e.NewErr(403028, "no active") + case 2: + return e.NewErr(403029, "您的账号已被冻结") + } + // 生成jwt + appName := db.SysCfgGet(c, "app_name") + profile, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], user.Uid) + if err != nil || profile == nil { + _ = logx.Warn(err) + return e.NewErr(400000, "数据不完整") + } + token := CheckUserToken(c, user.Uid, user.Username, user.Phone, appName) + r.Token = token + r.UserID = utils.IntToStr(user.Uid) + r.UserName = requestBody.Mobile + r.Phone = requestBody.Mobile + // 更新 + profile.ArkidToken = token + _, err = db.UserProfileUpdate(db.DBs[c.GetString("mid")], user.Uid, profile) + if err != nil { + return logx.Warn(err) + } + // 写入缓存 + key := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) + _, err = cache.SetEx(key, token, 39528000) // 半年 + if err != nil { + return logx.Warn(err) + } + return nil +} +func CheckUserToken(c *gin.Context, uid int, username, phone, appName string) string { + profile, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], uid) + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err) + return "" + } + token := profile.ArkidToken + return token +} diff --git a/app/svc/svc_goods.go b/app/svc/svc_goods.go index adf5923..dcebbde 100644 --- a/app/svc/svc_goods.go +++ b/app/svc/svc_goods.go @@ -16,7 +16,10 @@ func Goods(c *gin.Context) { } goods := db.GetGoods(MasterDb(c), arg) goodsList := make([]map[string]interface{}, 0) + if goods != nil { + scheme, host := ImageBucket(c) + for _, v := range *goods { speImageList := make([]string, 0) if v.IsSpeImageOn == 1 { @@ -25,7 +28,7 @@ func Goods(c *gin.Context) { tmp := map[string]interface{}{ "id": utils.IntToStr(v.Id), "title": v.Title, - "img": v.Img, + "img": ImageFormatWithBucket(scheme, host, v.Img), "info": v.Info, "price": v.Price, "stock": utils.IntToStr(v.Stock), diff --git a/app/svc/svc_order.go b/app/svc/svc_order.go index 3795ff4..b3c4fe0 100644 --- a/app/svc/svc_order.go +++ b/app/svc/svc_order.go @@ -39,6 +39,8 @@ func OrderList(c *gin.Context) { data := db.GetOrderList(MasterDb(c), arg) var state = []string{"待付款", "待提货", "已完成", "已取消"} list := make([]map[string]interface{}, 0) + scheme, host := ImageBucket(c) + if data != nil { now := time.Now().Unix() for _, v := range *data { @@ -48,7 +50,7 @@ func OrderList(c *gin.Context) { if info != nil { for _, v1 := range *info { tmp := map[string]string{ - "img": v1.Img, + "img": ImageFormatWithBucket(scheme, host, v1.Img), "title": v1.Title, "sku_str": "", } @@ -165,9 +167,11 @@ func OrderDetail(c *gin.Context) { goodsInfo := make([]map[string]string, 0) info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) if info != nil { + scheme, host := ImageBucket(c) + for _, v := range *info { tmp := map[string]string{ - "img": v.Img, + "img": ImageFormatWithBucket(scheme, host, v.Img), "title": v.Title, "price": v.Price, "num": utils.IntToStr(v.Num), @@ -497,6 +501,11 @@ func OrderCreate(c *gin.Context) { Amount: totalPrice, MealNum: utils.StrToInt(arg.MealNum), } + if store.ParentUid > 0 { //代理下门店 + order.StoreType = 2 + order.ParentUid = store.ParentUid + order.AgentCommission = utils.Float64ToStr(utils.FloatFormat(utils.AnyToFloat64(totalPrice)*(utils.AnyToFloat64(store.AgentCommission)/100), 2)) + } if utils.StrToFloat64(coupon) > 0 { order.CouponId = utils.StrToInt(arg.CouponId) } diff --git a/app/svc/svc_pay_community_team.go b/app/svc/svc_pay_community_team.go index e88b408..50f4425 100644 --- a/app/svc/svc_pay_community_team.go +++ b/app/svc/svc_pay_community_team.go @@ -6,9 +6,11 @@ import ( "applet/app/e" "applet/app/md" "applet/app/utils" + "errors" "fmt" "github.com/gin-gonic/gin" "github.com/shopspring/decimal" + "github.com/tidwall/gjson" "math" "math/rand" "time" @@ -39,6 +41,7 @@ func AlipayCommunityTeam(c *gin.Context) (interface{}, error) { OrdId: utils.AnyToString(ord.Oid), OrderType: md.CommunityTeam, Uid: utils.IntToStr(ord.Uid), + AgentId: ord.ParentUid, } r, err := PrepareAlipayCode(c, payParams) if err != nil { @@ -62,6 +65,14 @@ func WxPayCommunityTeam(c *gin.Context) (interface{}, error) { "pay_wx_api_key": SysCfgGet(c, "pay_wx_api_key"), "uid": utils.IntToStr(ord.Uid), } + if ord.ParentUid > 0 { + user, _ := db.UserThirdPartyFindByID(MasterDb(c), ord.ParentUid) + if user.WechatPayInfo == "" { + return nil, errors.New("支付失败") + } + params["pay_wx_mch_id"] = gjson.Get(user.WechatPayInfo, "pay_wx_mch_id").String() + params["pay_wx_api_key"] = gjson.Get(user.WechatPayInfo, "pay_wx_api_key").String() + } params["notify_url"] = fmt.Sprintf(md.CALLBACK_URL, c.Request.Host, c.GetString("mid"), params["order_type"], md.WX_PAY) r, err = CommPayData(c, params) if err != nil { diff --git a/app/svc/svc_store.go b/app/svc/svc_store.go index 0b12a51..66490d0 100644 --- a/app/svc/svc_store.go +++ b/app/svc/svc_store.go @@ -60,6 +60,57 @@ func BankStore(c *gin.Context) { e.OutSuc(c, storeList, nil) return } +func NewStore(c *gin.Context) { + var arg map[string]string + if err := c.ShouldBindJSON(&arg); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + arg["store_type"] = "3" + user, _ := GetDefaultUser(c, c.GetHeader("Authorization")) + var store = make([]map[string]string, 0) + if arg["cid"] == "2" { + store = db.GetStoreLike(MasterDb(c), arg) + } else { + store = db.GetStore(MasterDb(c), arg) + } + storeList := make([]map[string]interface{}, 0) + for _, v := range store { + km := v["km"] + if utils.StrToFloat64(v["km"]) < 1 { + v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m" + } else { + v["km"] = GetCommissionPrec(c, v["km"], "2", "1") + v["km"] += "km" + } + if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 { + v["km"] = "-" + } + tmp := map[string]interface{}{ + "lat": v["lat"], + "lng": v["lng"], + "address": v["address"], + "name": v["name"], + "id": v["id"], + "km": v["km"], + "time_str": v["timer"], + "uid": v["uid"], + "phone": v["phone"], + "logo": v["logo"], + "is_like": "0", + "fan": "", + } + if user != nil { + count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{}) + if count > 0 { + tmp["is_like"] = "1" + } + } + storeList = append(storeList, tmp) + } + e.OutSuc(c, storeList, nil) + return +} func StoreLike(c *gin.Context) { var arg map[string]string if err := c.ShouldBindJSON(&arg); err != nil { diff --git a/app/svc/svc_store_order.go b/app/svc/svc_store_order.go index 09e2046..6ca49e3 100644 --- a/app/svc/svc_store_order.go +++ b/app/svc/svc_store_order.go @@ -35,6 +35,8 @@ func StoreOrderList(c *gin.Context) { var state = []string{"待付款", "待提货", "已完成", "已取消"} list := make([]map[string]interface{}, 0) if data != nil { + scheme, host := ImageBucket(c) + now := time.Now().Unix() for _, v := range *data { store := db.GetStoreIdEg(MasterDb(c), utils.IntToStr(v.StoreUid)) @@ -71,7 +73,7 @@ func StoreOrderList(c *gin.Context) { tmp := map[string]string{ "title": v1.Title + skuStr, "num": utils.IntToStr(v1.Num), - "img": v1.Img, + "img": ImageFormatWithBucket(scheme, host, v1.Img), } goodsInfo = append(goodsInfo, tmp) } @@ -174,9 +176,11 @@ func StoreOrderDetail(c *gin.Context) { goodsInfo := make([]map[string]string, 0) info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) if info != nil { + scheme, host := ImageBucket(c) + for _, v := range *info { tmp := map[string]string{ - "img": v.Img, + "img": ImageFormatWithBucket(scheme, host, v.Img), "title": v.Title, "price": v.Price, "num": utils.IntToStr(v.Num), diff --git a/docs/docs.go b/docs/docs.go index 3e7d945..54fd99e 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,22 +1,14 @@ -// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT -// This file was generated by swaggo/swag +// Code generated by swaggo/swag. DO NOT EDIT. package docs -import ( - "bytes" - "encoding/json" - "strings" +import "github.com/swaggo/swag" - "github.com/alecthomas/template" - "github.com/swaggo/swag" -) - -var doc = `{ +const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { - "description": "{{.Description}}", + "description": "{{escape .Description}}", "title": "{{.Title}}", "termsOfService": "智莺生活后端组", "contact": { @@ -27,282 +19,9 @@ var doc = `{ "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { - "/api/v1/acq/fix": { - "get": { - "description": "拉新活动--fix", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--fix", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/home": { - "post": { - "description": "本期榜单/上期榜单/我的邀请人数和奖励/任务列表", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新--首页数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/qrcode": { - "get": { - "description": "二维码", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新--邀请二维码", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/reward/detail": { - "post": { - "description": "拉新活动--我的奖励明细", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--我的奖励明细", - "parameters": [ - { - "description": "1为以发放,2为待发放,3为失效", - "name": "state", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/reward_receive": { - "post": { - "description": "拉新活动--领取奖励", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--领取奖励", - "parameters": [ - { - "description": "任务ID", - "name": "job_id", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/credit/card/config": { - "get": { - "description": "获取信用卡配置", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "信用卡" - ], - "summary": "获取信用卡配置", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/detail": { - "post": { - "description": "多麦商城--商城详情", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--商城详情", - "parameters": [ - { - "description": "商城id", - "name": "brand_id", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/home": { - "get": { - "description": "多麦商城--首页数据", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--首页数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/search": { - "post": { - "description": "多麦商城--搜索", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--搜索", - "parameters": [ - { - "description": "搜索关键词", - "name": "key", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/update": { - "get": { - "description": "多麦商城--更新数据", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--更新数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/logistic/query": { + "/api/v1/communityTeam/agent/login": { "post": { + "description": "登入", "consumes": [ "application/json" ], @@ -310,1343 +29,169 @@ var doc = `{ "application/json" ], "tags": [ - "物流" + "登陆" ], - "summary": "快递100物流查询", + "summary": "登陆", "parameters": [ { - "description": "logisticQueryReq", + "description": "请求参数", "name": "req", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/hdl.logisticQueryReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"该快递公司不支持查询\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.detail.page": { - "get": { - "description": "多麦商城详情页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城详情页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.home.page": { - "get": { - "description": "多麦商城首页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城首页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" + "$ref": "#/definitions/md.FastLoginRequestBody" } } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.search.page": { - "get": { - "description": "多麦商城搜索页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城搜索页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/card/activation": { - "post": { - "description": "权益卡激活", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡激活", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardCheckReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/check": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡卡号卡密检测", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardCheckReq" - } - } - ], - "responses": { - "200": { - "description": "0:不存在 1:已经被使用 2:可用", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/order_query": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡订单查询页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/hdl.PrivilegeOpenCardOrdQueryPageResp" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"验证码错误\"}", - "schema": { - "type": "string" - } - } - } - }, - "post": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡订单查询", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.PrivilegeOpenCardOrdQueryReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.PrivilegeOpenCardOrd" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"验证码错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/order_suc": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "订单支付成功页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.PrivilegeOpenCardOrd" - } - } - } - } - }, - "/api/v1/privilege/open_card/pay_page": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡支付页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardPayPageResp" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"权益卡配置缺失\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/shake_ticket/:goods_id/:type": { - "get": { - "description": "收藏/领券买/分享赚", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "抖券" - ], - "summary": "抖券商品收藏/领券买/分享赚", - "parameters": [ - { - "type": "string", - "description": "商品id", - "name": "goods_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "类型(0取消收藏,1收藏,2点击 领券买,3点击分享赚)", - "name": "type", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/shake_ticket_list": { - "get": { - "description": "定向计划/高佣专场/精选低价包邮/偏远地区包邮/抖货商品/各大榜单商品/今日值得买", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "抖券" - ], - "summary": "抖券商品推荐列表", - "parameters": [ - { - "type": "string", - "description": "页码", - "name": "page", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "页数", - "name": "page_size", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "分类id(3定向计划/4高佣专场/5精选低价包邮/6偏远地区包邮/7抖货商品/8各大榜单商品/9今日值得买)", - "name": "category_id", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "渠道", - "name": "pvd", - "in": "query", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/md.IndexRecommendList" - } - } - } - } - }, - "/api/v1/sign/fast/in": { - "post": { - "produces": [ - "application/json" - ], - "tags": [ - "登录、注册" - ], - "summary": "用户手机快速登录", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/md.FastLoginRequestBody" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/md.LoginResponse" - } - }, - "400": { - "description": "{\"code\":400001,\"data\":[],\"msg\":\"请求参数错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/sub_region_list": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "获取区域id下的区域", - "parameters": [ - { - "type": "string", - "description": "上级地区类型:root(查询省级列表)、province(省级ID下的城市)、city(市级id下的区域)", - "name": "parent", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "上级地区id", - "name": "id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/hdl.resultItem" - } - } - }, - "400": { - "description": "{\"code\":400001,\"data\":[],\"msg\":\"请求参数错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/:id": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址详情", - "parameters": [ - { - "type": "string", - "description": "地址id", - "name": "id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.UserAddress" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/delete/:id": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址删除", - "parameters": [ - { - "type": "string", - "description": "ID", - "name": "id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/update": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址新增、编辑", - "parameters": [ - { - "description": "json参数,Id不传为新增", - "name": "\"\"", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.updateAddressReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/addresses": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址列表", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/model.UserAddress" - } - } - }, - "500": { - "description": "{\"code\":500000,\"data\":[],\"msg\":\"数据库操作失败\"}", - "schema": { - "type": "string" - } - } - } - } - } - }, - "definitions": { - "hdl.PrivilegeOpenCardOrdQueryPageResp": { - "type": "object", - "properties": { - "btn_bg_color_1": { - "type": "string" - }, - "btn_bg_color_2": { - "type": "string" - }, - "btn_text": { - "type": "string" - }, - "btn_text_color": { - "type": "string" - }, - "header_img": { - "type": "string" - }, - "logistic_company": { - "type": "array", - "items": { - "$ref": "#/definitions/model.LogisticCompany" - } - } - } - }, - "hdl.PrivilegeOpenCardOrdQueryReq": { - "type": "object", - "required": [ - "com", - "num" - ], - "properties": { - "com": { - "description": "快递公司名称", - "type": "string" - }, - "num": { - "description": "快递单号", - "type": "string" - } - } - }, - "hdl.logisticQueryReq": { - "type": "object", - "required": [ - "com", - "num" - ], - "properties": { - "com": { - "description": "快递公司名称", - "type": "string" - }, - "num": { - "description": "快递单号", - "type": "string" - } - } - }, - "hdl.privilegeOpenCardCheckReq": { - "type": "object", - "required": [ - "key", - "num" - ], - "properties": { - "key": { - "description": "卡密", - "type": "string" - }, - "num": { - "description": "卡号", - "type": "string" - } - } - }, - "hdl.privilegeOpenCardPayPageResp": { - "type": "object", - "properties": { - "amount": { - "description": "付费金额", - "type": "string" - }, - "card_type": { - "description": "卡的类型:\"1\"实体卡 \"2\"虚拟卡", - "type": "string" - }, - "date_type": { - "description": "日期类型:month:月 season:季 year:年 forever:永久", - "type": "string" - }, - "page_style": { - "description": "页面样式", - "$ref": "#/definitions/hdl.privilegeOpenCardPayStyle" - } - } - }, - "hdl.privilegeOpenCardPayStyle": { - "type": "object", - "properties": { - "exclusive_privilege": { - "description": "专属特权", - "type": "array", - "items": { - "type": "object", - "properties": { - "brand_id": { - "type": "string" - }, - "brand_img": { - "type": "string" - }, - "brand_img_url": { - "type": "string" - }, - "brand_name": { - "type": "string" - }, - "is_show": { - "type": "string" - }, - "sub_title": { - "type": "string" - } - } - } - }, - "payment_btn": { - "description": "底部支付按钮", - "type": "array", - "items": { - "type": "object", - "properties": { - "bg_img": { - "type": "string" - }, - "bg_img_url": { - "type": "string" - }, - "func": { - "type": "string" - }, - "name": { - "type": "string" - }, - "text": { - "type": "string" - }, - "text_color": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "payment_choose_icon": { - "description": "支付方式选中、未选中图标", - "type": "array", - "items": { - "type": "object", - "properties": { - "icon": { - "type": "string" - }, - "icon_url": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "payment_style": { - "description": "支付方式", - "type": "array", - "items": { - "type": "object", - "properties": { - "icon": { - "type": "string" - }, - "icon_url": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "style": { - "description": "头部样式", - "type": "object", - "properties": { - "header_bg_img": { - "type": "string" - }, - "header_bg_img_url": { - "type": "string" - }, - "special_deals_img": { - "type": "string" - }, - "special_deals_img_url": { - "type": "string" - }, - "special_deals_text": { - "type": "string" - } - } - } - } - }, - "hdl.resultItem": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "440100000000" - }, - "name": { - "type": "string", - "example": "city" - } - } - }, - "hdl.updateAddressReq": { - "type": "object", - "required": [ - "city_id", - "county_id", - "detail", - "phone", - "province_id", - "receiver" - ], - "properties": { - "city_id": { - "type": "string" - }, - "county_id": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "phone": { - "type": "string" - }, - "post_code": { - "type": "string" - }, - "province_id": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "md.Apple": { - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "md.FastLoginRequestBody": { - "type": "object", - "properties": { - "apple": { - "$ref": "#/definitions/md.Apple" - }, - "captcha": { - "type": "string" - }, - "is_not_create": { - "type": "string" - }, - "mobile": { - "type": "string" - }, - "parent_uid": { - "type": "string" - }, - "qq": { - "$ref": "#/definitions/md.QQLogin" - }, - "return_user_msg": { - "type": "string" - }, - "taobao": { - "$ref": "#/definitions/md.TaobaoLogin" - }, - "wechat": { - "$ref": "#/definitions/md.WeChat" - }, - "wechat_mini": { - "$ref": "#/definitions/md.WeChatMiniApp" - }, - "zone": { - "type": "string" - } - } - }, - "md.IndexRecommendList": { - "type": "object", - "properties": { - "good": { - "type": "array", - "items": { - "$ref": "#/definitions/md.RecommendGood" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/md.LoginResponse" + } + }, + "400": { + "description": "具体错误", + "schema": { + "$ref": "#/definitions/md.Response" + } } - }, - "provider": { - "description": "BarTitleList []BarTitle ` + "`" + `json:\"bar_title_list\"` + "`" + `", - "type": "string" } } - }, - "md.LoginResponse": { + } + }, + "definitions": { + "md.FastLoginRequestBody": { "type": "object", "properties": { - "bind_phone_enable": { - "type": "string" - }, - "is_pid": { + "captcha": { "type": "string" }, - "perms": { - "type": "array", - "items": { - "type": "string" - } - }, - "phone": { + "card_key": { + "description": "权益卡卡密", "type": "string" }, - "register_invite_code_enable": { + "card_num": { + "description": "权益卡卡号", "type": "string" }, - "register_popup_condition": { - "description": "弹出类型设置", - "$ref": "#/definitions/md.RegisterPopupCondition" - }, - "token": { + "invited_code": { + "description": "邀请码", "type": "string" }, - "user_id": { + "is_not_create": { "type": "string" }, - "username": { + "mobile": { "type": "string" }, - "wechat_applet_open_id": { + "parent_uid": { + "description": "上级ID", "type": "string" }, - "wechat_union_id": { - "type": "string" - } - } - }, - "md.Marquee": { - "type": "object", - "properties": { - "avatar_url": { + "password": { "type": "string" }, - "content": { + "pic_code": { "type": "string" }, - "name": { - "type": "string" - } - } - }, - "md.ProductDetailResponse": { - "type": "object", - "properties": { - "commission": { + "pic_code_id": { "type": "string" }, - "coupon_price": { + "return_user_msg": { "type": "string" }, - "good_id": { + "task_id": { "type": "string" }, - "mod_list": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "provider": { + "task_type": { "type": "string" }, - "provider_name": { + "type": { "type": "string" }, - "shop_avatar": { + "zone": { "type": "string" } } }, - "md.QQLogin": { + "md.LoginResponse": { "type": "object", "properties": { - "access_token": { - "type": "string" - }, - "avatar_url": { + "alipay_user_id": { "type": "string" }, - "city": { - "type": "string" - }, - "expires_in": { - "type": "string" - }, - "gender": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "open_id": { - "type": "string" - }, - "pay_token": { - "type": "string" - }, - "pf": { - "type": "string" - }, - "pf_key": { - "type": "string" - }, - "province": { - "type": "string" - }, - "ret": { - "type": "string" - }, - "unionid": { - "type": "string" - } - } - }, - "md.RecommendGood": { - "type": "object", - "properties": { - "commission": { + "avatar": { "type": "string" }, - "coupon": { + "bind_phone_enable": { "type": "string" }, - "current_price": { + "check_bind_phone": { "type": "string" }, - "detail_data": { - "$ref": "#/definitions/md.ProductDetailResponse" - }, - "good_id": { + "invite_code": { "type": "string" }, - "good_image": { + "is_need_check_nickname": { "type": "string" }, - "good_title": { + "is_pid": { "type": "string" }, - "inorder_count": { + "jd_applet_open_id": { "type": "string" }, - "is_collect": { - "type": "integer" - }, - "is_coupons": { - "type": "integer" - }, - "is_share": { - "type": "integer" - }, - "market_price": { + "password": { "type": "string" }, - "marquee_list": { + "perms": { "type": "array", "items": { - "$ref": "#/definitions/md.Marquee" - } - }, - "provider": { - "type": "string" - }, - "provider_name": { - "type": "string" - }, - "pvd": { - "type": "string" - }, - "shop_avatar": { - "type": "string" - }, - "shop_name": { - "type": "string" - }, - "video": { - "type": "string" - } - } - }, - "md.RegisterPopupCondition": { - "type": "object", - "properties": { - "invite_code": { - "description": "邀请码设置:弹出类型是激活码的时候起作用", - "type": "object", - "properties": { - "popup": { - "description": "是否弹出 “0”否 “1”是", - "type": "string" - }, - "should_input": { - "description": "是否必填 “0”否 “1”是", - "type": "string" - } + "type": "string" } }, - "popup_type": { - "description": "弹出类型:“0”关闭 ”1”激活码 “2”邀请码", - "type": "string" - }, - "should_input": { - "description": "是否必填 “0”否 “1”是", - "type": "string" - } - } - }, - "md.TaobaoLogin": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "auth_code": { - "type": "string" - }, - "avatar_url": { - "type": "string" - }, - "nick_name": { - "type": "string" - }, - "open_id": { - "type": "string" - }, - "sid": { - "type": "string" - } - } - }, - "md.WeChat": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "avatar_url": { - "type": "string" - }, - "city": { - "type": "string" - }, - "expires_in": { - "type": "string" - }, - "gender": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "open_id": { - "type": "string" - }, - "pay_token": { - "type": "string" - }, - "pf": { - "type": "string" - }, - "pf_key": { + "phone": { "type": "string" }, - "province": { + "register_invite_code_enable": { + "description": "邀请码跳转是否开启", "type": "string" }, - "ret": { + "register_invite_code_should_input": { + "description": "邀请码是否必填", "type": "string" }, - "unionid": { - "type": "string" - } - } - }, - "md.WeChatMiniApp": { - "type": "object", - "properties": { - "avatar": { + "token": { "type": "string" }, - "code": { + "user_id": { "type": "string" }, - "nickname": { + "username": { "type": "string" }, - "open_id": { + "wechat_applet_open_id": { "type": "string" }, - "unionid": { + "wechat_union_id": { "type": "string" } } }, - "model.LogisticCompany": { + "md.Response": { "type": "object", "properties": { "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "model.PrivilegeOpenCardOrd": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "after_sale_id": { - "type": "integer" - }, - "card_key": { - "type": "string" - }, - "card_num": { - "type": "string" - }, - "card_type": { - "type": "integer" - }, - "cost_price": { - "type": "string" - }, - "create_time": { - "type": "string" - }, - "date_type": { - "type": "integer" - }, - "given_data": { - "type": "string" - }, - "logistic_company": { - "type": "string" - }, - "logistic_num": { - "type": "string" - }, - "ord_id": { - "type": "integer" - }, - "pay_channel": { - "type": "integer" - }, - "pay_time": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "settle_at": { - "type": "integer" - }, - "state": { - "type": "integer" - }, - "uid": { - "type": "integer" - }, - "update_time": { - "type": "string" - } - } - }, - "model.UserAddress": { - "type": "object", - "properties": { - "city_id": { - "type": "string" - }, - "city_name": { - "type": "string" - }, - "county_id": { - "type": "string" - }, - "county_name": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "phone": { - "type": "string" - }, - "post_code": { - "type": "string" - }, - "province_id": { - "type": "string" - }, - "province_name": { - "type": "string" - }, - "receiver": { - "type": "string" + "type": "string", + "example": "响应码" }, - "tag": { - "type": "string" + "data": { + "description": "内容" }, - "uid": { - "type": "integer" + "msg": { + "type": "string", + "example": "具体错误原因" } } } @@ -1660,49 +205,18 @@ var doc = `{ } }` -type swaggerInfo struct { - Version string - Host string - BasePath string - Schemes []string - Title string - Description string -} - // SwaggerInfo holds exported Swagger Info so clients can modify it -var SwaggerInfo = swaggerInfo{ - Version: "1.0", - Host: "localhost:5000", - BasePath: "/", - Schemes: []string{}, - Title: "智莺生活移动端接口", - Description: "移动端接口", -} - -type s struct{} - -func (s *s) ReadDoc() string { - sInfo := SwaggerInfo - sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1) - - t, err := template.New("swagger_info").Funcs(template.FuncMap{ - "marshal": func(v interface{}) string { - a, _ := json.Marshal(v) - return string(a) - }, - }).Parse(doc) - if err != nil { - return doc - } - - var tpl bytes.Buffer - if err := t.Execute(&tpl, sInfo); err != nil { - return doc - } - - return tpl.String() +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "localhost:5000", + BasePath: "", + Schemes: []string{}, + Title: "智莺生活移动端接口", + Description: "移动端接口", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, } func init() { - swag.Register(swag.Name, &s{}) + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) } diff --git a/docs/swagger.json b/docs/swagger.json index 527c14e..92542f3 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -10,804 +10,10 @@ "version": "1.0" }, "host": "localhost:5000", - "basePath": "/", "paths": { - "/api/v1/acq/fix": { - "get": { - "description": "拉新活动--fix", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--fix", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/home": { - "post": { - "description": "本期榜单/上期榜单/我的邀请人数和奖励/任务列表", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新--首页数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/qrcode": { - "get": { - "description": "二维码", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新--邀请二维码", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/reward/detail": { - "post": { - "description": "拉新活动--我的奖励明细", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--我的奖励明细", - "parameters": [ - { - "description": "1为以发放,2为待发放,3为失效", - "name": "state", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/acquisition/reward_receive": { - "post": { - "description": "拉新活动--领取奖励", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "拉新活动" - ], - "summary": "拉新活动--领取奖励", - "parameters": [ - { - "description": "任务ID", - "name": "job_id", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/credit/card/config": { - "get": { - "description": "获取信用卡配置", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "信用卡" - ], - "summary": "获取信用卡配置", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/detail": { - "post": { - "description": "多麦商城--商城详情", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--商城详情", - "parameters": [ - { - "description": "商城id", - "name": "brand_id", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/home": { - "get": { - "description": "多麦商城--首页数据", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--首页数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/search": { - "post": { - "description": "多麦商城--搜索", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--搜索", - "parameters": [ - { - "description": "搜索关键词", - "name": "key", - "in": "body", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/duomai/mall/update": { - "get": { - "description": "多麦商城--更新数据", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城--更新数据", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/logistic/query": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "物流" - ], - "summary": "快递100物流查询", - "parameters": [ - { - "description": "logisticQueryReq", - "name": "req", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.logisticQueryReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"该快递公司不支持查询\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.detail.page": { - "get": { - "description": "多麦商城详情页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城详情页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.home.page": { - "get": { - "description": "多麦商城首页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城首页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/mod/pub.flutter.duomai.mall.search.page": { - "get": { - "description": "多麦商城搜索页样式", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "多麦商城" - ], - "summary": "多麦商城搜索页样式", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/card/activation": { - "post": { - "description": "权益卡激活", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡激活", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardCheckReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/check": { - "get": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡卡号卡密检测", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardCheckReq" - } - } - ], - "responses": { - "200": { - "description": "0:不存在 1:已经被使用 2:可用", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/order_query": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡订单查询页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/hdl.PrivilegeOpenCardOrdQueryPageResp" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"验证码错误\"}", - "schema": { - "type": "string" - } - } - } - }, - "post": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡订单查询", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.PrivilegeOpenCardOrdQueryReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.PrivilegeOpenCardOrd" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"验证码错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/privilege/open_card/order_suc": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "订单支付成功页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.PrivilegeOpenCardOrd" - } - } - } - } - }, - "/api/v1/privilege/open_card/pay_page": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "权益卡" - ], - "summary": "权益卡开卡支付页面", - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/hdl.privilegeOpenCardPayPageResp" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"权益卡配置缺失\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/shake_ticket/:goods_id/:type": { - "get": { - "description": "收藏/领券买/分享赚", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "抖券" - ], - "summary": "抖券商品收藏/领券买/分享赚", - "parameters": [ - { - "type": "string", - "description": "商品id", - "name": "goods_id", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "类型(0取消收藏,1收藏,2点击 领券买,3点击分享赚)", - "name": "type", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/shake_ticket_list": { - "get": { - "description": "定向计划/高佣专场/精选低价包邮/偏远地区包邮/抖货商品/各大榜单商品/今日值得买", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "抖券" - ], - "summary": "抖券商品推荐列表", - "parameters": [ - { - "type": "string", - "description": "页码", - "name": "page", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "页数", - "name": "page_size", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "分类id(3定向计划/4高佣专场/5精选低价包邮/6偏远地区包邮/7抖货商品/8各大榜单商品/9今日值得买)", - "name": "category_id", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "渠道", - "name": "pvd", - "in": "query", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/md.IndexRecommendList" - } - } - } - } - }, - "/api/v1/sign/fast/in": { - "post": { - "produces": [ - "application/json" - ], - "tags": [ - "登录、注册" - ], - "summary": "用户手机快速登录", - "parameters": [ - { - "description": "json", - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/md.FastLoginRequestBody" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/md.LoginResponse" - } - }, - "400": { - "description": "{\"code\":400001,\"data\":[],\"msg\":\"请求参数错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/sub_region_list": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "获取区域id下的区域", - "parameters": [ - { - "type": "string", - "description": "上级地区类型:root(查询省级列表)、province(省级ID下的城市)、city(市级id下的区域)", - "name": "parent", - "in": "query", - "required": true - }, - { - "type": "string", - "description": "上级地区id", - "name": "id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/hdl.resultItem" - } - } - }, - "400": { - "description": "{\"code\":400001,\"data\":[],\"msg\":\"请求参数错误\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/:id": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址详情", - "parameters": [ - { - "type": "string", - "description": "地址id", - "name": "id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "$ref": "#/definitions/model.UserAddress" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/delete/:id": { - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址删除", - "parameters": [ - { - "type": "string", - "description": "ID", - "name": "id", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/address/update": { + "/api/v1/communityTeam/agent/login": { "post": { + "description": "登入", "consumes": [ "application/json" ], @@ -815,823 +21,169 @@ "application/json" ], "tags": [ - "地址" + "登陆" ], - "summary": "用户地址新增、编辑", + "summary": "登陆", "parameters": [ - { - "description": "json参数,Id不传为新增", - "name": "\"\"", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/hdl.updateAddressReq" - } - } - ], - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "string" - } - }, - "400": { - "description": "{\"code\":400000,\"data\":[],\"msg\":\"地址不存在\"}", - "schema": { - "type": "string" - } - } - } - } - }, - "/api/v1/user/addresses": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "地址" - ], - "summary": "用户地址列表", - "responses": { - "200": { - "description": "ok", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/model.UserAddress" - } - } - }, - "500": { - "description": "{\"code\":500000,\"data\":[],\"msg\":\"数据库操作失败\"}", - "schema": { - "type": "string" - } - } - } - } - } - }, - "definitions": { - "hdl.PrivilegeOpenCardOrdQueryPageResp": { - "type": "object", - "properties": { - "btn_bg_color_1": { - "type": "string" - }, - "btn_bg_color_2": { - "type": "string" - }, - "btn_text": { - "type": "string" - }, - "btn_text_color": { - "type": "string" - }, - "header_img": { - "type": "string" - }, - "logistic_company": { - "type": "array", - "items": { - "$ref": "#/definitions/model.LogisticCompany" - } - } - } - }, - "hdl.PrivilegeOpenCardOrdQueryReq": { - "type": "object", - "required": [ - "com", - "num" - ], - "properties": { - "com": { - "description": "快递公司名称", - "type": "string" - }, - "num": { - "description": "快递单号", - "type": "string" - } - } - }, - "hdl.logisticQueryReq": { - "type": "object", - "required": [ - "com", - "num" - ], - "properties": { - "com": { - "description": "快递公司名称", - "type": "string" - }, - "num": { - "description": "快递单号", - "type": "string" - } - } - }, - "hdl.privilegeOpenCardCheckReq": { - "type": "object", - "required": [ - "key", - "num" - ], - "properties": { - "key": { - "description": "卡密", - "type": "string" - }, - "num": { - "description": "卡号", - "type": "string" - } - } - }, - "hdl.privilegeOpenCardPayPageResp": { - "type": "object", - "properties": { - "amount": { - "description": "付费金额", - "type": "string" - }, - "card_type": { - "description": "卡的类型:\"1\"实体卡 \"2\"虚拟卡", - "type": "string" - }, - "date_type": { - "description": "日期类型:month:月 season:季 year:年 forever:永久", - "type": "string" - }, - "page_style": { - "description": "页面样式", - "$ref": "#/definitions/hdl.privilegeOpenCardPayStyle" - } - } - }, - "hdl.privilegeOpenCardPayStyle": { - "type": "object", - "properties": { - "exclusive_privilege": { - "description": "专属特权", - "type": "array", - "items": { - "type": "object", - "properties": { - "brand_id": { - "type": "string" - }, - "brand_img": { - "type": "string" - }, - "brand_img_url": { - "type": "string" - }, - "brand_name": { - "type": "string" - }, - "is_show": { - "type": "string" - }, - "sub_title": { - "type": "string" - } - } - } - }, - "payment_btn": { - "description": "底部支付按钮", - "type": "array", - "items": { - "type": "object", - "properties": { - "bg_img": { - "type": "string" - }, - "bg_img_url": { - "type": "string" - }, - "func": { - "type": "string" - }, - "name": { - "type": "string" - }, - "text": { - "type": "string" - }, - "text_color": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "payment_choose_icon": { - "description": "支付方式选中、未选中图标", - "type": "array", - "items": { - "type": "object", - "properties": { - "icon": { - "type": "string" - }, - "icon_url": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "payment_style": { - "description": "支付方式", - "type": "array", - "items": { - "type": "object", - "properties": { - "icon": { - "type": "string" - }, - "icon_url": { - "type": "string" - }, - "type": { - "type": "string" - } - } - } - }, - "style": { - "description": "头部样式", - "type": "object", - "properties": { - "header_bg_img": { - "type": "string" - }, - "header_bg_img_url": { - "type": "string" - }, - "special_deals_img": { - "type": "string" - }, - "special_deals_img_url": { - "type": "string" - }, - "special_deals_text": { - "type": "string" - } - } - } - } - }, - "hdl.resultItem": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "440100000000" - }, - "name": { - "type": "string", - "example": "city" - } - } - }, - "hdl.updateAddressReq": { - "type": "object", - "required": [ - "city_id", - "county_id", - "detail", - "phone", - "province_id", - "receiver" - ], - "properties": { - "city_id": { - "type": "string" - }, - "county_id": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "phone": { - "type": "string" - }, - "post_code": { - "type": "string" - }, - "province_id": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "tag": { - "type": "string" - } - } - }, - "md.Apple": { - "type": "object", - "properties": { - "token": { - "type": "string" - } - } - }, - "md.FastLoginRequestBody": { - "type": "object", - "properties": { - "apple": { - "$ref": "#/definitions/md.Apple" - }, - "captcha": { - "type": "string" - }, - "is_not_create": { - "type": "string" - }, - "mobile": { - "type": "string" - }, - "parent_uid": { - "type": "string" - }, - "qq": { - "$ref": "#/definitions/md.QQLogin" - }, - "return_user_msg": { - "type": "string" - }, - "taobao": { - "$ref": "#/definitions/md.TaobaoLogin" - }, - "wechat": { - "$ref": "#/definitions/md.WeChat" - }, - "wechat_mini": { - "$ref": "#/definitions/md.WeChatMiniApp" - }, - "zone": { - "type": "string" - } - } - }, - "md.IndexRecommendList": { - "type": "object", - "properties": { - "good": { - "type": "array", - "items": { - "$ref": "#/definitions/md.RecommendGood" + { + "description": "请求参数", + "name": "req", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/md.FastLoginRequestBody" + } } - }, - "provider": { - "description": "BarTitleList []BarTitle `json:\"bar_title_list\"`", - "type": "string" - } - } - }, - "md.LoginResponse": { - "type": "object", - "properties": { - "bind_phone_enable": { - "type": "string" - }, - "is_pid": { - "type": "string" - }, - "perms": { - "type": "array", - "items": { - "type": "string" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/md.LoginResponse" + } + }, + "400": { + "description": "具体错误", + "schema": { + "$ref": "#/definitions/md.Response" + } } - }, - "phone": { - "type": "string" - }, - "register_invite_code_enable": { - "type": "string" - }, - "register_popup_condition": { - "description": "弹出类型设置", - "$ref": "#/definitions/md.RegisterPopupCondition" - }, - "token": { - "type": "string" - }, - "user_id": { - "type": "string" - }, - "username": { - "type": "string" - }, - "wechat_applet_open_id": { - "type": "string" - }, - "wechat_union_id": { - "type": "string" - } - } - }, - "md.Marquee": { - "type": "object", - "properties": { - "avatar_url": { - "type": "string" - }, - "content": { - "type": "string" - }, - "name": { - "type": "string" } } - }, - "md.ProductDetailResponse": { + } + }, + "definitions": { + "md.FastLoginRequestBody": { "type": "object", "properties": { - "commission": { - "type": "string" - }, - "coupon_price": { - "type": "string" - }, - "good_id": { - "type": "string" - }, - "mod_list": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": true - } - }, - "provider": { + "captcha": { "type": "string" }, - "provider_name": { + "card_key": { + "description": "权益卡卡密", "type": "string" }, - "shop_avatar": { - "type": "string" - } - } - }, - "md.QQLogin": { - "type": "object", - "properties": { - "access_token": { + "card_num": { + "description": "权益卡卡号", "type": "string" }, - "avatar_url": { + "invited_code": { + "description": "邀请码", "type": "string" }, - "city": { + "is_not_create": { "type": "string" }, - "expires_in": { + "mobile": { "type": "string" }, - "gender": { + "parent_uid": { + "description": "上级ID", "type": "string" }, - "nickname": { + "password": { "type": "string" }, - "open_id": { + "pic_code": { "type": "string" }, - "pay_token": { + "pic_code_id": { "type": "string" }, - "pf": { + "return_user_msg": { "type": "string" }, - "pf_key": { + "task_id": { "type": "string" }, - "province": { + "task_type": { "type": "string" }, - "ret": { + "type": { "type": "string" }, - "unionid": { + "zone": { "type": "string" } } }, - "md.RecommendGood": { + "md.LoginResponse": { "type": "object", "properties": { - "commission": { + "alipay_user_id": { "type": "string" }, - "coupon": { + "avatar": { "type": "string" }, - "current_price": { + "bind_phone_enable": { "type": "string" }, - "detail_data": { - "$ref": "#/definitions/md.ProductDetailResponse" - }, - "good_id": { + "check_bind_phone": { "type": "string" }, - "good_image": { + "invite_code": { "type": "string" }, - "good_title": { + "is_need_check_nickname": { "type": "string" }, - "inorder_count": { + "is_pid": { "type": "string" }, - "is_collect": { - "type": "integer" - }, - "is_coupons": { - "type": "integer" - }, - "is_share": { - "type": "integer" + "jd_applet_open_id": { + "type": "string" }, - "market_price": { + "password": { "type": "string" }, - "marquee_list": { + "perms": { "type": "array", "items": { - "$ref": "#/definitions/md.Marquee" - } - }, - "provider": { - "type": "string" - }, - "provider_name": { - "type": "string" - }, - "pvd": { - "type": "string" - }, - "shop_avatar": { - "type": "string" - }, - "shop_name": { - "type": "string" - }, - "video": { - "type": "string" - } - } - }, - "md.RegisterPopupCondition": { - "type": "object", - "properties": { - "invite_code": { - "description": "邀请码设置:弹出类型是激活码的时候起作用", - "type": "object", - "properties": { - "popup": { - "description": "是否弹出 “0”否 “1”是", - "type": "string" - }, - "should_input": { - "description": "是否必填 “0”否 “1”是", - "type": "string" - } + "type": "string" } }, - "popup_type": { - "description": "弹出类型:“0”关闭 ”1”激活码 “2”邀请码", - "type": "string" - }, - "should_input": { - "description": "是否必填 “0”否 “1”是", - "type": "string" - } - } - }, - "md.TaobaoLogin": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "auth_code": { - "type": "string" - }, - "avatar_url": { - "type": "string" - }, - "nick_name": { - "type": "string" - }, - "open_id": { - "type": "string" - }, - "sid": { - "type": "string" - } - } - }, - "md.WeChat": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "avatar_url": { - "type": "string" - }, - "city": { - "type": "string" - }, - "expires_in": { - "type": "string" - }, - "gender": { - "type": "string" - }, - "nickname": { - "type": "string" - }, - "open_id": { - "type": "string" - }, - "pay_token": { - "type": "string" - }, - "pf": { - "type": "string" - }, - "pf_key": { + "phone": { "type": "string" }, - "province": { + "register_invite_code_enable": { + "description": "邀请码跳转是否开启", "type": "string" }, - "ret": { + "register_invite_code_should_input": { + "description": "邀请码是否必填", "type": "string" }, - "unionid": { - "type": "string" - } - } - }, - "md.WeChatMiniApp": { - "type": "object", - "properties": { - "avatar": { + "token": { "type": "string" }, - "code": { + "user_id": { "type": "string" }, - "nickname": { + "username": { "type": "string" }, - "open_id": { + "wechat_applet_open_id": { "type": "string" }, - "unionid": { + "wechat_union_id": { "type": "string" } } }, - "model.LogisticCompany": { + "md.Response": { "type": "object", "properties": { "code": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "model.PrivilegeOpenCardOrd": { - "type": "object", - "properties": { - "address": { - "type": "string" - }, - "after_sale_id": { - "type": "integer" - }, - "card_key": { - "type": "string" - }, - "card_num": { - "type": "string" - }, - "card_type": { - "type": "integer" - }, - "cost_price": { - "type": "string" - }, - "create_time": { - "type": "string" - }, - "date_type": { - "type": "integer" - }, - "given_data": { - "type": "string" - }, - "logistic_company": { - "type": "string" - }, - "logistic_num": { - "type": "string" - }, - "ord_id": { - "type": "integer" - }, - "pay_channel": { - "type": "integer" - }, - "pay_time": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "receiver": { - "type": "string" - }, - "settle_at": { - "type": "integer" - }, - "state": { - "type": "integer" - }, - "uid": { - "type": "integer" - }, - "update_time": { - "type": "string" - } - } - }, - "model.UserAddress": { - "type": "object", - "properties": { - "city_id": { - "type": "string" - }, - "city_name": { - "type": "string" - }, - "county_id": { - "type": "string" - }, - "county_name": { - "type": "string" - }, - "detail": { - "type": "string" - }, - "id": { - "type": "integer" - }, - "phone": { - "type": "string" - }, - "post_code": { - "type": "string" - }, - "province_id": { - "type": "string" - }, - "province_name": { - "type": "string" - }, - "receiver": { - "type": "string" + "type": "string", + "example": "响应码" }, - "tag": { - "type": "string" + "data": { + "description": "内容" }, - "uid": { - "type": "integer" + "msg": { + "type": "string", + "example": "具体错误原因" } } } diff --git a/docs/swagger.yaml b/docs/swagger.yaml index ca2a7a9..7a9cad0 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,234 +1,60 @@ -basePath: / definitions: - hdl.PrivilegeOpenCardOrdQueryPageResp: - properties: - btn_bg_color_1: - type: string - btn_bg_color_2: - type: string - btn_text: - type: string - btn_text_color: - type: string - header_img: - type: string - logistic_company: - items: - $ref: '#/definitions/model.LogisticCompany' - type: array - type: object - hdl.PrivilegeOpenCardOrdQueryReq: - properties: - com: - description: 快递公司名称 - type: string - num: - description: 快递单号 - type: string - required: - - com - - num - type: object - hdl.logisticQueryReq: - properties: - com: - description: 快递公司名称 - type: string - num: - description: 快递单号 - type: string - required: - - com - - num - type: object - hdl.privilegeOpenCardCheckReq: + md.FastLoginRequestBody: properties: - key: - description: 卡密 - type: string - num: - description: 卡号 + captcha: type: string - required: - - key - - num - type: object - hdl.privilegeOpenCardPayPageResp: - properties: - amount: - description: 付费金额 + card_key: + description: 权益卡卡密 type: string - card_type: - description: 卡的类型:"1"实体卡 "2"虚拟卡 + card_num: + description: 权益卡卡号 type: string - date_type: - description: 日期类型:month:月 season:季 year:年 forever:永久 + invited_code: + description: 邀请码 type: string - page_style: - $ref: '#/definitions/hdl.privilegeOpenCardPayStyle' - description: 页面样式 - type: object - hdl.privilegeOpenCardPayStyle: - properties: - exclusive_privilege: - description: 专属特权 - items: - properties: - brand_id: - type: string - brand_img: - type: string - brand_img_url: - type: string - brand_name: - type: string - is_show: - type: string - sub_title: - type: string - type: object - type: array - payment_btn: - description: 底部支付按钮 - items: - properties: - bg_img: - type: string - bg_img_url: - type: string - func: - type: string - name: - type: string - text: - type: string - text_color: - type: string - type: - type: string - type: object - type: array - payment_choose_icon: - description: 支付方式选中、未选中图标 - items: - properties: - icon: - type: string - icon_url: - type: string - type: - type: string - type: object - type: array - payment_style: - description: 支付方式 - items: - properties: - icon: - type: string - icon_url: - type: string - type: - type: string - type: object - type: array - style: - description: 头部样式 - properties: - header_bg_img: - type: string - header_bg_img_url: - type: string - special_deals_img: - type: string - special_deals_img_url: - type: string - special_deals_text: - type: string - type: object - type: object - hdl.resultItem: - properties: - id: - example: "440100000000" + is_not_create: type: string - name: - example: city + mobile: type: string - type: object - hdl.updateAddressReq: - properties: - city_id: + parent_uid: + description: 上级ID type: string - county_id: + password: type: string - detail: + pic_code: type: string - id: - type: integer - phone: + pic_code_id: type: string - post_code: + return_user_msg: type: string - province_id: + task_id: type: string - receiver: + task_type: type: string - tag: + type: type: string - required: - - city_id - - county_id - - detail - - phone - - province_id - - receiver - type: object - md.Apple: - properties: - token: + zone: type: string type: object - md.FastLoginRequestBody: + md.LoginResponse: properties: - apple: - $ref: '#/definitions/md.Apple' - captcha: + alipay_user_id: type: string - is_not_create: + avatar: type: string - mobile: + bind_phone_enable: type: string - parent_uid: + check_bind_phone: type: string - qq: - $ref: '#/definitions/md.QQLogin' - return_user_msg: + invite_code: type: string - taobao: - $ref: '#/definitions/md.TaobaoLogin' - wechat: - $ref: '#/definitions/md.WeChat' - wechat_mini: - $ref: '#/definitions/md.WeChatMiniApp' - zone: + is_need_check_nickname: type: string - type: object - md.IndexRecommendList: - properties: - good: - items: - $ref: '#/definitions/md.RecommendGood' - type: array - provider: - description: BarTitleList []BarTitle `json:"bar_title_list"` + is_pid: type: string - type: object - md.LoginResponse: - properties: - bind_phone_enable: + jd_applet_open_id: type: string - is_pid: + password: type: string perms: items: @@ -237,10 +63,11 @@ definitions: phone: type: string register_invite_code_enable: + description: 邀请码跳转是否开启 + type: string + register_invite_code_should_input: + description: 邀请码是否必填 type: string - register_popup_condition: - $ref: '#/definitions/md.RegisterPopupCondition' - description: 弹出类型设置 token: type: string user_id: @@ -252,262 +79,17 @@ definitions: wechat_union_id: type: string type: object - md.Marquee: - properties: - avatar_url: - type: string - content: - type: string - name: - type: string - type: object - md.ProductDetailResponse: - properties: - commission: - type: string - coupon_price: - type: string - good_id: - type: string - mod_list: - items: - additionalProperties: true - type: object - type: array - provider: - type: string - provider_name: - type: string - shop_avatar: - type: string - type: object - md.QQLogin: - properties: - access_token: - type: string - avatar_url: - type: string - city: - type: string - expires_in: - type: string - gender: - type: string - nickname: - type: string - open_id: - type: string - pay_token: - type: string - pf: - type: string - pf_key: - type: string - province: - type: string - ret: - type: string - unionid: - type: string - type: object - md.RecommendGood: - properties: - commission: - type: string - coupon: - type: string - current_price: - type: string - detail_data: - $ref: '#/definitions/md.ProductDetailResponse' - good_id: - type: string - good_image: - type: string - good_title: - type: string - inorder_count: - type: string - is_collect: - type: integer - is_coupons: - type: integer - is_share: - type: integer - market_price: - type: string - marquee_list: - items: - $ref: '#/definitions/md.Marquee' - type: array - provider: - type: string - provider_name: - type: string - pvd: - type: string - shop_avatar: - type: string - shop_name: - type: string - video: - type: string - type: object - md.RegisterPopupCondition: - properties: - invite_code: - description: 邀请码设置:弹出类型是激活码的时候起作用 - properties: - popup: - description: 是否弹出 “0”否 “1”是 - type: string - should_input: - description: 是否必填 “0”否 “1”是 - type: string - type: object - popup_type: - description: 弹出类型:“0”关闭 ”1”激活码 “2”邀请码 - type: string - should_input: - description: 是否必填 “0”否 “1”是 - type: string - type: object - md.TaobaoLogin: - properties: - access_token: - type: string - auth_code: - type: string - avatar_url: - type: string - nick_name: - type: string - open_id: - type: string - sid: - type: string - type: object - md.WeChat: - properties: - access_token: - type: string - avatar_url: - type: string - city: - type: string - expires_in: - type: string - gender: - type: string - nickname: - type: string - open_id: - type: string - pay_token: - type: string - pf: - type: string - pf_key: - type: string - province: - type: string - ret: - type: string - unionid: - type: string - type: object - md.WeChatMiniApp: - properties: - avatar: - type: string - code: - type: string - nickname: - type: string - open_id: - type: string - unionid: - type: string - type: object - model.LogisticCompany: + md.Response: properties: code: + example: 响应码 type: string - name: - type: string - type: object - model.PrivilegeOpenCardOrd: - properties: - address: - type: string - after_sale_id: - type: integer - card_key: - type: string - card_num: - type: string - card_type: - type: integer - cost_price: - type: string - create_time: - type: string - date_type: - type: integer - given_data: - type: string - logistic_company: - type: string - logistic_num: - type: string - ord_id: - type: integer - pay_channel: - type: integer - pay_time: - type: string - phone: - type: string - receiver: - type: string - settle_at: - type: integer - state: - type: integer - uid: - type: integer - update_time: + data: + description: 内容 + msg: + example: 具体错误原因 type: string type: object - model.UserAddress: - properties: - city_id: - type: string - city_name: - type: string - county_id: - type: string - county_name: - type: string - detail: - type: string - id: - type: integer - phone: - type: string - post_code: - type: string - province_id: - type: string - province_name: - type: string - receiver: - type: string - tag: - type: string - uid: - type: integer - type: object host: localhost:5000 info: contact: @@ -517,565 +99,32 @@ info: title: 智莺生活移动端接口 version: "1.0" paths: - /api/v1/acq/fix: - get: - consumes: - - application/json - description: 拉新活动--fix - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 拉新活动--fix - tags: - - 拉新活动 - /api/v1/acquisition/home: - post: - consumes: - - application/json - description: 本期榜单/上期榜单/我的邀请人数和奖励/任务列表 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 拉新--首页数据 - tags: - - 拉新活动 - /api/v1/acquisition/qrcode: - get: - consumes: - - application/json - description: 二维码 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 拉新--邀请二维码 - tags: - - 拉新活动 - /api/v1/acquisition/reward/detail: - post: - consumes: - - application/json - description: 拉新活动--我的奖励明细 - parameters: - - description: 1为以发放,2为待发放,3为失效 - in: body - name: state - required: true - schema: - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 拉新活动--我的奖励明细 - tags: - - 拉新活动 - /api/v1/acquisition/reward_receive: - post: - consumes: - - application/json - description: 拉新活动--领取奖励 - parameters: - - description: 任务ID - in: body - name: job_id - required: true - schema: - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 拉新活动--领取奖励 - tags: - - 拉新活动 - /api/v1/credit/card/config: - get: - consumes: - - application/json - description: 获取信用卡配置 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 获取信用卡配置 - tags: - - 信用卡 - /api/v1/duomai/mall/detail: - post: - consumes: - - application/json - description: 多麦商城--商城详情 - parameters: - - description: 商城id - in: body - name: brand_id - required: true - schema: - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城--商城详情 - tags: - - 多麦商城 - /api/v1/duomai/mall/home: - get: - consumes: - - application/json - description: 多麦商城--首页数据 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城--首页数据 - tags: - - 多麦商城 - /api/v1/duomai/mall/search: - post: - consumes: - - application/json - description: 多麦商城--搜索 - parameters: - - description: 搜索关键词 - in: body - name: key - required: true - schema: - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城--搜索 - tags: - - 多麦商城 - /api/v1/duomai/mall/update: - get: - consumes: - - application/json - description: 多麦商城--更新数据 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城--更新数据 - tags: - - 多麦商城 - /api/v1/logistic/query: + /api/v1/communityTeam/agent/login: post: consumes: - application/json + description: 登入 parameters: - - description: logisticQueryReq + - description: 请求参数 in: body name: req required: true - schema: - $ref: '#/definitions/hdl.logisticQueryReq' - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - "400": - description: '{"code":400000,"data":[],"msg":"该快递公司不支持查询"}' - schema: - type: string - summary: 快递100物流查询 - tags: - - 物流 - /api/v1/mod/pub.flutter.duomai.mall.detail.page: - get: - consumes: - - application/json - description: 多麦商城详情页样式 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城详情页样式 - tags: - - 多麦商城 - /api/v1/mod/pub.flutter.duomai.mall.home.page: - get: - consumes: - - application/json - description: 多麦商城首页样式 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城首页样式 - tags: - - 多麦商城 - /api/v1/mod/pub.flutter.duomai.mall.search.page: - get: - consumes: - - application/json - description: 多麦商城搜索页样式 - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 多麦商城搜索页样式 - tags: - - 多麦商城 - /api/v1/privilege/card/activation: - post: - consumes: - - application/json - description: 权益卡激活 - parameters: - - description: json - in: body - name: body - required: true - schema: - $ref: '#/definitions/hdl.privilegeOpenCardCheckReq' - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 权益卡激活 - tags: - - 权益卡 - /api/v1/privilege/open_card/check: - get: - consumes: - - application/json - parameters: - - description: json - in: body - name: body - required: true - schema: - $ref: '#/definitions/hdl.privilegeOpenCardCheckReq' - produces: - - application/json - responses: - "200": - description: 0:不存在 1:已经被使用 2:可用 - schema: - type: string - summary: 权益卡卡号卡密检测 - tags: - - 权益卡 - /api/v1/privilege/open_card/order_query: - get: - produces: - - application/json - responses: - "200": - description: ok - schema: - $ref: '#/definitions/hdl.PrivilegeOpenCardOrdQueryPageResp' - "400": - description: '{"code":400000,"data":[],"msg":"验证码错误"}' - schema: - type: string - summary: 权益卡开卡订单查询页面 - tags: - - 权益卡 - post: - parameters: - - description: json - in: body - name: body - required: true - schema: - $ref: '#/definitions/hdl.PrivilegeOpenCardOrdQueryReq' - produces: - - application/json - responses: - "200": - description: ok - schema: - $ref: '#/definitions/model.PrivilegeOpenCardOrd' - "400": - description: '{"code":400000,"data":[],"msg":"验证码错误"}' - schema: - type: string - summary: 权益卡开卡订单查询 - tags: - - 权益卡 - /api/v1/privilege/open_card/order_suc: - get: - produces: - - application/json - responses: - "200": - description: ok - schema: - $ref: '#/definitions/model.PrivilegeOpenCardOrd' - summary: 订单支付成功页面 - tags: - - 权益卡 - /api/v1/privilege/open_card/pay_page: - get: - produces: - - application/json - responses: - "200": - description: ok - schema: - $ref: '#/definitions/hdl.privilegeOpenCardPayPageResp' - "400": - description: '{"code":400000,"data":[],"msg":"权益卡配置缺失"}' - schema: - type: string - summary: 权益卡开卡支付页面 - tags: - - 权益卡 - /api/v1/shake_ticket/:goods_id/:type: - get: - consumes: - - application/json - description: 收藏/领券买/分享赚 - parameters: - - description: 商品id - in: path - name: goods_id - required: true - type: string - - description: 类型(0取消收藏,1收藏,2点击 领券买,3点击分享赚) - in: path - name: type - required: true - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - summary: 抖券商品收藏/领券买/分享赚 - tags: - - 抖券 - /api/v1/shake_ticket_list: - get: - consumes: - - application/json - description: 定向计划/高佣专场/精选低价包邮/偏远地区包邮/抖货商品/各大榜单商品/今日值得买 - parameters: - - description: 页码 - in: query - name: page - required: true - type: string - - description: 页数 - in: query - name: page_size - required: true - type: string - - description: 分类id(3定向计划/4高佣专场/5精选低价包邮/6偏远地区包邮/7抖货商品/8各大榜单商品/9今日值得买) - in: query - name: category_id - required: true - type: string - - description: 渠道 - in: query - name: pvd - required: true - type: string - produces: - - application/json - responses: - "200": - description: OK - schema: - $ref: '#/definitions/md.IndexRecommendList' - summary: 抖券商品推荐列表 - tags: - - 抖券 - /api/v1/sign/fast/in: - post: - parameters: - - description: json - in: body - name: body - required: true schema: $ref: '#/definitions/md.FastLoginRequestBody' produces: - application/json responses: "200": - description: ok + description: OK schema: $ref: '#/definitions/md.LoginResponse' "400": - description: '{"code":400001,"data":[],"msg":"请求参数错误"}' - schema: - type: string - summary: 用户手机快速登录 - tags: - - 登录、注册 - /api/v1/sub_region_list: - get: - parameters: - - description: 上级地区类型:root(查询省级列表)、province(省级ID下的城市)、city(市级id下的区域) - in: query - name: parent - required: true - type: string - - description: 上级地区id - in: query - name: id - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - items: - $ref: '#/definitions/hdl.resultItem' - type: array - "400": - description: '{"code":400001,"data":[],"msg":"请求参数错误"}' - schema: - type: string - summary: 获取区域id下的区域 - tags: - - 地址 - /api/v1/user/address/:id: - get: - parameters: - - description: 地址id - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - $ref: '#/definitions/model.UserAddress' - "400": - description: '{"code":400000,"data":[],"msg":"地址不存在"}' - schema: - type: string - summary: 用户地址详情 - tags: - - 地址 - /api/v1/user/address/delete/:id: - post: - consumes: - - application/json - parameters: - - description: ID - in: path - name: id - required: true - type: string - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - "400": - description: '{"code":400000,"data":[],"msg":"地址不存在"}' - schema: - type: string - summary: 用户地址删除 - tags: - - 地址 - /api/v1/user/address/update: - post: - consumes: - - application/json - parameters: - - description: json参数,Id不传为新增 - in: body - name: '""' - required: true - schema: - $ref: '#/definitions/hdl.updateAddressReq' - produces: - - application/json - responses: - "200": - description: ok - schema: - type: string - "400": - description: '{"code":400000,"data":[],"msg":"地址不存在"}' - schema: - type: string - summary: 用户地址新增、编辑 - tags: - - 地址 - /api/v1/user/addresses: - get: - produces: - - application/json - responses: - "200": - description: ok - schema: - items: - $ref: '#/definitions/model.UserAddress' - type: array - "500": - description: '{"code":500000,"data":[],"msg":"数据库操作失败"}' + description: 具体错误 schema: - type: string - summary: 用户地址列表 + $ref: '#/definitions/md.Response' + summary: 登陆 tags: - - 地址 + - 登陆 securityDefinitions: MasterID: in: header diff --git a/go.mod b/go.mod index 868369c..88a4cc5 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,11 @@ module applet go 1.15 require ( - code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2 - code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2 code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0 github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 - github.com/bitly/go-simplejson v0.5.0 github.com/boombuler/barcode v1.0.1 github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 github.com/dgrijalva/jwt-go v3.2.0+incompatible @@ -25,53 +22,35 @@ require ( github.com/iGoogle-ink/gopay v1.5.36 github.com/jinzhu/copier v0.4.0 github.com/makiuchi-d/gozxing v0.1.1 - github.com/mvdan/xurls v1.1.0 - github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8 - github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd - github.com/pkg/errors v0.9.1 github.com/qiniu/api.v7/v7 v7.8.2 github.com/robfig/cron/v3 v3.0.1 github.com/shopspring/decimal v1.3.1 - github.com/swaggo/swag v1.7.0 + github.com/swaggo/swag v1.8.12 github.com/syyongx/php2go v0.9.8 github.com/tidwall/gjson v1.17.0 - github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35 go.uber.org/zap v1.23.0 - golang.org/x/sync v0.2.0 + golang.org/x/sync v0.2.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v2 v2.4.0 xorm.io/xorm v1.3.2 ) require ( - code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0 code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 - code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e - code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395 github.com/andybalholm/cascadia v1.2.0 // indirect github.com/antchfx/htmlquery v1.2.3 // indirect github.com/antchfx/xmlquery v1.3.5 // indirect github.com/antchfx/xpath v1.1.11 // indirect - github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11 - github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a - github.com/dchest/captcha v1.0.0 - github.com/fogleman/gg v1.3.0 - github.com/go-openapi/spec v0.20.3 // indirect - github.com/go-openapi/swag v0.19.15 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 github.com/gookit/color v1.3.8 // indirect github.com/gorilla/sessions v1.2.1 // indirect - github.com/json-iterator/go v1.1.12 github.com/kennygrant/sanitize v1.2.4 // indirect - github.com/olivere/elastic/v7 v7.0.32 - github.com/rakyll/statik v0.1.7 // indirect github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.0 github.com/temoto/robotstxt v1.1.2 // indirect - github.com/wenlng/go-captcha v1.2.5 - golang.org/x/image v0.0.0-20220902085622-e7cb96979f69 golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index 3a66eca..6467cad 100644 --- a/go.sum +++ b/go.sum @@ -13,30 +13,18 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c h1:7oW6off5WIplX2hd+BDO/bS/iU/WIQPHBh6uUHjJspU= -code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c/go.mod h1:3dgECgbJufgRYy8O714HGkrkYshaIAv30ShFBsSaCfs= code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2 h1:DHsLo+xOvr72LwJOKEV0fT19zEKqbJtAGYv5kDLUZrc= code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2/go.mod h1:yr9zroGixMbJ5gm+lVLVcUAZ4mRIaFlWHtBBTLJm5z0= -code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0 h1:OYaoKdrpK0obnK/OMJ0Bg8DyU1Uliq35xPljaRGvDAY= -code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0/go.mod h1:Yc/SFCnyo6Ninzr+BrcXdkwoEEthMGSgWG+J0Oo8HtE= code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d h1:w87z133GUwiw6l3eSvoYt52pPR3lLiX9E08flRVcecE= code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d/go.mod h1:aHatysIWFJ4DzLRSDljlbMObA61wYivI9ab9sygiA8s= -code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2 h1:LUWlvBgmzZfGqvH4VGEWk+JhXHlI+MFmLNl9uX7eh28= -code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2/go.mod h1:IEw6A61Kp2ctoeKIQMFVM/cFq9PUDAzJMb5lVXiEY2Y= code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 h1:dqvWJqlJi0WXCwTxbWPLvSOsKPjP+iEDBVgLcAl9nOE= code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5/go.mod h1:TTcCnFn/LhBGapnutpezlW+GXkLRNPMWkziOoCsXQqY= -code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b h1:qJ3n/N84ByxpbHXsMB3319cvffLwa3Gcnx7WMqNvpX0= -code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b/go.mod h1:8lqoRm7PkDuPV9shACAu3B+LPplV99cgOxM91Z+pa5k= -code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240118152737-08e0d2709655/go.mod h1:Q/C2vLPgAWDPyKyll2sFRWdJsw26nZknL+mjGGB1uuw= code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c h1:wKd5mCUszsNwe+qpUyxPfjsZ+CquyKaHad9Ci3pfeMo= code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c/go.mod h1:LXKefjdbY6D+P1jALLM87wDej8N5D+sLub4YfrnU7TA= code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0 h1:Y2PHy4RxhpPPy6hrSsDnzK+mEbY76If3UJGZIk6cmg4= code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0/go.mod h1:0eObND+Vum1rxf8Ro5ai16phWdWGZ3lkKDXqO/v082s= -code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240826023213-74e7e23bee7c h1:yfSb2PgHMmNlvdQCkdFFZF9i5yrQNMGgFARs9VzPrf0= -code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240826023213-74e7e23bee7c/go.mod h1:WEwF5BOzArem2a/EMJqoZ6gxb0DIEADruUROS4s5bNA= code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e h1:9uiwLba7UGSyox/83pJkho1akyDKJf9bRb/fTcPmAaE= code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e/go.mod h1:WEwF5BOzArem2a/EMJqoZ6gxb0DIEADruUROS4s5bNA= -code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395 h1:xM3v+GLMYQMYeyp48SzJOXvylsbNRbdlvWRMXViWwFI= code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395/go.mod h1:nT2x13YFgrS3tS1fDyUR6q/GNIK+hPw7bdzZXz99SM0= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= @@ -130,11 +118,9 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff/go.mod h1:+RTT1BOk5P97fT2CiHkbFQwkK3mjsFAP6zCYV2aXtjw= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= @@ -144,13 +130,10 @@ github.com/bradfitz/gomemcache v0.0.0-20190329173943-551aad21a668/go.mod h1:H0wQ github.com/bradleypeabody/gorilla-sessions-memcache v0.0.0-20181103040241-659414f458e1/go.mod h1:dkChI7Tbtx7H1Tj7TqGSZMOeGpMP5gLHtjroHd4agiI= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11 h1:smFM+R9NconJ5FHiMyQsq/fIjtYE0jxVJwX8ZxAmWF0= -github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11/go.mod h1:gC4wJD6T+unJtW078G4ugNE2UNbk4/oYwQKteOaybQE= -github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a h1:tc57+CsbpTjJLvcp2AyVAvaYmS0FFxSaRCQeUa4jcHg= -github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a/go.mod h1:MBxCt6+ltWZRodx2FgXuQm7LQweWyPofmXsuhX3D6Zo= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -199,8 +182,6 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/captcha v1.0.0 h1:vw+bm/qMFvTgcjQlYVTuQBJkarm5R0YSsDKhm1HZI2o= -github.com/dchest/captcha v1.0.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo= github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 h1:RAV05c0xOkJ3dZGS0JFybxFKZ2WMLabgx3uXnd7rpGs= github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= @@ -237,8 +218,6 @@ github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSY github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/forgoer/openssl v1.2.1 h1:Qvgk8K+pKayd3QG/f7fB2LJm1ObYNA2iqYraipxm8jQ= github.com/forgoer/openssl v1.2.1/go.mod h1:NMVFOzYeLVR7UiGTxsa+A21nrERTZ3Rv2JHDPcJpDyI= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -253,6 +232,8 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sessions v0.0.3 h1:PoBXki+44XdJdlgDqDrY5nDVe3Wk7wDV/UCOuLP6fBI= github.com/gin-contrib/sessions v0.0.3/go.mod h1:8C/J6cad3Il1mWYYgtw0w+hqasmpvy25mPkXdOgeB9I= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -260,6 +241,8 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.8.0/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -288,15 +271,11 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.4/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/spec v0.19.14/go.mod h1:gwrgJS15eCUgjLpMjBJmbZezCsw88LmgeEip0M63doA= -github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= -github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= +github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.11/go.mod h1:Uc0gKkdR+ojzsEpjh39QChyu92vPgIr72POcgHMAgSY= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -314,6 +293,7 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= @@ -333,6 +313,7 @@ github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.8.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI= @@ -348,8 +329,6 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -635,6 +614,7 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -668,7 +648,6 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mvdan/xurls v1.1.0 h1:OpuDelGQ1R1ueQ6sSryzi6P+1RtBpfQHM8fJwlE45ww= github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= @@ -683,7 +662,6 @@ github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uY github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8 h1:9hvJ/9GQssABrUYNOW1Q6X9/7uY6+Srj9YYYQZVC0AE= github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8/go.mod h1:X1swpPdqguAZaBDoEPyEWHSsJii0YQ1o+3piMv6W3JU= github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= @@ -734,8 +712,6 @@ github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTm github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd h1:taV1toAfzAdRwNWpIB7JMdgX2xL+JT3Rq8GXzyPK1Is= -github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd/go.mod h1:XIY7IuxoZH2deZdjIgzLqXlYkOHiwNC+hL1m3vS2A8g= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= @@ -746,6 +722,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -795,8 +772,6 @@ github.com/qiniu/api.v7/v7 v7.8.2 h1:f08kI0MmsJNzK4sUS8bG3HDH67ktwd/ji23Gkiy2ra4 github.com/qiniu/api.v7/v7 v7.8.2/go.mod h1:FPsIqxh1Ym3X01sANE5ZwXfLZSWoCUp5+jNI8cLo3l0= github.com/quasoft/memstore v0.0.0-20180925164028-84a050167438/go.mod h1:wTPjTepVu7uJBYgZ0SdWHQlIas582j6cn2jgk4DDdlg= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -900,8 +875,12 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/swaggo/swag v1.7.0 h1:5bCA/MTLQoIqDXXyHfOpMeDvL9j68OY/udlK4pQoo4E= -github.com/swaggo/swag v1.7.0/go.mod h1:BdPIL73gvS9NBsdi7M1JOxLvlbfvNRaBP8m6WT6Aajo= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.8.12 h1:pctzkNPu0AlQP2royqX3apjKCQonAnf7KGoxeO4y64w= +github.com/swaggo/swag v1.8.12/go.mod h1:lNfm6Gg+oAq3zRJQNEMBE66LIJKM44mxFqhEEgy2its= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= @@ -934,6 +913,7 @@ github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -946,16 +926,12 @@ github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+ github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= -github.com/wenlng/go-captcha v1.2.5 h1:zA0/fovEl9oAhSg+KwHBwmq99GeeAXknWx6wYKjhjTg= -github.com/wenlng/go-captcha v1.2.5/go.mod h1:QgPgpEURSa37gF3GtojNoNRwbMwuatSBx5NXrzASOb0= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35 h1:CzJpvB76GmmRNs4AVpGEuhO+gien7G5CcC+8vaIIWPI= -github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35/go.mod h1:xLEBvbUFvuBHRWeV/SNefGARR5QedFRkThwnodnmCKw= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -1038,6 +1014,7 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= @@ -1049,9 +1026,6 @@ golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220902085622-e7cb96979f69 h1:Lj6HJGCSn5AjxRAH2+r35Mir4icalbqku+CLUtjnvXY= -golang.org/x/image v0.0.0-20220902085622-e7cb96979f69/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -1071,8 +1045,9 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1097,7 +1072,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1113,15 +1087,17 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= @@ -1141,7 +1117,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= @@ -1195,6 +1170,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1207,6 +1183,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= @@ -1214,6 +1192,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= @@ -1224,10 +1203,10 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= @@ -1269,13 +1248,13 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1351,6 +1330,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=