Commit b9914c40 authored by liuyuzhen's avatar liuyuzhen

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into lyz

parents c0e028b3 98d8cf61
......@@ -25,6 +25,9 @@ class OrderConst {
const express='快递配送';
const complete="已完成";
const close="已关闭";
const platformStateVerify='待审核';
const platformStateAgree='同意';
const platformStateRefuse='拒绝';
const platformAudit="平台审核";
const platFormAgree="平台同意";
......@@ -50,7 +53,14 @@ class OrderConst {
//详情
const unpayDetailMessage="10分钟后交易自动关闭";
const payCancelDetailMessage="10分钟可取消订单";
//商家售后状态
const sellerStateVerify='待审核';
const sellerStateAgree='同意';
const sellerStateRefuse='不同意';
//商家售后状态
const platStateVerify='待审核';
const platStateAgree='同意';
const platStateRefuse='不同意';
//店铺详细文案
const storeWaiteConfirm='请尽快确认订单';
const storeWaiteSend='请尽快发货';
......
......@@ -73,7 +73,17 @@ class EvaluationServiceModel extends \Business\AbstractModel {
$evaluation['memberAvatar'] = $memberAvatar;
//$images = $this->_upload($v['images']);
$images = $v['images'];
//兼容安卓传参
if(!is_array($images)) $images = json_decode($images, true);
if(is_array($images) && $images) {
foreach ($images as $k=>$v) {
if(empty($v)) {
unset($images[$k]);
}
}
}else{
$images = null;
}
if(empty($images)) $images = null;
$images ? $data['goods'][$k]['haveImg'] = 1 : $data['goods'][$k]['haveImg'] = 0;
if($data['goods'][$k]['haveImg'] == 1) {
......
......@@ -702,6 +702,7 @@ class RefundServiceModel extends \Business\AbstractModel
$orderCommons = $orderCommonDao->getAllByOrderIds($orderIds, $orderCommonDao->orderCommonField);
$orderCommons=$orderDao->convertOrder($orderCommons,'orderId');
foreach ($refundMerge as &$value) {
$value['sellerStateName']=$refundReturnDao->getSellerStateName($value['sellerState']);
$value['stateName'] = $refundReturnDao->getRefundTextStatus($value,true);
/*$value['blId'] = isset($value['blId']) ? (!is_null($value['blId']) ? $value['blId'] : ApiConst::zero) : ApiConst::zero;
$value['canPlatformIn'] = $refundReturnDao->isPlatformIn($value) ? ApiConst::one : ApiConst::zero;
......@@ -725,7 +726,14 @@ class RefundServiceModel extends \Business\AbstractModel
}else{
$value['deliveryman']=new \stdClass();
}
$value['goodsGroup']=!empty($goodGroup)?$goodGroup:[];
if(!empty($goodGroup)){
$value['goodsGroup']=$goodGroup;
$value['goodsOriginPrice']=$goodsDao->getOriginPriceByGoodsGroup($value['goodsGroup']);
}else{
$value['goodsGroup']=[];
}
if ($value['refundType'] == ApiConst::refundTypeGoods) {
if($value['refundShippingType']==ApiConst::bySeller){
$value['reciverInfo']=$orderCommonDao->getReciverInfo($value['reciverInfo']);
......@@ -1206,7 +1214,7 @@ class RefundServiceModel extends \Business\AbstractModel
// $value['orderAmount'] = $value['orderAmount'];
$refundReturn['reciverInfo'] = unserialize($this->orderCommon['reciverInfo']);
if ($refundReturn['refundType'] == ApiConst::refundTypeGoods) {
if($refundReturn['refundShippingType']==ApiConst::bySeller){
if($refundReturn['refundShippingType']==ApiConst::bySeller || $refundReturn['refundShippingType']==ApiConst::bySelf){
$refundReturn['reciverInfo']=$orderCommonDao->getReciverInfo($refundReturn['reciverInfo']);
}
} else {
......@@ -1219,25 +1227,25 @@ class RefundServiceModel extends \Business\AbstractModel
$refundReturn['refundText'] = $refundReturnDao->getRefundTextStatus($refundReturn);
$refundReturn['stateName']=$refundReturn['refundText'];
$refundReturn['goodsImage'] = ImageUtil::getGoodsImgUrl($refundReturn['goodsImage'], ApiConst::goodsSmallSize);
//$addressDao = \DAO\Order\DAddressModel::getInstance();
$addressDao = \DAO\Order\DAddressModel::getInstance();
$info = $refundReturn;
// if ($refundReturn['refundType'] == ApiConst::refundTypeGoods) {
// if ($refundReturn['addressId']) {
// $address = $addressDao->getAddressByAddressId($refundReturn['addressId'], $this->daddressField);
// } else {
// $address = $addressDao->getAddressByStoreId($refundReturn['storeId'], $this->daddressField);
// }
// if(!empty($address)){
// $address['isDefault'] = (int)$address['isDefault'];
// $address['company']=isset( $address['company'])? $address['company']:'';
// $info['dAddressInfo'] = $address;
// }else{
// $info['dAddressInfo'] =new \stdClass();
// }
//
// } else {
// $info['dAddressInfo'] = new \stdClass();
// }
if ($refundReturn['refundType'] == ApiConst::refundTypeGoods) {
if ($refundReturn['addressId']) {
$address = $addressDao->getAddressByAddressId($refundReturn['addressId'], $this->daddressField);
} else {
$address = $addressDao->getAddressByStoreId($refundReturn['storeId'], $this->daddressField);
}
if(!empty($address)){
$address['isDefault'] = (int)$address['isDefault'];
$address['company']=isset( $address['company'])? $address['company']:'';
$info['dAddressInfo'] = $address;
}else{
$info['dAddressInfo'] =new \stdClass();
}
} else {
$info['dAddressInfo'] = new \stdClass();
}
$info['canPlatformIn'] = $refundReturnDao->isPlatformIn($info) ? ApiConst::one : ApiConst::zero;
$info['canSendShippingType'] = $refundReturnDao->checkIsAddReturnShipping($info) ? ApiConst::one : ApiConst::zero;
if($info['refundShippingType']==ApiConst::bySeller){
......
......@@ -474,6 +474,14 @@ class GoodsModel extends \DAO\AbstractModel {
}
return $orderGoodses;
}
public function getOriginPriceByGoodsGroup($goodsGroup){
$goodsOriginPrice=ApiConst::zero;
foreach( $goodsGroup as $goodsG){
$goodsOriginPrice+= $goodsG['num']*$goodsG['goodsPrice'];
}
return $goodsOriginPrice;
}
//ccw
public function convert($goodses,$extentField=false,$refundOrders=false){
if($refundOrders){
......@@ -505,11 +513,13 @@ class GoodsModel extends \DAO\AbstractModel {
if(isset($goods['goodsGroup'])&&!empty($goods['goodsGroup'])){
$goods['goodsGroup']=$this->getGoodsGroup($goods['goodsGroup']);
$goodsDiscountPrice=ApiConst::zero;
$goodsOriginPrice=ApiConst::zero;
foreach( $goods['goodsGroup'] as $goodsG){
$goodsDiscountPrice+= $goodsG['num']*$goodsG['discountPrice'];
$goodsOriginPrice+= $goodsG['num']*$goodsG['goodsPrice'];
}
$goods['goodsDiscountPrice']=$goodsDiscountPrice;
$goods['goodsOriginPrice']= $goodsOriginPrice;
// $goods['goodsDiscountPrice']=array_sum($goods['goodsGroup'],'discountPrice');
// $goods['goodsReduceAmount']=$goods['goodsPayPrice']-$goods['goodsDiscountPrice'];
}else{
......
......@@ -14,7 +14,8 @@ use Our\ImageUtil;
use Our\OrderConst;
use Payment\Alipay;
class RefundReturnModel extends \DAO\AbstractModel {
class RefundReturnModel extends \DAO\AbstractModel
{
public $errorCode;
/**
......@@ -23,56 +24,65 @@ class RefundReturnModel extends \DAO\AbstractModel {
* @var string
*/
protected $_tableName = 'han_refund_return';
public $refundDetailField='is_platform_in as isPlatformIn,seller_state as sellerState,platform_state as platformState,refund_id as refundId,order_id as orderId,store_id as storeId,order_goods_id as orderGoodsId';
public $refundReturnField="seller_state,refund_state,is_platform_in,platform_state";
private $sumField="order_id as orderId,buyer_id as buyerId,store_id as storeId,goods_num as goodsNum,refund_amount as refundAmount,is_suc_refund as isSucRefund,gmt_update as gmtUpdate";
private $sumRefundAmount=" sum(refund_amount) as sumRefundAmont";
public $refundDetailField = 'is_platform_in as isPlatformIn,seller_state as sellerState,platform_state as platformState,refund_id as refundId,order_id as orderId,store_id as storeId,order_goods_id as orderGoodsId';
public $refundReturnField = "seller_state,refund_state,is_platform_in,platform_state";
private $sumField = "order_id as orderId,buyer_id as buyerId,store_id as storeId,goods_num as goodsNum,refund_amount as refundAmount,is_suc_refund as isSucRefund,gmt_update as gmtUpdate";
private $sumRefundAmount = " sum(refund_amount) as sumRefundAmont";
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'refund_id';
public $errorMessage='';
public function init(){
public $errorMessage = '';
public function init()
{
}
public function getCount($where){
public function getCount($where)
{
$this->setDb();
return $this->db->from($this->_tableName)->where($where)->fetchNum();
}
public function getAll($where,$field,$db=DbNameConst::salveDBConnectName){
public function getAll($where, $field, $db = DbNameConst::salveDBConnectName)
{
$this->setDb($db);
$list = $this->db->select($field)->from($this->_tableName)->where($where)->fetchAll();
return $list;
}
public function getRefundSuccessMoneyByStoreId($storeId,$beginTime=false,$endTime=false){
public function getRefundSuccessMoneyByStoreId($storeId, $beginTime = false, $endTime = false)
{
$this->setDb($this->dbName);
if($beginTime){
$where=\Our\Common::format(" store_id={0} and is_suc_refund={1} and gmt_update between {2} and {3}",$storeId,ApiConst::refundSuccess,$beginTime,$endTime);
}else{
$where=\Our\Common::format(" store_id={0} and is_suc_refund={1}",$storeId,ApiConst::refundSuccess);
if ($beginTime) {
$where = \Our\Common::format(" store_id={0} and is_suc_refund={1} and gmt_update between {2} and {3}", $storeId, ApiConst::refundSuccess, $beginTime, $endTime);
} else {
$where = \Our\Common::format(" store_id={0} and is_suc_refund={1}", $storeId, ApiConst::refundSuccess);
}
$res=$this->db->from($this->_tableName)->select($this->sumRefundAmount)->where($where)->fetchValue();
return !empty($res)?$res:ApiConst::zero;
$res = $this->db->from($this->_tableName)->select($this->sumRefundAmount)->where($where)->fetchValue();
return !empty($res) ? $res : ApiConst::zero;
}
public function getRefundSuccessMoneyByStoreIdAndMemberId($storeId,$buyerId){
public function getRefundSuccessMoneyByStoreIdAndMemberId($storeId, $buyerId)
{
$this->setDb($this->dbName);
if(is_array($storeId)){
$storeId=implode(',',$storeId);
if (is_array($storeId)) {
$storeId = implode(',', $storeId);
}
if(is_array($buyerId)){
$buyerId=implode(',',$buyerId);
if (is_array($buyerId)) {
$buyerId = implode(',', $buyerId);
}
$where=\Our\Common::format(" store_id in({0}) and buyer_id in({1}) and is_suc_refund={2}",$storeId,$buyerId,ApiConst::refundSuccess);
$res=$this->db->from($this->_tableName)->where($where)->select(" buyer_id as buyerId,store_id as storeId,(SUM(refund_amount)) AS refundTotal")->group('buyer_id')->group('store_id')->fetchAll();
return !empty($res)?$res:[];
$where = \Our\Common::format(" store_id in({0}) and buyer_id in({1}) and is_suc_refund={2}", $storeId, $buyerId, ApiConst::refundSuccess);
$res = $this->db->from($this->_tableName)->where($where)->select(" buyer_id as buyerId,store_id as storeId,(SUM(refund_amount)) AS refundTotal")->group('buyer_id')->group('store_id')->fetchAll();
return !empty($res) ? $res : [];
}
/**
* 更新数据
* @param $data
......@@ -84,175 +94,215 @@ class RefundReturnModel extends \DAO\AbstractModel {
$this->setDb(\Our\DbNameConst::masterDBConnectName);
return $this->db->update($this->_tableName)->where($where)->rows($data)->execute();
}
//更新退货物流信息
public function updateReturnShippingByRefundId($refundId,$data){
$where[$this->_primaryKey]=$refundId;
$updateData['express_id']=$data['expressId'];
$updateData['invoice_no']=$data['invoiceNo'];
$updateData['address_id']=$data['addressId'];
$updateData['goods_state']=ApiConst::goodsStateWaitRecieve;
$updateData['ship_time']=TIMESTAMP;
return $this->update($where,$updateData);
public function updateReturnShippingByRefundId($refundId, $data)
{
$where[$this->_primaryKey] = $refundId;
$updateData['express_id'] = $data['expressId'];
$updateData['invoice_no'] = $data['invoiceNo'];
$updateData['address_id'] = $data['addressId'];
$updateData['goods_state'] = ApiConst::goodsStateWaitRecieve;
$updateData['ship_time'] = TIMESTAMP;
return $this->update($where, $updateData);
}
//检查是否可以添加退货物流信息
public function checkIsAddReturnShipping($refundReturn){
$isReturn=TRUE;
if($refundReturn['sellerState']!=ApiConst::refundSellerAgree){
$this->errorCode=CodeConfigModel::notReturnAgree;
$isReturn=FALSE;
public function checkIsAddReturnShipping($refundReturn)
{
$isReturn = TRUE;
if ($refundReturn['sellerState'] != ApiConst::refundSellerAgree) {
$this->errorCode = CodeConfigModel::notReturnAgree;
$isReturn = FALSE;
}
if($refundReturn['refundType']!=ApiConst::refundTypeGoods){
$this->errorCode=CodeConfigModel::isNotReturn;
$isReturn=FALSE;
if ($refundReturn['refundType'] != ApiConst::refundTypeGoods) {
$this->errorCode = CodeConfigModel::isNotReturn;
$isReturn = FALSE;
}
if($refundReturn['refundShippingType']!=ApiConst::express){
$this->errorCode=CodeConfigModel::isNotExpressType;
$isReturn=FALSE;
if ($refundReturn['refundShippingType'] != ApiConst::express) {
$this->errorCode = CodeConfigModel::isNotExpressType;
$isReturn = FALSE;
}
if($refundReturn['expressId']>ApiConst::zero){
$this->errorCode=CodeConfigModel::isNotExpressType;
$isReturn=FALSE;
if ($refundReturn['expressId'] > ApiConst::zero) {
$this->errorCode = CodeConfigModel::isNotExpressType;
$isReturn = FALSE;
}
return $isReturn;
}
/**
* 申请平台介入
* @param $data
* @param $where
* @return mixed
*/
public function updateStatusByBuyerIdAndRefundId($buyerId,$refundId,$applyMessage)
public function updateStatusByBuyerIdAndRefundId($buyerId, $refundId, $applyMessage)
{
$where['refund_id'] = $refundId;
$where['buyer_id'] = $buyerId;
$data['is_platform_in']=ApiConst::platIn;
$data['refund_state']=ApiConst::platProccess;
$data['platform_in_reason']=$applyMessage;
$data['is_platform_in'] = ApiConst::platIn;
$data['refund_state'] = ApiConst::platProccess;
$data['platform_in_reason'] = $applyMessage;
return $this->update($where, $data);
}
/**
* 获取单条数据
* @param $where
* @return array
*/
public function find($where,$field='*')
public function find($where, $field = '*')
{
$this->setDb($this->dbName);
$data = $this->db->from($this->_tableName)->select($field)->where($where)->fetchOne();
return $data;
}
public function findByRefundId($refundId,$field='*')
public function findByRefundId($refundId, $field = '*')
{
$where['refund_id'] = $refundId;
return $this->find($where,$field);
return $this->find($where, $field);
}
public function findByMemberIdAndRefundId($memberId,$refundId,$field='*'){
$where['buyer_id']=$memberId;
$where['refund_id']=$refundId;
return $this->find($where,$field);
public function findByMemberIdAndRefundId($memberId, $refundId, $field = '*')
{
$where['buyer_id'] = $memberId;
$where['refund_id'] = $refundId;
return $this->find($where, $field);
}
public function getAllByOrderIds($orderIds,$field='*'){
if(is_array($orderIds)){
$where=Common::format(" order_id in {0}",implode(',',$orderIds));
}else{
$where['order_id']=$orderIds;
public function getAllByOrderIds($orderIds, $field = '*')
{
if (is_array($orderIds)) {
$where = Common::format(" order_id in {0}", implode(',', $orderIds));
} else {
$where['order_id'] = $orderIds;
}
return $this->getAll($where,$field);
return $this->getAll($where, $field);
}
public function getStatusExtent($returnRefund,$isSeller=false){
public function getStatusExtent($returnRefund, $isSeller = false)
{
// if($returnRefund['refundState']!=ApiConst::refundCompleted){
if($returnRefund['sellerState']==ApiConst::refundSellerAgree){
if($returnRefund['isSucRefund']==ApiConst::refundSuccess){
if ($returnRefund['sellerState'] == ApiConst::refundSellerAgree) {
if ($returnRefund['isSucRefund'] == ApiConst::refundSuccess) {
return OrderConst::alreadyReufndMoney;
}
if($returnRefund['refundType']==ApiConst::refundTypeMoney){
if ($returnRefund['refundType'] == ApiConst::refundTypeMoney) {
return OrderConst::sellerAgree;
}
if($returnRefund['refundType']==ApiConst::refundTypeGoods){
if($returnRefund['isSucRefund']==ApiConst::refundSuccess){
if ($returnRefund['refundType'] == ApiConst::refundTypeGoods) {
if ($returnRefund['isSucRefund'] == ApiConst::refundSuccess) {
return OrderConst::alreadyReufndMoney;
}
if($returnRefund['goodsState']==ApiConst::goodsStateUnRecieve){
if ($returnRefund['goodsState'] == ApiConst::goodsStateUnRecieve) {
return OrderConst::goodsStateUnRecieve;
}
if($returnRefund['goodsState']==ApiConst::goodsStateRecieved){
if ($returnRefund['goodsState'] == ApiConst::goodsStateRecieved) {
return OrderConst::goodsStateRecieved;
}
if($returnRefund['returnType']==ApiConst::returnTypeNotReturn){
if ($returnRefund['returnType'] == ApiConst::returnTypeNotReturn) {
return OrderConst::sellerAgreeReturn;
}
if($returnRefund['returnType']==ApiConst::returnTypeMustReturn){
if ($returnRefund['returnType'] == ApiConst::returnTypeMustReturn) {
return OrderConst::waitSellerRecieve;
}
}
}
if($returnRefund['sellerState']==ApiConst::refundSellerRefuse){
if($returnRefund['isSucRefund']==ApiConst::refundSuccess){
if ($returnRefund['sellerState'] == ApiConst::refundSellerRefuse) {
if ($returnRefund['isSucRefund'] == ApiConst::refundSuccess) {
return OrderConst::alreadyReufndMoney;
}
if($returnRefund['platformState']==ApiConst::platAgree){
if ($returnRefund['platformState'] == ApiConst::platAgree) {
return OrderConst::platFormAgree;
}
if($returnRefund['platformState']==ApiConst::platRefuse){
if ($returnRefund['platformState'] == ApiConst::platRefuse) {
return OrderConst::platFormRefuse;
}
if($returnRefund['isPlatformIn']==ApiConst::platIn){
if ($returnRefund['isPlatformIn'] == ApiConst::platIn) {
return OrderConst::platFromProccess;
}
if($returnRefund['refundType']==ApiConst::refundTypeMoney){
if ($returnRefund['refundType'] == ApiConst::refundTypeMoney) {
return OrderConst::sellerRefuse;
}
if($returnRefund['refundType']==ApiConst::refundTypeGoods){
if ($returnRefund['refundType'] == ApiConst::refundTypeGoods) {
return OrderConst::sellerRefuseGoods;
}
}
// }else{
// return OrderConst::refoundSuccess;
// }
return '';
}
public function getRefundTextStatus($refundReturn,$isSeller=false){
$refundText='';
switch($refundReturn['sellerState']){
case ApiConst::refundSellerVerify:$refundText=OrderConst::waitVerify;break;
default: $refundText=$this->getStatusExtent($refundReturn,$isSeller);break;
public function getSellerStateName($sellerState)
{
$sellerStateName = OrderConst::sellerStateVerify;
if ($sellerState == ApiConst::refundSellerAgree) {
$sellerStateName = OrderConst::sellerStateAgree;
}
if($sellerState==ApiConst::refundSellerRefuse){
$sellerStateName = OrderConst::sellerStateRefuse;
}
return $sellerStateName;
}
public function getPlatformStateName($platState)
{
$platStateName = OrderConst::platformStateVerify;
if ($platState == ApiConst::refundPlatformAgree) {
$platStateName = OrderConst::platformStateAgree;
}
if($platState==ApiConst::refundPlatformRefuse){
$platStateName = OrderConst::platformStateRefuse;
}
return $platStateName;
}
public function getRefundTextStatus($refundReturn, $isSeller = false)
{
$refundText = '';
switch ($refundReturn['sellerState']) {
case ApiConst::refundSellerVerify:
$refundText = OrderConst::waitVerify;
break;
default:
$refundText = $this->getStatusExtent($refundReturn, $isSeller);
break;
}
return $refundText;
}
public function getStatusText($orderId){
$where['order_id']=$orderId;
$refundReturn= $this->db->from($this->_tableName)->select($this->refundReturnField)->where($where)->fetchOne();
public function getStatusText($orderId)
{
$where['order_id'] = $orderId;
$refundReturn = $this->db->from($this->_tableName)->select($this->refundReturnField)->where($where)->fetchOne();
return $this->getRefundTextStatus($refundReturn);
}
/**
* 根据退货退款订单详情获取是否可申请平台介入
*
* @param
* @return array
*/
public function isPlatformIn($refundInfo){
public function isPlatformIn($refundInfo)
{
if(($refundInfo['isPlatformIn']==ApiConst::platNotIn && ($refundInfo['sellerState']==ApiConst::refundSellerRefuse) || $refundInfo['buyerRefundAmount']>$refundInfo['refundAmount'])){
if (($refundInfo['isPlatformIn'] == ApiConst::platNotIn && ($refundInfo['sellerState'] == ApiConst::refundSellerRefuse) || $refundInfo['buyerRefundAmount'] > $refundInfo['refundAmount'])) {
return TRUE;
}else{
} else {
return FALSE;
}
}
/**
* 根据订单状态判断是否可以退款退货
*
* @param
* @return array
*/
public function isReturn($order) {
public function isReturn($order)
{
$refund = FALSE;//默认不允许退款退货
$orderState = $order['orderState'];//订单状态
ApiConst::orderStateWaitRecieve;//30:已发货
......@@ -263,26 +313,26 @@ class RefundReturnModel extends \DAO\AbstractModel {
$payment_code = $order['paymentCode'];//支付方式
if ($payment_code != 'offline') {//货到付款订单在没确认收货前不能退款退货
$refund = TRUE;
}else{
} else {
ErrorModel::throwException(CodeConfigModel::returnErrorAfterPay);
}
break;
//已收货
case ApiConst::orderStateComplete:
if($order['shippingType']==ApiConst::express){
$order_refund=ApiConst::canRefundDay;
}else{
$order_refund=ApiConst::byselfRfundDay;
if ($order['shippingType'] == ApiConst::express) {
$order_refund = ApiConst::canRefundDay;
} else {
$order_refund = ApiConst::byselfRfundDay;
}
if($order['delayTime']>ApiConst::zero){
$delay_time = $order['delayTime']+60*60*24*$order_refund;
}else{
$delay_time = $order['gmtUpdate']+60*60*24*$order_refund;
if ($order['delayTime'] > ApiConst::zero) {
$delay_time = $order['delayTime'] + 60 * 60 * 24 * $order_refund;
} else {
$delay_time = $order['gmtUpdate'] + 60 * 60 * 24 * $order_refund;
}
if ($delay_time > TIMESTAMP) {
$refund = TRUE;
}else{
} else {
ErrorModel::throwException(CodeConfigModel::returnBeyondTimeError);
}
......@@ -294,28 +344,32 @@ class RefundReturnModel extends \DAO\AbstractModel {
return $refund;
}
/**
* 退款退货申请编号
*
* @param
* @return array
*/
public function getRefundsn($store_id) {
$result = mt_rand(100,999).substr(100+$store_id,-3).date('ymdHis');
public function getRefundsn($store_id)
{
$result = mt_rand(100, 999) . substr(100 + $store_id, -3) . date('ymdHis');
return $result;
}
/**
* 退款退货申请编号
*
* @param
* @return array
*/
public function getRefundPics($pics){
$picsRes=array();
if($pics){
foreach($pics as $pic){
$readFile=\Our\Common::getStaticFile($pic,ImageConst::refund);
array_push($picsRes,$readFile);
public function getRefundPics($pics)
{
$picsRes = array();
if ($pics) {
foreach ($pics as $pic) {
$readFile = \Our\Common::getStaticFile($pic, ImageConst::refund);
array_push($picsRes, $readFile);
}
}
return $picsRes;
......@@ -326,7 +380,8 @@ class RefundReturnModel extends \DAO\AbstractModel {
* 店铺退款
* @param $orderInfo 订单信息
*/
public function storeRefund($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'];
......@@ -334,9 +389,9 @@ class RefundReturnModel extends \DAO\AbstractModel {
$param['refundFee'] = $orderInfo['refund_amount'];//退款金额
$param['storeId'] = $orderInfo['store_id'];
$param['buyerId'] = $orderInfo['buyer_id'];
if(CURRENTVERSION==\Our\NameConst::versionOne&&in_array(intval($orderInfo['payment_type']),array(ApiConst::wxAppPayType,ApiConst::wxProgram))){
if (CURRENTVERSION == \Our\NameConst::versionOne && in_array(intval($orderInfo['payment_type']), array(ApiConst::wxAppPayType, ApiConst::wxProgram))) {
$mchIdArray = \DAO\StoreModel::getInstance()->getStoreWxMchId($param['storeId']);
if($mchIdArray['errorCode']>0){
if ($mchIdArray['errorCode'] > 0) {
$this->errorMessage = '微信支付商户错误或者签名错误';
return false;
}
......@@ -346,9 +401,9 @@ class RefundReturnModel extends \DAO\AbstractModel {
$wxpay = \Payment\WxPay::getInstance();
unset($param['subMchId']);
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信返回:".json_encode($refund_return);
$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";
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['order_id'] . "\r\n";
return false;
}
} else if (intval($orderInfo['payment_type']) == ApiConst::alipay) {
......@@ -362,12 +417,12 @@ class RefundReturnModel extends \DAO\AbstractModel {
$this->errorMessage = date('Y-m-d') . '支付宝退款操作执行失败:' . $orderInfo['order_id'] . "\r\n";
return false;
}
}else if(intval($orderInfo['payment_type']) == ApiConst::wxProgram){
} else if (intval($orderInfo['payment_type']) == ApiConst::wxProgram) {
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信小程序返回:".json_encode($refund_return);
$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";
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['order_id'] . "\r\n";
return false;
}
}
......@@ -379,18 +434,19 @@ class RefundReturnModel extends \DAO\AbstractModel {
* @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']);
//这个有可能多次退款的时候要变
$param['outTradeNo'] = $orderInfo['paySn'];
$param['totalFee'] = $orderInfo['orderAmount'];
$param['refundFee'] = $orderInfo['orderAmount'];//全额退款
$param['storeId']=$orderInfo['storeId'];
$param['buyerId']=$orderInfo['buyerId'];
if(CURRENTVERSION==\Our\NameConst::versionOne&&in_array(intval($orderInfo['paymentType']),array(\Our\ApiConst::wxAppPayType,\Our\ApiConst::wxProgram))){
$param['storeId'] = $orderInfo['storeId'];
$param['buyerId'] = $orderInfo['buyerId'];
if (CURRENTVERSION == \Our\NameConst::versionOne && in_array(intval($orderInfo['paymentType']), array(\Our\ApiConst::wxAppPayType, \Our\ApiConst::wxProgram))) {
$mchIdArray = \DAO\StoreModel::getInstance()->getStoreWxMchId($param['storeId']);
if($mchIdArray['errorCode']>0){
if ($mchIdArray['errorCode'] > 0) {
$this->errorMessage = '微信支付商户错误或者签名错误';
return false;
}
......@@ -400,9 +456,9 @@ class RefundReturnModel extends \DAO\AbstractModel {
$wxpay = \Payment\WxPay::getInstance();
unset($param['subMchId']);
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信返回:".json_encode($refund_return);
$this->errorMessage = "微信返回:" . json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['orderId']."\r\n";
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n";
return false;
}
} else if (intval($orderInfo['paymentType']) == ApiConst::alipay) {
......@@ -416,12 +472,12 @@ class RefundReturnModel extends \DAO\AbstractModel {
$this->errorMessage = date('Y-m-d') . '支付宝退款操作执行失败:' . $orderInfo['orderId'] . "\r\n";
return false;
}
}else if(intval($orderInfo['paymentType']) == ApiConst::wxProgram){
} else if (intval($orderInfo['paymentType']) == ApiConst::wxProgram) {
$wxpay = \Payment\WxLitePay::getInstance();
$refund_return = $wxpay->refund($param);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['orderId']."\r\n";
$this->errorMessage = date('Y-m-d') . '微信退款操作执行失败!' . $orderInfo['orderId'] . "\r\n";
return false;
}
}
......@@ -435,7 +491,8 @@ class RefundReturnModel extends \DAO\AbstractModel {
* @param $data
* @return bool
*/
public function editRefundReturn($condition, $data) {
public function editRefundReturn($condition, $data)
{
if (empty($condition)) {
return false;
}
......@@ -447,13 +504,15 @@ class RefundReturnModel extends \DAO\AbstractModel {
return false;
}
}
/**
* 增加退款退货
*
* @param
* @return int
*/
public function addRefundReturn($refund_array, $order = array(), $goods = array()) {
public function addRefundReturn($refund_array, $order = array(), $goods = array())
{
$this->setDb($this->dbName);
if (!empty($order) && is_array($order)) {
$refund_array['order_id'] = $order['orderId'];
......@@ -471,10 +530,10 @@ class RefundReturnModel extends \DAO\AbstractModel {
$refund_array['commis_rate'] = $goods['commisRate'];
$refund_array['goods_image'] = $goods['goodsImage'];
}
if($refund_array['goods_id']==ApiConst::zero){
if ($refund_array['goods_id'] == ApiConst::zero) {
ErrorModel::throwException(CodeConfigModel::commonError);
}
if(!isset($refund_array['refund_sn'])|| !$refund_array['refund_sn']){
if (!isset($refund_array['refund_sn']) || !$refund_array['refund_sn']) {
$refund_array['refund_sn'] = $this->getRefundsn($order['storeId']);
}
$refund_id = $this->db->insert($this->_tableName)->rows($refund_array)->execute();
......@@ -496,10 +555,11 @@ class RefundReturnModel extends \DAO\AbstractModel {
return $refund_id;
}
//删除订单详情缓存
public function deleteFindByOrderIdCache($refundId)
{
return \Our\RedisHelper::delCachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$this, 'findByRefundId'), array(),array($refundId));
return \Our\RedisHelper::delCachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$this, 'findByRefundId'), array(), array($refundId));
}
//删除订单列表缓存
......@@ -509,12 +569,12 @@ class RefundReturnModel extends \DAO\AbstractModel {
}
//删除订单缓存
public function deleteRefundCache($memberId, $refundId=false)
public function deleteRefundCache($memberId, $refundId = false)
{
if(!empty($memberId)){
if (!empty($memberId)) {
$this->deleteGetListByMemberId($memberId);
}
if(!empty($refundId)){
if (!empty($refundId)) {
$this->deleteFindByOrderIdCache($refundId);
}
}
......@@ -538,50 +598,53 @@ class RefundReturnModel extends \DAO\AbstractModel {
*
* @var \DAO\getList
*/
public function getList($where, $field, $pageIndex=ApiConst::zero, $pageSize=ApiConst::pageSize, $order = array('add_time' => 'desc'))
public function getList($where, $field, $pageIndex = ApiConst::zero, $pageSize = ApiConst::pageSize, $order = array('add_time' => 'desc'))
{
$this->setDb($this->dbName);
if(is_array($where)){
if (is_array($where)) {
$where = $this->db->getSqlWhereByArray($where);
}
$refunds = $this->lists($where, $order, $field, $pageIndex, $pageSize);
return $refunds ? $refunds : array();
}
//根据传过来的退款类型获取退款类型
public function getRefundTypeByType($refundType){
$returnType=ApiConst::refundTypeGoods;
if ($refundType!= ApiConst::refundTypeGoods) {
public function getRefundTypeByType($refundType)
{
$returnType = ApiConst::refundTypeGoods;
if ($refundType != ApiConst::refundTypeGoods) {
$returnType = ApiConst::refundTypeMoney;
}
return $returnType;
}
public function getRefundOperateState($operate,$refund_info,$order_info = null) {
public function getRefundOperateState($operate, $refund_info, $order_info = null)
{
if (!is_array($refund_info) || empty($refund_info)) return false;
switch ($operate){
switch ($operate) {
//选择配送员
case 'select_deliveryman':
$state = ($refund_info['refund_shipping_type'] == 1 && $refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
$state = ($refund_info['refund_shipping_type'] == 1 && $refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
break;
//收货
case 'take_delivery':
$state = ($refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
$state = ($refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
//修改退款金额/处理
break;
case 'change_refund':
$state = ($refund_info['seller_state']==1);
$state = ($refund_info['seller_state'] == 1);
break;
//退货
case 'return_goods':
$state = ($refund_info['seller_state']==1 && $refund_info['refund_type']==2);
$state = ($refund_info['seller_state'] == 1 && $refund_info['refund_type'] == 2);
break;
//退款
case 'return_money':
$state = ($refund_info['seller_state']==1 && $refund_info['refund_type']==1);
$state = ($refund_info['seller_state'] == 1 && $refund_info['refund_type'] == 1);
break;
//修改收货时间
case 'change_time':
$state = (!$refund_info['receive_time'] && $refund_info['refund_shipping_type'] == 1 && $refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
$state = (!$refund_info['receive_time'] && $refund_info['refund_shipping_type'] == 1 && $refund_info['return_type'] == 2 && $refund_info['goods_state'] == 2 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1));
break;
//原路退回
case 'return_origin':
......@@ -589,23 +652,27 @@ class RefundReturnModel extends \DAO\AbstractModel {
break;
//标记为已退款
case 'mark':
$state = ($refund_info['refund_type'] == 1 || ($refund_info['refund_type'] == 2 && $refund_info['goods_state'] == 4)) && $refund_info['is_suc_refund'] == 0 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1) && ($order_info && ($order_info['payment_type'] == 0 ||$order_info['payment_type'] == 2)) ;
$state = ($refund_info['refund_type'] == 1 || ($refund_info['refund_type'] == 2 && $refund_info['goods_state'] == 4)) && $refund_info['is_suc_refund'] == 0 && ($refund_info['seller_state'] == 2 || $refund_info['platform_state'] == 1) && ($order_info && ($order_info['payment_type'] == 0 || $order_info['payment_type'] == 2));
break;
}
return $state;
}
public function getMemberStoreStaticsByGmtUpdate($gmtUpdate,$pageIndex,$pageSize){
public function getMemberStoreStaticsByGmtUpdate($gmtUpdate, $pageIndex, $pageSize)
{
$this->setDb($this->dbName);
$where =\Our\Common::format(' gmt_update>={0} and gmt_update<{1} and refund_state={2}',$gmtUpdate,TIMESTAMP,ApiConst::refundStateComplete);
$res=$this->lists($where,array('gmt_update'=>'asc'),$this->sumField,$pageIndex,$pageSize);
return $res['list']?$res:false;
$where = \Our\Common::format(' gmt_update>={0} and gmt_update<{1} and refund_state={2}', $gmtUpdate, TIMESTAMP, ApiConst::refundStateComplete);
$res = $this->lists($where, array('gmt_update' => 'asc'), $this->sumField, $pageIndex, $pageSize);
return $res['list'] ? $res : false;
}
/**
*获得退货退款列表
*
* @var \DAO\getList
*/
public function updateRefundShipping(){
public function updateRefundShipping()
{
}
......@@ -621,7 +688,7 @@ class RefundReturnModel extends \DAO\AbstractModel {
* 单例模式获取类实例
*
*/
public static function getInstance($dbName=DbNameConst::salveDBConnectName)
public static function getInstance($dbName = DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
......@@ -631,40 +698,45 @@ class RefundReturnModel extends \DAO\AbstractModel {
}
/**
* @param $storeId
* @param $orderState
* @return mixed 待处理
*/
public function getCountByRefundState($storeId){
$where=$this->getProccessOrderBySeller($storeId);
$count=$this->getCountByWhere($where);
public function getCountByRefundState($storeId)
{
$where = $this->getProccessOrderBySeller($storeId);
$count = $this->getCountByWhere($where);
return $count;
}
//获得售后待处理订单条件
public function getProccessOrderBySeller($id){
$where['store_id']=$id;
$where['seller_state']=ApiConst::refundSellerVerify;
public function getProccessOrderBySeller($id)
{
$where['store_id'] = $id;
$where['seller_state'] = ApiConst::refundSellerVerify;
return $where;
}
//获得售后待收货订单条件
public function getReturnWaitReceive($id){
$where['store_id']=$id;
$where['refund_type']=ApiConst::refundTypeGoods;
$where['return_type']=ApiConst::returnTypeMustReturn;
$where['goods_state']=ApiConst::goodsStateWaitRecieve;
public function getReturnWaitReceive($id)
{
$where['store_id'] = $id;
$where['refund_type'] = ApiConst::refundTypeGoods;
$where['return_type'] = ApiConst::returnTypeMustReturn;
$where['goods_state'] = ApiConst::goodsStateWaitRecieve;
return $where;
}
/**
* @param $storeId
* @param $orderState
* @return mixed 待收货
*/
public function getCountByRefundType($storeId){
$where=$this->getReturnWaitReceive($storeId);
$count=$this->getCountByWhere($where);
public function getCountByRefundType($storeId)
{
$where = $this->getReturnWaitReceive($storeId);
$count = $this->getCountByWhere($where);
return $count;
}
......
......@@ -91,7 +91,7 @@ config.url.resourcesHost = "http://test.qm.com"
config.url.userHost = ""
; oss 域名
config.url.ossHost = "http://qmoss-01.oss-cn-hangzhou.aliyuncs.com"
config.url.ossHost = "https://img.shenbd.com"
;推送域名
config.url.pushHost="127.0.0.1:9503";
......
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