Member_set.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. namespace Agent\Lib;
  3. use Dever;
  4. # 批量设置商品
  5. class Member_set
  6. {
  7. public function __construct()
  8. {
  9. //Dever::load('manage/auth.init');
  10. }
  11. # 获取商品列表
  12. public function goods_api()
  13. {
  14. $id = Dever::input('mid');
  15. return Dever::load('agent/lib/set')->getData($id);
  16. }
  17. # 设置商品
  18. public function home_api()
  19. {
  20. $data = array();
  21. $data['mid'] = Dever::input('mid');
  22. $data['search_api_mid'] = Dever::input('search_api_mid');
  23. $data['host'] = Dever::url('lib/member_set.home?mid=' . $data['mid'], 'agent');
  24. $data['url'] = Dever::url('lib/member_set.goods?mid=' . $data['mid'], 'agent');
  25. $data['submit'] = Dever::url('lib/member_set.action_commit?json=1', 'agent');
  26. return Dever::render('setMemberGoods', $data);
  27. }
  28. # 设置生产能力
  29. public function action_commit_api()
  30. {
  31. $search_api_mid = Dever::input('search_api_mid');
  32. $goods = Dever::input('goods');
  33. if (!$goods) {
  34. Dever::alert('请传入商品');
  35. }
  36. $goods = Dever::json_decode($goods);
  37. $mid = Dever::input('mid');
  38. $desc = Dever::input('desc');
  39. $where['option_mid'] = $mid;
  40. $where['set_state'] = 2;
  41. Dever::db('agent/member_goods')->updates($where);
  42. foreach ($goods as $k => $v) {
  43. $type = 1;
  44. $type_id = $k;
  45. $sku_id = -1;
  46. if (strstr($k, '_')) {
  47. $temp = explode('_', $k);
  48. $k = $temp[0];
  49. $type_id = $temp[0];
  50. $type = $temp[1];
  51. }
  52. if (strstr($k, '-')) {
  53. $temp = explode('-', $k);
  54. $type_id = $temp[0];
  55. $sku_id = $temp[1];
  56. }
  57. if ($v['total'] <= 0) {
  58. continue;
  59. }
  60. $w = array();
  61. $w['type'] = $type;
  62. $w['type_id'] = $type_id;
  63. $w['sku_id'] = $sku_id;
  64. $w['mid'] = $mid;
  65. $info = Dever::db('agent/member_goods')->one($w);
  66. if ($v['del'] == 2) {
  67. if ($info) {
  68. Dever::db('agent/member_goods')->update(array('where_id' => $info['id'], 'state' => 2));
  69. }
  70. } else {
  71. if ($info) {
  72. $w['total_num'] = $v['total'];
  73. } else {
  74. $w['total_num'] = $v['total'];
  75. }
  76. $cash = $price = 0;
  77. if ($type == 1) {
  78. $goods_info = Dever::load('goods/lib/info')->getInfoBySku($w['type_id'], $w['sku_id']);
  79. $price = $goods_info['price'];
  80. $cash = $goods_info['price'] * $w['total_num'];
  81. if (isset($goods_info['sku'])) {
  82. $sku = '-' . $goods_info['sku']['string'];
  83. } else {
  84. $sku = '';
  85. }
  86. $name = $goods_info['name'] . $sku;
  87. } elseif ($type == 2 && $sku_id == -1) {
  88. # 体验卡
  89. $card = Dever::db('card/info')->find($w['type_id']);
  90. if (!$card) {
  91. continue;
  92. }
  93. $cash = $price = $card['price'] * $w['total_num'];
  94. $w['total_num'] = 1;
  95. $w['sku_id'] = Dever::load('card/lib/code')->create($card, 2, $mid, -1, $cash);
  96. if (!$w['sku_id']) {
  97. continue;
  98. }
  99. $name = $card['name'];
  100. } elseif ($type == 2 && $sku_id > 0) {
  101. # 体验卡
  102. $card = Dever::db('card/code')->find($w['sku_id']);
  103. $cash = $price = $card['total_cash'];
  104. $card = Dever::db('card/info')->find($card['card_id']);
  105. $name = $card['name'];
  106. } elseif ($type == 3) {
  107. $prize = Dever::db('setting/prize')->find($w['type_id']);
  108. $price = $prize['price'];
  109. $cash = $prize['price'] * $w['total_num'];
  110. $name = $prize['name'];
  111. }
  112. $w['cash'] = $cash;
  113. $w['price'] = $price;
  114. $w['name'] = $name;
  115. if (!$info) {
  116. $state = Dever::db('agent/member_goods')->insert($w);
  117. if ($state) {
  118. Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $v['total'], 0, $w['total_num'], $name, $desc);
  119. }
  120. } else {
  121. $w['where_id'] = $info['id'];
  122. $w['state'] = 1;
  123. $state = Dever::db('agent/member_goods')->update($w);
  124. $num = $w['total_num']-$info['total_num'];
  125. if ($state && $num > 0) {
  126. Dever::load('agent/lib/member_set')->log($w['mid'], '', $w['type'], $w['type_id'], $w['sku_id'], $num, $info['total_num'], $w['total_num'], $name, $desc);
  127. }
  128. }
  129. }
  130. # 记录日志
  131. }
  132. if ($search_api_mid) {
  133. return Dever::url('project/database/list&table=member_goods&project=agent&search_option_state=1&search_api_mid='.$search_api_mid, 'manage');
  134. } else {
  135. return Dever::url('project/database/list&table=member_goods&project=agent&search_option_state=1&search_option_mid='.$mid, 'manage');
  136. }
  137. }
  138. # 记录日志
  139. public function log($mid, $parent_order_num, $type, $type_id, $sku_id, $num, $pnum, $fnum, $name = '', $desc = '')
  140. {
  141. $data['mid'] = $mid;
  142. $data['parent_order_num'] = $parent_order_num;
  143. $data['type'] = $type;
  144. $data['type_id'] = $type_id;
  145. $data['sku_id'] = $sku_id;
  146. $data['num'] = $num;
  147. $data['pnum'] = $pnum;
  148. $data['fnum'] = $fnum;
  149. $data['desc'] = $desc;
  150. $data['name'] = $name;
  151. $data['order_num'] = $this->getOrderId();
  152. $id = Dever::db('agent/member_goods_log')->insert($data);
  153. return $id;
  154. }
  155. /**
  156. * 生成日志订单号
  157. *
  158. * @return mixed
  159. */
  160. public function getOrderId()
  161. {
  162. $where['order_num'] = Dever::order('QY');
  163. $state = Dever::db('agent/member_goods_log')->one($where);
  164. if (!$state) {
  165. return $where['order_num'];
  166. } else {
  167. return $this->getOrderId();
  168. }
  169. }
  170. }