MakeDataCommand.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. namespace App\Console\Commands\Dwbs;
  3. use App\Jobs\Dwbs\ImportOrderJob;
  4. use App\Repositories\Enums\Dwbs\DayTypeEnum;
  5. use App\Repositories\Enums\Dwbs\UserJifenTypeEnum;
  6. use App\Repositories\Enums\ModelStatusEnum;
  7. use App\Repositories\Models\Base\Setting;
  8. use App\Repositories\Models\Base\User;
  9. use App\Repositories\Models\Dwbs\Chengjiu;
  10. use App\Repositories\Models\Dwbs\Good;
  11. use App\Repositories\Models\Dwbs\Order;
  12. use App\Repositories\Models\Dwbs\OrderGood;
  13. use App\Repositories\Models\Dwbs\Ranking;
  14. use App\Repositories\Models\Dwbs\ShopGood;
  15. use App\Repositories\Models\Dwbs\ShopOrder;
  16. use App\Repositories\Models\Dwbs\ShopOrderGood;
  17. use App\Repositories\Models\Dwbs\StatisticalResource;
  18. use App\Repositories\Models\Dwbs\UserJifen;
  19. use App\Repositories\Models\Dwbs\UserXuefen;
  20. use Carbon\Carbon;
  21. use Illuminate\Console\Command;
  22. use Illuminate\Support\Facades\Artisan;
  23. use Illuminate\Support\Facades\Cache;
  24. use Illuminate\Support\Facades\Crypt;
  25. use Illuminate\Support\Facades\DB;
  26. use Illuminate\Support\Str;
  27. /**
  28. * 制造数据
  29. * @package Prettus\Repository\Generators\Commands
  30. * @author Anderson Andrade <contato@andersonandra.de>
  31. */
  32. class MakeDataCommand extends Command
  33. {
  34. /**
  35. * The name of command.
  36. *
  37. * @var string
  38. */
  39. protected $name = 'make:data';
  40. /**
  41. * The description of command.
  42. *
  43. * @var string
  44. */
  45. protected $description = '制造数据';
  46. /**
  47. * The type of class being generated.
  48. *
  49. * @var string
  50. */
  51. protected $type = 'permission';
  52. /**
  53. * Execute the command.
  54. *
  55. * @return void
  56. * @see fire()
  57. */
  58. public function handle()
  59. {
  60. $days = 5;
  61. $startD = Carbon::now()->subDay($days);
  62. UserXuefen::query()->truncate();
  63. UserJifen::query()->truncate();
  64. Ranking::query()->truncate();
  65. StatisticalResource::query()->truncate();
  66. Order::query()->truncate();
  67. OrderGood::query()->truncate();
  68. ShopOrder::query()->truncate();
  69. ShopOrderGood::query()->truncate();
  70. Chengjiu::query()->truncate();
  71. ShopGood::query()->update([
  72. 'duihuan_nums' => 0,
  73. 'nums' => 1,
  74. ]);
  75. User::query()->update([
  76. 'xuefen' => 0,
  77. 'jifen' => 0,
  78. 'yesterday_mingci' => 0,
  79. 'tag' => 0,
  80. 'tag_star' => 0,
  81. 'is_read_xin' => 0,
  82. 'xiaofei_jifen' => 0,
  83. 'last_update_time' => null,
  84. ]);
  85. Cache::flush();
  86. // $day = '2024-11-02';
  87. // $this->makeUserOrder($day);
  88. // sleep(10);
  89. // Artisan::call("statistical:user {$day}");
  90. for ($i = 0; $i <= $days; $i++) {
  91. $day = $startD->clone()->addDays($i)->toDateString();
  92. $this->line("数据:{$day}");
  93. $this->makeUserOrder(Carbon::parse($day)->subDay()->toDateString());
  94. Artisan::call("statistical:user {$day}");
  95. $password = $this->secret('is Run');
  96. }
  97. for ($i = 0; $i <= $days; $i++) {
  98. $day = $startD->clone()->addDays($i)->toDateString();
  99. $this->line("数据:{$day}");
  100. // if (in_array($day, ['2024-10-01', '2024-11-01', '2024-10-28', '2024-11-04'])) Artisan::call("make:statistical-resource {$day}");
  101. Artisan::call("make:statistical-resource {$day}");
  102. }
  103. $this->line('ok');
  104. }
  105. public function makeUser($day, $is_init = false)
  106. {
  107. // $users = User::query()->inRandomOrder()->where('id', '<=', 4)->limit(50)->get();
  108. $users = User::query()->where('id', '<=', 4)->get();
  109. foreach ($users as $user) {
  110. $txf = random_int(100, 200);
  111. $isW = true;
  112. $utxf = 0;
  113. while ($isW) {
  114. $dxf = random_int(10, 100);
  115. if (($dxf + $utxf) <= $txf) {
  116. $utxf += $dxf;
  117. $xuefen = UserXuefen::query()->create([
  118. 'day' => $day,
  119. 'user_id' => $user->id,
  120. 'user_xuefen' => ($user->xuefen + $utxf),
  121. 'xuefen' => $dxf,
  122. 'status' => ModelStatusEnum::OK,
  123. 'source_id' => 1,
  124. 'source_type' => Order::class,
  125. 'created_at' => Carbon::parse($day),
  126. 'updated_at' => Carbon::parse($day)
  127. ]);
  128. UserJifen::query()->create([
  129. 'day' => $day,
  130. 'type' => UserJifenTypeEnum::xuefenduihuan,
  131. 'user_id' => $user->id,
  132. 'user_jifen' => ($user->jifen + $utxf),
  133. 'jifen' => $dxf,
  134. 'status' => ModelStatusEnum::OK,
  135. 'source_id' => 1,
  136. 'source_type' => Order::class,
  137. 'created_at' => Carbon::parse($day),
  138. 'updated_at' => Carbon::parse($day)
  139. ]);
  140. } else {
  141. $sy = $txf - $utxf;
  142. if ($sy) {
  143. $utxf += $sy;
  144. $xuefen = UserXuefen::query()->create([
  145. 'day' => $day,
  146. 'user_id' => $user->id,
  147. 'user_xuefen' => ($user->xuefen + $utxf),
  148. 'xuefen' => $sy,
  149. 'status' => ModelStatusEnum::OK,
  150. 'source_id' => 1,
  151. 'source_type' => Order::class,
  152. 'created_at' => Carbon::parse($day),
  153. 'updated_at' => Carbon::parse($day)
  154. ]);
  155. UserJifen::query()->create([
  156. 'day' => $day,
  157. 'type' => UserJifenTypeEnum::xuefenduihuan,
  158. 'user_id' => $user->id,
  159. 'user_jifen' => ($user->jifen + $utxf),
  160. 'jifen' => $sy,
  161. 'status' => ModelStatusEnum::OK,
  162. 'source_id' => 1,
  163. 'source_type' => Order::class,
  164. 'created_at' => Carbon::parse($day),
  165. 'updated_at' => Carbon::parse($day)
  166. ]);
  167. } else {
  168. $isW = false;
  169. }
  170. }
  171. }
  172. $user->xuefen += $txf;
  173. $user->jifen += $txf;
  174. $user->last_update_time = Carbon::parse($day);
  175. $user->save();
  176. }
  177. }
  178. public function makeUserOrder($day, $is_init = false)
  179. {
  180. // $users = User::query()->limit(1)->get();
  181. $users = User::query()->where('id', '<=', 50)->inRandomOrder()->limit(10)->get();
  182. $startDate = Carbon::parse($day)->startOfDay();
  183. $endDate = Carbon::parse($day)->endOfDay();
  184. foreach ($users as $user) {
  185. $orderNums = random_int(1, 3);
  186. for ($i = 0; $i < $orderNums; $i++) {
  187. $randomDate = Carbon::instance(
  188. $startDate->copy()->addSeconds(random_int(0, $endDate->diffInSeconds($startDate)))
  189. );
  190. $txf = random_int(1, 3);
  191. $da = [];
  192. $goods = Good::query()->inRandomOrder()->limit($txf)->get();
  193. foreach ($goods as $good) {
  194. $da[] = [
  195. 'ProductGroupID' => 9,
  196. 'ProductGroupSKUID' => 9,
  197. 'ProductName' => "大卫博士罐装内裤(青春版)",
  198. 'ProductCode' => $good['name'],
  199. 'SKUCode' => "青春版",
  200. 'AttributesVales' => [],
  201. 'Qty' => random_int(1, 10),
  202. ];
  203. }
  204. $data = [
  205. 'Type' => 1,
  206. 'RetailID' => 134,
  207. 'Code' => Order::makeNo(),
  208. 'OrderTime' => $randomDate->toDateTimeString(),
  209. 'AuthorizationCode' => $user->code,
  210. 'Domain' => "http://hnsystemse.njjinhao.top/",
  211. 'data' => $da
  212. ];
  213. dispatch(new ImportOrderJob(json_encode($data, true)));
  214. }
  215. }
  216. }
  217. }