作者 jinglong
1 个管道 的构建 通过 耗费 6 秒

修改退款逻辑

... ... @@ -2,6 +2,7 @@
namespace app\admin\controller;
use app\api\controller\Common;
use app\common\controller\Backend;
use think\Db;
use EasyWeChat\Factory;
... ... @@ -126,32 +127,47 @@ class Order extends Backend
$pk = $this->model->getPk();
$res = Db::name('order')->where($pk,$ids)->field('id,pay_order_sn,total_goods_price')->find();
$status = config('verify.status');
$res1 = $this->model->where($pk, '=', $ids)->update(['status'=>$status[4]]);
if($res1){
//处理退款逻辑
$config = config('verify.wx_pay');
$app = Factory::payment($config);
// $security_price = $res['total_goods_price']*100;
$security_price = 1;
$refundNumber = $this->genPayOrderSn('refund');//商户退款单号
$result = $app->refund->byOutTradeNumber($res['pay_order_sn'], $refundNumber, $security_price, $security_price, [
// 可在此处传入其他参数,详细参数见微信支付文档
]);
if($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS'){
$this->model->where($pk, '=', $ids)->update(['status'=>$status[4]]);
//增加库存
$res1 = Db::name('ogoods')->where(['o_id'=>$res['id']])->field('id,g_id,style,goods_number')->select();
$g_ids = array_column($res1,'g_id');
$res_stock = Common::selectSoftWhereData('goods',['id'=>['in',$g_ids]],'id,style g_style,stock');
$goodsModel = new \app\admin\model\Goods();
foreach($res_stock as $g_value){
$arr_stock = explode('|',$g_value['stock']);
$sale_number = 1;
foreach($res1 as $value){
if($g_value['id'] == $value['g_id']){
$s_index = array_search($value['style'],Common::salePrice($g_value['g_style']));
$stock = Common::salePrice($g_value['stock'])[$s_index] + $value['goods_number'];
$arr_stock[$s_index] = $stock;
$sale_number = $value['goods_number'];
}
}
//更新增加库存
$stock1 = implode('|',$arr_stock);
$goodsModel->where(['id'=>$g_value['id']])->update(['stock'=>$stock1]);
//减少销售
Common::decSales(['id'=>['in',$g_ids]],$sale_number);
}
$this->success('成功');
}else{
$this->error('失败');
$this->error('退款失败');
}
//处理退款逻辑
// $config = config('verify.wx_pay');
// $app = Factory::payment($config);
// $security_price = $res['total_goods_price']*100;
// $refundNumber = $this->genPayOrderSn('refund');//商户退款单号
// $result = $app->refund->byOutTradeNumber($res['pay_order_sn'], $refundNumber, $security_price, $security_price, [
// // 可在此处传入其他参数,详细参数见微信支付文档
// ]);
// if($result['return_code'] === 'SUCCESS' && $result['result_code'] === 'SUCCESS'){
// $this->model->where($pk, '=', $ids)->update(['status'=>$status[4]]);
//
// //增加库存
// $res2 = Db::name('ogoods')->where(['o_id'=>$res['id']])->field('id,g_id')->select();
// $g_ids = array_column($res2,'g_id');
// $goodsModel = new \app\admin\model\Goods();
// $goodsModel->where(['id'=>['in',$g_ids]])->setInc('stock',1);
// $this->success('成功');
// }else{
// $this->error('退款失败');
// }
}
$this->error(__('Parameter %s can not be empty', 'ids'));
... ...
... ... @@ -550,6 +550,15 @@ class Common
}
/**
* 减少销量
* @ApiInternal
*/
public static function decSales($where,$sale_number){
$goodsModel = new \app\admin\model\Goods();
$goodsModel->where($where)->setDec('sales',$sale_number);
}
/**
* 删购物车
* @ApiInternal
*/
... ...