@@ -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 ( | |||
"applet/app/db/model" | |||
"applet/app/md" | |||
"applet/app/utils" | |||
"xorm.io/xorm" | |||
) | |||
func GetOrderByOid(eg *xorm.Engine, oid string) *model.CommunityTeamOrder { | |||
var data model.CommunityTeamOrder | |||
get, err := eg.Where("oid=?", oid).Get(&data) | |||
if get == false || err != nil { | |||
return nil | |||
} | |||
return &data | |||
} | |||
func GetOrderEg(eg *xorm.Engine, oid string) *model.CommunityTeamOrder { | |||
var data model.CommunityTeamOrder | |||
get, err := eg.Where("oid=?", oid).Get(&data) | |||
@@ -70,3 +79,58 @@ func GetOrderList(eg *xorm.Engine, arg map[string]string) *[]model.CommunityTeam | |||
} | |||
return &data | |||
} | |||
func GetStoreOrderList(eg *xorm.Engine, req md.StoreOrder, parent_uid int) (*[]model.CommunityTeamOrder, int64, error) { | |||
var data []model.CommunityTeamOrder | |||
sess := eg.Where("1=1") | |||
if req.Oid != "" { | |||
sess.And("oid like ?", "%"+req.Oid+"%") | |||
} | |||
if req.StoreName != "" { | |||
var store []model.CommunityTeamStore | |||
eg.Where("name like ?", "%"+req.StoreName+"%").Find(&store) | |||
ids := []int{-1} | |||
for _, v := range store { | |||
ids = append(ids, v.Id) | |||
} | |||
sess.In("store_uid", ids) | |||
} | |||
if req.Phone != "" { | |||
var user []model.User | |||
eg.Where("phone like ?", "%"+req.Phone+"%").Find(&user) | |||
ids := []int{-1} | |||
for _, v := range user { | |||
ids = append(ids, v.Uid) | |||
} | |||
sess.In("uid", ids) | |||
} | |||
if req.Nickname != "" { | |||
var user []model.User | |||
eg.Where("nickname like ?", "%"+req.Nickname+"%").Find(&user) | |||
ids := []int{-1} | |||
for _, v := range user { | |||
ids = append(ids, v.Uid) | |||
} | |||
sess.In("uid", ids) | |||
} | |||
if req.StoreUid != "" { | |||
sess.And("store_uid=?", req.StoreUid) | |||
} | |||
if parent_uid > 0 { | |||
sess.And("parent_uid=?", parent_uid) | |||
} | |||
if req.StartTime != "" { | |||
sess.And("create_at>=?", req.StartTime) | |||
} | |||
if req.EndTime != "" { | |||
sess.And("create_at<=?", req.EndTime) | |||
} | |||
size := utils.StrToInt(req.Size) | |||
start := (utils.StrToInt(req.P) - 1) * size | |||
count, err := sess.Limit(size, start).OrderBy("create_at desc,id desc").FindAndCount(&data) | |||
if err != nil { | |||
return nil, 0, err | |||
} | |||
return &data, count, nil | |||
} |
@@ -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" | |||
) | |||
func GetUserStore(eg *xorm.Engine, id int) *model.CommunityTeamStore { | |||
var data model.CommunityTeamStore | |||
get, err := eg.Where("uid=?", id).Get(&data) | |||
if get == false || err != nil { | |||
return nil | |||
} | |||
return &data | |||
} | |||
func GetStore(eg *xorm.Engine, arg map[string]string) []map[string]string { | |||
lng := utils.StrToFloat64(arg["lng"]) | |||
lat := utils.StrToFloat64(arg["lat"]) | |||
@@ -19,10 +28,14 @@ func GetStore(eg *xorm.Engine, arg map[string]string) []map[string]string { | |||
} else if arg["uid"] != "" { | |||
where += " and store_type=1 and uid=" + arg["parent_uid"] | |||
} else { | |||
where += " and store_type=" + arg["store_type"] | |||
if arg["store_type"] == "3" { | |||
where += " and store_type in(1,2)" | |||
} else { | |||
where += " and store_type=" + arg["store_type"] | |||
} | |||
} | |||
if arg["city"] != "" { | |||
where += " and address like '%" + arg["city"] + "%'" | |||
where += " and city like '%" + arg["city"] + "%'" | |||
} | |||
if arg["province_id"] != "" { | |||
where += " and province_id = '" + arg["province_id"] + "'" | |||
@@ -62,7 +75,11 @@ where %s %s` | |||
} else if arg["uid"] != "" { | |||
where += " and cts.store_type=1 and cts.uid=" + arg["parent_uid"] | |||
} else { | |||
where += " and cts.store_type=" + arg["store_type"] | |||
if arg["store_type"] == "3" { | |||
where += " and cts.store_type in(1,2)" | |||
} else { | |||
where += " and cts.store_type=" + arg["store_type"] | |||
} | |||
} | |||
if arg["city"] != "" { | |||
where += " and cts.city='" + arg["city"] + "'" | |||
@@ -2,6 +2,8 @@ package db | |||
import ( | |||
"applet/app/db/model" | |||
"applet/app/md" | |||
"applet/app/utils" | |||
"applet/app/utils/logx" | |||
"fmt" | |||
"strings" | |||
@@ -21,6 +23,13 @@ func UserisExistByUsernameAndPassword(Db *xorm.Engine, username, password, zone | |||
} | |||
return &user, nil | |||
} | |||
func UserThirdPartyFindByID(Db *xorm.Engine, id interface{}) (*model.UserThirdParty, error) { | |||
var m model.UserThirdParty | |||
if has, err := Db.Where("uid = ?", id).Get(&m); err != nil || has == false { | |||
return nil, logx.Warn(err) | |||
} | |||
return &m, nil | |||
} | |||
// UserisExistByMobile is exist | |||
func UserisExistByMobile(Db *xorm.Engine, n string) (bool, error) { | |||
@@ -393,3 +402,19 @@ func UserProfileCheckInviteCode(eg *xorm.Engine, uid int, inviteCode string) boo | |||
} | |||
return true | |||
} | |||
func GetUserList(eg *xorm.Engine, arg md.Store, uid int) (*[]md.StoreGroup, int64) { | |||
var data []md.StoreGroup | |||
sess := eg.Table("user").Where("user.is_marketer=? and community_team_store.parent_uid=?", 1, uid) | |||
size := utils.StrToInt(arg.Size) | |||
start := (utils.StrToInt(arg.P) - 1) * size | |||
if arg.Name != "" { | |||
sess.And("community_team_store.name like ?", "%"+arg.Name+"%") | |||
} | |||
sess.Join("LEFT", "community_team_store", "user.uid = community_team_store.uid") | |||
count, err := sess.Limit(size, start).Desc("user.create_at").FindAndCount(&data) | |||
if err != nil { | |||
return nil, count | |||
} | |||
return &data, count | |||
} |
@@ -5,37 +5,38 @@ import ( | |||
) | |||
type CommunityTeamOrder struct { | |||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||
Uid int `json:"uid" xorm:"default 0 INT(11)"` | |||
StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` | |||
StoreUid int `json:"store_uid" xorm:"default 0 comment('门店用户id') INT(11)"` | |||
ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` | |||
Num int `json:"num" xorm:"default 0 comment('') INT(11)"` | |||
CouponId int `json:"coupon_id" xorm:"default 0 comment('') INT(11)"` | |||
Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` | |||
Commission string `json:"commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` | |||
CreateAt time.Time `json:"create_at" xorm:"DATETIME"` | |||
UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` | |||
CancelAt time.Time `json:"cancel_at" xorm:"DATETIME"` | |||
BuyPhone string `json:"buy_phone" xorm:"VARCHAR(255)"` | |||
Phone string `json:"phone" xorm:"VARCHAR(255)"` | |||
BuyName string `json:"buy_name" xorm:"VARCHAR(255)"` | |||
State int `json:"state" xorm:"default 0 comment('0待付款 1已支付 2已提货') INT(11)"` | |||
PayAt time.Time `json:"pay_at" xorm:"comment('付款时间') DATETIME"` | |||
ConfirmAt time.Time `json:"confirm_at" xorm:"comment('提货时间') DATETIME"` | |||
Oid int64 `json:"oid" xorm:"default 0 comment('主单号') BIGINT(20)"` | |||
Code string `json:"code" xorm:"comment('提货码') VARCHAR(255)"` | |||
Type int `json:"type" xorm:"default 0 comment('0自提 1外卖') INT(1)"` | |||
PayMethod int `json:"pay_method" xorm:"default 0 comment('1余额 2支付宝 3微信') INT(11)"` | |||
PayId string `json:"pay_id" xorm:"comment('第三方的支付id') VARCHAR(255)"` | |||
Amount string `json:"amount" xorm:"default 0.00 comment('总金额') DECIMAL(20,2)"` | |||
Memo string `json:"memo" xorm:"comment('备注') VARCHAR(255)"` | |||
TakeTime time.Time `json:"take_time" xorm:"comment('预计提货时间') DATETIME"` | |||
MealNum int `json:"meal_num" xorm:"default 0 comment('餐具数量') INT(11)"` | |||
Coupon string `json:"coupon" xorm:"default 0.00 DECIMAL(10,2)"` | |||
Timer string `json:"timer" xorm:"comment('预计提货时间') VARCHAR(255)"` | |||
IsNow int `json:"is_now" xorm:"default 0 comment('是否立即提货') INT(1)"` | |||
StoreSettleAt int `json:"store_settle_at" xorm:"default 0 comment('') INT(11)"` | |||
SettleAt int `json:"settle_at" xorm:"default 0 comment('') INT(11)"` | |||
CommissionAt int `json:"commission_at" xorm:"default 0 comment('') INT(11)"` | |||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||
Uid int `json:"uid" xorm:"default 0 INT(11)"` | |||
StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` | |||
StoreUid int `json:"store_uid" xorm:"default 0 comment('门店用户id') INT(11)"` | |||
ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` | |||
Num int `json:"num" xorm:"default 0 comment('') INT(11)"` | |||
CouponId int `json:"coupon_id" xorm:"default 0 comment('') INT(11)"` | |||
Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` | |||
Commission string `json:"commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` | |||
AgentCommission string `json:"agent_commission" xorm:"default 0.00 comment('分佣(元)') DECIMAL(20,2)"` | |||
CreateAt time.Time `json:"create_at" xorm:"DATETIME"` | |||
UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` | |||
CancelAt time.Time `json:"cancel_at" xorm:"DATETIME"` | |||
BuyPhone string `json:"buy_phone" xorm:"VARCHAR(255)"` | |||
Phone string `json:"phone" xorm:"VARCHAR(255)"` | |||
BuyName string `json:"buy_name" xorm:"VARCHAR(255)"` | |||
State int `json:"state" xorm:"default 0 comment('0待付款 1已支付 2已提货') INT(11)"` | |||
PayAt time.Time `json:"pay_at" xorm:"comment('付款时间') DATETIME"` | |||
ConfirmAt time.Time `json:"confirm_at" xorm:"comment('提货时间') DATETIME"` | |||
Oid int64 `json:"oid" xorm:"default 0 comment('主单号') BIGINT(20)"` | |||
Code string `json:"code" xorm:"comment('提货码') VARCHAR(255)"` | |||
Type int `json:"type" xorm:"default 0 comment('0自提 1外卖') INT(1)"` | |||
PayMethod int `json:"pay_method" xorm:"default 0 comment('1余额 2支付宝 3微信') INT(11)"` | |||
PayId string `json:"pay_id" xorm:"comment('第三方的支付id') VARCHAR(255)"` | |||
Amount string `json:"amount" xorm:"default 0.00 comment('总金额') DECIMAL(20,2)"` | |||
Memo string `json:"memo" xorm:"comment('备注') VARCHAR(255)"` | |||
TakeTime time.Time `json:"take_time" xorm:"comment('预计提货时间') DATETIME"` | |||
MealNum int `json:"meal_num" xorm:"default 0 comment('餐具数量') INT(11)"` | |||
Coupon string `json:"coupon" xorm:"default 0.00 DECIMAL(10,2)"` | |||
Timer string `json:"timer" xorm:"comment('预计提货时间') VARCHAR(255)"` | |||
IsNow int `json:"is_now" xorm:"default 0 comment('是否立即提货') INT(1)"` | |||
StoreSettleAt int `json:"store_settle_at" xorm:"default 0 comment('') INT(11)"` | |||
SettleAt int `json:"settle_at" xorm:"default 0 comment('') INT(11)"` | |||
CommissionAt int `json:"commission_at" xorm:"default 0 comment('') INT(11)"` | |||
} |
@@ -5,20 +5,27 @@ import ( | |||
) | |||
type CommunityTeamStore struct { | |||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||
Uid int `json:"uid" xorm:"default 0 INT(11)"` | |||
StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` | |||
ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` | |||
Lat string `json:"lat" xorm:"default 0.000000 comment('纬度') DECIMAL(30,6)"` | |||
Lng string `json:"lng" xorm:"default 0.000000 comment('经度') DECIMAL(30,6)"` | |||
Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` | |||
Commission string `json:"commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` | |||
CreateAt time.Time `json:"create_at" xorm:"DATETIME"` | |||
UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` | |||
State int `json:"state" xorm:"default 0 comment('0非店长 1店长') INT(1)"` | |||
WorkState int `json:"work_state" xorm:"default 0 comment('0营业中 1休息中') INT(1)"` | |||
Name string `json:"name" xorm:"VARCHAR(255)"` | |||
Province string `json:"province" xorm:"comment('省级的名称') VARCHAR(255)"` | |||
City string `json:"city" xorm:"comment('市级的名称') VARCHAR(255)"` | |||
District string `json:"district" xorm:"comment('县,区名称') VARCHAR(255)"` | |||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||
Uid int `json:"uid" xorm:"default 0 INT(11)"` | |||
StoreType int `json:"store_type" xorm:"default 0 comment('0官方自营店 1加盟店 2连锁店') INT(11)"` | |||
ParentUid int `json:"parent_uid" xorm:"default 0 comment('上级代理') INT(11)"` | |||
Lat string `json:"lat" xorm:"default 0.000000 comment('纬度') DECIMAL(30,6)"` | |||
Lng string `json:"lng" xorm:"default 0.000000 comment('经度') DECIMAL(30,6)"` | |||
Address string `json:"address" xorm:"comment('详细地址') VARCHAR(255)"` | |||
Commission string `json:"commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` | |||
AgentCommission string `json:"agent_commission" xorm:"default 0.00 comment('分佣比例%') DECIMAL(20,2)"` | |||
CreateAt time.Time `json:"create_at" xorm:"DATETIME"` | |||
UpdateAt time.Time `json:"update_at" xorm:"DATETIME"` | |||
State int `json:"state" xorm:"default 0 comment('0非店长 1店长') INT(1)"` | |||
WorkState int `json:"work_state" xorm:"default 0 comment('0营业中 1休息中') INT(1)"` | |||
Name string `json:"name" xorm:"VARCHAR(255)"` | |||
Province string `json:"province" xorm:"comment('省级的名称') VARCHAR(255)"` | |||
City string `json:"city" xorm:"comment('市级的名称') VARCHAR(255)"` | |||
District string `json:"district" xorm:"comment('县,区名称') VARCHAR(255)"` | |||
Timer string `json:"timer" xorm:"comment('') VARCHAR(255)"` | |||
Phone string `json:"phone" xorm:"comment('') VARCHAR(255)"` | |||
Logo string `json:"logo" xorm:"comment('') VARCHAR(255)"` | |||
ProvinceId int `json:"province_id" xorm:"comment('省级的名称') INT(11)"` | |||
CityId int `json:"city_id" xorm:"comment('市级的名称') INT(11)"` | |||
DistrictId int `json:"district_id" xorm:"comment('县,区名称') INT(11)"` | |||
} |
@@ -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) { | |||
svc.BankStore(c) | |||
} | |||
func NewStoreCate(c *gin.Context) { | |||
var res = []map[string]string{ | |||
{"name": "全部店铺", "value": ""}, | |||
{"name": "附近店铺", "value": "1"}, | |||
{"name": "关注店铺", "value": "2"}, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func NewStore(c *gin.Context) { | |||
svc.NewStore(c) | |||
} | |||
func Store(c *gin.Context) { | |||
svc.Store(c) | |||
} | |||
@@ -40,6 +40,7 @@ type AliPayPayParams struct { | |||
OrdId string `json:"ord_id"` | |||
Uid string `json:"uid"` | |||
Phone string `json:"phone"` | |||
AgentId int `json:"agent_id"` | |||
} | |||
type PayData struct { | |||
PayAppCertSn string `json:"pay_app_cert_sn"` | |||
@@ -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 | |||
import ( | |||
agentHdl "applet/app/agent/hdl" | |||
"applet/app/cfg" | |||
"applet/app/hdl" | |||
"applet/app/mw" | |||
_ "applet/docs" | |||
"github.com/gin-gonic/gin" | |||
swaggerFiles "github.com/swaggo/files" | |||
ginSwagger "github.com/swaggo/gin-swagger" | |||
) | |||
// 初始化路由 | |||
@@ -19,6 +22,10 @@ func Init() *gin.Engine { | |||
gin.SetMode(mode) | |||
//创建一个新的启动器 | |||
r := gin.New() | |||
r.GET("/api/swagger/*any", func(c *gin.Context) { | |||
//r.Use(mw.SwagAuth()) | |||
ginSwagger.DisablingWrapHandler(swaggerFiles.Handler, "SWAGGER")(c) | |||
}) | |||
r.Use(mw.ChangeHeader) | |||
// 是否打印访问日志, 在非正式环境都打印 | |||
@@ -37,8 +44,39 @@ func Init() *gin.Engine { | |||
c.JSON(405, gin.H{"code": 405, "msg": "method not allowed", "data": []struct{}{}}) | |||
}) | |||
r.Use(mw.Cors) | |||
routeCommunityTeamAgent(r.Group("/api/v1/communityTeam/agent")) | |||
routeCommunityTeamOwnStore(r.Group("/api/v1/communityTeam/ownStore")) | |||
routeCommunityTeam(r.Group("/api/v1/communityTeam")) | |||
return r | |||
} | |||
func routeCommunityTeamAgent(r *gin.RouterGroup) { | |||
r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 | |||
r.POST("/login", agentHdl.Login) | |||
r.Use(mw.AuthJWT) | |||
r.GET("/user", agentHdl.User) | |||
r.POST("/service/file/upload", agentHdl.ServiceFileUpload) | |||
r.GET("/wechat/base", agentHdl.WechatBase) | |||
r.POST("/wechat/base/set", agentHdl.WechatBaseSet) | |||
r.GET("/alipay/base", agentHdl.AlipayBase) | |||
r.POST("/alipay/base/set", agentHdl.AlipayBaseSet) | |||
r.POST("/store/list", agentHdl.UserStoreList) | |||
r.POST("/store/save", agentHdl.UserStoreSave) | |||
r.POST("/store/order", agentHdl.UserStoreOrder) | |||
r.POST("/store/order/detail", agentHdl.UserStoreOrderDetail) | |||
r.POST("/store/total", agentHdl.UserStoreTotal) | |||
r.POST("/goods/list", agentHdl.Goods) | |||
r.POST("/goods/save", agentHdl.GoodsSave) | |||
r.POST("/goods/detail", agentHdl.GoodsDetail) | |||
r.POST("/goods/del", agentHdl.GoodsDel) | |||
r.POST("/goods/cate/list", agentHdl.GoodsCate) | |||
r.POST("/goods/cate/save", agentHdl.GoodsCateSave) | |||
r.POST("/goods/cate/show", agentHdl.GoodsCateShow) | |||
r.POST("/goods/cate/del", agentHdl.GoodsCateDel) | |||
} | |||
func routeCommunityTeamOwnStore(r *gin.RouterGroup) { | |||
} | |||
func routeCommunityTeam(r *gin.RouterGroup) { | |||
r.Use(mw.DB) // 下面接口再根据mid 获取数据库名 | |||
@@ -48,6 +86,8 @@ func routeCommunityTeam(r *gin.RouterGroup) { | |||
r.POST("/city", hdl.City) | |||
r.GET("/bank/store/cate", hdl.BankStoreCate) | |||
r.POST("/bank/store/list", hdl.BankStore) | |||
r.GET("/new/store/cate", hdl.NewStoreCate) | |||
r.POST("/new/store/list", hdl.NewStore) | |||
r.POST("/store", hdl.Store) | |||
r.POST("/store/like/list", hdl.StoreLike) | |||
r.GET("/goods/cate", hdl.Cate) | |||
@@ -8,9 +8,11 @@ import ( | |||
"applet/app/utils" | |||
"applet/app/utils/logx" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git/pay" | |||
"errors" | |||
"fmt" | |||
"github.com/gin-gonic/gin" | |||
"github.com/iGoogle-ink/gopay/alipay" | |||
"github.com/tidwall/gjson" | |||
) | |||
// 支付宝回调处理 | |||
@@ -67,10 +69,29 @@ func CommAlipayConfig(c *gin.Context, p *md.AliPayPayParams) (map[string]string, | |||
"rsa": SysCfgGet(c, "pay_ali_key_len_type"), | |||
"pkcs": SysCfgGet(c, "pay_ali_key_format_type"), | |||
} | |||
payAliNewPrivateKey := SysCfgGet(c, "pay_ali_new_private_key") | |||
payAliNewAppId := SysCfgGet(c, "pay_ali_new_app_id") | |||
payAppCertSn := SysCfgGet(c, "pay_app_cert_sn") | |||
payAlipayrsaPublicKey := SysCfgGet(c, "pay_alipayrsa_public_key") | |||
if p.AgentId > 0 { | |||
user, _ := db.UserThirdPartyFindByID(MasterDb(c), p.AgentId) | |||
if user.AlipayPayInfo == "" { | |||
return nil, errors.New("支付失败") | |||
} | |||
req["pay_ali_use_type"] = gjson.Get(user.AlipayPayInfo, "pay_ali_use_type").String() | |||
req["private_key"] = gjson.Get(user.AlipayPayInfo, "pay_ali_private_key").String() | |||
req["app_id"] = gjson.Get(user.AlipayPayInfo, "pay_ali_app_id").String() | |||
req["rsa"] = gjson.Get(user.AlipayPayInfo, "pay_ali_key_len_type").String() | |||
req["pkcs"] = gjson.Get(user.AlipayPayInfo, "pay_ali_key_format_type").String() | |||
payAliNewPrivateKey = gjson.Get(user.AlipayPayInfo, "pay_ali_new_private_key").String() | |||
payAliNewAppId = gjson.Get(user.AlipayPayInfo, "pay_ali_new_app_id").String() | |||
payAppCertSn = gjson.Get(user.AlipayPayInfo, "pay_app_cert_sn").String() | |||
payAlipayrsaPublicKey = gjson.Get(user.AlipayPayInfo, "pay_alipayrsa_public_key").String() | |||
} | |||
if req["pay_ali_use_type"] == "1" { | |||
req["private_key"] = SysCfgGet(c, "pay_ali_new_private_key") | |||
req["app_id"] = SysCfgGet(c, "pay_ali_new_app_id") | |||
appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + SysCfgGet(c, "pay_app_cert_sn")) | |||
req["private_key"] = payAliNewPrivateKey | |||
req["app_id"] = payAliNewAppId | |||
appCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + payAppCertSn) | |||
if err != nil { | |||
fmt.Println(err) | |||
return nil, err | |||
@@ -80,7 +101,7 @@ func CommAlipayConfig(c *gin.Context, p *md.AliPayPayParams) (map[string]string, | |||
return nil, err | |||
} | |||
req["pay_app_cert_sn"] = appCertSN | |||
aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + SysCfgGet(c, "pay_alipayrsa_public_key")) | |||
aliPayPublicCertSN, err := alipay.GetCertSN(cfg.WxappletFilepath.URL + "/" + payAlipayrsaPublicKey) | |||
if err != nil { | |||
fmt.Println(err) | |||
return nil, err | |||
@@ -2,8 +2,14 @@ package svc | |||
import ( | |||
"applet/app/db" | |||
"applet/app/db/model" | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/utils" | |||
"applet/app/utils/cache" | |||
"applet/app/utils/logx" | |||
"errors" | |||
"fmt" | |||
"github.com/gin-gonic/gin" | |||
"strings" | |||
) | |||
@@ -48,3 +54,66 @@ DEFALUT: | |||
user.Level = ul | |||
return user, nil | |||
} | |||
func FastLoginUserExist(c *gin.Context, r *md.LoginResponse, requestBody *md.FastLoginRequestBody) error { | |||
// 每次登录都会刷新token | |||
var user = &model.User{} | |||
var err error | |||
if requestBody.Mobile != "" { | |||
user, err = db.UserFindByMobileAll(db.DBs[c.GetString("mid")], requestBody.Mobile) | |||
} | |||
if user == nil || user.Uid == 0 { | |||
return e.NewErr(400, "用户不存在") | |||
} | |||
if err != nil { | |||
return err | |||
} | |||
if user.DeleteAt == 1 { | |||
return e.NewErr(403053, "账号被删除,如有疑问请联系客服") | |||
} | |||
//判断用户是否虚拟账号 虚拟账号不能用手机号登陆 | |||
if user.IsFake == 1 { | |||
return e.NewErr(400000, "该手机号无法登陆,请联系客服!") | |||
} | |||
//0未激活,1正常,2冻结 | |||
switch user.State { | |||
case 0: | |||
return e.NewErr(403028, "no active") | |||
case 2: | |||
return e.NewErr(403029, "您的账号已被冻结") | |||
} | |||
// 生成jwt | |||
appName := db.SysCfgGet(c, "app_name") | |||
profile, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], user.Uid) | |||
if err != nil || profile == nil { | |||
_ = logx.Warn(err) | |||
return e.NewErr(400000, "数据不完整") | |||
} | |||
token := CheckUserToken(c, user.Uid, user.Username, user.Phone, appName) | |||
r.Token = token | |||
r.UserID = utils.IntToStr(user.Uid) | |||
r.UserName = requestBody.Mobile | |||
r.Phone = requestBody.Mobile | |||
// 更新 | |||
profile.ArkidToken = token | |||
_, err = db.UserProfileUpdate(db.DBs[c.GetString("mid")], user.Uid, profile) | |||
if err != nil { | |||
return logx.Warn(err) | |||
} | |||
// 写入缓存 | |||
key := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) | |||
_, err = cache.SetEx(key, token, 39528000) // 半年 | |||
if err != nil { | |||
return logx.Warn(err) | |||
} | |||
return nil | |||
} | |||
func CheckUserToken(c *gin.Context, uid int, username, phone, appName string) string { | |||
profile, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], uid) | |||
if err != nil { | |||
e.OutErr(c, e.ERR_DB_ORM, err) | |||
return "" | |||
} | |||
token := profile.ArkidToken | |||
return token | |||
} |
@@ -16,7 +16,10 @@ func Goods(c *gin.Context) { | |||
} | |||
goods := db.GetGoods(MasterDb(c), arg) | |||
goodsList := make([]map[string]interface{}, 0) | |||
if goods != nil { | |||
scheme, host := ImageBucket(c) | |||
for _, v := range *goods { | |||
speImageList := make([]string, 0) | |||
if v.IsSpeImageOn == 1 { | |||
@@ -25,7 +28,7 @@ func Goods(c *gin.Context) { | |||
tmp := map[string]interface{}{ | |||
"id": utils.IntToStr(v.Id), | |||
"title": v.Title, | |||
"img": v.Img, | |||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||
"info": v.Info, | |||
"price": v.Price, | |||
"stock": utils.IntToStr(v.Stock), | |||
@@ -39,6 +39,8 @@ func OrderList(c *gin.Context) { | |||
data := db.GetOrderList(MasterDb(c), arg) | |||
var state = []string{"待付款", "待提货", "已完成", "已取消"} | |||
list := make([]map[string]interface{}, 0) | |||
scheme, host := ImageBucket(c) | |||
if data != nil { | |||
now := time.Now().Unix() | |||
for _, v := range *data { | |||
@@ -48,7 +50,7 @@ func OrderList(c *gin.Context) { | |||
if info != nil { | |||
for _, v1 := range *info { | |||
tmp := map[string]string{ | |||
"img": v1.Img, | |||
"img": ImageFormatWithBucket(scheme, host, v1.Img), | |||
"title": v1.Title, | |||
"sku_str": "", | |||
} | |||
@@ -165,9 +167,11 @@ func OrderDetail(c *gin.Context) { | |||
goodsInfo := make([]map[string]string, 0) | |||
info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | |||
if info != nil { | |||
scheme, host := ImageBucket(c) | |||
for _, v := range *info { | |||
tmp := map[string]string{ | |||
"img": v.Img, | |||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||
"title": v.Title, | |||
"price": v.Price, | |||
"num": utils.IntToStr(v.Num), | |||
@@ -497,6 +501,11 @@ func OrderCreate(c *gin.Context) { | |||
Amount: totalPrice, | |||
MealNum: utils.StrToInt(arg.MealNum), | |||
} | |||
if store.ParentUid > 0 { //代理下门店 | |||
order.StoreType = 2 | |||
order.ParentUid = store.ParentUid | |||
order.AgentCommission = utils.Float64ToStr(utils.FloatFormat(utils.AnyToFloat64(totalPrice)*(utils.AnyToFloat64(store.AgentCommission)/100), 2)) | |||
} | |||
if utils.StrToFloat64(coupon) > 0 { | |||
order.CouponId = utils.StrToInt(arg.CouponId) | |||
} | |||
@@ -6,9 +6,11 @@ import ( | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/utils" | |||
"errors" | |||
"fmt" | |||
"github.com/gin-gonic/gin" | |||
"github.com/shopspring/decimal" | |||
"github.com/tidwall/gjson" | |||
"math" | |||
"math/rand" | |||
"time" | |||
@@ -39,6 +41,7 @@ func AlipayCommunityTeam(c *gin.Context) (interface{}, error) { | |||
OrdId: utils.AnyToString(ord.Oid), | |||
OrderType: md.CommunityTeam, | |||
Uid: utils.IntToStr(ord.Uid), | |||
AgentId: ord.ParentUid, | |||
} | |||
r, err := PrepareAlipayCode(c, payParams) | |||
if err != nil { | |||
@@ -62,6 +65,14 @@ func WxPayCommunityTeam(c *gin.Context) (interface{}, error) { | |||
"pay_wx_api_key": SysCfgGet(c, "pay_wx_api_key"), | |||
"uid": utils.IntToStr(ord.Uid), | |||
} | |||
if ord.ParentUid > 0 { | |||
user, _ := db.UserThirdPartyFindByID(MasterDb(c), ord.ParentUid) | |||
if user.WechatPayInfo == "" { | |||
return nil, errors.New("支付失败") | |||
} | |||
params["pay_wx_mch_id"] = gjson.Get(user.WechatPayInfo, "pay_wx_mch_id").String() | |||
params["pay_wx_api_key"] = gjson.Get(user.WechatPayInfo, "pay_wx_api_key").String() | |||
} | |||
params["notify_url"] = fmt.Sprintf(md.CALLBACK_URL, c.Request.Host, c.GetString("mid"), params["order_type"], md.WX_PAY) | |||
r, err = CommPayData(c, params) | |||
if err != nil { | |||
@@ -60,6 +60,57 @@ func BankStore(c *gin.Context) { | |||
e.OutSuc(c, storeList, nil) | |||
return | |||
} | |||
func NewStore(c *gin.Context) { | |||
var arg map[string]string | |||
if err := c.ShouldBindJSON(&arg); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
arg["store_type"] = "3" | |||
user, _ := GetDefaultUser(c, c.GetHeader("Authorization")) | |||
var store = make([]map[string]string, 0) | |||
if arg["cid"] == "2" { | |||
store = db.GetStoreLike(MasterDb(c), arg) | |||
} else { | |||
store = db.GetStore(MasterDb(c), arg) | |||
} | |||
storeList := make([]map[string]interface{}, 0) | |||
for _, v := range store { | |||
km := v["km"] | |||
if utils.StrToFloat64(v["km"]) < 1 { | |||
v["km"] = utils.IntToStr(int(utils.StrToFloat64(v["km"])*1000)) + "m" | |||
} else { | |||
v["km"] = GetCommissionPrec(c, v["km"], "2", "1") | |||
v["km"] += "km" | |||
} | |||
if utils.StrToFloat64(km) <= 0 || utils.StrToFloat64(v["lat"]) == 0 || utils.StrToFloat64(v["lng"]) == 0 { | |||
v["km"] = "-" | |||
} | |||
tmp := map[string]interface{}{ | |||
"lat": v["lat"], | |||
"lng": v["lng"], | |||
"address": v["address"], | |||
"name": v["name"], | |||
"id": v["id"], | |||
"km": v["km"], | |||
"time_str": v["timer"], | |||
"uid": v["uid"], | |||
"phone": v["phone"], | |||
"logo": v["logo"], | |||
"is_like": "0", | |||
"fan": "", | |||
} | |||
if user != nil { | |||
count, _ := MasterDb(c).Where("uid=? and store_id=?", user.Info.Uid, v["id"]).Count(&model.CommunityTeamStoreLike{}) | |||
if count > 0 { | |||
tmp["is_like"] = "1" | |||
} | |||
} | |||
storeList = append(storeList, tmp) | |||
} | |||
e.OutSuc(c, storeList, nil) | |||
return | |||
} | |||
func StoreLike(c *gin.Context) { | |||
var arg map[string]string | |||
if err := c.ShouldBindJSON(&arg); err != nil { | |||
@@ -35,6 +35,8 @@ func StoreOrderList(c *gin.Context) { | |||
var state = []string{"待付款", "待提货", "已完成", "已取消"} | |||
list := make([]map[string]interface{}, 0) | |||
if data != nil { | |||
scheme, host := ImageBucket(c) | |||
now := time.Now().Unix() | |||
for _, v := range *data { | |||
store := db.GetStoreIdEg(MasterDb(c), utils.IntToStr(v.StoreUid)) | |||
@@ -71,7 +73,7 @@ func StoreOrderList(c *gin.Context) { | |||
tmp := map[string]string{ | |||
"title": v1.Title + skuStr, | |||
"num": utils.IntToStr(v1.Num), | |||
"img": v1.Img, | |||
"img": ImageFormatWithBucket(scheme, host, v1.Img), | |||
} | |||
goodsInfo = append(goodsInfo, tmp) | |||
} | |||
@@ -174,9 +176,11 @@ func StoreOrderDetail(c *gin.Context) { | |||
goodsInfo := make([]map[string]string, 0) | |||
info := db.GetOrderInfoAllEg(MasterDb(c), utils.Int64ToStr(data.Oid)) | |||
if info != nil { | |||
scheme, host := ImageBucket(c) | |||
for _, v := range *info { | |||
tmp := map[string]string{ | |||
"img": v.Img, | |||
"img": ImageFormatWithBucket(scheme, host, v.Img), | |||
"title": v.Title, | |||
"price": v.Price, | |||
"num": utils.IntToStr(v.Num), | |||
@@ -3,14 +3,11 @@ module applet | |||
go 1.15 | |||
require ( | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2 | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2 | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0 | |||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | |||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 | |||
github.com/bitly/go-simplejson v0.5.0 | |||
github.com/boombuler/barcode v1.0.1 | |||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 | |||
github.com/dgrijalva/jwt-go v3.2.0+incompatible | |||
@@ -25,53 +22,35 @@ require ( | |||
github.com/iGoogle-ink/gopay v1.5.36 | |||
github.com/jinzhu/copier v0.4.0 | |||
github.com/makiuchi-d/gozxing v0.1.1 | |||
github.com/mvdan/xurls v1.1.0 | |||
github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8 | |||
github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd | |||
github.com/pkg/errors v0.9.1 | |||
github.com/qiniu/api.v7/v7 v7.8.2 | |||
github.com/robfig/cron/v3 v3.0.1 | |||
github.com/shopspring/decimal v1.3.1 | |||
github.com/swaggo/swag v1.7.0 | |||
github.com/swaggo/swag v1.8.12 | |||
github.com/syyongx/php2go v0.9.8 | |||
github.com/tidwall/gjson v1.17.0 | |||
github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35 | |||
go.uber.org/zap v1.23.0 | |||
golang.org/x/sync v0.2.0 | |||
golang.org/x/sync v0.2.0 // indirect | |||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 | |||
gopkg.in/yaml.v2 v2.4.0 | |||
xorm.io/xorm v1.3.2 | |||
) | |||
require ( | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0 | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e | |||
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395 | |||
github.com/andybalholm/cascadia v1.2.0 // indirect | |||
github.com/antchfx/htmlquery v1.2.3 // indirect | |||
github.com/antchfx/xmlquery v1.3.5 // indirect | |||
github.com/antchfx/xpath v1.1.11 // indirect | |||
github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11 | |||
github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a | |||
github.com/dchest/captcha v1.0.0 | |||
github.com/fogleman/gg v1.3.0 | |||
github.com/go-openapi/spec v0.20.3 // indirect | |||
github.com/go-openapi/swag v0.19.15 // indirect | |||
github.com/gobwas/glob v0.2.3 // indirect | |||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 | |||
github.com/gookit/color v1.3.8 // indirect | |||
github.com/gorilla/sessions v1.2.1 // indirect | |||
github.com/json-iterator/go v1.1.12 | |||
github.com/kennygrant/sanitize v1.2.4 // indirect | |||
github.com/olivere/elastic/v7 v7.0.32 | |||
github.com/rakyll/statik v0.1.7 // indirect | |||
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect | |||
github.com/swaggo/files v1.0.1 | |||
github.com/swaggo/gin-swagger v1.6.0 | |||
github.com/temoto/robotstxt v1.1.2 // indirect | |||
github.com/wenlng/go-captcha v1.2.5 | |||
golang.org/x/image v0.0.0-20220902085622-e7cb96979f69 | |||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect | |||
google.golang.org/appengine v1.6.7 // indirect | |||
google.golang.org/grpc v1.33.2 | |||
@@ -13,30 +13,18 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 | |||
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= | |||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= | |||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c h1:7oW6off5WIplX2hd+BDO/bS/iU/WIQPHBh6uUHjJspU= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git v1.1.2-0.20240702071747-c6b3b336ad1c/go.mod h1:3dgECgbJufgRYy8O714HGkrkYshaIAv30ShFBsSaCfs= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2 h1:DHsLo+xOvr72LwJOKEV0fT19zEKqbJtAGYv5kDLUZrc= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_coupon.git v1.1.2/go.mod h1:yr9zroGixMbJ5gm+lVLVcUAZ4mRIaFlWHtBBTLJm5z0= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0 h1:OYaoKdrpK0obnK/OMJ0Bg8DyU1Uliq35xPljaRGvDAY= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.0/go.mod h1:Yc/SFCnyo6Ninzr+BrcXdkwoEEthMGSgWG+J0Oo8HtE= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d h1:w87z133GUwiw6l3eSvoYt52pPR3lLiX9E08flRVcecE= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230113125201-a16543b7da1d/go.mod h1:aHatysIWFJ4DzLRSDljlbMObA61wYivI9ab9sygiA8s= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2 h1:LUWlvBgmzZfGqvH4VGEWk+JhXHlI+MFmLNl9uX7eh28= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_jg_push.git v1.0.2/go.mod h1:IEw6A61Kp2ctoeKIQMFVM/cFq9PUDAzJMb5lVXiEY2Y= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 h1:dqvWJqlJi0WXCwTxbWPLvSOsKPjP+iEDBVgLcAl9nOE= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5/go.mod h1:TTcCnFn/LhBGapnutpezlW+GXkLRNPMWkziOoCsXQqY= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b h1:qJ3n/N84ByxpbHXsMB3319cvffLwa3Gcnx7WMqNvpX0= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git v1.0.10-0.20240710030252-6d4151ab994b/go.mod h1:8lqoRm7PkDuPV9shACAu3B+LPplV99cgOxM91Z+pa5k= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240118152737-08e0d2709655/go.mod h1:Q/C2vLPgAWDPyKyll2sFRWdJsw26nZknL+mjGGB1uuw= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c h1:wKd5mCUszsNwe+qpUyxPfjsZ+CquyKaHad9Ci3pfeMo= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git v1.9.10-0.20240823083437-5a9b1907d83c/go.mod h1:LXKefjdbY6D+P1jALLM87wDej8N5D+sLub4YfrnU7TA= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0 h1:Y2PHy4RxhpPPy6hrSsDnzK+mEbY76If3UJGZIk6cmg4= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_pay.git v1.6.2-0.20240105031805-d6d481cf00c0/go.mod h1:0eObND+Vum1rxf8Ro5ai16phWdWGZ3lkKDXqO/v082s= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240826023213-74e7e23bee7c h1:yfSb2PgHMmNlvdQCkdFFZF9i5yrQNMGgFARs9VzPrf0= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240826023213-74e7e23bee7c/go.mod h1:WEwF5BOzArem2a/EMJqoZ6gxb0DIEADruUROS4s5bNA= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e h1:9uiwLba7UGSyox/83pJkho1akyDKJf9bRb/fTcPmAaE= | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20240830072333-a1980ffb256e/go.mod h1:WEwF5BOzArem2a/EMJqoZ6gxb0DIEADruUROS4s5bNA= | |||
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395 h1:xM3v+GLMYQMYeyp48SzJOXvylsbNRbdlvWRMXViWwFI= | |||
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20240816014008-a236ebf42395/go.mod h1:nT2x13YFgrS3tS1fDyUR6q/GNIK+hPw7bdzZXz99SM0= | |||
contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= | |||
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= | |||
@@ -130,11 +118,9 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 | |||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | |||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | |||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= | |||
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= | |||
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= | |||
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= | |||
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= | |||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= | |||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= | |||
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff/go.mod h1:+RTT1BOk5P97fT2CiHkbFQwkK3mjsFAP6zCYV2aXtjw= | |||
github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= | |||
@@ -144,13 +130,10 @@ github.com/bradfitz/gomemcache v0.0.0-20190329173943-551aad21a668/go.mod h1:H0wQ | |||
github.com/bradleypeabody/gorilla-sessions-memcache v0.0.0-20181103040241-659414f458e1/go.mod h1:dkChI7Tbtx7H1Tj7TqGSZMOeGpMP5gLHtjroHd4agiI= | |||
github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= | |||
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= | |||
github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= | |||
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= | |||
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= | |||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= | |||
github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11 h1:smFM+R9NconJ5FHiMyQsq/fIjtYE0jxVJwX8ZxAmWF0= | |||
github.com/cc14514/go-geoip2 v0.0.0-20190105051856-0a1854480a11/go.mod h1:gC4wJD6T+unJtW078G4ugNE2UNbk4/oYwQKteOaybQE= | |||
github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a h1:tc57+CsbpTjJLvcp2AyVAvaYmS0FFxSaRCQeUa4jcHg= | |||
github.com/cc14514/go-geoip2-db v0.0.0-20190106063142-7b6408a9812a/go.mod h1:MBxCt6+ltWZRodx2FgXuQm7LQweWyPofmXsuhX3D6Zo= | |||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= | |||
github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= | |||
github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | |||
@@ -199,8 +182,6 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ | |||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | |||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | |||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | |||
github.com/dchest/captcha v1.0.0 h1:vw+bm/qMFvTgcjQlYVTuQBJkarm5R0YSsDKhm1HZI2o= | |||
github.com/dchest/captcha v1.0.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo= | |||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5 h1:RAV05c0xOkJ3dZGS0JFybxFKZ2WMLabgx3uXnd7rpGs= | |||
github.com/dchest/uniuri v0.0.0-20200228104902-7aecb25e1fe5/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= | |||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= | |||
@@ -237,8 +218,6 @@ github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSY | |||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= | |||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= | |||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= | |||
github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= | |||
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= | |||
github.com/forgoer/openssl v1.2.1 h1:Qvgk8K+pKayd3QG/f7fB2LJm1ObYNA2iqYraipxm8jQ= | |||
github.com/forgoer/openssl v1.2.1/go.mod h1:NMVFOzYeLVR7UiGTxsa+A21nrERTZ3Rv2JHDPcJpDyI= | |||
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= | |||
@@ -253,6 +232,8 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ | |||
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= | |||
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= | |||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | |||
github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= | |||
github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= | |||
github.com/gin-contrib/sessions v0.0.3 h1:PoBXki+44XdJdlgDqDrY5nDVe3Wk7wDV/UCOuLP6fBI= | |||
github.com/gin-contrib/sessions v0.0.3/go.mod h1:8C/J6cad3Il1mWYYgtw0w+hqasmpvy25mPkXdOgeB9I= | |||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= | |||
@@ -260,6 +241,8 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm | |||
github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= | |||
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= | |||
github.com/gin-gonic/gin v1.8.0/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= | |||
github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= | |||
github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k= | |||
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= | |||
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= | |||
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= | |||
@@ -288,15 +271,11 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre | |||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= | |||
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= | |||
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= | |||
github.com/go-openapi/jsonreference v0.19.4/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= | |||
github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= | |||
github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= | |||
github.com/go-openapi/spec v0.19.14/go.mod h1:gwrgJS15eCUgjLpMjBJmbZezCsw88LmgeEip0M63doA= | |||
github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= | |||
github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= | |||
github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= | |||
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= | |||
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= | |||
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= | |||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= | |||
github.com/go-openapi/swag v0.19.11/go.mod h1:Uc0gKkdR+ojzsEpjh39QChyu92vPgIr72POcgHMAgSY= | |||
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= | |||
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= | |||
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= | |||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= | |||
@@ -314,6 +293,7 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn | |||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= | |||
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= | |||
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= | |||
github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= | |||
github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= | |||
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= | |||
github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= | |||
@@ -333,6 +313,7 @@ github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm | |||
github.com/gobwas/ws v1.0.3/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= | |||
github.com/goccy/go-json v0.8.1/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | |||
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | |||
github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | |||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= | |||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | |||
github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI= | |||
@@ -348,8 +329,6 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV | |||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= | |||
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= | |||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= | |||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= | |||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= | |||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | |||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | |||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | |||
@@ -635,6 +614,7 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd | |||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= | |||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= | |||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | |||
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= | |||
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= | |||
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | |||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= | |||
@@ -668,7 +648,6 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb | |||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | |||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | |||
github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= | |||
github.com/mvdan/xurls v1.1.0 h1:OpuDelGQ1R1ueQ6sSryzi6P+1RtBpfQHM8fJwlE45ww= | |||
github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= | |||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | |||
github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= | |||
@@ -683,7 +662,6 @@ github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uY | |||
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= | |||
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= | |||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= | |||
github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8 h1:9hvJ/9GQssABrUYNOW1Q6X9/7uY6+Srj9YYYQZVC0AE= | |||
github.com/nilorg/sdk v0.0.0-20221104025912-4b6ccb7004d8/go.mod h1:X1swpPdqguAZaBDoEPyEWHSsJii0YQ1o+3piMv6W3JU= | |||
github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= | |||
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= | |||
@@ -734,8 +712,6 @@ github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTm | |||
github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= | |||
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= | |||
github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= | |||
github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd h1:taV1toAfzAdRwNWpIB7JMdgX2xL+JT3Rq8GXzyPK1Is= | |||
github.com/opesun/goquery v0.0.0-20160908163916-0d77e43213cd/go.mod h1:XIY7IuxoZH2deZdjIgzLqXlYkOHiwNC+hL1m3vS2A8g= | |||
github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= | |||
github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= | |||
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= | |||
@@ -746,6 +722,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP | |||
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= | |||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | |||
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= | |||
github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= | |||
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= | |||
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= | |||
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= | |||
@@ -795,8 +772,6 @@ github.com/qiniu/api.v7/v7 v7.8.2 h1:f08kI0MmsJNzK4sUS8bG3HDH67ktwd/ji23Gkiy2ra4 | |||
github.com/qiniu/api.v7/v7 v7.8.2/go.mod h1:FPsIqxh1Ym3X01sANE5ZwXfLZSWoCUp5+jNI8cLo3l0= | |||
github.com/quasoft/memstore v0.0.0-20180925164028-84a050167438/go.mod h1:wTPjTepVu7uJBYgZ0SdWHQlIas582j6cn2jgk4DDdlg= | |||
github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= | |||
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= | |||
github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= | |||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= | |||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= | |||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= | |||
@@ -900,8 +875,12 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o | |||
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= | |||
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | |||
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= | |||
github.com/swaggo/swag v1.7.0 h1:5bCA/MTLQoIqDXXyHfOpMeDvL9j68OY/udlK4pQoo4E= | |||
github.com/swaggo/swag v1.7.0/go.mod h1:BdPIL73gvS9NBsdi7M1JOxLvlbfvNRaBP8m6WT6Aajo= | |||
github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= | |||
github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= | |||
github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= | |||
github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= | |||
github.com/swaggo/swag v1.8.12 h1:pctzkNPu0AlQP2royqX3apjKCQonAnf7KGoxeO4y64w= | |||
github.com/swaggo/swag v1.8.12/go.mod h1:lNfm6Gg+oAq3zRJQNEMBE66LIJKM44mxFqhEEgy2its= | |||
github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= | |||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= | |||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= | |||
@@ -934,6 +913,7 @@ github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= | |||
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= | |||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= | |||
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= | |||
github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= | |||
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= | |||
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= | |||
github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | |||
@@ -946,16 +926,12 @@ github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+ | |||
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= | |||
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= | |||
github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= | |||
github.com/wenlng/go-captcha v1.2.5 h1:zA0/fovEl9oAhSg+KwHBwmq99GeeAXknWx6wYKjhjTg= | |||
github.com/wenlng/go-captcha v1.2.5/go.mod h1:QgPgpEURSa37gF3GtojNoNRwbMwuatSBx5NXrzASOb0= | |||
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= | |||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= | |||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= | |||
github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= | |||
github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= | |||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | |||
github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35 h1:CzJpvB76GmmRNs4AVpGEuhO+gien7G5CcC+8vaIIWPI= | |||
github.com/xluohome/phonedata v0.0.0-20220123041135-c005bb2f5d35/go.mod h1:xLEBvbUFvuBHRWeV/SNefGARR5QedFRkThwnodnmCKw= | |||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | |||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | |||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | |||
@@ -1038,6 +1014,7 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm | |||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | |||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | |||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | |||
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= | |||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= | |||
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= | |||
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= | |||
@@ -1049,9 +1026,6 @@ golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE | |||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= | |||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= | |||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= | |||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= | |||
golang.org/x/image v0.0.0-20220902085622-e7cb96979f69 h1:Lj6HJGCSn5AjxRAH2+r35Mir4icalbqku+CLUtjnvXY= | |||
golang.org/x/image v0.0.0-20220902085622-e7cb96979f69/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= | |||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | |||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | |||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | |||
@@ -1071,8 +1045,9 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB | |||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | |||
golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= | |||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |||
golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= | |||
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | |||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |||
golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | |||
@@ -1097,7 +1072,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL | |||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | |||
@@ -1113,15 +1087,17 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R | |||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | |||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | |||
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | |||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | |||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | |||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | |||
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= | |||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= | |||
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | |||
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | |||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | |||
golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= | |||
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= | |||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | |||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | |||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | |||
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= | |||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | |||
@@ -1141,7 +1117,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ | |||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= | |||
@@ -1195,6 +1170,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w | |||
golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
@@ -1207,6 +1183,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc | |||
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= | |||
@@ -1214,6 +1192,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | |||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | |||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | |||
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= | |||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | |||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | |||
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= | |||
@@ -1224,10 +1203,10 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 | |||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= | |||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | |||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | |||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= | |||
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | |||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | |||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | |||
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= | |||
@@ -1269,13 +1248,13 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK | |||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | |||
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | |||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | |||
golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | |||
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | |||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | |||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | |||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | |||
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= | |||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= | |||
golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= | |||
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= | |||
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |||
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | |||
@@ -1351,6 +1330,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba | |||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | |||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= | |||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | |||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | |||
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= | |||
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | |||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= | |||