UserGrade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <?php
  2. /**
  3. *------Create thems Model------
  4. *------SCWPHP Version 1.0.0------
  5. *------Dev Model Jions------
  6. *------Create Time 2017-06-12 05:08:18------
  7. */
  8. namespace App\Api\Model;
  9. use App\Api\Controller\Nologin;
  10. use \System\Model;
  11. class UserGrade extends Model {
  12. protected $table = 'dc_user_grade';
  13. //晋级等级
  14. function upgrade($todata, $totol_Money=0){
  15. if (empty($todata)) {
  16. return '-50003';
  17. }
  18. $result['data'] = $todata;
  19. if ($result['data']['grade'] == 0 || $result['data']['grade'] == -1) {
  20. return '-50019';
  21. }
  22. //查询等级规则
  23. $gradelist = lm ('UserGrade', 'Api')->select ('name', 'rule','grade', 'rule_details')->orderBy ('grade', 'asc')->get ();
  24. if (!count($gradelist)) {
  25. return '-5002';
  26. }
  27. $nextgradeinfo = $gradelist[0];
  28. $gradelist = $gradelist->toArray ();
  29. $nextgradeinfo = $nextgradeinfo->toArray ();
  30. $nextgradeinfo['rule_details'] = explode (',', $nextgradeinfo['rule_details']);
  31. $rule_details = $nextgradeinfo['rule_details'];
  32. //查询统计数据
  33. $params['account_identity'] = $result['data']['account_identity'];
  34. $total = 0;
  35. $save = lm ('MoneyRecharge', 'Api')->getPromotionAmount($params);
  36. if(!$totol_Money){
  37. $sixbet = lm ('SixmoneyBuy', 'Api')->getsixstreamAmount($params);
  38. $bet = lm ('MoneyBuy', 'Api')->getstreamAmount($params);
  39. $zheren = (new Nologin())->totalUserStatistics($params['account_identity'],'2018-01-01 00:00:00');
  40. $total = $bet + $sixbet+$zheren;
  41. }else{
  42. $total= $totol_Money ;
  43. }
  44. $newgrade = 0;
  45. $gradename = array();
  46. foreach ($gradelist as $key => $value) {
  47. $rule_details = explode (',', $value['rule_details']);
  48. if ($save >= $rule_details[1] && $total >= $rule_details[2]) {
  49. $newgrade = $value['grade'];
  50. }
  51. $gradename[$value['grade']] = $value['name'];
  52. }
  53. if ($newgrade > 0 && $newgrade > $result['data']['grade']) {
  54. $res = lm ('AccountDetail', 'Api')->where ('account_identity', $result['data']['account_identity'])->update (['grade' => $newgrade]);
  55. if ($res) {
  56. $remark['original_grade'] = $gradename[$result['data']['grade']];
  57. $remark['present_grade'] = $gradename[$newgrade];
  58. $remark['newgrade'] = $newgrade;
  59. $remark['oldgrade'] = $result['data']['grade'];
  60. $remark['type'] = $nextgradeinfo['rule_details'][0];
  61. $remark['save'] = $save;
  62. $remark['bet'] = $bet + $sixbet;
  63. $data['account_identity'] = $result['data']['account_identity'];
  64. $data['remark'] = json_encode ($remark);
  65. $data['account_name'] = $result['data']['account'];
  66. $data['type'] = 'promotion';
  67. $data['create_time'] = date ('Y-m-d H:i:s');
  68. lm ('User_log_record', 'Api')->insert ($data);
  69. $Promotiong = lm ('lottery_money', 'Api')->where ('type','upgrade')->first ();
  70. if(!empty($Promotiong)){
  71. $Promotiong = $Promotiong->toArray();
  72. $conent = json_decode ($Promotiong['conent']);
  73. if ($conent->setup == 2) {
  74. $this->gold ($todata,$Promotiong['id']);
  75. }
  76. }
  77. return 1;
  78. } else {
  79. return '-5007';
  80. }
  81. } else {
  82. return '-5003';
  83. }
  84. }
  85. //晋级彩金
  86. function gold($todata,$id){
  87. if (empty($todata)) {
  88. return '-50003';
  89. }
  90. $result['data'] = $todata;
  91. if ($result['data']['grade'] == 0 || $result['data']['grade'] == -1) {
  92. return '-50019';
  93. }
  94. $userinfo = $todata;
  95. $wherel['type'] = 'upgrade';
  96. $wherel['id'] = $id;
  97. $Promotiong = lm ('lottery_money', 'Api')->where ($wherel)->first ();
  98. if (empty($Promotiong)) {
  99. return -50010;
  100. }
  101. $Promotiong = $Promotiong->toArray ();
  102. $conent = json_decode ($Promotiong['conent']);
  103. $gradeinfo = lm ('UserGrade', 'Api')->select ('name', 'rule', 'rule_details')->where ('grade', $userinfo['grade'])->first ();
  104. if (empty($gradeinfo)) {
  105. return -50013;
  106. }
  107. $gradelist = lm ('UserGrade', 'Api')->select ('name','grade')->orderBy ('grade', 'asc')->get ();
  108. if (!count($gradelist)) {
  109. return '-5002';
  110. }
  111. $gradelist = $gradelist->toArray ();
  112. $gradename = array();
  113. foreach ($gradelist as $key => $value) {
  114. $gradename[$value['grade']] = $value['name'];
  115. }
  116. $gradeinfo = $gradeinfo->toArray ();
  117. $gradeinfo['rule_details'] = explode (',', $gradeinfo['rule_details']);
  118. $amount = 0;
  119. $grade = $conent->grade;
  120. if (empty($grade)) {
  121. return -50014;
  122. }
  123. foreach ($grade as $key => $value) {
  124. $gra[$key] = $value;
  125. }
  126. if ($conent->give_type == 'pre') {
  127. $amount = $gradeinfo['rule_details'][2] * $gra[$userinfo['grade']];
  128. } else {
  129. if (!isset($gra[$userinfo['grade']])) Render ('', "-50014");
  130. $amount = $gra[$userinfo['grade']];
  131. }
  132. $where['type'] = 'promotion';
  133. $where['account_identity'] = $result['data']['account_identity'];
  134. $tograde = lm ('User_log_record', 'Api')->where ($where)->get ();
  135. $status = 0;
  136. if (!count($tograde)) {
  137. return -50013;
  138. }
  139. $tograde = $tograde->toArray ();
  140. $newremark = array();
  141. foreach ($tograde as $key => $value) {
  142. $remark = json_decode ($value['remark'], true);
  143. if ($remark['newgrade'] == $userinfo['grade']) {
  144. $status = 1;
  145. if (!empty($remark['oldgrade'])) {
  146. $original_grade = $remark['oldgrade'];
  147. } else {
  148. $original_grade = 0;
  149. }
  150. if ($conent->setup == 2) {
  151. $remark['operator'] = 'system';
  152. $remark['update_time'] = date ('Y-m-d H:i:s');
  153. }
  154. $newremark = $remark;
  155. }else{
  156. $original_grade = 0;
  157. }
  158. }
  159. $originalgradeinfo = lm ('UserGrade', 'Api')->select ('name')->where ('grade', $original_grade)->first ();
  160. if(!empty($originalgradeinfo)){
  161. $originalgradeinfo = $originalgradeinfo->toArray();
  162. }else{
  163. $originalgradeinfo['name'] = $original_grade;
  164. }
  165. if ($status == 1) {
  166. $wheretwo['account_identity'] = $result['data']['account_identity'];
  167. $wheretwo['grade'] = $userinfo['grade'];
  168. $wheretwo['lottery_money_type'] = $Promotiong['type'];
  169. $num = lm ('lottery_money_log', 'Api')->where ($wheretwo)->count ();
  170. if ($num == 0) {
  171. if ($amount > 0) {
  172. $data['account_identity'] = $result['data']['account_identity'];
  173. $data['grade'] = $userinfo['grade'];
  174. $data['lottery_money_type'] = $Promotiong['type'];
  175. $data['lottery_money_id'] = $Promotiong['id'];
  176. $data['lottery_money_name'] = $Promotiong['name'];
  177. $data['money'] = $amount;
  178. $data['create_time'] = date ('Y-m-d H:i:s');
  179. if ($conent->setup == 2) {
  180. $data['status'] = 1;
  181. $data['operator'] = 'system';
  182. //$setupname = '自动计算';
  183. } else {
  184. $data['status'] = 0;
  185. //$setupname = '手动计算';
  186. }
  187. $data['account_name'] = $result['data']['account'];
  188. $data['operator_id'] = 0;
  189. $data['detail'] = sprintf (lang('Userup', 'Api')->get ('promotion'), $result['data']['account'], $gradename[$original_grade], $gradename[$userinfo['grade']], $amount);
  190. $data['flow_record'] = json_encode ($newremark);
  191. if ($conent->setup == 2) {
  192. $recharge['info_identity'] = UUID ();
  193. $recharge['order_id'] = OrderID ();
  194. $recharge['apply_time'] = date ('Y-m-d H:i:s');
  195. $recharge['complete_time'] = date ('Y-m-d H:i:s');
  196. $recharge['money'] = $amount;
  197. $recharge['account_identity'] = $result['data']['account_identity'];
  198. $recharge['account_name'] = $result['data']['account'];
  199. $recharge['status'] = 1;
  200. $recharge['recharge_type'] = '活动充值';
  201. $recharge['sysetem_user'] = 'system';
  202. $recharge['reason'] = '用于活动';
  203. $recharge['money_cash'] = $amount + $result['data']['cash'];
  204. $recharge['remark'] = sprintf (lang('Userup', 'Api')->get ('promotion'), $result['data']['account'], $gradename[$original_grade], $gradename[$userinfo['grade']], $amount);
  205. $rechargeremark['order_id'] = $recharge['order_id'];
  206. $rechargeremark['name'] = $result['data']['account'];
  207. $rechargeremark['recharge_time'] = date ('Y-m-d H:i:s');
  208. $rechargeremark['money'] = $recharge['money'];
  209. $rechargeremark['remark'] = sprintf (lang('Userup', 'Api')->get ('promotion'), $result['data']['account'], $gradename[$original_grade], $gradename[$userinfo['grade']], $amount);
  210. $details['info_identity'] = UUID ();
  211. $details['trade_id'] = OrderID ();
  212. $details['account_name'] = $result['data']['account'];
  213. $details['account_identity'] = $result['data']['account_identity'];
  214. $details['money'] = $amount;
  215. $details['money_time'] = date ('Y-m-d H:i:s');
  216. $details['money_type'] = 1;
  217. $details['money_cash'] = $amount + $result['data']['cash'];
  218. $details['trade_type'] = 12;
  219. $details['trade_desc'] = sprintf (lang('Userup', 'Api')->get ('promotion'), $result['data']['account'], $gradename[$original_grade], $gradename[$userinfo['grade']], $amount);
  220. $details['sysetem_user'] = '系统';
  221. $details['status'] = 1;
  222. $mess['title'] = '申领彩金提醒';
  223. $mess['content'] = '恭喜'.$result['data']['account'].'您从'.$originalgradeinfo['name'].'升级到'.$gradeinfo['name'].',通过VIP晋级彩金活动申请的彩金'.$amount.'已到账,请查收!';
  224. $mess['type'] = '1';
  225. $mess['formname'] = '系统通知';
  226. $mess['toname'] = $result['data']['account'];
  227. $mess['add_time'] = date('Y-m-d H:i:s');
  228. $mess['add_status'] = '2';
  229. $MoneyQuery = new \Biz\Money\MoneyQuery;
  230. $MoneyHandle = new \Biz\Money\MoneyHandle;
  231. $MoneyQuery->recordWithdraw (1, $result['data']['account_identity'], 0, $amount, $conent->multiple);
  232. lm ('MoneyRecharge', 'Api')->insert ($recharge);
  233. lm ('MoneyDetails', 'Api')->insert ($details);
  234. lm ('MoneyRechargeRemark', 'Api')->insert ($rechargeremark);
  235. lm("message",'commons')->insert($mess);
  236. try {
  237. $re = $MoneyHandle->updateAccountMoney ($result['data']['account_identity'], $amount, 1);
  238. if ($re < 0) {
  239. _rollBack ();
  240. }
  241. } catch (PDOException $e) {
  242. _rollBack ();
  243. }
  244. }
  245. $res = lm ('lottery_money_log', 'Api')->insert ($data);
  246. if ($res) {
  247. return 1;
  248. } else {
  249. return -50016;
  250. }
  251. } else {
  252. return -50017;
  253. }
  254. } else {
  255. return -50018;
  256. }
  257. } else {
  258. return -50019;
  259. }
  260. }
  261. }