123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- <?php
- /**
- * 虚拟兑码退款模型
- *
- *
- *
- *
-
- */
- defined('InShopNC') or exit('Access Invalid!');
- class vr_refundModel extends Model{
- public function __construct() {
- parent::__construct();
- }
- /**
- * 增加退款
- *
- * @param
- * @return int
- */
- public function addRefund($refund_array, $order = array()) {
- if (!empty($order) && is_array($order)) {
- $refund_array['order_id'] = $order['order_id'];
- $refund_array['order_sn'] = $order['order_sn'];
- $refund_array['store_id'] = $order['store_id'];
- $refund_array['store_name'] = $order['store_name'];
- $refund_array['buyer_id'] = $order['buyer_id'];
- $refund_array['buyer_name'] = $order['buyer_name'];
- $refund_array['goods_id'] = $order['goods_id'];
- $refund_array['goods_name'] = $order['goods_name'];
- $refund_array['goods_image'] = $order['goods_image'];
- $refund_array['commis_rate'] = $order['commis_rate'];
- }
- $refund_array['refund_sn'] = $this->getRefundsn($refund_array['store_id']);
- try {
- $trans = new trans_wapper($this,__METHOD__);
- $refund_id = $this->table('vr_refund')->insert($refund_array);
- $code_array = explode(',', $refund_array['code_sn']);
- $model_vr_order = Model('vr_order');
- $model_vr_order->editOrderCode(array('refund_lock'=> 1),array('vr_code'=> array('in',$code_array)));//退款锁定
- $trans->commit();
- return $refund_id;
- } catch (Exception $e) {
- $trans->rollback();
- return false;
- }
- }
- /**
- * 平台退款处理
- *
- * @param
- * @return bool
- */
- public function editOrderRefund($refund) {
- $refund_id = $refund['refund_id'];
- $refund_lock = '0';//退款锁定状态:0为正常,1为锁定,2为同意
- $model_vr_order = Model('vr_order');
- try
- {
- $trans = new trans_wapper($this,__METHOD__);
- $state = $this->editRefund(array('refund_id'=> $refund_id),$refund);////更新退款
- if ($state && $refund['admin_state'] == '2') {//审核状态:1为待审核,2为同意,3为不同意
- $refund_lock = '2';
- $order_id = $refund['order_id'];//订单编号
- $order = $model_vr_order->getOrderInfo(array('order_id'=> $order_id));
- $order_amount = $order['order_amount'];//订单金额
- $rcb_amount = $order['rcb_amount'];//充值卡支付金额
- $predeposit_amount = $order_amount-$order['refund_amount']-$rcb_amount;//可退预存款金额
- $model_predeposit = Model('predeposit');
- if (($rcb_amount > 0) && ($refund['refund_amount'] > $predeposit_amount)) {//退充值卡
- $log_array = array();
- $log_array['member_id'] = $order['buyer_id'];
- $log_array['member_name'] = $order['buyer_name'];
- $log_array['order_sn'] = $order['order_sn'];
- $log_array['amount'] = $refund['refund_amount'];
- if ($predeposit_amount > 0) {
- $log_array['amount'] = $refund['refund_amount']-$predeposit_amount;
- }
- $state = $model_predeposit->changeRcb('refund', $log_array);//增加买家可用充值卡金额
- }
- if ($predeposit_amount > 0) {//退预存款
- $log_array = array();
- $log_array['member_id'] = $order['buyer_id'];
- $log_array['member_name'] = $order['buyer_name'];
- $log_array['order_sn'] = $order['order_sn'];
- $log_array['amount'] = $refund['refund_amount'];//退预存款金额
- if ($refund['refund_amount'] > $predeposit_amount) {
- $log_array['amount'] = $predeposit_amount;
- }
- $state = $model_predeposit->changePd('refund', $log_array);//增加买家可用预存款金额
- }
- if ($state) {
- $order_array = array();
- $order_amount = $order['order_amount'];//订单金额
- $refund_amount = $order['refund_amount']+$refund['refund_amount'];//退款金额
- $order_array['refund_state'] = ($order_amount-$refund_amount) > 0 ? 1:2;
- $order_array['refund_amount'] = ncPriceFormat($refund_amount);
- $state = $model_vr_order->editOrder($order_array,array('order_id'=> $order_id));//更新订单退款
- }
- }
- if ($state) {
- $code_array = explode(',', $refund['code_sn']);
- $state = $model_vr_order->editOrderCode(array('refund_lock'=> $refund_lock),array('vr_code'=> array('in',$code_array)));//更新退款的兑换码
- if ($state && $refund['admin_state'] == '2') {
- Logic('vr_order')->changeOrderStateSuccess($order_id);//更新订单状态
- }
- }
- $trans->commit();
- return $state;
- } catch (Exception $e) {
- $trans->rollback();
- return false;
- }
- }
- /**
- * 修改退款
- *
- * @param
- * @return bool
- */
- public function editRefund($condition, $data) {
- if (empty($condition)) {
- return false;
- }
- if (is_array($data)) {
- $result = $this->table('vr_refund')->where($condition)->update($data);
- return $result;
- } else {
- return false;
- }
- }
- /**
- * 退款编号
- *
- * @param
- * @return array
- */
- public function getRefundsn($store_id) {
- $result = mt_rand(100,999).substr(500+$store_id,-3).date('ymdHis');
- return $result;
- }
- /**
- * 退款记录
- *
- * @param
- * @return array
- */
- public function getRefundList($condition = array(), $page = '', $limit = '', $fields = '*') {
- $result = $this->table('vr_refund')->field($fields)->where($condition)->page($page)->limit($limit)->order('refund_id desc')->select();
- return $result;
- }
- /**
- * 取得退款记录的数量
- * @param array $condition
- */
- public function getRefundCount($condition) {
- $result = $this->table('vr_refund')->where($condition)->count();
- return $result;
- }
- /**
- * 详细页右侧订单信息
- *
- * @param
- * @return array
- */
- public function getRightOrderList($order_condition){
- $order_id = $order_condition['order_id'];
- $model_vr_order = Model('vr_order');
- $order_info = $model_vr_order->getOrderInfo($order_condition);
- Tpl::output('order',$order_info);
- $order_list = array();
- $order_list[$order_id] = $order_info;
- $order_list = $model_vr_order->getCodeRefundList($order_list);//没有使用的兑换码列表
- $order_info = $order_list[$order_id];
- $model_store = Model('store');
- $store = $model_store->getStoreInfo(array('store_id' => $order_info['store_id']));
- Tpl::output('store',$store);
- //显示退款
- $order_info['if_refund'] = $model_vr_order->getOrderOperateState('refund',$order_info);
- if ($order_info['if_refund']) {
- $code_list = $order_info['code_list'];
- Tpl::output('code_list',$code_list);
- }
- return $order_info;
- }
- /*
- * 获得退款的店铺列表
- * @param array $complain_list
- * @return array
- */
- public function getRefundStoreList($list) {
- $store_ids = array();
- if (!empty($list) && is_array($list)) {
- foreach ($list as $key => $value) {
- $store_ids[] = $value['store_id'];//店铺编号
- }
- }
- $field = 'store_id,store_name,member_id,member_name,seller_name,store_company_name,store_qq,store_ww,store_phone,store_domain';
- return Model('store')->getStoreMemberIDList($store_ids, $field);
- }
- /**
- * 向模板页面输出退款状态
- *
- * @param
- * @return array
- */
- public function getRefundStateArray($type = 'all') {
- $admin_array = array(
- '1' => '待审核',
- '2' => '同意',
- '3' => '不同意'
- );//退款状态:1为待审核,2为同意,3为不同意
- Tpl::output('admin_array', $admin_array);
- $state_data = array(
- 'admin' => $admin_array
- );
- if ($type == 'all') return $state_data;//返回所有
- return $state_data[$type];
- }
- }
|