ShopIndexController.class.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. <?php
  2. namespace bibidd\Controller;
  3. use Bibidd\Controller\CommonBaseController;
  4. /**
  5. *
  6. * 商品首页
  7. */
  8. class ShopIndexController extends CommonBaseController
  9. {
  10. /**
  11. * 查询首页数据
  12. * @return void
  13. */
  14. public function query_list()
  15. {
  16. $this->addHeaders(); //添加头部请求
  17. $search_key = $_POST['searchKey']; //搜索关键字
  18. $shop_state = $_POST['shopState']; //推荐
  19. $shop_type = $_POST['shopType']; //推荐,商品分类
  20. $page = $_POST['page'];
  21. $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
  22. $page_one = ($page - 1) * $one_size<=0?0:($page - 1) * $one_size;
  23. $sql = "";
  24. if(!empty($search_key))
  25. {
  26. //关键字查询
  27. $sql = $sql." AND order_str LIKE '%$search_key%' OR MATCH(shop_describe) AGAINST ('+\"$search_key\"' IN BOOLEAN MODE) ";
  28. }
  29. if(!empty($shop_state))
  30. {
  31. //查询推荐
  32. $sql = $sql." AND shop_state = ".$shop_state;
  33. }
  34. if(!empty($shop_type) || $shop_type=='0')
  35. {
  36. //$shop_type
  37. $sql = $sql." AND shop_type = '".$shop_type."'";
  38. }
  39. $seach_data = M("qq_shopping")
  40. ->field("id,order_str,order_img,order_type,amount,shop_state,shop_type,shop_stock,shop_format,shop_describe,des_img,shop_count")
  41. ->where("1=1".$sql." AND order_type=0")->LIMIT($page_one, $one_size)->select();
  42. $data['code'] = '200';
  43. $data['message'] = 'ok';
  44. $data['all_num'] = M("qq_shopping")->where("1=1".$sql." AND order_type=0")->count();
  45. $data['data'] = $seach_data;
  46. echo json_encode($data);
  47. }
  48. /**
  49. * 获取商品详情
  50. * @return void
  51. */
  52. public function get_detail()
  53. {
  54. $this->addHeaders(); //添加头部请求
  55. $id = $_POST['id']; //商品id
  56. $data['code'] = '200';
  57. $data['message'] = 'ok';
  58. $data['data'] = M("qq_shopping")
  59. ->field("id,order_str,order_img,order_type,amount,shop_state,shop_type,shop_stock,shop_format,shop_describe,des_img,shop_count")
  60. ->where("id='$id'")->find();
  61. echo json_encode($data);
  62. }
  63. /**
  64. * 添加收货地址
  65. * @return void
  66. */
  67. public function add_addr()
  68. {
  69. $this->addHeaders(); //添加头部请求
  70. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  71. $uid = $user_info['id'];
  72. $name = $_POST['name']; //用户姓名
  73. $phone = $_POST['phone']; //用户电话
  74. $address = $_POST['address']; //用户地址
  75. $address_type = empty($_POST['addressType'])?0:$_POST['addressType']; //默认地址1
  76. //添加字段
  77. $addressDetail = $_POST['addressDetail']; //详细地址
  78. $areaCode = $_POST['areaCode']; //区域编码
  79. $city = $_POST['city']; //城市
  80. $country = $_POST['country']; //国家
  81. $county = $_POST['county']; //不懂是什么
  82. $province = $_POST['province']; //省份
  83. if(empty($name) || empty($phone) || empty($address))
  84. {
  85. $this->returnDataAndSendMsg("请输入完整地址");
  86. die();
  87. }
  88. $add_info['uid'] = $uid;
  89. $add_info['name'] = $name;
  90. $add_info['phone'] = $phone;
  91. $add_info['address'] = $address;
  92. $add_info['address_type'] = $address_type;
  93. $add_info['addressDetail'] = $addressDetail;
  94. $add_info['areaCode'] = $areaCode;
  95. $add_info['city'] = $city;
  96. $add_info['isDefault'] = $address_type;
  97. $add_info['country'] = $country;
  98. $add_info['county'] = $county;
  99. $add_info['province'] = $province;
  100. $add_info['tel'] = $phone;
  101. if(!empty($address_type) && $address_type==1)
  102. {
  103. M("qq_user_address")->where("uid='$uid'")->setField("address_type",0);
  104. }
  105. $data['code'] = '200';
  106. $data['message'] = 'ok';
  107. $data['data'] = M("qq_user_address")->add($add_info);
  108. echo json_encode($data);
  109. }
  110. public function edit_addr()
  111. {
  112. $this->addHeaders(); //添加头部请求
  113. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  114. $uid = $user_info['id'];
  115. $id = $_POST['id']; //地址id
  116. $name = $_POST['name']; //用户姓名
  117. $phone = $_POST['phone']; //用户电话
  118. $address = $_POST['address']; //用户地址
  119. $address_type = empty($_POST['addressType'])?0:$_POST['addressType']; //默认地址1
  120. $addressDetail = $_POST['addressDetail']; //详细地址
  121. $areaCode = $_POST['areaCode']; //区域编码
  122. $city = $_POST['city']; //城市
  123. $country = $_POST['country']; //国家
  124. $county = $_POST['county']; //不懂是什么
  125. $province = $_POST['province']; //省份
  126. if(empty($name) || empty($phone) || empty($address))
  127. {
  128. $this->returnDataAndSendMsg("请输入完整地址");
  129. die();
  130. }
  131. $add_info['uid'] = $uid;
  132. $add_info['name'] = $name;
  133. $add_info['phone'] = $phone;
  134. $add_info['address'] = $address;
  135. $add_info['address_type'] = $address_type;
  136. $add_info['addressDetail'] = $addressDetail;
  137. $add_info['areaCode'] = $areaCode;
  138. $add_info['city'] = $city;
  139. $add_info['isDefault'] = $address_type;
  140. $add_info['country'] = $country;
  141. $add_info['county'] = $county;
  142. $add_info['province'] = $province;
  143. $add_info['tel'] = $phone;
  144. if(!empty($address_type) && $address_type==1)
  145. {
  146. M("qq_user_address")->where("uid='$uid'")->setField("address_type",0);
  147. }
  148. $data['code'] = '200';
  149. $data['message'] = 'ok';
  150. $data['data'] = M("qq_user_address")->where("id='$id'")->save($add_info);
  151. echo json_encode($data);
  152. }
  153. /**
  154. * 更新默认收获地址
  155. * @return void
  156. */
  157. public function up_default_addr()
  158. {
  159. $this->addHeaders(); //添加头部请求
  160. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  161. $uid = $user_info['id'];
  162. $id = $_POST['id']; //地址id
  163. $check_addr = M("qq_user_address")->where("id='$id'")->find();
  164. if(empty($check_addr))
  165. {
  166. $this->returnDataAndSendMsg("无效收货地址");
  167. die();
  168. }
  169. M("qq_user_address")->where("uid='$uid'")->setField("address_type",0);
  170. $rs = M("qq_user_address")->where("id='$id'")->setField("address_type",1);
  171. $data['code'] = '200';
  172. $data['message'] = 'ok';
  173. $data['data'] = $rs;
  174. echo json_encode($data);
  175. }
  176. public function del_addr()
  177. {
  178. $this->addHeaders(); //添加头部请求
  179. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  180. $uid = $user_info['id'];
  181. $id = $_POST['id']; //地址id
  182. $data['code'] = '200';
  183. $data['message'] = 'ok';
  184. $data['data'] = M("qq_user_address")->where("id='$id'")->delete();
  185. echo json_encode($data);
  186. }
  187. /**
  188. * 获取地址详情
  189. * @return void
  190. */
  191. public function get_addr_detail()
  192. {
  193. $this->addHeaders(); //添加头部请求
  194. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  195. $uid = $user_info['id'];
  196. $id = $_POST['id']; //地址id
  197. $data['code'] = '200';
  198. $data['message'] = 'ok';
  199. $data['data'] = M("qq_user_address")->where("id='$id'")->find();
  200. echo json_encode($data);
  201. }
  202. /**
  203. * 查询用户收货地址列表
  204. * @return void
  205. */
  206. public function query_addr_list()
  207. {
  208. $this->addHeaders(); //添加头部请求
  209. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  210. $uid = $user_info['id'];
  211. $page = $_POST['page'];
  212. $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
  213. $page_one = ($page - 1) * $one_size;
  214. $data['code'] = '200';
  215. $data['message'] = 'ok';
  216. $data['data'] = M("qq_user_address")->where("uid='$uid'")->LIMIT($page_one, $one_size)->select();
  217. $data['all_num'] = M("qq_user_address")->where("uid='$uid'")->count();
  218. echo json_encode($data);
  219. }
  220. /**
  221. * 查询订单列表
  222. * @return void
  223. */
  224. public function query_order_list()
  225. {
  226. $this->addHeaders(); //添加头部请求
  227. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  228. $uid = $user_info['id'];
  229. $page = $_POST['page'];
  230. $one_size = empty($_POST['pageSize']) ? 30 : $_POST['pageSize']; //每頁30行記錄
  231. $page_one = ($page - 1) * $one_size;
  232. $state = $_POST['state']; //订单状态0/待发1/已发2/已送达/3取消/4退款
  233. $sql = " AND shop_type='$state'";
  234. if(empty($state) && $state!='0' || $state=='-1')
  235. {
  236. $sql = "";
  237. }
  238. if($state=='6')
  239. {
  240. $sql = " AND shop_type in(3,4)";
  241. }
  242. $data['code'] = '200';
  243. $data['message'] = 'ok';
  244. $data['data'] = M("qq_user_shopping")
  245. ->field("id,uid,order_img,order_str,apply_date,pay_date,shop_count,amount,shop_type,shop_format,name,phone,address,remark,shipping_date,shop_wu_liu")
  246. ->where("uid='$uid'".$sql)->LIMIT($page_one, $one_size)->select();
  247. $data['all_num'] = M("qq_user_shopping")->where("uid='$uid'".$sql)->count();
  248. echo json_encode($data);
  249. }
  250. /**
  251. * 查询订单详情
  252. * @return void
  253. */
  254. public function get_order_detail()
  255. {
  256. $this->addHeaders(); //添加头部请求
  257. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  258. $uid = $user_info['id'];
  259. $id = $_POST['id'];
  260. $data['code'] = '200';
  261. $data['message'] = 'ok';
  262. $data['data'] = M("qq_user_shopping")
  263. ->field("id,uid,order_img,order_str,apply_date,pay_date,shop_count,amount,shop_type,shop_format,name,phone,address,remark,shipping_date,shop_wu_liu")
  264. ->where("id='$id'")->find();
  265. echo json_encode($data);
  266. }
  267. /**
  268. * 用户下单
  269. * @return void
  270. */
  271. public function buy()
  272. {
  273. $this->addHeaders(); //添加头部请求
  274. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  275. $uid = $user_info['id'];
  276. $user_money = $user_info['gold_coins_number'];
  277. $shop_id = $_POST['shopId']; //商品id
  278. $addr_id = $_POST['addr_id']; //收获地址id
  279. $shop_count = $_POST['shop_count']; //商品数量
  280. $shop_format = $_POST['shop_format']; //商品规格
  281. $remark = $_POST['remark']; //备注
  282. if (empty($shop_id) || empty($addr_id))
  283. {
  284. $this->returnDataAndSendMsg("商品标识或收货地址标识不能为空");
  285. die();
  286. }
  287. if (empty($shop_count) || empty($shop_format))
  288. {
  289. $this->returnDataAndSendMsg("购买数量或规格不能为空");
  290. die();
  291. }
  292. $shop_info = M("qq_shopping")->where("id='$shop_id'")->find();
  293. if(empty($shop_info))
  294. {
  295. $this->returnDataAndSendMsg("商品已下架");
  296. die();
  297. }
  298. //判断是否已售罄
  299. if($shop_info['shop_stock']<$shop_count)
  300. {
  301. $this->returnDataAndSendMsg("商品已售罄");
  302. die();
  303. }
  304. $addr_info = M("qq_user_address")->where("id='$addr_id'")->find();
  305. if(empty($shop_info))
  306. {
  307. $this->returnDataAndSendMsg("收货地址已不存在");
  308. die();
  309. }
  310. if($shop_count==0)
  311. {
  312. $this->returnDataAndSendMsg("非法操作");
  313. die();
  314. }
  315. $add_info['uid']=$uid;
  316. $add_info['order_img']=$shop_info['order_img'];//商品名称
  317. $add_info['order_str']=$shop_info['order_str']; //商品图片
  318. $add_info['apply_date']=date('Y-m-d H:i:s'); //提交时间
  319. $add_info['amount']=$shop_info['amount']*$shop_count; //付款金额
  320. $add_info['pay_date']=$add_info['apply_date'];
  321. $add_info['shop_count']=$shop_count;//商品数量
  322. $add_info['amount_due']=$shop_info['amount_due'];//付款时间
  323. $add_info['shop_id']=$shop_info['id'];
  324. $add_info['shop_type']=0; //订单状态0/待发1/已发2/已送达/3取消/4退款
  325. $add_info['shop_format']=$shop_format;
  326. //收货信息
  327. $add_info['name'] = $addr_info['name'];
  328. $add_info['phone'] = $addr_info['phone'];
  329. $add_info['address'] = $addr_info['address'];
  330. $add_info['remark'] = $remark;
  331. $add_info['shop_wu_liu'] = "已下单:".$add_info['apply_date'].","; //物流
  332. if($user_money<$add_info['amount'])
  333. {
  334. $this->returnDataAndSendMsg("您的金币余额不足,请及时充值");
  335. die();
  336. }
  337. //先扣款在下单
  338. $rs = M("user_info")->where("id='$uid'")->setDec("gold_coins_number",$add_info['amount']);
  339. if($rs<=0)
  340. {
  341. $this->returnDataAndSendMsg("操作失败,请稍后在试");
  342. die();
  343. }
  344. //剪库存
  345. $update_info['shop_stock'] = $shop_info['shop_stock']-$shop_count;//库存
  346. $update_info['shop_count'] = $shop_info['shop_count']+1;//下单数量
  347. M("qq_shopping")->where("id='$shop_id'")->save($update_info);
  348. //添加订单
  349. $rs = M("qq_user_shopping")->add($add_info);
  350. $data['code'] = '200';
  351. $data['message'] = 'ok';
  352. $data['data'] = $rs;
  353. echo json_encode($data);
  354. }
  355. }