CultureDecorateController.class.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. <?php
  2. namespace Admin\Controller;
  3. /**
  4. * 装饰管理
  5. * @author 晓宇
  6. * @version 0.0.1
  7. * @datetime 2019-03-29
  8. */
  9. class CultureDecorateController extends CommonController
  10. {
  11. /**
  12. * [_initialize 前置操作-继承公共前置方法]
  13. */
  14. public function _initialize()
  15. {
  16. // 调用父类前置方法
  17. parent::_initialize();
  18. // 登录校验
  19. $this->Is_Login();
  20. // 权限校验
  21. $this->Is_Power();
  22. }
  23. /**
  24. * [Index 装饰列表]
  25. */
  26. public function Index()
  27. {
  28. // 参数
  29. $param = array_merge($_POST, $_GET);
  30. // 模型模型
  31. $m = D('Culture/CultureDecorate');
  32. // 条件
  33. $where = $this->GetIndexWhere();
  34. // 分页
  35. $number = MyC('admin_page_number');
  36. $page_param = array(
  37. 'number' => $number,
  38. 'total' => $m->where($where)->count(),
  39. 'where' => $param,
  40. 'url' => U('Culture/CultureDecorate/Index'),
  41. );
  42. $page = new \My\Page($page_param);
  43. // 获取列表
  44. $field = array('decorate_id', 'decorate_name', 'thumb', 'description', 'decorate_type_id', 'decorate_target_type_id', 'decorate_target_id', 'decorate_target_property_id', 'sale_price', 'created_at', 'updated_at');
  45. $list = $this->SetDataHandle($m->field($field)->where($where)->relation("DecorateType")->limit($page->GetPageStarNumber(), $number)->order('decorate_id desc')->select());
  46. // 参数
  47. $this->assign('param', $param);
  48. // 分页
  49. $this->assign('page_html', $page->GetPageHtml());
  50. // 数据列表
  51. $this->assign('list', $list);
  52. $this->display('Index');
  53. }
  54. /**
  55. * [SetDataHandle 数据处理]
  56. * @param [array] $data [装饰数据]
  57. * @return [array] [处理好的数据]
  58. */
  59. private function SetDataHandle($data)
  60. {
  61. foreach ($data as $k => &$value) {
  62. //获取装饰对象类型
  63. unset($map);
  64. $map['decorate_target_type_id'] = $value['decorate_target_type_id'];
  65. $target_type = D('Culture/CultureDecorateTargetType')->field("decorate_target_type_name, model, mark")->where($map)->find();
  66. $value['decorate_target_type_name'] = $target_type['decorate_target_type_name'];
  67. //获取装饰对象
  68. if($value['decorate_target_id']){
  69. unset($map);
  70. $map["{$target_type['mark']}_id"] = $value['decorate_target_id'];
  71. $target = D($target_type['model'])->field("{$target_type['mark']}_id, {$target_type['mark']}_name")->where($map)->find();
  72. $value['decorate_target_name'] = $target["{$target_type['mark']}_name"];
  73. if($value['decorate_target_property_id']){
  74. unset($map);
  75. switch ($target_type['mark']) {
  76. case 'scene':
  77. $map['scene_id'] = $value['decorate_target_property_id'];
  78. $value['decorate_target_property_name'] = D("Culture/CultureScene")->where($map)->getField("scene_name");
  79. break;
  80. case 'pet_type':
  81. $map['pet_id'] = $value['decorate_target_property_id'];
  82. $map['pet_type_id'] = $value['decorate_target_id'];
  83. $value['decorate_target_property_name'] = D("Culture/CulturePet")->where($map)->getField("pet_name");
  84. break;
  85. default:
  86. $value['decorate_target_property_name'] = '';
  87. break;
  88. }
  89. }
  90. }
  91. }
  92. return $data;
  93. }
  94. /**
  95. * [GetIndexWhere 装饰列表条件]
  96. */
  97. private function GetIndexWhere()
  98. {
  99. $where = array();
  100. // 模糊
  101. if(!empty($_REQUEST['keyword']))
  102. {
  103. $like_keyword = array('like', '%'.I('keyword').'%');
  104. $where[] = array(
  105. 'decorate_name' => $like_keyword,
  106. );
  107. }
  108. // 是否更多条件
  109. if(I('is_more', 0) == 1)
  110. {
  111. // 表达式
  112. if(!empty($_REQUEST['time_start']))
  113. {
  114. $where['created_at'][] = array('gt', I('time_start') . ' 00:00:00');
  115. }
  116. if(!empty($_REQUEST['time_end']))
  117. {
  118. $where['created_at'][] = array('lt', I('time_end') . ' 23:59:59');
  119. }
  120. }
  121. $where['deleted_at'] = ["exp", "is null"];
  122. return $where;
  123. }
  124. /**
  125. * [SaveInfo 装饰添加/编辑页面]
  126. */
  127. public function SaveInfo()
  128. {
  129. // 装饰信息
  130. $data = empty($_REQUEST['decorate_id']) ? array() : D('Culture/CultureDecorate')->find(I('decorate_id'));
  131. $this->assign('data', $data);
  132. // 获取装饰类型
  133. if($data['decorate_type_id']){
  134. $map['decorate_target_type_id'] = $data['decorate_target_type_id'];
  135. if($data['decorate_target_id']){
  136. $map['decorate_target_id'] = $data['decorate_target_id'];
  137. }
  138. if($data['decorate_target_property_id']){
  139. $map['decorate_target_property_id'] = $data['decorate_target_property_id'];
  140. }
  141. $decorate_type_list = D("Culture/CultureDecorateType")->field("decorate_type_id, decorate_type_name")->where($map)->select();
  142. $this->assign('decorate_type_list', $decorate_type_list);
  143. }
  144. // 装饰对象类型信息
  145. unset($map);
  146. $map['deleted_at'] = ["exp", "is null"];
  147. $decorate_target_type_list = D('Culture/CultureDecorateTargetType')->field("decorate_target_type_id, decorate_target_type_name")->where($map)->select();
  148. $this->assign('decorate_target_type_list', $decorate_target_type_list);
  149. //获取装饰对象信息
  150. if($data['decorate_target_id']){
  151. unset($map);
  152. $map['decorate_target_type_id'] = $data['decorate_target_type_id'];
  153. $target_type = D('Culture/CultureDecorateTargetType')->field("model, mark")->where($map)->find();
  154. unset($map);
  155. $map['deleted_at'] = ["exp", "is null"];
  156. $decorate_target_list = D($target_type['model'])->field("{$target_type['mark']}_id as id, {$target_type['mark']}_name as name")->where($map)->select();
  157. if($decorate_target_list){
  158. $this->assign('decorate_target_list', $decorate_target_list);
  159. }
  160. //获取装饰对象专属信息
  161. if($data['decorate_target_property_id']){
  162. switch ($target_type['mark']) {
  163. case 'scene':
  164. break;
  165. case 'pet_type':
  166. unset($map);
  167. $map['pet_type_id'] = $target["{$target_type['mark']}_id"];
  168. $decorate_target_property_list = D("Culture/CulturePet")->field("pet_id as id, pet_name as name")->where($map)->select();
  169. if($decorate_target_property_list){
  170. $this->assign('decorate_target_property_list', $decorate_target_property_list);
  171. }
  172. break;
  173. default:
  174. break;
  175. }
  176. }
  177. }
  178. $this->display('SaveInfo');
  179. }
  180. /**
  181. * [Save 装饰添加/编辑]
  182. */
  183. public function Save()
  184. {
  185. // 是否ajax请求
  186. if(!IS_AJAX)
  187. {
  188. $this->error(L('common_unauthorized_access'));
  189. }
  190. // 添加
  191. if(empty($_POST['decorate_id']))
  192. {
  193. $this->Add();
  194. // 编辑
  195. } else {
  196. $this->Edit();
  197. }
  198. }
  199. /**
  200. * [Add 装饰添加]
  201. */
  202. private function Add()
  203. {
  204. // 装饰模型
  205. $m = D('Culture/CultureDecorate');
  206. // 数据自动校验
  207. if($m->create($_POST, 1))
  208. {
  209. $m->created_at = date('Y-m-d H:i:s');
  210. $m->updated_at = date('Y-m-d H:i:s');
  211. // 数据添加
  212. if($m->add())
  213. {
  214. $this->ajaxReturn(L('common_operation_add_success'));
  215. } else {
  216. echo M()->getLastsql();exit;
  217. $this->ajaxReturn(L('common_operation_add_error'), -100);
  218. }
  219. } else {
  220. $this->ajaxReturn($m->getError(), -1);
  221. }
  222. }
  223. /**
  224. * [Edit 装饰编辑]
  225. */
  226. private function Edit()
  227. {
  228. // 装饰模型
  229. $m = D('Culture/CultureDecorate');
  230. // 数据自动校验
  231. if($m->create($_POST, 2))
  232. {
  233. $m->updated_at = date('Y-m-d H:i:s');
  234. // 更新数据库
  235. if($m->where(array('decorate_id'=>I('decorate_id')))->save())
  236. {
  237. $this->ajaxReturn(L('common_operation_edit_success'));
  238. } else {
  239. $this->ajaxReturn(L('common_operation_edit_error'), -100);
  240. }
  241. } else {
  242. $this->ajaxReturn($m->getError(), -1);
  243. }
  244. }
  245. /**
  246. * [Delete 装饰删除]
  247. */
  248. public function Delete()
  249. {
  250. // 是否ajax请求
  251. if(!IS_AJAX)
  252. {
  253. $this->error(L('common_unauthorized_access'));
  254. }
  255. // 参数处理
  256. $id = I('decorate_id');
  257. // 删除数据
  258. if(!empty($id))
  259. {
  260. // 装饰模型
  261. $m = D('Culture/CultureDecorate');
  262. // 装饰是否存在
  263. $scene = $m->where(array('decorate_id'=>$id))->count();
  264. if(empty($scene))
  265. {
  266. $this->ajaxReturn(L('common_user_no_exist_error'), -2);
  267. }
  268. // 删除装饰
  269. $update_data['delete'] = date('Y-m-d H:i:s');
  270. $state = $m->where(array('decorate_id'=>$id))->save($update_data);
  271. if($state !== false)
  272. {
  273. $this->ajaxReturn(L('common_operation_delete_success'));
  274. } else {
  275. $this->ajaxReturn(L('common_operation_delete_error'), -100);
  276. }
  277. } else {
  278. $this->ajaxReturn(L('common_param_error'), -1);
  279. }
  280. }
  281. /**
  282. * 获取装饰对象
  283. */
  284. public function getDecorateTarget()
  285. {
  286. $decorate_target_type_id = (int) I('decorate_target_type_id');
  287. //获取对象表
  288. $map['decorate_target_type_id'] = $decorate_target_type_id;
  289. $target_type = D('Culture/CultureDecorateTargetType')->field("model, mark")->where($map)->find();
  290. unset($map);
  291. $map['deleted_at'] = ["exp", "is null"];
  292. $list = D($target_type['model'])->field("{$target_type['mark']}_id as id, {$target_type['mark']}_name as name")->where($map)->select();
  293. if(!$list){
  294. $response_data['code'] = 400;
  295. $response_data['msg'] = "暂无数据";
  296. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  297. exit();
  298. }
  299. $response_data['code'] = 0;
  300. $response_data['msg'] = "获取成功";
  301. $response_data['data'] = $list;
  302. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  303. exit();
  304. }
  305. /**
  306. * 获取装饰对象专属ID
  307. */
  308. public function getDecorateTargetProperty()
  309. {
  310. $decorate_target_type_id = (int) I('decorate_target_type_id');
  311. $decorate_target_id = (int) I('decorate_target_id');
  312. //获取对象表
  313. $map['decorate_target_type_id'] = $decorate_target_type_id;
  314. $target_type = D('Culture/CultureDecorateTargetType')->field("model, mark")->where($map)->find();
  315. unset($map);
  316. $map['deleted_at'] = ["exp", "is null"];
  317. $map["{$target_type['mark']}_id"] = $decorate_target_id;
  318. $target = D($target_type['model'])->field("{$target_type['mark']}_id, {$target_type['mark']}_name")->where($map)->find();
  319. switch ($target_type['mark']) {
  320. case 'scene':
  321. $list = [];
  322. break;
  323. case 'pet_type':
  324. unset($map);
  325. $map['pet_type_id'] = $target["{$target_type['mark']}_id"];
  326. $list = D("Culture/CulturePet")->field("pet_id as id, pet_name as name")->where($map)->select();
  327. break;
  328. default:
  329. $list = [];
  330. break;
  331. }
  332. if(count($list) < 1){
  333. $response_data['code'] = 400;
  334. $response_data['msg'] = "暂无数据";
  335. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  336. exit();
  337. }
  338. $response_data['code'] = 0;
  339. $response_data['msg'] = "获取成功";
  340. $response_data['data'] = $list;
  341. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  342. exit();
  343. }
  344. /**
  345. * 获取装饰类型
  346. */
  347. public function getDecorateType()
  348. {
  349. $decorate_target_type_id = (int) I('decorate_target_type_id');
  350. $decorate_target_id = (int) I('decorate_target_id');
  351. $decorate_target_property_id = (int) I('decorate_target_property_id');
  352. if(!$decorate_target_type_id){
  353. $response_data['code'] = 400;
  354. $response_data['msg'] = "暂无数据";
  355. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  356. exit();
  357. }
  358. $map['decorate_target_type_id'] = $decorate_target_type_id;
  359. if($decorate_target_id){
  360. $map['decorate_target_id'] = $decorate_target_id;
  361. }
  362. if($decorate_target_property_id){
  363. $map['decorate_target_property_id'] = $decorate_target_property_id;
  364. }
  365. // 装饰类型信息
  366. $map['deleted_at'] = ["exp", "is null"];
  367. $list = D('Culture/CultureDecorateType')->field("decorate_type_id as id, decorate_type_name as name")->where($map)->select();
  368. $response_data['code'] = 0;
  369. $response_data['msg'] = "获取成功";
  370. $response_data['data'] = $list;
  371. echo json_encode($response_data, JSON_UNESCAPED_UNICODE);
  372. exit();
  373. }
  374. }