首页 php教程 php手册 ecshop自动分成二次开发实例

ecshop自动分成二次开发实例

May 22, 2016 pm 06:38 PM
foreach undefined

自动分成功能在ecshop系统自带是没有的,如果我们需要对一单添加分成功能我们是需要进入二次开发的,下面小编来为各位介绍一个例子。

大概逻辑:

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

核心代码:lib_common.php

//分成积分计算

<?php
function fenchenjifen($usertype = 3, $point) {
    $affiliate = unserialize($GLOBALS[&#39;_CFG&#39;][&#39;affiliate&#39;]);
    if ($usertype == 3) { //采购
        if ($affiliate[&#39;config&#39;][&#39;level_register_up&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_register_up&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_register_up&#39;] * intval($point) , 0);
        return $point_cg;
    }
    if ($usertype == 1) { //经销商
        if ($affiliate[&#39;config&#39;][&#39;level_money_all&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_money_all&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_money_all&#39;] * intval($point) , 0);
        return $point_cg;
    }
    if ($usertype == 2) { //财务
        if ($affiliate[&#39;config&#39;][&#39;level_register_all&#39;]) {
            $affiliate[&#39;config&#39;][&#39;level_register_all&#39;]/= 100;
        }
        $point_cg = round($affiliate[&#39;config&#39;][&#39;level_register_all&#39;] * 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[&#39;parent_shopid&#39;]) == 0) return false;
    if (!is_array($buyuser)) return false;
    $order_id = $order[&#39;order_id&#39;];
    $separate_by = 99;
    switch ($buyuser[&#39;usertype&#39;]) {
        case &#39;0&#39;: //购买者类型
            $row = $GLOBALS[&#39;db&#39;]->getRow("SELECT * from " . $GLOBALS[&#39;ecs&#39;]->table(&#39;users&#39;) . " u " . " WHERE u.shopid  =" . $order[&#39;parent_shopid&#39;] . " and u.usertype=1"); //获取pid
            $up_uid = $row[&#39;user_id&#39;];
            if (!empty($up_uid) && $up_uid > 0) {
                $money = $point = 0;
                $point = fenchenjifen(1, $integral[&#39;custom_points&#39;]);
                // $info = sprintf($GLOBALS[&#39;_LANG&#39;][&#39;separate_info&#39;], $order[&#39;order_sn&#39;], $money, $point);
                $info = "订单" . $order[&#39;order_sn&#39;] . "分成获得积分:" . $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[&#39;user_name&#39;], $money, $point, $separate_by);
                } else {
                    rollback_affiliate_log($order_id);
                }
                $orderupdate[&#39;is_separate&#39;] = $type == 1 ? $separate_by : 0;
                $GLOBALS[&#39;db&#39;]->autoExecute($GLOBALS[&#39;ecs&#39;]->table(&#39;order_info&#39;) , $orderupdate, &#39;UPDATE&#39;, "order_id = &#39;$order_id&#39;");
            }
            break;
        case &#39;3&#39;:
            $row = $GLOBALS[&#39;db&#39;]->getAll("SELECT u.shopid,u.user_id,u.usertype, u.user_name FROM " . $GLOBALS[&#39;ecs&#39;]->table(&#39;users&#39;) . " u " . " WHERE u.shopid= " . $order[&#39;parent_shopid&#39;] . " and u.usertype in (1,2)");
            foreach ($row as $val) { // 经销商和财务获得分成
                if ($val[&#39;usertype&#39;] == 1) {
                    $pointf = fenchenjifen(1, $integral[&#39;custom_points&#39;]);
                }
                if ($val[&#39;usertype&#39;] == 2) {
                    $pointf = fenchenjifen(2, $integral[&#39;custom_points&#39;]);
                }
                $up_uid = $val[&#39;user_id&#39;];
                //$info = sprintf($GLOBALS[&#39;_LANG&#39;][&#39;separate_info&#39;], $order[&#39;order_sn&#39;], $money, $pointf);
                $info = "订单" . $order[&#39;order_sn&#39;] . "分成获得积分:" . $pointf;
                log_account_change($up_uid, $money, 0, ($type) * $pointf, ($type) * $pointf, $info);
                if ($type == 1) {
                    write_affiliate_log1($order_id, $up_uid, $val[&#39;user_name&#39;], $money, $pointf, $separate_by);
                } else {
                    rollback_affiliate_log($order_id);
                }
                $orderupdate[&#39;is_separate&#39;] = $type == 1 ? $separate_by : 0;
                $GLOBALS[&#39;db&#39;]->autoExecute($GLOBALS[&#39;ecs&#39;]->table(&#39;order_info&#39;) , $orderupdate, &#39;UPDATE&#39;, "order_id = &#39;$order_id&#39;");
            }
            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[&#39;ecs&#39;]->table(&#39;affiliate_log&#39;) . "( order_id, user_id, user_name, time, money, point, separate_type)" . " VALUES ( &#39;$oid&#39;, &#39;$uid&#39;, &#39;$username&#39;, &#39;$time&#39;, &#39;$money&#39;, &#39;$point&#39;, $separate_by)";
    if ($oid) {
        $GLOBALS[&#39;db&#39;]->query($sql);
    }
}
//撤销订单分成
function rollback_affiliate_log($order_id, $falg = - 2) {
    $sql = "UPDATE " . $GLOBALS[&#39;ecs&#39;]->table(&#39;affiliate_log&#39;) . " SET separate_type = &#39;$falg&#39;" . " WHERE order_id = &#39;$order_id&#39;";
    $GLOBALS[&#39;db&#39;]->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);


永久地址:

转载随意~请带上教程地址吧^^

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java ArrayList遍历时使用foreach和iterator删除元素的区别是什么? Java ArrayList遍历时使用foreach和iterator删除元素的区别是什么? Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的区别多态差别(foreach底层就是Iterator)Iterator是一个接口类型,他不关心集合或者数组的类型;for和foreach都需要先知道集合的类型,甚至是集合内元素的类型;1.为啥说foreach底层就是Iterator编写的代码:反编译代码:二、foreach与iterator时remove的区别先来看阿里java开发手册但1的时候不会报错,2的时候就会报错(java.util.ConcurrentModificationException)首

php如何判断foreach循环到第几个 php如何判断foreach循环到第几个 Jul 10, 2023 pm 02:18 PM

​php判断foreach循环到第几个的步骤:1、创建一个“$fruits”的数组;2、创建一个计数器变量“$counter”初始值为0;3、使用“foreach”循环遍历数组,并在循环体中增加计数器变量的值,再输出每个元素和它们的索引;4、在“foreach”循环体外输出计数器变量的值,以确认循环到了第几个元素。

PHP Notice: Undefined property: 的解决方法 PHP Notice: Undefined property: 的解决方法 Jun 22, 2023 pm 02:48 PM

在使用PHP编写代码时,我们可能会遇到“Notice:Undefinedproperty”这个错误提示。这个错误提示意味着我们正在访问一个未定义的属性,通常是因为该属性在代码中尚未被初始化。那么,该如何解决这个问题呢?下面是几种可能的解决方法:初始化属性这是解决该问题的最简单方法。在代码中显式地初始化属性,可以确保它在使用前已经被定义。例如:class

Vue中的TypeError: Cannot read property '$XXX' of undefined,应该如何处理? Vue中的TypeError: Cannot read property '$XXX' of undefined,应该如何处理? Nov 25, 2023 pm 12:14 PM

如果你在使用Vue.js进行开发时,经常遇到“TypeError:Cannotreadproperty'$XXX'ofundefined”的错误提示,那么该如何处理呢?本文将介绍这个错误的原因以及如何解决。问题的原因在使用Vue.js的时候,我们经常会用到this来调用Vue组件的方法,比如:exportdefault{data()

PHP返回一个键值翻转后的数组 PHP返回一个键值翻转后的数组 Mar 21, 2024 pm 02:10 PM

这篇文章将为大家详细讲解有关PHP返回一个键值翻转后的数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP键值翻转数组键值翻转是一种对数组进行的操作,它将数组中的键和值进行交换,生成一个新的数组,其中原始键作为值,原始值作为键。实现方法在php中,可以通过以下方法对数组进行键值翻转:array_flip()函数:array_flip()函数专门用于键值翻转操作。它接收一个数组作为参数,并返回一个新的数组,其中键和值已交换。$original_array=[

undefined和null是什么意思 undefined和null是什么意思 Nov 20, 2023 pm 02:39 PM

在JavaScript 中,undefined和null都代表着“无”的概念:1、undefined 表示一个未初始化的变量或一个不存在的属性,当声明了一个变量但没有对其赋值时,这个变量的值就是undefined,访问对象中不存在的属性时,返回的值也是undefined;2、null表示一个空的对象引用,在某些情况下,可以将对象的引用设置为null,以便释放其占用的内存。

undefined是什么 undefined是什么 Jul 31, 2023 pm 02:28 PM

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。

如何解决 golang 中的 “undefined: path.Join” 错误? 如何解决 golang 中的 “undefined: path.Join” 错误? Jun 24, 2023 pm 01:12 PM

在Go语言中,path包是处理文件路径的重要工具之一。其中path.Join()函数可以将多个路径组合成一个完整的路径。但是,有时你会遇到“undefined:path.Join”的错误信息,该怎么办呢?以下是几种常见的解决方法:检查import语句首先,你需要确认自己已经正确import了path包。在Go语言中,导入包时可

See all articles