WithdrawCash.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/11/17
  6. * Time: 下午4:32
  7. */
  8. namespace App\Modules\Finance\Models;
  9. use App\Modules\Finance\Services\WithdrawCashService;
  10. use Illuminate\Database\Eloquent\Model;
  11. use DB;
  12. /**
  13. * Class WithdrawCash 提现
  14. * @package App\Modules\Finance\Models
  15. */
  16. class WithdrawCash extends Model
  17. {
  18. protected $table = 'withdraw_cashes';
  19. protected $fillable = ['distribution_channel_id','distribution_channel_name','amount', 'tallage', 'status','remark','serial_number', 'is_company', 'check_user_id','check_user_name'];
  20. /**
  21. * 获取最后一条提现记录
  22. * @param $channel_id
  23. * @return mixed
  24. */
  25. public static function getWithdrawCashLastRecord($channel_id) {
  26. $search_object = self::orderBy('id','desc');
  27. $search_object->where('distribution_channel_id', $channel_id);
  28. $result = $search_object->first();
  29. return $result;
  30. }
  31. /**
  32. * 根据渠道ID,时间,获取列表
  33. * @param $distribution_channel_id
  34. * @param $distribution_channel_name
  35. * @param string $start_date
  36. * @param string $end_date
  37. * @param string $status
  38. * @param bool $is_all
  39. * @return mixed
  40. */
  41. static function getListByDistributionChannel($distribution_channel_id='', $distribution_channel_name='', $start_date='',$end_date='', $status = '', $is_all=false)
  42. {
  43. $search_object = self::orderBy('created_at','desc');
  44. if($distribution_channel_id) {
  45. $search_object->where('distribution_channel_id', $distribution_channel_id);
  46. }
  47. if($distribution_channel_name) {
  48. $search_object->where('withdraw_cashes.distribution_channel_name', 'like', "%".$distribution_channel_name."%");
  49. }
  50. if($start_date) $search_object->where('created_at','>=',$start_date);
  51. if($end_date) $search_object->where('created_at','<=',$end_date);
  52. if($status) $search_object->whereIn('status', $status);
  53. if($is_all)
  54. {
  55. return $search_object->get();
  56. }else{
  57. return $search_object->paginate();
  58. }
  59. }
  60. /**
  61. * 财务对账
  62. * @param $params[]
  63. * channel_id:渠道ID 可选
  64. * channel_name:渠道名称 可选
  65. * start_date:开始时间 可选
  66. * end_date:结束时间 可选
  67. * is_frozen:冻结 0; -1 可选
  68. * account_name:打款人姓名
  69. * status:打款状态 status 状态 查看接口 WithdrawCashService::getWithdrawCashStatusList
  70. * search_name: 搜索名称
  71. * is_company: 0:私人; 1:公司
  72. * @param $isAll
  73. * @return mixed
  74. */
  75. static function getFinancialCountingParam($params=[], $isAll = '') {
  76. $search_object = self::select([
  77. 'withdraw_cashes.id',
  78. 'withdraw_cashes.distribution_channel_id as channel_id',
  79. 'withdraw_cashes.distribution_channel_name as channel_name',
  80. 'withdraw_cashes.amount',
  81. 'withdraw_cashes.tallage',
  82. 'withdraw_cashes.status as wc_status',
  83. 'withdraw_cashes.remark',
  84. 'withdraw_cashes.serial_number',
  85. 'withdraw_cashes.is_company',
  86. 'withdraw_cashes.check_user_id',
  87. 'withdraw_cashes.check_user_name',
  88. 'withdraw_cashes.updated_at',
  89. 'withdraw_cashes.created_at',
  90. 'cash_accounts.account_name',
  91. 'cash_accounts.identity_card',
  92. 'cash_accounts.card_number',
  93. 'cash_accounts.account_bank',
  94. 'cash_accounts.bank',
  95. 'cash_accounts.province',
  96. 'cash_accounts.status as ca_status',
  97. DB::raw('IFNULL(financial_configs.is_frozen, 0) as is_frozen'),
  98. DB::raw('IFNULL(financial_configs.remark , "") as fc_remark'),
  99. ])
  100. ->leftjoin('cash_accounts','cash_accounts.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
  101. ->leftjoin('financial_configs','financial_configs.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
  102. ->where('withdraw_cashes.distribution_channel_id', '>', 0)
  103. ->orderBy('withdraw_cashes.id','desc');
  104. if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('withdraw_cashes.distribution_channel_id', $params['channel_id']);
  105. if(isset($params['search_name']) && $params['search_name']) {
  106. $search_object->where(function ($query) use($params) {
  107. $query->where('withdraw_cashes.distribution_channel_name','like', "%".$params['search_name']."%")
  108. ->orWhere('cash_accounts.account_name', 'like', "%".$params['search_name']."%");
  109. });
  110. }
  111. if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('withdraw_cashes.distribution_channel_name','like', "%".$params['channel_name']."%");
  112. if(isset($params['account_name']) && $params['account_name']) $search_object->where('cash_accounts.account_name', 'like', "%".$params['account_name']."%");
  113. if(isset($params['start_date']) && $params['start_date']) $search_object->where('withdraw_cashes.updated_at','>=', $params['start_date']);
  114. if(isset($params['end_date']) && $params['end_date']) $search_object->where('withdraw_cashes.updated_at','<=', $params['end_date']);
  115. if(isset($params['is_company']) && is_numeric($params['is_company'])) $search_object->where('withdraw_cashes.is_company', $params['is_company']);
  116. if(isset($params['status']) && $params['status']) {
  117. $search_object->whereIn('withdraw_cashes.status', $params['status']);
  118. } else {
  119. $search_object->whereIn('withdraw_cashes.status', WithdrawCashService::getWithdrawCashStatusStrSuccessAndFailList());
  120. }
  121. if(isset($params['is_frozen']) && is_numeric($params['is_frozen'])) {
  122. if($params['is_frozen'] == 0) {
  123. $search_object->where(function ($query) use($params) {
  124. $query->where('financial_configs.is_frozen', 0)
  125. ->orWhereNull('financial_configs.is_frozen');
  126. });
  127. } else {
  128. $search_object->where('financial_configs.is_frozen', $params['is_frozen']);
  129. }
  130. }
  131. if($isAll) {
  132. return $search_object->get();
  133. } else {
  134. return $search_object->paginate();
  135. }
  136. }
  137. /**
  138. * 财务审核
  139. * @param $params[]
  140. * channel_id:渠道ID 可选
  141. * channel_name:渠道名称 可选
  142. * start_date:开始时间 可选
  143. * end_date:结束时间 可选
  144. * is_frozen:冻结 0; -1 可选
  145. * account_name:打款人姓名
  146. * status:打款状态 status 状态 查看接口 WithdrawCashService::getWithdrawCashStatusList
  147. * search_name: 搜索名称
  148. * is_company: 0:私人; 1:公司
  149. * @param $isAll
  150. * @return mixed
  151. */
  152. static function getFinancialAuditParam($params=[], $isAll = false) {
  153. $search_object = self::select([
  154. 'withdraw_cashes.id',
  155. 'withdraw_cashes.distribution_channel_id as channel_id',
  156. 'withdraw_cashes.distribution_channel_name as channel_name',
  157. 'withdraw_cashes.amount',
  158. 'withdraw_cashes.tallage',
  159. 'withdraw_cashes.status as wc_status',
  160. 'withdraw_cashes.remark',
  161. 'withdraw_cashes.serial_number',
  162. 'withdraw_cashes.is_company',
  163. 'withdraw_cashes.check_user_id',
  164. 'withdraw_cashes.check_user_name',
  165. 'withdraw_cashes.updated_at',
  166. 'withdraw_cashes.created_at',
  167. 'cash_accounts.account_name',
  168. 'cash_accounts.identity_card',
  169. 'cash_accounts.card_number',
  170. 'cash_accounts.account_bank',
  171. 'cash_accounts.bank',
  172. 'cash_accounts.province',
  173. 'cash_accounts.status as ca_status',
  174. DB::raw('IFNULL(financial_configs.is_frozen, 0) as is_frozen'),
  175. DB::raw('IFNULL(financial_configs.remark , "") as fc_remark'),
  176. ])
  177. ->leftjoin('cash_accounts','cash_accounts.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
  178. ->leftjoin('financial_configs','financial_configs.distribution_channel_id','=','withdraw_cashes.distribution_channel_id')
  179. ->where('withdraw_cashes.distribution_channel_id', '>', 0)
  180. ->orderBy('withdraw_cashes.id','desc');
  181. if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('withdraw_cashes.distribution_channel_id', $params['channel_id']);
  182. if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('withdraw_cashes.distribution_channel_name','like', "%".$params['channel_name']."%");
  183. if(isset($params['account_name']) && $params['account_name']) $search_object->where('cash_accounts.account_name', 'like', "%".$params['account_name']."%");
  184. if(isset($params['search_name']) && $params['search_name']) {
  185. $search_object->where(function ($query) use($params) {
  186. $query->where('withdraw_cashes.distribution_channel_name','like', "%".$params['search_name']."%")
  187. ->orWhere('cash_accounts.account_name', 'like', "%".$params['search_name']."%");
  188. });
  189. }
  190. if(isset($params['start_date']) && $params['start_date']) $search_object->where('withdraw_cashes.created_at','>=', $params['start_date']);
  191. if(isset($params['end_date']) && $params['end_date']) $search_object->where('withdraw_cashes.created_at','<=', $params['end_date']);
  192. if(isset($params['is_company']) && is_numeric($params['is_company'])) $search_object->where('withdraw_cashes.is_company', $params['is_company']);
  193. if(isset($params['status']) && $params['status']) {
  194. $search_object->whereIn('withdraw_cashes.status', $params['status']);
  195. }
  196. if(isset($params['is_frozen']) && is_numeric($params['is_frozen'])) {
  197. if($params['is_frozen'] == 0) {
  198. $search_object->where(function ($query) use($params) {
  199. $query->where('financial_configs.is_frozen', 0)
  200. ->orWhereNull('financial_configs.is_frozen');
  201. });
  202. } else {
  203. $search_object->where('financial_configs.is_frozen', $params['is_frozen']);
  204. }
  205. }
  206. if($isAll) {
  207. return $search_object->get();
  208. } else {
  209. return $search_object->paginate();
  210. }
  211. }
  212. }