@@ -14,7 +14,7 @@ func HwOrderList(c *gin.Context) { | |||||
return | return | ||||
} | } | ||||
platformMap := map[string]string{ | platformMap := map[string]string{ | ||||
"starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"recharge": "视频会员直充", "starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | "pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | ||||
} | } | ||||
@@ -14,6 +14,7 @@ var SettlePvd = map[string]string{ | |||||
"own_didi_chauffeur": "滴滴代驾", | "own_didi_chauffeur": "滴滴代驾", | ||||
"own_oilstation": "加油", | "own_oilstation": "加油", | ||||
"own_king_flower": "花小猪打车", | "own_king_flower": "花小猪打车", | ||||
"xiaoju": "加油", | |||||
} | } | ||||
var LifeSettlePvd = map[string]string{ | var LifeSettlePvd = map[string]string{ | ||||
"meituan": "美团", | "meituan": "美团", | ||||
@@ -22,6 +23,7 @@ var LifeSettlePvd = map[string]string{ | |||||
"own_didi_online_car": "滴滴打车", | "own_didi_online_car": "滴滴打车", | ||||
"own_didi_freight": "滴滴货运", | "own_didi_freight": "滴滴货运", | ||||
"own_didi_chauffeur": "滴滴代驾", | "own_didi_chauffeur": "滴滴代驾", | ||||
"xiaoju": "加油", | |||||
"own_oilstation": "加油", | "own_oilstation": "加油", | ||||
"own_king_flower": "花小猪打车", | "own_king_flower": "花小猪打车", | ||||
} | } |
@@ -13,7 +13,7 @@ func HwOrderList(c *gin.Context, args map[string]string) ([]map[string]string, i | |||||
list, total := db.GetHwOrderListTotal(args) | list, total := db.GetHwOrderListTotal(args) | ||||
var data = make([]map[string]string, 0) | var data = make([]map[string]string, 0) | ||||
platformMap := map[string]string{ | platformMap := map[string]string{ | ||||
"starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"recharge": "视频会员直充", "starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | "pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | ||||
} | } | ||||
if len(list) > 0 { | if len(list) > 0 { | ||||
@@ -66,7 +66,7 @@ func HwOrderOutput(c *gin.Context, args map[string]string) (string, map[string]s | |||||
"H1": "佣金", | "H1": "佣金", | ||||
} | } | ||||
platformMap := map[string]string{ | platformMap := map[string]string{ | ||||
"starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"recharge": "视频会员直充", "starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | "pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | ||||
} | } | ||||
@@ -127,8 +127,12 @@ func initTasks() { | |||||
jobs[taskMd.ZhimengCronMeituanStoreOrder] = taskMeituanStoreOrder // | jobs[taskMd.ZhimengCronMeituanStoreOrder] = taskMeituanStoreOrder // | ||||
jobs[taskMd.ZhimengCronLifeOrderSettle] = taskLifeOrderSettle // | jobs[taskMd.ZhimengCronLifeOrderSettle] = taskLifeOrderSettle // | ||||
jobs[taskMd.ZhimengCronElmOrder] = taskElmOrder // | |||||
jobs[taskMd.ZhimengCronDidiOrder] = taskDidiOrder // | |||||
jobs[taskMd.ZhimengCronT3Order] = taskT3Order // | |||||
jobs[taskMd.ZhimengCronElmOrder] = taskElmOrder // | |||||
jobs[taskMd.ZhimengCronDidiOrder] = taskDidiOrder // | |||||
jobs[taskMd.ZhimengCronT3Order] = taskT3Order // | |||||
jobs[taskMd.ZhimengCronOilAddEs] = taskOilAddEs //加油站点加入es | |||||
jobs[taskMd.ZhimengCronOilOrder] = taskOilOrder //加油订单 | |||||
jobs[taskMd.ZhimengCronPayLifeOrderSettle] = taskPayLifeOrderSettle // | |||||
jobs[taskMd.ZhimengCronHwRechargeOrder] = taskHwRechargeOrder //加油订单 | |||||
} | } |
@@ -55,4 +55,7 @@ const ( | |||||
ZhimengCronLifeOrderSettle = "zhimeng_cron_life_order_settle" | ZhimengCronLifeOrderSettle = "zhimeng_cron_life_order_settle" | ||||
ZhimengCronSuccessLifeOrderSettle = "zhimeng_cron_success_life_order_settle" | ZhimengCronSuccessLifeOrderSettle = "zhimeng_cron_success_life_order_settle" | ||||
ZhimengCronPayLifeOrderSettle = "zhimeng_cron_pay_life_order_settle" | ZhimengCronPayLifeOrderSettle = "zhimeng_cron_pay_life_order_settle" | ||||
ZhimengCronOilAddEs = "zhimeng_cron_oil_add_es" | |||||
ZhimengCronOilOrder = "zhimeng_cron_oil_order" | |||||
ZhimengCronHwRechargeOrder = "zhimeng_cron_hw_recharge_order" | |||||
) | ) |
@@ -0,0 +1,29 @@ | |||||
package md | |||||
type OilData struct { | |||||
OutUserId string `json:"outUserId"` | |||||
Cellphone string `json:"cellphone"` | |||||
OrderId string `json:"orderId"` | |||||
CityId string `json:"cityId"` | |||||
DdCityId string `json:"ddCityId"` | |||||
CityName string `json:"cityName"` | |||||
StoreId string `json:"storeId"` | |||||
StoreName string `json:"storeName"` | |||||
ItemName string `json:"itemName"` | |||||
GunNo string `json:"gunNo"` | |||||
Quantity float64 `json:"quantity"` | |||||
TotalMoney int `json:"totalMoney"` | |||||
RealMoney int `json:"realMoney"` | |||||
ServiceFee int `json:"serviceFee"` | |||||
PayStatus int `json:"payStatus"` | |||||
PayTime string `json:"payTime"` | |||||
RefundStatus int `json:"refundStatus"` | |||||
OrderStatus int `json:"orderStatus"` | |||||
OrderSourceStatus int `json:"orderSourceStatus"` | |||||
OrderTime string `json:"orderTime"` | |||||
PayType int `json:"payType"` | |||||
SourcePayType int `json:"sourcePayType"` | |||||
UnitPrice int `json:"unitPrice"` | |||||
OrderPayInfo string `json:"orderPayInfo"` | |||||
BillingType int `json:"billingType"` | |||||
} |
@@ -0,0 +1,128 @@ | |||||
package md | |||||
type XiaojuGoods struct { | |||||
StoreId string `json:"storeId"` | |||||
StoreName string `json:"storeName"` | |||||
StoreLogo string `json:"storeLogo"` | |||||
CityName string `json:"cityName"` | |||||
ProvinceName string `json:"provinceName"` | |||||
Address string `json:"address"` | |||||
Lon float64 `json:"lon"` | |||||
Lat float64 `json:"lat"` | |||||
BrandName string `json:"brandName"` | |||||
ItemInfoList []struct { | |||||
ItemName string `json:"itemName"` | |||||
CityPrice int `json:"cityPrice"` | |||||
StorePrice int `json:"storePrice"` | |||||
} `json:"itemInfoList"` | |||||
HuiLabels []string `json:"huiLabels"` | |||||
} | |||||
type OilStationVipPrice struct { | |||||
StoreId string `json:"storeId"` | |||||
ItemName string `json:"itemName"` | |||||
StorePrice int `json:"storePrice"` | |||||
VipPrice int `json:"vipPrice"` | |||||
CityPrice int `json:"cityPrice"` | |||||
} | |||||
type ScreenType struct { | |||||
Name string `json:"name"` | |||||
Type string `json:"type"` | |||||
} | |||||
type OilReq struct { | |||||
Page string `json:"page" example:"页码"` | |||||
ItemName string `json:"item_name" example:"油品 92#"` | |||||
BrandName string `json:"brand_name" example:"品牌"` | |||||
Sort string `json:"sort" example:"排序"` | |||||
Lat string `json:"lat" example:"纬度"` | |||||
Lng string `json:"lng" example:"经度"` | |||||
Keyword string `json:"keyword"` | |||||
} | |||||
type OilUrlReq struct { | |||||
IndexId string `json:"index_id" ` | |||||
Lat string `json:"lat" example:"纬度"` | |||||
Lng string `json:"lng" example:"经度"` | |||||
} | |||||
type XiaojuGoodsEs struct { | |||||
StoreId string `json:"storeId"` | |||||
StoreName string `json:"storeName"` | |||||
StoreLogo string `json:"storeLogo"` | |||||
CityName string `json:"cityName"` | |||||
ProvinceName string `json:"provinceName"` | |||||
Address string `json:"address"` | |||||
Lon float64 `json:"lon"` | |||||
Lat float64 `json:"lat"` | |||||
BrandName string `json:"brandName"` | |||||
ItemName string `json:"itemName"` | |||||
CityPrice float64 `json:"cityPrice"` | |||||
StorePrice float64 `json:"storePrice"` | |||||
HuiLabels string `json:"huiLabels"` | |||||
IndexId string `json:"index_id"` | |||||
Location struct { | |||||
Lat float64 `json:"lat"` | |||||
Lon float64 `json:"lon"` | |||||
} `json:"location"` | |||||
} | |||||
const EggOilStation = "zhiying_oil_station" | |||||
const EggOilStationMap = ` | |||||
{ | |||||
"settings" : { | |||||
"number_of_shards" : 2, | |||||
"number_of_replicas" : 1 | |||||
}, | |||||
"mappings":{ | |||||
"properties":{ | |||||
"lat":{ | |||||
"type": "double" | |||||
}, | |||||
"lon":{ | |||||
"type": "double" | |||||
}, | |||||
"platform":{ | |||||
"type": "keyword" | |||||
}, | |||||
"storeId":{ | |||||
"type": "keyword" | |||||
}, | |||||
"storeName":{ | |||||
"type": "keyword" | |||||
}, | |||||
"storeLogo":{ | |||||
"type": "keyword" | |||||
}, | |||||
"address":{ | |||||
"type": "keyword" | |||||
}, | |||||
"brandName":{ | |||||
"type": "keyword" | |||||
}, | |||||
"huiLabels":{ | |||||
"type": "keyword" | |||||
}, | |||||
"provinceName":{ | |||||
"type": "keyword" | |||||
}, | |||||
"cityName":{ | |||||
"type": "keyword" | |||||
}, | |||||
"itemName":{ | |||||
"type": "keyword" | |||||
}, | |||||
"cityPrice":{ | |||||
"type": "double" | |||||
}, | |||||
"storePrice":{ | |||||
"type": "double" | |||||
}, | |||||
"vipPrice":{ | |||||
"type": "double" | |||||
}, | |||||
"index_id":{ | |||||
"type": "keyword" | |||||
}, | |||||
"location":{ | |||||
"type": "geo_point" | |||||
} | |||||
} | |||||
} | |||||
}` |
@@ -31,7 +31,7 @@ func HwOrderSettle() { | |||||
} | } | ||||
fmt.Println(utils.SerializeStr(order)) | fmt.Println(utils.SerializeStr(order)) | ||||
platformMap := map[string]string{ | platformMap := map[string]string{ | ||||
"starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"recharge": "视频会员直充", "starbucks": "星巴克", "movie": "电影", "mcdonald": "麦当劳", "nayuki": "奈雪", "luckin": "瑞幸咖啡", "pizza": "必胜客", | |||||
"pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | "pagoda": "百果园", "burger_king": "汉堡王", "heytea": "喜茶", "to_kfc": "肯德基", "wallace": "华莱士", "flowerCake": "鲜花", "delivery": "比价寄", "tourism": "出游", | ||||
} | } | ||||
for _, v := range order { | for _, v := range order { | ||||
@@ -0,0 +1,68 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/db" | |||||
"applet/app/db/model" | |||||
offical "applet/app/db/official" | |||||
"applet/app/utils" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/hw" | |||||
"encoding/json" | |||||
"fmt" | |||||
"github.com/tidwall/gjson" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func HwRechargeOrder() { | |||||
data := hw.HwRechargeSendOrder(offical.SysCfgByKeyStr("hw_recharge_secret"), "recharge", "RECHARGE") | |||||
order := gjson.Get(data, "data").String() | |||||
if order != "" && order != "[]" { | |||||
var list = make([]map[string]interface{}, 0) | |||||
json.Unmarshal([]byte(order), &list) | |||||
for _, v := range list { | |||||
AddRechargeOrder("recharge", v) | |||||
} | |||||
} | |||||
return | |||||
} | |||||
func AddRechargeOrder(method string, order map[string]interface{}) { | |||||
statusArr := map[string]string{"SOLD": "订单成功", "SUCCESS": "订单成功", "REFUNDED": "订单退款", "AFTER_SALE": "订单付款"} | |||||
userId := order["openid"] | |||||
if strings.Contains(utils.AnyToString(userId), "own") == false { | |||||
return | |||||
} | |||||
isShare := 0 | |||||
if strings.Contains(utils.AnyToString(userId), "share") { | |||||
isShare = 1 | |||||
} | |||||
split := strings.Split(utils.AnyToString(userId), "_") | |||||
mid := split[2] | |||||
uid := split[3] | |||||
var ord = &model.HwOrder{ | |||||
Oid: utils.AnyToString(order["sell_order_no"]), | |||||
Info: utils.AnyToString(order["commodity_name"]), | |||||
Commission: utils.AnyToFloat64(order["agent_rebate"]), | |||||
Type: method, | |||||
Uid: utils.StrToInt(mid), | |||||
Payment: utils.AnyToFloat64(order["amount"]), | |||||
Status: statusArr[utils.AnyToString(order["order_status"])], | |||||
CreateTime: int(utils.TimeStdParseUnix(utils.AnyToString(order["create_time"]))), | |||||
Data: utils.SerializeStr(order), | |||||
UpdateTime: int(time.Now().Unix()), | |||||
Zuid: uid, | |||||
UserId: utils.AnyToString(order["openid"]), | |||||
IsShare: isShare, | |||||
ExtendUid: "0", | |||||
} | |||||
one := db.GetHwOrderByOne(ord.Oid, utils.IntToStr(ord.Uid), ord.Type) | |||||
if one == nil { | |||||
insertOne, err := db.ZhimengDb.InsertOne(ord) | |||||
fmt.Println(insertOne) | |||||
fmt.Println(err) | |||||
} else { | |||||
ord.SettleTime = one.SettleTime | |||||
db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord) | |||||
} | |||||
return | |||||
} |
@@ -11,10 +11,10 @@ import ( | |||||
) | ) | ||||
func LifeOrderSettle(arg map[string]string) { | func LifeOrderSettle(arg map[string]string) { | ||||
day := time.Now().Day() | |||||
if day < 20 { | |||||
return | |||||
} | |||||
//day := time.Now().Day() | |||||
//if day < 20 { | |||||
// return | |||||
//} | |||||
order := db.GetLifeOrderList(arg) | order := db.GetLifeOrderList(arg) | ||||
if len(order) == 0 { | if len(order) == 0 { | ||||
@@ -0,0 +1,77 @@ | |||||
package svc | |||||
import ( | |||||
offical "applet/app/db/official" | |||||
"applet/app/task/md" | |||||
"applet/app/utils" | |||||
"applet/app/utils/cache" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/xiaoju" | |||||
"encoding/json" | |||||
"fmt" | |||||
"github.com/jinzhu/copier" | |||||
"github.com/tidwall/gjson" | |||||
"time" | |||||
) | |||||
func OilAddEs() { | |||||
oilAddEsTime := offical.SysCfgByKeyStr("oil_add_es_time") | |||||
today := utils.GetTimeRange("today") | |||||
if utils.TimeStdParseUnix(oilAddEsTime) > today["start"] { | |||||
return | |||||
} | |||||
PessimismLockValue := "zhiyingOilAddEsTime" | |||||
key := fmt.Sprintf("zhiyingOilAddEsTime") | |||||
//TODO::增加“悲观锁”防止串行 | |||||
getString, _ := cache.GetString(key) | |||||
if getString == PessimismLockValue { | |||||
fmt.Println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "上一次未执行完") | |||||
return | |||||
} | |||||
cache.SetEx(key, PessimismLockValue, 3600*15) //8小时 | |||||
offical.DbsSysCfgUpdate("oil_add_es_time", time.Now().Format("2006-01-02 15:04:05")) | |||||
CommOilAddEs(1) | |||||
cache.Del(key) | |||||
} | |||||
func CommOilAddEs(p int) { | |||||
platformKey := XiaojuKey() | |||||
token := GetXiaojuToken(platformKey) | |||||
data := map[string]interface{}{ | |||||
"pageIndex": p, | |||||
"pageSize": 100, | |||||
} | |||||
list, _ := xiaoju.XiaojuStation(platformKey, token, data) | |||||
//处理数据 | |||||
storeInfoList := gjson.Get(list, "storeInfoList").String() | |||||
var store = make([]md.XiaojuGoods, 0) | |||||
json.Unmarshal([]byte(storeInfoList), &store) | |||||
count := len(store) | |||||
for _, v := range store { | |||||
var tmp md.XiaojuGoodsEs | |||||
copier.Copy(&tmp, &v) | |||||
tmp.HuiLabels = utils.SerializeStr(v.HuiLabels) | |||||
for _, v1 := range v.ItemInfoList { | |||||
var tmp2 = tmp | |||||
tmp2.ItemName = v1.ItemName | |||||
tmp2.IndexId = tmp2.StoreId + tmp2.ItemName | |||||
tmp2.CityPrice = float64(v1.CityPrice) / 100 | |||||
tmp2.StorePrice = float64(v1.StorePrice) / 100 | |||||
tmp2.Location.Lon = tmp2.Lon | |||||
tmp2.Location.Lat = tmp2.Lat | |||||
doc, _ := es.FirstDoc(md.EggOilStation, tmp2.IndexId) | |||||
if doc == nil { | |||||
createDocRet, _ := es.CreateDoc(md.EggOilStation, tmp2.IndexId, tmp2) | |||||
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet) | |||||
} else { | |||||
createDocRet, _ := es.UpdateDoc(md.EggOilStation, tmp2.IndexId, tmp2) | |||||
fmt.Printf("CreateDoc ==> %+v \n\n", createDocRet) | |||||
} | |||||
} | |||||
} | |||||
if count == 100 { | |||||
p++ | |||||
CommOilAddEs(p) | |||||
return | |||||
} | |||||
return | |||||
} |
@@ -0,0 +1,168 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/cfg" | |||||
"applet/app/db" | |||||
"applet/app/db/model" | |||||
offical "applet/app/db/official" | |||||
"applet/app/task/md" | |||||
"applet/app/utils" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/xiaoju" | |||||
"encoding/json" | |||||
"fmt" | |||||
"github.com/tidwall/gjson" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func OilOrder() { | |||||
pvdTimeKey := "oil_time" | |||||
// 获得最后时间 | |||||
timeStrData := offical.SysCfgByKey(pvdTimeKey) | |||||
timeStr := "" | |||||
if timeStrData == nil { | |||||
offical.DbsSysCfgInserts(pvdTimeKey, time.Now().Format("2006-01-02")) | |||||
timeStr = offical.SysCfgByKeyStr(pvdTimeKey) | |||||
} else { | |||||
timeStr = timeStrData.V | |||||
} | |||||
// 所有时间都是在操作秒数 | |||||
now := time.Now().Unix() | |||||
strs := strings.Split(timeStr, ":") | |||||
if len(strs) == 3 { | |||||
timeStr = strs[0] + ":" + strs[1] + ":00" | |||||
} | |||||
fmt.Println(timeStr) | |||||
past := utils.TimeParseStd(timeStr).Unix() | |||||
// 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟 | |||||
if past < now-180*86400 || past > now { | |||||
past = now | |||||
} | |||||
var ( | |||||
beginTime int64 = 0 | |||||
endTime int64 = 0 | |||||
pageNo int = 1 | |||||
pageSize int = 50 | |||||
) | |||||
//怕时间不是走最新的 | |||||
leave := now - past | |||||
if leave > 500 { | |||||
leave = 0 | |||||
} | |||||
past = past + leave | |||||
beginTime = past - 85000 | |||||
endTime = past | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
for { | |||||
count := 0 | |||||
count, _ = OrdersOilGet(pageNo, pageSize, beginTime, endTime) | |||||
if count == 0 { | |||||
goto ChkArg | |||||
} | |||||
// 判断是否分页已经全部取完了 | |||||
if count <= pageSize { | |||||
pageNo++ | |||||
fmt.Println("========下一页========" + utils.IntToStr(pageNo)) | |||||
count = 0 | |||||
continue | |||||
} | |||||
ChkArg: | |||||
// 查询完后重置时间, 最后查询时间 | |||||
if endTime < now { | |||||
pageNo = 1 | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) | |||||
beginTime = endTime | |||||
endTime = endTime + 300 | |||||
if endTime > now { | |||||
endTime = now | |||||
} | |||||
count = 0 | |||||
continue | |||||
} | |||||
count = 0 | |||||
break | |||||
} | |||||
offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) | |||||
} | |||||
func OrdersOilGet(p int, pageSize int, sTime, eTime int64) (int, string) { | |||||
platformKey := XiaojuKey() | |||||
args := map[string]interface{}{ | |||||
"queryEndTime": time.Unix(eTime, 0).Format("2006-01-02 15:04:05"), | |||||
"queryStartTime": time.Unix(sTime, 0).Format("2006-01-02 15:04:05"), | |||||
"pageIndex": p, | |||||
"pageSize": pageSize, | |||||
} | |||||
token := GetXiaojuToken(platformKey) | |||||
datas, err := xiaoju.XiaojuStationOrder(platformKey, token, args) | |||||
if err != nil { | |||||
return 0, "" | |||||
} | |||||
var order = make([]md.OilData, 0) | |||||
json.Unmarshal([]byte(gjson.Get(datas, "orderInfoList").String()), &order) | |||||
if len(order) == 0 { | |||||
return 0, "" | |||||
} | |||||
count := len(order) | |||||
for _, v := range order { | |||||
commXiaoju(v) | |||||
} | |||||
return count, "" | |||||
} | |||||
func commXiaoju(data md.OilData) error { | |||||
if data.PayStatus == 0 { | |||||
return nil | |||||
} | |||||
state := "订单付款" | |||||
if data.RefundStatus == 1 { | |||||
state = "订单退款" | |||||
} | |||||
ex := strings.Split(data.OutUserId, "_") | |||||
if strings.Contains(utils.AnyToString(data.OutUserId), "zhiying") == false { | |||||
return nil | |||||
} | |||||
if strings.Contains(utils.AnyToString(data.OutUserId), "dev") && cfg.Prd { | |||||
return nil | |||||
} | |||||
if strings.Contains(utils.AnyToString(data.OutUserId), "prd") && cfg.Prd == false { | |||||
return nil | |||||
} | |||||
var res = model.LifeOrder{ | |||||
PvdParentOid: data.OrderId, | |||||
Pvd: "xiaoju", | |||||
Status: state, | |||||
CreateTime: int(utils.TimeStdParseUnix(data.PayTime)), | |||||
} | |||||
res.Uid = utils.StrToInt(ex[3]) | |||||
res.StationUid = utils.StrToInt(ex[2]) | |||||
res.Oid = utils.StrToInt64(utils.OrderUUID(utils.StrToInt(ex[2]))) | |||||
res.PvdOid = data.OrderId | |||||
res.UpdateTime = int(time.Now().Unix()) | |||||
res.Title = data.StoreName | |||||
res.Gid = res.PvdOid | |||||
res.Payment = utils.Float64ToStr(float64(data.RealMoney) / 100) | |||||
var commission = float64(data.RealMoney) / 100 * (0.2 / 100) | |||||
res.Commission = utils.Float64ToStr(commission) | |||||
res.RealCommission = utils.Float64ToStr(commission) | |||||
one := db.GetLifeOrderByOne(res.PvdOid, utils.IntToStr(res.Uid), res.Pvd) | |||||
if one == nil { | |||||
insertOne, err := db.ZhimengDb.InsertOne(&res) | |||||
fmt.Println(insertOne) | |||||
fmt.Println(err) | |||||
} else { | |||||
res.SettleTime = one.SettleTime | |||||
res.CreateTime = one.CreateTime | |||||
if one.PlatformSettleTime > 0 { | |||||
res.PlatformSettleTime = one.PlatformSettleTime | |||||
} | |||||
db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(&res) | |||||
} | |||||
return nil | |||||
} |
@@ -0,0 +1,38 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/cfg" | |||||
offical "applet/app/db/official" | |||||
"applet/app/utils/cache" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/xiaoju" | |||||
"github.com/tidwall/gjson" | |||||
) | |||||
// 小桔基本配置 | |||||
func XiaojuKey() map[string]string { | |||||
param := map[string]string{ | |||||
"key": offical.SysCfgByKeyStr("xiaoju_key"), | |||||
"sign_secret": offical.SysCfgByKeyStr("xiaoju_sign_secret"), | |||||
"data_secret": offical.SysCfgByKeyStr("xiaoju_data_secret"), | |||||
"secret": offical.SysCfgByKeyStr("xiaoju_secret"), | |||||
"url": "https://gw.am.xiaojukeji.com/online/energy/v1/", | |||||
} | |||||
return param | |||||
} | |||||
func GetXiaojuToken(platformKey map[string]string) string { | |||||
key := "zhiying_xiaoju_token" | |||||
token, err := cache.GetString(key) | |||||
if cfg.Prd == false { | |||||
return token | |||||
} | |||||
if err != nil || token == "" { | |||||
token1, _ := xiaoju.GetXiaojuToken(platformKey) | |||||
token = gjson.Get(token1, "accessToken").String() | |||||
if token != "" { | |||||
availableTime := gjson.Get(token1, "availableTime").Int() | |||||
cache.SetEx(key, token, int(availableTime-20)) | |||||
} | |||||
} | |||||
return token | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
) | |||||
func taskHwRechargeOrder() { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.HwRechargeOrder() | |||||
<-ch | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
) | |||||
func taskOilAddEs() { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.OilAddEs() | |||||
<-ch | |||||
} |
@@ -0,0 +1,21 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
) | |||||
func taskOilOrder() { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.OilOrder() | |||||
<-ch | |||||
} |
@@ -28,7 +28,7 @@ START: | |||||
"to_settle_time": utils.Int64ToStr(month["start"]), | "to_settle_time": utils.Int64ToStr(month["start"]), | ||||
"p": "1", | "p": "1", | ||||
"size": "100", | "size": "100", | ||||
"pvd": "own_didi_online_car,own_didi_freight,own_didi_chauffeur,own_oilstation,own_king_flower", | |||||
"pvd": "xiaoju", | |||||
} | } | ||||
svc.LifeOrderSettle(arg) | svc.LifeOrderSettle(arg) | ||||
<-ch | <-ch | ||||
@@ -4,7 +4,7 @@ go 1.15 | |||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230707081910-52e70aa52998 | code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20230707081910-52e70aa52998 | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20241023080942-721e3ee3148e | |||||
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250311032855-92b94363b2d1 | |||||
github.com/360EntSecGroup-Skylar/excelize v1.4.1 | github.com/360EntSecGroup-Skylar/excelize v1.4.1 | ||||
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 | ||||
github.com/boombuler/barcode v1.0.1 | github.com/boombuler/barcode v1.0.1 | ||||
@@ -17,7 +17,7 @@ require ( | |||||
github.com/go-playground/universal-translator v0.18.0 | github.com/go-playground/universal-translator v0.18.0 | ||||
github.com/go-playground/validator/v10 v10.10.0 | github.com/go-playground/validator/v10 v10.10.0 | ||||
github.com/go-redis/redis v6.15.9+incompatible | github.com/go-redis/redis v6.15.9+incompatible | ||||
github.com/go-sql-driver/mysql v1.6.0 | |||||
github.com/go-sql-driver/mysql v1.8.1 | |||||
github.com/gomodule/redigo v2.0.0+incompatible | github.com/gomodule/redigo v2.0.0+incompatible | ||||
github.com/jinzhu/copier v0.3.5 | github.com/jinzhu/copier v0.3.5 | ||||
github.com/makiuchi-d/gozxing v0.1.1 | github.com/makiuchi-d/gozxing v0.1.1 | ||||
@@ -25,13 +25,12 @@ require ( | |||||
github.com/qiniu/api.v7/v7 v7.8.2 | github.com/qiniu/api.v7/v7 v7.8.2 | ||||
github.com/robfig/cron/v3 v3.0.1 | github.com/robfig/cron/v3 v3.0.1 | ||||
github.com/sony/sonyflake v1.1.0 | github.com/sony/sonyflake v1.1.0 | ||||
github.com/stretchr/testify v1.8.0 // indirect | |||||
github.com/syyongx/php2go v0.9.7 | |||||
github.com/syyongx/php2go v0.9.8 | |||||
github.com/tidwall/gjson v1.14.1 | github.com/tidwall/gjson v1.14.1 | ||||
go.uber.org/zap v1.16.0 | go.uber.org/zap v1.16.0 | ||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f // indirect | golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f // indirect | ||||
golang.org/x/net v0.14.0 // indirect | golang.org/x/net v0.14.0 // indirect | ||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 | |||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 | |||||
gopkg.in/yaml.v2 v2.4.0 | gopkg.in/yaml.v2 v2.4.0 | ||||
xorm.io/xorm v1.3.2 | xorm.io/xorm v1.3.2 | ||||