ImportOrderFromC.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\command;
  4. use app\admin\model\OrderImportFromC as OIFCModel;
  5. use think\console\Command;
  6. use think\console\Input;
  7. use think\console\input\Argument;
  8. use think\console\input\Option;
  9. use think\console\Output;
  10. use think\facade\Db;
  11. use think\facade\Validate;
  12. //C端订单导入
  13. class ImportOrderFromC extends Command
  14. {
  15. protected function configure()
  16. {
  17. // 指令配置
  18. $this->setName('analysisData')
  19. ->setDescription('批量解析C端导入的订单数据');
  20. }
  21. //【脚本1】解析用户导入的数据
  22. protected function execute(Input $input, Output $output)
  23. {
  24. //解析信息存到extend表,其中customer_code字段根据订单编号去customer_info查,其他根据商品编号查询
  25. Db::startTrans();
  26. try {
  27. $order_import_from_c_db = Db::name('order_import_from_c');
  28. $order_import_from_c_extend_db = Db::name('order_import_from_c_extend');
  29. // $customer_info_db = Db::name('customer_info')->field('companyNo')->where(['is_del' => 0]);
  30. $rs = $order_import_from_c_db
  31. ->where([
  32. 'is_del' => OIFCModel::$is_del_normal,
  33. 'status' => OIFCModel::$status_wait_validate
  34. ])->find();
  35. //加写锁
  36. //1.数据校验
  37. $val = Validate::rule([
  38. 'platform_code|平台订单号' => 'require',
  39. 'platform_time|平台下单时间' => 'require|date',
  40. 'sale_source|销售渠道' => 'require',
  41. 'plat_code|平台商品编号' => 'require',
  42. 'price|单价' => 'require|float',
  43. 'num|数量' => 'require|number',
  44. 'before_discount_all_price|优惠前总金额' => 'require|float',
  45. 'mode|收费模式' => 'require',
  46. 'contactor|收货人' => 'require',
  47. 'mobile|联系电话' => 'require',
  48. 'addr|联系地址' => 'require',
  49. ]);
  50. $update_c_data = ['updatetime' => date('Y-m-d H:i:s')];
  51. if (!$val->check($rs)) {
  52. $update_c_data['status'] = OIFCModel::$status_wait_confirm;
  53. $update_c_data['remark'] = '数据格式不对,' . $val->getError();
  54. }
  55. $extend_insert_data = [
  56. 'order_import_from_c_id' => $rs['id'],
  57. 'createrid' => 0,
  58. 'creater' => 'system',
  59. 'discount_reason' => $rs['activity_name']
  60. ];
  61. //组织extend的数据
  62. $good_platform_info = Db::name('good_platform')
  63. ->field('id,spuCode,platform_code,skuCode')
  64. ->where(['is_del' => 0])
  65. ->where('plat_code', $rs['plat_code'])
  66. ->find();
  67. if (!empty($good_platform_info)) {
  68. $extend_insert_data['spuCode'] = $good_platform_info['spuCode'];
  69. $extend_insert_data['platform_codes'] = $good_platform_info['platform_code'];
  70. $good_info = Db::name('good')
  71. ->field('good_name,good_code,companyNo,supplierNo,is_stock,packing_fee,cert_fee,open_fee,cost_fee,mark_fee,demo_fee,cat_id')
  72. ->where(['is_del' => 0])
  73. ->where('spuCode', $extend_insert_data['spuCode'])
  74. ->find();
  75. if (!empty($good_info)) {
  76. $extend_insert_data['companyNo'] = $good_info['companyNo'];
  77. $extend_insert_data['supplierNo'] = $good_info['supplierNo'];
  78. $extend_insert_data['good_name'] = $good_info['good_name'];
  79. } else {
  80. $update_c_data['status'] = OIFCModel::$status_wait_confirm;
  81. $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在上线商品表中查不到spuCode对应的商品信息' : '在上线商品表中查不到spuCode对应的商品信息';
  82. }
  83. } else {
  84. $update_c_data['status'] = OIFCModel::$status_wait_confirm;
  85. $update_c_data['remark'] = isset($update_c_data['remark']) ? $update_c_data['remark'] . ',在商品平台表中查不到平台商品编号对应的spuCode' : '在商品平台表中查不到平台商品编号对应的spuCode';
  86. }
  87. $order_import_from_c_extend_db->insertGetId($extend_insert_data);
  88. if (!isset($update_c_data['status'])) $update_c_data['status'] = OIFCModel::$status_wait_relation;
  89. $order_import_from_c_db
  90. ->where([
  91. 'id' => $rs['id'],
  92. 'is_del' => OIFCModel::$is_del_normal,
  93. 'status' => OIFCModel::$status_wait_validate
  94. ])->update($update_c_data);
  95. Db::commit();
  96. // 指令输出
  97. $output->writeln('解析成功');
  98. } catch (\think\Exception $exception) {
  99. Db::rollback();
  100. // 指令输出
  101. $output->writeln('解析失败,' . $exception->getMessage() . '|' . $exception->getFile() . '|' . $exception->getLine());
  102. }
  103. }
  104. }