BalanceRecharge.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/4/1
  6. * Time: 上午11:14
  7. */
  8. namespace app\common\models\finance;
  9. use app\common\models\BaseModel;
  10. use app\common\observers\balance\BalanceRechargeObserver;
  11. use app\common\scopes\UniacidScope;
  12. use app\common\traits\CreateOrderSnTrait;
  13. use Illuminate\Database\Eloquent\Builder;
  14. /**
  15. * @property double $money
  16. *
  17. * Class BalanceRecharge
  18. * @package app\common\models\finance
  19. */
  20. class BalanceRecharge extends BaseModel
  21. {
  22. use CreateOrderSnTrait;
  23. protected $table = 'yz_balance_recharge';
  24. protected $guarded = [''];
  25. /**
  26. * Payment method background recharge.
  27. */
  28. const PAY_TYPE_SHOP = 0;
  29. /**
  30. * Recharge state success.
  31. */
  32. const PAY_STATUS_SUCCESS = 1;
  33. /**
  34. * Recharge state error.
  35. */
  36. const PAY_STATUS_ERROR = -1;
  37. public static function boot()
  38. {
  39. parent::boot();
  40. static::addGlobalScope( new UniacidScope);
  41. static::observe(new BalanceRechargeObserver());
  42. }
  43. /**
  44. * @return \Illuminate\Database\Eloquent\Relations\HasOne
  45. */
  46. public function member()
  47. {
  48. return $this->hasOne('app\common\models\Member', 'uid', 'member_id');
  49. }
  50. /**
  51. * 检索条件,订单号检索
  52. * @param $query
  53. * @param $orderSn
  54. * @return mixed
  55. */
  56. public function scopeOfOrderSn($query,$orderSn)
  57. {
  58. return $query->where('ordersn',$orderSn);
  59. }
  60. public function scopeWithMember($query)
  61. {
  62. return $query->with(['member' => function($query) {
  63. return $query->select('uid', 'nickname','realname','mobile','avatar')
  64. ->with(['yzMember' => function($memberInfo) {
  65. return $memberInfo->select('member_id', 'group_id', 'level_id')
  66. ->with(['level' => function($level) {
  67. return $level->select('id','level_name');
  68. }])
  69. ->with(['group'=> function($group) {
  70. return $group->select('id', 'group_name');
  71. }]);
  72. }]);
  73. }]);
  74. }
  75. //todo 以下代码需要重构
  76. /*
  77. *
  78. *
  79. * */
  80. public static function getMemberRechargeRecord($memberId)
  81. {
  82. return self::uniacid()->select('id','money', 'type', 'created_at')->where('member_id', $memberId)->get();
  83. }
  84. /*
  85. * 通过记录ID值获取记录
  86. *
  87. * @params int $recordId 记录ID
  88. *
  89. * @return object
  90. * @Author yitian */
  91. public static function getRechargeRecordByid($recordId)
  92. {
  93. return self::uniacid()->where('id', $recordId)->first();
  94. }
  95. /*
  96. * 通过记录 ordersn 值获取记录
  97. *
  98. * @params int $recordId 记录ID
  99. *
  100. * @return object
  101. * @Author yitian */
  102. public static function getRechargeRecordByOrdersn($ordersn)
  103. {
  104. return self::withoutGlobalScope('member_id')->where('ordersn', $ordersn)->first();
  105. }
  106. /*
  107. * 获取充值记录分页列表
  108. *
  109. * return object
  110. *
  111. * @Author yitian */
  112. public static function getPageList($pageSize)
  113. {
  114. return self::uniacid()
  115. ->with(['member' => function($query) {
  116. return $query->select('uid', 'nickname','realname','mobile','avatar')
  117. ->with(['yzMember' => function($memberInfo) {
  118. return $memberInfo->select('member_id', 'group_id', 'level_id')
  119. ->with(['level' => function($level) {
  120. return $level->select('id','level_name');
  121. }])
  122. ->with(['group'=> function($group) {
  123. return $group->select('id', 'group_name');
  124. }]);
  125. }]);
  126. }])
  127. ->orderBy('created_at', 'desc')
  128. ->paginate($pageSize);
  129. }
  130. /*
  131. * 搜索充值记录分页列表
  132. *
  133. * @params int $pageSize
  134. * @params array $search
  135. * return object
  136. * */
  137. public static function getSearchPageList($pageSize, $search =[])
  138. {
  139. $query = self::uniacid();
  140. if ($search['ordersn']) {
  141. $query = $query->where('ordersn', 'like', $search['ordersn'] . '%');
  142. }
  143. if ($search['realname'] || $search['level_id'] || $search['group_id']) {
  144. $query = $query->whereHas('member', function($member)use($search) {
  145. if ($search['realname']) {
  146. $member = $member->select('uid', 'nickname','realname','mobile','avatar')
  147. ->where('realname', 'like', '%' . $search['realname'] . '%')
  148. ->orWhere('mobile', 'like', '%' . $search['realname'] . '%')
  149. ->orWhere('nickname', 'like', '%' . $search['realname'] . '%')
  150. ->orWhere('uid', $search['realname']);
  151. }
  152. if ($search['level_id']) {
  153. $member = $member->whereHas('yzMember', function ($level)use($search) {
  154. $level->where('level_id', $search['level_id']);
  155. });
  156. }
  157. if ($search['group_id']) {
  158. $member = $member->whereHas('yzMember', function ($group)use($search) {
  159. $group->where('group_id', $search['group_id']);
  160. });
  161. }
  162. });
  163. }
  164. if ($search['searchtime']) {
  165. $query = $query->whereBetween('updated_at', [strtotime($search['time_range']['start']),strtotime($search['time_range']['end'])]);
  166. }
  167. return $query->orderBy('created_at', 'desc')->paginate($pageSize);
  168. }
  169. /*
  170. * 验证订单号是否存在,存在返回true
  171. *
  172. * @params varchar $orderSN
  173. *
  174. * @return bool true or false
  175. *
  176. * @Author yitian */
  177. public static function validatorOrderSn($orderSN)
  178. {
  179. return self::uniacid()->where('ordersn', $orderSN)->first();
  180. }
  181. /**
  182. * 定义字段名
  183. *
  184. * @return array */
  185. public function atributeNames() {
  186. return [
  187. 'uniacid' => "公众号ID",
  188. 'member_id' => "会员ID",
  189. //'old_money' => '余额必须是有效的数字',
  190. 'money' => '充值金额',
  191. 'new_money' => '计算后金额',
  192. 'type' => '充值类型',
  193. 'ordersn' => '充值订单号',
  194. 'status' => '状态',
  195. 'remark' => '备注信息'
  196. ];
  197. }
  198. /**
  199. * 字段规则
  200. *
  201. * @return array */
  202. public function rules()
  203. {
  204. return [
  205. 'uniacid' => "required",
  206. 'member_id' => "required",
  207. //'old_money' => 'numeric',
  208. 'money' => 'numeric|regex:/^[\-\+]?\d+(?:\.\d{1,2})?$/|max:9999999999',
  209. 'new_money' => 'numeric',
  210. 'type' => 'required',
  211. 'ordersn' => 'required',
  212. 'status' => 'required',
  213. 'remark' => 'max:50'
  214. ];
  215. }
  216. }