Commit 143d56c7 authored by wwccw0591's avatar wwccw0591

upd

parent 7f1fc3e2
...@@ -25,6 +25,7 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -25,6 +25,7 @@ class RefundServiceModel extends \Business\AbstractModel
{ {
private $orderField = "buyer_id as buyerId,buyer_name as buyerName,order_id as orderId,order_sn as orderSn,store_name as storeName,add_time as AddTime,store_id as storeId,goods_amount as goodsAmount,shipping_fee as shippingFee,order_amount as orderAmount,shipping_type as shippingType,payment_type as paymentType,order_state as orderState,shipping_fee as shippingFee,refund_state as refundState,order_type as orderType,is_receive_payment as isReceivePayment,need_shipping_fee as needShippingFee,payment_code as paymentCode,delay_time as delayTime,gmt_update as gmtUpdate"; private $orderField = "buyer_id as buyerId,buyer_name as buyerName,order_id as orderId,order_sn as orderSn,store_name as storeName,add_time as AddTime,store_id as storeId,goods_amount as goodsAmount,shipping_fee as shippingFee,order_amount as orderAmount,shipping_type as shippingType,payment_type as paymentType,order_state as orderState,shipping_fee as shippingFee,refund_state as refundState,order_type as orderType,is_receive_payment as isReceivePayment,need_shipping_fee as needShippingFee,payment_code as paymentCode,delay_time as delayTime,gmt_update as gmtUpdate";
private $orderGoodsField = "commis_rate as commisRate,goods_type as goodsType,order_id as orderId,rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_price as goodsPrice,goods_num as goodsNum,goods_image as goodsImage,goods_pay_price as goodsPayPrice,sale_act_id as saleActId,sale_id as saleId,comment_state as commentState,is_refund as isRefund,goods_spec as goodsSpec,goods_group as goodsGroup,refund_id as refundId"; private $orderGoodsField = "commis_rate as commisRate,goods_type as goodsType,order_id as orderId,rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_price as goodsPrice,goods_num as goodsNum,goods_image as goodsImage,goods_pay_price as goodsPayPrice,sale_act_id as saleActId,sale_id as saleId,comment_state as commentState,is_refund as isRefund,goods_spec as goodsSpec,goods_group as goodsGroup,refund_id as refundId";
private $refundOrderGoodsField = "rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_num as goodsNum,goods_image as goodsImage,goods_price as goodsPrice,goods_pay_price as goodsPayPrice,goods_spec as goodsSpec,goods_group as goodsGroup";
private $addressField = " mob_phone as MobPhone,tel_phone as TelPhone,address as address,area_info as areaInfo,lng,lat,address_id as addressId,subaddress as subAddress"; private $addressField = " mob_phone as MobPhone,tel_phone as TelPhone,address as address,area_info as areaInfo,lng,lat,address_id as addressId,subaddress as subAddress";
private $daddressField = "address_id as addressId,store_id as storeId,seller_name as sellerName,area_id as areaId,city_id as cityId,area_info as areaInfo,address,telphone,company,is_store_address as isStoreAddress,is_default as isDefault"; private $daddressField = "address_id as addressId,store_id as storeId,seller_name as sellerName,area_id as areaId,city_id as cityId,area_info as areaInfo,address,telphone,company,is_store_address as isStoreAddress,is_default as isDefault";
...@@ -35,7 +36,7 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -35,7 +36,7 @@ class RefundServiceModel extends \Business\AbstractModel
//获得退款详情字段 //获得退款详情字段
private $refundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,seller_state as sellerState,return_type as returnType,refund_shipping_type as refundShippingType,buyer_refund_amount as buyerRefundAmount,reason_id as reasonId,receive_message as receiveMessage,goods_state as goodsState'; private $refundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,seller_state as sellerState,return_type as returnType,refund_shipping_type as refundShippingType,buyer_refund_amount as buyerRefundAmount,reason_id as reasonId,receive_message as receiveMessage,goods_state as goodsState';
private $storeRefundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as recId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,buyer_refund_amount as buyerRefundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_id as reasonId,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,receive_message as receiveMessage,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,return_type as returnType,refund_shipping_type as refundShippingType,goods_state as goodsState'; private $storeRefundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,buyer_refund_amount as buyerRefundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_id as reasonId,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,receive_message as receiveMessage,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,return_type as returnType,refund_shipping_type as refundShippingType,goods_state as goodsState';
private $order; private $order;
...@@ -59,6 +60,288 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -59,6 +60,288 @@ class RefundServiceModel extends \Business\AbstractModel
{ {
return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_commonid as goodsCommonId,goods_spec as goodsSpec '; return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_commonid as goodsCommonId,goods_spec as goodsSpec ';
} }
/**
* 订单处理天数
*
*/
private function getMaxDay($day_type = 'all') {
$max_data = array(
'order_refund' => 15,//收货完成后可以申请退款退货
'refund_confirm' => 7,//卖家不处理退款退货申请时按同意处理
'return_confirm' => 7,//卖家不处理收货时按弃货处理
'return_delay' => 5//退货的商品发货多少天以后才可以选择没收到
);
if ($day_type == 'all') return $max_data;//返回所有
if (intval($max_data[$day_type]) < 1) $max_data[$day_type] = 1;//最小的值设置为1
return $max_data[$day_type];
}
/**
* 退货收货处理
* @param $storeId
* @param $returnId
* @param int $goodsState
*/
public function receive($storeId, $returnId, $goodsState= 4)
{
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$whereRefund = array();
$whereRefund['store_id']= $storeId;
$whereRefund['refund_id']= $returnId;
$refund = $refundReturnDao->find($whereRefund);
$return_delay = $this->getMaxDay('return_delay');//发货默认5天后才能选择没收到
$delay_time = TIMESTAMP - $refund['delay_time'] - 60*60*24*$return_delay;
if (($refund['seller_state'] != '2' && $refund['platform_state'] != '1') || $refund['goods_state'] != '2') {//检查状态,防止页面刷新不及时造成数据错误
return false;
}
$refund_array = array();
if ($goodsState == '3' && $delay_time > 0) {
$refund_array['goods_state'] = 3;
} else {
$refund_array['receive_time'] = TIMESTAMP;
$refund_array['receive_message'] = '确认收货完成';
$refund_array['refund_state'] = '3';//状态:1为处理中,2为待管理员处理,3为已完成
$refund_array['goods_state'] = 4;
}
$refundReturnDao->db->doTransaction();
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if($state){ //退款记录成功
// $this->recordSellerLog('退货确认收货,退货编号:'.$return['refund_sn']);
if($refund_array['goods_state'] == 4) { //同意
// add by ky start
//检测该店铺是否开启直接退款功能
$storeDAO = \DAO\StoreModel::getInstance();
$is_direct_refund = $storeDAO->getInfoById($storeId, 'is_direct_refund', true);
if($is_direct_refund==1) { //支持直接退款
//获取订单
$order_id = $refund['order_id'];
$order_info = $orderDao->find(array('order_id' => $order_id));
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
//退款 检测该订单是否为线上支付
if ($refund['refund_amount'] > 0) {
$payment_type = $order_info['payment_type'];
if (!in_array($payment_type, array(0, 2))) {
$state = $refundReturnDao->storeRefund(array_merge($order_info, array('refund_order_no' => $refund['order_sn'], 'refund_amount' => $refund['refund_amount'])));
if (!$state) {
//throw new Exception('更新订单信息失败');
$refundReturnDao->db->doRollback();
return false;
}
}
}
$refundUpdate = array('is_suc_refund' => 1, 'gmt_update' => TIMESTAMP, 'refund_state' => 3);
$res = $refundReturnDao->update(array('refund_id' => $refund['refund_id']), $refundUpdate);
if (!$res) {
$refundReturnDao->db->doRollback();
// showDialog('退款成功,退款表写入失败,请联系工作人员!',$reload,'error');
return false;
}
$result = $orderGoodsDao->update(array('rec_id' => $refund['order_goods_id']), array('refund_state_name'=>'退款成功', 'gmt_update' => TIMESTAMP));
if (!$result) {
$refundReturnDao->db->doRollback();
// showDialog('refund_state_name',$reload,'error');
return false;
}
}
}
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
$refundReturnDao->db->doRollback();
return false;
}
/**
* 退货退款处理
* @param $storeId 店铺id
* @param $refundId 退款id
* @param $refundAmount 退款金额
* @param string $text 退款消息
*/
public function refund($storeId, $refundId, $refundAmount = 0, $text = '', $seller_state = 2)
{
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$whereRefund = array();
$whereRefund['store_id']= $storeId;
$whereRefund['refund_id']= $refundId;
$refund = $refundReturnDao->find($whereRefund);
if(!$refund) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
if($refund['seller_state']!=1) {
ErrorModel::throwException(CodeConfigModel::alreadyExsitRefundGoods);
}
//获取订单
$order_id = $refund['order_id'];
$order_info = $orderDao->find( array('order_id'=>$order_id));
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$refund_array = array();
$refund_array['seller_time'] = time();
$refund_array['seller_state'] = $seller_state;//卖家处理状态:1为待审核,2为同意,3为不同意
$refund_array['seller_message'] = $text;
$refund_array['refund_amount'] = $refundAmount;
$refundReturnDao->db->doTransaction();
if($seller_state!=2){ //拒绝退款
$result= $orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('is_refund'=>0, 'refund_state_name'=>'卖家拒绝退货', 'gmt_update'=>TIMESTAMP));
if(!$result){
$refundReturnDao->db->doRollback();
return false;
}
if($order_info['refund_state']== 2) {
$result = $orderDao->updateByOrderId(array('refund_state'=>1), $refund['order_id']);
if(!$result){
$refundReturnDao->db->doRollback();
return false;
}
}
$refund_array['refund_state'] = '3'; //状态:1为处理中,2为待管理员处理,3为已完成
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if(!$state){
$refundReturnDao->db->doRollback();
return false;
}
//$this->recordSellerLog('退款处理,退款编号:'.$refund['refund_sn']); //待确认
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
//以下为同意退款流程
if($order_info['order_state']==40){ //交易完成订单,退积分
$res = $this->edit_points($refund, $order_info);
if(!$res){
$refundReturnDao->db->doRollback();
ErrorModel::throwException(CodeConfigModel::refundAddPointsLogError);
}
}
$refund_array['refund_state'] = '3'; //状态:1为处理中,2为待管理员处理,3为已完成
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if($state){ //退款记录成功
//$this->recordSellerLog('退款处理,退款编号:'.$refund['refund_sn']); //待确认
// add by ky start
//检测该店铺是否开启直接退款功能
$storeDAO = \DAO\StoreModel::getInstance();
//店铺积分
$is_direct_refund = $storeDAO->getInfoById($storeId, 'is_direct_refund', true);
$orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('refund_state_name'=>'卖家同意退款'));
if($is_direct_refund==1){ //支持直接退款
//退款 检测该订单是否为线上支付
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP);
if($refund['refund_amount']>0){
$payment_type = $order_info['payment_type'];
if(!in_array($payment_type,array(0,2))){
$state = $refundReturnDao->storeRefund(array_merge($order_info, array('refund_order_no'=>$refund['order_sn'], 'refund_amount'=> $refund['refund_amount'])));
if (!$state) {
//throw new Exception('更新订单信息失败');
$refundReturnDao->db->doRollback();
return false;
}
if($payment_type==1) { //微信支付
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP,'seller_state'=>$refund_array['seller_state'],'refund_state'=>$refund_array['refund_state']);
} else {
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP);
}
}
}
$res=$refundReturnDao->update(array('refund_id'=>$refund['refund_id']), $updateData);
if(!$res){
$refundReturnDao->db->doRollback();
// showDialog('退款成功,退款表写入失败,请联系工作人员!',$reload,'error');
return false;
}
$result= $orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('is_refund'=>1,'gmt_update'=>TIMESTAMP));
if(!$result){
$refundReturnDao->db->doRollback();
// showDialog('refund_state_name',$reload,'error');
return false;
}
}
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
$refundReturnDao->db->doRollback();
return false;
}
/**
* 退货退款已完成订单积分扣除
*
* @param $refund
* @param $order_info
* @return bool
*/
private function edit_points($refund,$order_info){
$settingDAO = \DAO\SettingModel::getInstance();
$points_ratio = floatval($settingDAO->getListCache(array('points_ratio'))['points_ratio']);
$order_id = $order_info['order_id'];
$store_id = $refund['store_id'];
$member_id = $refund['buyer_id'];
$amount_money = $refund['refund_amount'];
$pt_points = $points_ratio * $amount_money;
//平台积分
$pt_points_log_data=array(
'pl_memberid' => $member_id,
'pl_membername'=> $refund['buyer_name'],
'pl_points' => -$pt_points,
'pl_addtime' => time(),
'pl_desc' => '退货退款扣除平台积分',
'pl_stage' => '退货退款扣除',
'pl_type' => 2,
'pl_source_type'=> 2,
'pl_order_id' => $order_id
);
//更新积分记录
$plDAO = \DAO\Member\PointsLogModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$ptRes = $plDAO->addlog($pt_points_log_data);
if(!$ptRes){
return false;
}
$qmmpDAO = \DAO\Member\QmMemberPointsModel::getInstance(\Our\DbNameConst::masterDBConnectName);
//
$ptMemberRes = $qmmpDAO->update('disabled_points=disabled_points-'.$pt_points, array('member_id'=>$member_id, 'points_type'=>2));
if(!$ptMemberRes){
return false;
}
$storeDAO = \DAO\StoreModel::getInstance();
//店铺积分
$ratio = $storeDAO->getInfoById($store_id, 'store_points_ratio', true);
$store_points = $amount_money*$ratio;
$store_points_log_data = array(
'pl_memberid' => $member_id,
'pl_membername'=> $refund['buyer_name'],
'pl_points' => -$store_points,
'pl_addtime' => time(),
'pl_desc' => '退货退款扣除店铺积分',
'pl_stage' => '退货退款扣除',
'pl_type' => 1,
'pl_store_id' => $store_id,
'pl_source_type'=> 2,
'pl_order_id' => $order_id
);
$storeRes = $plDAO->addlog($store_points_log_data);
if(!$storeRes){
return false;
}
$storeMemberRes = $qmmpDAO->update('disabled_points=disabled_points-'.$store_points, array('member_id'=>$member_id, 'store_id'=>$store_id));
if(!$storeMemberRes){
return false;
}
return true;
}
/** /**
* 店铺退款列表 * 店铺退款列表
...@@ -92,19 +375,19 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -92,19 +375,19 @@ class RefundServiceModel extends \Business\AbstractModel
$orderGoodsId = array_column($refundReturns['list'], 'orderGoodsId'); $orderGoodsId = array_column($refundReturns['list'], 'orderGoodsId');
//获得售后商品列表getOrderGoodsByRecIds //获得售后商品列表getOrderGoodsByRecIds
if (!empty($orderGoodsId)) { if (!empty($orderGoodsId)) {
$orderGoods = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByRecIds'), array($orderGoodsId, $this->orderGoodsField), \Our\ApiConst::oneDaySecond, array($memberId)); $orderGoods = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByRecIds'), array($orderGoodsId, $this->refundOrderGoodsField), \Our\ApiConst::oneDaySecond, array($memberId));
$refundMerge = Common::intergrateOneToOne($refundReturns['list'], $orderGoods, 'orderGoodsId', 'recId'); $refundMerge = Common::intergrateOneToOne($refundReturns['list'], $orderGoods, 'orderGoodsId', 'recId');
foreach ($refundMerge as &$value) { foreach ($refundMerge as &$value) {
$value['stateName'] = $refundReturnDao->getRefundTextStatus($value); $value['stateName'] = $refundReturnDao->getRefundTextStatus($value);
$value['blId'] = isset($value['blId']) ? (!is_null($value['blId']) ? $value['blId'] : ApiConst::zero) : ApiConst::zero; /*$value['blId'] = isset($value['blId']) ? (!is_null($value['blId']) ? $value['blId'] : ApiConst::zero) : ApiConst::zero;
$value['canPlatformIn'] = $refundReturnDao->isPlatformIn($value) ? ApiConst::one : ApiConst::zero; $value['canPlatformIn'] = $refundReturnDao->isPlatformIn($value) ? ApiConst::one : ApiConst::zero;
$value['canSendShippingType'] = $refundReturnDao->checkIsAddReturnShipping($value) ? ApiConst::one : ApiConst::zero; $value['canSendShippingType'] = $refundReturnDao->checkIsAddReturnShipping($value) ? ApiConst::one : ApiConst::zero;*/
$value['goodsImage'] = ImageUtil::getGoodsImgUrl($value['goodsImage'], ApiConst::goodsSmallSize); $value['goodsImage'] = ImageUtil::getGoodsImgUrl($value['goodsImage'], ApiConst::goodsSmallSize);
$value['goodsAttr']=$goodsDao->getFormatGoodsAttr($value['goodsSpec']); $value['goodsAttr']=$goodsDao->getFormatGoodsAttr($value['goodsSpec']);
$goodGroup=unserialize($value['goodsGroup']); $goodGroup=unserialize($value['goodsGroup']);
$value['goodsGroup']=!empty($goodGroup)?$goodGroup:[]; $value['goodsGroup']=!empty($goodGroup)?$goodGroup:[];
unset($value['goodsSpec']); unset($value['goodsSpec']);
unset($value['picInfo']); // unset($value['picInfo']);
} }
$returnData['refundReturns'] = $refundMerge; $returnData['refundReturns'] = $refundMerge;
$returnData['totalCount'] = $refundReturns['totalCount']; $returnData['totalCount'] = $refundReturns['totalCount'];
......
...@@ -11,49 +11,34 @@ class FeedBackServiceModel extends \Business\AbstractModel ...@@ -11,49 +11,34 @@ class FeedBackServiceModel extends \Business\AbstractModel
} }
public function saveFeedback($param,$memberId){ /**
* 店铺意见反馈
* @param $param
* @param $storeId
* @param $memberId
* @return bool
* @throws \Exception
*/
public function saveFeedback($param, $storeId, $memberId) {
$storeDAO = \DAO\StoreModel::getInstance();
$feedbackDescribe = trim($param['feedbackDescribe']); $feedbackDescribe = trim($param['feedbackDescribe']);
$feedbackTelepone = trim($param['feedbackTelepone']); $feedbackTelephone = $storeDAO->getInfoById($storeId, 'store_phone', true);
$feedbackTelephone = trim($param['feedbackTelephone']);
$telephone = $feedbackTelepone ? $feedbackTelepone : $feedbackTelephone;
$type = (int)$param['type'];
if(!$feedbackDescribe){ if(!$feedbackDescribe){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe);
} }
if(!$telephone){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe);
}
$return = \Our\Common::checkMobilePhone($telephone);
if($return === false){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::feedbackTelError);
}
$imgArr = array();
for ($i = 0 ; $i < 2 ; $i++){
$number = str_replace(array(0,1,2),array('A','B','C'),$i);
$image = $param['image'.$number];
if($image && $type == 0){
$time = date('YmdHis_');
$file_name = $time.\Our\Validate::getNumberString();
$result = \Our\ImageUtil::uploadBase64Image($image,\Our\ImageConst::feedback,$file_name);
if($result){
$result = \Our\Common::getStaticFile($file_name,\Our\ImageConst::feedback);
$imgArr[] = pathinfo($result)['basename'];
}
}else{
$imgArr[] = pathinfo($image)['basename'];
}
}
$insert = array(); $insert = array();
$insert['feedback_image'] = serialize($imgArr); $insert['feedback_type'] = 1; //店铺意见反馈
$insert['feedback_describe'] = $feedbackDescribe; $insert['feedback_describe'] = $feedbackDescribe;
$insert['feedback_time'] = time(); $insert['feedback_time'] = TIMESTAMP;
$insert['feedback_telephone'] = $telephone; $insert['feedback_telephone'] = $feedbackTelephone;
$insert['member_id'] = $memberId; $insert['member_id'] = $memberId;
$return = \DAO\FeedBackModel::getInstance()->insert($insert); $return = \DAO\FeedBackModel::getInstance()->insert($insert);
if(!$return){ if(!$return){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::saveFeedbackError); \Error\ErrorModel::throwException(\Error\CodeConfigModel::saveFeedbackError);
} }
return true;
} }
private static $_instance = null; private static $_instance = null;
......
<?php
namespace DAO\Member;
use Our\ApiConst;
use Our\ArrayConst;
use Our\Common;
use Our\DbNameConst;
use Our\DescribeConst;
use Our\NameConst;
use Our\OrderConst;
/**
* 积分相关
* @date 2018-5-14
* @author csw
*/
class PointsLogModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_points_log';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'pl_id';
public function init()
{
//$this->setDb();
}
/**
* 新增记录
* @param $data
* @return mixed
*/
public function addLog($data){
$this->setDb($this->dbName);
$logId = $this->db->insert($this->_tableName)->rows($data)->execute();
return $logId;
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 单例模式获取类实例
*
*/
public static function getInstance($dbName=DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
<?php
namespace DAO\Member;
use Our\ApiConst;
use Our\ArrayConst;
use Our\Common;
use Our\DbNameConst;
use Our\DescribeConst;
use Our\NameConst;
use Our\OrderConst;
/**
* 会员积分相关
* @date 2018-5-14
* @author csw
*/
class QmMemberPointsModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_qm_member_points';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'id';
public function init()
{
//$this->setDb();
}
/**
* 新增记录
* @param $data
* @return mixed
*/
public function addLog($data){
$this->setDb($this->dbName);
$logId = $this->db->insert($this->_tableName)->rows($data)->execute();
return $logId;
}
/**
* 更新会员积分
* @param $param
* @param $where
* @return mixed
*/
public function update($param, $where){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
return $this->db->update($this->_tableName)->rows($param)->where($where)->execute();
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 单例模式获取类实例
*
*/
public static function getInstance($dbName=DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
...@@ -311,6 +311,55 @@ class RefundReturnModel extends \DAO\AbstractModel { ...@@ -311,6 +311,55 @@ class RefundReturnModel extends \DAO\AbstractModel {
return $picsRes; return $picsRes;
} }
/**
* 店铺退款
* @param $orderInfo 订单信息
*/
public function storeRefund($orderInfo){
$param['refundOrderNo'] = !empty($orderInfo['refund_order_no']) ? $orderInfo['refund_order_no'] : $this->getRefundsn($orderInfo['store_id']);
//这个有可能多次退款的时候要变
$param['outTradeNo'] = $orderInfo['pay_sn'];
$param['totalFee'] = $orderInfo['order_amount'];
$param['refundFee'] = $orderInfo['refund_amount'];//退款金额
$param['storeId'] = $orderInfo['store_id'];
$param['buyerId'] = $orderInfo['buyer_id'];
if (intval($orderInfo['payment_type']) == ApiConst::wxAppPayType) {
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信返回:".json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['order_id']."\r\n";
return false;
}
} else if (intval($orderInfo['payment_type']) == ApiConst::alipay) {
$aliPay = \Payment\Alipay::getInstance();
$return = $aliPay->refund($param);
$this->errorMessage = "支付宝返回:" . json_encode($return);
$resultCode = $return->code;
if (!empty($resultCode) && $resultCode == ApiConst::alipayRefundSuccess) {
return true;
} else {
$this->errorMessage = date('Y-m-d') . '支付宝退款操作执行失败:' . $orderInfo['order_id'] . "\r\n";
return false;
}
}else if(intval($orderInfo['payment_type']) == ApiConst::wxProgram){
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信小程序返回:".json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['order_id']."\r\n";
return false;
}
}
return true;
}
/**
* 退款
* @param $orderInfo
* @return bool
*/
public function refundMoney($orderInfo){ public function refundMoney($orderInfo){
$param['refundOrderNo'] = !empty($orderInfo['refundOrderNo'])?$orderInfo['refundOrderNo']:$this->getRefundsn($orderInfo['storeId']); $param['refundOrderNo'] = !empty($orderInfo['refundOrderNo'])?$orderInfo['refundOrderNo']:$this->getRefundsn($orderInfo['storeId']);
...@@ -350,6 +399,26 @@ class RefundReturnModel extends \DAO\AbstractModel { ...@@ -350,6 +399,26 @@ class RefundReturnModel extends \DAO\AbstractModel {
} }
return true; return true;
} }
/**
* 修改记录
*
* @param $condition
* @param $data
* @return bool
*/
public function editRefundReturn($condition, $data) {
if (empty($condition)) {
return false;
}
$this->setDb($this->dbName);
if (is_array($data)) {
$result = $this->db->update($this->_tableName)->rows($data)->where($where)->execute();
return $result;
} else {
return false;
}
}
/** /**
* 增加退款退货 * 增加退款退货
* *
......
...@@ -293,6 +293,7 @@ class CodeConfigModel ...@@ -293,6 +293,7 @@ class CodeConfigModel
const wrongEvaluation = 30120; const wrongEvaluation = 30120;
const selfGoodsForStoreOrder = 30121; const selfGoodsForStoreOrder = 30121;
const refundAddPointsLogError = 30122;
//店铺相关错误码 //店铺相关错误码
//商品分类 //商品分类
...@@ -509,6 +510,7 @@ class CodeConfigModel ...@@ -509,6 +510,7 @@ class CodeConfigModel
self::refundRefuseByStore => '商家不同意退款,如有疑问请联系客服', self::refundRefuseByStore => '商家不同意退款,如有疑问请联系客服',
self::returnErrorAfterPay => '货到付款订单在没确认收货前不能退款退货', self::returnErrorAfterPay => '货到付款订单在没确认收货前不能退款退货',
self::returnBeyondTimeError => '收货超时订单不能退款', self::returnBeyondTimeError => '收货超时订单不能退款',
self::refundAddPointsLogError => '退货退款积分更新写入失败',
//店铺相关错误 //店铺相关错误
self::illegalFavStore => '不能关注自己的店铺', self::illegalFavStore => '不能关注自己的店铺',
......
...@@ -7,10 +7,7 @@ class FeedbackController extends \Our\Controller_AbstractApi { ...@@ -7,10 +7,7 @@ class FeedbackController extends \Our\Controller_AbstractApi {
} }
public function saveFeedbackAction(){ public function saveFeedbackAction(){
$msg = \Business\User\FeedBackServiceModel::getInstance()->saveFeedback($this->req[\Our\NameConst::data],$this->memberId); $msg = \Business\User\FeedBackServiceModel::getInstance()->saveFeedback($this->req[\Our\NameConst::data], $this->storeId,$this->memberId);
unset($this->req[\Our\NameConst::data]['imageA']);
unset($this->req[\Our\NameConst::data]['imageB']);
unset($this->req[\Our\NameConst::data]['imageC']);
$this->success(''); $this->success('');
} }
} }
\ No newline at end of file
<?php <?php
use Error\ErrorModel; use Error\ErrorModel;
...@@ -178,18 +176,6 @@ class ShopkeeperController extends \Our\Controller_AbstractClient { ...@@ -178,18 +176,6 @@ class ShopkeeperController extends \Our\Controller_AbstractClient {
} }
} }
/**
* 获得售后列表
*/
public function getRefunds(){
$type = intval($this->req['data']['type']);
$refundService=\Business\Order\RefundServiceModel::getInstance();
$pageIndex=$this->getPageIndex();
$pageSize=$this->getPageSize();
$res=$refundService->getStoreRefundList($this->storeId, $type, $pageIndex, $pageSize);
$this->success($res);
}
/** /**
* 获得订单数量 * 获得订单数量
*/ */
...@@ -248,6 +234,69 @@ class ShopkeeperController extends \Our\Controller_AbstractClient { ...@@ -248,6 +234,69 @@ class ShopkeeperController extends \Our\Controller_AbstractClient {
$this->success($res); $this->success($res);
} }
/**
* 获得售后列表
*/
public function getRefundsAction(){
$type = intval($this->req['data']['type']);
$refundService=\Business\Order\RefundServiceModel::getInstance();
$pageIndex=$this->getPageIndex();
$pageSize=$this->getPageSize();
$res=$refundService->getStoreRefundList($this->storeId, $type, $pageIndex, $pageSize);
$this->success($res);
}
/**
* 同意退款
*/
public function agreeAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$refundAmount = floatval($this->req['data']['refundAmount']);
$text = trim($this->req['data']['text']);
$res = $refundService->refund($this->storeId, $refundId,$refundAmount, $text);
$this->success($res);
}
/**
* 拒绝退款
*/
public function refuseAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$text = trim($this->req['data']['text']);
$res = $refundService->refund($this->storeId, $refundId,0, $text, 3);
$this->success($res);
}
/**
* 确认收货
* @throws Exception
*/
public function confirmReceiveAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$goodsState= intval($this->req['data']['goodsState']);
$res = $refundService->receive($this->storeId, $refundId, $goodsState);
$this->success($res);
}
/**
* 获取应用版本
*/
public function getVersionAction(){
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment