Groupbuy.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace app\api\controller;
  3. /**
  4. * ============================================================================
  5. * DSMall多用户商城
  6. * ============================================================================
  7. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  8. * 网站地址: http://www.csdeshang.com
  9. * ----------------------------------------------------------------------------
  10. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  11. * 不允许对程序代码以任何形式任何目的的再发布。
  12. * ============================================================================
  13. * 拼团控制器
  14. */
  15. class Groupbuy extends MobileMall {
  16. public function initialize() {
  17. parent::initialize();
  18. $groupbuy_model = model('groupbuy');
  19. $this->groupbuy_price = rkcache('groupbuyprice', true);
  20. if (input('param.groupbuy_is_vr', 0)) {
  21. $this->groupbuy_classes = $groupbuy_model->getGroupbuyVrClasses();
  22. } else {
  23. $this->groupbuy_classes = $groupbuy_model->getGroupbuyClasses();
  24. }
  25. }
  26. /**
  27. * @api {POST} api/Groupbuy/index 获取抢购列表
  28. * @apiVersion 1.0.0
  29. * @apiGroup GroupBuy
  30. *
  31. * @apiHeader {String} X-DS-KEY 用户授权token
  32. *
  33. * @apiParam {Int} page 页码
  34. * @apiParam {Int} per_page 每页数量
  35. *
  36. * @apiSuccess {String} code 返回码,10000为成功
  37. * @apiSuccess {String} message 返回消息
  38. * @apiSuccess {Object} result 返回数据
  39. * @apiSuccess {Object[]} result.groupbuy_list 抢购列表 (返回字段参考groupbuy表)
  40. * @apiSuccess {Int} result.page_total 总页数
  41. * @apiSuccess {Boolean} result.hasmore 是否有更多 true是false否
  42. */
  43. public function index() {
  44. $groupbuy_model = model('groupbuy');
  45. $groupbuy_is_vr = input('param.groupbuy_is_vr', 0); //是否是虚拟抢购 1为虚拟
  46. $groupbuy_type = input('param.sort_key');
  47. switch ($groupbuy_type) {
  48. case 'soon':
  49. $function_name = 'getGroupbuySoonList';
  50. break;
  51. case 'history':
  52. $function_name = 'getGroupbuyHistoryList';
  53. break;
  54. default:
  55. $function_name = 'getGroupbuyOnlineList';
  56. break;
  57. }
  58. $condition = array();
  59. $condition[] = array('groupbuy_is_vr', '=', $groupbuy_is_vr);
  60. $order = '';
  61. // 分类筛选条件
  62. if (($gclass_id = (int) input('class')) > 0) {
  63. $condition[] = array('gclass_id', '=', $gclass_id);
  64. if (($s_gclass_id = (int) input('s_class')) > 0)
  65. $condition[] = array('s_gclass_id', '=', $s_gclass_id);
  66. }
  67. // 价格区间筛选条件
  68. if (($price_id = intval(input('groupbuy_price'))) > 0 && isset($this->groupbuy_price[$price_id])) {
  69. $p = $this->groupbuy_price[$price_id];
  70. $condition[] = array('groupbuy_price', 'between', array($p['gprange_start'], $p['gprange_end']));
  71. }
  72. // 排序
  73. $groupbuy_order_key = trim(input('groupbuy_order_key'));
  74. $groupbuy_order = input('groupbuy_order') == '2' ? 'desc' : 'asc';
  75. if (!empty($groupbuy_order_key)) {
  76. switch ($groupbuy_order_key) {
  77. case '1':
  78. $order = 'groupbuy_price ' . $groupbuy_order;
  79. break;
  80. case '2':
  81. $order = 'groupbuy_rebate ' . $groupbuy_order;
  82. break;
  83. case '3':
  84. $order = 'groupbuy_buyer_count ' . $groupbuy_order;
  85. break;
  86. }
  87. }
  88. $cache_key = 'api-groupbuy' . md5(serialize($condition).$function_name) . '-' . intval(input('param.page'));
  89. $result = rcache($cache_key);
  90. if (empty($result)) {
  91. $groupbuy_list = $groupbuy_model->$function_name($condition, 10, $order);
  92. foreach ($groupbuy_list as $key => $groupbuy) {
  93. $groupbuy_list[$key]['groupbuy_image'] = groupbuy_thumb($groupbuy['groupbuy_image'], 240);
  94. }
  95. $page_count = $groupbuy_model->page_info;
  96. $result = array_merge(array('groupbuy_list' => $groupbuy_list,), mobile_page($page_count));
  97. wcache($cache_key, $result);
  98. }
  99. ds_json_encode(10000, '', $result);
  100. }
  101. public function filter() {
  102. $groupbuy_price = $this->groupbuy_price;
  103. if (empty($groupbuy_price)) {
  104. $groupbuy_price = false;
  105. }
  106. $groupbuy_classes = $this->groupbuy_classes;
  107. if (empty($groupbuy_classes)) {
  108. $groupbuy_classes = false;
  109. }
  110. ds_json_encode(10000, '', array('groupbuy_price' => $groupbuy_price, 'groupbuy_classes' => $groupbuy_classes));
  111. }
  112. }