首页 > 网站 > 建站经验 > 正文

ecshop教程:自动分成函数程序代码

2024-04-25 20:43:49
字体:
来源:转载
供稿:网友

ecshop自动分成程序代码,大概逻辑:

后台操作一个订单发货的时候进行自动分成,后台取消发货,退货,改为未发货的时候去掉自动分成部分。

核心代码:lib_common.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);

以上就是本文章的内容,希望对大家有所帮助

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表