User.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php namespace Place_order\Lib\Source;
  2. use Dever;
  3. use Place;
  4. class User
  5. {
  6. public function up_commit(){}
  7. public function up($uid, $source_id, $sku_id, $type, $amount)
  8. {
  9. if ($amount <= 0) {
  10. return true;
  11. }
  12. $data['uid'] = $uid;
  13. $data['source_id'] = $source_id;
  14. $data['sku_id'] = $sku_id;
  15. $data['type'] = $type;
  16. $data['amount'] = $amount;
  17. $state = Dever::db('user_source_log', 'place_order')->insert($data);
  18. if ($state) {
  19. $this->sync($uid, $source_id, $sku_id);
  20. }
  21. return $state;
  22. }
  23. # 扣减使用次数
  24. public function use($uid, $source_id, $sku_id, $amount = 1)
  25. {
  26. $this->check($uid, $source_id, $sku_id, $amoun);
  27. return $this->up($uid, $source_id, $sku_id, 2, $amount);
  28. }
  29. # 检测余额
  30. public function check($uid, $source_id, $sku_id, $amount)
  31. {
  32. if ($amount <= 0) {
  33. Dever::error('数量不正确');
  34. }
  35. $info = $this->get($uid, $source_id, $sku_id);
  36. if (!$info) {
  37. Dever::error('余额不足');
  38. }
  39. $yue = $info['unum_balance'];
  40. if ($yue < $amount) {
  41. Dever::error('余额不足');
  42. }
  43. }
  44. # 获取余额
  45. public function get($uid, $source_id, $sku_id)
  46. {
  47. $data['uid'] = $uid;
  48. $data['source_id'] = $source_id;
  49. $data['sku_id'] = $sku_id;
  50. $info = Dever::db('user_source', 'place_order')->find($data);
  51. return $info;
  52. }
  53. # 更新余额
  54. public function sync($uid, $source_id, $sku_id)
  55. {
  56. $where = array
  57. (
  58. 'uid' => $uid,
  59. 'source_id' => $source_id,
  60. 'sku_id' => $sku_id,
  61. 'type' => 1,
  62. );
  63. $data['unum_total'] = Dever::db('user_source_log', 'place_order')->sum($where, 'amount');
  64. $where['type'] = 2;
  65. $data['unum_used'] = Dever::db('user_source_log', 'place_order')->sum($where, 'amount');
  66. $data['unum_balance'] = $data['unum_total'] - $data['unum_used'];
  67. return Dever::db('user_source', 'place_order')->update(['uid' => $uid, 'source_id' => $source_id, 'sku_id' => $sku_id], $data);
  68. /*
  69. $data['uid'] = $uid;
  70. $data['source_id'] = $source_id;
  71. $data['sku_id'] = $sku_id;
  72. $info = Dever::db('user_source', 'place_order')->find($data);
  73. if (!$info) {
  74. $data['unum_total'] = $amount;
  75. $data['unum_balance'] = array('unum_total', '-', 'unum_used');
  76. $state = Dever::db('user_source', 'place_order')->insert($data);
  77. } else {
  78. $data['unum_total'] = array('+', $amount);
  79. $data['unum_balance'] = array('unum_total', '-', 'unum_used');
  80. $state = Dever::db('user_source', 'place_order')->update($info['id'], $data);
  81. }*/
  82. }
  83. }