项目笔记

最近做了一个直销的项目,写一下记录。

说一下“公司每月按团队销量的1%发放工资”功能的实现

1、数据查询:

在统计销量的时候使用了mysql聚合函数sum,日期函数FROM_UNIXTIME,因为订单表里的时间是int类型的时间戳,查询语句如下:

$thisMonth=strtotime(date(‘Y-m’));

$lastMonth=strtotime(‘-1 month’,$thisMonth);

$sql=’Select id, sum(num) as num ,FROM_UNIXTIME(creat_time,”%m”) as month from order where creat_time between ’. $lastMonth .’ and ’. $thisMonth .‘ group by month‘; (这里需要注意:数字在进行字符串连接时会报错,在数字前后加空格就好了)。这样就方便接下下来的使用了。

2、数组。之前做分销的项目还没有怎么用到数组,这个项目在计算代理提成、返全款、返差价(货款全部打到公司的账户)、确定月初的等级(代理可能被降级)时很多时候都得对订单做一下处理,方便使用。既然是团队销量,把代理表数据处理成

$team=[

  id=>[下级id],

]

把代理订单表处理成:

$salse=[

  $order[‘id’]=>sum(num),   //代理当月的销售总量

]

然后就可用递归从团队的最下级统计销量,最后得到最上级的团队销量:

static function teamSalse($team,$salse,&$teamSalse,$id){

  foreach($team[$id] as $v){

    //如果该代理还有下级

    if(array_key_exist($v,$team)){

      Self::teamSalse($team,$salse,$v);

    }

    //回溯,加上下级的团队销量

    $teamSalse[$id]+=$salse[$v];

  }

  $teamSalse[$id]+=$salse[$id]; //加上自己的销量

}

还有个问题就是不确定$team的第一个元素的键是什么,所以需要用each函数得到数组的第一个元素的键。另外在确定代理月初等级时用到了数组的排序的函数usort,因为要对数据按时间进行排序,排序函数用到了匿名函数:

usort($arr,$this->cmp(‘time’));

function cmp($key){

  return function($a,$b) use ($key){

    if($a[$key]==$v[$key]){

      return 0;

    }

    return $a[$key]>$b[$key]?1:-1;

  }

}

时间: 2024-10-18 13:50:08

项目笔记的相关文章

微软BI项目笔记连载

本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的多维分析模块: <BI项目笔记>基于雪花模型的维度设计 <BI项目笔记>数据源视图设置 <BI项目笔记>创建标准维度.维度自定义层次结构 <BI项目笔记>创建父子维度 <BI项目笔记>创建时间维度(1) <BI项目笔记>创建时间维度(2) <BI项目笔记>创建多维数据集Cube

项目笔记---CSharp图片处理

原文:项目笔记---CSharp图片处理 最近由于项目上需要对图片进行二值化处理,就学习了相关的图片处理上的知识,从开始的二值化的意义到动态阀值检测二值化等等,并用C#得以应用,学到了很多的知识和大家分享下我个人的经验,希望对大家有帮助. 二值化 二值化简而言之是对一副彩色图片进行0/1运算,最终显示一副黑白相间的图片,其意义多数在于对二值化处理后的图片进行分割识别,一些自动识别的验证码工具大多是先进行二值化,然后在模式识别,最终推断出验证码:我的项目中是由于硬件只支持黑色和白色,所以要对用户的

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

Silverlight项目笔记2:初识Prism以及IoC

项目采用了Prism框架,以下为自己的一些初步认识:   一.Prism Prism是由微软Patterns & Practices团队开发的针对WPF和Silverlight的MVVM框架,好处是将功能模块化,能有效减小程序大小,增强扩展性与可维护性. Prism的几个关键点: (1)启动器类UnityBootstrapper Silverlight程序入口处调用Bootstrapper.Run方法时,Prism会自动做一些初始化工作,包括读取模块信息表,创建模块类实例并初始化(还可以选择按需

Silverlight项目笔记5:Oracle归档模式引起的异常&amp;&amp;表格控件绑定按钮

两个问题: (1)Oracle无法连接正常使用,原因是归档日志满了引起异常,最后选择删除归档日志恢复正常. (2)使用silverlight自带的表格绑定按钮竟然无法使用,通过变通绑定数据源集合,把按钮操作作为数据源集合一部分,重新绑定解决. 一.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA-01034: ORACLE not available

《BI项目笔记》基于雪花模型的维度设计

原文:<BI项目笔记>基于雪花模型的维度设计 GBGradeCode 外键关系: 1 烟叶等级 T_GBGradeCode.I_DistinctionID=T_Distinction.I_DistinctionID 烟叶等级分为:上等烟.中等烟.下等烟.末等烟.低等烟.低次等烟.其它.下低等烟 2 分级标准 T_GBGradeCode.I_GradStanCode=T_GradeStandard.I_GradStanCode 取值为:四十二级.二十八级.自定义.其他.工艺级别 3 烟叶烤型 T

《BI项目笔记》报到信息分析Cube

原文:<BI项目笔记>报到信息分析Cube 数据源设置:数据处理逻辑: --处理丢失外键关系数据 SELECT * FROM T_ReportLeafGrade WHERE FSubFID NOT IN ( SELECT FID FROM T_RaceLeafReport ) DELETE FROM T_ReportLeafGrade WHERE FSubFID NOT IN ( SELECT FID FROM T_RaceLeafReport ) --处理供应商关系 SELECT * FRO

《BI项目笔记》创建标准维度、维度自定义层次结构

原文:<BI项目笔记>创建标准维度.维度自定义层次结构

《BI项目笔记》——微软BI项目笔记连载

原文:<BI项目笔记>--微软BI项目笔记连载 本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的SSAS.SSIS模块:  准备工作: <BI项目笔记>基于雪花模型的维度设计 <BI项目笔记>数据源视图设置 <BI项目笔记>创建标准维度.维度自定义层次结构 <BI项目笔记>创建父子维度 <BI项目笔记>创建时间维度(1) <BI项目笔记>创建时间

《BI项目笔记》创建多维数据集Cube(2)

原文:<BI项目笔记>创建多维数据集Cube(2) 本节建立: 历年的初烟水分均值变化分析Cube:区域维度:地州,专县时间维度:年等级维度:大等级,小等级指标:水分均值 数据源视图: 数据处理: ALTER TABLE T_QualMoisture_Middle ALTER COLUMN V_Produce_ID VARCHAR(50) ALTER TABLE T_QualMoisture_Middle ALTER COLUMN V_Batch_ID VARCHAR(50) DELETE F