|  | @@ -64,7 +64,7 @@ class Refund
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # 更新退款记录
 | 
	
		
			
				|  |  | -    public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1)
 | 
	
		
			
				|  |  | +    public function up($order_id, $order_goods_id, $status, $price, $p_price, $num = false, $desc = '', $pic = '', $process = 1, $order = array())
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          $data['order_id'] = $order_id;
 | 
	
		
			
				|  |  |          if (!$order_goods_id) {
 | 
	
	
		
			
				|  | @@ -92,6 +92,10 @@ class Refund
 | 
	
		
			
				|  |  |          $data['desc'] = $desc;
 | 
	
		
			
				|  |  |          $data['pic'] = $pic;
 | 
	
		
			
				|  |  |          $data['process'] = $process;
 | 
	
		
			
				|  |  | +        if ($order && isset($order['parent_type']) && $order['parent_type'] > 1) {
 | 
	
		
			
				|  |  | +            $data['parent_type'] = $order['parent_type'];
 | 
	
		
			
				|  |  | +            $data['parent_order_id'] = $order['parent_order_id'];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if ($info) {
 | 
	
		
			
				|  |  |              $data['where_id'] = $info['id'];
 | 
	
		
			
				|  |  |              $state = Dever::db($this->refund_table)->update($data);
 | 
	
	
		
			
				|  | @@ -179,7 +183,7 @@ class Refund
 | 
	
		
			
				|  |  |              $cash = round($cash, 2);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if ($cash >= 0) {
 | 
	
		
			
				|  |  | -                $log = $this->up($data['id'], $order_goods_id, $status, $cash, $p_cash, $num, $desc, $pic, $process);
 | 
	
		
			
				|  |  | +                $log = $this->up($data['id'], $order_goods_id, $status, $cash, $p_cash, $num, $desc, $pic, $process, $data);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (!$log) {
 | 
	
		
			
				|  |  |                      Dever::alert('退款失败');
 | 
	
	
		
			
				|  | @@ -306,28 +310,30 @@ class Refund
 | 
	
		
			
				|  |  |                          $state = Dever::db($this->order_table)->update($update);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    if (isset($order['parent_type']) && $order['parent_type'] > 1 && isset($order['parent_order_id']) && $order['parent_order_id']) {
 | 
	
		
			
				|  |  | -                        # 把关联订单也退掉
 | 
	
		
			
				|  |  | -                        $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
 | 
	
		
			
				|  |  | -                        if ($goods_info) {
 | 
	
		
			
				|  |  | +                    if ($buy_status != -1) {
 | 
	
		
			
				|  |  | +                        if (isset($order['parent_type']) && $order['parent_type'] > 1 && isset($order['parent_order_id']) && $order['parent_order_id']) {
 | 
	
		
			
				|  |  | +                            # 把关联订单也退掉
 | 
	
		
			
				|  |  | +                            $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
 | 
	
		
			
				|  |  | +                            if ($goods_info) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                            $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                    } elseif (isset($order['shop_type']) && $order['shop_type'] == 2) {
 | 
	
		
			
				|  |  | -                        # 把关联订单也退掉
 | 
	
		
			
				|  |  | -                        $buy_order = Dever::db('shop/buy_order')->select(array('parent_type' => 2, 'parent_order_id' => $info['order_id']));
 | 
	
		
			
				|  |  | -                        $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
 | 
	
		
			
				|  |  | -                        if ($buy_order && $goods_info) {
 | 
	
		
			
				|  |  | -                            foreach ($buy_order as $k => $v) {
 | 
	
		
			
				|  |  | -                                $temp = Dever::db('shop/buy_order_goods')->find(array('order_id' => $v['id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
 | 
	
		
			
				|  |  | -                                if ($temp) {
 | 
	
		
			
				|  |  | -                                    $temp['type'] = $v['type'];
 | 
	
		
			
				|  |  | -                                    $temp['type_id'] = $v['type_id'];
 | 
	
		
			
				|  |  | -                                    $buy_order_goods = $temp;
 | 
	
		
			
				|  |  | +                               $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        } elseif (isset($order['shop_type']) && $order['shop_type'] == 2) {
 | 
	
		
			
				|  |  | +                            # 把关联订单也退掉
 | 
	
		
			
				|  |  | +                            $buy_order = Dever::db('shop/buy_order')->select(array('parent_type' => 2, 'parent_order_id' => $info['order_id']));
 | 
	
		
			
				|  |  | +                            if ($buy_order) {
 | 
	
		
			
				|  |  | +                                $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
 | 
	
		
			
				|  |  | +                                foreach ($buy_order as $k => $v) {
 | 
	
		
			
				|  |  | +                                    $temp = Dever::db('shop/buy_order_goods')->find(array('order_id' => $v['id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
 | 
	
		
			
				|  |  | +                                    if ($temp) {
 | 
	
		
			
				|  |  | +                                        $temp['type'] = $v['type'];
 | 
	
		
			
				|  |  | +                                        $temp['type_id'] = $v['type_id'];
 | 
	
		
			
				|  |  | +                                        $buy_order_goods = $temp;
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    }   
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  $update['where_id'] = $order['id'];
 | 
	
	
		
			
				|  | @@ -368,17 +374,21 @@ class Refund
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          $data = Dever::db($this->goods_table)->getDataByIds(array('ids' => $info['order_goods_id']));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if ($this->type == 'sell' && $process == 2) {
 | 
	
		
			
				|  |  |              # 如果是销售单,退款后要减少销量
 | 
	
		
			
				|  |  |              Dever::load('shop/lib/goods')->oper($order, 2, 2, $data);
 | 
	
		
			
				|  |  |          } elseif ($this->type == 'buy' && $process == 3 && ($order['status'] == 5 || $order['status'] == 6)) {
 | 
	
		
			
				|  |  |              # 如果是采购单,退款后要恢复库存
 | 
	
		
			
				|  |  |              Dever::load('shop/lib/goods')->oper($order, 1, 1, $data);
 | 
	
		
			
				|  |  | +        } elseif ($this->type == 'buy' && $process == 2 && $order['source_type'] == 2) {
 | 
	
		
			
				|  |  | +            # 如果是采购单,退款后要恢复库存
 | 
	
		
			
				|  |  | +            Dever::load('store/lib/goods')->oper($order['source_id'], 2, 2, $data);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (isset($sell_order_goods) && $sell_order_goods) {
 | 
	
		
			
				|  |  | -            Dever::load('shop/lib/refund')->set('sell')->apply(2, $sell_order_goods['shop_id'], $sell_order_goods['order_id'], $sell_order_goods['id'], 2, 0, '退货退款');
 | 
	
		
			
				|  |  | +            Dever::load('shop/lib/refund')->set('sell')->apply(2, $sell_order_goods['shop_id'], $sell_order_goods['order_id'], $sell_order_goods['id'], 2, 0, '退货退款', '', 2, -1);
 | 
	
		
			
				|  |  |          } elseif (isset($buy_order_goods) && $buy_order_goods) {
 | 
	
		
			
				|  |  | -            Dever::load('shop/lib/refund')->set('buy')->apply($buy_order_goods['type'], $buy_order_goods['type_id'], $buy_order_goods['order_id'], $buy_order_goods['id'], $buy_status, 0, $info['desc'], '', 2);
 | 
	
		
			
				|  |  | +            Dever::load('shop/lib/refund')->set('buy')->apply($buy_order_goods['type'], $buy_order_goods['type_id'], $buy_order_goods['order_id'], $buy_order_goods['id'], $buy_status, 0, $info['desc'], '', 2, -1);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return 'reload';
 | 
	
	
		
			
				|  | @@ -452,9 +462,11 @@ class Refund
 | 
	
		
			
				|  |  |              $msg_param['name'] = $shop['name'];
 | 
	
		
			
				|  |  |              $msg_param = Dever::json_encode($msg_param);
 | 
	
		
			
				|  |  |              $msg = '您有一笔订单已退款,退款将在3个工作日内返回原支付账户';
 | 
	
		
			
				|  |  | -            Dever::load('message/lib/data')->push(-1, $data['uid'], '退款成功通知', $msg, 2, 1, false, $msg_param);
 | 
	
		
			
				|  |  | +            if (Dever::project('message')) {
 | 
	
		
			
				|  |  | +                Dever::load('message/lib/data')->push(-1, $data['uid'], '退款成功通知', $msg, 2, 1, false, $msg_param);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (Dever::load('wechat_applet')) {
 | 
	
		
			
				|  |  | +            if (Dever::project('wechat_applet')) {
 | 
	
		
			
				|  |  |                  $config = Dever::db($this->order_table)->config;
 | 
	
		
			
				|  |  |                  $user = Dever::db('passport/wechat')->one(array('uid' => $data['uid'], 'system_id' => 1, 'system_source' => 5));
 | 
	
		
			
				|  |  |                  if ($user && $user['openid']) {
 |