pointorder.model.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. <?php
  2. /**
  3. * 积分礼品购物车
  4. *
  5. */
  6. defined('InShopNC') or exit('Access Invalid!');
  7. class pointorderModel extends Model{
  8. private $product_sn; //订单编号
  9. /**
  10. * 生成积分兑换订单编号(两位随机 + 从2000-01-01 00:00:00 到现在的秒数+微秒+会员ID%1000),该值会传给第三方支付接口
  11. * 长度 =2位 + 10位 + 3位 + 3位 = 18位
  12. * 1000个会员同一微秒提订单,重复机率为1/100
  13. * @return string
  14. */
  15. public function point_snOrder($member_id) {
  16. return $this->product_sn = mt_rand(10,99)
  17. . sprintf('%010d',time() - 946656000)
  18. . sprintf('%03d', (float) microtime() * 1000)
  19. . sprintf('%03d', (int) $member_id % 1000);
  20. }
  21. /**
  22. * 通过状态标识获取兑换订单状态
  23. */
  24. public function getPointOrderStateBySign(){
  25. $pointorderstate_arr = array();
  26. $pointorderstate_arr['canceled'] = array(2,'已取消');
  27. $pointorderstate_arr['waitship'] = array(20,'待发货');
  28. $pointorderstate_arr['waitreceiving'] = array(30,'待收货');
  29. $pointorderstate_arr['finished'] = array(40,'已完成');
  30. return $pointorderstate_arr;
  31. }
  32. /**
  33. * 通过状态值获取兑换订单状态
  34. */
  35. public function getPointOrderState($order_state){
  36. $pointorderstate_arr = array();
  37. $pointorderstate_arr[2] = array('canceled','已取消');
  38. $pointorderstate_arr[20] = array('waitship','待发货');
  39. $pointorderstate_arr[30] = array('waitreceiving','待收货');
  40. $pointorderstate_arr[40] = array('finished','已完成');
  41. if ($pointorderstate_arr[$order_state]){
  42. return $pointorderstate_arr[$order_state];
  43. } else {
  44. return array('unknown','未知');
  45. }
  46. }
  47. /**
  48. * 新增兑换礼品订单
  49. * @param array $param
  50. * @return bool
  51. */
  52. public function addPointOrder($param) {
  53. if (!$param){
  54. return false;
  55. }
  56. $result = $this->table('points_order')->insert($param);
  57. //清除相关缓存
  58. if ($result && $param['point_buyerid'] > 0){
  59. wcache($param['point_buyerid'], array('pointordercount' => null), 'm_pointorder');
  60. }
  61. return $result;
  62. }
  63. /**
  64. * 批量添加订单积分礼品
  65. * @param array $param 订单礼品信息
  66. * @return bool
  67. */
  68. public function addPointOrderProdAll($param) {
  69. if (!$param){
  70. return false;
  71. }
  72. $result = $this->table('points_ordergoods')->insertAll($param);
  73. return $result;
  74. }
  75. /**
  76. * 查询兑换订单礼品列表
  77. * @param array $where 查询条件
  78. * @param string $field 查询字段
  79. * @param mixed $page 分页
  80. * @param int $limit 查询条数
  81. * @param string $order 排序
  82. * @param string $group 分组
  83. * @return bool
  84. */
  85. public function getPointOrderGoodsList($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  86. $ordergoods_list = array();
  87. if (is_array($page)){
  88. if ($page[1] > 0){
  89. $ordergoods_list = $this->table('points_ordergoods')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  90. } else {
  91. $ordergoods_list = $this->table('points_ordergoods')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  92. }
  93. } else {
  94. $ordergoods_list = $this->table('points_ordergoods')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  95. }
  96. if ($ordergoods_list){
  97. foreach ($ordergoods_list as $k=>$v){
  98. $v['point_goodsimage_old'] = $v['point_goodsimage'];
  99. $v['point_goodsimage_small'] = pointprodThumb($v['point_goodsimage'], 'small');
  100. $v['point_goodsimage'] = pointprodThumb($v['point_goodsimage'], 'mid');
  101. $ordergoods_list[$k] = $v;
  102. }
  103. }
  104. return $ordergoods_list;
  105. }
  106. /**
  107. * 删除兑换订单信息
  108. * @param array $where 查询条件
  109. * @return bool
  110. */
  111. public function delPointOrder($where){
  112. return $this->table('points_order')->where($where)->delete();
  113. }
  114. /**
  115. * 删除兑换订单礼品信息
  116. * @param array $where 查询条件
  117. * @return bool
  118. */
  119. public function delPointOrderGoods($where){
  120. return $this->table('points_ordergoods')->where($where)->delete();
  121. }
  122. /**
  123. * 删除兑换订单地址信息
  124. * @param array $where 查询条件
  125. * @return bool
  126. */
  127. public function delPointOrderAddress($where){
  128. return $this->table('points_orderaddress')->where($where)->delete();
  129. }
  130. /**
  131. * 添加积分兑换订单地址
  132. * @param array $param 订单收货地址信息
  133. * @return bool
  134. */
  135. public function addPointOrderAddress($param){
  136. if (!$param){
  137. return false;
  138. }
  139. return $this->table('points_orderaddress')->insert($param);
  140. }
  141. /**
  142. * 查询兑换订单详情
  143. * @param array $where 查询条件
  144. * @param string $field 查询字段
  145. * @param string $order 排序
  146. * @param string $group 分组
  147. */
  148. public function getPointOrderInfo($where, $field = '*', $order = '', $group = ''){
  149. $order_info = $this->table('points_order')->field($field)->where($where)->group($group)->order($order)->find();
  150. $point_orderstate_arr = $this->getPointOrderState($order_info['point_orderstate']);
  151. $order_info['point_orderstatetext'] = $point_orderstate_arr[1];
  152. $order_info['point_orderstatesign'] = $point_orderstate_arr[0];
  153. //是否可以发货
  154. $tmp = $this->allowPointOrderShip($order_info);
  155. $order_info['point_orderallowship'] = $tmp['state'];
  156. unset($tmp);
  157. //是否可以修改发货信息
  158. $tmp = $this->allowEditPointOrderShip($order_info);
  159. $order_info['point_orderalloweditship'] = $tmp['state'];
  160. unset($tmp);
  161. //是否允许取消
  162. $tmp = $this->allowPointOrderCancel($order_info);
  163. $order_info['point_orderallowcancel'] = $tmp['state'];
  164. unset($tmp);
  165. //是否允许删除
  166. $tmp = $this->allowPointOrderDelete($order_info);
  167. $order_info['point_orderallowdelete'] = $tmp['state'];
  168. unset($tmp);
  169. //允许确认收货
  170. $tmp = $this->allowPointOrderReceiving($order_info);
  171. $order_info['point_orderallowreceiving'] = $tmp['state'];
  172. unset($tmp);
  173. return $order_info;
  174. }
  175. /**
  176. * 查询兑换订单收货人地址信息
  177. */
  178. public function getPointOrderAddressInfo($where, $field = '*', $order = '', $group = ''){
  179. return $this->table('points_orderaddress')->field($field)->where($where)->group($group)->order($order)->find();
  180. }
  181. /**
  182. * 查询兑换订单列表
  183. */
  184. public function getPointOrderList($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  185. if (is_array($page)){
  186. if ($page[1] > 0){
  187. $order_list = $this->table('points_order')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  188. } else {
  189. $order_list = $this->table('points_order')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  190. }
  191. } else {
  192. $order_list = $this->table('points_order')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  193. }
  194. foreach ($order_list as $k=>$v){
  195. //订单状态
  196. $point_orderstate_arr = $this->getPointOrderState($v['point_orderstate']);
  197. $v['point_orderstatetext'] = $point_orderstate_arr[1];
  198. $v['point_orderstatesign'] = $point_orderstate_arr[0];
  199. //是否可以发货
  200. $tmp = $this->allowPointOrderShip($v);
  201. $v['point_orderallowship'] = $tmp['state'];
  202. unset($tmp);
  203. //是否可以修改发货信息
  204. $tmp = $this->allowEditPointOrderShip($v);
  205. $v['point_orderalloweditship'] = $tmp['state'];
  206. unset($tmp);
  207. //是否允许取消
  208. $tmp = $this->allowPointOrderCancel($v);
  209. $v['point_orderallowcancel'] = $tmp['state'];
  210. unset($tmp);
  211. //是否允许删除
  212. $tmp = $this->allowPointOrderDelete($v);
  213. $v['point_orderallowdelete'] = $tmp['state'];
  214. unset($tmp);
  215. //允许确认收货
  216. $tmp = $this->allowPointOrderReceiving($v);
  217. $v['point_orderallowreceiving'] = $tmp['state'];
  218. unset($tmp);
  219. $order_list[$k] = $v;
  220. }
  221. return $order_list;
  222. }
  223. /**
  224. * 是否可以发货
  225. * @param array $pointorder_info 兑换订单详情
  226. * @return array
  227. */
  228. public function allowPointOrderShip($pointorder_info){
  229. if (!$pointorder_info){
  230. return array('state'=>false,'msg'=>'参数错误');
  231. }
  232. $pointorderstate_arr = $this->getPointOrderStateBySign();
  233. if ($pointorder_info['point_orderstate'] == $pointorderstate_arr['waitship'][0]){
  234. return array('state'=>true);
  235. } else {
  236. return array('state'=>false);
  237. }
  238. }
  239. /**
  240. * 是否可以修改发货信息
  241. * @param array $pointorder_info 兑换订单详情
  242. * @return array
  243. */
  244. public function allowEditPointOrderShip($pointorder_info){
  245. if (!$pointorder_info){
  246. return array('state'=>false,'msg'=>'参数错误');
  247. }
  248. $pointorderstate_arr = $this->getPointOrderStateBySign();
  249. if ($pointorder_info['point_orderstate'] == $pointorderstate_arr['waitreceiving'][0]){
  250. return array('state'=>true);
  251. } else {
  252. return array('state'=>false);
  253. }
  254. }
  255. /**
  256. * 是否可以确认收货
  257. * @param array $pointorder_info 兑换订单详情
  258. * @return array
  259. */
  260. public function allowPointOrderReceiving($pointorder_info){
  261. if (!$pointorder_info){
  262. return array('state'=>false,'msg'=>'参数错误');
  263. }
  264. $pointorderstate_arr = $this->getPointOrderStateBySign();
  265. if ($pointorder_info['point_orderstate'] == $pointorderstate_arr['waitreceiving'][0]){
  266. return array('state'=>true);
  267. } else {
  268. return array('state'=>false);
  269. }
  270. }
  271. /**
  272. * 是否可以发货
  273. * @param array $pointorder_info 兑换订单详情
  274. * @return array
  275. */
  276. public function allowPointOrderCancel($pointorder_info){
  277. if (!$pointorder_info){
  278. return array('state'=>false,'msg'=>'参数错误');
  279. }
  280. $pointorderstate_arr = $this->getPointOrderStateBySign();
  281. if ($pointorder_info['point_orderstate'] == $pointorderstate_arr['waitship'][0]){
  282. return array('state'=>true);
  283. } else {
  284. return array('state'=>false);
  285. }
  286. }
  287. /**
  288. * 是否可以发货
  289. * @param array $pointorder_info 兑换订单详情
  290. * @return array
  291. */
  292. public function allowPointOrderDelete($pointorder_info){
  293. if (!$pointorder_info){
  294. return array('state'=>false,'msg'=>'参数错误');
  295. }
  296. $pointorderstate_arr = $this->getPointOrderStateBySign();
  297. if ($pointorder_info['point_orderstate'] == $pointorderstate_arr['canceled'][0]){
  298. return array('state'=>true);
  299. } else {
  300. return array('state'=>false);
  301. }
  302. }
  303. /**
  304. * 积分礼品兑换订单信息修改
  305. *
  306. * @param array $param 修改信息数组
  307. * @param array $condition
  308. */
  309. public function editPointOrder($where,$param) {
  310. if(empty($param)) {
  311. return false;
  312. }
  313. return $this->table('points_order')->where($where)->update($param);
  314. }
  315. /**
  316. * 取消兑换商品订单
  317. */
  318. public function cancelPointOrder($point_orderid, $member_id = 0) {
  319. $point_orderid = intval($point_orderid);
  320. if($point_orderid <= 0) {
  321. return array('state'=>false,'msg'=>'参数错误');
  322. }
  323. //获取订单状态
  324. $pointorderstate_arr = $this->getPointOrderStateBySign();
  325. $where = array();
  326. $where['point_orderid'] = $point_orderid;
  327. if ($member_id > 0){
  328. $where['point_buyerid'] = $member_id;
  329. }
  330. $where['point_orderstate'] = $pointorderstate_arr['waitship'][0];//未发货时可取消
  331. //查询兑换信息
  332. $order_info = $this->getPointOrderInfo($where,'point_orderid,point_ordersn,point_buyerid,point_buyername,point_allpoint');
  333. if (!$order_info){
  334. return array('state'=>false,'msg'=>'兑换订单信息错误');
  335. }
  336. $result = $this->editPointOrder(array('point_orderid'=>$order_info['point_orderid'],'point_buyerid'=>$order_info['point_buyerid']),array('point_orderstate'=>$pointorderstate_arr['canceled'][0]));
  337. if ($result){
  338. //更新会员缓存
  339. wcache($order_info['point_buyerid'], array('pointordercount' => null), 'm_pointorder');
  340. //退还会员积分
  341. $insert_arr = array();
  342. $insert_arr['pl_memberid'] = $order_info['point_buyerid'];
  343. $insert_arr['pl_membername'] = $order_info['point_buyername'];
  344. $insert_arr['pl_points'] = $order_info['point_allpoint'];
  345. $insert_arr['point_ordersn'] = $order_info['point_ordersn'];
  346. $insert_arr['pl_desc'] = L('member_pointorder_cancel_tip1').$order_info['point_ordersn'].L('member_pointorder_cancel_tip2');
  347. Model('points')->savePointsLog('pointorder',$insert_arr,true);
  348. //更改兑换礼品库存
  349. $prod_list = $this->getPointOrderAndGoodsList(array('points_ordergoods.point_orderid'=>$order_info['point_orderid']),'point_goodsid,point_goodsnum');
  350. if ($prod_list){
  351. $model_pointprod = Model('pointprod');
  352. foreach ($prod_list as $v){
  353. $update_arr = array();
  354. $update_arr['pgoods_storage'] = array('exp',"pgoods_storage+{$v['point_goodsnum']}");
  355. $update_arr['pgoods_salenum'] = array('exp',"pgoods_salenum-{$v['point_goodsnum']}");
  356. $model_pointprod->editPointProd($update_arr,array('pgoods_id'=>$v['point_goodsid']));
  357. unset($update_arr);
  358. }
  359. }
  360. return array('state'=>true,'data'=>array('order_info'=>$order_info));
  361. } else {
  362. return array('state'=>true,'msg'=>'取消失败');
  363. }
  364. }
  365. /**
  366. * 兑换订单确认收货
  367. */
  368. public function receivingPointOrder($point_orderid, $member_id = 0){
  369. $point_orderid = intval($point_orderid);
  370. if($point_orderid <= 0) {
  371. return array('state'=>false,'msg'=>'参数错误');
  372. }
  373. //获取订单状态
  374. $pointorderstate_arr = $this->getPointOrderStateBySign();
  375. $where = array();
  376. $where['point_orderid'] = $point_orderid;
  377. if ($member_id > 0){
  378. $where['point_buyerid'] = $member_id;
  379. }
  380. $where['point_orderstate'] = $pointorderstate_arr['waitreceiving'][0];//已发货待收货
  381. //更新运费
  382. $result = $this->editPointOrder($where,array('point_orderstate'=>$pointorderstate_arr['finished'][0],'point_finnshedtime'=>time()));
  383. if ($result){
  384. return array('state'=>true);
  385. } else {
  386. return array('state'=>true,'msg'=>'确认收货失败');
  387. }
  388. }
  389. /**
  390. * 查询兑换订单总数
  391. */
  392. public function getPointOrderCount($where, $group = ''){
  393. return $this->table('points_order')->where($where)->group($group)->count();
  394. }
  395. /**
  396. * 查询积分兑换商品订单及商品列表
  397. */
  398. public function getPointOrderAndGoodsList($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  399. if (is_array($page)){
  400. if ($page[1] > 0){
  401. return $this->table('points_ordergoods,points_order')->field($field)->join('left')->on('points_ordergoods.point_orderid=points_order.point_orderid')->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  402. } else {
  403. return $this->table('points_ordergoods,points_order')->field($field)->join('left')->on('points_ordergoods.point_orderid=points_order.point_orderid')->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  404. }
  405. } else {
  406. return $this->table('points_ordergoods,points_order')->field($field)->join('left')->on('points_ordergoods.point_orderid=points_order.point_orderid')->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  407. }
  408. }
  409. /**
  410. * 查询积分兑换商品订单及商品详细
  411. */
  412. public function getPointOrderAndGoodsInfo($where, $field = '*', $order = '', $group = '') {
  413. return $this->table('points_ordergoods,points_order')->field($field)->join('left')->on('points_ordergoods.point_orderid=points_order.point_orderid')->where($where)->group($group)->order($order)->find();
  414. }
  415. /**
  416. * 查询会员已经兑换商品数
  417. * @param int $member_id 会员编号
  418. */
  419. public function getMemberPointsOrderGoodsCount($member_id){
  420. $info = rcache($member_id, 'm_pointorder', 'pointordercount');
  421. if (empty($info['pointordercount']) && $info['pointordercount'] !== 0) {
  422. //获取兑换订单状态
  423. $pointorderstate_arr = $this->getPointOrderStateBySign();
  424. $where = array();
  425. $where['point_buyerid'] = $member_id;
  426. $where['point_orderstate'] = array('neq',$pointorderstate_arr['canceled'][0]);
  427. $list = $this->getPointOrderAndGoodsList($where,'SUM(point_goodsnum) as goodsnum');
  428. $pointordercount = 0;
  429. if ($list){
  430. $pointordercount = intval($list[0]['goodsnum']);
  431. }
  432. wcache($member_id, array('pointordercount' => $pointordercount), 'm_pointorder');
  433. } else {
  434. $pointordercount = intval($info['pointordercount']);
  435. }
  436. return $pointordercount;
  437. }
  438. /**
  439. * 创建积分礼品兑换订单
  440. */
  441. public function createOrder($post_arr, $pointprod_arr, $member_info){
  442. //验证是否存在收货地址
  443. $address_options = intval($post_arr['address_options']);
  444. if ($address_options <= 0){
  445. return array('state'=>false,'msg'=>'请选择收货人地址');
  446. }
  447. $address_info = Model('address')->getOneAddress($address_options);
  448. if (empty($address_info)){
  449. return array('state'=>false,'msg'=>'收货人地址信息错误');
  450. }
  451. //获取兑换订单状态
  452. $pointorderstate_arr = $this->getPointOrderStateBySign();
  453. //新增兑换订单
  454. $order_array = array();
  455. $order_array['point_ordersn'] = $this->point_snOrder($member_info['member_id']);
  456. $order_array['point_buyerid'] = $member_info['member_id'];
  457. $order_array['point_buyername'] = $member_info['member_name'];
  458. $order_array['point_buyeremail'] = $member_info['member_email'];
  459. $order_array['point_addtime'] = time();
  460. $order_array['point_allpoint'] = $pointprod_arr['pgoods_pointall'];
  461. $order_array['point_ordermessage'] = trim($post_arr['pcart_message']);
  462. $order_array['point_orderstate'] = $pointorderstate_arr['waitship'][0];
  463. $order_id = $this->addPointOrder($order_array);
  464. if (!$order_id){
  465. return array('state'=>false,'msg'=>'兑换操作失败');
  466. }
  467. //扣除会员积分
  468. $insert_arr = array();
  469. $insert_arr['pl_memberid'] = $member_info['member_id'];
  470. $insert_arr['pl_membername'] = $member_info['member_name'];
  471. $insert_arr['pl_points'] = -$pointprod_arr['pgoods_pointall'];
  472. $insert_arr['point_ordersn'] = $order_array['point_ordersn'];
  473. Model('points')->savePointsLog('pointorder',$insert_arr,true);
  474. //添加订单中的礼品信息
  475. $model_pointprod = Model('pointprod');
  476. if($pointprod_arr['pointprod_list']) {
  477. $output_goods_name = array();//输出显示的对话礼品名称数组
  478. foreach ($pointprod_arr['pointprod_list'] as $v) {
  479. $tmp = array();
  480. $tmp['point_orderid'] = $order_id;
  481. $tmp['point_goodsid'] = $v['pgoods_id'];
  482. $tmp['point_goodsname'] = $v['pgoods_name'];
  483. $tmp['point_goodspoints'] = $v['pgoods_points'];
  484. $tmp['point_goodsnum'] = $v['quantity'];
  485. $tmp['point_goodsimage'] = $v['pgoods_image_old'];
  486. $order_goods_array[] = $tmp;
  487. //输出显示前3个兑换礼品名称
  488. if (count($output_goods_name)<3){
  489. $output_goods_name[] = $v['pgoods_name'];
  490. }
  491. unset($tmp);
  492. //更新积分礼品库存
  493. $tmp = array();
  494. $tmp['pgoods_id'] = $v['pgoods_id'];
  495. $tmp['pgoods_storage'] = array('exp',"pgoods_storage-{$v['quantity']}");
  496. $tmp['pgoods_salenum'] = array('exp',"pgoods_salenum+{$v['quantity']}");
  497. $pointprod_uparr[] = $tmp;
  498. unset($tmp);
  499. }
  500. //批量新增兑换订单礼品
  501. $this->addPointOrderProdAll($order_goods_array);
  502. //更新兑换礼品库存
  503. foreach ($pointprod_uparr as $v){
  504. $model_pointprod->editPointProd($v,array('pgoods_id'=>$v['pgoods_id']));
  505. }
  506. }
  507. //清除购物车信息
  508. Model('pointcart')->delPointCart(array('pmember_id'=>$member_info['member_id']),$member_info['member_id']);
  509. //保存买家收货地址,添加订单收货地址
  510. if ($address_info){
  511. $address_array = array();
  512. $address_array['point_orderid'] = $order_id;
  513. $address_array['point_truename'] = $address_info['true_name'];
  514. $address_array['point_areaid'] = $address_info['area_id'];
  515. $address_array['point_areainfo'] = $address_info['area_info'];
  516. $address_array['point_address'] = $address_info['address'];
  517. $address_array['point_zipcode'] = ($t = $address_info['zip_code'])?$t:'';
  518. $address_array['point_telphone'] = $address_info['tel_phone'];
  519. $address_array['point_mobphone'] = $address_info['mob_phone'];
  520. $this->addPointOrderAddress($address_array);
  521. }
  522. return array('state'=>true,'data'=>array('order_id'=>$order_id));
  523. }
  524. /**
  525. * 删除兑换订单
  526. */
  527. public function delPointOrderByOrderID($order_id){
  528. $order_id = intval($order_id);
  529. if ($order_id <= 0){
  530. return array('state'=>false,'msg'=>'参数错误');
  531. }
  532. //获取订单状态
  533. $pointorderstate_arr = $this->getPointOrderStateBySign();
  534. //删除操作
  535. $where = array();
  536. $where['point_orderid'] = $order_id;
  537. $where['point_orderstate'] = $pointorderstate_arr['canceled'][0];//只有取消的订单才能删除
  538. $result = $this->delPointOrder($where);
  539. if($result) {
  540. //删除兑换礼品信息
  541. $this->delPointOrderGoods(array('point_orderid'=>$order_id));
  542. //删除兑换地址信息
  543. $this->delPointOrderAddress(array('point_orderid'=>$order_id));
  544. return array('state'=>true);
  545. } else {
  546. return array('state'=>false,'msg'=>'删除失败');
  547. }
  548. }
  549. /**
  550. * 兑换订单发货
  551. */
  552. public function shippingPointOrder($order_id,$postarr,$order_info = array()){
  553. $order_id = intval($order_id);
  554. if ($order_id <= 0){
  555. return array('state'=>false,'msg'=>'参数错误');
  556. }
  557. //获取订单状态
  558. $pointorderstate_arr = $this->getPointOrderStateBySign();
  559. //查询订单信息
  560. $where = array();
  561. $where['point_orderid'] = $order_id;
  562. $where['point_orderstate'] = array('in',array($pointorderstate_arr['waitship'][0],$pointorderstate_arr['waitreceiving'][0]));//待发货和已经发货状态
  563. //如果订单详情不存在,则查询
  564. if (!$order_info){
  565. $order_info = $this->getPointOrderInfo($where,'point_orderstate');
  566. }
  567. if (!$order_info){
  568. return array('state'=>false,'msg'=>'参数错误');
  569. }
  570. //更新发货信息
  571. $update_arr = array();
  572. if ($order_info['point_orderstate'] == $pointorderstate_arr['waitship'][0]){
  573. $update_arr['point_shippingtime'] = time();
  574. $update_arr['point_orderstate'] = $pointorderstate_arr['waitreceiving'][0]; //已经发货,待收货
  575. }
  576. $update_arr['point_shippingcode'] = $postarr['shippingcode'];
  577. $update_arr['point_shipping_ecode'] = $postarr['e_code'];
  578. $result = $this->editPointOrder($where, $update_arr);
  579. if ($result){
  580. return array('state'=>true);
  581. }else {
  582. return array('state'=>false,'msg'=>'发货修改失败');
  583. }
  584. }
  585. }