|
|
@@ -19,6 +19,13 @@ class PartyController extends Controller
|
|
|
{
|
|
|
|
|
|
public $logger;
|
|
|
+ public $errCode = array(
|
|
|
+ 'USER_NOT_EXIT' => array(
|
|
|
+ 'code' => '-110',
|
|
|
+ 'msg' => '找不到此用户'
|
|
|
+ ),
|
|
|
+
|
|
|
+ );
|
|
|
/**
|
|
|
* 构造函数
|
|
|
*
|
|
|
@@ -31,6 +38,9 @@ class PartyController extends Controller
|
|
|
$this->logger->pushHandler(new StreamHandler(storage_path('logs/api.log'), Logger::WARNING));
|
|
|
}
|
|
|
|
|
|
+ public function toError($err){
|
|
|
+ return toJson($err['code'], $err['msg']);
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 第三方账号登陆、注册
|
|
|
@@ -56,7 +66,7 @@ class PartyController extends Controller
|
|
|
$partyModel = new Models\Party;
|
|
|
$key = $req->input('key');
|
|
|
$appid = $req->input('appid');
|
|
|
- $partyUserName = $req->input('username');
|
|
|
+ $partyUsername = $req->input('username');
|
|
|
$partyNickName = $req->input('nickname');
|
|
|
//$partyInfo = \App\Models\Party::where('key', $key)->first();
|
|
|
$partyInfo = $partyModel->where('key', $key)->first();
|
|
|
@@ -78,12 +88,12 @@ class PartyController extends Controller
|
|
|
$partyUserModel = new Models\PartyUser();
|
|
|
$partyUserInfo = $partyUserModel->where([
|
|
|
['party_id', '=', $partyInfo['id']],
|
|
|
- ['party_username', '=', $partyUserName],
|
|
|
+ ['party_username', '=', $partyUsername],
|
|
|
])->first();
|
|
|
if(empty($partyUserInfo)){
|
|
|
$partyUserModel->insert([
|
|
|
'party_id' => $partyInfo['id'],
|
|
|
- 'party_username' => $partyUserName,
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
'nickname' => $partyNickName,
|
|
|
'password' => $req->input('password'),
|
|
|
'login_time' => now(),
|
|
|
@@ -100,9 +110,9 @@ class PartyController extends Controller
|
|
|
//查询是否已创建对于应用的用户
|
|
|
$appUserModel = new Models\AppUser();
|
|
|
|
|
|
- $info = $this->findAppUsername($partyInfo['id'], $partyUserName, $appid);
|
|
|
+ $info = $this->findAppUsername($partyInfo['id'], $partyUsername, $appid);
|
|
|
if($info == false){
|
|
|
- $appUsername = $this->buildAppUsername($partyInfo['id'], $partyUserName, $appid);
|
|
|
+ $appUsername = $this->buildAppUsername($partyInfo['id'], $partyUsername, $appid);
|
|
|
$result = $adapter->syncUser($appid, $appUsername, $req->input('password')); //检测用户并创建用户
|
|
|
if($result['code'] != 1){
|
|
|
$this->logger->addError('login out: status:-102;创建应用用户失败; '.json_encode($result));
|
|
|
@@ -111,7 +121,7 @@ class PartyController extends Controller
|
|
|
|
|
|
$appUserId = $appUserModel->insert([
|
|
|
'app_id' => $appInfo['id'],
|
|
|
- 'party_username' => $partyUserName,
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
'app_username' => $appUsername,
|
|
|
'password' => $req->input('password'),
|
|
|
'login_time' => now(),
|
|
|
@@ -121,7 +131,7 @@ class PartyController extends Controller
|
|
|
$UserMapModel = new Models\PartyAppUserMap();
|
|
|
$UserMapModel->insert([
|
|
|
'party_id' => $partyInfo['id'],
|
|
|
- 'party_username' => $partyUserName,
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
'app_id' => $appInfo['id'],
|
|
|
'app_username' => $appUsername,
|
|
|
'app_user_id' => $appUserId,
|
|
|
@@ -164,9 +174,10 @@ class PartyController extends Controller
|
|
|
'app_id' => $appInfo['id'],
|
|
|
'app_username' => $appUsername,
|
|
|
'party_id' =>$partyInfo['id'],
|
|
|
- 'party_username' => $partyUserName,
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
'billno' => $billno,
|
|
|
- 'balance' => $partyBalance
|
|
|
+ 'balance' => $partyBalance,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s')
|
|
|
]);
|
|
|
//记录平台日志
|
|
|
$appBalanceLogModel = new Models\AppBalanceLog();
|
|
|
@@ -176,9 +187,10 @@ class PartyController extends Controller
|
|
|
'app_id' => $appInfo['id'],
|
|
|
'app_username' => $appUsername,
|
|
|
'party_id' =>$partyInfo['id'],
|
|
|
- 'party_username' => $partyUserName,
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
'billno' => $billno,
|
|
|
- 'balance' => $appBalance
|
|
|
+ 'balance' => $appBalance,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s')
|
|
|
]);
|
|
|
if($result1 === false || $result2 === false || $result3 === false || $result4 === false){
|
|
|
DB::rollBack();
|
|
|
@@ -192,7 +204,7 @@ class PartyController extends Controller
|
|
|
$code = 1;
|
|
|
|
|
|
$this->logger->addWarning('login out: 成功,$appResult:'.json_encode($appResult));
|
|
|
- return toJson($code, $msg, $appResult);
|
|
|
+ return toJson($code, $msg, $appResult['data']);
|
|
|
} catch (Exception $e) {
|
|
|
$this->logger->addWarning('login out: -200 操作失败,err:'.json_encode($e));
|
|
|
return toJson($code, $msg, []);
|
|
|
@@ -250,5 +262,253 @@ class PartyController extends Controller
|
|
|
return $arr;
|
|
|
}
|
|
|
|
|
|
+ private function checkBackBalanceArg($req){
|
|
|
+ $arr = array('code'=>-100, 'msg'=>'');
|
|
|
+ if(empty($req->input('username'))){
|
|
|
+ $arr['msg'] = '请输入用户名';
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty((int)$req->input('appid'))){
|
|
|
+ $arr['msg'] = '请输入appid';
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+ if(!preg_match('/^[0-9]{1,8}(.[0-9]{1,2})?$/', $req->input('money'))){
|
|
|
+ $arr['msg'] = '请输入正确的金额';
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ $arr['code'] = 1;
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询用户在平台的余额
|
|
|
+ * @param Request $req
|
|
|
+ * @return \Illuminate\Http\JsonResponse
|
|
|
+ */
|
|
|
+ public function balance(Request $req)
|
|
|
+ {
|
|
|
+ $reqArr = $req->input();
|
|
|
+
|
|
|
+ $this->logger->addWarning('balance get:'.json_encode($reqArr));
|
|
|
+
|
|
|
+ $code = -200;
|
|
|
+ $msg = '操作失败';
|
|
|
+ try {
|
|
|
+ $check = $this->checkBalanceArg($req);
|
|
|
+ if($check['code'] != 1){
|
|
|
+ return toJson($check['code'], $check['msg'], []);
|
|
|
+ }
|
|
|
+
|
|
|
+ $partyModel = new Models\Party;
|
|
|
+ $key = $req->input('key');
|
|
|
+ $appid = $req->input('appid');
|
|
|
+
|
|
|
+ $partyUsername = $req->input('username');
|
|
|
+ $partyInfo = $partyModel->where('key', $key)->first();
|
|
|
+
|
|
|
+ //查询该用户是否已在系统
|
|
|
+ $partyUserModel = new Models\PartyUser();
|
|
|
+ $partyUserInfo = $partyUserModel->where([
|
|
|
+ ['party_id', '=', $partyInfo['id']],
|
|
|
+ ['party_username', '=', $partyUsername],
|
|
|
+ ])->first();
|
|
|
+ if(empty($partyUserInfo)){
|
|
|
+ return $this->toError($this->errCode['USER_NOT_EXIT']);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($appid)){
|
|
|
+ $lastAppInfo = $this->getLastAppInfo($partyInfo['id'], $partyUsername);
|
|
|
+ $appid = $lastAppInfo['app_id'];
|
|
|
+ $appUsername = $lastAppInfo['app_username'];
|
|
|
+ }else{
|
|
|
+ $findInfo = $this->findAppUsername($partyInfo['id'], $partyUsername, $appid);
|
|
|
+ $appUsername = $findInfo['appUsername'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $password = $this->getAppUserPasswordByUsername($appUsername, $appid);
|
|
|
+
|
|
|
+ $adapter = new Adapter();
|
|
|
+
|
|
|
+ //调用内容方的登陆接口
|
|
|
+ $billno = date('YmdHis', time()).rand(10000, 99999);
|
|
|
+ $appResult = $adapter->balance($appid, $appUsername, $password);
|
|
|
+ if($appResult['code'] != 1){
|
|
|
+ $this->logger->addError('balance out: status:-103;调用应用登陆接口失败'.json_encode($appResult));
|
|
|
+ return toJson(-103, $appResult['msg'], []);
|
|
|
+ }
|
|
|
+
|
|
|
+ $msg = '成功';
|
|
|
+ $code = 1;
|
|
|
+
|
|
|
+ $this->logger->addWarning('balance out: 成功,$appResult:'.json_encode($appResult));
|
|
|
+ return toJson($code, $msg, $appResult['data']);
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $this->logger->addWarning('balance out: -200 操作失败,err:'.json_encode($e));
|
|
|
+ return toJson($code, $msg, []);
|
|
|
+ }
|
|
|
+
|
|
|
+ }//end login()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 转回用户在平台的余额
|
|
|
+ * @param Request $req
|
|
|
+ * @return \Illuminate\Http\JsonResponse
|
|
|
+ */
|
|
|
+ public function backBalance(Request $req)
|
|
|
+ {
|
|
|
+ $reqArr = $req->input();
|
|
|
+
|
|
|
+ $this->logger->addWarning('backBalance get:'.json_encode($reqArr));
|
|
|
+
|
|
|
+ $code = -200;
|
|
|
+ $msg = '操作失败';
|
|
|
+ try {
|
|
|
+ $check = $this->checkBackBalanceArg($req);
|
|
|
+ if($check['code'] != 1){
|
|
|
+ return toJson($check['code'], $check['msg'], []);
|
|
|
+ }
|
|
|
+
|
|
|
+ $partyModel = new Models\Party;
|
|
|
+ $key = $req->input('key');
|
|
|
+ $appid = (int)$req->input('appid');
|
|
|
+ $money = $req->input('money');
|
|
|
+
|
|
|
+ $partyUsername = $req->input('username');
|
|
|
+ $partyInfo = $partyModel->where('key', $key)->first();
|
|
|
+
|
|
|
+ //查询该用户是否已在系统
|
|
|
+ $partyUserModel = new Models\PartyUser();
|
|
|
+ $partyUserInfo = $partyUserModel->where([
|
|
|
+ ['party_id', '=', $partyInfo['id']],
|
|
|
+ ['party_username', '=', $partyUsername],
|
|
|
+ ])->first();
|
|
|
+ if(empty($partyUserInfo)){
|
|
|
+ return $this->toError($this->errCode['USER_NOT_EXIT']);
|
|
|
+ }
|
|
|
+
|
|
|
+ $findInfo = $this->findAppUsername($partyInfo['id'], $partyUsername, $appid);
|
|
|
+ $appUsername = $findInfo['appUsername'];
|
|
|
+
|
|
|
+
|
|
|
+ $password = $this->getAppUserPasswordByUsername($appUsername, $appid);
|
|
|
+
|
|
|
+ $adapter = new Adapter();
|
|
|
+
|
|
|
+ //调用内容方的登陆接口
|
|
|
+ $billno = date('YmdHis', time()).rand(10000, 99999);
|
|
|
+ $appResult = $adapter->backBalance($appid, $appUsername, $password, $money, $billno);
|
|
|
+ if($appResult['code'] != 1){
|
|
|
+ $this->logger->addError('login out: status:-103;调用应用登陆接口失败'.json_encode($appResult));
|
|
|
+ return toJson(-103, $appResult['msg'], []);
|
|
|
+ }
|
|
|
+
|
|
|
+ $appModel = new Models\App;
|
|
|
+ $appInfo = $appModel->where('id', $appid)->first();
|
|
|
+
|
|
|
+ DB::beginTransaction();
|
|
|
+ //更新额度
|
|
|
+ $partyBalance = $partyInfo['balance'] + $money;
|
|
|
+ $result1 = $partyModel->where('id', $partyInfo['id'])->update(array(
|
|
|
+ 'balance' => $partyBalance
|
|
|
+ ));
|
|
|
+
|
|
|
+ //更新额度
|
|
|
+ $appBalance = $appInfo['balance'] + $money;
|
|
|
+ $result2 = $appModel->where('id', $appInfo['id'])->update(array(
|
|
|
+ 'balance' => $appBalance
|
|
|
+ ));
|
|
|
+
|
|
|
+ //记录第三方日志
|
|
|
+ $balanceLogModel = new Models\BalanceLog();
|
|
|
+ $result3 = $balanceLogModel->insert([
|
|
|
+ 'type' => 1,
|
|
|
+ 'money' => $money,
|
|
|
+ 'app_id' => $appInfo['id'],
|
|
|
+ 'app_username' => $appUsername,
|
|
|
+ 'party_id' =>$partyInfo['id'],
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
+ 'billno' => $billno,
|
|
|
+ 'balance' => $partyBalance,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s')
|
|
|
+ ]);
|
|
|
+ //记录平台日志
|
|
|
+ $appBalanceLogModel = new Models\AppBalanceLog();
|
|
|
+ $result4 = $appBalanceLogModel->insert([
|
|
|
+ 'type' => 1,
|
|
|
+ 'money' => $money,
|
|
|
+ 'app_id' => $appInfo['id'],
|
|
|
+ 'app_username' => $appUsername,
|
|
|
+ 'party_id' =>$partyInfo['id'],
|
|
|
+ 'party_username' => $partyUsername,
|
|
|
+ 'billno' => $billno,
|
|
|
+ 'balance' => $appBalance,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s')
|
|
|
+ ]);
|
|
|
+ if($result1 === false || $result2 === false || $result3 === false || $result4 === false){
|
|
|
+ DB::rollBack();
|
|
|
+ $this->logger->addError('login out: status:-104;更新数据库失败');
|
|
|
+ return toJson(-104, '系统繁忙', []);
|
|
|
+ }
|
|
|
+
|
|
|
+ DB::commit();
|
|
|
+
|
|
|
+ $msg = '成功';
|
|
|
+ $code = 1;
|
|
|
+
|
|
|
+ $this->logger->addWarning('login out: 成功,$appResult:'.json_encode($appResult));
|
|
|
+ return toJson($code, $msg, $appResult['data']);
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $this->logger->addWarning('login out: -200 操作失败,err:'.json_encode($e));
|
|
|
+ return toJson($code, $msg, []);
|
|
|
+ }
|
|
|
+
|
|
|
+ }//end login()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户登陆的最后一个平台的信息
|
|
|
+ * @param $partyId
|
|
|
+ * @param $partyUsername
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ private function getLastAppInfo($partyId, $partyUsername){
|
|
|
+ $model = new Models\BalanceLog();
|
|
|
+ $info = $model->where([
|
|
|
+ ['party_id', '=', $partyId],
|
|
|
+ ['party_username', '=', $partyUsername],
|
|
|
+ ])->orderBy('id', 'desc')->first();
|
|
|
+ return array('app_username'=>$info['app_username'], 'app_id'=>$info['app_id']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过平台用户名返回平台用户密码
|
|
|
+ * @param $appUsername
|
|
|
+ * @param $appid
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ private function getAppUserPasswordByUsername($appUsername, $appid){
|
|
|
+ $model = new Models\AppUser();
|
|
|
+ $info = $model->where([
|
|
|
+ ['app_id', '=', $appid],
|
|
|
+ ['app_username', '=', $appUsername],
|
|
|
+ ])->first();
|
|
|
+ return $info['password'];
|
|
|
+ }
|
|
|
+
|
|
|
+ private function checkBalanceArg($req){
|
|
|
+ $arr = array('code'=>-100, 'msg'=>'');
|
|
|
+ if(empty($req->input('username'))){
|
|
|
+ $arr['msg'] = '请输入用户名';
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+ /*if(empty($req->input('appid'))){
|
|
|
+ $arr['msg'] = '请输入appid';
|
|
|
+ return $arr;
|
|
|
+ }*/
|
|
|
+
|
|
|
+ $arr['code'] = 1;
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
|
|
|
}
|