20221004111323_add_field_to_portrait_field_table.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. use app\model\Grant;
  3. use app\model\Permission;
  4. use think\migration\Migrator;
  5. use think\migration\db\Column;
  6. use app\model\CustomerPortraitField;
  7. use app\model\Company;
  8. use app\model\CustomerPortraitFieldSelect;
  9. class AddFieldToPortraitFieldTable extends Migrator
  10. {
  11. /**
  12. * Change Method.
  13. *
  14. * Write your reversible migrations using this method.
  15. *
  16. * More information on writing migrations is available here:
  17. * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
  18. *
  19. * The following commands can be used in this method and Phinx will
  20. * automatically reverse them when rolling back:
  21. *
  22. * createTable
  23. * renameTable
  24. * addColumn
  25. * renameColumn
  26. * addIndex
  27. * addForeignKey
  28. *
  29. * Remember to call "create()" or "update()" and NOT "save()" when working
  30. * with the Table class.
  31. */
  32. public function change()
  33. {
  34. $defaultFields = [
  35. [
  36. 'name'=>'基本信息',
  37. 'keyname'=>'basic_info',
  38. 'sort'=>1,
  39. 'value'=>[
  40. ['name' => '姓名', 'type'=>1,'isedit' =>1,'keyname'=>'name','isdel' =>1,'status' => 0, 'select' =>null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>1],
  41. ['name' => '手机号', 'type'=>2,'isedit' => 1,'keyname'=>'phone','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>2],
  42. ['name' => '性别', 'type'=>3,'isedit' => 1, 'keyname'=>'sex','isdel' =>1,'status' => 0, 'select' => ['男', '女'],'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>3],
  43. ['name' => '客户等级','type'=>3,'isedit' => 1,'keyname'=>'level', 'isdel' =>1,'status' => 0, 'select' => ['A类', 'B类', 'C类','D类'],'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>5],
  44. ['name' => '装修意向', 'type'=>3,'isedit' =>0, 'keyname'=>'intention','isdel' =>1,'status' => 0, 'select' => ['非常高', '高', '中', '低'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>6],
  45. ['name' => '是否添加微信', 'type'=>3,'isedit'=>0,'keyname'=>'wechat','isdel' =>1, 'status' => 0, 'select' => ['是', '否'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>20],
  46. ['name' => '客户关注点', 'type'=>4,'isedit'=>0,'keyname'=>'follow','isdel' =>1, 'status' => 0, 'select' => ['服务流程', '设计方案', '施工质量', '施工材料', '工期长短', '售后服务', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>18],
  47. ['name' => '客户痛点', 'type'=>4,'isedit'=>0,'keyname'=>'point','isdel' =>1, 'status' => 0, 'select' => ['工艺', '环保', '质量', '恶意增项', '工期延期', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>19],
  48. ['name' => '客户来源', 'type'=>3,'isedit'=>1,'keyname'=>'source_id','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>9],
  49. ['name' => '是否首次装修', 'type'=>3,'isedit'=>0,'keyname'=>'first','isdel' =>1, 'status' => 0, 'select' => ['是', '否'],'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>10],
  50. ['name' => '年龄', 'type'=>3,'isedit'=>0,'keyname'=>'age_range','isdel' =>1, 'status' => 0, 'select' => ['20岁以下', '20-30岁', '30-40岁', '40-50岁', '50-60岁', '60岁以上'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>4],
  51. ['name' => '当前所在区域', 'type'=>3,'isedit'=>0,'keyname'=>'current_region','isdel' =>1, 'status' => 0, 'select' => ['其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>8],
  52. ['name' => '加微类型', 'type'=>3,'isedit'=>1,'keyname'=>'add_wechat_type','isdel' =>1, 'status' => 0, 'select' => ['常规加微','社群加微'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>11],
  53. ['name' => '加微时间', 'type'=>5,'isedit'=>1,'keyname'=>'add_wechat_time','isdel' =>1, 'status' => 0, 'select' => ['常规加微','社群加微'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>12],
  54. ['name' => '建群情况', 'type'=>4,'isedit'=>0,'keyname'=>'group_building','isdel' =>1, 'status' => 0, 'select' => ['1对1小群', '临时大群', '社群'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>13],
  55. ['name' => '直播情况', 'type'=>4,'isedit'=>1,'keyname'=>'live_broadcast','isdel' =>1, 'status' => 0, 'select' => ['1对1业务直播', '1对1设计直播', '一对多直播'],'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>14],
  56. ['name' => '业务直播人员', 'type'=>1,'isedit'=>1,'keyname'=>'live_broadcast_business','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>15],
  57. ['name' => '设计直播人员', 'type'=>1,'isedit'=>1,'keyname'=>'live_broadcast_design','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>16],
  58. ['name' => '直播人员', 'type'=>1,'isedit'=>1,'keyname'=>'live_broadcast_personnel','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>17],
  59. ['name' => '谈单时长', 'type'=>1,'isedit'=>0,'keyname'=>'talking_about_single_time','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'分钟','is_status'=>0,'isedit_type'=>1,'sort'=>21],
  60. ['name' => '消费水平', 'type'=>3,'isedit'=>0,'keyname'=>'consumption_capacity','isdel' =>1, 'status' => 0, 'select' => ['高', '中', '低'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>7]
  61. ]
  62. ],
  63. [
  64. 'name'=>'房屋信息',
  65. 'keyname'=>'house_info',
  66. 'sort'=>2,
  67. 'value' => [
  68. ['name' => '小区名称', 'type'=>1,'isedit'=>0,'keyname'=>'community_name','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>1],
  69. ['name' => '门牌单元号', 'type'=>1,'isedit'=>0,'keyname'=>'unit_number','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>2],
  70. ['name' => '请选择房屋户型', 'type'=>3,'isedit'=>0,'keyname'=>'housetype_arrow','isdel' =>1, 'status' => 0, 'select' => ['1居室', '2居室', '3居室', '4居室', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>5],
  71. ['name' => '面积', 'type'=>1,'isedit'=>0,'keyname'=>'square','isdel' =>1,'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>4],
  72. ['name' => '装修预算', 'type'=>2,'isedit'=>0,'keyname'=>'budget','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'万元','is_status'=>0,'isedit_type'=>1,'sort'=>11],
  73. ['name' => '请选择倾向风格', 'type'=>3,'isedit'=>0,'keyname'=>'deco_style','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>6],
  74. ['name' => '客户喜欢的色调', 'type'=>3,'isedit'=>0,'keyname'=>'like_color','isdel' =>1, 'status' => 0, 'select' => ['黄色调', '红色调', '蓝色调', '橙色调', '绿色调', '紫色调', '白色调', '灰色调'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>16],
  75. ['name' => '房屋类型', 'type'=>3,'isedit'=>1,'keyname'=>'house_type','isdel' =>1,'status' => 0, 'select' => ['现房', '期房', '二手房'],'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>7],
  76. ['name' => '房屋状态', 'type'=>3,'isedit'=>0,'keyname'=>'house_status','isdel' =>1, 'status' => 0, 'select' => ['毛坯', '精装', '老房'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>9],
  77. ['name' => '房屋结构', 'type'=>3,'isedit'=>0,'keyname'=>'house_structure','isdel' =>1, 'status' => 0, 'select' => ['公寓', '商品房', '别墅', '自建'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>14],
  78. ['name' => '预计交房时间', 'type'=>5,'isedit'=>1,'keyname'=>'house_delivery_time','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>8],
  79. ['name' => '预计装修时间', 'type'=>5,'isedit'=>1,'keyname'=>'plan_deco_time','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>10],
  80. ['name' => '装修方式', 'type'=>3,'isedit'=>0,'keyname'=>'decoration_mode','isdel' =>1, 'status' => 0, 'select' => ['半包', '整装', '套餐'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>15],
  81. ['name' => '客户其它需求', 'type'=>1,'isedit'=>0,'keyname'=>'customer_demand','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>17],
  82. ['name' => '房屋用途', 'type'=>3,'isedit'=>0,'keyname'=>'housing_use','isdel' =>1, 'status' => 0, 'select' => ['自用', '出租'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>12],
  83. ['name' => '房屋位置', 'type'=>1,'isedit'=>1,'keyname'=>'house_location','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>1,'isedit_type'=>1,'sort'=>3],
  84. ['name' => '其他房屋信息', 'type'=>1,'isedit'=>0,'keyname'=>'remarks_on_other_house_information','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>18],
  85. ['name' => '周边配套', 'type'=>4,'isedit'=>0,'keyname'=>'peripheral_supporting','isdel' =>1, 'status' => 0, 'select' => ['商业', '教育', '交通', '资源', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>13]
  86. ]
  87. ],
  88. [
  89. 'name'=>'家庭信息',
  90. 'keyname'=>'family_info',
  91. 'sort'=>3,
  92. 'value'=> [
  93. ['name' => '家庭结构', 'type'=>3,'isedit'=>0,'keyname'=>'family_structure','isdel' =>1, 'status' => 0, 'select' => ['新婚夫妇', '三口之家', '四口之家', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>6,'sort'=>1],
  94. ['name' => '家庭成员意见', 'type'=>3,'isedit'=>0,'keyname'=>'family_opinion','isdel' =>1, 'status' => 0, 'select' => ['非常满意', '满意', '一般', '不满意'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>3],
  95. ['name' => '决策人', 'type'=>3,'isedit'=>0,'keyname'=>'decision_maker','isdel' =>1, 'status' => 0, 'select' => ['老婆', '丈夫', '父亲', '孩子'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>2],
  96. ['name' => '客户爱好', 'type'=>1,'isedit'=>0,'keyname'=>'hobby','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>7],
  97. ['name' => '客户空闲时段', 'type'=>1,'isedit'=>0,'keyname'=>'free_time','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>8],
  98. ['name' => '汽车价格', 'type'=>2,'isedit'=>0,'keyname'=>'car_price','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'元','is_status'=>0,'isedit_type'=>1,'sort'=>5],
  99. ['name' => '房屋价格', 'type'=>2,'isedit'=>0,'keyname'=>'hourse_price','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'元','is_status'=>0,'isedit_type'=>1,'sort'=>4],
  100. ['name' => '买小区的原因', 'type'=>1,'isedit'=>0,'keyname'=>'buying_community','isdel' =>1, 'status' => 0, 'select' => null,'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>6]
  101. ]
  102. ],
  103. [
  104. 'name'=>'关注点',
  105. 'keyname'=>'behavioral_info',
  106. 'sort'=>4,
  107. 'value' => [
  108. ['name' => '重视环保', 'type'=>3,'isedit'=>0,'keyname'=>'environmental_requirements','isdel' =>1, 'status' => 0, 'select' => ['非常重视', '重视', '一般', '不重视'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>1],
  109. ['name' => '关注的工艺', 'type'=>3,'isedit'=>0,'keyname'=>'workmanship','isdel' =>1, 'status' => 0, 'select' => ['水电工艺', '木工工艺', '泥工工艺', '油漆工艺', '吊顶工艺', '防水工艺'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>3],
  110. ['name' => '重视设计', 'type'=>3,'isedit'=>0,'keyname'=>'design','isdel' =>1, 'status' => 0, 'select' => ['非常重视', '重视', '一般', '不重视'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>2],
  111. ['name' => '关注房屋的空间', 'type'=>4,'isedit'=>0,'keyname'=>'space_design','isdel' =>1, 'status' => 0, 'select' => ['客厅', '卧室', '卫生间', '厨房', '阳台', '其他'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>4]
  112. ]
  113. ],
  114. [
  115. 'name'=>'客户满意度',
  116. 'keyname'=>'evaluate_info',
  117. 'sort'=>5,
  118. 'value' => [
  119. ['name' => '设计师服务', 'type'=>3,'isedit'=>0,'keyname'=>'service_satisfaction','isdel' =>1, 'status' => 0, 'select' => ['非常好', '好', '一般', '不满意'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>1],
  120. ['name' => '报价满意度', 'type'=>3,'isedit'=>0,'keyname'=>'quotation_satisfaction','isdel' =>1, 'status' => 0, 'select' => ['非常好', '好', '一般', '不满意'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>2],
  121. ['name' => '方案满意度', 'type'=>3,'isedit'=>0,'keyname'=>'program_satisfaction','isdel' =>1, 'status' => 0, 'select' => ['非常好', '好', '一般', '不满意'],'unity'=>'','is_status'=>0,'isedit_type'=>1,'sort'=>3]
  122. ]
  123. ]
  124. ];
  125. $fieldmod = new CustomerPortraitFieldSelect;
  126. $list= Company::field('id,root_id,company_name')->select()->toArray();
  127. foreach($list as $p=>$m){
  128. $root_id=$m['root_id'];
  129. foreach($defaultFields as $key=>$val){
  130. $parent = CustomerPortraitField::create([
  131. 'name' => $val['name'],
  132. 'pid' => 0,
  133. 'type' => 1,
  134. 'isedit' => 0,
  135. 'root_id' => $root_id,
  136. 'status'=>0,
  137. 'isdel'=>1,
  138. 'keyname'=>$val['keyname'],
  139. 'sort'=>$val['sort']
  140. ]);
  141. $pid=$parent->id;
  142. foreach($val['value'] as $k=>$v){
  143. $add=['name'=>$v['name'],'pid'=>$pid,'type'=>$v['type'],'isedit'=>$v['isedit'],'root_id'=>$root_id,'status'=>$v['status'],'isdel'=>$v['isdel'],'keyname'=>$v['keyname'],'unity'=>$v['unity'],'is_status'=>$v['is_status'],'isedit_type'=>$v['isedit_type'],'sort'=>$v['sort']];
  144. $cp=CustomerPortraitField::create($add);
  145. $all=[];
  146. if(!empty($v['select'])){
  147. foreach($v['select'] as $e=>$r){
  148. $all[]=['name'=>$r,'pid'=>$cp->id];
  149. }
  150. $childObjs = $fieldmod->saveAll($all);
  151. }
  152. }
  153. }
  154. }
  155. }
  156. }