AfterorderController.class.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. <?php
  2. /**
  3. * lionfish 商城系统
  4. *
  5. * ==========================================================================
  6. * @link http://www.liofis.com/
  7. * @copyright Copyright (c) 2015 liofis.com.
  8. * @license http://www.liofis.com/license.html License
  9. * ==========================================================================
  10. *
  11. * @author fish
  12. *
  13. */
  14. namespace Home\Controller;
  15. class AfterorderController extends CommonController {
  16. public function get_order_money()
  17. {
  18. $_GPC = I('request.');
  19. $token = $_GPC['token'];
  20. $weprogram_token = M('lionfish_comshop_weprogram_token')->field('member_id')->where( array('token' => $token) )->find();
  21. $member_id = $weprogram_token['member_id'];
  22. $member_info = M('lionfish_comshop_member')->where( array('member_id' => $member_id) )->find();
  23. if( empty($member_id) )
  24. {
  25. $result['code'] = 0;
  26. $result['msg'] = '登录失效';
  27. echo json_encode($result);
  28. die();
  29. }
  30. $order_id = $_GPC['order_id'];
  31. $order_goods_id = $_GPC['order_goods_id'];
  32. $ref_id = isset($_GPC['ref_id']) && $_GPC['ref_id'] > 0 ? intval($_GPC['ref_id']) : '';
  33. //total lionfish_comshop_order
  34. //shipping_name shipping_tel
  35. $total = 0;
  36. $order_info = M('lionfish_comshop_order')->where( array('order_id' => $order_id , 'member_id' => $member_id ) )->find();
  37. $order_goods = M('lionfish_comshop_order_goods')->where( array('order_id' =>$order_id,'order_goods_id' =>$order_goods_id ) )->find();
  38. $total += $order_goods['total'] + $order_goods['shipping_fare']- $order_goods['voucher_credit']- $order_goods['fullreduction_money'] - $order_goods['score_for_money'];
  39. $order_option_info = M('lionfish_comshop_order_option')->field('value')->where( array('order_id' =>$order_id,'order_goods_id' => $order_goods_id ) )->select();
  40. foreach($order_option_info as $option)
  41. {
  42. $order_goods['option_str'][] = $option['value'];
  43. }
  44. if(empty($order_goods['option_str']))
  45. {
  46. //option_str
  47. $order_goods['option_str'] = '';
  48. }else{
  49. $order_goods['option_str'] = implode(',', $order_goods['option_str']);
  50. }
  51. //$goods_images = resize($order_goods['goods_images'],400);
  52. $goods_images = $order_goods['goods_images'];
  53. if( !is_array($goods_images) )
  54. {
  55. $order_goods['image']= tomedia( $goods_images );
  56. $order_goods['goods_images']= tomedia( $goods_images );
  57. }else{
  58. $order_goods['image']= $order_goods['goods_images'];
  59. }
  60. $shipping_name = $order_info['shipping_name'];
  61. $shipping_tel = $order_info['shipping_tel'];
  62. //商品图片 ref_id
  63. $refund_info = array();
  64. $refund_image = array();
  65. if( !empty($ref_id) && $ref_id > 0 )
  66. {
  67. $refund_info = M('lionfish_comshop_order_refund')->where( array('ref_id' => $ref_id ) )->find();
  68. $order_refund_image = M('lionfish_comshop_order_refund_image')->where( array('ref_id' =>$order_refund['ref_id'] ) )->select();
  69. if(!empty($order_refund_image))
  70. {
  71. foreach($order_refund_image as $key => $refund_image)
  72. {
  73. $refund_image['thumb_image'] = tomedia( resize($refund_image['image'], 200) );
  74. $order_refund_image[$key] = $refund_image;
  75. }
  76. }
  77. }
  78. echo json_encode( array('code' =>1, 'total' => $total,'refund_info' => $refund_info,'refund_image' => $refund_image,'order_goods' => $order_goods ,'shipping_name' => $shipping_name,'shipping_tel' => $shipping_tel, 'order_status_id'=>$order_info['order_status_id']) );
  79. die();
  80. }
  81. public function refund_sub()
  82. {
  83. $_GPC = I('request.');
  84. $token = $_GPC['token'];
  85. $weprogram_token = M('lionfish_comshop_weprogram_token')->field('member_id')->where( array('token' => $token) )->find();
  86. if( empty($weprogram_token) || empty($weprogram_token['member_id']) )
  87. {
  88. $result['code'] = 0;
  89. $result['msg'] = '登录失效';
  90. echo json_encode($result);
  91. die();
  92. }
  93. $member_id = $weprogram_token['member_id'];
  94. $member_info = M('lionfish_comshop_member')->where( array('member_id' => $member_id) )->find();
  95. $member_id = $weprogram_token['member_id'];
  96. if( empty($member_id) )
  97. {
  98. $result['code'] = 0;
  99. $result['msg'] = '登录失效';
  100. echo json_encode($result);
  101. die();
  102. }
  103. $data = array();
  104. $data['order_id'] = $_GPC['order_id'];//订单号
  105. if(isset($_GPC['ref_id']) && $_GPC['ref_id'] > 0)
  106. {
  107. $data['ref_id'] = isset($_GPC['ref_id']) ? $_GPC['ref_id'] : 0 ;//如果是退款申请修改,那么有此字段,这个是退款的编号
  108. }
  109. $data['complaint_type'] = $_GPC['complaint_type'];//1 退款,2退货
  110. $data['complaint_images'] = $_GPC['complaint_images'];//退款的图片
  111. $data['complaint_desc'] = $_GPC['complaint_desc'];//商品问题描述
  112. $data['complaint_mobile'] = $_GPC['complaint_mobile'];//联系人手机号
  113. $data['complaint_name'] = $_GPC['complaint_name'];//退款的联系人
  114. $data['complaint_reason'] = $_GPC['complaint_reason'];//问题类型
  115. $data['complaint_money'] = $_GPC['complaint_money'];//退款金额
  116. if( !empty($data['complaint_images']) )
  117. {
  118. $data['complaint_images'] = explode(',', $data['complaint_images']);
  119. }
  120. $order_id = $data['order_id'];
  121. $order_goods_id = $_GPC['order_goods_id'];//子订单号
  122. $real_refund_quantity = isset($_GPC['real_refund_quantity']) ? $_GPC['real_refund_quantity'] : 1;
  123. $order_info = M('lionfish_comshop_order')->where( array('member_id' => $member_id, 'order_id' => $order_id ) )->find();
  124. if(empty($order_info) )
  125. {
  126. $result['code'] = 0;
  127. $result['msg'] = '没有此订单';
  128. echo json_encode($result);
  129. die();
  130. }
  131. $result = array('code' => 0);
  132. $refdata = array();
  133. $refdata['order_id'] = intval($data['order_id']);
  134. $refdata['ref_type'] = intval($data['complaint_type']);
  135. $refdata['ref_money'] = floatval($data['complaint_money']);
  136. $refdata['ref_member_id'] = $member_id;
  137. $refdata['ref_name'] = htmlspecialchars($data['complaint_reason']);
  138. $refdata['ref_mobile'] = htmlspecialchars($data['complaint_mobile']);
  139. $refdata['ref_description'] = htmlspecialchars($data['complaint_desc']);
  140. $refdata['complaint_name'] = htmlspecialchars($data['complaint_name']);
  141. $refdata['state'] = 0;
  142. $refdata['real_refund_quantity'] = $real_refund_quantity;
  143. $refdata['addtime'] = time();
  144. //complaint_name
  145. $order_info['total'] = round($order_info['total'],2)< 0.01 ? '0.00':round($order_info['total']+$order_info['shipping_fare']-$order_info['voucher_credit']-$order_info['fullreduction_money'],2) ;
  146. if( !empty($order_goods_id) && $order_goods_id > 0 )
  147. {
  148. $order_goods_info = M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $order_goods_id ) )->find();
  149. $tp_total = round($order_goods_info['total'],2)< 0.01 ? '0.00':round($order_goods_info['total']+$order_goods_info['shipping_fare']-$order_goods_info['voucher_credit']-$order_goods_info['score_for_money']-$order_goods_info['fullreduction_money'],2) ;
  150. $order_info['total'] = $tp_total;
  151. }
  152. if( $refdata['ref_money'] <=0 )
  153. {
  154. $result['msg'] = '退款金额不能为0';
  155. echo json_encode($result);
  156. die();
  157. }
  158. if($order_info['total'] < 0)
  159. {
  160. $order_info['total'] = '0.00';
  161. }
  162. if($refdata['ref_money'] > $order_info['total'])
  163. {
  164. $result['msg'] = '退款金额不能大于订单总额';
  165. echo json_encode($result);
  166. die();
  167. }
  168. if(!empty($data['ref_id']))
  169. {
  170. $ref_id = intval($data['ref_id']);
  171. unset($refdata['order_id']);
  172. unset($refdata['ref_member_id']);
  173. unset($refdata['addtime']);
  174. M('lionfish_comshop_order_refund')->where( array('ref_id' => $ref_id) )->save( $refdata );
  175. $order_history = array();
  176. //$order_history['ref_id'] = $ref_id;
  177. $order_history['order_id'] = $order_id;
  178. $order_history['order_status_id'] = $order_info['order_status_id'];
  179. $order_history['notify'] = 0;
  180. $order_history['comment'] = '用户修改退款资料';
  181. $order_history['date_added']=time();
  182. //pdo_insert('lionfish_comshop_order_history', $order_history);
  183. //记录日志
  184. $order_refund_history = array();
  185. $order_refund_history['ref_id'] = $ref_id;
  186. $order_refund_history['order_id'] = $order_id;
  187. $order_refund_history['order_goods_id'] = $order_goods_id;
  188. $order_refund_history['message'] = '用户修改退款资料';
  189. $order_refund_history['type'] = 1;
  190. $order_refund_history['addtime'] = time();
  191. $orh_id = M('lionfish_comshop_order_refund_history')->add( $order_refund_history );
  192. if(!empty($data['complaint_images']))
  193. {
  194. foreach($data['complaint_images'] as $complaint_images)
  195. {
  196. $img_data = array();
  197. $img_data['orh_id'] = $orh_id;
  198. $img_data['image'] = htmlspecialchars($complaint_images);
  199. $img_data['addtime'] = time();
  200. M('lionfish_comshop_order_refund_history_image')->add( $img_data );
  201. }
  202. }
  203. }else {
  204. //real_refund_quantity
  205. //$refdata['real_refund_quantity'] = $real_refund_quantity;
  206. //申请中的退款数量
  207. $has_refund_quantity = $order_goods_info['has_refund_quantity'];
  208. $del_can_refund_quantity = $order_goods_info['quantity'] - $has_refund_quantity;
  209. if( $real_refund_quantity <= 0 )
  210. {
  211. $real_refund_quantity = $del_can_refund_quantity;
  212. $refdata['real_refund_quantity'] = $real_refund_quantity;
  213. }
  214. $refdata['order_goods_id'] = $order_goods_id;
  215. //store_id
  216. $refdata['store_id'] = $order_info['store_id'];
  217. $refdata['head_id'] = $order_info['head_id'];
  218. $ref_id = M('lionfish_comshop_order_refund')->add($refdata);
  219. $order_refund_history = array();
  220. $order_refund_history['ref_id'] = $ref_id;
  221. $order_refund_history['order_id'] = $order_id;
  222. $order_refund_history['order_goods_id'] = $order_goods_id;
  223. $order_refund_history['message'] = '已经提交退款申请,待平台审核';
  224. $order_refund_history['type'] = 1;
  225. $order_refund_history['addtime'] = time();
  226. $orh_id = M('lionfish_comshop_order_refund_history')->add($order_refund_history);
  227. $can_refund_order = true;
  228. if( !empty($order_goods_id) && $order_goods_id > 0 )
  229. {
  230. M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $order_goods_id ) )->save( array('is_refund_state' => 1) );
  231. //判断是否全部都退款了
  232. $gdall = M('lionfish_comshop_order_goods')->field('is_refund_state')->where( array('order_id' => $order_id ) )->select();
  233. foreach( $gdall as $vv )
  234. {
  235. if( $vv['is_refund_state'] == 0 )
  236. {
  237. $can_refund_order = false;
  238. break;
  239. }
  240. }
  241. if( $real_refund_quantity != $del_can_refund_quantity )
  242. {
  243. $can_refund_order = false;
  244. }
  245. }
  246. /**
  247. 判断是否所有订单都在退款中
  248. **/
  249. if($can_refund_order)
  250. {
  251. $up_order = array();
  252. $up_order['order_status_id'] = 12;
  253. $up_order['last_refund_order_status_id'] = $order_info['order_status_id'];
  254. M('lionfish_comshop_order')->where( array('order_id' => $order_id ) )->save( $up_order );
  255. }
  256. $order_history = array();
  257. $order_history['order_id'] = $order_id;
  258. $order_history['order_goods_id'] = $order_goods_id;
  259. $order_history['order_status_id'] = 12;
  260. $order_history['notify'] = 0;
  261. $order_history['comment'] = '用户申请退款中,申请退款'.$real_refund_quantity.'个';
  262. $order_history['date_added']=time();
  263. M('lionfish_comshop_order_history')->add( $order_history );
  264. if(!empty($data['complaint_images']))
  265. {
  266. //complaint_images
  267. foreach($data['complaint_images'] as $complaint_images)
  268. {
  269. $img_data = array();
  270. $img_data['ref_id'] = $ref_id;
  271. $img_data['uniacid'] = $_W['uniacid'];
  272. $img_data['image'] = htmlspecialchars($complaint_images);
  273. $img_data['addtime'] = time();
  274. M('lionfish_comshop_order_refund_image')->add( $img_data );
  275. }
  276. }
  277. //发送消息给管理员,有人申请退款了
  278. $platform_send_info_member_id = D('Home/Front')->get_config_by_name('platform_send_info_member');
  279. $weixin_template_apply_refund = D('Home/Front')->get_config_by_name('weixin_template_apply_refund');
  280. if( !empty($weixin_template_apply_refund) && !empty($platform_send_info_member_id) )
  281. {
  282. $weixin_template_order =array();
  283. $weixin_appid = D('Home/Front')->get_config_by_name('weixin_appid' );
  284. if( !empty($weixin_appid) && !empty($weixin_template_apply_refund) )
  285. {
  286. $head_pathinfo = "lionfish_comshop/pages/index/index";
  287. $weopenid = M('lionfish_comshop_member')->where( array('member_id' => $platform_send_info_member_id ) )->find();
  288. $weixin_template_order = array(
  289. 'appid' => $weixin_appid,
  290. 'template_id' => $weixin_template_apply_refund,
  291. 'pagepath' => $head_pathinfo,
  292. 'data' => array(
  293. 'first' => array('value' => '您好,您收到了一个顾客退款申请订单,请尽快处理','color' => '#030303'),
  294. 'keyword1' => array('value' => $weopenid['username'],'color' => '#030303'),//顾客信息
  295. 'keyword2' => array('value' => $order_info['shipping_tel'],'color' => '#030303'),//联系方式
  296. 'keyword3' => array('value' => $order_info['order_num_alias'],'color' => '#030303'),
  297. 'keyword4' => array('value' => sprintf("%01.2f", $order_info['total']),'color' => '#030303'),
  298. 'keyword5' => array('value' => htmlspecialchars($data['complaint_reason']),'color' => '#030303'),
  299. 'remark' => array('value' => '请在48小时内响应顾客的售后申请,请尽快处理','color' => '#030303'),
  300. )
  301. );
  302. D('Seller/User')->just_send_wxtemplate($weopenid['we_openid'], 0, $weixin_template_order );
  303. }
  304. }
  305. }
  306. $result['code'] = 1;
  307. echo json_encode($result);
  308. die();
  309. }
  310. public function refunddetail()
  311. {
  312. $_GPC = I('request.');
  313. $token = $_GPC['token'];
  314. $weprogram_token = M('lionfish_comshop_weprogram_token')->field('member_id')->where( array('token' => $token) )->find();
  315. if( empty($weprogram_token) || empty($weprogram_token['member_id']) )
  316. {
  317. echo json_encode( array('code' => 1) );
  318. die();
  319. }
  320. $member_id = $weprogram_token['member_id'];
  321. $member_info = M('lionfish_comshop_member')->where( array('member_id' => $member_id) )->find();
  322. if( empty($member_id) )
  323. {
  324. $result['code'] = 0;
  325. $result['msg'] = '登录失效';
  326. echo json_encode($result);
  327. die();
  328. }
  329. $ref_id = $_GPC['ref_id'];
  330. $order_refund = M('lionfish_comshop_order_refund')->where( array('ref_id' => $ref_id ) )->find();
  331. $order_id = $order_refund['order_id'];
  332. $order_info = M('lionfish_comshop_order')->where( array('member_id' => $member_id, 'order_id' =>$order_id ) )->find();
  333. if(empty($order_info) )
  334. {
  335. $result['code'] = 0;
  336. $result['msg'] = '无此订单';
  337. echo json_encode($result);
  338. die();
  339. }
  340. if($order_refund['order_goods_id'] > 0)
  341. {
  342. $order_goods = M('lionfish_comshop_order_goods')->where( array('order_goods_id' =>$order_refund['order_goods_id'],'order_id' => $order_id ) )->find();
  343. }else{
  344. $order_goods = M('lionfish_comshop_order_goods')->where( array('order_id' => $order_id ) )->find();
  345. }
  346. $total = 0;
  347. $total = $order_goods['total'] + $order_goods['shipping_fare']- $order_goods['voucher_credit']- $order_goods['fullreduction_money'] - $order_goods['score_for_money'];
  348. $order_goods['total'] = $total;
  349. $order_option_info = M('lionfish_comshop_order_option')->field('value')->where( array('order_id' => $order_id ,'order_goods_id' => $order_refund['order_goods_id'] ) )->select();
  350. foreach($order_option_info as $option)
  351. {
  352. $order_goods['option_str'][] = $option['value'];
  353. }
  354. if(empty($order_goods['option_str']))
  355. {
  356. //option_str
  357. $order_goods['option_str'] = '';
  358. }else{
  359. $order_goods['option_str'] = implode(',', $order_goods['option_str']);
  360. }
  361. $goods_images = $order_goods['goods_images'];
  362. if( !is_array($goods_images) )
  363. {
  364. $order_goods['image']= tomedia( $goods_images );
  365. $order_goods['goods_images']= tomedia( $goods_images );
  366. }else{
  367. $order_goods['image']= $order_goods['goods_images'];
  368. }
  369. $order_refund['ref_type'] = $order_refund['ref_type'] ==1 ? '退款': '退款退货';
  370. $refund_state = array(
  371. 0 => '申请中',
  372. 1 => '商家拒绝',
  373. 2 => '平台介入',
  374. 3 => '退款成功',
  375. 4 => '退款失败',
  376. 5 => '撤销申请',
  377. );
  378. $order_refund['state_str'] = $refund_state[$order_refund['state']];
  379. $order_refund['addtime'] = date('Y-m-d H:i:s', $order_refund['addtime']);
  380. $order_refund_image = M('lionfish_comshop_order_refund_image')->where( array('ref_id' => $order_refund['ref_id'] ) )->select();
  381. $refund_images = array();
  382. if(!empty($order_refund_image))
  383. {
  384. foreach($order_refund_image as $refund_image)
  385. {
  386. $refund_image['thumb_image'] = $refund_image['image'];
  387. $refund_images[] = $refund_image;
  388. }
  389. }
  390. if($order_refund['order_goods_id'] > 0)
  391. {
  392. $order_refund_historylist = M('lionfish_comshop_order_refund_history')->where( array('order_id' => $order_id,'order_goods_id' => $order_refund['order_goods_id'] ) )->order('addtime asc')->select();
  393. }else{
  394. $order_refund_historylist = M('lionfish_comshop_order_refund_history')->where( array('order_id' => $order_id) )->order('addtime asc')->select();
  395. }
  396. foreach($order_refund_historylist as $key => $val)
  397. {
  398. $val['addtime'] = date('Y-m-d H:i:s', $val['addtime']);
  399. $order_refund_historylist[$key] = $val;
  400. }
  401. echo json_encode( array('code' => 1,'order_refund' =>$order_refund, 'order_id' => $order_id ,'order_refund_historylist' => $order_refund_historylist, 'refund_images' => $refund_images,'order_goods' => $order_goods ,'order_info' => $order_info) );
  402. die();
  403. }
  404. }