<?php
namespace App\Http\Controllers;
use App\Models\Users;
use App\Models\Orders;
use App\Http\Controllers\WeChatController;
use App\Models\BalanceRecord;
use Illuminate\Support\Facades\DB;
use Log;
use Illuminate\Support\Facades\Request;
use TopClient;
use TbkItemInfoGetRequest;
use TopAuthTokenCreateRequest;
use TbkScPublisherInfoSaveRequest;
use TbkOrderDetailsGetRequest;
use Illuminate\Support\Facades\Redis;
use EasyWeChat\Kernel\Messages\News;
use EasyWeChat\Kernel\Messages\NewsItem;
class TaokeController extends Controller
{
public function curlGet($url, $method, $post_data = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if ($method == 'post') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
} elseif ($method == 'get') {
curl_setopt($ch, CURLOPT_HEADER, 0);
}
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
function makeSign($data)
{
$appSecret = config('config.dtkAppSecret');
ksort($data);
$str = '';
foreach ($data as $k => $v) {
$str .= '&' . $k . '=' . $v;
}
$str = trim($str, '&');
$sign = strtoupper(md5($str . '&key=' . $appSecret));
return $sign;
}
public function parse($user, $content)
{
$rate = $user->rebate_ratio * 0.01; $dataArr = $this->dtkParse($content) $status = $dataArr['code']; switch ($status) {
case "0":
$title = $dataArr['data']['originInfo']['title'];
$price = $dataArr['data']['originInfo']['price'];
$goodsid = $dataArr['data']['goodsId'];
$image = $dataArr['data']['originInfo']['image'];
$dataArr = null;
if ($user->special_id != null && $user->special_id != "") {
$dataArr = $this->privilegeLinkBySpecialId($goodsid, $user->special_id);
} else {
$dataArr = $this->privilegeLink($goodsid);
}
return $this->formatDataByTb($user, $rate, $dataArr, $title, $price,$image);
case "-1":
return "哎呀,服务器出错了,请您再发送尝试一次或稍后再试";
case "20002":
case "200002":
case "200001":
case "20001":
case "200003":
case "200004":
if (strlen($content) > 10) {
return $this->jdParse($content, $rate, $user);
}
case "25003":
return "信息解析失败,请确保您发送的链接为淘口令或商品链接";
default:
return "出现未知异常,请稍后再试或联系客服";
}
}
public function jdParse($url, $rate, $user)
{
$skuId = $this->getJdSku($url);
if (!$skuId) {
return "您发送的商品无饭粒活动,或链接不支持,目前支持淘宝商品分享,京东链接分享,京东商品全名方式搜索返利";
}
$dataArr = $this->getJdDetails($skuId, $rate, $user);
if (!$dataArr) {
return "您发送的京东商品无饭粒活动哦";
}
$title = $dataArr["skuName"];
$price = $dataArr["originPrice"];
$actualPrice = $dataArr["actualPrice"];
$couponInfo1 = $dataArr["couponAmount"];
$couponInfo2 = $dataArr["couponConditions"];
$commissionShare = $dataArr["commissionShare"];
$openid = Redis::get($title);
if ($openid != null && $openid != "" && $openid != $user->id) {
Redis::setex($title, 1800, "repeat");
} else {
Redis::setex($title, 600, $user->id);
}
$url = $this->getJdUrl($url);
$couponInfo = "商品无优惠券";
$commissionShare= round( $commissionShare * $rate,2);
$estimate = round(($price * ($commissionShare / 100)),2);
$image= $dataArr["picMain"];
if (!$url) {
$url = $this->getJdUrl($skuId);
}
if (!$url) {
return "获取京东链接失败,请稍后重试或尝试其他商品,如仍无法正常转链可联系客服";
}
$items = [
new NewsItem([
'title' => $title,
'description' => $couponInfo.',返现比例'.$commissionShare.'%,预计付款'.$price.',预计返现'.$estimate.',点击查看下单',
'url' => config('app.url').'/jdzjy?title='.$title.'&url='.$url.'&couponInfo='.$couponInfo.'&maxCommissionRate='.$commissionShare.'&rate='.$rate.'&estimate='.$estimate.'&image='.$image,
'image' => $image,
]),
];
$news = new News($items);
app(WeChatController::class)->sendText($user->id, "您的商品链接已生成,10分钟内下单将自动绑定订单,如超时或未自动绑定,请复制您的订单号发送到公众号进行绑定");
return $news;
}
public function getJdSku($url)
{
$host = "https://openapi.dataoke.com/api/dels/jd/kit/parseUrl";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'url' => $url
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true) if (isset($dataArr["data"])) {
return $dataArr["data"]["skuId"];
} else {
return false;
}
}
public function getJdDetails($skuId, $rate, $user)
{
$host = "https://openapi.dataoke.com/api/dels/jd/goods/get-details";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'skuIds' => $skuId
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true);
if (isset($dataArr["data"][0])) {
return $dataArr["data"][0];
} else {
return false;
}
}
public function getJdUrl($url)
{
$host = "https://openapi.dataoke.com/api/dels/jd/kit/promotion-union-convert";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'unionId' => config('config.unionId'),
'materialId' => $url
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true) if (($dataArr["code"]) == 0) {
return $dataArr["data"]["shortUrl"];
} else {
return false;
}
}
public function dtkParse($content)
{
$host = "https://openapi.dataoke.com/api/tb-service/parse-content";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'content' => $content
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true);
return $data;
}
public function formatDataByTb($user, $rate, $dataArr, $title, $price,$image)
{
if ($dataArr['code'] == '0') {
$couponInfo = "商品无优惠券";
$amount = "0";
if ($dataArr['data']['couponInfo'] != null) {
$couponInfo = $dataArr['data']['couponInfo']; $start = (strpos($couponInfo, "元"));
$ci = mb_substr($couponInfo, $start);
$end = (strpos($ci, "元"));
$amount = mb_substr($ci, 0, $end);
}
$tpwd = $dataArr['data']['tpwd']; $kuaiZhanUrl = $dataArr['data']['kuaiZhanUrl']; $estimate = $price - $amount; $maxCommissionRate = $dataArr['data']['maxCommissionRate'] == "" || null ? $dataArr['data']['minCommissionRate'] : $dataArr['data']['maxCommissionRate']; $kuaiZhanUrl = $dataArr['data']['kuaiZhanUrl']; $openid = Redis::get($title);
if ($openid != null && $openid != "" && $openid != $user->id) {
Redis::setex($title, 1800, "repeat");
} else {
Redis::setex($title, 600, $user->id);
}
$items = [
new NewsItem([
'title' => $title,
'description' => $couponInfo.',返现比例'.round($maxCommissionRate* $rate,2).'%,预计付款'.$estimate.',预计返现'.round(($estimate * $rate * ($maxCommissionRate / 100)), 2).',点击查看下单',
'url' => config('app.url').'/tklzjy?title='.$title.'&tpwd='.$tpwd.'&couponInfo='.$couponInfo.'&maxCommissionRate='.round($maxCommissionRate * $rate,2).'&rate='.$rate.'&estimate='.round(($estimate * $rate * ($maxCommissionRate / 100)), 2).'&image='.$image,
'image' => $image,
]),
];
$news = new News($items);
app(WeChatController::class)->sendText($user->id, "您的商品链接已生成,10分钟内下单将自动绑定订单,如超时或未自动绑定,请复制您的订单号发送到公众号进行绑定");
return $news;
} else if ($dataArr['code'] == '10006') {
return "您发送的淘宝商品没有返利活动哦~";
} else {
return "出现未知异常,请稍后再试或联系客服000";
}
}
public function privilegeLink($goodsid)
{
$host = "https://openapi.dataoke.com/api/tb-service/get-privilege-link";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.3.1',
'goodsId' => $goodsid,
'pid' => config('config.pubpid')
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) return $data;
}
public function privilegeLinkBySpecialId($goodsid, $specialId)
{
$host = "https://openapi.dataoke.com/api/tb-service/get-privilege-link";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.3.1',
'goodsId' => $goodsid,
'specialId' => $specialId,
'pid' => config('config.specialpid')
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) return $data;
}
public function aliParse($goodsid)
{
$c = new TopClient;
$c->appkey = config('config.aliAppKey');
$c->secretKey = config('config.aliAppSecret');
$c->format = "json";
$req = new TbkItemInfoGetRequest;
$req->setNumIids($goodsid);
$req->setPlatform("2");
$resp = $c->execute($req);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
return $data;
}
public function getUserSessionId($code)
{
try {
$c = new TopClient;
$c->appkey = config('config.aliAppKey');
$c->secretKey = config('config.aliAppSecret');
$c->format = "json";
$req = new TopAuthTokenCreateRequest;
$req->setCode($code);
$resp = $c->execute($req);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
$data = json_decode($data['token_result'], true);
return $data['access_token'];
} catch (\Exception $e) {
return false;
}
}
public function regMember($openid, $code)
{
$sessionKey = $this->getUserSessionId($code);
if ($sessionKey == false) {
return "<script >alert('绑定出错,请联系客服处理!')</script><h1>绑定出错,请联系客服处理!</h1>";
}
try {
$c = new TopClient;
$c->appkey = config('config.aliAppKey');
$c->secretKey = config('config.aliAppSecret');
$c->format = "json";
$req = new TbkScPublisherInfoSaveRequest;
$req->setInviterCode(config('config.inviter_code'));
$req->setInfoType("1");
$req->setNote($openid);
$resp = $c->execute($req, $sessionKey);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
Log::info($data);
if ($data['data']['special_id'] != null) {
$special_id = $data['data']['special_id'];
$flag = app(Users::class)->updateSpecial_id($openid, $special_id);
if ($flag == 1) {
return "<script >alert('绑定成功,您的会员ID为" . $special_id . "')</script><h1>绑定成功,您的会员ID为" . $special_id . "</h1>";
} else {
return "<script >alert('绑定成功但保存失败,您的会员ID为" . $special_id . "。您可以联系重试或联系客服提供该ID进行处理')</script><h1>绑定成功但保存失败,您的会员ID为" . $special_id . "。您可以联系重试或联系客服提供该ID进行处理</h1>";
}
} else {
return "<script >alert('绑定出错,请联系客服处理!')</script><h1>绑定出错,请联系客服处理!</h1>";
}
} catch (\Exception $e) {
return "<script >alert('绑定出错,请联系客服处理!')</script><h1>绑定出错,请联系客服处理!</h1>";
}
}
public function getOrderList()
{
$str = $this->getOrderListByTaobao();
$str = $str . "\n" . $this->getOrderListByJd();
return $str;
}
public function getOrderListByTaobaoTblm()
{
$count = 0;
$timeQuantum = 90;
date_default_timezone_set("Asia/Shanghai")
$c = new TopClient;
$c->appkey = config('config.aliAppKey');
$c->secretKey = config('config.aliAppSecret');
$flag = true;
$pageNo = 1;
while ($flag) {
$req = new TbkOrderDetailsGetRequest;
$req->setQueryType("1");
$req->setPageSize("100");
$req->setEndTime(date("Y-m-d H:i:s", time()));
$req->setStartTime(date("Y-m-d H:i:s", time() - $timeQuantum));
$req->setPageNo($pageNo);
$req->setOrderScene("1");
$resp = $c->execute($req);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
if ($data['data']['has_next'] == 'false') {
$flag = false;
} else {
$pageNo++;
} if (isset($data['data']['results'])) {
$publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$count++;
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title'] $tk_paid_time = $publisher_order_dto[$i]['tk_paid_time'] $tk_status = $publisher_order_dto[$i]['tk_status'] $alipay_total_price = $publisher_order_dto[$i]['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto[$i]['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto[$i]['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, -1);
}
} else {
$count++;
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title'] $tk_paid_time = $publisher_order_dto['tk_paid_time'] $tk_status = $publisher_order_dto['tk_status'] $alipay_total_price = $publisher_order_dto['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, -1);
}
}
}
$flag = true;
$pageNo = 1;
while ($flag) {
$req = new TbkOrderDetailsGetRequest;
$req->setQueryType("1");
$req->setPageSize("100");
$req->setEndTime(date("Y-m-d H:i:s", time()));
$req->setStartTime(date("Y-m-d H:i:s", time() - $timeQuantum));
$req->setPageNo("1");
$req->setOrderScene("3");
$resp = $c->execute($req);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
if ($data['data']['has_next'] == 'false') {
$flag = false;
} else {
$pageNo++;
} if (isset($data['data']['results'])) {
$publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$count++;
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title'] $tk_paid_time = $publisher_order_dto[$i]['tk_paid_time'] $tk_status = $publisher_order_dto[$i]['tk_status'] $alipay_total_price = $publisher_order_dto[$i]['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto[$i]['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto[$i]['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; $special_id = $publisher_order_dto[$i]['special_id'];
app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, $special_id);
}
} else {
$count++;
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title'] $tk_paid_time = $publisher_order_dto['tk_paid_time'] $tk_status = $publisher_order_dto['tk_status'] $alipay_total_price = $publisher_order_dto['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; $special_id = $publisher_order_dto['special_id'];
app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, $special_id);
}
}
}
return "成功处理订单数量:" . $count;
}
public function getOrderListByTaobao()
{
$count = 0;
$timeQuantum = 90; date_default_timezone_set("Asia/Shanghai") $host = "https://openapi.dataoke.com/api/tb-service/get-order-details";
$flag = true;
$pageNo = 1;
while ($flag) {
$endTime = date("Y-m-d H:i:s", time());
$startTime = date("Y-m-d H:i:s", time() - $timeQuantum);
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'queryType' => 2 'startTime' => $startTime,
'endTime' => $endTime,
'pageNo' => $pageNo,
'orderScene' => 1,
'pageSize' => 100
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) if (json_encode($data['data']['has_next']) == 'false') {
$flag = false;
} else {
$pageNo++;
} if (isset($data['data']['results'])) {
$publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$count++;
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title'] $tk_paid_time = $publisher_order_dto[$i]['tk_paid_time'] $tk_status = $publisher_order_dto[$i]['tk_status'] $alipay_total_price = $publisher_order_dto[$i]['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto[$i]['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto[$i]['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, -1);
}
} else {
if (!isset($publisher_order_dto['trade_parent_id'])) {
break;
}
$count++;
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title'] $tk_paid_time = $publisher_order_dto['tk_paid_time'] $tk_status = $publisher_order_dto['tk_status'] $alipay_total_price = $publisher_order_dto['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, -1);
}
}
}
$flag = true;
$pageNo = 1;
while ($flag) {
$endTime = date("Y-m-d H:i:s", time());
$startTime = date("Y-m-d H:i:s", time() - $timeQuantum);
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'queryType' => 2 'startTime' => $startTime,
'endTime' => $endTime,
'pageNo' => $pageNo,
'orderScene' => 3,
'pageSize' => 100
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) if (json_encode($data['data']['has_next']) == 'false') {
$flag = false;
} else {
$pageNo++;
} if (isset($data['data']['results'])) {
$publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$count++;
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title'] $tk_paid_time = $publisher_order_dto[$i]['tk_paid_time'] $tk_status = $publisher_order_dto[$i]['tk_status'] $alipay_total_price = $publisher_order_dto[$i]['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto[$i]['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto[$i]['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; $special_id = $publisher_order_dto[$i]['special_id'];
app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, $special_id);
}
} else {
if (!isset($publisher_order_dto['trade_parent_id'])) {
break;
}
$count++;
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title'] $tk_paid_time = $publisher_order_dto['tk_paid_time'] $tk_status = $publisher_order_dto['tk_status'] $alipay_total_price = $publisher_order_dto['alipay_total_price'] $pub_share_pre_fee = $publisher_order_dto['pub_share_pre_fee'] $tk_commission_pre_fee_for_media_platform = $publisher_order_dto['tk_commission_pre_fee_for_media_platform'] $rebate_pre_fee = 0; $special_id = $publisher_order_dto['special_id'];
app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, $special_id);
}
}
}
return "成功处理订单数量:" . $count;
}
public function getOrderListByJd()
{
$count = 0;
$timeQuantum = 90; date_default_timezone_set("Asia/Shanghai") $flag = true;
$pageNo = 1;
$host = "https://openapi.dataoke.com/api/dels/jd/order/get-official-order-list";
while (true) {
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'key' => config('config.jdApiKey'),
'startTime' => date("Y-m-d H:i:s", time() - $timeQuantum),
'endTime' => (date("Y-m-d H:i:s", time())),
'type' => 3,
'pageNo' => $pageNo,
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true) if ($dataArr["data"] != null) {
foreach ($dataArr["data"] as $data) {
$trade_parent_id = $data["orderId"];
$item_title = $data["skuName"];
$tk_paid_time = $data["orderTime"];
$tk_status = $data["validCode"];
switch ($tk_status) {
case 15:
break;
case 16:
$tk_status = 12;
break;
case 17:
$tk_status = 3;
break;
default:
$tk_status = 13;
}
$alipay_total_price = $data["estimateCosPrice"];
$pub_share_pre_fee = $data["estimateFee"];
$tk_commission_pre_fee_for_media_platform = 0;
$rebate_pre_fee = 0;
app(Orders::class)->saveOrder($trade_parent_id, $item_title, $tk_paid_time, $tk_status, $alipay_total_price, $pub_share_pre_fee, $tk_commission_pre_fee_for_media_platform, $rebate_pre_fee, -1);
$count++;
}
$pageNo++;
} else {
$flag = false;
}
return "成功处理订单数量:" . $count;
}
}
public function updateOrder($openid)
{
$orders = app(Orders::class)->getAllWithinOneMonthByOpenid($openid);
if ($orders == null || !isset($orders[0])) {
return 0;
}
$user = app(Users::class)->getUserById($orders[0]->openid);
date_default_timezone_set("Asia/Shanghai") foreach ($orders as $order) {
if ($order->tk_status == 13 || $order->tlf_status == 2 || $order->tlf_status == -1) {
continue;
}
$flag = true;
$pageNo = 1;
while ($flag && strlen($order->trade_parent_id) > 13) {
$host = "https://openapi.dataoke.com/api/tb-service/get-order-details";
$orderScene = 1;
if ($order->special_id == null || trim($order->special_id) == "") {
$orderScene = 1;
} else {
$orderScene = 3;
}
$endTime = date("Y-m-d H:i:s", strtotime($order->tk_paid_time) + 60);
$startTime = date("Y-m-d H:i:s", strtotime($order->tk_paid_time) - 60);
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'queryType' => 2 'startTime' => $startTime,
'endTime' => $endTime,
'pageNo' => $pageNo,
'orderScene' => $orderScene,
'pageSize' => 100
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) if (json_encode($data['data']['has_next']) == 'false') {
$flag = false;
} else {
$pageNo++;
} if (isset($data['data']['results'])) {
$publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto[$i]['tk_status'] $refund_tag = $publisher_order_dto[$i]['refund_tag'];
$tk_earning_time = null;
if ($tk_status == 13 || $refund_tag == 1) {
try {
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time, $refund_tag);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status != $order->tk_status) {
try {
if ($tk_status == 3) {
$tk_earning_time = $publisher_order_dto[$i]['tk_earning_time'];
if ($user->invite_id != null && $user->invite_id != "" && config('config.invite') == 1) {
if ($user->invitation_reward == 1) {
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "邀请好友" . $nickname . "首次下单获得奖励" . config('config.invite_rewards') . "元", config('config.invite_rewards'));
app(Users::class)->updateAvailable_balance($user->invite_id, config('config.invite_rewards'));
app(Users::class)->updateInvitationReward($user->openid);
$inUser = app(\App\Models\Users::class)->getUserById($user->invite_id);
app(Controllers\WeChatController::class)->sendInviteTemplateMessage($user->invite_id, $nickname, $inUser->nickname, "您的好友已首单,您获得首单奖励" . config('config.invite_rewards') . "元\n永久返利奖励将在你的好友订单确认收货次月一并发放哦");
}
}
}
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
}
$flag = false;
break;
}
} else {
if (!isset($publisher_order_dto['trade_parent_id'])) {
break;
}
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto['tk_status'] $refund_tag = $publisher_order_dto['refund_tag'];
$tk_earning_time = null;
if ($tk_status == 13 || $refund_tag == 1) {
try {
$user = app(Users::class)->getUserById($order->openid);
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status != $order->tk_status) {
try {
if ($tk_status == 3) {
$tk_earning_time = $publisher_order_dto['tk_earning_time'];
if ($user->invite_id != null && $user->invite_id != "" && config('config.invite') == 1) {
if ($user->invitation_reward == 1) {
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "邀请好友" . $nickname . "首次下单获得奖励" . config('config.invite_rewards') . "元", config('config.invite_rewards'));
app(Users::class)->updateAvailable_balance($user->invite_id, config('config.invite_rewards'));
}
}
}
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
}
$flag = false;
break;
}
}
}
$flag = true;
$pageNo = 1;
while ($flag && strlen($order->trade_parent_id) < 17) {
$host = "https://openapi.dataoke.com/api/dels/jd/order/get-official-order-list";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'key' => config('config.jdApiKey'),
'startTime' => date("Y-m-d H:i:s", strtotime($order->tk_paid_time) - 60),
'endTime' => date("Y-m-d H:i:s", strtotime($order->tk_paid_time) + 60),
'type' => 1,
'pageNo' => $pageNo,
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true) if ($dataArr["data"] != null) {
foreach ($dataArr["data"] as $data) {
$trade_parent_id = $data["orderId"];
$item_title = $data['skuName']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $data["validCode"];
$finishTime = null;
switch ($tk_status) {
case 15:
break;
case 16:
$tk_status = 12;
break;
case 17:
$tk_status = 3;
break;
default:
try {
$user = app(Users::class)->getUserById($order->openid);
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $finishTime);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
$tk_status = 13;
break;
}
if ($tk_status != 13 && $tk_status != $order->tk_status) {
try {
if ($tk_status == 3) {
$finishTime = $data["finishTime"];
if ($user->invite_id != null && $user->invite_id != "") {
if ($user->invitation_reward == 1) {
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "邀请好友" . $nickname . "首次下单获得奖励" . config('config.invite_rewards') . "元", config('config.invite_rewards'));
app(Users::class)->updateAvailable_balance($user->invite_id, config('config.invite_rewards'));
}
}
}
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $finishTime);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
}
}
$pageNo++;
} else {
$flag = false;
}
}
}
}
public function updateOrderAll(): string
{
$tb = $this->updateOrderTb();
$jd = $this->updateOrderJd();
return "淘宝" . $tb . "----京东" . $jd;
}
public function updateOrderTb()
{
$count = 0;
$orders = app(Orders::class)->getAllWithinLastMonth();
if ($orders == null || sizeof($orders) == 0) {
return "上月无订单";
}
date_default_timezone_set("Asia/Shanghai") $host = "https://openapi.dataoke.com/api/tb-service/get-order-details";
foreach ($orders as $order) {
if ($order->tk_status == 13 || $order->tlf_status == 2 || $order->tlf_status == -1) {
continue;
}
if (strlen($order->trade_parent_id) < 17) {
continue;
}
if ($order->openid == "" || $order->openid == null) {
continue;
}
$flag = true;
$pageNo = 1;
while ($flag) {
$endTime = date("Y-m-d H:i:s", strtotime($order->tk_paid_time) + 60);
$startTime = date("Y-m-d H:i:s", strtotime($order->tk_paid_time) - 60);
if ($order->special_id == null || trim($order->special_id) == "") {
$orderScene = 1;
} else {
$orderScene = 3;
}
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'queryType' => 2 'startTime' => $startTime,
'endTime' => $endTime,
'pageNo' => $pageNo,
'orderScene' => $orderScene,
'pageSize' => 100
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) if (isset($data['data']['results'])) {
if (json_encode($data['data']['has_next']) == 'false') {
$flag = false;
} else {
$pageNo++;
} $publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto[$i]['tk_status'] $refund_tag = $publisher_order_dto[$i]['refund_tag'];
$tk_earning_time = null;
$user = app(Users::class)->getUserById($order->openid);
if ($tk_status == 13 || $refund_tag == 1) {
try {
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status == 3) {
try {
DB::beginTransaction();
$tk_earning_time = $publisher_order_dto[$i]['tk_earning_time'];
$month = date("m", time());
if ($month == 1) {
$month = 12;
} else {
$month = (int)$month - 1;
}
$lastMonth = $month == 1 ? 12 : $month - 1;
if ($month == date('m', strtotime($tk_earning_time)) || $lastMonth == date('m', strtotime($tk_earning_time))) {
return date('m', strtotime($tk_earning_time)) . "1......" . $trade_parent_id;
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
app(Users::class)->updateAvailable_balance($order->openid, $user->available_balance + $order->rebate_pre_fee);
app(Orders::class)->changeTlfStatus($trade_parent_id, 2);
if ($user->invite_id != null && $user->invite_id != "" && config('config.invite') == 1) {
$invite_user = app(Users::class)->getUserById($user->invite_id);
app(Users::class)->updateAvailable_balance($invite_user->openid, $invite_user->available_balance + ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "好友" . $nickname . "下单获得提成" . ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01) . "元", ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
}
}
if ($order->tk_status != 3) {
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
}
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
return $e;
}
}
$flag = false;
break;
}
} else {
if (!isset($publisher_order_dto['trade_parent_id'])) {
break;
}
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto['tk_status'] $tk_earning_time = null;
$refund_tag = $publisher_order_dto['refund_tag'];
$user = app(Users::class)->getUserById($order->openid);
if ($tk_status == 13 || $refund_tag == 1) {
try {
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status == 3) {
try {
DB::beginTransaction();
$tk_earning_time = $publisher_order_dto['tk_earning_time'];
$month = date("m", time());
if ($month == 1) {
$month = 12;
} else {
$month = (int)$month - 1;
}
$lastMonth = $month == 1 ? 12 : $month - 1;
if ($month == date('m', strtotime($tk_earning_time)) || $lastMonth == date('m', strtotime($tk_earning_time))) {
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
app(Users::class)->updateAvailable_balance($order->openid, $user->available_balance + $order->rebate_pre_fee);
app(Orders::class)->changeTlfStatus($trade_parent_id, 2);
if ($user->invite_id != null && $user->invite_id != "" && config('config.invite') == 1) {
$invite_user = app(Users::class)->getUserById($user->invite_id);
app(Users::class)->updateAvailable_balance($invite_user->openid, $invite_user->available_balance + ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "好友" . $nickname . "下单获得提成" . ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01) . "元", ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
}
}
if ($order->tk_status != 3) {
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
}
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
return $e;
}
}
$flag = false;
break;
}
}
$flag = false;
}
}
return "处理成功" . $count . "条订单";
}
public function updateOrderTbTblm()
{
$count = 0;
$orders = app(Orders::class)->getAllWithinLastMonth();
if ($orders == null || sizeof($orders) == 0) {
return "上月无订单";
}
date_default_timezone_set("Asia/Shanghai") $c = new TopClient;
$c->appkey = config('config.aliAppKey');
$c->secretKey = config('config.aliAppSecret');
foreach ($orders as $order) {
if ($order->tk_status == 13 || $order->tlf_status == 2 || $order->tlf_status == -1) {
continue;
}
if (strlen($order->trade_parent_id) < 17) {
continue;
}
if ($order->openid == "" || $order->openid == null) {
continue;
}
$flag = true;
$pageNo = 1;
while ($flag) {
$req = new TbkOrderDetailsGetRequest;
$req->setQueryType("1");
$req->setPageSize("10");
$req->setEndTime(date("Y-m-d H:i:s", strtotime($order->tk_paid_time) + 60));
$req->setStartTime(date("Y-m-d H:i:s", strtotime($order->tk_paid_time) - 60));
$req->setPageNo($pageNo);
if ($order->special_id == null || trim($order->special_id) == "") {
$req->setOrderScene("1");
} else {
$req->setOrderScene("3");
}
$resp = $c->execute($req);
$Jsondata = json_encode($resp, true);
$data = json_decode($Jsondata, true);
if (isset($data['data']['results'])) {
if ($data['data']['has_next'] == 'false') {
$flag = false;
} else {
$pageNo++;
} $publisher_order_dto = $data['data']['results']['publisher_order_dto'];
if (isset($publisher_order_dto[0])) {
for ($i = 0; $i < sizeof($publisher_order_dto); $i++) {
$trade_parent_id = $publisher_order_dto[$i]['trade_parent_id']; $item_title = $publisher_order_dto[$i]['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto[$i]['tk_status'] $refund_tag = $publisher_order_dto[$i]['refund_tag'];
$tk_earning_time = null;
$user = app(Users::class)->getUserById($order->openid);
if ($tk_status == 13 || $refund_tag == 1) {
try {
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status == 3) {
try {
DB::beginTransaction();
$tk_earning_time = $publisher_order_dto[$i]['tk_earning_time'];
$month = date("m", time());
if ($month == 1) {
$month = 12;
} else {
$month = (int)$month - 1;
}
$lastMonth = $month == 1 ? 12 : $month - 1;
if ($month == date('m', strtotime($tk_earning_time)) || $lastMonth == date('m', strtotime($tk_earning_time))) {
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
app(Users::class)->updateAvailable_balance($order->openid, $user->available_balance + $order->rebate_pre_fee);
app(Orders::class)->changeTlfStatus($trade_parent_id, 2);
}
if ($order->tk_status != 3) {
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
}
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
return $e;
}
}
$flag = false;
break;
}
} else {
$trade_parent_id = $publisher_order_dto['trade_parent_id']; $item_title = $publisher_order_dto['item_title']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $publisher_order_dto['tk_status'] $tk_earning_time = null;
$refund_tag = $publisher_order_dto['refund_tag'];
$user = app(Users::class)->getUserById($order->openid);
if ($tk_status == 13 || $refund_tag == 1) {
try {
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $tk_earning_time);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
}
} else if ($tk_status == 3) {
try {
DB::beginTransaction();
$tk_earning_time = $publisher_order_dto['tk_earning_time'];
$month = date("m", time());
if ($month == 1) {
$month = 12;
} else {
$month = (int)$month - 1;
}
$lastMonth = $month == 1 ? 12 : $month - 1;
if ($month == date('m', strtotime($tk_earning_time)) || $lastMonth == date('m', strtotime($tk_earning_time))) {
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
app(Users::class)->updateAvailable_balance($order->openid, $user->available_balance + $order->rebate_pre_fee);
app(Orders::class)->changeTlfStatus($trade_parent_id, 2);
}
if ($order->tk_status != 3) {
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
}
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
return $e;
}
}
$flag = false;
break;
}
}
$flag = false;
}
}
return "处理成功" . $count . "条订单";
}
public function updateOrderJd()
{
$count = 0;
$orders = app(Orders::class)->getAllWithinLastMonth();
$host = "https://openapi.dataoke.com/api/dels/jd/order/get-official-order-list";
if ($orders == null || sizeof($orders) == 0) {
return "上月无订单";
}
date_default_timezone_set("Asia/Shanghai") foreach ($orders as $order) {
if ($order->tk_status == 13 || $order->tlf_status == 2 || $order->tlf_status == -1) {
continue;
}
if (strlen($order->trade_parent_id) > 13) {
continue;
}
if ($order->openid == "" || $order->openid == null) {
continue;
}
$flag = true;
$pageNo = 1;
while ($flag) {
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'key' => config('config.jdApiKey'),
'startTime' => date("Y-m-d H:i:s", strtotime($order->tk_paid_time) - 60),
'endTime' => date("Y-m-d H:i:s", strtotime($order->tk_paid_time) + 60),
'type' => 1,
'pageNo' => $pageNo,
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$dataArr = json_decode($output, true) if ($dataArr["data"] != null) {
foreach ($dataArr["data"] as $data) {
$trade_parent_id = $data["orderId"];
$item_title = $data['skuName']; if ($trade_parent_id != $order->trade_parent_id || $item_title != $order->item_title) {
continue;
}
$tk_status = $data["validCode"];
$finishTime = null;
switch ($tk_status) {
case 15:
break;
case 16:
$tk_status = 12;
break;
case 17:
$tk_status = 3;
$user = app(Users::class)->getUserById($order->openid);
try {
DB::beginTransaction();
$tk_earning_time = $data['finishTime'];
$month = date("m", time());
if ($month == 1) {
$month = 12;
} else {
$month = (int)$month - 1;
}
$lastMonth = $month == 1 ? 12 : $month - 1;
if ($month == date('m', strtotime($tk_earning_time)) || $lastMonth == date('m', strtotime($tk_earning_time))) {
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
app(Users::class)->updateAvailable_balance($order->openid, $user->available_balance + $order->rebate_pre_fee);
app(Orders::class)->changeTlfStatus($trade_parent_id, 2);
if ($user->invite_id != null && $user->invite_id != "" && config('config.invite') == 1) {
$invite_user = app(Users::class)->getUserById($user->invite_id);
app(Users::class)->updateAvailable_balance($invite_user->openid, $invite_user->available_balance + ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
$nickname = $user->nickname == null ? "未设置昵称" : $user->nickname;
app(BalanceRecord::class)->setRecord($user->invite_id, "好友" . $nickname . "下单获得提成" . ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01) . "元", ($order->rebate_pre_fee * config('config.invite_ratio') * 0.01));
}
}
if ($order->tk_status != 3) {
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $tk_earning_time);
}
DB::commit();
$count++;
} catch (\Exception $e) {
DB::rollBack();
return $e;
}
break;
default:
try {
$user = app(Users::class)->getUserById($order->openid);
DB::beginTransaction();
app(Orders::class)->changeStatusAndEarningTimeById($order->id, 13, $finishTime);
app(BalanceRecord::class)->setRecord($order->openid, "订单" . $trade_parent_id . "退款扣除返利" . $order->rebate_pre_fee, ($order->rebate_pre_fee) * (-1));
app(Users::class)->updateUnsettled_balance($order->openid, $user->unsettled_balance - $order->rebate_pre_fee);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
$tk_status = 13;
break;
}
if ($tk_status != 13 && $tk_status != $order->tk_status) {
if ($tk_status == 3) {
$finishTime = $data["finishTime"];
}
app(Orders::class)->changeStatusAndEarningTimeById($order->id, $tk_status, $finishTime);
}
}
$pageNo++;
} else {
$flag = false;
}
}
}
return "处理成功" . $count . "条订单";
}
public function getElmTkl()
{
$host = "https://openapi.dataoke.com/api/tb-service/activity-link";
$data = [
'appKey' => config('config.dtkAppKey'),
'version' => '1.0.0',
'promotionSceneId' => "20150318020002597", 'pid' => config('config.pubpid')
];
$data['sign'] = $this->makeSign($data);
$url = $host . '?' . http_build_query($data);
$output = $this->curlGet($url, 'get');
$data = json_decode($output, true) $str = $data['data']['tpwd'] . "\n\n复制该信息到淘宝领取饿了么红包" . ",之后通过淘宝或相同账号的饿了么APP下单,下单2分钟后将订单号回传,即可获得返利,具体返利金额以系统最终结果为准。\n\n注意:只要通过该口令进入饿了么会场,无论是否使用红包,无论使用任何类型的红包,均可获得返利";
return $str;
}
}