Expedite.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. <?php
  2. namespace app\api\controller;
  3. use app\api\model\MarketGoods;
  4. use think\Db;
  5. /**
  6. * @title 不需要验证token接口(商品详情,商品列表等)
  7. * @controller Expedite
  8. * @package app\api\controller
  9. */
  10. class Expedite extends Base
  11. {
  12. public function initialize(){
  13. parent::initialize();
  14. }
  15. /**
  16. * @title 获取商品详情(商城商品)
  17. * @desc 获取商品详情(商城商品)
  18. * @author qc
  19. * @url /api/Expedite/getGoodsDetail
  20. * @method GET
  21. * @header name:Authorization require:1 desc:Token
  22. * @param name:goods_id type:int require:1 default:0 desc:商品id
  23. * @return name:goods_info type:array default:-- desc:商品详情
  24. * @return name:goods_info.name type:string default:-- desc:商品名称
  25. * @return name:goods_info.cover type:string default:-- desc:商品封面图
  26. * @return name:goods_info.desc type:string default:-- desc:商品简述
  27. * @return name:goods_info.goods_price type:float default:-- desc:价格
  28. * @return name:goods_info.end_time type:float default:-- desc:结束时间
  29. * @return name:goods_info.spec type:string default:-- desc:魔盒设置
  30. * @return name:spec.title type:string default:-- desc:标题
  31. * @return name:spec.award_name type:string default:-- desc:名称
  32. * @return name:spec.spec_img type:string default:-- desc:封面
  33. * @return name:spec.store_num type:string default:-- desc:剩余库存
  34. * @return name:spec.base_num type:string default:-- desc:初始库存
  35. * @return name:spec.crystal type:string default:-- desc:明信片价值
  36. * @return name:spec.color type:int default:-- desc:0黑色,1红色,2金色
  37. * @return name:spec.rate type:string default:-- desc:抽中概率
  38. * @return name:goods_info.first_classify type:int default:-- desc:分类id
  39. * @return name:goods_info.detail type:int default:-- desc:商品详情
  40. * @return name:goods_info.stock type:float default:-- desc:剩余库存
  41. * @return name:goods_info.base_stock type:float default:-- desc:初始库存
  42. * @return name:goods_info.is_collect type:int default:-- desc:是否收藏(0未收藏,1已收藏)
  43. * @return name:goods_info.special_award type:array default:-- desc:特殊奖励设置(前后场两个奖励)
  44. * @return name:goods_info.special_award.title type:string default:-- desc:标题
  45. * @return name:goods_info.special_award.goods type:string default:-- desc:商品名
  46. * @return name:goods_info.special_award.cover type:string default:-- desc:图片
  47. * @return name:goods_info.special_award.crystal type:string default:-- desc:明信片
  48. * @return name:goods_info.special_award.is_over type:string default:-- desc:奖励是否完成
  49. * @return name:goods_info.special_award.color type:int default:-- desc:0黑色,1红色,2金色
  50. * @return name:goods_info.special_point type:int default:-- desc:前后场分割数
  51. * @return name:goods_info.before_num type:int default:-- desc:前场数
  52. * @return name:goods_info.after_num type:int default:-- desc:后场数
  53. * @return name:goods_info.last_award type:array default:-- desc:场终奖励
  54. * @return name:goods_info.last_award.title type:string default:-- desc:标题
  55. * @return name:goods_info.last_award.goods type:string default:-- desc:商品名
  56. * @return name:goods_info.last_award.cover type:string default:-- desc:图片
  57. * @return name:goods_info.last_award.crystal type:string default:-- desc:明信片
  58. * @return name:goods_info.last_award.is_over type:string default:-- desc:奖励是否完成
  59. * @return name:goods_info.last_award.color type:int default:-- desc:0黑色,1红色,2金色
  60. *
  61. */
  62. public function getGoodsDetail()
  63. {
  64. $goods_id = input('goods_id');
  65. $field = 'id,name,cover,desc,goods_price,spec,first_classify,detail,stock,base_stock,end_time,special_award,special_point,last_award';
  66. $detail = Db::table('store_goods')
  67. ->field($field)
  68. ->where(['id'=>$goods_id,'status'=>1,'is_deleted'=>0])
  69. ->find($goods_id);
  70. if(empty($detail)) $this->error('商品已下架');
  71. $detail['before_num'] = $detail['special_point'];
  72. $detail['after_num'] =$detail['base_stock'] - $detail['special_point'];
  73. $detail['is_collect'] = Db::table('goods_collect')->where(['user_id'=>$this->uid,'goods_id'=>$goods_id])->count();
  74. $this->success('oK',['goods_info'=>$detail,]);
  75. }
  76. /**
  77. * @title 获取商品列表(商城商品)
  78. * @desc 获取商品列表(商城商品)
  79. * @author qc
  80. * @url /api/Expedite/getGoodsList
  81. * @method GET
  82. * @header name:Authorization require:1 desc:Token
  83. * @param name:page type:int default:1 desc:页数
  84. * @param name:page_num type:int : default:20 desc:每页数
  85. * @param name:goods_name type:string require:0 default:-- desc:商品名称
  86. * @param name:cate_id type:int require:0 default:0 desc:分类id
  87. * @return name:name type:string default:-- desc:商品名称
  88. * @return name:cover type:string default:-- desc:商品封面图
  89. * @return name:desc type:string default:-- desc:商品简述
  90. * @return name:goods_price type:float default:-- desc:价格
  91. * @return name:spec type:string default:-- desc:规格详情
  92. * @return name:spec.title type:string default:-- desc:标题
  93. * @return name:spec.award_name type:string default:-- desc:名称
  94. * @return name:spec.spec_img type:string default:-- desc:封面
  95. * @return name:spec.store_num type:string default:-- desc:剩余库存
  96. * @return name:spec.base_num type:string default:-- desc:初始库存
  97. * @return name:spec.crystal type:string default:-- desc:明信片价值
  98. * @return name:spec.color type:int default:-- desc:0黑色,1红色,2金色
  99. * @return name:first_classify type:int default:-- desc:一级分类id
  100. * @return name:detail type:int default:-- desc:商品详情
  101. * @return name:stock type:float default:-- desc:剩余库存
  102. * @return name:base_stock type:float default:-- desc:初始库存
  103. * @return name:end_time type:string default:-- desc:结束时间
  104. * @return name:goods_info.special_ type:array default:-- desc:特殊奖励设置(前后场两个奖励)
  105. * @return name:goods_info.special_award.title type:string default:-- desc:标题
  106. * @return name:goods_info.special_award.goods type:string default:-- desc:商品名
  107. * @return name:goods_info.special_award.cover type:string default:-- desc:图片
  108. * @return name:goods_info.special_award.crystal type:string default:-- desc:明信片
  109. * @return name:goods_info.special_award.is_over type:string default:-- desc:奖励是否完成
  110. * @return name:msg_num type:int default:-- desc:消息未读数量
  111. */
  112. public function getGoodsList()
  113. {
  114. $sel_where = [];
  115. $sel_where[] = ['status','=',1];
  116. $sel_where[] = ['is_deleted','=',0];
  117. /* $sel_where[] = ['end_time','> time',date("Y-m-d H:i:s")];*/
  118. if(input('goods_name')) $sel_where[] = ['name','like',"%".input('goods_name')."%"];
  119. if(input('cate_id',0)) $sel_where[] = ['first_classify','=',input('cate_id')];
  120. $field = 'id,name,cover,desc,goods_price,spec,first_classify,detail,stock,base_stock,end_time,special_award';
  121. $list = Db::table('store_goods')
  122. ->field($field)
  123. ->where($sel_where)
  124. ->order('sort desc , id desc ')
  125. ->limit($this->off_set,$this->page_num)
  126. ->select();
  127. $msg_num = Db::table('user_message')
  128. ->where('user_id',$this->uid)
  129. ->where('is_read',0)
  130. ->count();
  131. $this->success('ok',['list'=>$list,'msg_num'=>$msg_num ? $msg_num :0]);
  132. }
  133. /**
  134. * @title 获取商品分类(商城商品)
  135. * @desc 获取商品分类(商城商品)
  136. * @author qc
  137. * @url /api/Expedite/getGoodCate
  138. * @method GET
  139. * @header name:Authorization require:1 desc:Token
  140. * @return name:id type:array default:-- desc:商品详情
  141. * @return name:title type:string default:-- desc:分类名称
  142. */
  143. public function getGoodCate()
  144. {
  145. $list = Db::table('store_goods_cate')
  146. ->where('pid',0)
  147. ->where('status',1)
  148. ->where('is_deleted',0)
  149. ->field('id,title')
  150. ->order('sort desc , id desc')
  151. ->select();
  152. $this->success('ok',['list'=>$list]);
  153. }
  154. /**
  155. * @title 获取首页轮播图
  156. * @desc 获取首页轮播图
  157. * @author qc
  158. * @url /api/Expedite/getBanner
  159. * @method GET
  160. * @header name:Authorization require:1 desc:Token
  161. * @param name:num type:int default:5 desc:查询数量
  162. * @return name:name type:srting default:-- desc:标题
  163. * @return name:cover type:srting default:-- desc:图片路径
  164. * @return name:link type:srting default:-- desc:跳转地址
  165. */
  166. public function getBanner()
  167. {
  168. $num = input('get.num',20);
  169. $list = Db::table('store_banner')
  170. ->field('id,name,cover,link')
  171. ->where(['is_deleted'=>0])
  172. ->limit(0,$num)
  173. ->order('sort desc ,id desc')
  174. ->select();
  175. $this->success('ok',['list'=>$list]);
  176. }
  177. /**
  178. * @title 获取订单列表(商城商品)
  179. * @desc 获取订单列表(商城商品)
  180. * @author qc
  181. * @url /api/Expedite/getOrderListByGoodsId
  182. * @method GET
  183. * @header name:Authorization require:1 desc:Token
  184. * @param name:page type:int default:1 desc:页数
  185. * @param name:page_num type:int : default:20 desc:每页数
  186. * @param name:goods_id type:string require:1 default:-- desc:商品id
  187. * @return name:create_at type:string default:-- desc:时间
  188. * @return name:goods_name type:string default:-- desc:商品
  189. * @return name:name type:string default:-- desc:会员名称
  190. * @return name:headimg type:string default:-- desc:会员头像
  191. */
  192. public function getOrderListByGoodsId()
  193. {
  194. $goods_id = input('goods_id',0);
  195. $list = Db::table('goods_order')
  196. ->alias('o')
  197. ->field('o.create_at,o.goods_name,m.name,m.headimg')
  198. ->join('store_member m','o.uid = m.id')
  199. ->where('o.goods_id',$goods_id)
  200. ->where('o.pay_state',1)
  201. ->order('o.id desc ')
  202. ->limit($this->off_set,$this->page_num)
  203. ->select();
  204. $this->success('ok',['list'=>$list]);
  205. }
  206. /**
  207. * @title 获取商品中奖详情
  208. * @desc 获取商品中奖详情
  209. * @author qc
  210. * @url /api/Expedite/getAwardDetailByGoodsId
  211. * @method GET
  212. * @header name:Authorization require:1 desc:Token
  213. * @param name:page type:int default:1 desc:页数
  214. * @param name:page_num type:int : default:20 desc:每页数
  215. * @param name:goods_id type:string require:1 default:-- desc:商品id
  216. * @return name:create_at type:string default:-- desc:时间
  217. * @return name:award_name type:string default:-- desc:奖品标题
  218. * @return name:award_cover type:string default:-- desc:奖品图片
  219. * @return name:name type:string default:-- desc:会员名称
  220. * @return name:headimg type:string default:-- desc:会员头像
  221. * @return name:is_special type:int default:-- desc:是否是特殊奖励
  222. * @return name:is_last type:int default:-- desc:场终奖励
  223. * @return name:color_num type:int default:-- desc:0黑色,1红色,2金色
  224. * @return name:code type:int default:100 desc:编码
  225. * @return name:title type:int default:--- desc:标题
  226. */
  227. public function getAwardDetailByGoodsId()
  228. {
  229. $goods_id = input('goods_id',0);
  230. $goods_code = Db::table('magic_draw')->field('id')
  231. ->where('goods_id',$goods_id)
  232. ->where('is_special',0)
  233. ->where('is_last',0)
  234. ->order('id asc')
  235. ->select();
  236. foreach ($goods_code as $k=>&$c) {
  237. $c['k'] = $k+1;
  238. }
  239. $goods_code = array_column($goods_code,null,'id');
  240. $list = Db::table('magic_draw')
  241. ->alias('d')
  242. ->field('d.id,d.award_name,d.award_cover,d.create_at,m.name,m.headimg,d.is_special,is_last,title,color_num')
  243. ->join('store_member m','d.user_id = m.id')
  244. ->where('d.goods_id',$goods_id)
  245. ->order('d.is_special desc,d.is_last desc ,d.id desc ')
  246. ->limit($this->off_set,$this->page_num)
  247. ->select();
  248. foreach ($list as &$lv) {
  249. $lv['code'] = isset($goods_code[$lv['id']])?$goods_code[$lv['id']]['k']:' ';
  250. }
  251. $this->success('ok',['list'=>$list]);
  252. }
  253. /**
  254. * @title 获取商品详情(兑换商品)
  255. * @desc 获取商品详情(兑换商品)
  256. * @author qc
  257. * @url /api/Expedite/getExchangeGoodsDetail
  258. * @method GET
  259. * @header name:Authorization require:1 desc:Token
  260. * @param name:goods_id type:int require:1 default:0 desc:兑换商品id
  261. * @return name:name type:string default:-- desc:商品名称
  262. * @return name:cover type:string default:-- desc:商品封面图
  263. * @return name:desc type:string default:-- desc:商品简述
  264. * @return name:crystal type:int default:-- desc:售价(明信片||余额)
  265. * @return name:first_classify type:int default:-- desc:一级分类id
  266. * @return name:detail type:int default:-- desc:商品详情
  267. * @return name:stock type:float default:-- desc:剩余库存
  268. */
  269. public function getExchangeGoodsDetail()
  270. {
  271. $goods_id = input('goods_id');
  272. $field = 'id,name,cover,desc,first_classify,detail,stock,crystal';
  273. $detail = Db::table('exchange_goods')
  274. ->field($field)
  275. ->where(['id'=>$goods_id,'status'=>1,'is_deleted'=>0])
  276. ->find($goods_id);
  277. if(empty($detail)) $this->error('商品已下架');
  278. $this->success('oK',$detail);
  279. }
  280. /**
  281. * @title 获取商品列表(兑换商品)
  282. * @desc 获取商品列表(兑换商品)
  283. * @author qc
  284. * @url /api/Expedite/getExchangeGoodsList
  285. * @method GET
  286. * @header name:Authorization require:1 desc:Token
  287. * @param name:page type:int default:1 desc:页数
  288. * @param name:page_num type:int : default:20 desc:每页数
  289. * @param name:goods_name type:string require:0 default:-- desc:商品名称
  290. * @param name:cate_id type:int require:0 default:0 desc:分类id
  291. * @return name:name type:string default:-- desc:商品名称
  292. * @return name:cover type:string default:-- desc:商品封面图
  293. * @return name:desc type:string default:-- desc:商品简述
  294. * @return name:crystal type:int default:-- desc:售价(明信片||余额)
  295. * @return name:first_classify type:int default:-- desc:一级分类id
  296. * @return name:detail type:int default:-- desc:商品详情
  297. * @return name:stock type:float default:-- desc:剩余库存
  298. */
  299. public function getExchangeGoodsList()
  300. {
  301. $sel_where = [];
  302. $sel_where[] = ['status','=',1];
  303. $sel_where[] = ['is_deleted','=',0];
  304. if(input('goods_name')) $sel_where[] = ['name','like',"%".input('goods_name')."%"];
  305. if(input('cate_id',0)) $sel_where[] = ['first_classify','=',input('cate_id')];
  306. $field = 'id,name,cover,desc,first_classify,detail,stock,crystal';
  307. $list = Db::table('exchange_goods')
  308. ->field($field)
  309. ->where($sel_where)
  310. ->order('sort desc , id desc ')
  311. ->limit($this->off_set,$this->page_num)
  312. ->select();
  313. $this->success('ok',['list'=>$list]);
  314. }
  315. /**
  316. * @title 获取平台设置
  317. * @desc 获取平台设置
  318. * @author qc
  319. * @url /api/Expedite/getSysConfig
  320. * @method GET
  321. * @return name:agreement type:string default:-- desc:用户协议
  322. * @return name:purchase_notice type:string default:-- desc:购买须知
  323. * @return name:platform_notice type:string default:-- desc:平台消息
  324. * @return name:invite_rule type:string default:-- desc:邀请规则
  325. */
  326. public function getSysConfig(){
  327. $con_name =['agreement','purchase_notice','platform_notice','invite_rule'];
  328. $set = Db::table('system_config')->where('name','in',$con_name)->select();
  329. $ret = [];
  330. foreach ($set as $value) {
  331. $ret[$value['name']]=$value['value'];
  332. }
  333. $this->success('获取成功',$ret);
  334. }
  335. /**
  336. * @title 获取商品详情(集市商品)
  337. * @desc 获取商品详情(集市商品)
  338. * @author qc
  339. * @url /api/Expedite/getMarketGoodsDetail
  340. * @method GET
  341. * @header name:Authorization require:1 desc:Token
  342. * @param name:goods_id type:int require:1 default:0 desc:商品id
  343. * @return name:id type:int default:-- desc:商品id
  344. * @return name:sell_price type:string default:-- desc:售价
  345. * @return name:cover type:string default:-- desc:商品图
  346. * @return name:status type:int default:-- desc:0已下架1正常售卖
  347. * @return name:user_id type:int default:-- desc:售卖商品会员id
  348. * @return name:stock type:int default:-- desc:数量
  349. * @return name:sell_price type:int default:-- desc:售价(所有数量的售价)
  350. * @return name:crystal type:float default:-- desc:每个价值
  351. * @return name:sell_status type:int default:-- desc:售卖状态1在售2售完3真正支付中
  352. * @return name:pro_info type:array default:-- desc:详情
  353. * @return name:pro_info.num type:int default:-- desc:数量
  354. * @return name:pro_info.case_name type:int default:-- desc:名称
  355. * @return name:pro_info.case_cover type:int default:-- desc:图片
  356. * @return name:pro_info.crystal type:int default:-- desc:明信片
  357. */
  358. public function getMarketGoodsDetail()
  359. {
  360. $goods_id = input('goods_id',0);
  361. $detail = MarketGoods::get(['id'=>$goods_id]);
  362. if(empty($detail)) $this->error('商品已下架');
  363. $this->success('oK',['goods_info'=>$detail,]);
  364. }
  365. /**
  366. * @title 获取商品列表(集市商品)
  367. * @desc 获取商品列表(集市商品)
  368. * @author qc
  369. * @url /api/Expedite/getMarketGoodsList
  370. * @method GET
  371. * @header name:Authorization require:1 desc:Token
  372. * @param name:page type:int default:1 desc:页数
  373. * @param name:page_num type:int : default:20 desc:每页数
  374. * @param name:goods_name type:string require:0 default:-- desc:商品名称
  375. * @return name:id type:int default:-- desc:商品id
  376. * @return name:sell_price type:string default:-- desc:售价
  377. * @return name:cover type:string default:-- desc:商品图
  378. * @return name:status type:int default:-- desc:0已下架1正常售卖
  379. * @return name:user_id type:int default:-- desc:售卖商品会员id
  380. * @return name:stock type:int default:-- desc:数量
  381. * @return name:sell_price type:int default:-- desc:售价(所有数量的售价)
  382. * @return name:crystal type:float default:-- desc:每个价值
  383. * @return name:sell_status type:int default:-- desc:售卖状态1在售2售完3真正支付中
  384. * @return name:order_status type:int default:-- desc:0售卖中1已售卖/待发货2待收货3已完成
  385. * @return name:pro_info type:array default:-- desc:详情
  386. * @return name:pro_info.num type:int default:-- desc:数量
  387. * @return name:pro_info.case_name type:int default:-- desc:名称
  388. * @return name:pro_info.case_cover type:int default:-- desc:图片
  389. * @return name:pro_info.crystal type:int default:-- desc:明信片
  390. * @return name:pro_info.headimg type:string default:-- desc:头像
  391. * @return name:pro_info.name type:string default:-- desc:名称
  392. */
  393. public function getMarketGoodsList()
  394. {
  395. $sql = "SELECT g.*,m.headimg,m.name FROM market_goods as g LEFT JOIN store_member as m ON g.user_id = m.id WHERE g.status = 1 AND g.stock > 0 AND g.sell_status = 1 ";
  396. if(input('goods_name')) $sel_where[] = ['pro_info','like',"%".input('goods_name')."%"];
  397. if($sel_name = input('goods_name')) $sql .= " AND (g.name_str LIKE '%$sel_name%' OR m.name LIKE '%$sel_name%' ) ";
  398. $sql .= " ORDER BY g.id desc LIMIT $this->off_set,$this->page_num";
  399. $list = Db::query($sql);
  400. $this->success('ok',['list'=>$list]);
  401. }
  402. }