Merchant.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. <?php
  2. /**
  3. * @package merchant
  4. * @Author: Qinii
  5. * @Date: 2020/5/28
  6. */
  7. namespace app\controller\api\store\merchant;
  8. use think\App;
  9. use crmeb\basic\BaseController;
  10. use app\common\repositories\system\merchant\MerchantRepository as repository;
  11. use think\facade\Db;
  12. use think\facade\Log;
  13. use function Symfony\Component\VarDumper\Dumper\esc;
  14. class Merchant extends BaseController
  15. {
  16. protected $repository;
  17. protected $userInfo;
  18. private $merId;
  19. private $source;
  20. /**
  21. * ProductCategory constructor.
  22. * @param App $app
  23. * @param repository $repository
  24. */
  25. public function __construct(App $app, repository $repository)
  26. {
  27. parent::__construct($app);
  28. $this->repository = $repository;
  29. $this->userInfo =$this->request->isLogin() ? $this->request->userInfo():null;
  30. $this->source = $this->request->header('source');
  31. $this->merId = $this->request->header('merId');
  32. }
  33. /**
  34. * @Author:Qinii
  35. * @Date: 2020/5/27
  36. * @return mixed
  37. */
  38. public function lst()
  39. {
  40. [$page, $limit] = $this->getPage();
  41. $where = $this->request->params(['keyword','order','category_id']);
  42. return json_encode($where);
  43. return app('json')->success($this->repository->getList($where, $page,$limit,$this->userInfo));
  44. }
  45. /**
  46. * @Author:Qinii
  47. * @Date: 2020/5/29
  48. * @param $id
  49. * @return mixed
  50. */
  51. public function detail($id)
  52. {
  53. if(!$this->repository->apiGetOne($id))
  54. return app('json')->fail('店铺不存在');
  55. $lat=$this->request->param('lat','');
  56. $lng=$this->request->param('lng','');
  57. return app('json')->success($this->repository->detail($id,$this->userInfo,$lat, $lng));
  58. }
  59. /**
  60. * @Author:Qinii
  61. * @Date: 2020/5/29
  62. * @param $id
  63. * @return mixed
  64. */
  65. public function productList($id)
  66. {
  67. [$page, $limit] = $this->getPage();
  68. $where = $this->request->params(['keyword','order','mer_cate_id','price_on', 'price_off','brand_id']);
  69. $where['is_gift_bag'] = 0;
  70. $where['is_used'] = 1;
  71. $where['product_type'] = 0;
  72. $where['is_hide'] = 0;
  73. if($id==324){
  74. $where['mer_type']=1;
  75. }
  76. if($this->source=='yhc' && $this->merId==496){
  77. return app('json')->success($this->repository->productList_yhc($id,$where, $page, $limit,$this->userInfo));
  78. }
  79. return app('json')->success($this->repository->productList($id,$where, $page, $limit,$this->userInfo));
  80. }
  81. public function productTypeList()
  82. {
  83. $params= $this->request->params(['type','mer_cate_id','pageNum','pageSize','mer_id']);
  84. $name=$params['type'];
  85. $domain = $this->request->domain();
  86. $id=0;
  87. $type439=true;
  88. $is_commercetrade = 0;
  89. if($name=='dingsheng'){
  90. $id=486;
  91. }else if($name=='jingpin'){
  92. $id=439;
  93. $type439=false;
  94. }else if($name=='jifen'){
  95. $id=148;
  96. }else if($name=='gongchang'){
  97. if(strpos($domain, 'test.hebeiyhc.com') !== false) {
  98. // 域名中包含 "test.hebeiyhc.com'" 字符串
  99. $id=486;//测试环境工厂直供
  100. }else{
  101. $id=497;//生产环境工厂直供
  102. }
  103. }else if($name=='fugou'){
  104. $id=491;
  105. }// 商贸区
  106. else if($name=='commercetrade'){
  107. if (empty($params['mer_id'])) return app('json')->fail('店铺不存在');
  108. $id=$this->merId = $params['mer_id'];
  109. $is_commercetrade = 1;
  110. }
  111. [$page, $limit] = $this->getPage();
  112. if($params['pageNum']!=''){
  113. $page=$params['pageNum'];
  114. }
  115. if($params['pageSize']!=''){
  116. $limit=$params['pageSize'];
  117. }
  118. $where = $this->request->params(['keyword','order','mer_cate_id', 'cate_id','price_on', 'price_off','brand_id']);
  119. $where['is_gift_bag'] = 0;
  120. $where['is_used'] = 1;
  121. $where['product_type'] = 0;
  122. $where['is_hide'] = 0;
  123. log::info("====={$params['mer_cate_id']}===");
  124. if($params['mer_cate_id']){
  125. $where['cate_id'] = $params['mer_cate_id'];
  126. }
  127. return app('json')->success($this->repository->productList($id,$where, $page, $limit,$this->userInfo,$type439,$is_commercetrade));
  128. }
  129. /**
  130. * 获取商户上架的商品列表
  131. * @return mixed
  132. */
  133. public function getProductList()
  134. {
  135. $params = request()->only(['pageNum', 'pageSize', 'mer_id']);
  136. $merId = $params['mer_id'] ?? 0;
  137. [$page, $limit] = $this->getPage();
  138. $where = request()->only(['keyword']);
  139. $where['is_gift_bag'] = 0;
  140. $where['is_used'] = 1;
  141. $where['product_type'] = 0;
  142. $where['is_hide'] = 0;
  143. $result = $this->repository->productList($merId, $where, $page, $limit, $this->userInfo);
  144. $formatList = [];
  145. foreach ($result['list'] as $productInfo) {
  146. $formatList[] = [
  147. 'type' => 0,//京东商品
  148. 'merId' => $productInfo['mer_id'],
  149. 'skuId' => '',//itemId 京东官方 已不返回skuId , 使用 联盟商品ID 代替skuId
  150. 'id' => $productInfo['product_id'] ?? '', //id
  151. 'name' => $productInfo['store_name'],//名称
  152. 'thumb' => $productInfo['image'] ?? '',//商品缩略图
  153. 'pv' => $productInfo['pv'],//PV金额
  154. 'gongxian' => $productInfo['gongxian'],
  155. 'jifen' => $productInfo['jifen'],
  156. 'yanglaojin' => $productInfo['yanglao'],
  157. 'commission' => $productInfo['concession_pri'],//佣金
  158. 'commission_rate' => null,//佣金比例
  159. 'coupon_money' => [],
  160. 'coupon_link' => '',
  161. 'lowestCouponPrice' => $productInfo['price'],
  162. 'price' => $productInfo['ot_price'], //价格
  163. 'imageList' => $productInfo['slider_image'], //图片合集
  164. 'materialUrl' => ''
  165. ];
  166. }
  167. return app('json')->success($formatList);
  168. }
  169. /**
  170. * 商贸区店铺商品列表
  171. * @return mixed
  172. * @throws \think\db\exception\DataNotFoundException
  173. * @throws \think\db\exception\DbException
  174. * @throws \think\db\exception\ModelNotFoundException
  175. */
  176. public function commerceProductList()
  177. {
  178. $params= $this->request->params(['pageNum','pageSize','category_id']);
  179. $mer_id_unset = [496,486,439,148,491];
  180. $domain = $this->request->domain();
  181. if(strpos($domain, 'test.hebeiyhc.com') !== false) {
  182. // 域名中包含 "test.hebeiyhc.com'" 字符串
  183. array_push($mer_id_unset, 486);
  184. }else{
  185. array_push($mer_id_unset, 497);
  186. }
  187. $is_commercetrade = 1;
  188. [$page, $limit] = $this->getPage();
  189. if($params['pageNum']!=''){
  190. $page=$params['pageNum'];
  191. }
  192. if($params['pageSize']!=''){
  193. $limit=$params['pageSize'];
  194. }
  195. $category_id = $params['category_id']?:0;
  196. $where['is_del'] = 0;
  197. $where['status'] = 1;
  198. $category_id && $where['category_id'] = $category_id;
  199. $hasProductMerIdList = Db::name('store_product')
  200. ->where('status', '=', 1)
  201. ->where('is_show', '=', 1)
  202. ->where('is_del', '=', 0)
  203. ->group('mer_id')
  204. ->field('mer_id')
  205. ->select();
  206. if ($hasProductMerIdList) {
  207. $hasProductMerIdList = array_column($hasProductMerIdList->toArray(), 'mer_id');
  208. }
  209. $query = Db::name('merchant')->where($where);
  210. if (!empty($hasProductMerIdList) && is_array($hasProductMerIdList)) {
  211. $query->whereIn('mer_id', $hasProductMerIdList);
  212. }
  213. $mer_list = $query->page($page)->limit($limit)->select();
  214. return app('json')->success(['list'=>$mer_list]);
  215. // $where['is_gift_bag'] = 0;
  216. // $where['is_used'] = 1;
  217. // $where['product_type'] = 0;
  218. // $where['is_hide'] = 0;
  219. // $return_list = [];
  220. // if($mer_list) {
  221. // $mer_list = $mer_list->toArray();
  222. // foreach ($mer_list as $mer) {
  223. // if(in_array($mer['mer_id'],$mer_id_unset)) continue;
  224. // $goods = $this->repository->productList($mer['mer_id'],$where, 1, 3,$this->userInfo,false,$is_commercetrade);
  225. // if(empty($goods['list'])) continue;
  226. // $mer['goods_list'] = $goods['list'];
  227. // if (mb_strlen($mer['mer_name']) > 8) {
  228. // $mer['mer_name'] = mb_substr($mer['mer_name'], 0, 8) . '...';
  229. // }
  230. // $return_list[] = $mer;
  231. // }
  232. // }
  233. // return app('json')->success(['list'=>$return_list]);
  234. }
  235. /**
  236. * 查询代理人商品
  237. * @param $type
  238. * @return mixed
  239. */
  240. public function areaProductList()
  241. {
  242. [$page, $limit] = $this->getPage();
  243. $where = $this->request->params(['keyword','order','mer_cate_id','price_on', 'price_off','brand_id']);
  244. $where['is_gift_bag'] = 0;
  245. $where['is_used'] = 1;
  246. $where['product_type'] = 0;
  247. $where['is_hide'] = 0;
  248. $type = $this->request->param('type');
  249. Log::info('查询代理人商品请求参数,type:'.$type);
  250. $type = $type == 'district' ? 13 : ($type == 'town' ? 12 : ($type == 'village' ? 11 : -1));
  251. // $where['web_type'] = $type;
  252. $id = 324;
  253. $data = $this->repository->productList($id,$where, $page, $limit,$this->userInfo);
  254. Log::info('查询代理人商品返回'.json_encode($data,true));
  255. return app('json')->success($data);
  256. }
  257. /**
  258. * @Author:Qinii
  259. * @Date: 2020/5/29
  260. * @param int $id
  261. * @return mixed
  262. */
  263. public function categoryList($id)
  264. {
  265. if(!$this->repository->merExists($id))
  266. return app('json')->fail('店铺不存在');
  267. return app('json')->success($this->repository->categoryList($id));
  268. }
  269. public function qrcode($id)
  270. {
  271. $mer = \app\common\model\system\merchant\Merchant::getInstance()->where('mer_id', $id)->find();
  272. if(!$mer)
  273. return app('json')->fail('店铺不存在');
  274. $type = $this->request->param('type');
  275. $is_payment = $this->request->param('is_payment', 0);
  276. switch ($type) {
  277. case 'routine':
  278. if ($is_payment) {
  279. $url = $this->repository->routineQrcode(intval($id), '/h5payment/index.html','_store_routine_payment.jpg');
  280. } else {
  281. $url = $this->repository->routineQrcode(intval($id));
  282. }
  283. break;
  284. default:
  285. if ($is_payment) {
  286. $url = $this->repository->wxQrcode(intval($id), '/h5payment/index.html', '_store_wap_payment.jpg', $mer->mer_avatar);
  287. } else {
  288. $url = $this->repository->wxQrcode(intval($id));
  289. }
  290. }
  291. return app('json')->success(compact('url'));
  292. }
  293. public function payQrCode($id){
  294. $mer = \app\common\model\system\merchant\Merchant::getInstance()->where('mer_id', $id)->find();
  295. if(!$mer)
  296. return app('json')->fail('店铺不存在');
  297. $res = $this -> repository -> getQrCode($mer);
  298. return app('json') -> success($res);
  299. }
  300. /**
  301. * @Date: 2020/10/10
  302. * 店铺列表 :首页 最多十个
  303. * @return mixed
  304. */
  305. public function listindex()
  306. {
  307. // [$page, $limit] = $this->getPage();
  308. $page=input("page/d",1);
  309. $limit=input("limit/d",10);
  310. $keyword=input("keyword","");
  311. $order=input("order",0);
  312. $type=input("type",2);
  313. $lat=input("lat",1);
  314. $lng=input("lng",1);
  315. $data=[
  316. "lat"=>$lat,
  317. "lng"=>$lng,
  318. "keyword"=>$keyword,
  319. "order"=>$order
  320. ];
  321. return app('json')->success($this->repository->getLists($data,$page,$limit,$type));
  322. }
  323. /**
  324. * @Date: 2020/10/10
  325. * 店铺列表:
  326. * @param $keyword //搜索
  327. * @param $order //排序
  328. * @param $category_id //分类id
  329. * @return mixed
  330. */
  331. public function list()
  332. {
  333. $category_id=input("category_id",0);
  334. $page=input("page/d",1);
  335. $limit=input("limit/d",10);
  336. $keyword=input("keyword","");
  337. $order=input("order",0);
  338. $type=input("type",0);
  339. $lat=input("lat",'113.643636');
  340. $lng=input("lng",'34.73841');
  341. $city_name=input("city_name",'');
  342. if ($type==2){
  343. $data=[
  344. "lat"=>empty($lat)?"113.643636":$lat,
  345. "lng"=>empty($lng)?"34.73841":$lng,
  346. "keyword"=>$keyword,
  347. "order"=>$order
  348. ];
  349. return app('json')->success($this->repository->getLists($data,$page,$limit,$type));
  350. }
  351. $where=[];
  352. if ($category_id){
  353. $where["category_id"]=$category_id;
  354. }
  355. $data=[
  356. "lat"=>empty($lat)?"34.73841":$lat,
  357. "lng"=>empty($lng)?"113.643636":$lng,
  358. ];
  359. if ($city_name){
  360. $data["city_name"]=$city_name;
  361. }
  362. return app('json')->success($this->repository->getLists($data,1,10,1,$where));
  363. // return app('json')->success(['count'=>0,'list'=>[],'where'=>[]]);
  364. }
  365. /**
  366. * @Date: 2020/10/10
  367. * 店铺分类
  368. */
  369. public function merchantcategory()
  370. {
  371. [$page, $limit] = $this->getPage();
  372. return app('json')->success($this->repository->merchantcategory());
  373. }
  374. /**
  375. * 附近页面商家分类
  376. * @day 2020/10/30
  377. */
  378. public function mercat()
  379. {
  380. [$page, $limit] = $this->getPage();
  381. return app('json')->success($this->repository->mercat($page, $limit));
  382. }
  383. /*
  384. *分类下的商家列表
  385. * @author cabbage
  386. * @day 2020/10/30
  387. * */
  388. public function mercatStore(){
  389. [$page, $limit] = $this->getPage();
  390. $data = $this->request->params([
  391. 'order', //人气
  392. 'distance', //距离
  393. 'lat', //经度
  394. 'lng', //纬度
  395. 'user_id'
  396. ]);
  397. $where = $this->request->params([
  398. 'category_id', //商铺分类id
  399. 'keyword', //商铺名称
  400. ]);
  401. return app('json')->success($this->repository->getLst($data,$page,$limit,$where));
  402. // return app('json')->success([]);
  403. }
  404. /**
  405. * @param $id
  406. * @return mixed
  407. * @throws \think\db\exception\DbException
  408. * 店铺置顶
  409. */
  410. public function shop_topping($id)
  411. {
  412. if($id!=0){
  413. $res=Db::name('user')->where('uid',$this->request->uid())->update(['mer_topping'=>$id]);
  414. if($res!==false)
  415. $message='置顶成功';
  416. else
  417. $message='置顶失败';
  418. return app('json')->success($message);
  419. }else{
  420. $res=Db::name('user')->where('uid',$this->request->uid())->update(['mer_topping'=>0]);
  421. if($res!==false)
  422. $message='取消置顶成功';
  423. else
  424. $message='取消置顶失败';
  425. return app('json')->success($message);
  426. }
  427. }
  428. /**
  429. * @param $id
  430. * @return mixed
  431. * @throws \think\db\exception\DbException
  432. * 店铺点赞 or 店铺取消点赞
  433. */
  434. public function shop_fabulous($id)
  435. {
  436. $uid=$this->request->uid();
  437. $user_like=Db::name('store_fabulous')->where('uid',$uid)->where('mer_id',$id)->value('status');
  438. if($user_like=='0'){
  439. $res=Db::name('store_fabulous')->where('uid',$uid)->where('mer_id',$id)->update(['status'=>1]);
  440. if($res!==false)
  441. $message='点赞成功';
  442. else
  443. $message='点赞失败';
  444. }elseif ($user_like=='1'){
  445. $res=Db::name('store_fabulous')->where('uid',$uid)->where('mer_id',$id)->update(['status'=>0]);
  446. if($res!==false)
  447. $message='取消点赞成功';
  448. else
  449. $message='取消点赞失败';
  450. }else{
  451. $inser_data=[
  452. 'uid'=>$uid,
  453. 'mer_id'=>$id,
  454. 'ctime'=>time(),
  455. 'status'=>1
  456. ];
  457. $res=Db::name('store_fabulous')->insert($inser_data);
  458. if($res!==false)
  459. $message='点赞成功';
  460. else
  461. $message='点赞失败';
  462. }
  463. return app('json')->success($message);
  464. }
  465. }