UserController.php
12.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
<?php
namespace api\home\controller;
use app\portal\controller\PayController;
use cmf\controller\RestBaseController;
use think\Db;
use EasyWeChat\Foundation\Application;
use EasyWeChat\Payment\Order;
use wxapp\pay\WeixinPay;
/**
* @title 个人信息
* @description 个人信息相关接口
*/
class UserController extends RestBaseController
{
/**
* @title 个人首页
* @description 个人首页页面
* @author panhaowen
* @url /home/user/index
* @method POST
* @header name:XX-Token require:1 default: desc:token
*/
public function index()
{
$userId=$this->getUserId();
$data=Db::name('user')->where('id',$userId)->find();
$this->success('获取信息成功',[$userId,cmf_get_image_preview_url($data['avatar']).$data['user_nickname']]);
}
/**
* @title 我的收入订单
* @description 收入订单页面
* @author panhaowen
* @url /home/user/myOrder
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:status type:int require:1 desc:订单状态(全部=>"",1=>待接单,2=>待完成,,3=>已取消,4=>待提现,5=>已完成)
*/
public function myOrder()
{
$userId=$this->getUserId();
$param=$this->request->param();
$where=[];
$where['p.user_id']=$userId;
if ($param['status']==2){
$where['o.status']=['in',[2,6]];
}else if ($param['status']!=""){
$where['o.status']=$param['status'];
}
$data=Db::name('order')
->alias('o')
->join('post p','o.post_id=p.id')
->join('user u1','p.user_id=u1.id')
->where($where)
->field('o.*,u1.user_nickname')
->select()->each(function ($item) {
if ($item['to_post_status']!=6){
$item['remark'] =null;
}
$item['end_time']=date('Y-m-d H:i:s',$item['start_time']+$item['last']*60*60);
$item['start_time']=date('Y-m-d H:i:s',$item['start_time']);
return $item;
});
$this->success('获取数据成功',$data);
}
/**
* @title 收入订单取消
* @description 收入订单取消
* @author panhaowen
* @url /home/user/cancel
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
*/
public function cancel()
{
$userId=$this->getUserId();
$param=$this->request->param();
$order=Db::name('order')->where('id',$param['id'])->find();
//执行退款逻辑
$options=[
'app_id' => config('wechat_config.app_id'),
'secret' => config('wechat_config.secret'),
'payment' => config('wechat_config.payment'),
];
$app = new Application($options);
$payment = $app->payment;
//使用商户订单号退款 PS.其他形式参考文档
$orderNo = $order['order_sn'];//商户系统内部的订单号(out_trade_no)
$refundNo = cmf_get_order_sn();//退款单号
$result = $payment->refund($orderNo, $refundNo, $order['total_price']*100, $order['total_price']*100); // 总金额 100, 退款 80,refundFee可选(为空时全额退款)
Db::name('refund')->insert(['type'=>1,'order_sn'=>$orderNo,'create_time'=>time(),'money'=>$order['total_price'],'user_id'=>$order['user_id']]);
Db::name('order')
->where('id',$param['id'])
->update(['status'=>6,'to_user_status'=>3,'to_post_status'=>3]);
$this->success('操作成功');
}
/**
* @title 收入订单接单
* @description 收入订单接单
* @author panhaowen
* @url /home/user/accept
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
*/
public function accept()
{
$userId=$this->getUserId();
$param=$this->request->param();
Db::name('order')
->where('id',$param['id'])
->update(['status'=>2,'to_user_status'=>2,'to_post_status'=>2]);
$this->success('操作成功');
}
/**
* @title 上传凭证
* @description 上传凭证
* @author panhaowen
* @url /home/user/proof
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
* @param name:proof type:varchar require:1 desc:凭证
*/
public function proof()
{
$userId=$this->getUserId();
$param=$this->request->param();
$status=Db::name('order')
->where('id',$param['id'])
->find()['status'];
if ($status==2) {
Db::name('order')
->where('id', $param['id'])
->update(['status' => 3, 'proof' => $param['proof']]);
}elseif ($status==4){
Db::name('order')
->where('id', $param['id'])
->update(['status' => 5, 'proof' => $param['proof']]);
}
$this->success('操作成功');
}
/**
* @title 提现
* @description 提现
* @author panhaowen
* @url /home/user/withdraw
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
*/
public function withdraw()
{
$userId=$this->getUserId();
$param=$this->request->param();
$openid=Db::name('third_party_user')->where('user_id',$userId)->find()['openid'];
$config=Db::name('config')->where('id',1)->find();
$order=Db::name('order')
->where('id',$param['id'])
->find();
if ($order['status']==7&&$order['to_user_status']==4&&$order['to_post_status']==4) {
//用户分成企业支付
$options=[
'app_id' => config('app_id'),
// 'secret' => config('wechat_config.secret'),
'payment' => [
'merchant_id' => '1365052302',
'key' => 'ebfe7fba8f7a0fba3e19efcc547b956d',
'cert_path' => '../wechat/cert/apiclient_cert.pem', // XXX: 绝对路径!!!!
'key_path' => '../wechat/cert/apiclient_key.pem', // XXX: 绝对路径!!!!
// 'device_info' => '013467007045764',
// 'sub_app_id' => '',
// 'sub_merchant_id' => '',
// ...
],
];
$app = new Application($options);
$merchantPay = $app->merchant_pay;
$merchantPayData = [
'partner_trade_no' => cmf_get_order_sn(), //随机字符串作为订单号,跟红包和支付一个概念。
'openid' => $openid, //收款人的openid
'check_name' => 'NO_CHECK', //文档中有三种校验实名的方法 NO_CHECK OPTION_CHECK FORCE_CHECK
// 're_user_name'=>'张三', //OPTION_CHECK FORCE_CHECK 校验实名的时候必须提交
'amount' => $config['order_percent']*$order['total_price']*100, //单位为分
'desc' => '企业付款',
'spbill_create_ip' => get_client_ip(0,true), //发起交易的IP地址
];
$re=$merchantPay->send($merchantPayData);
// $this->success('操作成功',$re);
Db::name('refund')->insert(['type'=>2,'order_sn'=>$merchantPayData['partner_trade_no'],'create_time'=>time(),'money'=>$config['order_percent']*$order['total_price'],'user_id'=>$order['user_id']]);
Db::name('order')
->where('id', $param['id'])
->update(['status' => 8, 'to_post_status' => 5]);
$this->success('操作成功');
}else{
$this->error('操作失败');
}
}
/**
* @title 支付订单取消
* @description 支付订单取消
* @author panhaowen
* @url /home/user/cancel2
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
*/
public function cancel2()
{
$userId=$this->getUserId();
$param=$this->request->param();
Db::name('order')
->where('id',$param['id'])
->delete();
$this->success('操作成功');
}
/**
* @title 支付订单付款
* @description 支付订单付款
* @author panhaowen
* @url /home/user/payOrder
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:id type:int require:1 desc:订单id
*/
public function payOrder()
{
$userId=$this->getUserId();
$param=$this->request->param();
$openid=Db::name('third_party_user')->where('user_id',$userId)->find()['openid'];
$order=Db::name('order')->where('id',$param['id'])->find();
$pay=new WeixinPay();
$this->success('唤起支付',$pay->pay($openid,$order['order_sn'],'下单支付',$order['total_price']*100,url('portal/pay/notify2')));
}
/**
* @title 联系客服
* @description 联系客服接口
* @author panhaowen
* @url /home/user/kefu
* @method POST
* @header name:XX-Token require:1 default: desc:token
*/
public function kefu(){
$mobile=Db::name('config')->where('id',1)->find()['mobile'];
$this->success('获取数据成功',$mobile);
}
/**
* @title 我的发布
* @description 我的发布接口
* @author panhaowen
* @url /home/user/myPost
* @method POST
* @header name:XX-Token require:1 default: desc:token
*/
public function myPost(){
$userId=$this->getUserId();
$data=Db::name('post')
->alias('p')
->join('user u','p.user_id=u.id')
->where(['p.user_id'=>$userId,'p.status'=>2])
->field('p.*,u.user_nickname,u.avatar')
->find();
if (!$data){
$this->error('您暂无发布或审核未通过');
}
$data['avatar']=cmf_get_image_preview_url($data['avatar']);
$data['wx']=cmf_get_image_preview_url($data['wx']);
$data['skill_id']=explode(',',$data['skill_id']);
$data['skill']=Db::name('skill')->alias('s')->join('category c','s.category_id=c.id')->where('s.id','in',$data['skill_id'])->field('c.name,s.price')->select();
$data['thumbnail']=json_decode($data['thumbnail'],true);
if (!empty($data['thumbnail'])) {
foreach ($data['thumbnail'] as $k => $v) {
$data['thumbnail'][$k] = cmf_get_image_preview_url($data['thumbnail'][$k]);
}
}
$this->success('获取信息成功',$data);
}
/**
* @title 技能编辑
* @description 技能编辑接口
* @author panhaowen
* @url /home/user/skillEdit
* @method POST
* @header name:XX-Token require:1 default: desc:token
*/
public function skillEdit(){
$userId=$this->getUserId();
$data=Db::name('post')
->where('user_id',$userId)
->find();
$data['skill_id']=explode(',',$data['skill_id']);
$skill=Db::name('category')->select()->each(function ($item) {
$item['skill'] = Db::name('skill') ->where('category_id',$item['id'])->select();
return $item;
});
$this->success('获取信息成功',[$data['skill_id'],$skill]);
}
/**
* @title 我的发布编辑提交
* @description 我的发布编辑提交接口
* @author panhaowen
* @url /home/user/myPostEdit
* @method POST
* @header name:XX-Token require:1 default: desc:token
* @param name:sex type:int require:1 desc:1男,2女
* @param name:weight type:int require:1 desc:体重
* @param name:height type:int require:1 desc:身高
* @param name:skill_id type:int require:1 desc:技能(多个技能用,隔开)
* @param name:job type:varchar require:1 desc:我的职业
* @param name:brief type:varchar require:1 desc:个人简介
* @param name:is_mobile type:int require:1 desc:0不允许通过手机联系,1可以通过手机联系
* @param name:mobile type:int require:0 desc:手机号
* @param name:wx type:varchar require:1 desc:微信二维码
* @param name:is_contact type:int require:1 desc:0不允许非下单以外获取联系方式,1不下单获取联系方式
* @param name:contact_price type:int require:0 desc:联系价格
* @param name:thumbnail type:array require:1 desc:相册
*/
public function myPostEdit(){
$userId=$this->getUserId();
$param=$this->request->param();
$param['update_time']=time();
$param['status']=1;
$param['thumbnail']=json_encode($param['thumbnail']);
Db::name('post')->where('user_id',$userId)->update($param);
$this->success('操作成功');
}
}