Merge branch 'feature/promote_order_settle_check' of wmtx/sdk into master

推广员订单结算
master
廖金灵 4 years ago committed by Gogs
commit f771f0be84

@ -732,9 +732,6 @@ class PromoteService {
public function getTopPromote($promote)
{
/* if ($promote['level'] == 1) {
return $promote;
} */
$chain = trim($promote['chain'], '/');
if ($chain == '') {
return $promote;
@ -743,4 +740,53 @@ class PromoteService {
return M('promote', 'tab_')->where(['id' => $topPromoteId])->find();
}
}
public function getPromoteById($id, $with = [])
{
$promote = M('promote', 'tab_')->where(['id' => $id])->find();
if ($promote && in_array('parent', $with)) {
$promote['parent'] = M('promote', 'tab_')->where(['id' => $promote['parent_id']])->find();
}
if ($promote && in_array('top', $with)) {
$promote['top'] = $this->getTopPromote($promote);
}
return $promote;
}
public function getMarketAdminIdByPromoteId($promoteId)
{
$promote = $this->getPromoteById($promoteId, ['top']);
return $this->getMarketAdminIdByPromote($promote);
}
public function getMarketAdminIdByPromote($promote)
{
$marketAdminId = 0;
if ($promote) {
$topPromote = $promote['top'] ?? null;
if (is_null($topPromote)) {
$topPromote = $this->getTopPromote($promote);
}
$marketAdminId = $topPromote['admin_id'];
}
return $marketAdminId;
}
public function getSettleGameIds($promote)
{
$topPromote = $promote['top'] ?? null;
if (is_null($topPromote)) {
$topPromote = $this->getTopPromote($promote);
}
return $topPromote['game_ids'] == '' ? [] : explode(',', $topPromote['game_ids']);
}
public function isGameIdSettle($promote, $gameId)
{
$gameIds = $this->getSettleGameIds($promote);
if (in_array($gameId, $gameIds)) {
return true;
}
return false;
}
}

@ -13,45 +13,50 @@ use Base\Service\PromoteService;
* 支付回调控制器
* @author 小纯洁
*/
class BaseController extends Controller {
protected function _initialize(){
C(api('Config/lists'));
C(sdk::get_tool());
}
class BaseController extends Controller
{
private $promoteService;
protected function _initialize()
{
C(api('Config/lists'));
C(sdk::get_tool());
$this->promoteService = new PromoteService();
}
/**
* 购买成功后
* @author 鹿文学
*/
protected function set_order($data) {
$order = M('Order','tab_');
$map['order_number'] = $data['out_trade_no'];
$result_data = $order->where($map)->find();
if(empty($result_data)) {$this->record_logs("数据异常");return false;}
$other = $order->where(array('merchandise_id'=>$result_data['merchandise_id'],'pay_status'=>1))->find();
if(!empty($other)){
$datasave['pay_status'] = 1;
$datasave['is_refund'] = 2;
$res = $order->where($map)->save($datasave);
return false;
}
if($result_data['pay_status'] == 0) {
$data_save['pay_status'] = 1;
$data_save['trade_no'] = $data['trade_no'];
$data_save['pay_time'] = NOW_TIME;
$res = $order->where($map)->save($data_save);
if($res!== false) {
M('Merchandise','tab_')->where(['id'=>$result_data['merchandise_id']])->save(['status'=>4]);
M('user','tab_')->where(['id'=>$result_data['buyer_id']])->setInc("cumulative",$result_data['order_price']);
return true;
} else {
$this->record_logs("修改数据失败");
}
} else {
/**
* 购买成功后
* @author 鹿文学
*/
protected function set_order($data) {
$order = M('Order','tab_');
$map['order_number'] = $data['out_trade_no'];
$result_data = $order->where($map)->find();
if(empty($result_data)) {$this->record_logs("数据异常");return false;}
$other = $order->where(array('merchandise_id'=>$result_data['merchandise_id'],'pay_status'=>1))->find();
if(!empty($other)){
$datasave['pay_status'] = 1;
$datasave['is_refund'] = 2;
$res = $order->where($map)->save($datasave);
return false;
}
if($result_data['pay_status'] == 0) {
$data_save['pay_status'] = 1;
$data_save['trade_no'] = $data['trade_no'];
$data_save['pay_time'] = NOW_TIME;
$res = $order->where($map)->save($data_save);
if($res!== false) {
M('Merchandise','tab_')->where(['id'=>$result_data['merchandise_id']])->save(['status'=>4]);
M('user','tab_')->where(['id'=>$result_data['buyer_id']])->setInc("cumulative",$result_data['order_price']);
return true;
}
} else {
$this->record_logs("修改数据失败");
}
} else {
return true;
}
}
/**
*充值到游戏成功后修改充值状态和设置游戏币
@ -705,22 +710,36 @@ class BaseController extends Controller {
return $result;
}
public function getMarketAdminId($promoteId)
public function getPromoteById($promoteId)
{
return $this->promoteService->getPromoteById($promoteId, ['top']);
}
public function getMarketAdminId($promote)
{
$promote = M('promote', 'tab_')->field(['id', 'chain', 'level', 'admin_id'])->where(['id' => $promoteId])->find();
$marketAdminId = 0;
if ($promote) {
$topPromote = (new PromoteService)->getTopPromote($promote);
$marketAdminId = $topPromote['admin_id'];
return $this->promoteService->getMarketAdminIdByPromote($promote);
}
public function getIsCheckValue($promote, $gameId)
{
if (is_null($promote)) {
return 1;
}
if ($this->promoteService->isGameIdSettle($promote, $gameId)) {
return 1;
} else {
return 2;
}
return $marketAdminId;
}
/**
*消费记录表 参数
*/
private function spend_param($param=array()){
$user_entity = get_user_entity($param['user_id']);
$promote = $this->getPromoteById($user_entity["promote_id"]);
$data_spned['user_id'] = $param["user_id"];
$data_spned['user_account'] = $user_entity["account"];
$data_spned['user_nickname'] = $user_entity["nickname"];
@ -747,9 +766,10 @@ class BaseController extends Controller {
$data_spned['pay_game_status'] = 0;
$data_spned['extend'] = $param['extend'];
$data_spned['pay_way'] = $param["pay_way"];
$data_spned['market_admin_id'] = $this->getMarketAdminId($user_entity["promote_id"]);
$data_spned['market_admin_id'] = $this->getMarketAdminId($promote);
$data_spned['is_check'] = $this->getIsCheckValue($promote, $param["game_id"]);
if($data_spned['pay_way'] != 7){
$discount = $this->get_discount($param['game_id'],$user_entity['promote_id'],$param['user_id']);
$discount = $this->get_discount($param['game_id'],$user_entity['promote_id'], $param["game_id"]);
$data_spned['pay_amount'] = $param["price"] * $discount['discount']/10;//实付金额
$data_spned['discount_type'] = $discount['discount_type'];
}else{//苹果支付不计入折扣

@ -5,7 +5,10 @@ use Org\XiguSDK\Xigu;
use Qiniu\json_decode;
use Base\Service\PromoteService;
class BaseController extends RestController{
class BaseController extends RestController
{
private $promoteService;
// 不需要验证游戏签名的接口 A.B A==> 控制器 B==》方法
protected $noNeedGame = [
'Apple.apple_alipay_pay','Apple.apple_weixin_pay','User.get_alipay_zmxy_return',
@ -32,10 +35,13 @@ class BaseController extends RestController{
protected $userToken;
// 验证token得到的user H5页面使用
protected function _initialize(){
protected function _initialize()
{
C(api('Config/lists'));
C(self::get_tool());
$this->promoteService = new PromoteService();
$c = CONTROLLER_NAME;
$a = ACTION_NAME;
$data = json_decode ( base64_decode ( file_get_contents ( "php://input" ) ), true );
@ -498,22 +504,37 @@ class BaseController extends RestController{
return round((float)$check_money,2);
}
public function getMarketAdminId($promoteId)
public function getPromoteById($promoteId)
{
return $this->promoteService->getPromoteById($promoteId, ['top']);
}
public function getMarketAdminId($promote)
{
return $this->promoteService->getMarketAdminIdByPromote($promote);
}
public function getIsCheckValue($promote, $gameId)
{
$promote = M('promote', 'tab_')->field(['id', 'chain', 'level', 'admin_id'])->where(['id' => $promoteId])->find();
$marketAdminId = 0;
if ($promote) {
$topPromote = (new PromoteService)->getTopPromote($promote);
$marketAdminId = $topPromote['admin_id'];
if (is_null($promote)) {
return 1;
}
if ($this->promoteService->isGameIdSettle($promote, $gameId)) {
return 1;
} else {
return 2;
}
return $marketAdminId;
}
/**
*消费记录表 参数
*/
private function spend_param($param=array()){
private function spend_param($param=array())
{
$user_entity = get_user_entity($param['user_id']);
$promote = $this->getPromoteById($user_entity["promote_id"]);
$data_spned['user_id'] = $param["user_id"];
$data_spned['user_account'] = $user_entity["account"];
$data_spned['user_nickname'] = $user_entity["nickname"];
@ -536,7 +557,8 @@ class BaseController extends RestController{
$data_spned['spend_time'] = NOW_TIME;
// $data_spned['pay_time'] = NOW_TIME;
$data_spned['pay_status'] = $param["pay_status"];
$data_spned['market_admin_id'] = $this->getMarketAdminId($user_entity["promote_id"]);
$data_spned['market_admin_id'] = $this->getMarketAdminId($promote);
$data_spned['is_check'] = $this->getIsCheckValue($promote, $param["game_id"]);
if ($param["pay_status"] == 1)
$data_spned['payed_time'] = time();
else
@ -575,7 +597,10 @@ class BaseController extends RestController{
*平台币充值记录表 参数
*/
private function deposit_param($param=array()){
$user_entity = get_user_entity($param['user_id']);
$promote = $this->getPromoteById($user_entity["promote_id"]);
$data_deposit['order_number'] = $param["order_number"];
$data_deposit['pay_order_number'] = $param["pay_order_number"];
$data_deposit['user_id'] = $param["user_id"];
@ -591,7 +616,7 @@ class BaseController extends RestController{
$data_deposit['pay_way'] = $param["pay_way"];
$data_deposit['pay_ip'] = $param["spend_ip"];
$data_deposit['sdk_version'] = $param["sdk_version"];
$data_deposit['market_admin_id'] = $this->getMarketAdminId($user_entity["promote_id"]);
$data_deposit['market_admin_id'] = $this->getMarketAdminId($promote);
if (isset($param["pay_url"])) {
$data_deposit['pay_url'] = $param["pay_url"];
}

@ -30,6 +30,12 @@ class Pay
* @var type
*/
private $apitype;
/**
* 推广员服务
* @var PromoteService
*/
private $promoteService;
/**
* 构造方法,用于构造上传实例
@ -49,6 +55,7 @@ class Pay
/* 设置支付驱动 */
$class = strpos($driver, '\\') ? $driver : 'Think\\Pay\\Driver\\' . ucfirst(strtolower($driver));
$this->setDriver($class, $config);
$this->promoteService = new PromoteService();
}
public function isKBCPartner($promoteId)
@ -324,15 +331,26 @@ class Pay
return $result;
}
public function getMarketAdminId($promoteId)
public function getPromoteById($promoteId)
{
$promote = M('promote', 'tab_')->field(['id', 'chain', 'level', 'admin_id'])->where(['id' => $promoteId])->find();
$marketAdminId = 0;
if ($promote) {
$topPromote = (new PromoteService)->getTopPromote($promote);
$marketAdminId = $topPromote['admin_id'];
return $this->promoteService->getPromoteById($promoteId, ['top']);
}
public function getMarketAdminId($promote)
{
return $this->promoteService->getMarketAdminIdByPromote($promote);
}
public function getIsCheckValue($promote, $gameId)
{
if (is_null($promote)) {
return 1;
}
if ($this->promoteService->isGameIdSettle($promote, $gameId)) {
return 1;
} else {
return 2;
}
return $marketAdminId;
}
/**
@ -340,6 +358,8 @@ class Pay
*/
private function add_spend(Pay\PayVo $vo, $param=array(), $payConf = array())
{
$promote = $this->getPromoteById($vo->getPromoteId());
$spend = M("spend", "tab_");
$spend_data['user_id'] = $vo->getUserId();
$spend_data['user_account'] = $vo->getAccount();
@ -371,7 +391,8 @@ class Pay
$spend_data['extend'] = $vo->getExtend();
$spend_data['spend_ip'] = get_client_ip();
$spend_data['sdk_version'] = $vo->getSdkVersion();
$spend_data['market_admin_id'] = $this->getMarketAdminId($vo->getPromoteId());
$spend_data['market_admin_id'] = $this->getMarketAdminId($promote);
$spend_data['is_check'] = $this->getIsCheckValue($promote, $vo->getGameId());
/* if ($isKBCPartner) {
$spend_data['partner_type'] = 1;
} */
@ -399,6 +420,9 @@ class Pay
$uc_user = $uc->get_user_from_uid($vo->getUserId());
$uc_id = $uc->uc_deposit($vo->getUserId(), $vo->getAccount(), $vo->getUserNickName(), $vo->getGameId(), $vo->getGameAppid(), $vo->getGameName(), 0, '', $vo->getPromoteId(), $vo->getPromoteName(), "", $vo->getOrderNo(), $vo->getFee(), time(), $vo->getExtend(), $vo->getPayWay(), get_client_ip(), '', 5, $uc_user['platform'], '', '');
} else {
$promote = $this->getPromoteById($vo->getPromoteId());
$deposit = M("deposit", "tab_");
// $ordercheck = $deposit->where(array('pay_order_number'=>$data["order_no"]))->find();
// if($ordercheck)$this->error("订单已经存在,请刷新充值页面重新下单!");
@ -418,7 +442,7 @@ class Pay
$deposit_data['pay_source'] = 2;
$deposit_data['create_time'] = NOW_TIME;
$deposit_data['sdk_version'] = $vo->getSdkVersion();
$deposit_data['market_admin_id'] = $this->getMarketAdminId($vo->getPromoteId());
$deposit_data['market_admin_id'] = $this->getMarketAdminId($promote);
/* if ($isKBCPartner) {
$deposit_data['partner_type'] = 1;
} */

Loading…
Cancel
Save