UserExtract.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author Qinii
  6. * @day 2020-06-16
  7. *
  8. *
  9. */
  10. namespace app\controller\admin\user;
  11. use crmeb\basic\BaseController;
  12. use crmeb\services\SpreadsheetExcelService;
  13. use think\App;
  14. use app\validate\api\UserExtractValidate as validate;
  15. use app\common\repositories\user\UserExtractRepository as repository;
  16. use think\facade\Db;
  17. class UserExtract extends BaseController
  18. {
  19. /**
  20. * @var repository
  21. */
  22. public $repository;
  23. /**
  24. * UserExtract constructor.
  25. * @param App $app
  26. * @param repository $repository
  27. */
  28. public function __construct(App $app,repository $repository)
  29. {
  30. parent::__construct($app);
  31. $this->repository = $repository;
  32. }
  33. /**
  34. * TODO
  35. * @return mixed
  36. * @author Qinii
  37. * @day 2020-06-16
  38. */
  39. public function lst()
  40. {
  41. [$page,$limit] = $this->getPage();
  42. $where = $this->request->params(['status','keyword','date','extract_type','mer_id','mer_name',['identity', '']]);
  43. if($where['mer_id']==''){
  44. unset($where['mer_id']);
  45. }else if($where['mer_id']==0){
  46. $where['mer_id']='';
  47. }
  48. $res = $this->repository->serach($where,$page,$limit);
  49. foreach ($res['list'] as $k=>$v){
  50. $res['list'][$k]['certification']= Db::name('user_certification')->where('uid', $v['uid'])->find();
  51. $res['list'][$k]['list']=$this->repository->get_user_extract_item($v['extract_id']);
  52. $res['list'][$k]['bank_info_data']=[];
  53. if($v['bank_info']){
  54. $res['list'][$k]['bank_info_data']=json_decode($v['bank_info'],true);
  55. }
  56. }
  57. return app('json')->success($res);
  58. }
  59. public function excel()
  60. {
  61. $where = $this->request->params(['status','keyword','date','extract_type','mer_id','mer_name',['identity', '']]);
  62. if($where['mer_id']==''){
  63. unset($where['mer_id']);
  64. }else if($where['mer_id']==0){
  65. $where['mer_id']='';
  66. }
  67. $identity_desc = "用户提现";
  68. if ($where['identity'] == 'mer') {
  69. $identity_desc = "商户提现";
  70. }
  71. $res = $this->repository->serach($where,1, 10000000);
  72. $list = $res['list'];
  73. foreach ($list as $k => $v) {
  74. $temp = array(
  75. $v['extract_id'],
  76. $v['create_time'],
  77. $v['phone'],
  78. $v['real_name'],
  79. $v['extract_price'],
  80. $v['service_money'],
  81. $v['extract_price'] - $v['service_money'],
  82. );
  83. if ($v['extract_type'] == 1) {
  84. $temp[] = '微信';
  85. }
  86. if ($v['extract_type'] == 2) {
  87. $temp[] = '支付宝';
  88. }
  89. if ($v['extract_type'] == 3) {
  90. $temp[] = '银行卡';
  91. }
  92. $temp[] = $v['bank_address'] ?? '';
  93. $temp[] = $v['bank_code'] ?? '';
  94. if ($v['status'] == -1) {
  95. $temp[] = '未通过';
  96. }
  97. if ($v['status'] == 0) {
  98. $temp[] = '审核中';
  99. }
  100. if ($v['status'] == 1) {
  101. $temp[] = '已提现';
  102. }
  103. $temp[] = $v['status_time'] ?? '';
  104. $arr[] = $temp;
  105. }
  106. $header = [
  107. 'ID', '申请时间', '手机号', '商户信息', '提现金额', '综合服务费', '实际到账', '提现方式', '所属银行', '账号', '审核状态', '处理时间'
  108. ];
  109. $filename = $identity_desc . date('YmdHis') . '_' . rand(10000, 99999);
  110. $title = $identity_desc;
  111. $name = $identity_desc;
  112. $info = '生成时间:' . date('Y-m-d H:i:s', time());
  113. $suffix = 'xlsx';
  114. $path = 'extract';
  115. unset($_instance);
  116. $_instance = SpreadsheetExcelService::instance_xin();
  117. $_path = $_instance
  118. ->createOrActive()
  119. ->setExcelHeader($header)
  120. ->setExcelTile($title, $name, $info)
  121. ->setExcelContent($arr)
  122. ->excelSave($filename, $suffix, $path);
  123. $data = [
  124. 'name' => $filename . '.' . $suffix,
  125. 'status' => 1,
  126. 'path' => '/' . $_path
  127. ];
  128. return app('json')->success('ok', $data);
  129. }
  130. /**
  131. * TODO
  132. * @param $id
  133. * @return mixed
  134. * @author Qinii
  135. * @day 2020-06-16
  136. */
  137. public function switchStatus($id)
  138. {
  139. $data = $this->request->params(['status','fail_msg','mark']);
  140. if($data['status'] == '-1' && empty($data['fail_msg']))
  141. return app('json')->fail('请填写拒绝原因');
  142. if(!$this->repository->getWhereCount($id))
  143. return app('json')->fail('数据不存在或状态错误');
  144. $data['admin_id'] = $this->request->adminId();
  145. $data['status_time'] = date('Y-m-d H:i:s',time());
  146. $extract_data=Db::name('user_extract')->where('extract_id',$id)->find();
  147. if($data['status']!='-1'){
  148. if($extract_data['extract_type']==1){
  149. $res=$this->repository->WechatTransfers($id);
  150. if($res['code']==201){
  151. return app('json')->success('微信处理中,请稍后');
  152. }
  153. }elseif ($extract_data['extract_type']==2){
  154. $res=$this->repository->AliTransfers($id);
  155. }
  156. // if($res['code']!=200 && $extract_data['types']==1){
  157. // Db::name('user_rich')->where('uid',$extract_data['uid'])->inc('red', $extract_data['extract_price'])->update();
  158. // Db::name('user_rich_log')->insert([
  159. // 'uid' => $extract_data['uid'],
  160. // 'red' => $extract_data['extract_price'],
  161. // 'pm' => 1,
  162. // 'time' => time(),
  163. // 'order_id' => 0,
  164. // 'mark' => '提现失败返还红积分'
  165. // ]);
  166. // return app('json')->fail(isset($res['msg'])?$res['msg']:'提现失败',$res);
  167. // }
  168. }else{
  169. if($extract_data['withdrawal_type']==2) {
  170. Db::name('entropy_barter_bill')->where('order_no', $extract_data['order_sn'])->where('pm', 2)->update(['status' => 3, 'remarks' => '审核已拒绝']);
  171. $eb_bill = Db::name('entropy_barter_bill')->where('order_no', $extract_data['order_sn'])->where('pm', 2)->find();
  172. Db::name('entropy_barter_user_' . $extract_data['mer_id'])->where('eb_id', $eb_bill['to_id'])->inc('wallet', $extract_data['extract_price'])->update();
  173. }
  174. }
  175. $this->repository->switchStatus($id,$data);
  176. Db::name('user_extract')->where('extract_id',$id)->update($data);
  177. return app('json')->success('审核成功');
  178. }
  179. public function new_lst()
  180. {
  181. [$page,$limit] = $this->getPage();
  182. $where = $this->request->params(['status','keyword','date','extract_type','uid']);
  183. $res = $this->repository->new_search($where,$page,$limit);
  184. foreach ($res['list'] as $k=>$v){
  185. $res['list'][$k]['certification']= Db::name('user_certification')->where('uid', $v['uid'])->find();;
  186. $res['list'][$k]['bank_info_data']=[];
  187. $pay_info='';
  188. if($v['bank_info']!=''){
  189. $res['list'][$k]['bank_info_data']=json_decode($v['bank_info'],true);
  190. $pay_info=$res['list'][$k]['certification']['user_name'].' ';
  191. $pay_info.=$res['list'][$k]['certification']['user_card']." ";
  192. $pay_info.=$res['list'][$k]['bank_info_data']['bank_name'].' ';
  193. $pay_info.=$res['list'][$k]['bank_info_data']['bank_open_name'].' ';
  194. $pay_info.=$res['list'][$k]['bank_code'];
  195. }
  196. $res['list'][$k]['status_name']='';
  197. if($v['status']=='0') $res['list'][$k]['status_name']='审核中';
  198. if($v['status']=='1') $res['list'][$k]['status_name']='已打款';
  199. if($v['status']=='-1') $res['list'][$k]['status_name']='已拒绝';
  200. if($v['extract_type']=='3') $res['list'][$k]['extract_type_name']='银行卡';
  201. if($v['status']=='0') $res['list'][$k]['status_time']='';
  202. $res['list'][$k]['extract_price']=set_price_rtrim($v['extract_price']);
  203. $res['list'][$k]['service_money']=set_price_rtrim( $v['service_money']);
  204. $res['list'][$k]['money']=set_price_rtrim($v['extract_price'] - $v['service_money']);
  205. $res['list'][$k]['pay_info']=$pay_info;
  206. if($v['extract_type']=='4'){
  207. $res['list'][$k]['status_name']='已完成';
  208. $res['list'][$k]['pay_info']='人工减少-'.$v['mark'];
  209. }
  210. if(!$v['fail_msg'] || $v['fail_msg']==''){
  211. $res['list'][$k]['fail_msg']='--';
  212. }
  213. if(!$v['status_time'] || $v['status_time']==''){
  214. $res['list'][$k]['status_time']='--';
  215. }
  216. // $res['list'][$k]['list']=$this->repository->get_user_extract_item($v['extract_id']);
  217. }
  218. //查询用户可提现金额
  219. $merid = $this->request->merId();
  220. $merchant= Db::name('merchant')->where('mer_id', $merid)->find();
  221. $user = Db::name('user')->where('uid', $merchant['uid'])->find();
  222. $res['brokerage_price'] = $user['brokerage_price'];
  223. return app('json')->success($res);
  224. }
  225. }