Storedepositlog.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace app\common\model;
  3. use think\facade\Db;
  4. /**
  5. * ============================================================================
  6. *
  7. * ============================================================================
  8. *
  9. * ----------------------------------------------------------------------------
  10. *
  11. * ============================================================================
  12. * 数据层模型
  13. */
  14. class Storedepositlog extends BaseModel
  15. {
  16. const TYPE_RECHARGE = 1;
  17. const TYPE_WITHDRAW = 2;
  18. const TYPE_ADMIN = 3;
  19. const TYPE_VERIFY = 4;
  20. const TYPE_PAY = 5;
  21. const TYPE_VIEW = 6;
  22. const STATE_VALID = 1;
  23. const STATE_WAIT = 2;
  24. const STATE_AGREE = 3;
  25. const STATE_REJECT = 4;
  26. const STATE_PAYED = 5;
  27. const STATE_CANCEL = 6;
  28. const STATE_PAYING = 7;
  29. public $page_info;
  30. /**
  31. * 取提现单信息总数
  32. * @access public
  33. * @author csdeshang
  34. * @param type $condition 条件
  35. * @return int
  36. */
  37. public function getStoredepositlogWithdrawCount($condition = array())
  38. {
  39. return Db::name('storedepositlog')->where(array('storedepositlog_type' => self::TYPE_WITHDRAW))->where($condition)->count();
  40. }
  41. /**
  42. * 取得资金变更日志信息
  43. * @access public
  44. * @author csdeshang
  45. * @param type $condition 条件
  46. * @param type $fields 字段
  47. * @return array
  48. */
  49. public function getStoredepositlogInfo($condition = array(), $fields = '')
  50. {
  51. $pdlog_list_paginate = Db::name('storedepositlog')->where($condition)->field($fields)->find();
  52. return $pdlog_list_paginate;
  53. }
  54. /**
  55. * 取得资金变更日志信息
  56. * @access public
  57. * @author csdeshang
  58. * @param type $condition 条件
  59. * @param type $data 字段
  60. * @return array
  61. */
  62. public function editStoredepositlog($condition = array(), $data = array())
  63. {
  64. $pdlog_list_paginate = Db::name('storedepositlog')->where($condition)->update($data);
  65. return $pdlog_list_paginate;
  66. }
  67. /**
  68. * 取得资金变更日志列表
  69. * @access public
  70. * @author csdeshang
  71. * @param type $condition 条件
  72. * @param type $pagesize 页面信息
  73. * @param type $fields 字段
  74. * @param type $order 排序
  75. * @param type $limit 限制
  76. * @return array
  77. */
  78. public function getStoredepositlogList($condition = array(), $pagesize = '', $fields = '*', $order = '', $limit = 0)
  79. {
  80. if ($pagesize) {
  81. $pdlog_list_paginate = Db::name('storedepositlog')->where($condition)->field($fields)->order($order)->paginate(['list_rows' => $pagesize, 'query' => request()->param()], false);
  82. $this->page_info = $pdlog_list_paginate;
  83. return $pdlog_list_paginate->items();
  84. } else {
  85. $pdlog_list_paginate = Db::name('storedepositlog')->where($condition)->field($fields)->order($order)->limit($limit)->select()->toArray();
  86. return $pdlog_list_paginate;
  87. }
  88. }
  89. /**
  90. * 变更资金
  91. * @access public
  92. * @author csdeshang
  93. * @param type $data
  94. * @return type
  95. */
  96. public function changeStoredeposit($data = array())
  97. {
  98. if (!isset($data['store_id'])) {
  99. throw new \think\Exception(lang('param_error'), 10006);
  100. }
  101. $store_info = Db::name('store')->where('store_id', $data['store_id'])->field('store_avaliable_deposit,store_freeze_deposit,store_payable_deposit,store_name')->lock(true)->find();
  102. if (!$store_info) {
  103. throw new \think\Exception(lang('ds_store_is_not_exist'), 10006);
  104. }
  105. $data['store_name'] = $store_info['store_name'];
  106. $store_data = array();
  107. if (isset($data['store_avaliable_deposit']) && $data['store_avaliable_deposit'] != 0) {
  108. if ($data['store_avaliable_deposit'] < 0 && $store_info['store_avaliable_deposit'] < abs($data['store_avaliable_deposit'])) { //检查资金是否充足
  109. throw new \think\Exception(lang('ds_store_avaliable_deposit_is_not_enough'), 10006);
  110. }
  111. $store_data['store_avaliable_deposit'] = bcadd($store_info['store_avaliable_deposit'], $data['store_avaliable_deposit'], 2);
  112. }
  113. if (isset($data['store_freeze_deposit']) && $data['store_freeze_deposit'] != 0) {
  114. if ($data['store_freeze_deposit'] < 0 && $store_info['store_freeze_deposit'] < abs($data['store_freeze_deposit'])) { //检查资金是否充足
  115. throw new \think\Exception(lang('ds_store_freeze_deposit_is_not_enough'), 10006);
  116. }
  117. $store_data['store_freeze_deposit'] = bcadd($store_info['store_freeze_deposit'], $data['store_freeze_deposit'], 2);
  118. }
  119. if (isset($data['store_payable_deposit']) && $data['store_payable_deposit'] != 0) {
  120. if ($data['store_payable_deposit'] < 0 && $store_info['store_payable_deposit'] < abs($data['store_payable_deposit'])) { //检查资金是否充足
  121. throw new \think\Exception(lang('ds_store_payable_deposit_is_not_enough'), 10006);
  122. }
  123. $store_data['store_payable_deposit'] = bcadd($store_info['store_payable_deposit'], $data['store_payable_deposit'], 2);
  124. }
  125. if (!empty($store_data)) {
  126. if (!Db::name('store')->where('store_id', $data['store_id'])->update($store_data)) {
  127. throw new \think\Exception(lang('ds_store_deposit_adjust_fail'), 10006);
  128. }
  129. }
  130. $insert = Db::name('storedepositlog')->insertGetId($data);
  131. if (!$insert) {
  132. throw new \think\Exception(lang('ds_store_deposit_log_insert_fail'), 10006);
  133. }
  134. return $insert;
  135. }
  136. }