FieldLogic.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <?php
  2. /**
  3. * 易优CMS
  4. * ============================================================================
  5. * 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
  6. * 网站地址: http://www.eyoucms.com
  7. * ----------------------------------------------------------------------------
  8. * 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
  9. * ============================================================================
  10. * Author: 小虎哥 <1105415366@qq.com>
  11. * Date: 2018-4-3
  12. */
  13. namespace app\home\logic;
  14. use think\Model;
  15. use think\Db;
  16. /**
  17. * 字段逻辑定义
  18. * Class CatsLogic
  19. * @package home\Logic
  20. */
  21. class FieldLogic extends Model
  22. {
  23. /**
  24. * 查询解析模型数据用以页面展示
  25. * @param array $data 表数据
  26. * @param intval $channel_id 模型ID
  27. * @param array $batch 是否批量列表
  28. * @author 小虎哥 by 2018-7-25
  29. */
  30. public function getChannelFieldList($data, $channel_id = '', $batch = false)
  31. {
  32. if (!empty($data) && !empty($channel_id)) {
  33. /*获取模型对应的附加表字段信息*/
  34. $map = array(
  35. 'channel_id' => $channel_id,
  36. );
  37. $fieldInfo = model('Channelfield')->getListByWhere($map, '*', 'name');
  38. /*--end*/
  39. $data = $this->handleAddonFieldList($data, $fieldInfo, $batch);
  40. } else {
  41. $data = array();
  42. }
  43. return $data;
  44. }
  45. /**
  46. * 查询解析单个数据表的数据用以页面展示
  47. * @param array $data 表数据
  48. * @param intval $channel_id 模型ID
  49. * @param array $batch 是否批量列表
  50. * @author 小虎哥 by 2018-7-25
  51. */
  52. public function getTableFieldList($data, $channel_id = '', $batch = false)
  53. {
  54. if (!empty($data) && !empty($channel_id)) {
  55. /*获取自定义表字段信息*/
  56. $map = array(
  57. 'channel_id' => $channel_id,
  58. );
  59. $fieldInfo = model('Channelfield')->getListByWhere($map, '*', 'name');
  60. /*--end*/
  61. $data = $this->handleAddonFieldList($data, $fieldInfo, $batch);
  62. } else {
  63. $data = array();
  64. }
  65. return $data;
  66. }
  67. /**
  68. * 处理自定义字段的值
  69. * @param array $data 表数据
  70. * @param array $fieldInfo 自定义字段集合
  71. * @param array $batch 是否批量列表
  72. * @author 小虎哥 by 2018-7-25
  73. */
  74. public function handleAddonFieldList($data, $fieldInfo, $batch = false)
  75. {
  76. if (false !== $batch) {
  77. return $this->handleBatchAddonFieldList($data, $fieldInfo);
  78. }
  79. if (!empty($data) && !empty($fieldInfo)) {
  80. foreach ($data as $key => $val) {
  81. $dtype = !empty($fieldInfo[$key]) ? $fieldInfo[$key]['dtype'] : '';
  82. $dfvalue_unit = !empty($fieldInfo[$key]) ? $fieldInfo[$key]['dfvalue_unit'] : '';
  83. switch ($dtype) {
  84. case 'int':
  85. case 'float':
  86. case 'decimal':
  87. case 'text':
  88. {
  89. $data[$key.'_unit'] = $dfvalue_unit;
  90. break;
  91. }
  92. case 'imgs':
  93. {
  94. if (!is_array($val)) {
  95. $eyou_imgupload_list = @unserialize($val);
  96. if (false === $eyou_imgupload_list) {
  97. $eyou_imgupload_list = [];
  98. $eyou_imgupload_data = explode(',', $val);
  99. foreach ($eyou_imgupload_data as $k1 => $v1) {
  100. $eyou_imgupload_list[$k1] = [
  101. 'image_url' => handle_subdir_pic($v1),
  102. 'intro' => '',
  103. ];
  104. }
  105. }
  106. } else {
  107. $eyou_imgupload_list = [];
  108. $eyou_imgupload_data = $val;
  109. foreach ($eyou_imgupload_data as $k1 => $v1) {
  110. $v1['image_url'] = handle_subdir_pic($v1['image_url']);
  111. $eyou_imgupload_list[$k1] = $v1;
  112. }
  113. }
  114. $val = $eyou_imgupload_list;
  115. break;
  116. }
  117. case 'checkbox':
  118. case 'files':
  119. {
  120. if (!is_array($val)) {
  121. $val = !empty($val) ? explode(',', $val) : array();
  122. }
  123. /*支持子目录*/
  124. foreach ($val as $k1 => $v1) {
  125. $val[$k1] = handle_subdir_pic($v1);
  126. }
  127. /*--end*/
  128. break;
  129. }
  130. case 'htmltext':
  131. {
  132. $val = htmlspecialchars_decode($val);
  133. /*追加指定内嵌样式到编辑器内容的img标签,兼容图片自动适应页面*/
  134. $titleNew = !empty($data['title']) ? $data['title'] : '';
  135. $val = img_style_wh($val, $titleNew);
  136. /*--end*/
  137. /*支持子目录*/
  138. $val = handle_subdir_pic($val, 'html');
  139. /*--end*/
  140. break;
  141. }
  142. case 'decimal':
  143. {
  144. $val = number_format($val,'2','.',',');
  145. break;
  146. }
  147. default:
  148. {
  149. /*支持子目录*/
  150. if (is_string($val)) {
  151. $val = handle_subdir_pic($val, 'html');
  152. $val = handle_subdir_pic($val);
  153. }
  154. /*--end*/
  155. break;
  156. }
  157. }
  158. $data[$key] = $val;
  159. }
  160. }
  161. return $data;
  162. }
  163. /**
  164. * 列表批量处理自定义字段的值
  165. * @param array $data 表数据
  166. * @param array $fieldInfo 自定义字段集合
  167. * @author 小虎哥 by 2018-7-25
  168. */
  169. public function handleBatchAddonFieldList($data, $fieldInfo)
  170. {
  171. if (!empty($data) && !empty($fieldInfo)) {
  172. foreach ($data as $key => $subdata) {
  173. $data[$key] = $this->handleAddonFieldList($subdata, $fieldInfo);
  174. }
  175. }
  176. return $data;
  177. }
  178. }