ecshop自动分成二次开发实例
自动分成功能在ecshop系统自带是没有的,如果我们需要对一单添加分成功能我们是需要进入二次开发的,下面小编来为各位介绍一个例子。
大概逻辑:
后台操作一个订单发货的时候进行自动分成,后台取消发货,退货,改为未发货的时候去掉自动分成部分。
核心代码:lib_common.php
//分成积分计算
<?php function fenchenjifen($usertype = 3, $point) { $affiliate = unserialize($GLOBALS['_CFG']['affiliate']); if ($usertype == 3) { //采购 if ($affiliate['config']['level_register_up']) { $affiliate['config']['level_register_up']/= 100; } $point_cg = round($affiliate['config']['level_register_up'] * intval($point) , 0); return $point_cg; } if ($usertype == 1) { //经销商 if ($affiliate['config']['level_money_all']) { $affiliate['config']['level_money_all']/= 100; } $point_cg = round($affiliate['config']['level_money_all'] * intval($point) , 0); return $point_cg; } if ($usertype == 2) { //财务 if ($affiliate['config']['level_register_all']) { $affiliate['config']['level_register_all']/= 100; } $point_cg = round($affiliate['config']['level_register_all'] * intval($point) , 0); return $point_cg; } } /** * * @param undefined $order 订单信息 * @param undefined $buyuser 购买者信息 * @param undefined $integral 计算积分 * $type = 1 增加 $type=-1 撤销 * 分成log状态99 */ function fun_fencheng_change($order, $buyuser, $integral = array() , $type = 1) { //店铺分成计算 if (intval($order['parent_shopid']) == 0) return false; if (!is_array($buyuser)) return false; $order_id = $order['order_id']; $separate_by = 99; switch ($buyuser['usertype']) { case '0': //购买者类型 $row = $GLOBALS['db']->getRow("SELECT * from " . $GLOBALS['ecs']->table('users') . " u " . " WHERE u.shopid =" . $order['parent_shopid'] . " and u.usertype=1"); //获取pid $up_uid = $row['user_id']; if (!empty($up_uid) && $up_uid > 0) { $money = $point = 0; $point = fenchenjifen(1, $integral['custom_points']); // $info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $point); $info = "订单" . $order['order_sn'] . "分成获得积分:" . $point; log_account_change($up_uid, $money, 0, ($type) * $point, ($type) * $point, $info); //var_dump($info); if ($type == 1) { write_affiliate_log1($order_id, $up_uid, $row['user_name'], $money, $point, $separate_by); } else { rollback_affiliate_log($order_id); } $orderupdate['is_separate'] = $type == 1 ? $separate_by : 0; $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info') , $orderupdate, 'UPDATE', "order_id = '$order_id'"); } break; case '3': $row = $GLOBALS['db']->getAll("SELECT u.shopid,u.user_id,u.usertype, u.user_name FROM " . $GLOBALS['ecs']->table('users') . " u " . " WHERE u.shopid= " . $order['parent_shopid'] . " and u.usertype in (1,2)"); foreach ($row as $val) { // 经销商和财务获得分成 if ($val['usertype'] == 1) { $pointf = fenchenjifen(1, $integral['custom_points']); } if ($val['usertype'] == 2) { $pointf = fenchenjifen(2, $integral['custom_points']); } $up_uid = $val['user_id']; //$info = sprintf($GLOBALS['_LANG']['separate_info'], $order['order_sn'], $money, $pointf); $info = "订单" . $order['order_sn'] . "分成获得积分:" . $pointf; log_account_change($up_uid, $money, 0, ($type) * $pointf, ($type) * $pointf, $info); if ($type == 1) { write_affiliate_log1($order_id, $up_uid, $val['user_name'], $money, $pointf, $separate_by); } else { rollback_affiliate_log($order_id); } $orderupdate['is_separate'] = $type == 1 ? $separate_by : 0; $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info') , $orderupdate, 'UPDATE', "order_id = '$order_id'"); } break; } return true; } /** * * @param undefined $oid * @param undefined $uid * @param undefined $username * @param undefined $money * @param undefined $point * @param undefined $separate_by * 写入订单分成 log */ function write_affiliate_log1($oid, $uid, $username, $money, $point, $separate_by) { $time = gmtime(); $sql = "INSERT INTO " . $GLOBALS['ecs']->table('affiliate_log') . "( order_id, user_id, user_name, time, money, point, separate_type)" . " VALUES ( '$oid', '$uid', '$username', '$time', '$money', '$point', $separate_by)"; if ($oid) { $GLOBALS['db']->query($sql); } } //撤销订单分成 function rollback_affiliate_log($order_id, $falg = - 2) { $sql = "UPDATE " . $GLOBALS['ecs']->table('affiliate_log') . " SET separate_type = '$falg'" . " WHERE order_id = '$order_id'"; $GLOBALS['db']->query($sql); }
需要注意的点:后台发货程序在admin / order . php需要修改的地方有:发货866行,取消发货1035行改为未发货3961行退货4132行。本代码只计算分成部分。自己下单部分另外。这个代码是按照店铺ID分成,多商户的。为ecshop二次开发版。无法用于原版。调用分成:fun_fencheng_change($order, $user, $integral, 1);
取消分成:fun_fencheng_change($order, $user, $integral, -1);
永久地址:
转载随意~请带上教程地址吧^^

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

一、Iterator和foreach的區別多態差異(foreach底層就是Iterator)Iterator是一個介面類型,他不關心集合或數組的類型;for和foreach都需要先知道集合的類型,甚至是集合內元素的類型; 1.為啥說foreach底層就是Iterator寫的程式碼:反編譯程式碼:二、foreach與iterator時remove的差別先來看阿里java開發手冊但1的時候不會報錯,2的時候就會報錯(java. util.ConcurrentModificationException)首

php判斷foreach循環到第幾個的步驟:1、創建一個「$fruits」的數組;2、創建一個計數器變數「$counter」初始值為0;3、使用「foreach」循環遍歷數組,並在循環體中增加計數器變數的值,再輸出每個元素和它們的索引;4、在「foreach」循環體外輸出計數器變數的值,以確認循環到了第幾個元素。

在使用PHP編寫程式碼時,我們可能會遇到「Notice:Undefinedproperty」這個錯誤提示。這個錯誤提示意味著我們正在存取一個未定義的屬性,通常是因為該屬性在程式碼中尚未被初始化。那麼,該如何解決這個問題呢?以下是幾種可能的解決方法:初始化屬性這是解決問題的最簡單方法。在程式碼中明確地初始化屬性,可以確保它在使用前已經被定義。例如:class

如果你在使用Vue.js進行開發時,經常遇到「TypeError:Cannotreadproperty'$XXX'ofundefined」的錯誤提示,那麼該如何處理呢?本文將介紹這個錯誤的原因以及如何解決。問題的原因在使用Vue.js的時候,我們常常會用this來呼叫Vue元件的方法,例如:exportdefault{data()

這篇文章將為大家詳細講解有關PHP返回一個鍵值翻轉後的數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉數組鍵值翻轉是一種對數組進行的操作,它將數組中的鍵和值進行交換,產生一個新的數組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉:array_flip()函數:array_flip()函數專門用於鍵值翻轉操作。它接收一個數組作為參數,並傳回一個新的數組,其中鍵和值已交換。 $original_array=[

在JavaScript 中,undefined和null都代表著「無」的概念:1、undefined 表示一個未初始化的變數或一個不存在的屬性,當宣告了一個變數但沒有對其賦值時,這個變數的值就是undefined ,當存取物件中不存在的屬性時,傳回的值也是undefined;2、null表示一個空的物件引用,在某些情況下,可以將物件的引用設為null,以便釋放其佔用的記憶體。

undefined是代表一個值或變數不存在或未定義的狀態。它可以作為預設值來判斷一個變數是否已經被賦值,也可以用來設定預設參數值。儘管在不同的程式語言中,undefined可能具有不同的意義和用法,但理解undefined的概念可以幫助我們更好地理解和編寫程式。

在Go語言中,path套件是處理檔案路徑的重要工具之一。其中path.Join()函數可以將多個路徑組合成一個完整的路徑。但是,有時你會遇到「undefined:path.Join」的錯誤訊息,該怎麼辦呢?以下是幾個常見的解決方法:檢查import語句首先,你需要確認自己已經正確import了path套件。在Go語言中,匯入包時可
