Shop.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\admin\controller;
  13. use app\model\goods\GoodsBrand as GoodsBrandModel;
  14. use app\model\shop\Shop as ShopModel;
  15. use app\model\shop\ShopAccount;
  16. use app\model\shop\ShopCategory as ShopCategoryModel;
  17. use app\model\shop\ShopExport;
  18. use app\model\shop\ShopGroup as ShopGroupModel;
  19. use app\model\member\Member as MemberModel;
  20. use app\model\order\OrderCommon;
  21. use app\model\shop\ShopDeposit;
  22. use app\model\web\WebSite;
  23. use phpoffice\phpexcel\Classes\PHPExcel;
  24. use phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel2007;
  25. /**
  26. * 商家管理 控制器
  27. */
  28. class Shop extends BaseAdmin
  29. {
  30. /******************************* 商家列表及相关操作 ***************************/
  31. /**
  32. * 商家列表
  33. */
  34. public function lists()
  35. {
  36. if (request()->isAjax()) {
  37. $page = input('page', 1);
  38. $page_size = input('page_size', PAGE_LIST_ROWS);
  39. $search_text = input('search_text', '');
  40. $category_id = input('category_id', 0);
  41. $group_id = input('group_id', 0);
  42. $shop_status = input('shop_status', '');
  43. $cert_id = input('cert_id', '');
  44. $is_own = input('is_own', '');
  45. $start_time = input("start_time", '');
  46. $end_time = input("end_time", '');
  47. $condition = [];
  48. if($search_text){
  49. $condition[] = ['site_name', 'like', '%' . $search_text . '%'];
  50. }
  51. //商家分类
  52. if ($category_id != 0) {
  53. $condition[] = ['category_id', '=', $category_id];
  54. }
  55. //店铺等级
  56. if ($group_id != 0) {
  57. $condition[] = ['group_id', '=', $group_id];
  58. }
  59. //商家状态
  60. if ($shop_status != '') {
  61. $condition[] = ['shop_status', '=', $shop_status];
  62. }
  63. if($cert_id){
  64. switch($cert_id){
  65. case 1: //未认证
  66. $condition[] = ['cert_id', '=', 0];
  67. break;
  68. case 2: //已认证
  69. $condition[] = ['cert_id', '>', 0];
  70. break;
  71. }
  72. }
  73. if($is_own != '')
  74. {
  75. $condition[] = ['is_own', '=', $is_own];
  76. }
  77. if(!empty($start_time) && empty($end_time)){
  78. $condition[] = ['expire_time', '>=', strtotime($start_time)];
  79. } elseif (empty($start_time) && !empty($end_time)) {
  80. $condition[] = ["expire_time", "<=", strtotime($end_time)];
  81. } elseif (!empty($start_time) && !empty($end_time)) {
  82. $condition[] = ["expire_time", ">=", strtotime($start_time)];
  83. $condition[] = ["expire_time", "<=", strtotime($end_time)];
  84. }
  85. $order = 'site_id desc';
  86. $field = '*';
  87. $shop_model = new ShopModel();
  88. // 商家名称site_name 商家分类category_name 店铺等级group_name 是否自营is_own 1:是 0:否 商家状态shop_status 1:正常 0:锁定 有效期
  89. return $shop_model->getShopPageList($condition, $page, $page_size, $order, $field);
  90. } else {
  91. //商家主营行业
  92. $shop_category_model = new ShopCategoryModel();
  93. $shop_category_list = $shop_category_model->getCategoryList([], 'category_id, category_name', 'sort asc');
  94. $this->assign('shop_category_list', $shop_category_list['data']);
  95. //商家主营分组
  96. $shop_group_model = new ShopGroupModel();
  97. $shop_group_list = $shop_group_model->getGroupList([['is_own','=',0]], 'group_id,is_own,group_name,fee,remark', 'is_own asc,fee asc');
  98. $this->assign('shop_group_list', $shop_group_list['data']);
  99. $is_addon_city = addon_is_exit('city');
  100. $this->assign('is_addon_city',$is_addon_city);
  101. if($is_addon_city == 1){
  102. $website_model = new WebSite();
  103. $website_list = $website_model->getWebsiteList([],'site_id,site_area_name');
  104. $this->assign('website_list',$website_list['data']);
  105. }
  106. return $this->fetch('shop/lists');
  107. }
  108. }
  109. /**
  110. * 商家详情
  111. */
  112. public function shopDetail()
  113. {
  114. $site_id = input('site_id', 0);
  115. $shop_model = new ShopModel();
  116. //商家信息
  117. $shop_info = $shop_model->getShopInfo([['site_id', '=', $site_id]]);
  118. $this->assign('shop_info', $shop_info);
  119. //认证信息
  120. $cert_info = $shop_model->getShopCert([['site_id', '=', $site_id]]);
  121. $this->assign('cert_info', $cert_info);
  122. return $this->fetch('shop/shop_detail');
  123. }
  124. /**
  125. * 商家添加
  126. */
  127. public function addShop()
  128. {
  129. if (request()->isAjax()) {
  130. //店铺信息
  131. $shop_data = [
  132. 'site_name' => input('site_name', ''),//店铺名称
  133. 'category_id' => input('category_id', 0),//分类id
  134. 'category_name' => input('category_name', ''),//分类名称
  135. 'brand_id' => input('brand_id', 0),//品牌id
  136. 'brand_name' => input('brand_name', ''),//品牌名称
  137. 'group_id' => input('group_id', 0),//组id
  138. 'group_name' => input('group_name', ''),//组名称
  139. 'is_own' => input('is_own', 0),//是否自营
  140. 'member_id' => input('member_id', 0),//关联会员 用于前台登陆和相关商家操作
  141. 'year' => input('year', 0),//入驻时长 1 2 3 4 5 下拉选择
  142. ];
  143. //认证信息
  144. $cert_data = [
  145. /* 申请类型 */
  146. 'cert_type' => input('cert_type', 1),//申请类型1.个人店铺 2.企业店铺
  147. /* 公司信息 只有公司类型有 */
  148. 'company_name' => input('company_name', ''),//公司名称
  149. 'company_province_id' => input('company_province_id', ''),//公司所在省
  150. 'company_city_id' => input('company_city_id', ''),//公司所在市
  151. 'company_district_id' => input('company_district_id', ''),//公司所在区/县
  152. 'company_address' => input('company_address', ''),//公司地址
  153. 'company_full_address' => input('company_full_address', ''),//公司完整地址
  154. /* 联系人手机号身份证 公司、个人类型都有 */
  155. 'contacts_name' => input('contacts_name', ''),//联系人姓名
  156. 'contacts_mobile' => input('contacts_mobile', ''),//联系人手机
  157. 'contacts_card_no' => input('contacts_card_no', ''),//联系人身份证
  158. 'contacts_card_electronic_1' => input('contacts_card_electronic_1', ''),//申请人手持身份证电子版
  159. 'contacts_card_electronic_2' => input('contacts_card_electronic_2', ''),//申请人身份证正面
  160. 'contacts_card_electronic_3' => input('contacts_card_electronic_3', ''),//申请人身份证反面
  161. /* 营业执照 税务 只有公司类型有 */
  162. 'business_licence_number' => input('business_licence_number', ''),//统一社会信用码 input
  163. 'business_licence_number_electronic' => input('business_licence_number_electronic', ''),//营业执照电子版
  164. 'business_sphere' => input('business_sphere', ''),//法定经营范围 textarea
  165. 'tax_registration_certificate' => input('tax_registration_certificate', ''),//税务登记证号
  166. 'tax_registration_certificate_electronic' => input('tax_registration_certificate_electronic', ''),//税务登记证号电子版
  167. /* 对公账户信息 只有公司类型有 */
  168. 'bank_account_name' => input('bank_account_name', ''),//银行开户名
  169. 'bank_account_number' => input('bank_account_number', ''),//公司银行账号
  170. 'bank_name' => input('bank_name', ''),//开户银行支行名称
  171. 'bank_address' => input('bank_address', ''),//开户银行所在地 用三级地址选择省市区 传递拼在一起的名字 如山西省太原市小店区
  172. /* 结算信息 公司、个人类型都有 */
  173. 'bank_type' => input('bank_type', 1),//结算账户类型 1银行卡 2 支付宝
  174. 'settlement_bank_account_name' => input('settlement_bank_account_name', 0),//结算银行开户名
  175. 'settlement_bank_account_number' => input('settlement_bank_account_number', 0),//结算公司银行账号
  176. 'settlement_bank_name' => input('settlement_bank_name', 0),//结算开户银行支行名称
  177. 'settlement_bank_address' => input('settlement_bank_address', 0),//结算开户银行所在地 用三级地址选择省市区 传递拼在一起的名字 如山西省太原市小店区
  178. ];
  179. //个人信息
  180. $user_info = [
  181. 'username' => input('username', ''),
  182. 'password' => data_md5(input('password', '')),
  183. ];
  184. $shop_model = new ShopModel();
  185. $this->addLog("添加商家:" . $shop_data['site_name']);
  186. return $shop_model->addShop($shop_data, $cert_data, $user_info);
  187. } else {
  188. //商家主营行业
  189. $shop_category_model = new ShopCategoryModel();
  190. $shop_category_list = $shop_category_model->getCategoryList([], 'category_id, category_name', 'sort asc');
  191. $this->assign('shop_category_list', $shop_category_list['data']);
  192. //商品品牌
  193. $goods_brand_model = new GoodsBrandModel();
  194. $brand_list = $goods_brand_model->getBrandList([ [ 'site_id', 'in', ("0,$this->site_id") ] ], "brand_id, brand_name");
  195. $brand_list = $brand_list['data'];
  196. $this->assign("brand_list", $brand_list);
  197. //商家主营行业
  198. $shop_group_model = new ShopGroupModel();
  199. $shop_group_list = $shop_group_model->getGroupList([['is_own','=',0]], 'group_id,is_own,group_name,fee,remark', 'is_own asc,fee asc');
  200. $this->assign('shop_group_list', $shop_group_list['data']);
  201. //商家自营等级
  202. $shop_own_group = $shop_group_model->getGroupList([['is_own','=',1]], 'group_id,is_own,group_name,fee,remark', 'fee asc');
  203. $this->assign('shop_own_group', $shop_own_group['data']);
  204. return $this->fetch('shop/add_shop');
  205. }
  206. }
  207. /**
  208. * 基本信息
  209. */
  210. public function basicInfo()
  211. {
  212. $shop_model = new ShopModel();
  213. if (request()->isAjax()) {
  214. $site_id = input('site_id', 0);
  215. $data = [
  216. 'site_name' => input('site_name', ''),//商家名称
  217. 'expire_time' => input('expire_time') ? strtotime(input('expire_time')) : 0,//到期时间(0表示无限期)
  218. //待定
  219. 'is_own' => input('is_own', 0),//是否自营
  220. 'category_id' => input('category_id', 0),//店铺分类id
  221. 'category_name' => input('category_name', ''),//店铺类别名称
  222. //待定
  223. 'group_id' => input('group_id', 0),//分组id
  224. 'group_name' => input('group_name', ''),//分组名称
  225. 'member_id' => input('member_id', 0),//关联前台会员id
  226. 'shop_status' => input('shop_status', ''),//店铺经营状态(0.关闭,1正常)
  227. 'sort' => input('sort', 0),//排序号
  228. 'logo' => input('logo', ''),//店铺logo
  229. 'avatar' => input('avatar', ''),//店铺头像(大图)
  230. 'banner' => input('banner', ''),//店铺条幅
  231. 'seo_keywords' => input('seo_keywords', ''),//店铺关键字
  232. 'seo_description' => input('seo_description', ''),//店铺简介
  233. 'telephone' => input('telephone', ''),//联系电话
  234. 'is_recommend' => input('is_recommend', 0),//是否推荐 1是 0否
  235. 'shop_qtian' => input('shop_qtian', 0),//七天退货 1是 0否
  236. 'shop_zhping' => input('shop_zhping', 0),//正品保障 1是 0否
  237. 'shop_erxiaoshi' => input('shop_erxiaoshi', 0),//两小时发货 1是 0否
  238. 'shop_tuihuo' => input('shop_tuihuo', 0),//退货承诺 1是 0否
  239. 'shop_shiyong' => input('shop_shiyong', 0),//试用中心 1是 0否
  240. 'shop_shiti' => input('shop_shiti', 0),//实体验证 1是 0否
  241. 'shop_xiaoxie' => input('shop_xiaoxie', 0),//消协保证 1是 0否
  242. ];
  243. return $shop_model->editShop($data, [['site_id', '=', $site_id]]);
  244. } else {
  245. //商家信息
  246. $site_id = input('site_id', 22);
  247. $shop_info = $shop_model->getShopInfo([['site_id', '=', $site_id]]);
  248. $this->assign('shop_info', $shop_info['data']);
  249. //关联前台会员信息
  250. if (!empty($shop_info['data']['member_id'])) {
  251. $member_id = $shop_info['data']['member_id'];
  252. $member_model = new MemberModel();
  253. $member_info = $member_model->getMemberInfo([['member_id', '=', $member_id]]);
  254. $this->assign('member_info', $member_info['data']);
  255. }
  256. //商家主营行业
  257. $shop_category_model = new ShopCategoryModel();
  258. $shop_category_list = $shop_category_model->getCategoryList([], 'category_id, category_name', 'sort asc');
  259. $this->assign('shop_category_list', $shop_category_list['data']);
  260. //商家开店套餐(非自营)
  261. $shop_group_model = new ShopGroupModel();
  262. $shop_group_list = $shop_group_model->getGroupList([['is_own','=',0]], 'group_id,is_own,group_name,fee,remark', 'is_own asc,fee asc');
  263. $this->assign('shop_group_list', $shop_group_list['data']);
  264. //商家开店套餐(自营)
  265. $shop_group_model = new ShopGroupModel();
  266. $shop_own_group_list = $shop_group_model->getGroupList([['is_own','=',1]], 'group_id,is_own,group_name,fee,remark', 'is_own asc,fee asc');
  267. $this->assign('shop_own_group_list', $shop_own_group_list['data']);
  268. //四级菜单
  269. $this->forthMenu(['site_id' => $site_id]);
  270. return $this->fetch('shop/basic_info');
  271. }
  272. }
  273. /**
  274. * 认证信息
  275. */
  276. public function certInfo()
  277. {
  278. $shop_model = new ShopModel();
  279. if (request()->isAjax()) {
  280. $site_id = input('site_id', 0);
  281. //认证信息
  282. $data = [
  283. /* 公司信息 只有公司类型有 */
  284. 'company_name' => input('company_name', ''),//公司名称
  285. 'company_province_id' => input('company_province_id', 0),//公司所在省
  286. 'company_city_id' => input('company_city_id', 0),//公司所在市
  287. 'company_district_id' => input('company_district_id', 0),//公司所在区/县
  288. 'company_address' => input('company_address', ''),//公司地址
  289. /* 联系人手机号身份证 公司、个人类型都有 */
  290. 'contacts_name' => input('contacts_name', ''),//联系人姓名
  291. 'contacts_mobile' => input('contacts_mobile', ''),//联系人手机
  292. 'contacts_card_no' => input('contacts_card_no', ''),//联系人身份证
  293. 'contacts_card_electronic_1' => input('contacts_card_electronic_1', ''),//申请人手持身份证电子版
  294. 'contacts_card_electronic_2' => input('contacts_card_electronic_2', ''),//申请人身份证正面
  295. 'contacts_card_electronic_3' => input('contacts_card_electronic_3', ''),//申请人身份证反面
  296. /* 营业执照 税务 只有公司类型有 */
  297. 'business_licence_number' => input('business_licence_number', ''),//统一社会信用码 input
  298. 'business_licence_number_electronic' => input('business_licence_number_electronic', ''),//营业执照电子版
  299. 'business_sphere' => input('business_sphere', ''),//法定经营范围 textarea
  300. 'tax_registration_certificate' => input('tax_registration_certificate', ''),//税务登记证号
  301. 'tax_registration_certificate_electronic' => input('tax_registration_certificate_electronic', ''),//税务登记证号电子版
  302. /* 对公账户信息 只有公司类型有 */
  303. 'bank_account_name' => input('bank_account_name', ''),//银行开户名
  304. 'bank_account_number' => input('bank_account_number', ''),//公司银行账号
  305. 'bank_name' => input('bank_name', ''),//开户银行支行名称
  306. 'bank_address' => input('bank_address', ''),//开户银行所在地 用三级地址选择省市区 传递拼在一起的名字 如山西省太原市小店区
  307. ];
  308. return $shop_model->editShopCert($data, [['site_id', '=', $site_id]]);
  309. } else {
  310. $site_id = input('site_id', 0);
  311. $cert_info = $shop_model->getShopCert([['site_id', '=', $site_id]]);
  312. $this->assign('cert_info', $cert_info['data']);
  313. //四级菜单
  314. $this->forthMenu(['site_id' => $site_id]);
  315. return $this->fetch('shop/cert_info');
  316. }
  317. }
  318. /**
  319. * 结算信息
  320. */
  321. public function settlementInfo()
  322. {
  323. $shop_model = new ShopModel();
  324. if (request()->isAjax()) {
  325. $site_id = input('site_id', 0);
  326. //结算账户信息
  327. $cert_data = [
  328. /* 结算信息 公司、个人类型都有 */
  329. 'bank_type' => input('bank_type', 0),//结算账户类型 1银行卡 2 支付宝
  330. 'settlement_bank_name' => input('settlement_bank_name', 0),//结算开户银行支行名称
  331. 'settlement_bank_address' => input('settlement_bank_address', 0),//结算开户银行所在地 用三级地址选择省市区 传递拼在一起的名字 如山西省太原市小店区
  332. ];
  333. $cert_data['settlement_bank_account_name'] = input('settlement_bank_account_name', 0);//结算银行开户名
  334. $cert_data['settlement_bank_account_number'] = input('settlement_bank_account_number', 0);//结算公司银行账号
  335. return $shop_model->editShopCert($cert_data, [['site_id', '=', $site_id]]);
  336. } else {
  337. $site_id = input('site_id', 0);
  338. //获取商家结算账户信息
  339. $cert_info = $shop_model->getShopCert([['site_id', '=', $site_id]]);
  340. $this->assign('cert_info', $cert_info['data']);
  341. //四级菜单
  342. $this->forthMenu(['site_id' => $site_id]);
  343. return $this->fetch('shop/settlement_info');
  344. }
  345. }
  346. /**
  347. * 账户信息
  348. */
  349. public function accountInfo()
  350. {
  351. $site_id = input('site_id', 0);
  352. //四级菜单
  353. $this->forthMenu(['site_id' => $site_id]);
  354. $shop_model = new ShopModel();
  355. $condition = [
  356. ['site_id', '=', $site_id]
  357. ];
  358. $account_info = $shop_model->getShopInfo($condition);
  359. $account = $account_info['data']['account'] - $account_info['data']['account_withdraw_apply'];
  360. $this->assign('account',number_format($account,2, '.' , ''));
  361. $this->assign('account_info', $account_info['data']);
  362. $this->assign('order_calc', 0);//待结算
  363. return $this->fetch('shop/account_info');
  364. }
  365. /**
  366. * 获取待结算列表
  367. */
  368. public function getOrderCalc()
  369. {
  370. if (request()->isAjax()) {
  371. $order_common = new OrderCommon();
  372. $site_id = input('site_id', 0);
  373. $page = input('page', 1);
  374. $page_size = input('page_size', PAGE_LIST_ROWS);
  375. $order = input("order", "create_time desc");
  376. $is_refund = input("is_refund", '');
  377. $order_no = input("order_no", '');
  378. $condition = array(
  379. ['site_id', "=", $site_id],
  380. ['is_settlement', "=", 0],
  381. ['order_status', "not in", '0,-1'],
  382. );
  383. if($order_no){
  384. $condition[] = ['order_no', 'like', '%'. $order_no .'%'];
  385. }
  386. if ($is_refund !== '') {
  387. $condition[] = ['refund_status', '=', $is_refund];
  388. }
  389. $list = $order_common->getOrderPageList($condition, $page, $page_size, $order, $field = 'order_id,order_no,order_type_name,order_status_name,order_money,shop_money,platform_money,is_settlement,create_time,refund_status,order_type');
  390. return $list;
  391. }
  392. }
  393. /**
  394. * 获取账户流水
  395. */
  396. public function getShopAccount()
  397. {
  398. if (request()->isAjax()) {
  399. $site_id = input('site_id', 0);
  400. $account_model = new ShopAccount();
  401. $page = input('page', 1);
  402. $page_size = input('page_size', PAGE_LIST_ROWS);
  403. $condition[] = ['site_id','=',$site_id];
  404. $type = input('type','');//收支类型(1收入 2支出)
  405. if(!empty($type)){
  406. switch($type){
  407. case 1:
  408. $condition[] = ['account_data','>',0];
  409. break;
  410. case 2:
  411. $condition[] = ['account_data','<',0];
  412. break;
  413. }
  414. }
  415. $start_time = input('start_time','');
  416. $end_time = input('end_time','');
  417. if(!empty($start_time) && empty($end_time)){
  418. $condition[] = ['create_time','>=',$start_time];
  419. }elseif(empty($start_time) && !empty($end_time)){
  420. $condition[] = ['create_time','<=',$end_time];
  421. }elseif(!empty($start_time) && !empty($end_time)){
  422. $condition[] = ['create_time','between',[$start_time,$end_time]];
  423. }
  424. return $account_model->getAccountPageList($condition,$page,$page_size,'id desc');
  425. }
  426. }
  427. /**
  428. * 获取提现记录
  429. */
  430. public function getShopWithdraw()
  431. {
  432. if (request()->isAjax()) {
  433. $site_id = input('site_id', 0);
  434. $account_model = new ShopAccount();
  435. $page = input('page', 1);
  436. $page_size = input('page_size', PAGE_LIST_ROWS);
  437. $order = input("order", "id desc");
  438. $search_text = input("search_text", "");
  439. $condition = array(
  440. ['site_id', "=", $site_id],
  441. );
  442. if (!empty($search_text)) {
  443. $condition[] = ['withdraw_no|settlement_bank_account_name|mobile', 'like', '%' . $search_text . '%'];
  444. }
  445. $list = $account_model->getShopWithdrawPageList($condition, $page, $page_size, $order);
  446. return $list;
  447. }
  448. }
  449. /**
  450. * 获取保证金记录
  451. */
  452. public function getShopDeposit()
  453. {
  454. if (request()->isAjax()) {
  455. $shop_deposit_model = new ShopDeposit();
  456. $site_id = input('site_id', 0);
  457. $page = input('page', 1);
  458. $page_size = input('page_size', PAGE_LIST_ROWS);
  459. $order = input("order", "id desc");
  460. $search_text = input("search_text", "");
  461. $condition = array(
  462. ['site_id', "=", $site_id],
  463. );
  464. if (!empty($search_text)) {
  465. $condition[] = ['pay_no|pay_account_name', 'like', '%' . $search_text . '%'];
  466. }
  467. $list = $shop_deposit_model->getShopDepositPageList($condition, $page, $page_size, $order);
  468. return $list;
  469. }
  470. }
  471. /**
  472. * 商家锁定
  473. */
  474. public function lockShop()
  475. {
  476. }
  477. /**
  478. * 商家解锁
  479. */
  480. public function unlockShop()
  481. {
  482. }
  483. /**
  484. * 商家导出
  485. */
  486. public function exportShop()
  487. {
  488. $search_text = input('search_text', '');
  489. $category_id = input('category_id', 0);
  490. $group_id = input('group_id', 0);
  491. $shop_status = input('shop_status', '');
  492. $condition = [];
  493. if ($search_text) {
  494. $condition[] = ['site_name', 'like', '%' . $search_text . '%'];
  495. }
  496. //商家分类
  497. if ($category_id != 0) {
  498. $condition[] = ['category_id', '=', $category_id];
  499. }
  500. //店铺等级
  501. if ($group_id != 0) {
  502. $condition[] = ['group_id', '=', $group_id];
  503. }
  504. //商家状态
  505. if ($shop_status != '') {
  506. $condition[] = ['shop_status', '=', $shop_status];
  507. }
  508. $order = 's.site_id desc';
  509. $shop_model = new ShopModel();
  510. $shop = $shop_model->getShopCertList($condition, $order);
  511. $header_arr = array(
  512. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
  513. 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ',
  514. 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ',
  515. );
  516. $shop_export_model = new ShopExport();
  517. //导出所有字段
  518. $field = array_merge($shop_export_model->shop_field, $shop_export_model->shop_cert_field);
  519. //接收需要展示的字段
  520. $input_field = input('field', implode(',',array_keys($field)));
  521. $input_field = explode(',', $input_field);
  522. //处理数据
  523. if (!empty($shop['data'])) {
  524. $shop_list = $shop_export_model->handleData($shop['data'], $input_field);
  525. }
  526. $count = count($input_field);
  527. // 实例化excel
  528. $phpExcel = new \PHPExcel();
  529. $phpExcel->getProperties()->setTitle("店铺信息");
  530. $phpExcel->getProperties()->setSubject("店铺信息");
  531. //单独添加列名称
  532. $phpExcel->setActiveSheetIndex(0);
  533. for ($i = 0; $i < $count; $i++) {
  534. $phpExcel->getActiveSheet()->setCellValue($header_arr[$i] . '1', $field[$input_field[$i]]);
  535. }
  536. if (!empty($shop_list)) {
  537. foreach ($shop_list as $k => $v) {
  538. $start = $k + 2;
  539. for ($i = 0; $i < $count; $i++) {
  540. $phpExcel->getActiveSheet()->setCellValue($header_arr[$i] . $start, $v[$input_field[$i]]);
  541. }
  542. }
  543. }
  544. // 重命名工作sheet
  545. $phpExcel->getActiveSheet()->setTitle('店铺信息');
  546. // 设置第一个sheet为工作的sheet
  547. $phpExcel->setActiveSheetIndex(0);
  548. // 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx
  549. $objWriter = \PHPExcel_IOFactory::createWriter($phpExcel, 'Excel2007');
  550. $file = date('Y年m月d日-店铺信息表', time()) . '.xlsx';
  551. $objWriter->save($file);
  552. header("Content-type:application/octet-stream");
  553. $filename = basename($file);
  554. header("Content-Disposition:attachment;filename = " . $filename);
  555. header("Accept-ranges:bytes");
  556. header("Accept-length:" . filesize($file));
  557. readfile($file);
  558. unlink($file);
  559. exit;
  560. }
  561. /**
  562. * 导出字段
  563. * @return array
  564. */
  565. public function getPrintingField()
  566. {
  567. $model = new ShopExport();
  568. $field = array_merge($model->shop_field, $model->shop_cert_field);
  569. return success('1', '', $field);
  570. }
  571. }