dever 3 سال پیش
والد
کامیت
b44f372f8a

+ 32 - 1
service/agent/database/member_goods.php

@@ -118,7 +118,7 @@ return array
             'desc'      => '类型id',
             'match'     => 'is_numeric',
             'list_name' => '权益名称',
-            'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "{sku_id}")',
+            //'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "{sku_id}")',
             'list_order' => 5,
         ),
 
@@ -131,6 +131,19 @@ return array
             'match'     => 'is_numeric',
         ),
 
+        'name'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '权益名称',
+            'default'   => '',
+            'desc'      => '权益名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order' => 5,
+        ),
+
         'total_num'        => array
         (
             'type'      => 'int-11',
@@ -245,6 +258,24 @@ return array
             'col' => '*, total_num-sell_num as num',
         ),
 
+        'findAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'group' => 'type,type_id,sku_id',
+            'col' => '*,sum(total_num) as total_num, sum(sell_num) as sell_num, sum(cash) as cash',
+        ),
+
         # 更新售出量
         'incSell' => array
         (

+ 14 - 1
service/agent/database/member_goods_log.php

@@ -123,7 +123,7 @@ return array
             'desc'      => '类型id',
             'match'     => 'is_numeric',
             'list_name' => '权益名称',
-            'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "{sku_id}")',
+            //'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "{sku_id}")',
             'list_order' => 7,
         ),
 
@@ -136,6 +136,19 @@ return array
             'match'     => 'is_numeric',
         ),
 
+        'name'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '权益名称',
+            'default'   => '',
+            'desc'      => '权益名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order' => 7,
+        ),
+
         'num'        => array
         (
             'type'      => 'varchar-11',

+ 4 - 4
service/agent/lib/Dhorder.php

@@ -381,9 +381,9 @@ class Dhorder
                     Dever::db('agent/member_goods')->$method($up);
 
                     if ($type == 2) {
-                        Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']+$up['set_sell_num'], $name);
+                        Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']+$up['set_sell_num'], $info['name'], $name);
                     } else {
-                        Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], $name);
+                        Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], $info['name'], $name);
                     }
                     
                 }
@@ -398,9 +398,9 @@ class Dhorder
             Dever::db('agent/member_goods')->$method($up);
 
             if ($type == 2) {
-                Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']+$up['set_sell_num'], $name_3);
+                Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']+$up['set_sell_num'], $info['name'], $name_3);
             } else {
-                Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], $name_3);
+                Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], $info['name'], $name_3);
             }
             
         }

+ 12 - 2
service/agent/lib/Manage.php

@@ -333,6 +333,12 @@ class Manage
             $v['num'] = $v['num'] * $t;
             $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v['type_id'], $v['sku_id']);
             $price = $goods_info['price'] * $v['num'];
+            if (isset($goods_info['sku'])) {
+                $sku = ',' . $goods_info['sku']['string'];
+            } else {
+                $sku = '';
+            }
+            $name = $goods_info['name'] . $sku;
         } elseif ($v['type'] == 2) {
             $v['sku_id'] = -1;
             # 生成一个电子券
@@ -345,9 +351,11 @@ class Manage
             if (!$v['sku_id']) {
                 return false;
             }
+            $name = $card['name'];
         } elseif ($v['type'] == 3) {
             $prize = Dever::db('setting/prize')->find($v['type_id']);
             $price = $prize['price']*$v['num'];
+            $name = $prize['name'];
         }
 
         $where['mid'] = $order['mid'];
@@ -360,19 +368,21 @@ class Manage
             $up['where_id'] = $info['id'];
             $up['total_num'] = $info['total_num'] + $v['num'];
             $up['cash'] = $price;
+            $up['name'] = $name;
             $state = Dever::db('agent/member_goods')->update($up);
 
             if ($state) {
-                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], $info['total_num'], $up['total_num']);
+                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], $info['total_num'], $up['total_num'], $name);
             }
             
         } else {
             $up = $where;
             $up['total_num'] = $v['num'];
             $up['cash'] = $price;
+            $up['name'] = $name;
             $state = Dever::db('agent/member_goods')->insert($up);
             if ($state) {
-                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], 0, $up['total_num']);
+                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], 0, $up['total_num'], $name);
             }
         }
         return $price;

+ 13 - 4
service/agent/lib/Member_set.php

@@ -85,6 +85,12 @@ class Member_set
                 if ($type == 1) {
                     $goods_info = Dever::load('goods/lib/info')->getInfoBySku($w['type_id'], $w['sku_id']);
                     $price = $goods_info['price'] * $w['total_num'];
+                    if (isset($goods_info['sku'])) {
+                        $sku = ',' . $goods_info['sku']['string'];
+                    } else {
+                        $sku = '';
+                    }
+                    $name = $goods_info['name'] . $sku;
                 } elseif ($type == 2 && $sku_id == -1) {
                     # 体验卡
                     $card = Dever::db('card/info')->find($w['type_id']);
@@ -97,6 +103,7 @@ class Member_set
                     if (!$w['sku_id']) {
                         continue;
                     }
+                    $name = $card['name'];
                 } elseif ($type == 2 && $sku_id > 0) {
                     # 体验卡
                     $card = Dever::db('card/code')->find($w['sku_id']);
@@ -104,13 +111,14 @@ class Member_set
                 } elseif ($type == 3) {
                     $prize = Dever::db('setting/prize')->find($w['type_id']);
                     $price = $prize['price'] * $w['total_num'];
+                    $name = $prize['name'];
                 }
                 $w['cash'] = $price;
-
+                $w['name'] = $name;
                 if (!$info) {
                     $state = Dever::db('agent/member_goods')->insert($w);
                     if ($state) {
-                    	Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $v['total'], 0, $w['total_num'], $desc);
+                    	Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $v['total'], 0, $w['total_num'], $name, $desc);
                     }
                 } else {
                     $w['where_id'] = $info['id'];
@@ -118,7 +126,7 @@ class Member_set
                     $state = Dever::db('agent/member_goods')->update($w);
                     $num = $w['total_num']-$info['total_num'];
                     if ($state && $num > 0) {
-                    	Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $num, $info['total_num'], $w['total_num'], $desc);
+                    	Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $num, $info['total_num'], $w['total_num'], $name, $desc);
                     }
                 }
             }
@@ -135,7 +143,7 @@ class Member_set
     }
 
     # 记录日志
-    public function log($mid, $parent_order_num, $type, $type_id, $sku_id, $num, $pnum, $fnum, $desc = '')
+    public function log($mid, $parent_order_num, $type, $type_id, $sku_id, $num, $pnum, $fnum, $name = '', $desc = '')
     {
     	$data['mid'] = $mid;
     	$data['parent_order_num'] = $parent_order_num;
@@ -146,6 +154,7 @@ class Member_set
     	$data['pnum'] = $pnum;
     	$data['fnum'] = $fnum;
     	$data['desc'] = $desc;
+        $data['name'] = $name;
     	$data['order_num'] = $this->getOrderId();
 
     	$id = Dever::db('agent/member_goods_log')->insert($data);

+ 181 - 0
service/bill/database/goods_stat.php

@@ -0,0 +1,181 @@
+<?php
+
+$type = Dever::db('setting/role_goods')->config['set']['type'];
+
+return array
+(
+    # 表名
+    'name' => 'goods_stat',
+    # 显示给用户看的名称
+    'lang' => '权益统计',
+    'order' => 78,
+    'menu' => 'agent',
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'day'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '日期',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '',
+            'search'    => 'sday',
+            'search_buttons' => array
+            (
+                'sum' => 'total_num,sell_num,cash',
+                'option' => array(
+                    'day' => '按天',
+                    'week' => '按周',
+                    'month' => '按月',
+                ),
+                'group' => 'type,type_id,sku_id',
+            ),
+            'order'     => 'desc',
+            //'list'      => 'Dever::showDay("{day}")',
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+            'search'    => 'select',
+            'list'      => true,
+            'list_order' => 4,
+        ),
+
+        'type_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '类型id',
+            'default'   => '-1',
+            'desc'      => '类型id',
+            'match'     => 'is_numeric',
+            'list_name' => '权益名称',
+            //'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "{sku_id}")',
+            //'list_order' => 5,
+        ),
+
+        'sku_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'sku_id',
+            'default'   => '-1',
+            'desc'      => 'sku_id',
+            'match'     => 'is_numeric',
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '权益名称',
+            'default'   => '',
+            'desc'      => '权益名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order' => 5,
+        ),
+
+        'total_num'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '总数量',
+            'default'   => '0',
+            'desc'      => '总数量',
+            'match'     => 'is_numeric',
+            //'list_name' => '剩余数量/总数量',
+            //'list'      => '{total_num} - {sell_num} . " / " . {total_num}',
+            'list'      => true,
+            'list_order' => 6,
+        ),
+
+        'sell_num'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '已兑换数量',
+            'default'   => '0',
+            'desc'      => '已兑换数量',
+            'match'     => 'option',
+            'list'      => true,
+            'list_order' => 7,
+        ),
+
+        'cash'      => array
+        (
+            'type'      => 'float-11,2',
+            'name'      => '总价值',
+            'default'   => '0',
+            'desc'      => '总价值',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'list'      => true,
+            'list_order' => 8,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '统计时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'delete' => false,
+        'edit' => false,
+        'excel' => true,
+    ),
+
+    'request' => array
+    (
+        'list' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+                'start_day' => array('yes-day', '>='),
+                'end_day' => array('yes-day', '<='),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('day' => 'desc', 'cdate' => 'desc'),
+            'page' => array(20, 'list'),
+            'group' => 'type,type_id,sku_id',
+            'col' => '*,sum(total_num) as total_num, sum(sell_num) as sell_num, sum(cash) as cash',
+        ),
+    ),
+);

+ 39 - 0
service/bill/lib/Cron.php

@@ -42,6 +42,45 @@ class Cron
         return 'ok';
     }
 
+    public function goods_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['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'];
+
+                    if ($info) {
+                        $data['where_id'] = $info['id'];
+                        Dever::db('bill/goods_stat')->update($data);
+                    } else {
+                        Dever::db('bill/goods_stat')->insert($data);
+                    }
+                }
+            }
+        }
+    }
+
     # 区域分润
     /*
     区域毛利  =  区域内所有门店的采购商品的零售价总额  x  30%