| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 | <?phpnamespace Agent\Lib;use Dever;# 批量设置商品class Member_set{    public function __construct()    {        //Dever::load('manage/auth.init');    }    # 获取商品列表    public function goods_api()    {        $id = Dever::input('mid');        return Dever::load('agent/lib/set')->getData($id);    }    # 设置商品    public function home_api()    {        $data = array();        $data['mid'] = Dever::input('mid');        $data['search_api_mid'] = Dever::input('search_api_mid');        $data['host'] = Dever::url('lib/member_set.home?mid=' . $data['mid'], 'agent');        $data['url'] = Dever::url('lib/member_set.goods?mid=' . $data['mid'], 'agent');        $data['submit'] = Dever::url('lib/member_set.action_commit?json=1', 'agent');        return Dever::render('setMemberGoods', $data);    }    # 设置生产能力    public function action_commit_api()    {        $search_api_mid = Dever::input('search_api_mid');        $goods = Dever::input('goods');        if (!$goods) {            Dever::alert('请传入商品');        }        $goods = Dever::json_decode($goods);        $mid = Dever::input('mid');        $desc = Dever::input('desc');        $where['option_mid'] = $mid;        $where['set_state'] = 2;        Dever::db('agent/member_goods')->updates($where);        foreach ($goods as $k => $v) {            $type = 1;            $type_id = $k;            $sku_id = -1;            if (strstr($k, '_')) {                $temp = explode('_', $k);                $k = $temp[0];                $type_id = $temp[0];                $type = $temp[1];            }            if (strstr($k, '-')) {                $temp = explode('-', $k);                $type_id = $temp[0];                $sku_id = $temp[1];            }                        if ($v['total'] <= 0) {                continue;            }            $w = array();            $w['type'] = $type;            $w['type_id'] = $type_id;            $w['sku_id'] = $sku_id;            $w['mid'] = $mid;            if ($v['del'] == 2) {                $info = Dever::db('agent/member_goods')->one($w);                if ($info) {                    Dever::db('agent/member_goods')->update(array('where_id' => $info['id'], 'state' => 2));                }            } else {                $total = $v['total'];                                $cash = $price = 0;                                if ($type == 1) {                    $goods_info = Dever::load('goods/lib/info')->getInfoBySku($w['type_id'], $w['sku_id']);                    $price = $goods_info['price'];                    $cash = $goods_info['price'] * $total;                    if (isset($goods_info['sku'])) {                        $sku = '-' . $goods_info['sku']['string'];                    } else {                        $sku = '';                    }                    $name = $goods_info['name'] . $sku;                } elseif ($type == 2) {                    # 体验卡                    $card = Dever::db('card/info')->find($w['type_id']);                    if (!$card) {                        continue;                    }                    $name = $card['name'];                    if ($sku_id == -1) {                        if ($card['create_type'] == 2) {                            $cash = $price = $card['price'] * $total;                            $total = 1;                            $w['sku_id'] = Dever::load('card/lib/code')->create($card, 2, $mid, -1, $cash);                            if (!$w['sku_id']) {                                continue;                            }                        } else {                            $cash = $price = $card['price'];                            for($i=0; $i<$total;$i++) {                                $w['sku_id'] = Dever::load('card/lib/code')->create($card, 2, $mid, -1, $cash);                                if ($w['sku_id']) {                                    $w['total_num'] = 1;                                    $w['cash'] = $cash;                                    $w['price'] = $price;                                    $w['name'] = $name;                                    $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'], 1, 0, 1, $name, $desc);                                    }                                }                            }                            continue;                        }                    } else {                        $sku = explode(',', $sku_id);                        foreach ($sku as $v1) {                            $w['sku_id'] = $v1;                            $info = Dever::db('agent/member_goods')->one($w);                            if ($info) {                                $u = array();                                $u['where_id'] = $info['id'];                                $u['state'] = 1;                                $state = Dever::db('agent/member_goods')->update($u);                            }                        }                        continue;                    }                                    } elseif ($type == 3) {                    $prize = Dever::db('setting/prize')->find($w['type_id']);                    $price = $prize['price'];                    $cash = $prize['price'] * $w['total_num'];                    $name = $prize['name'];                }                $info = Dever::db('agent/member_goods')->one($w);                $w['total_num'] = $total;                $w['cash'] = $cash;                $w['price'] = $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'], $name, $desc);                    }                } else {                    $w['where_id'] = $info['id'];                    $w['state'] = 1;                    $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'], $name, $desc);                    }                }            }            # 记录日志        }        if ($search_api_mid) {            return Dever::url('project/database/list&table=member_goods&project=agent&search_option_state=1&search_api_mid='.$search_api_mid, 'manage');        } else {            return Dever::url('project/database/list&table=member_goods&project=agent&search_option_state=1&search_option_mid='.$mid, 'manage');        }            }    # 记录日志    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;    	$data['type'] = $type;    	$data['type_id'] = $type_id;    	$data['sku_id'] = $sku_id;    	$data['num'] = $num;    	$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);    	return $id;    }    /**     * 生成日志订单号     *     * @return mixed     */    public function getOrderId()    {        $where['order_num'] = Dever::order('QY');        $state = Dever::db('agent/member_goods_log')->one($where);        if (!$state) {            return $where['order_num'];        } else {            return $this->getOrderId();        }    }}
 |