MemberCashOut.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\model\member;
  12. use app\dict\member\MemberAccountTypeDict;
  13. use app\dict\member\MemberCashOutDict;
  14. use app\dict\pay\TransferDict;
  15. use app\model\pay\Transfer;
  16. use core\base\BaseModel;
  17. use think\model\relation\HasOne;
  18. /**
  19. * 会员提现
  20. */
  21. class MemberCashOut extends BaseModel
  22. {
  23. /**
  24. * 数据表主键
  25. * @var string
  26. */
  27. protected $pk = 'id';
  28. /**
  29. * 模型名称
  30. * @var string
  31. */
  32. protected $name = 'member_cash_out';
  33. protected $type = [
  34. 'audit_time' => 'timestamp',
  35. 'transfer_time' => 'timestamp',
  36. ];
  37. /**
  38. * 会员信息
  39. * @return HasOne
  40. */
  41. public function memberInfo()
  42. {
  43. return $this->hasOne(Member::class, 'member_id', 'member_id')->joinType('left')
  44. ->withField('member_id, member_no, username, mobile, nickname, headimg')
  45. ->bind(['username', 'mobile', 'nickname', 'headimg', 'member_no']);
  46. }
  47. /**
  48. * 会员信息关联列表查询
  49. * @return HasOne
  50. */
  51. public function member()
  52. {
  53. return $this->hasOne(Member::class, 'member_id', 'member_id')->joinType('left');
  54. }
  55. /**
  56. * 转账信息
  57. * @return HasOne
  58. */
  59. public function transfer()
  60. {
  61. return $this->hasOne(Transfer::class, 'transfer_no', 'transfer_no')->joinType('left')
  62. ->withField('transfer_no, transfer_type, transfer_realname, transfer_mobile, transfer_bank, transfer_account, transfer_voucher, transfer_remark, transfer_fail_reason, transfer_status')->append(['transfer_status_name', 'transfer_type_name']);
  63. }
  64. /**
  65. * 账户类型名称
  66. * @param $value
  67. * @param $data
  68. * @return mixed|string
  69. */
  70. public function getAccountTypeNameAttr($value, $data)
  71. {
  72. if (empty($data['account_type']))
  73. return '';
  74. return MemberAccountTypeDict::getType()[$data['account_type']] ?? '';
  75. }
  76. /**
  77. * 提现状态名称
  78. * @param $value
  79. * @param $data
  80. * @return mixed|string
  81. */
  82. public function getStatusNameAttr($value, $data)
  83. {
  84. if (empty($data['status']))
  85. return '';
  86. return MemberCashOutDict::getStatus()[$data['status']] ?? '';
  87. }
  88. /**
  89. * 转账方式名称
  90. * @param $value
  91. * @param $data
  92. * @return array|mixed|string
  93. */
  94. public function getTransferTypeNameAttr($value, $data)
  95. {
  96. if (empty($data['transfer_type']))
  97. return '';
  98. $temp = TransferDict::getTransferType()[$data['transfer_type']] ?? [];
  99. return $temp['name'] ?? '';
  100. }
  101. /**
  102. * 转账状态名称
  103. * @param $value
  104. * @param $data
  105. * @return mixed|string
  106. */
  107. public function getTransferStatusNameAttr($value, $data)
  108. {
  109. if (empty($data['transfer_status']))
  110. return '';
  111. return TransferDict::getStatus()[$data['transfer_status']] ?? '';
  112. }
  113. /**
  114. * 会员搜索
  115. * @param $query
  116. * @param $value
  117. * @param $data
  118. */
  119. public function searchMemberIdAttr($query, $value, $data)
  120. {
  121. if ($value) {
  122. $query->where('member_id', $value);
  123. }
  124. }
  125. /**
  126. * 状态搜索
  127. * @param $query
  128. * @param $value
  129. * @param $data
  130. */
  131. public function searchStatusAttr($query, $value, $data)
  132. {
  133. if ($value) {
  134. $query->where('status', $value);
  135. }
  136. }
  137. /**
  138. *
  139. * @param $query
  140. * @param $value
  141. * @param $data
  142. */
  143. public function searchCashOutNoAttr($query, $value, $data)
  144. {
  145. if ($value) {
  146. $query->where('cash_out_no', $value);
  147. }
  148. }
  149. /**
  150. *
  151. * @param $query
  152. * @param $value
  153. * @param $data
  154. */
  155. public function searchTransferTypeAttr($query, $value, $data)
  156. {
  157. if ($value) {
  158. $query->where('transfer_type', $value);
  159. }
  160. }
  161. /**
  162. * 创建时间搜索器
  163. * @param $query
  164. * @param $value
  165. * @param $data
  166. */
  167. public function searchCreateTimeAttr($query, $value, $data)
  168. {
  169. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  170. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  171. if ($start_time > 0 && $end_time > 0) {
  172. $query->whereBetweenTime('create_time', $start_time, $end_time);
  173. } else if ($start_time > 0 && $end_time == 0) {
  174. $query->where([['create_time', '>=', $start_time]]);
  175. } else if ($start_time == 0 && $end_time > 0) {
  176. $query->where([['create_time', '<=', $end_time]]);
  177. }
  178. }
  179. /**
  180. * 状态筛选
  181. * @param $query
  182. * @param $value
  183. * @param $data
  184. * @return void
  185. */
  186. public function searchJoinStatusAttr($query, $value, $data)
  187. {
  188. if ($value) {
  189. $query->where('member_cash_out.status', $value);
  190. }
  191. }
  192. /**
  193. * 创建时间搜索器
  194. * @param $query
  195. * @param $value
  196. * @param $data
  197. */
  198. public function searchJoinCreateTimeAttr($query, $value, $data)
  199. {
  200. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  201. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  202. if ($start_time > 0 && $end_time > 0) {
  203. $query->whereBetweenTime('member_cash_out.create_time', $start_time, $end_time);
  204. } else if ($start_time > 0 && $end_time == 0) {
  205. $query->where([['member_cash_out.create_time', '>=', $start_time]]);
  206. } else if ($start_time == 0 && $end_time > 0) {
  207. $query->where([['member_cash_out.create_time', '<=', $end_time]]);
  208. }
  209. }
  210. /**
  211. * 审核时间搜索器
  212. * @param $query
  213. * @param $value
  214. * @param $data
  215. */
  216. public function searchAuditTimeAttr($query, $value, $data)
  217. {
  218. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  219. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  220. if ($start_time > 0 && $end_time > 0) {
  221. $query->whereBetweenTime('audit_time', $start_time, $end_time);
  222. } else if ($start_time > 0 && $end_time == 0) {
  223. $query->where([['audit_time', '>=', $start_time]]);
  224. } else if ($start_time == 0 && $end_time > 0) {
  225. $query->where([['audit_time', '<=', $end_time]]);
  226. }
  227. }
  228. /**
  229. * 审核时间搜索器
  230. * @param $query
  231. * @param $value
  232. * @param $data
  233. */
  234. public function searchTransferTimeAttr($query, $value, $data)
  235. {
  236. $start_time = empty($value[0]) ? 0 : strtotime($value[0]);
  237. $end_time = empty($value[1]) ? 0 : strtotime($value[1]);
  238. if ($start_time > 0 && $end_time > 0) {
  239. $query->whereBetweenTime('transfer_time', $start_time, $end_time);
  240. } else if ($start_time > 0 && $end_time == 0) {
  241. $query->where([['transfer_time', '>=', $start_time]]);
  242. } else if ($start_time == 0 && $end_time > 0) {
  243. $query->where([['transfer_time', '<=', $end_time]]);
  244. }
  245. }
  246. }