MigrateHFLevelExcelData.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <?php
  2. /****************************************************************
  3. * Author: king -- LiBaoJia
  4. * Date: 2020/4/1 4:59 PM
  5. * Email: livsyitian@163.com
  6. * QQ: 995265288
  7. * IDE: PhpStorm
  8. * User: 芸众商城 www.yunzshop.com
  9. ****************************************************************/
  10. namespace app\Console\Commands;
  11. use app\common\models\MemberShopInfo;
  12. use Illuminate\Console\Command;
  13. use Maatwebsite\Excel\Readers\LaravelExcelReader;
  14. use Yunshop\Haifen\common\model\hfMember;
  15. use Yunshop\Haifen\common\model\levelModel;
  16. use Yunshop\Commission\models\Agents;
  17. use Yunshop\TeamDividend\admin\models\TeamDividendAgencyModel;
  18. class MigrateHFLevelExcelData extends Command
  19. {
  20. /**
  21. * The name and signature of the console command.
  22. *
  23. * @var string
  24. */
  25. protected $signature = 'migrate:level_excel';
  26. /**
  27. * The console command description.
  28. *
  29. * @var string
  30. */
  31. protected $description = '迁移会员levelExcel数据';
  32. protected $uniacid = 3;
  33. /**
  34. * Execution entrance
  35. */
  36. public function handle()
  37. {
  38. if (!app('plugins')->isEnabled('haifen')) {
  39. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "haifen插件未开启" . PHP_EOL, FILE_APPEND);
  40. return ;
  41. }
  42. \YunShop::app()->uniacid = 3;
  43. $filePath = storage_path('hf_member_level.xlsx');
  44. $fileContent = \Excel::load($filePath);
  45. /**
  46. * @see LaravelExcelReader
  47. *
  48. * @var \PHPExcel $fileContent
  49. */
  50. $sheet = $fileContent->getActiveSheet();
  51. /**
  52. * @var \PHPExcel_Worksheet $sheet
  53. */
  54. $highestRow = $sheet->getHighestDataRow();
  55. $highestColumn = $sheet->getHighestDataColumn();
  56. $highestColumnCount = \PHPExcel_Cell::columnIndexFromString($highestColumn);
  57. $row = 2;
  58. $values = [];
  59. while ($row <= $highestRow) {
  60. $col = 0;
  61. $rowValue = [];
  62. while ($col < $highestColumnCount) {
  63. $rowValue[] = (string)$sheet->getCellByColumnAndRow($col, $row)->getValue();
  64. ++$col;
  65. }
  66. $values[] = $rowValue;
  67. ++$row;
  68. }
  69. //dd($values);
  70. $count = count($values);
  71. //dd($count);
  72. $barOne = $this->output->createProgressBar($count);
  73. foreach ($values as $value) {
  74. $this->updateMemberLevel($value);
  75. $barOne->advance();
  76. }
  77. $barOne->finish();
  78. $this->info('Update Member Level Comment');
  79. $this->comment('Excel data migration completed!');
  80. }
  81. public function updateMemberLevel($value)
  82. {
  83. //根据mobile查询会员信息
  84. $user = hfMember::uniacid()->whereHas("hasOneMCMember",function($query) use ($value){
  85. $query->where("mobile",$value[0]);
  86. })->first();
  87. $user = empty($user) ? [] : $user->toArray();
  88. if (empty($user)) {
  89. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$value[0]."对应的会员不存在" . PHP_EOL, FILE_APPEND);
  90. return ;
  91. }
  92. $this->docking($user['yz_uid'],$value[1],$value[0]);
  93. }
  94. public function docking($uid,$level,$mobile)
  95. {
  96. $search['level'] = $level;
  97. $search['status'] = 1;
  98. $levelModel = levelModel::getSearch($search)->first();
  99. $levelModel = empty($levelModel) ? [] : $levelModel->toArray();
  100. if (empty($levelModel)) {
  101. //throw new ShopException('对应等级未设置');
  102. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."后台对应的等级不存在" . PHP_EOL, FILE_APPEND);
  103. return ;
  104. }
  105. if (empty($levelModel['has_one_member_level'])) {
  106. //throw new ShopException('对应等级设置中的会员等级不存在');
  107. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."后台对应等级设置中的会员等级不存在" . PHP_EOL, FILE_APPEND);
  108. return ;
  109. }
  110. //修改会员等级
  111. $member = MemberShopInfo::uniacid()->where("member_id",$uid)->first();
  112. if (empty($member)) {
  113. //throw new ShopException('会员不存在');
  114. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."会员不存在" . PHP_EOL, FILE_APPEND);
  115. return ;
  116. }
  117. $member->level_id = $levelModel['member_level_id'];
  118. if (!$member->save()) {
  119. //throw new ShopException('更新对应的会员等级失败');
  120. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."更新对应的会员等级失败" . PHP_EOL, FILE_APPEND);
  121. return ;
  122. }
  123. //修改分销商等级
  124. $this->agentLevelUpdate($uid,$member,$mobile,$levelModel);
  125. //修改经销商等级
  126. $this->teamDividendLevelUpdate($uid,$member,$mobile,$levelModel);
  127. }
  128. public function agentLevelUpdate($uid,$member,$mobile,$levelModel)
  129. {
  130. if (app('plugins')->isEnabled('commission')) {
  131. if (empty($levelModel['has_one_agent_level'])) {
  132. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."对应等级设置中的分销商等级不存在" . PHP_EOL, FILE_APPEND);
  133. return ;
  134. }
  135. $agent = Agents::getAgentByMemberId($uid)->first();
  136. if (empty($agent)) {
  137. $agentData = [
  138. 'uniacid' => \YunShop::app()->uniacid,
  139. 'member_id' => $uid,
  140. 'parent_id' => $member->parent_id,
  141. 'parent' => $member->relation,
  142. 'agent_level_id' => $levelModel['agent_level_id'],
  143. 'created_at' => time(),
  144. 'updated_at' => time(),
  145. ];
  146. \Log::info('分销商数据:', $agentData);
  147. Agents::insert($agentData);
  148. } else {
  149. if ($agent->agent_level_id != $levelModel['agent_level_id']) {
  150. $agentModel = Agents::getAgentByMemberId($uid)->first();
  151. $agentModel->agent_level_id = $levelModel['agent_level_id'];
  152. if (!$agentModel->save()) {
  153. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:".$mobile."编辑对应的分销商等级失败" . PHP_EOL, FILE_APPEND);
  154. return ;
  155. }
  156. }
  157. }
  158. }
  159. }
  160. public function teamDividendLevelUpdate($uid,$member,$mobile,$levelModel)
  161. {
  162. if (app('plugins')->isEnabled('team-dividend')) {
  163. if (empty($levelModel['has_one_team_dividend_level'])) {
  164. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:" . $mobile . "对应等级设置中的经销商等级不存在" . PHP_EOL, FILE_APPEND);
  165. return;
  166. }
  167. $dividend = TeamDividendAgencyModel::getAgencyByMemberId($uid)->first();
  168. if (empty($dividend)) {
  169. $agency_model = new TeamDividendAgencyModel();
  170. $agency_model->uniacid = \YunShop::app()->uniacid;
  171. $agency_model->uid = $uid;
  172. $agency_model->level = $levelModel['team_dividend_level_id'];
  173. $agency_model->parent_id = $member['parent_id'];
  174. $agency_model->relation = $member['relation'];
  175. if (!$agency_model->save()){
  176. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:" . $mobile . "添加对应的经销商等级失败" . PHP_EOL, FILE_APPEND);
  177. return;
  178. }
  179. } else {
  180. $dividend_member = TeamDividendAgencyModel::getAgencyInfoByUid($uid);
  181. $dividend_member->level = $levelModel['team_dividend_level_id'];
  182. if (!$dividend_member->save()) {
  183. //throw new ShopException('更新对应的经销商等级失败');
  184. file_put_contents(base_path('migrate_hf_level_exception_excel.txt'), "手机号:" . $mobile . "更新对应的经销商等级失败" . PHP_EOL, FILE_APPEND);
  185. return;
  186. }
  187. }
  188. }
  189. }
  190. }