IndexController.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace addons\CloudStockTwo\console\controllers;
  3. use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
  4. use addons\CloudStockTwo\common\sms\RewardMessage;
  5. use addons\CloudStockTwo\common\sms\SmsConfig;
  6. use common\enums\AddonsEnum;
  7. use common\enums\OrderStatusEnum;
  8. use common\enums\StatusEnum;
  9. use common\enums\UserWalletEnum;
  10. use common\models\common\CapitalLog;
  11. use common\models\mall\Mall;
  12. use common\models\mall\MallAddons;
  13. use common\models\order\Order;
  14. use common\models\order\OrderDetail;
  15. use common\models\user\User;
  16. use Overtrue\EasySms\EasySms;
  17. use Overtrue\EasySms\Exceptions\NoGatewayAvailableException;
  18. use services\common\UserWalletService;
  19. use yii\console\Controller;
  20. class IndexController extends Controller
  21. {
  22. public function actionSettlement()
  23. {
  24. $mall_list = Mall::getEnableMallList(true);
  25. foreach ($mall_list as $mall) {
  26. if (MallAddons::isInstall($mall['id'], AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO) == 0) continue;
  27. $params['where'] = [
  28. ['mall_id' => $mall['id']],
  29. ['source_table' => OrderDetail::tableName()],
  30. ['from_type' => AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO],
  31. ['capital_type' => [UserWalletEnum::PAYMENT_FOR_GOODS_BUY]],
  32. ['status' => CapitalLog::STATUS_WAIT_SEND]
  33. ];
  34. //货款
  35. $wallet_type = 'commission';
  36. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  37. $commission_list = CapitalLog::lists($params);
  38. if (empty($commission_list)) continue;
  39. $source_table_id = array_column($commission_list, 'source_table_id');
  40. $order_detail_list = OrderDetail::lists(['where' => [['id' => $source_table_id]], 'select' => 'id,order_id', 'index' => 'id']);
  41. $order_ids = array_column($order_detail_list, 'order_id');
  42. $order_list = Order::lists(['where' => [['id' => $order_ids], ['order_status' => OrderStatusEnum::ACCOMPLISH]], 'select' => 'id', 'index' => 'id']);
  43. $user_ids = array_column($commission_list,'user_id');
  44. $user_arr = User::lists(['where'=>[['id'=>$user_ids]],'select'=>'id,mobile','index'=>'id']);
  45. $obj = new CloudStockTwoAgent();
  46. foreach ($commission_list as $item) {
  47. if (empty($order_detail_list[$item['source_table_id']])) continue;
  48. $order_id = $order_detail_list[$item['source_table_id']]['order_id'];
  49. if (empty($order_list[$order_id])) continue;
  50. $res = UserWalletService::unfrozen($item['id'], $wallet_type);
  51. if ($res) {
  52. $cloud_stock_agent_model = CloudStockTwoAgent::findOne(['user_id' => $item['user_id'], 'status' => StatusEnum::ENABLED]);
  53. $cloud_stock_agent_model->frozen_price -= $item['change_num'];
  54. if ($cloud_stock_agent_model->frozen_price < 0) $cloud_stock_agent_model->frozen_price = 0;
  55. $cloud_stock_agent_model->save();
  56. $obj->sendGoodsMoneyMessage($user_arr,$item);
  57. }
  58. }
  59. }
  60. }
  61. }