Orderrefund_bak.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\shop\controller;
  11. use app\model\order\OrderCommon;
  12. use app\model\order\OrderRefund as OrderRefundModel;
  13. use app\model\order\OrderExport;
  14. use app\model\member\Member;
  15. /**
  16. * 订单维权
  17. * Class Orderrefund
  18. * @package app\shop\controller
  19. */
  20. class Orderrefund extends BaseShop
  21. {
  22. /**
  23. * 维权订单列表
  24. * @return mixed
  25. */
  26. public function lists()
  27. {
  28. $refund_status = input("refund_status", "");//退款状态
  29. $sku_name = input("sku_name", '');//商品名称
  30. $refund_type = input("refund_type", '');//退款方式
  31. $start_time = input("start_time", '');//开始时间
  32. $end_time = input("end_time", '');//结束时间
  33. $order_no = input("order_no", '');//订单编号
  34. $delivery_status = input("delivery_status", '');//物流状态
  35. $refund_no = input("refund_no", '');//退款编号
  36. $delivery_no = input("delivery_no", '');//物流编号
  37. $refund_delivery_no = input("refund_delivery_no", '');//退款物流编号
  38. $refund_mode = input("refund_mode", '');//退款类型
  39. $order_refund_model = new OrderRefundModel();
  40. if (request()->isAjax()) {
  41. $page_index = input('page', 1);
  42. $page_size = input('page_size', PAGE_LIST_ROWS);
  43. $condition = [
  44. [ "nop.site_id", "=", $this->site_id ]
  45. ];
  46. //退款状态
  47. if ($refund_status != "") {
  48. $condition[] = [ "nop.refund_status", "=", $refund_status ];
  49. } else {
  50. $condition[] = [ "nop.refund_status", "<>", 0 ];
  51. }
  52. //物流状态
  53. if ($delivery_status != "") {
  54. $condition[] = [ "nop.delivery_status", "=", $delivery_status ];
  55. }
  56. //商品名称
  57. if ($sku_name != "") {
  58. $condition[] = [ "nop.sku_name", "like", "%$sku_name%" ];
  59. }
  60. //退款方式
  61. if ($refund_type != "") {
  62. $condition[] = [ "nop.refund_type", "=", $refund_type ];
  63. }
  64. //退款编号
  65. if ($refund_no != "") {
  66. $condition[] = [ "nop.refund_no", "like", "%$refund_no%" ];
  67. }
  68. //订单编号
  69. if ($order_no != "") {
  70. $condition[] = [ "nop.order_no", "like", "%$order_no%" ];
  71. }
  72. //物流编号
  73. if ($delivery_no != "") {
  74. $condition[] = [ "nop.delivery_no", "like", "%$delivery_no%" ];
  75. }
  76. //退款物流编号
  77. if ($refund_delivery_no != "") {
  78. $condition[] = [ "nop.refund_delivery_no", "like", "%$refund_delivery_no%" ];
  79. }
  80. //退款类型
  81. if ($refund_mode == 1) {
  82. $condition[] = [ "nop.refund_mode", "in", [ 0, 1 ] ];
  83. } else if ($refund_mode == 2) {
  84. $condition[] = [ "nop.refund_mode", "=", 2 ];
  85. }
  86. if (!empty($start_time) && empty($end_time)) {
  87. $condition[] = [ "nop.refund_action_time", ">=", date_to_time($start_time) ];
  88. } elseif (empty($start_time) && !empty($end_time)) {
  89. $condition[] = [ "nop.refund_action_time", "<=", date_to_time($end_time) ];
  90. } elseif (!empty($start_time) && !empty($end_time)) {
  91. $condition[] = [ 'nop.refund_action_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  92. }
  93. $list = $order_refund_model->getRefundOrderGoodsPageList($condition, $page_index, $page_size, "nop.refund_action_time desc");
  94. return $list;
  95. } else {
  96. $refund_status_list = $order_refund_model->order_refund_status;
  97. $this->assign("refund_status_list", $refund_status_list);//退款状态
  98. $this->assign("refund_type_list", $order_refund_model->refund_type);//退款方式
  99. return $this->fetch("orderrefund/lists");
  100. }
  101. }
  102. /**
  103. * 维权订单详情
  104. * @return mixed
  105. */
  106. public function detail()
  107. {
  108. $order_goods_id = input("order_goods_id", 0);
  109. //维权订单项信息
  110. $order_refund_model = new OrderRefundModel();
  111. $detail_result = $order_refund_model->getRefundDetail($order_goods_id);
  112. $detail = $detail_result[ "data" ];
  113. if (empty($detail))
  114. $this->error("未获取到维权信息", addon_url('shop/orderrefund/lists'));
  115. $order_common_model = new OrderCommon();
  116. // $order_info_result = $order_common_model->getOrderInfo([["order_id", "=", $detail["order_id"]]]);
  117. $order_info_result = $order_common_model->getOrderDetail($detail[ "order_id" ]);
  118. $order_info = $order_info_result[ "data" ];
  119. if (empty($order_info))
  120. $this->error("未获取到维权信息", addon_url('shop/orderrefund/lists'));
  121. $template = "orderrefund/detail";
  122. if ($order_info[ "order_type" ] == 4) {
  123. $template = "orderrefund/virtualdetail";
  124. }
  125. //添加会员昵称
  126. $member = new Member();
  127. $member_info = $member->getMemberInfo([ [ "member_id", '=', $order_info[ 'member_id' ] ] ], 'nickname')['data'] ?? [];
  128. $order_info[ 'nickname' ] = $member_info[ 'nickname' ] ?? '';
  129. $this->assign("detail", $detail);
  130. $this->assign("order_info", $order_info);
  131. return $this->fetch($template);
  132. }
  133. /**
  134. * 维权拒绝
  135. * @return mixed
  136. */
  137. public function refuse()
  138. {
  139. $order_goods_id = input("order_goods_id", 0);
  140. $refund_refuse_reason = input("refund_refuse_reason", '');
  141. $order_refund_model = new OrderRefundModel();
  142. $data = array (
  143. "order_goods_id" => $order_goods_id,
  144. "refund_refuse_reason" => $refund_refuse_reason
  145. );
  146. $log_data = [
  147. 'uid' => $this->user_info[ 'uid' ],
  148. 'nick_name' => $this->user_info[ 'username' ],
  149. 'action' => '商家拒绝了维权',
  150. 'action_way' => 2
  151. ];
  152. $res = $order_refund_model->orderRefundRefuse($data, $this->user_info, $refund_refuse_reason, $log_data);
  153. return $res;
  154. }
  155. /**
  156. * 维权同意
  157. * @return mixed
  158. */
  159. public function agree()
  160. {
  161. $order_goods_id = input("order_goods_id", 0);
  162. $order_refund_model = new OrderRefundModel();
  163. $data = array (
  164. "order_goods_id" => $order_goods_id
  165. );
  166. $res = $order_refund_model->orderRefundConfirm($data, $this->user_info);
  167. return $res;
  168. }
  169. /**
  170. * 维权收货
  171. * @return mixed
  172. */
  173. public function receive()
  174. {
  175. $order_goods_id = input("order_goods_id", 0);
  176. $is_refund_stock = input("is_refund_stock", 0);//是否入库
  177. $order_refund_model = new OrderRefundModel();
  178. $data = array (
  179. "order_goods_id" => $order_goods_id,
  180. "is_refund_stock" => $is_refund_stock
  181. );
  182. $res = $order_refund_model->orderRefundTakeDelivery($data, $this->user_info);
  183. return $res;
  184. }
  185. /**
  186. * 维权通过
  187. * @return mixed
  188. */
  189. public function complete()
  190. {
  191. $order_goods_id = input("order_goods_id", 0);
  192. $refund_money_type = input('refund_money_type', '');
  193. $shop_refund_remark = input('shop_refund_remark', '');
  194. $refund_real_money = input('refund_real_money', 0);
  195. $is_deposit_back = input('is_deposit_back', 1);
  196. $order_refund_model = new OrderRefundModel();
  197. $data = array (
  198. "order_goods_id" => $order_goods_id,
  199. 'refund_money_type' => $refund_money_type,
  200. 'shop_refund_remark' => $shop_refund_remark,
  201. 'refund_real_money' => $refund_real_money,
  202. 'is_deposit_back' => $is_deposit_back
  203. );
  204. $log_data = [
  205. 'uid' => $this->user_info[ 'uid' ],
  206. 'nick_name' => $this->user_info[ 'username' ],
  207. 'action' => '商家对维权进行了转账,维权结束',
  208. 'action_way' => 2
  209. ];
  210. $res = $order_refund_model->orderRefundFinish($data, $this->user_info, $log_data);
  211. return $res;
  212. }
  213. /**
  214. * 订单导出(维权订单)
  215. */
  216. public function exportRefundOrder()
  217. {
  218. $refund_status = input("refund_status", "");//退款状态
  219. $sku_name = input("sku_name", '');//商品名称
  220. $refund_type = input("refund_type", '');//退款方式
  221. $start_time = input("start_time", '');//开始时间
  222. $end_time = input("end_time", '');//结束时间
  223. $order_no = input("order_no", '');//订单编号
  224. $delivery_status = input("delivery_status", '');//物流状态
  225. $refund_no = input("refund_no", '');//退款编号
  226. $order_refund_model = new OrderRefundModel();
  227. $delivery_no = input("delivery_no", '');//物流编号
  228. $refund_delivery_no = input("refund_delivery_no", '');//退款物流编号
  229. $condition_desc = [];
  230. $condition[] = [ 'og.site_id', '=', $this->site_id ];
  231. //退款状态
  232. $refund_status_list = $order_refund_model->order_refund_status;
  233. $refund_status_name = '全部';
  234. if ($refund_status != "") {
  235. $condition[] = [ "og.refund_status", "=", $refund_status ];
  236. $refund_status_name = $refund_status_list[ $refund_status ][ 'name' ] ?? '';
  237. } else {
  238. $condition[] = [ "og.refund_status", "<>", 0 ];
  239. }
  240. $condition_desc[] = [ 'name' => '维权状态', 'value' => $refund_status_name ];
  241. //物流状态
  242. if ($delivery_status != "") {
  243. $condition[] = [ "og.delivery_status", "=", $delivery_status ];
  244. }
  245. //商品名称
  246. $sku_name_value = '';
  247. if ($sku_name != "") {
  248. $condition[] = [ "og.sku_name", "like", "%$sku_name%" ];
  249. $sku_name_value = $sku_name;
  250. }
  251. $condition_desc[] = [ 'name' => '商品名称', 'value' => $sku_name_value ];
  252. //退款方式
  253. $refund_type_name = '全部';
  254. if ($refund_type != "") {
  255. $condition[] = [ "og.refund_type", "=", $refund_type ];
  256. $refund_type_name = $order_refund_model->refund_type[ $refund_type ];
  257. }
  258. $condition_desc[] = [ 'name' => '退款方式', 'value' => $refund_type_name ];
  259. //退款编号
  260. if ($refund_no != "") {
  261. $condition[] = [ "og.refund_no", "like", "%$refund_no%" ];
  262. }
  263. $condition_desc[] = [ 'name' => '退款编号', 'value' => $refund_no ];
  264. //订单编号
  265. if ($order_no != "") {
  266. $condition[] = [ "og.order_no", "like", "%$order_no%" ];
  267. }
  268. $condition_desc[] = [ 'name' => '订单编号', 'value' => $order_no ];
  269. //物流编号
  270. if ($delivery_no != "") {
  271. $condition[] = [ "og.delivery_no", "like", "%$delivery_no%" ];
  272. }
  273. //退款物流编号
  274. if ($refund_delivery_no != "") {
  275. $condition[] = [ "og.refund_delivery_no", "like", "%$refund_delivery_no%" ];
  276. }
  277. $time_name = '';
  278. if (!empty($start_time) && empty($end_time)) {
  279. $condition[] = [ "og.refund_action_time", ">=", date_to_time($start_time) ];
  280. $time_name = $start_time . '起';
  281. } elseif (empty($start_time) && !empty($end_time)) {
  282. $condition[] = [ "og.refund_action_time", "<=", date_to_time($end_time) ];
  283. $time_name = '至' . $end_time;
  284. } elseif (!empty($start_time) && !empty($end_time)) {
  285. $condition[] = [ 'og.refund_action_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  286. $time_name = $start_time . ' 至 ' . $end_time;
  287. }
  288. $condition_desc[] = [ 'name' => '申请时间', 'value' => $time_name ];
  289. $order_export_model = new OrderExport();
  290. $result = $order_export_model->orderRefundExport($condition, $condition_desc, $this->site_id);
  291. return $result;
  292. }
  293. /**
  294. * 订单导出记录
  295. * @return mixed
  296. */
  297. public function export()
  298. {
  299. if (request()->isAjax()) {
  300. $page_index = input('page', 1);
  301. $page_size = input('page_size', PAGE_LIST_ROWS);
  302. $export_model = new OrderExport();
  303. $condition = array (
  304. [ 'site_id', '=', $this->site_id ]
  305. );
  306. $result = $export_model->getRefundExportPageList($condition, $page_index, $page_size, 'create_time desc', '*');
  307. return $result;
  308. } else {
  309. return $this->fetch("orderrefund/export");
  310. }
  311. }
  312. /**
  313. * 删除订单导出记录
  314. */
  315. public function deleteExport()
  316. {
  317. if (request()->isAjax()) {
  318. $export_ids = input('export_ids', '');
  319. $export_model = new OrderExport();
  320. $condition = array (
  321. [ 'site_id', '=', $this->site_id ],
  322. [ 'export_id', 'in', (string) $export_ids ]
  323. );
  324. $result = $export_model->deleteRefundExport($condition);
  325. return $result;
  326. }
  327. }
  328. /**
  329. * 关闭维权
  330. * @return \app\model\order\multitype
  331. */
  332. public function close()
  333. {
  334. if (request()->isAjax()) {
  335. $order_goods_id = input("order_goods_id", 0);
  336. $order_refund_model = new OrderRefundModel();
  337. $res = $order_refund_model->orderRefundClose($order_goods_id, $this->site_id, $this->user_info);
  338. return $res;
  339. }
  340. }
  341. /**
  342. * 获取订单项退款信息
  343. */
  344. public function getOrderGoodsRefundInfo()
  345. {
  346. if (request()->isAjax()) {
  347. $order_goods_id = input('order_goods_id', '');
  348. $order_refund_model = new OrderRefundModel();
  349. $res = $order_refund_model->getOrderGoodsRefundInfo($order_goods_id, $this->site_id);
  350. return $res;
  351. }
  352. }
  353. /**
  354. * 主动退款
  355. * @return mixed
  356. */
  357. public function shopActiveRefund()
  358. {
  359. $order_goods_id = input("order_goods_id", 0);
  360. $refund_money_type = input('refund_money_type', '');
  361. $shop_refund_remark = input('shop_refund_remark', '');
  362. $do_refund_money = input('do_refund_money', '');
  363. $order_refund_model = new OrderRefundModel();
  364. $params = array (
  365. 'site_id' => $this->site_id,
  366. 'app_module' => $this->app_module,
  367. 'refund_money_type' => $refund_money_type,
  368. 'shop_refund_remark' => $shop_refund_remark,
  369. 'user_info' => $this->user_info,
  370. 'order_goods_id' => $order_goods_id,
  371. 'do_refund_money' => $do_refund_money
  372. );
  373. $res = $order_refund_model->doOrderOrderRefund($params);
  374. return $res;
  375. }
  376. }