@@ -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 | |||||
} |
@@ -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) | |||||
} |
@@ -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) | |||||
} |
@@ -0,0 +1 @@ | |||||
package hdl |
@@ -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 | |||||
} |
@@ -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 | |||||
} |
@@ -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 | |||||
} |
@@ -0,0 +1 @@ | |||||
package svc |
@@ -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 | |||||
} |
@@ -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 | |||||
} |
@@ -0,0 +1 @@ | |||||
package svc |
@@ -0,0 +1 @@ | |||||
package svc |
@@ -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 | |||||
} |
@@ -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 | |||||
} |
@@ -2,10 +2,19 @@ package db | |||||
import ( | import ( | ||||
"applet/app/db/model" | "applet/app/db/model" | ||||
"applet/app/md" | |||||
"applet/app/utils" | "applet/app/utils" | ||||
"xorm.io/xorm" | "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 { | func GetOrderEg(eg *xorm.Engine, oid string) *model.CommunityTeamOrder { | ||||
var data model.CommunityTeamOrder | var data model.CommunityTeamOrder | ||||
get, err := eg.Where("oid=?", oid).Get(&data) | 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 | 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 | |||||
} |
@@ -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) | |||||
} | |||||
} |
@@ -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 | |||||
} |
@@ -7,6 +7,15 @@ import ( | |||||
"xorm.io/xorm" | "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 { | func GetStore(eg *xorm.Engine, arg map[string]string) []map[string]string { | ||||
lng := utils.StrToFloat64(arg["lng"]) | lng := utils.StrToFloat64(arg["lng"]) | ||||
lat := utils.StrToFloat64(arg["lat"]) | 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"] != "" { | } else if arg["uid"] != "" { | ||||
where += " and store_type=1 and uid=" + arg["parent_uid"] | where += " and store_type=1 and uid=" + arg["parent_uid"] | ||||
} else { | } 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"] != "" { | if arg["city"] != "" { | ||||
where += " and address like '%" + arg["city"] + "%'" | |||||
where += " and city like '%" + arg["city"] + "%'" | |||||
} | } | ||||
if arg["province_id"] != "" { | if arg["province_id"] != "" { | ||||
where += " and province_id = '" + arg["province_id"] + "'" | where += " and province_id = '" + arg["province_id"] + "'" | ||||
@@ -62,7 +75,11 @@ where %s %s` | |||||
} else if arg["uid"] != "" { | } else if arg["uid"] != "" { | ||||
where += " and cts.store_type=1 and cts.uid=" + arg["parent_uid"] | where += " and cts.store_type=1 and cts.uid=" + arg["parent_uid"] | ||||
} else { | } 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"] != "" { | if arg["city"] != "" { | ||||
where += " and cts.city='" + arg["city"] + "'" | where += " and cts.city='" + arg["city"] + "'" | ||||
@@ -2,6 +2,8 @@ package db | |||||
import ( | import ( | ||||
"applet/app/db/model" | "applet/app/db/model" | ||||
"applet/app/md" | |||||
"applet/app/utils" | |||||
"applet/app/utils/logx" | "applet/app/utils/logx" | ||||
"fmt" | "fmt" | ||||
"strings" | "strings" | ||||
@@ -21,6 +23,13 @@ func UserisExistByUsernameAndPassword(Db *xorm.Engine, username, password, zone | |||||
} | } | ||||
return &user, nil | 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 | // UserisExistByMobile is exist | ||||
func UserisExistByMobile(Db *xorm.Engine, n string) (bool, error) { | 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 | 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 | |||||
} |
@@ -5,37 +5,38 @@ import ( | |||||
) | ) | ||||
type CommunityTeamOrder struct { | 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)"` | |||||
} | } |
@@ -5,20 +5,27 @@ import ( | |||||
) | ) | ||||
type CommunityTeamStore struct { | 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)"` | |||||
} | } |
@@ -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)"` | |||||
} |
@@ -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)"` | |||||
} |
@@ -47,6 +47,18 @@ func BankStoreCate(c *gin.Context) { | |||||
func BankStore(c *gin.Context) { | func BankStore(c *gin.Context) { | ||||
svc.BankStore(c) | 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) { | func Store(c *gin.Context) { | ||||
svc.Store(c) | svc.Store(c) | ||||
} | } | ||||
@@ -40,6 +40,7 @@ type AliPayPayParams struct { | |||||
OrdId string `json:"ord_id"` | OrdId string `json:"ord_id"` | ||||
Uid string `json:"uid"` | Uid string `json:"uid"` | ||||
Phone string `json:"phone"` | Phone string `json:"phone"` | ||||
AgentId int `json:"agent_id"` | |||||
} | } | ||||
type PayData struct { | type PayData struct { | ||||
PayAppCertSn string `json:"pay_app_cert_sn"` | PayAppCertSn string `json:"pay_app_cert_sn"` | ||||
@@ -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"` | |||||
} |
@@ -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"` | |||||
} |
@@ -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"` | |||||
} |
@@ -0,0 +1,7 @@ | |||||
package md | |||||
type Response struct { | |||||
Code string `json:"code" example:"响应码"` | |||||
Data interface{} `json:"data" ` //内容 | |||||
Msg string `json:"msg" example:"具体错误原因"` | |||||
} |
@@ -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"` | |||||
} |
@@ -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"` | |||||
} |
@@ -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:"规格组合"` // 规格组合 | |||||
} |
@@ -1,11 +1,14 @@ | |||||
package router | package router | ||||
import ( | import ( | ||||
agentHdl "applet/app/agent/hdl" | |||||
"applet/app/cfg" | "applet/app/cfg" | ||||
"applet/app/hdl" | "applet/app/hdl" | ||||
"applet/app/mw" | "applet/app/mw" | ||||
_ "applet/docs" | _ "applet/docs" | ||||
"github.com/gin-gonic/gin" | "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) | gin.SetMode(mode) | ||||
//创建一个新的启动器 | //创建一个新的启动器 | ||||
r := gin.New() | 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) | 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{}{}}) | c.JSON(405, gin.H{"code": 405, "msg": "method not allowed", "data": []struct{}{}}) | ||||
}) | }) | ||||
r.Use(mw.Cors) | r.Use(mw.Cors) | ||||
routeCommunityTeamAgent(r.Group("/api/v1/communityTeam/agent")) | |||||
routeCommunityTeamOwnStore(r.Group("/api/v1/communityTeam/ownStore")) | |||||
routeCommunityTeam(r.Group("/api/v1/communityTeam")) | routeCommunityTeam(r.Group("/api/v1/communityTeam")) | ||||
return r | 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) { | func routeCommunityTeam(r *gin.RouterGroup) { | ||||
r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 | r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 | ||||
@@ -48,6 +86,8 @@ func routeCommunityTeam(r *gin.RouterGroup) { | |||||
r.POST("/city", hdl.City) | r.POST("/city", hdl.City) | ||||
r.GET("/bank/store/cate", hdl.BankStoreCate) | r.GET("/bank/store/cate", hdl.BankStoreCate) | ||||
r.POST("/bank/store/list", hdl.BankStore) | 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", hdl.Store) | ||||
r.POST("/store/like/list", hdl.StoreLike) | r.POST("/store/like/list", hdl.StoreLike) | ||||
r.GET("/goods/cate", hdl.Cate) | r.GET("/goods/cate", hdl.Cate) | ||||
@@ -8,9 +8,11 @@ import ( | |||||
"applet/app/utils" | "applet/app/utils" | ||||
"applet/app/utils/logx" | "applet/app/utils/logx" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/pay" | "code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/pay" | ||||
"errors" | |||||
"fmt" | "fmt" | ||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
"github.com/iGoogle-ink/gopay/alipay" | "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"), | "rsa": SysCfgGet(c, "pay_ali_key_len_type"), | ||||
"pkcs": SysCfgGet(c, "pay_ali_key_format_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" { | 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 { | if err != nil { | ||||
fmt.Println(err) | fmt.Println(err) | ||||
return nil, err | return nil, err | ||||
@@ -80,7 +101,7 @@ func CommAlipayConfig(c *gin.Context, p *md.AliPayPayParams) (map[string]string, | |||||
return nil, err | return nil, err | ||||
} | } | ||||
req["pay_app_cert_sn"] = appCertSN | 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 { | if err != nil { | ||||
fmt.Println(err) | fmt.Println(err) | ||||
return nil, err | return nil, err | ||||
@@ -2,8 +2,14 @@ package svc | |||||
import ( | import ( | ||||
"applet/app/db" | "applet/app/db" | ||||
"applet/app/db/model" | |||||
"applet/app/e" | |||||
"applet/app/md" | "applet/app/md" | ||||
"applet/app/utils" | |||||
"applet/app/utils/cache" | |||||
"applet/app/utils/logx" | |||||
"errors" | "errors" | ||||
"fmt" | |||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
"strings" | "strings" | ||||
) | ) | ||||
@@ -48,3 +54,66 @@ DEFALUT: | |||||
user.Level = ul | user.Level = ul | ||||
return user, nil | 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 | |||||
} |
@@ -16,7 +16,10 @@ func Goods(c *gin.Context) { | |||||
} | } | ||||
goods := db.GetGoods(MasterDb(c), arg) | goods := db.GetGoods(MasterDb(c), arg) | ||||
goodsList := make([]map[string]interface{}, 0) | goodsList := make([]map[string]interface{}, 0) | ||||
if goods != nil { | if goods != nil { | ||||
scheme, host := ImageBucket(c) | |||||
for _, v := range *goods { | for _, v := range *goods { | ||||
speImageList := make([]string, 0) | speImageList := make([]string, 0) | ||||
if v.IsSpeImageOn == 1 { | if v.IsSpeImageOn == 1 { | ||||
@@ -25,7 +28,7 @@ func Goods(c *gin.Context) { | |||||
tmp := map[string]interface{}{ | tmp := map[string]interface{}{ | ||||
"id": utils.IntToStr(v.Id), | "id": utils.IntToStr(v.Id), | ||||
"title": v.Title, | "title": v.Title, | ||||
"img": v.Img, | |||||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||||
"info": v.Info, | "info": v.Info, | ||||
"price": v.Price, | "price": v.Price, | ||||
"stock": utils.IntToStr(v.Stock), | "stock": utils.IntToStr(v.Stock), | ||||
@@ -39,6 +39,8 @@ func OrderList(c *gin.Context) { | |||||
data := db.GetOrderList(MasterDb(c), arg) | data := db.GetOrderList(MasterDb(c), arg) | ||||
var state = []string{"待付款", "待提货", "已完成", "已取消"} | var state = []string{"待付款", "待提货", "已完成", "已取消"} | ||||
list := make([]map[string]interface{}, 0) | list := make([]map[string]interface{}, 0) | ||||
scheme, host := ImageBucket(c) | |||||
if data != nil { | if data != nil { | ||||
now := time.Now().Unix() | now := time.Now().Unix() | ||||
for _, v := range *data { | for _, v := range *data { | ||||
@@ -48,7 +50,7 @@ func OrderList(c *gin.Context) { | |||||
if info != nil { | if info != nil { | ||||
for _, v1 := range *info { | for _, v1 := range *info { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
"img": v1.Img, | |||||
"img": ImageFormatWithBucket(scheme, host, v1.Img), | |||||
"title": v1.Title, | "title": v1.Title, | ||||
"sku_str": "", | "sku_str": "", | ||||
} | } | ||||
@@ -165,9 +167,11 @@ func OrderDetail(c *gin.Context) { | |||||
goodsInfo := make([]map[string]string, 0) | goodsInfo := make([]map[string]string, 0) | ||||
info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | ||||
if info != nil { | if info != nil { | ||||
scheme, host := ImageBucket(c) | |||||
for _, v := range *info { | for _, v := range *info { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
"img": v.Img, | |||||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||||
"title": v.Title, | "title": v.Title, | ||||
"price": v.Price, | "price": v.Price, | ||||
"num": utils.IntToStr(v.Num), | "num": utils.IntToStr(v.Num), | ||||
@@ -497,6 +501,11 @@ func OrderCreate(c *gin.Context) { | |||||
Amount: totalPrice, | Amount: totalPrice, | ||||
MealNum: utils.StrToInt(arg.MealNum), | 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 { | if utils.StrToFloat64(coupon) > 0 { | ||||
order.CouponId = utils.StrToInt(arg.CouponId) | order.CouponId = utils.StrToInt(arg.CouponId) | ||||
} | } | ||||
@@ -6,9 +6,11 @@ import ( | |||||
"applet/app/e" | "applet/app/e" | ||||
"applet/app/md" | "applet/app/md" | ||||
"applet/app/utils" | "applet/app/utils" | ||||
"errors" | |||||
"fmt" | "fmt" | ||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
"github.com/shopspring/decimal" | "github.com/shopspring/decimal" | ||||
"github.com/tidwall/gjson" | |||||
"math" | "math" | ||||
"math/rand" | "math/rand" | ||||
"time" | "time" | ||||
@@ -39,6 +41,7 @@ func AlipayCommunityTeam(c *gin.Context) (interface{}, error) { | |||||
OrdId: utils.AnyToString(ord.Oid), | OrdId: utils.AnyToString(ord.Oid), | ||||
OrderType: md.CommunityTeam, | OrderType: md.CommunityTeam, | ||||
Uid: utils.IntToStr(ord.Uid), | Uid: utils.IntToStr(ord.Uid), | ||||
AgentId: ord.ParentUid, | |||||
} | } | ||||
r, err := PrepareAlipayCode(c, payParams) | r, err := PrepareAlipayCode(c, payParams) | ||||
if err != nil { | if err != nil { | ||||
@@ -62,6 +65,14 @@ func WxPayCommunityTeam(c *gin.Context) (interface{}, error) { | |||||
"pay_wx_api_key": SysCfgGet(c, "pay_wx_api_key"), | "pay_wx_api_key": SysCfgGet(c, "pay_wx_api_key"), | ||||
"uid": utils.IntToStr(ord.Uid), | "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) | 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) | r, err = CommPayData(c, params) | ||||
if err != nil { | if err != nil { | ||||
@@ -60,6 +60,57 @@ func BankStore(c *gin.Context) { | |||||
e.OutSuc(c, storeList, nil) | e.OutSuc(c, storeList, nil) | ||||
return | 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) { | func StoreLike(c *gin.Context) { | ||||
var arg map[string]string | var arg map[string]string | ||||
if err := c.ShouldBindJSON(&arg); err != nil { | if err := c.ShouldBindJSON(&arg); err != nil { | ||||
@@ -35,6 +35,8 @@ func StoreOrderList(c *gin.Context) { | |||||
var state = []string{"待付款", "待提货", "已完成", "已取消"} | var state = []string{"待付款", "待提货", "已完成", "已取消"} | ||||
list := make([]map[string]interface{}, 0) | list := make([]map[string]interface{}, 0) | ||||
if data != nil { | if data != nil { | ||||
scheme, host := ImageBucket(c) | |||||
now := time.Now().Unix() | now := time.Now().Unix() | ||||
for _, v := range *data { | for _, v := range *data { | ||||
store := db.GetStoreIdEg(MasterDb(c), utils.IntToStr(v.StoreUid)) | store := db.GetStoreIdEg(MasterDb(c), utils.IntToStr(v.StoreUid)) | ||||
@@ -71,7 +73,7 @@ func StoreOrderList(c *gin.Context) { | |||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
"title": v1.Title + skuStr, | "title": v1.Title + skuStr, | ||||
"num": utils.IntToStr(v1.Num), | "num": utils.IntToStr(v1.Num), | ||||
"img": v1.Img, | |||||
"img": ImageFormatWithBucket(scheme, host, v1.Img), | |||||
} | } | ||||
goodsInfo = append(goodsInfo, tmp) | goodsInfo = append(goodsInfo, tmp) | ||||
} | } | ||||
@@ -174,9 +176,11 @@ func StoreOrderDetail(c *gin.Context) { | |||||
goodsInfo := make([]map[string]string, 0) | goodsInfo := make([]map[string]string, 0) | ||||
info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | ||||
if info != nil { | if info != nil { | ||||
scheme, host := ImageBucket(c) | |||||
for _, v := range *info { | for _, v := range *info { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
"img": v.Img, | |||||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||||
"title": v.Title, | "title": v.Title, | ||||
"price": v.Price, | "price": v.Price, | ||||
"num": utils.IntToStr(v.Num), | "num": utils.IntToStr(v.Num), | ||||
@@ -3,14 +3,11 @@ module applet | |||||
go 1.15 | go 1.15 | ||||
require ( | 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_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_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 | 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/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | ||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 | 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/boombuler/barcode v1.0.1 | ||||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 | github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 | ||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible | github.com/dgrijalva/jwt-go v3.2.0+incompatible | ||||
@@ -25,53 +22,35 @@ require ( | |||||
github.com/iGoogle-ink/gopay v1.5.36 | github.com/iGoogle-ink/gopay v1.5.36 | ||||
github.com/jinzhu/copier v0.4.0 | github.com/jinzhu/copier v0.4.0 | ||||
github.com/makiuchi-d/gozxing v0.1.1 | 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/qiniu/api.v7/v7 v7.8.2 | ||||
github.com/robfig/cron/v3 v3.0.1 | github.com/robfig/cron/v3 v3.0.1 | ||||
github.com/shopspring/decimal v1.3.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/syyongx/php2go v0.9.8 | ||||
github.com/tidwall/gjson v1.17.0 | github.com/tidwall/gjson v1.17.0 | ||||
github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35 | |||||
go.uber.org/zap v1.23.0 | 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/natefinch/lumberjack.v2 v2.2.1 | ||||
gopkg.in/yaml.v2 v2.4.0 | gopkg.in/yaml.v2 v2.4.0 | ||||
xorm.io/xorm v1.3.2 | xorm.io/xorm v1.3.2 | ||||
) | ) | ||||
require ( | 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_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_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_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/andybalholm/cascadia v1.2.0 // indirect | ||||
github.com/antchfx/htmlquery v1.2.3 // indirect | github.com/antchfx/htmlquery v1.2.3 // indirect | ||||
github.com/antchfx/xmlquery v1.3.5 // indirect | github.com/antchfx/xmlquery v1.3.5 // indirect | ||||
github.com/antchfx/xpath v1.1.11 // 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/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/gookit/color v1.3.8 // indirect | ||||
github.com/gorilla/sessions v1.2.1 // 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/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/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/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 | golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect | ||||
google.golang.org/appengine v1.6.7 // indirect | google.golang.org/appengine v1.6.7 // indirect | ||||
google.golang.org/grpc v1.33.2 | google.golang.org/grpc v1.33.2 | ||||
@@ -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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= | ||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= | 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= | 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 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_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 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_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 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_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 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_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 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_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 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_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= | 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= | 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= | 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.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | ||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | 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/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/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/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/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/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/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff/go.mod h1:+RTT1BOk5P97fT2CiHkbFQwkK3mjsFAP6zCYV2aXtjw= | ||||
github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= | 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/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/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.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 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= | ||||
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= | 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/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 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/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= | 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.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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | 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 h1:RAV05c0xOkJ3dZGS0JFybxFKZ2WMLabgx3uXnd7rpGs= | ||||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= | 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= | 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/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= | ||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= | 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/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 h1:Qvgk8K+pKayd3QG/f7fB2LJm1ObYNA2iqYraipxm8jQ= | ||||
github.com/forgoer/openssl v1.2.1/go.mod h1:NMVFOzYeLVR7UiGTxsa+A21nrERTZ3Rv2JHDPcJpDyI= | github.com/forgoer/openssl v1.2.1/go.mod h1:NMVFOzYeLVR7UiGTxsa+A21nrERTZ3Rv2JHDPcJpDyI= | ||||
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= | 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 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= | ||||
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= | 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/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 h1:PoBXki+44XdJdlgDqDrY5nDVe3Wk7wDV/UCOuLP6fBI= | ||||
github.com/gin-contrib/sessions v0.0.3/go.mod h1:8C/J6cad3Il1mWYYgtw0w+hqasmpvy25mPkXdOgeB9I= | 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= | 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.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.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.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 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= | ||||
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= | 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= | 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.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= | ||||
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= | 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/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.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 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= | ||||
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= | 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= | 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/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.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.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 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= | ||||
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= | 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= | 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/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.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.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 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= | ||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | ||||
github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI= | 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/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/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-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/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-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/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.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.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.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 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= | ||||
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | 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= | 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 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | ||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | 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/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/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/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= | 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/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/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/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/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/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= | ||||
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= | 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.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.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= | ||||
github.com/openzipkin/zipkin-go v0.2.2/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/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/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= | 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 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= | ||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | 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.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 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= | ||||
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= | 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= | 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/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/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/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/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 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= | ||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | 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 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= | ||||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | 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/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/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 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= | ||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= | 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 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.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.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 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= | ||||
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= | 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= | 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/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= | ||||
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= | 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/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/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/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/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 v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= | ||||
github.com/xeipuuv/gojsonschema v1.1.0/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/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.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | 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= | 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-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-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.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.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 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= | ||||
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= | 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/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-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-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-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-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | 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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
golang.org/x/mod v0.4.2/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.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.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-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-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/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-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-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-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-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-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= | 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-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-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-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-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-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-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-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-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-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.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.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.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||||
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= | golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= | ||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | 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-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-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-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.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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= | 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-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-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-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-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-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-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-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-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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
golang.org/x/sys v0.6.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= | 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-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-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.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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | ||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | ||||
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= | 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.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.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
golang.org/x/text v0.3.4/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.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.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= | 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.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.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= | 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-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-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-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-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/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.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | ||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | 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.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-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-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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-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.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.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 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= | ||||
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | 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= | gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= | ||||