CommissionController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php
  2. namespace backend\controllers;
  3. use backend\helpers\DateTimeHelper;
  4. use backend\helpers\PaginationHelper;
  5. use backend\helpers\ValidatorHelper;
  6. use backend\models\CommissionLog;
  7. use backend\models\CommissionTicket;
  8. use backend\models\Member;
  9. use backend\models\Mt4Trades;
  10. use backend\models\UserMember;
  11. use Yii;
  12. use backend\models\Commission;
  13. class CommissionController extends BaseController
  14. {
  15. /**
  16. * 返佣规则
  17. */
  18. public function actionRule()
  19. {
  20. $member_id = Yii::$app->request->post('member_id');
  21. $login = (int) Yii::$app->request->post('login');
  22. $model = new Commission();
  23. $list = $model->getCommissionByMemberIdAndLogins($member_id, [$login]);
  24. if (!empty($list[$login])) {
  25. return $this->outJson(1, $list[$login]);
  26. } else {
  27. return $this->outJson(0);
  28. }
  29. }
  30. /**
  31. * 已返佣设置
  32. * @return \yii\web\Response
  33. */
  34. public function actionSetHadComm()
  35. {
  36. $login = intval(Yii::$app->getRequest()->post('login'));
  37. if ($login <= 0) {
  38. return $this->outJson(0, [], '未指定数据对象');
  39. }
  40. $trades = Mt4Trades::findAllCloseTrade($login);
  41. if ($trades) {
  42. while ($pieces = array_splice($trades, 0, 1000)) {
  43. $rows = [];
  44. foreach ($pieces as $piece) {
  45. $rows[] = [
  46. 'ticket' => $piece['TICKET'],
  47. 'type' => 1,
  48. ];
  49. }
  50. if ($rows) {
  51. $command = Mt4Trades::getDb()->createCommand();
  52. $columns = array_combine(array_keys($rows[0]), array_keys($rows[0]));
  53. $sql = $command->batchInsert(CommissionTicket::tableName(), $columns, $rows)->getSql();
  54. $command->setSql(str_ireplace("INSERT INTO", "INSERT IGNORE INTO", $sql))->execute();
  55. }
  56. }
  57. }
  58. return $this->outJson(1, [], '操作成功');
  59. }
  60. /**
  61. * 开启自动返佣
  62. * @return \yii\web\Response
  63. */
  64. public function actionSetIsCommissionRun()
  65. {
  66. $login = intval(Yii::$app->getRequest()->post('login'));
  67. $run = trim(Yii::$app->getRequest()->post('run'));
  68. if ($login <= 0) {
  69. return $this->outJson(0, [], '未指定数据对象');
  70. }
  71. if (!is_numeric($run) || !in_array($run, [0, 1])) {
  72. return $this->outJson(0, [], '参数非法');
  73. }
  74. $userMember = UserMember::findByLogin($login);
  75. if ($userMember == null) {
  76. return $this->outJson(0, [], '数据不存在');
  77. }
  78. $userMember->is_commission_run = $run;
  79. if ($userMember->save()) {
  80. return $this->outJson(1, [], '操作成功');
  81. } else {
  82. return $this->outJson(0, [], '操作失败');
  83. }
  84. }
  85. /**
  86. * 取消上级代理
  87. * @return \yii\web\Response
  88. */
  89. public function actionDelIb()
  90. {
  91. $login = intval(Yii::$app->getRequest()->post('login'));
  92. if ($login <= 0) {
  93. return $this->outJson(0, [], '未指定数据对象');
  94. }
  95. $userMember = UserMember::findByLogin($login);
  96. if ($userMember == null) {
  97. return $this->outJson(0, [], '数据不存在');
  98. }
  99. if ($userMember->delete()) {
  100. Commission::deleteCommissionsByLogin($userMember->login);
  101. return $this->outJson(1, [], '操作成功');
  102. } else {
  103. return $this->outJson(0, [], '操作失败');
  104. }
  105. }
  106. /**
  107. * 批量设置返佣规则
  108. */
  109. public function actionBatchSet()
  110. {
  111. $model = new Commission();
  112. $result = $model->batchSet(Yii::$app->request->post());
  113. if ($result['code']) {
  114. return $this->outJson(1, $result['data']);
  115. } else {
  116. return $this->outJson(0, [], $result['message']);
  117. }
  118. }
  119. /**
  120. * 设置所属代理
  121. * @return \yii\web\Response
  122. */
  123. public function actionSetIb()
  124. {
  125. $login = intval(Yii::$app->getRequest()->post('login'));
  126. $memberId = intval(Yii::$app->getRequest()->post('memberId'));
  127. if ($login <= 0 || $memberId <= 0) {
  128. return $this->outJson(0, [], '参数非法');
  129. }
  130. $member = Member::findById($memberId);
  131. if ($member == null) {
  132. return $this->outJson(0, [], '所属代理不存在');
  133. }
  134. $userMember = UserMember::findByLogin($login);
  135. if ($userMember == null) {
  136. // 未设置所属代理
  137. $userMember = new UserMember();
  138. $userMember->login = $login;
  139. }
  140. $userMember->member_id = $memberId;
  141. $userMember->name = $member['name'];
  142. $userMember->in_time = intval(microtime(true) * 1000);
  143. if ($userMember->save()) {
  144. Commission::deleteCommissionsByLogin($login);
  145. return $this->outJson(1, $userMember->getAttributes());
  146. } else {
  147. return $this->outJson(0, [], $userMember->getErrors());
  148. }
  149. }
  150. /**
  151. * 返佣规则
  152. * @return \yii\web\Response
  153. */
  154. public function actionDetail()
  155. {
  156. $login = intval(Yii::$app->getRequest()->get('login'));
  157. if ($login <= 0) {
  158. return $this->outJson(0, [], '参数非法');
  159. }
  160. $userMember = UserMember::findByLogin($login);
  161. if ($userMember == null) {
  162. return $this->outJson(0, [], '数据为空');
  163. }
  164. $member = Member::findById($userMember['member_id']);
  165. $parents = [];
  166. if ($member != null) {
  167. $parents = Member::findParents($member['id']);
  168. foreach ($parents as &$parent) {
  169. $parent['comm'] = Commission::findByCommission($login, $parent['id']);
  170. }
  171. }
  172. return $this->outJson(1, $parents);
  173. }
  174. /**
  175. * 设置返佣规则
  176. * @return \yii\web\Response
  177. */
  178. public function actionSetCommission()
  179. {
  180. $login = intval(Yii::$app->getRequest()->post('login'));
  181. $userId = intval(Yii::$app->getRequest()->post('userId'));
  182. if ($login <= 0) {
  183. return $this->outJson(0, [], '参数非法');
  184. }
  185. Commission::deleteCommissionsByLogin($login);
  186. $userMember = UserMember::findByLogin($login);
  187. if ($userMember != null) {
  188. $parents = Member::findParents($userMember['member_id']);
  189. foreach ((array)$parents as $parent) {
  190. $f = floatval(Yii::$app->getRequest()->post("f{$parent['id']}", 0)); // 外汇
  191. $m = floatval(Yii::$app->getRequest()->post("m{$parent['id']}", 0)); // 贵金属
  192. $c = floatval(Yii::$app->getRequest()->post("c{$parent['id']}", 0)); // 原油
  193. $h = floatval(Yii::$app->getRequest()->post("h{$parent['id']}", 0)); // 黄金
  194. $b = floatval(Yii::$app->getRequest()->post("b{$parent['id']}", 0)); // 白银
  195. $wy = floatval(Yii::$app->getRequest()->post("wy{$parent['id']}", 0)); // 外佣
  196. $g = floatval(Yii::$app->getRequest()->post("g{$parent['id']}", 0)); // 股指
  197. $bt = floatval(Yii::$app->getRequest()->post("bt{$parent['id']}", 0)); // 比特币
  198. $commission = new Commission();
  199. $commission->login = $login;
  200. $commission->member_id = $parent['id'];
  201. $commission->forex = $f;
  202. $commission->metal = $m;
  203. $commission->cfd = $c;
  204. $commission->gold = $h;
  205. $commission->silver = $b;
  206. $commission->wy = $wy;
  207. $commission->stock = $g;
  208. $commission->btc = $bt;
  209. $commission->in_time = intval(microtime(true) * 1000);
  210. if ($commission->save()) {
  211. $commissionLog = new CommissionLog();
  212. $commissionLog->login = $login;
  213. $commissionLog->member_id = $parent['id'];
  214. $commissionLog->type = 'no';
  215. $commissionLog->forex = $f;
  216. $commissionLog->metal = $m;
  217. $commissionLog->cfd = $c;
  218. $commissionLog->gold = $h;
  219. $commissionLog->silver = $b;
  220. $commissionLog->wy = $wy;
  221. $commissionLog->stock = $g;
  222. $commissionLog->btc = $bt;
  223. $commissionLog->modify_user = $userId;
  224. $commissionLog->in_time = DateTimeHelper::microtime_float();
  225. $commissionLog->save();
  226. }
  227. }
  228. }
  229. return $this->outJson(1, [], '操作成功');
  230. }
  231. /**
  232. * 获取返佣规则记录log
  233. */
  234. public function actionGetCommissionLog()
  235. {
  236. $data = Yii::$app->getRequest()->get();
  237. $data['memberId'] = isset($data['memberId']) ? intval($data['memberId']) : '';
  238. $data['search'] = isset($data['search']) ? trim($data['search']) : '';
  239. $data['page'] = isset($data['page']) ? max(intval($data['page']), 1) : 1;
  240. $data['pageSize'] = isset($data['pageSize']) ? intval($data['pageSize']) : 20;
  241. $data['orderBy'] = isset($data['orderBy']) ? trim($data['orderBy']) : 'in_time desc';
  242. $data = ValidatorHelper::validateData($data, [
  243. ['search', 'string'],
  244. ['page', 'integer', 'min' => 1],
  245. ['pageSize', 'integer', 'min' => 1],
  246. ['orderBy', 'string'],
  247. ], $errors);
  248. if ($data == false) {
  249. return $this->outJson(0, '', $errors);
  250. }
  251. $query = CommissionLog::find()->alias('a')
  252. ->select('a.id,a.login,a.member_id,a.type,a.forex,a.metal,a.cfd,a.gold,a.silver,a.wy,a.stock,a.btc,a.in_time,b.name')
  253. ->leftJoin('crm_member as b', 'a.modify_user = b.id')
  254. ->where(['member_id' => $data['memberId']])
  255. ->orderBy($data['orderBy']);
  256. if (!empty($data['search'])) {
  257. $query->andFilterWhere(['like', 'a.member_id', $data['search']]);
  258. }
  259. $result = PaginationHelper::queryPage($query, $data['page'], $data['pageSize']);
  260. return $this->outJson(1, $result);
  261. }
  262. }