ecshop自动分成二次开发实例

 更新时间:2016年11月25日 17:19  
自动分成功能在ecshop系统自带是没有的,如果我们需要对一单添加分成功能我们是需要进入二次开发的,下面小编来为各位介绍一个例子。 大概逻辑:后台操作一个订单发货
自动分成功能在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);

留言板基于功能就是数据添加管理修改及数据删除功能了,下面我们就来看一个PHP+MySQL实现简单留言板例子,希望文章能够帮助到大家。

通过php+mysql 实现的简易blog,可以实现增删改查。效果如下图:

micro_blog

一、数据库及表结构

数据库:test

表:micro_blog(仅仅有一个表)字段:id,title,date,content,hits

表结构如下:

CREATE TABLE `micro_blog` (
  `id` int(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` text NOT NULL ,
  `content` longtext NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `hits` int(20) DEFAULT 0,
   PRIMARY KEY (`ID`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

二、文件

文件详细描述

文件  描述
default.php  默认主页。显示博文与操作连接。
add.php  添加新博文的功能模块。
edit.php  对已经添加过的博文进行修改操作。
delete.php  删除博文模块。
view.php  显示博文的详细信息(标题|添加日期|浏览次数|内容)。
conn.php  链接数据库操作。在其它文件中被引用。
conn.php

<?php
//连接MySql数据库服务
$conn = @mysql_connect("localhost:3306","root","www.361way.com") or die("连接数据库服务器失败!");
//连接ly_php_base数据库
@mysql_select_db("test",$conn) or die("未能连接到数据库!");
mysql_query("SET NAMES 'UTF8'");
?> 
注:后面的set names utf8,如果不执行,会出现插入数据库中的汉字会变成乱码。

default.php

<?php
include("conn.php");
//搜索关键字的管理
if(!empty($_GET['keys'])){
    $keys = "WHERE title like '%".$_GET['keys']."%'";
} else {
    $keys = "";
}
$sql = "SELECT * FROM micro_blog ".$keys." ORDER BY id DESC LIMIT 10";
$query = mysql_query($sql);
$rs = mysql_fetch_array($query);
?>

<html>
<head>
<title>我的微博客主页</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<a href="add.php">添加内容</a>
<form action="" method="get">
  <input type="text" name="keys"/>
  <input type="submit" name="submit" value="内容搜索"/>
</form>
<hr color="#FF9900" size="3" />
<?php
if(!$rs){
    echo "没有相关内容!";
}
//没有实现分页导航功能
while($rs){
?>
<h2>标题:<?php echo $rs['title'];?>|<a href="edit.php?id=<?php echo $rs['id'];?>">编辑</a>|<a href="delete.php?id=<?php echo $rs['id'];?>">删除</a></h2>
<li>日期:<?php echo $rs['date'];?></li>
<p>内容<?php echo iconv_substr($rs['content'],0,50,"UTF-8");?>...... <a href="view.php?id=<?php echo $rs['id'];?>">|查看详细内容|</a></p>
<hr color="#0033FF" size="5" />
<?php
    $rs = mysql_fetch_array($query);
}
?>
</body>
</html>
 
add.php

<?php
//引入连接数据库文件
include("conn.php");
if(!empty($_POST['submit'])){
    $title = $_POST['title'];
    $content = $_POST['content'];
    $sql = "INSERT INTO micro_blog VALUES(NUll,'$title','$content',now(),0)";
    mysql_query($sql);
}
?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>发布微博页面</title>
</head>
<body>
<a href="default.php">查看内容</a>
<hr color="#0033CC" size="3px"/>
<form action="add.php" method="post">
  标题:
  <input type="text" name="title"/>
  <br />
  内容:
  <textarea rows="5" cols="50" name="content"></textarea>
  <br />
  <input type="submit" name="submit" value="提交"/>
  <br />
</form>
</body>
</html> 

edit.php

<?php
include("conn.php");
if(!empty($_GET['id'])){
    $id = $_GET['id'];
    $sql = "select * from micro_blog where id = ".$_GET['id'];
    $query = mysql_query($sql);
    $rc = mysql_fetch_array($query);
}
if(!empty($_POST['update'])){
    echo "更新按钮提交成功!";
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>编辑页面</title>
</head>
<body>
<form action="edit.php?id=<?php echo $id;?>" method="post">
  标题:
  <input type="text" name="title" value="<?php echo $rc['title'];?>"/>
  <br />
  内容:
  <textarea rows="5" cols="50" name="content"><?php echo $rc['content'];?></textarea>
  <br />
  <input type="submit" name="update" value="更新"/>
  <br />
</form>
</body>
</html> 

delete.php

<?php
include("conn.php");
if(!empty($_GET['id'])){
            mysql_query("delete from micro_blog where id =".$_GET['id']);
} else {
        echo "参数引入失败!";
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $rc['title'];?>|我的微博客</title>
</head>
<body>
<a href="default.php">返回主页面</a>
<hr color="#00FFFF" size="5px"/>
<h2><?php echo $rc['title'];?>
  <hr color="#006699" size="3px">
</h2>
<li><?php echo "日期:".$rc['date']."|浏览次数:".$rc['hits'];?></li>
<p><?php echo $rc['content'];?></p>
</body>
</html> 

view.php

<?php
include("conn.php");
if(!empty($_GET['id'])){
    $sql = "SELECT * FROM micro_blog WHERE id = ".$_GET['id'];
    $rc = mysql_fetch_array(mysql_query($sql));
    mysql_query("UPDATE micro_blog SET hits = hits + 1 WHERE id = ".$_GET['id']);
} else {
    echo "参数引入失败!";
}
?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $rc['title'];?>|我的微博客</title>
</head>
<body>
<a href="default.php">返回主页面</a>
<hr color="#00FFFF" size="5px"/>
<h2><?php echo $rc['title'];?>
  <hr color="#006699" size="3px">
</h2>
<li><?php echo "日期:".$rc['date']."|浏览次数:".$rc['hits'];?></li>
<p><?php echo $rc['content'];?></p>
</body>
</html> 

下文来为各位整理一段php判断是android还是ios还是wp的访问网站例子,非常 的实用希望对各位朋友会有所帮助.


在php中可以用$_SERVER['HTTP_USER_AGENT']来区分是android、ios还是wp的请求,具体可以用以下代码来实现:

$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("/(iPod|iPad|iPhone)/", $userAgent))
{
    echo 'ios'; //IOS客户端
}
elseif (preg_match("/WP/", $userAgent))
{
    echo 'wp'; //WinPhone客户端
}
elseif (preg_match("/android/i", $userAgent)) {
    echo 'android'; //android客户端
}

当然我也可以在网页头部加上一段js代码效果是一样的

<script type="text/javascript">
try {
 var urlhash = window.location.hash;
 if ( !urlhash.match("fromapp") ) {
  if ( (navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad|SymbianOS|Windows Phone)/i) )) {
   window.location = "http://m.111cn.net";
  }
 }
}
catch(err) {
}
</script>


这样只要是手机访问网站就会自动到了手机版本网站了

今天遇到在Linux系统下用php读取带中文的csv文件时,中文不显示了,感觉中文被歧视一样,后来找到原来要加上中文语言标识。

在LIUNX环境下PHP读取csv文件的时候,csv文件中的中文不显示....

终于找到了解决方案,下面和大家分享下!

在执行csv文件读取前加上一句:

setlocale(LC_ALL, 'zh_CN');

瞬间,问题解决了....

实例:

<?php
setlocale(LC_ALL, 'zh_CN');
$handle = fopen(”xxx.csv”,”r”);
while ($data = fgetcsv($handle, 1000,',')) {
 ...
}
fclose($handle);
?>


注解:

// utf-8
setlocale(LC_ALL, 'en_US.UTF-8');
// 简体
setlocale(LC_ALL, 'zh_CN');


扩展相关知识:
以下是常用的地区标识
zh_CN GB2312
en_US.UTF-8 UTF-8
zh_TW BIG5
zh_HK BIG5-HKSCS
zh_TW.EUC-TW EUC-TW
zh_TW.UTF-8 UTF-8
zh_HK.UTF-8 UTF-8
zh_CN.GBK GBK

php二维数组多元素排序小编介绍过很多了,只是今年看到这个例子有一点区别了所以小编为各位整理了一下,希望这个排序算法能够帮助到各位。

写个二维数组的多元素排序,多元素排序类似sql中的order by sort,date,下面代码考虑性能问题,只涉及2个元素进行排序。

代码区:

function multipleArraySort($old_arr,$arr1,$arr2){
//排序第一个元素
$old_arr = array_sort($old_arr,$arr1[0],$arr1[1]);
$temp_array = $new_temp_array = array();
foreach($old_arr as $k => $v){
$key_count = count($old_arr)-1;
//第一个元素数相等,放入临时数组
if($v[$arr1[0]] == $old_arr[$k-1][$arr1[0]] || empty($temp_array)){
$temp_array[$k] = $v;
}
if(($v[$arr1[0]] != $old_arr[$k-1][$arr1[0]] && !empty($temp_array)) || $key_count == $k){
//添加最新元素
$temp_array[$k] = $v;
//数组大于1时,进行排序处理
if(count($temp_array)>1){
if($key_count != $k){
//删除最后一个(与上一个不相等元素)
unset($temp_array[$k]);
}
//不是最后或者最后相同,进行排序
if($key_count != $k || $v[$arr1[0]] == $old_arr[$k-1][$arr1[0]]){
//排序第二个元素
$temp_array = array_sort($temp_array,$arr2[0],$arr2[1]);
}
//排序后把排序的数组,插入原数组排序前位置
$count = count($new_temp_array)==0 ? 0 : count($new_temp_array);
foreach($temp_array as $val_t){
$new_temp_array[$count] = $val_t;
$count++;
}
//写入新数组后清空原数组
$temp_array = array();
//添加最新元素
$temp_array[$k] = $v;
}
}
}
return $new_temp_array;
}
//根据数组元素排序
function array_sort($arr,$keys,$type='asc'){
$keysvalue = $new_array = array();
//获取元素值,生成新数组
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
//排序,默认为正序
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
$count_s = 0;
//恢复键值
foreach ($keysvalue as $k=>$v){
$new_array[$count_s] = $arr[$k];
$count_s++;
}
return $new_array;
}
调用方法:

$old_arr = array(
array('id'=>1,'sort'=>1,'date'=>'1405648791'),
array('id'=>2,'sort'=>1,'date'=>'1405649791'),
array('id'=>3,'sort'=>2,'date'=>'1405647791'),
);
$arr1 = array('sort','desc');
$arr2 = array('date','desc');
$newArr = multipleArraySort($old_arr,$arr1,$arr2);
var_dump($newArr);
打印结果:

相关文章

  • 详解Spring注解驱动开发之属性赋值

    今天带大家学习Spring注解驱动开发的相关知识,文中有非常详细的代码示例,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下...2021-05-27
  • 还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)

    目前对于Python来说,使用最多的功能肯定是Python爬虫.比如抢购茅台以及刷评论,盖楼等抽奖活动贴,都可以应用到爬虫的相关知识.今天博主将通过某个盖楼活动贴,来实现自动评论盖楼抽奖功能,需要的朋友可以参考下...2021-06-06
  • Java 微信公众号开发相关总结

    公众号作为主流的自媒体平台,有着不少人使用。这次以文本回复作为案例来讲解Java相关的微信公众号开发...2021-05-25
  • Python一行代码实现自动发邮件功能

    最近在自己学习Python爬虫,学到了用Python发送邮件,觉得这个可能以后比较实用。所以这篇文章主要给大家介绍了如何通过Python一行代码实现自动发邮件功能的相关资料,需要的朋友可以参考下...2021-05-30