123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558 |
- <?php
- namespace Bill\Lib;
- use Dever;
- class Cron
- {
- # 校正金额和业绩
- public function jz_api()
- {
- $member = Dever::db('agent/member')->select();
- if ($member) {
- foreach ($member as $v) {
- $where['mid'] = $v['id'];
- $data = Dever::db('bill/cash')->getCash($where);
- if ($data && $data['total']) {
- Dever::db('agent/member')->update(array('where_id' => $v['id'], 'cash' => $data['total']));
- }
- }
- }
-
- }
- public function sell_api()
- {
- # 按月份统计团队业绩和直推业绩
- $month = Dever::input('month', date('Y-m'));
- $start_time = $month .'-01 00:00:00';
- $end_time = date('Y-m-d', strtotime($start_time. ' +1 month -1 day')).' 23:59:59';
- // $where['type'] = '2';
- $where['start'] = Dever::maketime($start_time);
- $where['end'] = Dever::maketime($end_time);
- $data = Dever::db('bill/sell')->getNumByTime($where);
- if ($data) {
- foreach ($data as $k => $v) {
- if ($v['num'] > 0) {
- $w = array();
- $w['mid'] = $v['mid'];
- $w['month'] = $where['start'];
- $w['clear'] = true;
- $info = Dever::db('bill/sell_stat')->find($w);
-
- $where['mid'] = $v['mid'];
- $where['type'] = $v['type'];
- $total = Dever::db('bill/sell')->getNumByTimeOne($where);
- if ($v['type'] == 1) {
- $w['new_ztnum'] = $v['num'];
- if ($total) {
- $w['zt_num'] = $total['num'];
- }
- } else {
- $w['new_num'] = $v['num'];
- if ($total) {
- $w['num'] = $total['num'];
- }
- }
-
- if ($info) {
- $w['where_id'] = $info['id'];
- Dever::db('bill/sell_stat')->update($w);
- } else {
- Dever::db('bill/sell_stat')->insert($w);
- }
- }
- }
- }
- return 'ok';
- }
- # 权益使用情况统计:类型、商品名、总发放数量、总使用数量
- public function goods_api()
- {
- $num = Dever::input('num', 5);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
- for($i=0; $i<=$day; $i++) {
- $where['start'] = $start + 86400*$i;
- $where['end'] = $start + 86400*$i + 86399;
- $goods = Dever::db('agent/member_goods')->findAll($where);
- if ($goods) {
- foreach ($goods as $k => $v) {
- $data = array();
- $data['day'] = $where['start'];
- $data['type'] = $v['type'];
- $data['type_id'] = $v['type_id'];
- $data['sku_id'] = $v['sku_id'];
- $info = Dever::db('bill/goods_stat')->find($data);
- $data['total_num'] = $v['total_num'];
- $data['sell_num'] = $v['sell_num'];
- $data['cash'] = $v['cash'];
- $data['price'] = $v['price'];
- $data['name'] = $v['name'];
- if ($info) {
- $data['where_id'] = $info['id'];
- Dever::db('bill/goods_stat')->update($data);
- } else {
- Dever::db('bill/goods_stat')->insert($data);
- }
- }
- }
- }
- }
- # 区域分润
- /*
- 区域毛利 = 区域内所有门店的采购商品的零售价总额 x 30%
- 城市分润 = 区域毛利 x 1%
- 区县分润 = 区域毛利 x 3%
- 街道分润 = 区域毛利 x 5%
- */
- public function area_api()
- {
- # 获取所有代理商
- $where['status'] = 2;
- $member = Dever::db('agent/member')->select($where);
- if ($member) {
- foreach ($member as $k => $v) {
- # 获取区域内门店的利润
- $role = Dever::db('setting/role')->find($v['role']);
- $profit = $role['profit'];
- if (!$profit) {
- continue;
- }
- $temp = explode(',', $v['area']);
- if ($role['type'] == 2) {
- $area = '';
- if ($role['area'] == 1 && isset($temp[1])) {
- # 城市
- $area = $temp[0] . ',' . $temp[1];
- } elseif ($role['area'] == 2 && isset($temp[2])) {
- # 区县
- $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2];
- } elseif ($role['area'] == 3 && isset($temp[3])) {
- # 街道
- $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2] . ',' . $temp[3];
- }
- if ($area) {
-
- }
- }
- }
- }
- }
- # 营业额报表:日期,订单数,确认订单数,确认订单额度,新增代理商数量
- public function order_api()
- {
- $num = Dever::input('num', 5);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
- for($i=0; $i<=$day; $i++) {
- $where = array();
- $where['fstart'] = $start + 86400*$i;
- $where['fend'] = $start + 86400*$i + 86399;
- $data = array();
- $data['day'] = $where['fstart'];
- $info = Dever::db('bill/order_stat')->find($data);
- $data['num'] = Dever::db('agent/order')->getNum($where);
- $where['status'] = 4;
- $data['yes_num'] = Dever::db('agent/order')->getNum($where);
- $cash = Dever::db('agent/order')->getCash($where);
- if ($cash) {
- $data['cash'] = $cash['total'];
- } else {
- $data['cash'] = 0;
- }
- $where['status'] = 2;
- $data['daili_num'] = Dever::db('agent/member')->getNum($where);
- $where['status'] = '-2,1,2,3,6';//驳回不加入
- $where['start'] = $where['fstart'];
- $where['end'] = $where['fend'];
- unset($where['fstart']);
- unset($where['fend']);
- $data['no_num'] = Dever::db('agent/order')->getNum($where);
- $no_cash = Dever::db('agent/order')->getCash($where);
- if ($no_cash) {
- $data['no_cash'] = $no_cash['total'];
- } else {
- $data['no_cash'] = 0;
- }
- if (!$info) {
- Dever::db('bill/order_stat')->insert($data);
- } else {
- $data['where_id'] = $info['id'];
- Dever::db('bill/order_stat')->update($data);
- }
- }
- }
- # 代理商统计:日期,新增代理商,城市代理商,区县代理商,街道代理商,创客,消客
- public function member_api()
- {
- $num = Dever::input('num', 5);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
-
- for($i=0; $i<=$day; $i++) {
- $where = array();
- $where['status'] = 2;
- $where['fstart'] = $start + 86400*$i;
- $where['fend'] = $start + 86400*$i + 86399;
- $data = array();
- $data['day'] = $where['fstart'];
- $info = Dever::db('bill/member_stat')->find($data);
- $data['num'] = Dever::db('agent/member')->getNum($where);
- $where['role'] = 2;
- $data['city_num'] = Dever::db('agent/member')->getNum($where);
- $where['role'] = 3;
- $data['county_num'] = Dever::db('agent/member')->getNum($where);
- $where['role'] = 4;
- $data['town_num'] = Dever::db('agent/member')->getNum($where);
- $where['role'] = 5;
- $data['cf_num'] = Dever::db('agent/member')->getNum($where);
- $where['role'] = 6;
- $data['ck_num'] = Dever::db('agent/member')->getNum($where);
- if (!$info) {
- Dever::db('bill/member_stat')->insert($data);
- } else {
- $data['where_id'] = $info['id'];
- Dever::db('bill/member_stat')->update($data);
- }
- }
- }
- # 资金账户统计:日期,总收入,代理费,软件服务费,赠送商品价值,直推佣金,市场培训费
- # 总收入金额 = 代理费金额 + 软件服务费 - 赠送商品价值 - 直推分佣 - 市场培训费 - 活动分佣 - 手动发放
- public function cash_in_api()
- {
- $num = Dever::input('num', 5);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
-
- for($i=0; $i<=$day; $i++) {
- $where = array();
- $where['start'] = $start + 86400*$i;
- $where['end'] = $start + 86400*$i + 86399;
- $data = array();
- $data['day'] = $where['start'];
- $info = Dever::db('bill/cash_in_stat')->find($data);
- $where['status'] = 4;
- $data['daili_cash'] = 0;
- $cash = Dever::db('agent/order')->getDailiCash($where);
- if ($cash) {
- $data['daili_cash'] = $cash['total'];
- }
- $data['soft_cash'] = 0;
- $cash = Dever::db('agent/order')->getSoftCash($where);
- if ($cash) {
- $data['soft_cash'] = $cash['total'];
- }
- $data['goods_cash'] = 0;
- $cash = Dever::db('agent/order')->getGoodsCash($where);
- if ($cash) {
- $data['goods_cash'] = $cash['total'];
- }
- unset($where['status']);
- $where['type'] = 1;
- $data['zt_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['zt_cash'] = $cash['total'];
- }
- $where['type'] = 2;
- $data['sc_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['sc_cash'] = $cash['total'];
- }
- $where['type'] = 4;
- $data['hd_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['hd_cash'] = $cash['total'];
- }
- $where['type'] = 10;
- $data['sd_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['sd_cash'] = $cash['total'];
- }
- $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'] - $data['hd_cash'] - $data['sd_cash'];
- if (!$info) {
- Dever::db('bill/cash_in_stat')->insert($data);
- } else {
- $data['where_id'] = $info['id'];
- Dever::db('bill/cash_in_stat')->update($data);
- }
- }
- }
- # 应付金额 = 现存余额 + 未审核提现 + 已审核待发放提现。
- /*public function cash_out_api()
- {
- $num = Dever::input('num', 1);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
-
- for($i=0; $i<=$day; $i++) {
- $where = array();
- $where['start'] = $start + 86400*$i;
- $where['end'] = $start + 86400*$i + 86399;
- $data = array();
- $data['day'] = $where['start'];
- $info = Dever::db('bill/cash_in_stat')->find($data);
- $where['status'] = 4;
- $data['daili_cash'] = 0;
- $cash = Dever::db('agent/order')->getDailiCash($where);
- if ($cash) {
- $data['daili_cash'] = $cash['total'];
- }
- $data['soft_cash'] = 0;
- $cash = Dever::db('agent/order')->getSoftCash($where);
- if ($cash) {
- $data['soft_cash'] = $cash['total'];
- }
- $data['goods_cash'] = 0;
- $cash = Dever::db('agent/order')->getGoodsCash($where);
- if ($cash) {
- $data['goods_cash'] = $cash['total'];
- }
- unset($where['status']);
- $where['type'] = 1;
- $data['zt_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['zt_cash'] = $cash['total'];
- }
- $where['type'] = 2;
- $data['sc_cash'] = 0;
- $cash = Dever::db('bill/cash')->getCash($where);
- if ($cash) {
- $data['sc_cash'] = $cash['total'];
- }
- $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'];
- if (!$info) {
- Dever::db('bill/cash_in_stat')->insert($data);
- } else {
- $data['where_id'] = $info['id'];
- Dever::db('bill/cash_in_stat')->update($data);
- }
- }
- }
- */
- #财务应付报表:
- #应付金额 = 现存余额 + 未审核提现 + 已审核待发放提现
- public function cash_up_api()
- {
- $num = Dever::input('num', 5);
- $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
- $end = Dever::input('end', date('Y-m-d'));
- $start = Dever::maketime($start . ' 00:00:00');
- $end = Dever::maketime($end . ' 23:59:59');
- $day = intval(($end - $start)/86400);
-
- for($i=0; $i<=$day; $i++) {
- $where = array();
- $where['start'] = $start + 86400*$i;
- $where['end'] = $start + 86400*$i + 86399;
- $data = array();
- $data['day'] = $where['start'];
- $info = Dever::db('bill/cash_up_stat')->find($data);
- /*
- 现存余额=tixian.php下的cash
- 未审核提现=cash下的status=1,type=11
- 已审核待发放提现=tixian.php下的status=1,cash
- */
- #现存余额
- $data['xc_cash']=0;
- $where['status'] = 2;
- $cash=Dever::db('bill/tixian')->gettxCash($where);
- if($cash){
- $data['xc_cash']=$cash['total']*(-1);
- }
- #未审核提现
- $where['status']=-1;
- $data['ws_cash']=0;
- // print_R($where);die;
- $tixian=Dever::db('bill/tixian')->getwsCash($where);
- if($tixian){
- // $where['status']=1;
- // $where['type']=11;
- // $where['mid']=$tixian['mid'];
- // $cash=Dever::db('bill/cash')->getwsCash($where);
- $data['ws_cash']=$tixian['total']*(-1);
- }
- #已审核待发放提现
- $data['df_cash']=0;
- $where['status']=1;
- $cash=Dever::db('bill/tixian')->getdfCash($where);
- if($cash){
- $data['df_cash'] = $cash['total'] *(-1);
- }
- $data['cash'] = $data['xc_cash'] + $data['ws_cash'] + $data['df_cash'];
- if (!$info) {
- Dever::db('bill/cash_up_stat')->insert($data);
- } else {
- $data['where_id'] = $info['id'];
- Dever::db('bill/cash_up_stat')->update($data);
- }
- }
- }
- #归店统计
- public function shop_stat_api(){
- $month = Dever::input('month', date('Y-m'));
- $month = date('Y-m',$month);
- $start_time = $month .'-01 00:00:00';
- $end_time = date('Y-m-d', strtotime($start_time. ' +1 month -1 day')).' 23:59:59';
- $start = Dever::maketime($start_time);
- $end = Dever::maketime($end_time);
- $shop = Dever::db('shop/info')->getAll();
- foreach($shop as $k => $v){
- #代理商总数量
- $shop[$k]['num'] = Dever::db('agent/member_shop_log')->getAll(array('start'=>$start,'end'=>$end,'new_shop_id'=>$v['id'],'state'=>1));
- $log = Dever::db('agent/member_shop_log')->getGui(array('start'=>$start,'end'=>$end,'new_shop_id'=>$v['id'],'state'=>1));
- foreach($log as $k1 => $v1){
- if($v['id'] == $v1['new_shop_id']){
- #创V数量
- $v_num[] = Dever::db('agent/member')->getCount(array('id'=>$v1['mid'],'role'=>8,'state'=>1));
- #创V名额外数量
- $out_num[] = Dever::db('agent/member')->getCount(array('id'=>$v1['id'],'role'=>8,'prize_type'=>1,'state'=>1));
- #代理商业绩
- $shop[$k]['money'][] = Dever::db('agent/order')->getCount(array('start'=>$start,'end'=>$end,'mid'=>$v1['mid'],'state'=>1));
- #创V业绩
- $shop[$k]['v_money'][] = Dever::db('agent/order')->getVCount(array('start'=>$start,'end'=>$end,'mid'=>$v1['mid'],'role'=>8,'state'=>1));
- #创V名额外业绩
- $out[] = Dever::db('agent/member')->find(array('id'=>$v1['mid'],'role'=>8,'prize_type'=>1,'state'=>1));
- }
- }
- foreach($out as $a => $b){
- if(isset($b['id']) && $b['id']){
- $shop[$k]['out_money'][] = Dever::db('agent/order')->getVCount(array('start'=>$start,'end'=>$end,'mid'=>$b['id'],'role'=>8,'state'=>1));
- }
- }
- #创V总数量
- if(isset($v_num) && $v_num){
- $shop[$k]['v_num'] = array_sum($v_num);
- }else{
- $shop[$k]['v_num'] = 0;
- }
- #创V名额内外的数量
- if(isset($out_num) && $out_num){
- $shop[$k]['out_num'] = array_sum($out_num);
- $shop[$k]['nei_num'] = $shop[$k]['v_num'] - $shop[$k]['out_num'];
- }else{
- $shop[$k]['out_num'] = 0;
- $shop[$k]['nei_num'] = 0;
- }
- #除去创V的代理商总数量
- $shop[$k]['dl_num'] = $shop[$k]['num'] - $shop[$k]['v_num'];
-
- }
- foreach($shop as $key => $val){
- #代理商的总业绩
- if(isset($val['money']) && $val['money']){
- $shop[$key]['money'] = array_sum(array_map(function($val){return $val['total'];}, $val['money']));
- }else{
- $shop[$key]['money'] = 0;
- }
-
- #创V总业绩
- if(isset($val['v_money']) && $val['v_money']){
- $shop[$key]['v_money'] = array_sum(array_map(function($val){return $val['total'];}, $val['v_money']));
- }else{
- $shop[$key]['v_money'] = 0;
- }
- if(isset($val['out_money']) && $val['out_money']){
- $shop[$key]['out_money'] = array_sum(array_map(function($val){return $val['total'];}, $val['out_money']));
- $shop[$key]['nei_money'] = $shop[$key]['v_money'] - $shop[$key]['out_money'];
- }else{
- $shop[$key]['out_money'] = 0;
- $shop[$key]['nei_money'] = 0;
- }
-
- $shop[$key]['dl_money'] = $shop[$key]['money']-$shop[$key]['v_money'];
- $insert['shop_id'] = $val['id'];
- $insert['num'] = $val['num'];
- $insert['dl_num'] = $val['dl_num'];
- $insert['v_num'] = $val['v_num'];
- $insert['money'] = $shop[$key]['money'];
- $insert['dl_money'] = $shop[$key]['dl_money'];
- $insert['v_money'] = $shop[$key]['v_money'];
- $insert['month'] = $start;
- $insert['out_num'] = $val['out_num'];
- $insert['nei_num'] = $val['nei_num'];
- $insert['out_money'] = $shop[$key]['out_money'];
- $insert['nei_money'] = $shop[$key]['nei_money'];
- $res = Dever::db('bill/shop_stat')->find(array('month'=>$start));
- if($res){
- $insert['where_id'] = $res['id'];
- Dever::db('bill/shop_stat')->update($insert);
- }else{
- Dever::db('bill/shop_stat')->insert($insert);
- }
-
- }
- return 'ok';
- }
- }
|