You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

666 regels
21 KiB

  1. <?php
  2. /**
  3. * Function Description:${CARET}
  4. * Function Name: FxUserService
  5. * ${PARAM_DOC}
  6. *
  7. * @return ${TYPE_HINT}
  8. * ${THROWS_DOC}
  9. *
  10. * @author 娄梦宁
  11. */
  12. namespace admin\service\prod;
  13. use common\models\BaseCategory;
  14. use common\models\CmsCategory;
  15. use common\models\CmsCategoryExtra;
  16. use common\models\CmsCategoryProd;
  17. use common\models\ProdCategory;
  18. use common\models\ProdMain;
  19. use common\models\SysItinerary;
  20. use common\service\admin\LoginService;
  21. use common\util\UploadPic;
  22. use common\util\Util;
  23. use Yii;
  24. class ProdService
  25. {
  26. /*
  27. * 产品列表
  28. */
  29. public function getProdList($param)
  30. {
  31. $prod_category = new ProdCategory();
  32. $prod_main = new ProdMain();
  33. $prod_info = $prod_category->AdminGetList($param);
  34. $prod_list = $prod_info['list'];
  35. foreach ($prod_list as $key => $val) {
  36. $prod_list[$key]['price_name'] = $prod_main->getProdArr($val['pro_cate_id']);
  37. $s_time = $prod_list[$key]['close_sale_time'];
  38. if ($s_time == '') $s_time = '24';
  39. if ($s_time > 0) {
  40. $s_day = 0;
  41. $s_hour = $s_time;
  42. } else if ($s_time == 0) {
  43. $s_day = 1;
  44. $s_hour = 24;
  45. } else {
  46. $s_day = floor(abs($s_time) / 24) + 1;
  47. $s_hour = abs(abs($s_time) - $s_day * 24);
  48. }
  49. $prod_list[$key]['sale_day'] = (string)$s_day;
  50. $prod_list[$key]['sale_hour'] = (string)$s_hour;
  51. }
  52. $page_size = $param['page_size'];
  53. $total_count = $prod_info['count'];
  54. $total_pages = ceil($total_count / $page_size);
  55. $result = [
  56. 'prod_list' => $prod_list,
  57. 'page' => [
  58. 'current_page' => (string)$param['current_page'],
  59. 'total_pages' => (string)$total_pages,
  60. 'page_size' => (string)$page_size,
  61. 'total_count' => (string)$total_count,
  62. ]
  63. ];
  64. $base_category = new BaseCategory();
  65. $baseCategoryList = $base_category->getBaseCategoryList();
  66. $result['baseCategoryList'] = $baseCategoryList;
  67. return Util::returnArrSu('', $result);
  68. }
  69. /**
  70. * Function Description:新增产品
  71. * Function Name: AddProd
  72. * @param $param
  73. *
  74. * @return array
  75. *
  76. * @author 付泓程
  77. */
  78. public function AddProd($param)
  79. {
  80. $checkParam = $this->checkParam($param);
  81. if (!$checkParam) {
  82. return Util::returnArrEr('参数错误');
  83. }
  84. $prod_category = new ProdCategory();
  85. $prod_main = new ProdMain();
  86. $transaction = Yii::$app->db->beginTransaction();
  87. //产品主表信息插入
  88. $istProdCategory = $prod_category->addProd($param);
  89. //获取刚插入数据库的产品id
  90. $param['prod_cate_id'] = $prod_category->pro_cate_id;
  91. if ($istProdCategory) {
  92. //插入子产品表
  93. $istProdMain = $prod_main->addProdMain($param);
  94. if ($istProdMain) {
  95. //修改首页展示价格为子产品最低价
  96. $prod_category->changeShowPrice($param['prod_cate_id']);
  97. $transaction->commit();
  98. //记录新增产品日志
  99. Util::addOperationLog('添加产品', '新增产品成功', LoginService::$uid, 1, $param['prod_cate_id'], 1);
  100. return Util::returnArrSu('新增产品成功');
  101. }
  102. }
  103. $transaction->rollBack();
  104. return Util::returnArrEr('新增产品失败');
  105. }
  106. //修改原价
  107. public function UptOriginalPrice($param)
  108. {
  109. $prod_category = new ProdCategory();
  110. $upt = $prod_category->updateOriginalPrice($param);
  111. if ($upt === false) {
  112. return Util::returnJsEr('修改原价失败');
  113. }
  114. //记录日志
  115. Util::addOperationLog('修改原价', '修改原价成功', LoginService::$uid, 1, $param['pro_cate_id'], 1);
  116. return Util::returnArrSu('修改原价成功');
  117. }
  118. //修改展示价格
  119. public function UptShowPrice($param)
  120. {
  121. $prod_category = new ProdCategory();
  122. $upt = $prod_category->updateShowPrice($param);
  123. if ($upt === false) {
  124. return Util::returnJsEr('修改展示价失败');
  125. }
  126. //记录日志
  127. Util::addOperationLog('修改展示价', '修改展示价成功', LoginService::$uid, 1, $param['pro_cate_id'], 1);
  128. return Util::returnArrSu('修改展示价成功');
  129. }
  130. /**
  131. * Function Description:修改产品信息
  132. * Function Name: UptProd
  133. * @param $param
  134. *
  135. * @return array
  136. *
  137. * @author 付泓程
  138. */
  139. public function UptProd($param)
  140. {
  141. $checkParam = $this->checkParam($param);
  142. if (!$checkParam) {
  143. return Util::returnArrEr('参数错误');
  144. }
  145. $prod_category = new ProdCategory();
  146. $prod_main = new ProdMain();
  147. $transaction = Yii::$app->db->beginTransaction();
  148. //主表数据更新
  149. $uptProd = $prod_category->uptAdminProd($param);
  150. if ($uptProd === false) {
  151. $transaction->rollBack();
  152. return Util::returnArrEr('修改失败');
  153. }
  154. //修改子产品表
  155. $pro_main_id_arr = $prod_main->getIdArr($param['pro_cate_id']);
  156. $arrCheck = [];
  157. foreach ($param['price_type'] as $val) {
  158. $arrCheck[] = $val['prod_id'];
  159. $uptProdMain = $prod_main->uptCmsProd($val, $param['pro_cate_id']);
  160. if ($uptProdMain === false) {
  161. $transaction->rollBack();
  162. return Util::returnArrEr('修改失败');
  163. }
  164. }
  165. foreach ($pro_main_id_arr as $key => $val) {
  166. if (!in_array($key, $arrCheck)) {
  167. $delCount = $prod_main->delCount($key);
  168. if ($delCount === false) {
  169. $transaction->rollBack();
  170. return Util::returnArrEr('修改失败');
  171. }
  172. }
  173. }
  174. $prod_category->changeShowPrice($param['pro_cate_id']);
  175. $transaction->commit();
  176. //记录日志
  177. Util::addOperationLog('修改产品信息', '修改产品信息成功', LoginService::$uid, 1, $param['pro_cate_id'], 1);
  178. return Util::returnArrSu('');
  179. }
  180. /*
  181. * 自定义佣金按pro_cate_id
  182. */
  183. public function DefineCommission($pro_cate_id, $commission)
  184. {
  185. $transaction = Yii::$app->db->beginTransaction();
  186. $prod_category = new ProdCategory();
  187. $result = $prod_category->DefineCommission($pro_cate_id, $commission);
  188. if ($result === false) {
  189. $transaction->rollBack();
  190. return Util::returnArrEr('自定义佣金失败,请联系相关技术人员');
  191. }
  192. $prod_main = new ProdMain();
  193. $param = ["prod_cate_id" => $pro_cate_id, "commission" => $commission];
  194. $result = $prod_main->setProdCommissionByCateId($param);
  195. if ($result === false) {
  196. $transaction->rollBack();
  197. return Util::returnArrEr('自定义佣金失败,请联系相关技术人员');
  198. }
  199. $transaction->commit();
  200. //记录日志
  201. Util::addOperationLog('按产品设置佣金', '自定义佣金成功', LoginService::$uid, 1, $pro_cate_id, 1);
  202. return Util::returnArrSu('自定义佣金成功,pro_cate_id修改');
  203. }
  204. /*
  205. * 自定义佣金 按prod_id
  206. */
  207. public function DefineCommissionByProdId($param)
  208. {
  209. $prod_commission_arr = json_decode($param['prod_commission_arr'], true); //[{prod_id:x,commission:x}];
  210. $prod_main = new ProdMain();
  211. $transaction = Yii::$app->db->beginTransaction();
  212. $prod_id = '';
  213. foreach ($prod_commission_arr as $k => $v) {
  214. $prod_id = $v['prod_id'];
  215. $param = ["prod_id" => $v['prod_id'], "commission" => $v['commission']];
  216. $result = $prod_main->setProdCommissionByProdId($param);
  217. if ($result === false) {
  218. $transaction->rollBack();
  219. return Util::returnArrEr();
  220. }
  221. }
  222. $transaction->commit();
  223. //记录日志
  224. $getInfo = $prod_main::findOne($prod_id);
  225. Util::addOperationLog('按票种设置佣金', '自定义佣金成功', LoginService::$uid, 1, $getInfo['prod_cate_id'], 1);
  226. return Util::returnArrSu();
  227. }
  228. /*
  229. * 产品图片上传
  230. */
  231. public function uploadImg($file)
  232. {
  233. $time = time() . rand(1000, 9999);
  234. $upDir = ROOT_PATH . '/web/admin/images/prodImg/' . $time . '.jpg';
  235. $config = Util::getSiteConfig();
  236. $url = $config['host_name'] . '/web/admin/images/prodImg/' . $time . '.jpg';
  237. $img_url = UploadPic::_UPLOADPIC($file, 100000, $upDir);
  238. if ($img_url['flag'] == true) {
  239. if (file_exists($upDir) == false) {
  240. return Util::returnArrEr("$upDir");
  241. }
  242. UploadPic::cutPic($upDir, $img_url['data']['url'] . '.min.jpg');//生成小图 从中间剪切
  243. if (file_exists($img_url['data']['url'] . '.min.jpg') == false) {
  244. return Util::returnArrEr('上传失败[10001]');
  245. }
  246. UploadPic::cutPic($upDir, $img_url['data']['url'] . '.370x326.jpg','370','326');//生成小图 从中间剪切
  247. return Util::returnArrSu('', ['url' => $url]);
  248. }
  249. $msg = empty($img_url['msg']) ? '上传失败[10003]' : $img_url['msg'];
  250. return Util::returnArrEr($msg);
  251. }
  252. /*
  253. * 产品图片上传
  254. */
  255. public function uploadImgForAdmin($file)
  256. {
  257. $time = time() . rand(1000, 9999);
  258. $upDir = ROOT_PATH . '/web/admin/images/prodImg/' . $time . '.jpg';
  259. $config = Util::getSiteConfig();
  260. $url = $config['host_name'] . '/web/admin/images/prodImg/' . $time . '.jpg';
  261. $img_url = UploadPic::_UPLOADPIC($file, 100000, $upDir);
  262. if ($img_url['flag'] == true) {
  263. if (file_exists($upDir) == false) {
  264. return Util::returnArrEr("$upDir");
  265. }
  266. UploadPic::cutPic($upDir, $img_url['data']['url'] . '.min.jpg','105','75');//生成小图 从中间剪切
  267. if (file_exists($img_url['data']['url'] . '.min.jpg') == false) {
  268. return Util::returnArrEr('上传失败[10001]');
  269. }
  270. return Util::returnArrSu('', ['url' => $url]);
  271. }
  272. $msg = empty($img_url['msg']) ? '上传失败[10003]' : $img_url['msg'];
  273. return Util::returnArrEr($msg);
  274. }
  275. /*
  276. * 新增产品分类
  277. */
  278. public function addProdCategory($param)
  279. {
  280. $cms_category = new CmsCategory();
  281. $result = $cms_category->addProdCategory($param);
  282. if ($result) {
  283. Util::addOperationLog('产品分类-新增分类', '新增分类:'.$param['prod_name'], LoginService::$uid, 1);//添加日志
  284. return Util::returnArrSu();
  285. } else {
  286. return Util::returnArrEr();
  287. }
  288. }
  289. /*
  290. * 获取分类列表
  291. */
  292. public function getProdCategoryList($param)
  293. {
  294. $cms_category = new CmsCategory();
  295. $cms_info = $cms_category->getProdCategoryList($param);
  296. $page_size = $param['page_size'];
  297. $total_count = $cms_info['count'];
  298. $total_pages = ceil($total_count / $page_size);
  299. $result = [
  300. 'category_list' => $cms_info['list'],
  301. 'page' => [
  302. 'current_page' => (string)$param['current_page'],
  303. 'total_pages' => (string)$total_pages,
  304. 'page_size' => (string)$page_size,
  305. 'total_count' => (string)$total_count
  306. ]
  307. ];
  308. return Util::returnArrSu('', $result);
  309. }
  310. /*
  311. * 删除产品分类
  312. */
  313. public function delProdCategory($param)
  314. {
  315. $cms_category = new CmsCategory();
  316. $cateInfo = $cms_category::findOne($param['cms_category_id']);
  317. $result = $cms_category->delProdCategory($param);
  318. if ($result) {
  319. Util::addOperationLog('产品分类-删除分类', '删除分类:' . $cateInfo['category_name'], LoginService::$uid, 1);
  320. return Util::returnArrSu();
  321. } else {
  322. return Util::returnArrEr();
  323. }
  324. }
  325. /*
  326. * 修改产品排序
  327. */
  328. public function changeShowsort($param)
  329. {
  330. $cms_category = new CmsCategory();
  331. $result = $cms_category->changeShowsort($param);
  332. if ($result) {
  333. Util::addOperationLog('修改分类排序', '修改分类排序'.$param['cms_category_id'], LoginService::$uid, 1);//添加日志
  334. return Util::returnArrSu();
  335. } else {
  336. return Util::returnArrEr();
  337. }
  338. }
  339. /*
  340. * 获取产品分类标题
  341. */
  342. public function getCategoryTitle($system_id)
  343. {
  344. $cms_category = new CmsCategory();
  345. $result = $cms_category->getCategoryTitle($system_id);
  346. return Util::returnArrSu('', $result);
  347. }
  348. /**
  349. * Function Description:新增产品
  350. * Function Name: checkParam
  351. * @param $param
  352. *
  353. * @return bool
  354. *
  355. * @author 付泓程
  356. */
  357. public function checkParam($param)
  358. {
  359. if (Util::checkPattern('intVal', $param['category_id']) == false) {
  360. return false;
  361. } elseif ($param['pro_cate_name'] == '') {
  362. return false;
  363. }
  364. return true;
  365. }
  366. /*
  367. * 获取子系统的产品列表
  368. */
  369. public function getChildProdList($param)
  370. {
  371. $cms_category_prod = new CmsCategoryProd();
  372. $list_info = $cms_category_prod->getChildProdList($param);
  373. $page_size = $param['page_size'];
  374. $total_count = $list_info['count'];
  375. $total_pages = ceil($total_count / $page_size);
  376. $result = [
  377. 'prod_list' => $list_info['list'],
  378. 'page' => [
  379. 'current_page' => (string)$param['current_page'],
  380. 'total_pages' => (string)$total_pages,
  381. 'page_size' => (string)$page_size,
  382. 'total_count' => (string)$total_count
  383. ]
  384. ];
  385. return Util::returnArrSu('', $result);
  386. }
  387. /*
  388. * 获取主产品列表
  389. */
  390. public function getMainProdList($param)
  391. {
  392. $cms_category_prod = new ProdCategory();
  393. $main_list_info = $cms_category_prod->getMainProdList($param);
  394. $base_category = new BaseCategory();
  395. $baseCategoryList = $base_category->getBaseCategoryList();
  396. $page_size = $param['page_size'];
  397. $total_count = $main_list_info['count'];
  398. $total_pages = ceil($total_count / $page_size);
  399. $result = [
  400. 'base_category_list' => $baseCategoryList,
  401. 'prod_list' => $main_list_info['list'],
  402. 'page' => [
  403. 'current_page' => (string)$param['current_page'],
  404. 'total_pages' => (string)$total_pages,
  405. 'page_size' => (string)$page_size,
  406. 'total_count' => (string)$total_count
  407. ]
  408. ];
  409. return Util::returnArrSu('', $result);
  410. }
  411. /*
  412. * 选择产品
  413. */
  414. public function selectProd($param)
  415. {
  416. $cms_category_prod = new CmsCategoryProd();
  417. $result = $cms_category_prod->selectProd($param);
  418. if ($result) {
  419. $cms_category = new CmsCategory();
  420. $info = $cms_category::findOne($param['cms_cate_id']);
  421. Util::addOperationLog('产品管理-选择产品', '产品上架:'.$info['category_name'], LoginService::$uid, 1,$param['pro_cate_id'],1);//添加日志
  422. return Util::returnArrSu();
  423. } else {
  424. return Util::returnArrEr();
  425. }
  426. }
  427. /*
  428. * 取消或删除产品
  429. */
  430. public function cancelSelectProd($param)
  431. {
  432. $cms_category_prod = new CmsCategoryProd();
  433. $result = $cms_category_prod->cancelSelectProd($param);
  434. if ($result) {
  435. $cms_category = new CmsCategory();
  436. $info = $cms_category::findOne($param['cms_cate_id']);
  437. Util::addOperationLog('产品管理-取消选择', '产品下架:'.$info['category_name'], LoginService::$uid, 1,$param['pro_cate_id'],1);//添加日志
  438. return Util::returnArrSu();
  439. } else {
  440. return Util::returnArrEr();
  441. }
  442. }
  443. /*
  444. * 修改子产品排序
  445. */
  446. public function changeProdSort($param)
  447. {
  448. $cms_category_prod = new CmsCategoryProd();
  449. $result = $cms_category_prod->changeProdSort($param);
  450. if ($result) {
  451. Util::addOperationLog('产品管理-修改产品排序', '修改产品排序:分类ID'.$param['cms_cate_id'], LoginService::$uid, 1,$param['prod_cate_id'],1);//添加日志
  452. return Util::returnArrSu();
  453. } else {
  454. return Util::returnArrEr();
  455. }
  456. }
  457. /**
  458. * Function Description:查找cms_category_extra的信息
  459. * Function Name: getCategoryExtraInfo
  460. * @param $param
  461. * @return array
  462. * @author 田玲菲
  463. */
  464. public function getCategoryExtraInfo($param){
  465. if(!isset($param['category_id'])){
  466. return Util::returnArrEr('',[]);
  467. }
  468. $cmsCategoryExtra = new CmsCategoryExtra();
  469. $result = $cmsCategoryExtra->getDestinationInfo($param['category_id']);
  470. return Util::returnArrSu('',$result);
  471. }
  472. /**
  473. * Function Description:新增额外补充信息
  474. * Function Name: insertInfo
  475. * @param $param
  476. * @return array
  477. * @author 田玲菲
  478. */
  479. public function insertInfo($param){
  480. $cmsCategoryExtra = new CmsCategoryExtra();
  481. $res = $cmsCategoryExtra->addExtraInfo($param);
  482. if($res){
  483. return Util::returnArrSu('操作成功');
  484. }
  485. return Util::returnArrEr('操作失败');
  486. }
  487. /**
  488. * Function Description:修改额外补充信息
  489. * Function Name: changeInfo
  490. * @param $param
  491. * @return array
  492. * @author 田玲菲
  493. */
  494. public function changeInfo($param){
  495. $cmsCategoryExtra = new CmsCategoryExtra();
  496. $res = $cmsCategoryExtra->changeExtraInfo($param);
  497. if($res){
  498. return Util::returnArrSu('操作成功');
  499. }
  500. return Util::returnArrEr('操作失败');
  501. }
  502. /**
  503. * Function Description:判断表中有没有额外补充信息
  504. * Function Name: existExtraInfo
  505. * @param $param
  506. * @return bool
  507. * @author 田玲菲
  508. */
  509. public function existExtraInfo($param){
  510. if(!isset($param['category_id'])){
  511. return false;
  512. }
  513. $cmsCategoryExtra = new CmsCategoryExtra();
  514. $result = $cmsCategoryExtra->getDestinationInfo($param['category_id']);
  515. if(count($result) > 0){
  516. return true;
  517. }else{
  518. return false;
  519. }
  520. }
  521. /**
  522. * Function Description:根据category_id查找行程攻略的信息
  523. * Function Name: getItineraryInfo
  524. * @param $param
  525. * @return array
  526. * @author 田玲菲
  527. */
  528. public function getItineraryInfo($param){
  529. if(!isset($param['category_id'])){
  530. return Util::returnArrEr('',[]);
  531. }
  532. $sysItinerary = new SysItinerary();
  533. $result = $sysItinerary->getItinerary($param['category_id']);
  534. return Util::returnArrSu('',$result);
  535. }
  536. /**
  537. * Function Description:判断行程攻略记录是否存在
  538. * Function Name: existItinerary
  539. * @param $param
  540. * @return bool
  541. * @author 田玲菲
  542. */
  543. public function existItinerary($param){
  544. if(!isset($param['category_id'])){
  545. return false;
  546. }
  547. $sysItinerary = new SysItinerary();
  548. $result = $sysItinerary->getItinerary($param['category_id']);
  549. if(count($result) > 0){
  550. return true;
  551. }else{
  552. return false;
  553. }
  554. }
  555. /**
  556. * Function Description:新增行程攻略
  557. * Function Name: insertItinerary
  558. * @param $param
  559. * @return array
  560. * @author 田玲菲
  561. */
  562. public function insertItinerary($param){
  563. $sysItinerary = new SysItinerary();
  564. $res = $sysItinerary->addItinerary($param);
  565. if($res){
  566. return Util::returnArrSu('操作成功');
  567. }
  568. return Util::returnArrEr('操作失败');
  569. }
  570. /**
  571. * Function Description:修改行程攻略
  572. * Function Name: changeItineraryInfo
  573. * @param $param
  574. * @return array
  575. * @author 田玲菲
  576. */
  577. public function changeItineraryInfo($param){
  578. $sysItinerary = new SysItinerary();
  579. $res = $sysItinerary->changeItinerary($param);
  580. if($res){
  581. return Util::returnArrSu('操作成功');
  582. }
  583. return Util::returnArrEr('操作失败');
  584. }
  585. /**
  586. * Function Description:获取分类
  587. * Function Name: getCategory
  588. * @return array
  589. * @author 田玲菲
  590. */
  591. public function getCategory(){
  592. $cmsCategory = new CmsCategory();
  593. $result = $cmsCategory->getAllCategory();
  594. return Util::returnArrSu('',$result);
  595. }
  596. /**
  597. * Function Description:修改品类图片和描述
  598. * Function Name: uptCategoryExtra
  599. * @param $param
  600. *
  601. * @return array
  602. *
  603. * @author 娄梦宁
  604. */
  605. public function uptCategoryExtra($param)
  606. {
  607. $cms_category_extra=new CmsCategoryExtra();
  608. if($param['city_id']==''){
  609. $param['city_id']=0;
  610. }
  611. $upt_result=$cms_category_extra->uptExtra($param['cms_category_id'],$param['describe'],$param['img_url'],$param['city_id']);
  612. if(!$upt_result){
  613. return Util::returnArrEr('数据库错误!');
  614. }
  615. return Util::returnArrSu();
  616. }
  617. }