Test.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace app\api\controller\v1;
  3. use app\common\model\ScoreLogModel;
  4. use app\common\model\UserModel;
  5. use think\facade\Db;
  6. use think\Request;
  7. class Test
  8. {
  9. public function test(Request $request)
  10. {
  11. Db::startTrans();
  12. $lists = UserModel::field('id,money,score,profit_money,green_score')->select();
  13. $logs = [];
  14. foreach($lists as $item){
  15. $id = isset($item['id'])? $item['id'] : 0;
  16. $score = isset($item['score'])? $item['score'] : 0;
  17. $money = isset($item['money'])? $item['money'] : 0;
  18. $profit = isset($item['profit_money'])? $item['profit_money'] : 0;
  19. $greenScore = UserModel::where('id', $id)->value('green_score');
  20. $newGreenScore = $greenScore;
  21. if($money>0){
  22. echo "用户{$id} {$money} 余额转入<br>";
  23. $logs[] = [
  24. 'uid'=> $id,
  25. 'type'=> 12,
  26. 'score'=> $money,
  27. 'create_at'=> date('Y-m-d H:i:s'),
  28. 'from_id'=> 0,
  29. 'uid2'=> 0,
  30. 'state'=> 1,
  31. 'before_score'=> $newGreenScore,
  32. 'after_score'=> $newGreenScore+$money,
  33. 'remark'=> '余额转入'
  34. ];
  35. $newGreenScore += $money;
  36. }
  37. if($profit>0){
  38. echo "用户{$id} {$profit} 利润转入<br>";
  39. $logs[] = [
  40. 'uid'=> $id,
  41. 'type'=> 12,
  42. 'score'=> $profit,
  43. 'create_at'=> date('Y-m-d H:i:s'),
  44. 'from_id'=> 0,
  45. 'uid2'=> 0,
  46. 'state'=> 1,
  47. 'before_score'=> $newGreenScore,
  48. 'after_score'=> $newGreenScore+$profit,
  49. 'remark'=> '利润转入'
  50. ];
  51. $newGreenScore +=$profit;
  52. }
  53. if($newGreenScore>0 && !UserModel::where('id',$id)->inc('score',$newGreenScore)->update()){
  54. Db::rollback();
  55. return 'fail';
  56. }
  57. }
  58. if($logs){
  59. if(!ScoreLogModel::insertAll($logs)){
  60. Db::rollback();
  61. return 'fail';
  62. }
  63. if(!UserModel::where('id','>',0)->update(['money'=>0,'profit_money'=>0,'update_time'=>date('Y-m-d H:i:s')])){
  64. Db::rollback();
  65. return 'fail';
  66. }
  67. }
  68. Db::commit();
  69. return 'success';
  70. }
  71. }