CustomerPortrait.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace app\model;
  3. use think\Model;
  4. class CustomerPortrait extends Model
  5. {
  6. protected $defaultFields = [
  7. 'basic_info' => [
  8. 'name' => ['title' => '姓名', 'value' => 'name', 'status' => 1, 'select' => []],
  9. 'phone' => ['title' => '手机号码', 'value' => 'phone', 'status' => 1, 'select' => []],
  10. 'sex' => ['title' => '性别', 'value' => 'sex', 'status' => 1, 'select' => ['男', '女']],
  11. 'level' => ['title' => '客户等级', 'value' => 'level', 'status' => 1, 'select' => ['A', 'B', 'C']],
  12. 'intention' => ['title' => '装修意向程度', 'value' => 'intention', 'status' => 1, 'select' => ['非常高', '高', '中', '低']],
  13. 'wechat' => ['title' => '微信', 'value' => 'wechat', 'status' => 1, 'select' => ['有', '无']],
  14. 'follow' => ['title' => '客户关注点', 'value' => 'follow', 'status' => 1, 'select' => ['服务流程', '设计方案', '施工质量', '施工材料', '工期长短', '售后服务', '其他']],
  15. 'point' => ['title' => '客户痛点', 'value' => 'point', 'status' => 1, 'select' => ['工艺', '环保', '质量', '恶意增项', '工期延期', '其他']],
  16. 'source_id' => ['title' => '来源', 'value' => 'source_id', 'status' => 1, 'select' => []],
  17. 'first' => ['title' => '是否首次装修', 'value' => 'first', 'status' => 1, 'select' => ['是', '否']],
  18. 'age_range' => ['title' => '年龄', 'value' => 'age_range', 'status' => 1, 'select' => ['20岁以下', '20-30岁', '30-40岁', '40-50岁', '50-60岁', '60岁以上']],
  19. 'current_region' => ['title' => '当前所在区域', 'value' => 'current_region', 'status' => 0, 'select' => ['其他']],
  20. 'add_wechat_type' => ['title' => '加微类型', 'value' => 'add_wechat_type', 'status' => 0, 'select' => ['常规加微']],
  21. 'group_building' => ['title' => '建群情况', 'value' => 'group_building', 'status' => 0, 'select' => ['1对1小群', '临时大群', '社群']],
  22. 'live_broadcast' => ['title' => '直播情况', 'value' => 'live_broadcast', 'status' => 0, 'select' => ['1对1业务直播', '1对1设计直播', '一对多直播']],
  23. 'live_broadcast_business' => ['title' => '1对1业务人员', 'value' => 'live_broadcast_business', 'status' => 0, 'select' => []],
  24. 'live_broadcast_design' => ['title' => '1对1设计人员', 'value' => 'live_broadcast_design', 'status' => 0, 'select' => []],
  25. 'live_broadcast_personnel' => ['title' => '直播人员', 'value' => 'live_broadcast_personnel', 'status' => 0, 'select' => []],
  26. 'talking_about_single_time' => ['title' => '谈单时长', 'value' => 'talking_about_single_time', 'status' => 0, 'select' => []],
  27. 'consumption_capacity' => ['title' => '消费能力', 'value' => 'consumption_capacity', 'status' => 1, 'select' => ['高', '中', '低']]
  28. ],
  29. 'family_info' => [
  30. 'family_structure' => ['title' => '家庭结构', 'value' => 'family_structure', 'status' => 1, 'select' => ['新婚夫妇', '三口之家', '四口之家', '其他']],
  31. 'family_opinion' => ['title' => '家庭成员意见', 'value' => 'family_opinion', 'status' => 1, 'select' => ['非常满意', '满意', '一般', '不满意']],
  32. 'decision_maker' => ['title' => '决策人', 'value' => 'decision_maker', 'status' => 1, 'select' => ['老婆', '丈夫', '父亲', '孩子']],
  33. 'hobby' => ['title' => '爱好', 'value' => 'hobby', 'status' => 1, 'select' => []],
  34. 'free_time' => ['title' => '客户空闲时段', 'value' => 'free_time', 'status' => 1, 'select' => []],
  35. 'car_price' => ['title' => '汽车价格', 'value' => 'car_price', 'status' => 1, 'select' => []],
  36. 'hourse_price' => ['title' => '房屋价格', 'value' => 'hourse_price', 'status' => 1, 'select' => []],
  37. 'buying_community' => ['title' => '买小区的原因', 'value' => 'buying_community', 'status' => 1, 'select' => []]
  38. ],
  39. 'house_info' => [
  40. 'community_name' => ['title' => '小区名称', 'value' => 'community_name', 'status' => 1, 'select' => []],
  41. 'unit_number' => ['title' => '门牌单元号', 'value' => 'unit_number', 'status' => 1, 'select' => []],
  42. 'housetype_arrow' => ['title' => '户型', 'value' => 'housetype_arrow', 'status' => 1, 'select' => ['1居室', '2居室', '3居室', '4居室', '其他']],
  43. 'square' => ['title' => '面积', 'value' => 'square', 'status' => 1, 'select' => ['60平以下', '60-80平', '80-100平', '10-0-120平', '120-140平', '140平以上']],
  44. 'budget' => ['title' => '装修预算', 'value' => 'budget', 'status' => 1, 'select' => []],
  45. 'deco_style' => ['title' => '倾向风格', 'value' => 'deco_style', 'status' => 1, 'select' => []],
  46. 'like_color' => ['title' => '喜欢色调', 'value' => 'like_color', 'status' => 1, 'select' => ['黄色调', '红色调', '蓝色调', '橙色调', '绿色调', '紫色调', '白色调', '灰色调']],
  47. 'house_type' => ['title' => '房屋类型', 'value' => 'house_type', 'status' => 1, 'select' => ['现房', '期房', '二手房']],
  48. 'house_status' => ['title' => '房屋状态', 'value' => 'house_status', 'status' => 1, 'select' => ['毛坯', '精装', '老房']],
  49. 'house_structure' => ['title' => '房屋结构', 'value' => 'house_structure', 'status' => 1, 'select' => ['公寓', '商品房', '别墅', '自建']],
  50. 'house_delivery_time' => ['title' => '交房时间', 'value' => 'house_delivery_time', 'status' => 1, 'select' => []],
  51. 'plan_deco_time' => ['title' => '预计装修时间', 'value' => 'plan_deco_time', 'status' => 1, 'select' => []],
  52. 'decoration_mode' => ['title' => '装修方式', 'value' => 'decoration_mode', 'status' => 1, 'select' => ['半包', '整装', '套餐']],
  53. 'customer_demand' => ['title' => '客户需求', 'value' => 'customer_demand', 'status' => 1, 'select' => []],
  54. 'housing_use' => ['title' => '房屋用途', 'value' => 'housing_use', 'status' => 1, 'select' => ['自用', '出租']],
  55. 'house_location' => ['title' => '房屋位置', 'value' => 'house_location', 'status' => 1, 'select' => []],
  56. 'remarks_on_other_house_information' => ['title' => '其他房屋信息备注', 'value' => 'remarks_on_other_house_information', 'status' => 1, 'select' => []],
  57. 'peripheral_supporting' => ['title' => '周边配套', 'value' => 'peripheral_supporting', 'status' => 1, 'select' => ['商业', '教育', '交通', '资源', '其他']]
  58. ],
  59. 'behavioral_info' => [
  60. 'environmental_requirements' => ['title' => '重视环保', 'value' => 'environmental_requirements', 'status' => 1, 'select' => ['非常重视', '重视', '一般', '不重视']],
  61. 'workmanship' => ['title' => '关注的工艺', 'value' => 'workmanship', 'status' => 1, 'select' => ['水电工艺', '木工工艺', '泥工工艺', '油漆工艺', '吊顶工艺', '防水工艺']],
  62. 'design' => ['title' => '重视设计', 'value' => 'design', 'status' => 1, 'select' => ['非常重视', '重视', '一般', '不重视']],
  63. 'space_design' => ['title' => '特别在意的空间设计', 'value' => 'space_design', 'status' => 1, 'select' => ['客厅', '卧室', '卫生间', '厨房', '阳台', '其他']]
  64. ],
  65. 'evaluate_info' => [
  66. 'service_satisfaction' => ['title' => '设计师服务满意度', 'value' => 'service_satisfaction', 'status' => 1, 'select' => ['非常好', '好', '一般', '不满意']],
  67. 'quotation_satisfaction' => ['title' => '报价满意度', 'value' => 'quotation_satisfaction', 'status' => 1, 'select' => ['非常好', '好', '一般', '不满意']],
  68. 'program_satisfaction' => ['title' => '方案满意度', 'value' => 'program_satisfaction', 'status' => 1, 'select' => ['非常好', '好', '一般', '不满意']]
  69. ],
  70. 'info_status' => ['basic_info' => 1, 'family_info' => 1, 'house_info' => 1, 'behavioral_info' => 1, 'evaluate_info' => 1]
  71. ];
  72. /**
  73. * 扩展属性获取
  74. *
  75. * @param string $value
  76. * @param array $data
  77. * @return void
  78. */
  79. public function getFieldsAttr($value, $data)
  80. {
  81. if (empty($data) || empty($value)) return $this->defaultFields;
  82. // 保持状态修改(一下两个地方内容如果修改,属性同步修改)
  83. $wechat = Setting::where([['root_id', '=', $data['root_id']], ['name', '=', 'customerWechatSetting']])->value('content');
  84. $city = Company::where([['root_id', '=', $data['root_id']]])->value('city');
  85. $this->defaultFields['basic_info']['current_region']['select'] = [$city, '其他'];
  86. if ($wechat)
  87. $this->defaultFields['basic_info']['add_wechat_type']['select'] = explode(',', $wechat);
  88. $value = json_decode($value, true);
  89. $data = [];
  90. foreach ($this->defaultFields as $k1 => $v1) {
  91. foreach ($v1 as $k2 => $v2) {
  92. $status = 0;
  93. if (isset($value[$k1]) && isset($value[$k1][$k2]) && ($value[$k1][$k2] == 1 || (isset($value[$k1][$k2]['status']) && $value[$k1][$k2]['status'] == 1))) {
  94. $status = 1;
  95. }
  96. if (is_array($v2))
  97. $this->defaultFields[$k1][$k2]['status'] = $status;
  98. else
  99. $this->defaultFields[$k1][$k2] = $status;
  100. if (isset($value[$k1][$k2]['select']) && !in_array($k2, ['current_region', 'add_wechat_type']))
  101. $this->defaultFields[$k1][$k2]['select'] = $value[$k1][$k2]['select'];
  102. }
  103. }
  104. return $this->defaultFields;
  105. }
  106. /**
  107. * defaultFields
  108. * @param Array $value
  109. */
  110. public function setFieldsAttr($value, $data)
  111. {
  112. $wechat = Setting::where([['root_id', '=', $data['root_id']], ['name', '=', 'customerWechatSetting']])->value('content');
  113. $city = Company::where([['root_id', '=', $data['root_id']]])->value('city');
  114. if ($city) $value['basic_info']['current_region']['select'] = [$city, '其他'];
  115. if ($wechat)
  116. $value['basic_info']['add_wechat_type']['select'] = explode(',', $wechat);
  117. return json_encode($value);
  118. }
  119. }