CsAssetsController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace addons\CloudStockTwo\api\modules\v1\controllers;
  3. use addons\CloudStockTwo\common\enums\CloudStockTwoEnum;
  4. use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
  5. use common\enums\AddonsEnum;
  6. use common\enums\UserWalletEnum;
  7. use common\models\common\CapitalLog;
  8. use common\models\user\User;
  9. use services\common\UserWalletService;
  10. class CsAssetsController extends BaseController
  11. {
  12. public $modelClass = '';
  13. /**
  14. * 不用进行登录验证的方法
  15. *
  16. * 例如: ['index', 'update', 'create', 'view', 'delete']
  17. * 默认全部需要验证
  18. *
  19. * @var array
  20. */
  21. protected $authOptional = [];
  22. /**
  23. * @name:
  24. * @msg: 资金明细
  25. * @param {*}
  26. * @return {*}
  27. */
  28. public function actionDetailList()
  29. {
  30. if (!\Yii::$app->request->isGet) {
  31. return $this->error('请求方式错误');
  32. }
  33. $changes_dir = \Yii::$app->request->get('changes_dir');
  34. $changes_type = \Yii::$app->request->get('changes_type');
  35. $date = \Yii::$app->request->get('date');
  36. $page = \Yii::$app->request->get('page', 1);
  37. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  38. $status = \Yii::$app->request->get('status', 0);
  39. $assets_type_map = CloudStockTwoEnum::getAssetsTypeMap();
  40. $changes_types = array_keys($assets_type_map);
  41. $changes_types[] = 0;
  42. if (empty($changes_dir) || !in_array($changes_type, $changes_types)) return $this->error('参数错误');
  43. $wheres[] = ['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'from_type' => AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO];
  44. if (CloudStockTwoEnum::STOCK_CHANGE_ADD == $changes_dir) {
  45. $type = 'add';
  46. } elseif (CloudStockTwoEnum::STOCK_CHANGE_SUB == $changes_dir) {
  47. $type = 'sub';
  48. }
  49. $wheres[] = ['change_type' => $type];
  50. if (!empty($changes_type)) {
  51. $wheres[] = ['capital_type' => $changes_type];
  52. }
  53. if (!empty($date)) {
  54. $start_time = strtotime($date . '-01 00:00:00');
  55. $end_time = strtotime($date . '-' . date('t', $start_time) . ' 23:59:59');
  56. $wheres[] = ['and', ['>=', 'created_at', $start_time], ['<=', 'created_at', $end_time]];
  57. }
  58. if($status == 1) {
  59. //查询冻结表,未结算数据
  60. $wheres[] = ['in', 'status', [-1, 0]];
  61. CapitalLog::$capitalType = 'commission_frozen';
  62. }else{
  63. CapitalLog::$capitalType = 'commission';
  64. }
  65. $params = [
  66. 'select' => 'id,mall_id,user_id,change_type,change_num,current_num,desc,from_type,capital_type,created_at',
  67. 'where' => $wheres,
  68. 'order' => 'created_at desc',
  69. 'page' => $page,
  70. 'limit' => $limit
  71. ];
  72. $detail_list = CapitalLog::listPage($params);
  73. // dd($detail_list);
  74. if (false === $detail_list['list']) {
  75. return $this->error('获取明细失败: ' . CapitalLog::getStaticError());
  76. }
  77. $user = User::find()
  78. ->select('id,nickname,avatar_url,mobile')
  79. ->where(['mall_id' => $this->mall_id, 'id' => $this->user_id])
  80. ->one();
  81. foreach ($detail_list['list'] as &$list) {
  82. $list['nickname'] = ($user['nickname'] ?? $user['mobile']) ?? '';
  83. $list['mobile'] = $user['mobile'] ?? '';
  84. $list['avatar_url'] = $user['avatar_url'] ?? \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
  85. }
  86. if (!empty($assets_type_map)) {
  87. $assets_types[] = [
  88. 'name' => '全部',
  89. 'value' => '',
  90. 'type' => 1,
  91. 'is' => true,
  92. ];
  93. foreach ($assets_type_map as $key => $val) {
  94. $type = [
  95. 'name' => $val,
  96. 'value' => $key,
  97. 'type' => 1,
  98. 'is' => true,
  99. ];
  100. if (UserWalletEnum::RECHARGE_COMMISSION == $key) {
  101. $type['type'] = 2;
  102. }
  103. $assets_types[] = $type;
  104. }
  105. } else {
  106. $assets_types = [];
  107. }
  108. $detail_list['assets_type_map'] = $assets_types;
  109. return $this->success('success', $detail_list);
  110. }
  111. public function actionToBalance()
  112. {
  113. return $this->error('请求方式错误');
  114. if (!\Yii::$app->request->isPost) {
  115. return $this->error('请求方式错误');
  116. }
  117. $money = \Yii::$app->request->post('money');
  118. if (empty($money)) return $this->error('参数错误');
  119. if ($money > $this->stock_agent->price) return $this->error('收益余额不足');
  120. $wallet_datas = [
  121. // 入余额记录
  122. [
  123. 'mall_id' => $this->mall_id,
  124. 'user_id' => $this->user_id,
  125. 'is_frozen' => false,
  126. 'wallet_type' => UserWalletService::WALLET_TYPE_BALANCE,
  127. 'money' => $money,
  128. 'desc' => '云库存收益转入余额,余额增加',
  129. 'source_table' => $this->stock_agent->tableSchema->name,
  130. 'source_table_id' => $this->stock_agent->id,
  131. 'from_type' => AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO,
  132. 'capital_type' => UserWalletEnum::RECHARGE_COMMISSION,
  133. ],
  134. // 出收益的记录
  135. [
  136. 'mall_id' => $this->mall_id,
  137. 'user_id' => $this->user_id,
  138. 'is_frozen' => false,
  139. 'wallet_type' => UserWalletService::WALLET_TYPE_COMMISSION,
  140. 'money' => -$money,
  141. 'desc' => '云库存收益转入余额,收益减少',
  142. 'source_table' => $this->stock_agent->tableSchema->name,
  143. 'source_table_id' => $this->stock_agent->id,
  144. 'from_type' => AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO,
  145. 'capital_type' => UserWalletEnum::RECHARGE_COMMISSION,
  146. ],
  147. ];
  148. $price = bcsub($this->stock_agent->price, $money, 2);
  149. $params = [
  150. 'id' => $this->stock_agent->id,
  151. 'mall_id' => $this->mall_id,
  152. 'price' => $price,
  153. 'before_level' => $this->stock_agent->before_level,
  154. 'level' => $this->stock_agent->level,
  155. ];
  156. $res_agent = CloudStockTwoAgent::setData($params);
  157. if (false === $res_agent) return $this->error(CloudStockTwoAgent::getStaticError());
  158. $res_queue = UserWalletService::batchHandleByQueue($wallet_datas);
  159. if ($res_queue === false) {
  160. return $this->error('云库存收益转入余额出错:' . UserWalletService::getStaticError());
  161. }
  162. return $this->success('操作成功');
  163. }
  164. }