master
wangxinglong 2021-12-09 13:36:47 +08:00
parent 4ced1bd6ea
commit 9d83d8397b
6 changed files with 140 additions and 18 deletions

View File

@ -3,6 +3,7 @@
namespace app\controller\api;
use app\controller\BaseController;
use think\facade\Config;
use think\response\Json;
/**
@ -22,6 +23,7 @@ class Base extends BaseController
'jwt',
'apiLogin' => ['except' => $this->noNeedLogin]
];
Config::load("extra/wechat","wechat");
}
public function __call($method, $args)

View File

@ -4,15 +4,21 @@ namespace app\controller\api;
use app\exception\RepositoryException;
use app\model\BusinessCircle;
use app\model\Category;
use app\model\Recharge as RechargeModel;
use app\repository\AccountRepository;
use app\repository\BusinessRepository;
use app\repository\CouponRepository;
use app\repository\DictionaryRepository;
use app\repository\RechargeRepository;
use app\service\wx\WechatPay;
use app\validate\BusinessValidate;
use think\Collection;
use think\Exception;
use think\facade\Db;
use think\exception\ValidateException;
use app\model\{Business as BusinessModel, Account as AccountModel, CouponMain};
use app\model\{Account, Business as BusinessModel, Account as AccountModel, CouponMain};
use think\response\Json;
use function EasyWeChat\Kernel\Support\generate_sign;
/**
* 商家端:商家
@ -34,20 +40,21 @@ class Business extends Base
public function registerBusiness()
{
$params = [
'type'=> $this->request->param('type/d', 0),
'business_license'=> $this->request->param('business_license', ''),
'background'=> $this->request->param('background', ''),
'business_name'=> $this->request->param('business_name', ''),
'business_subtitle'=> $this->request->param('business_subtitle', ''),
'business_license'=> $this->request->param('business_license', ''),
'contact_name'=> $this->request->param('contact_name', ''),
'contact_phone'=> $this->request->param('contact_phone', ''),
'lat'=> $this->request->param('lat', ''),
'lng'=> $this->request->param('lng', ''),
'province'=> $this->request->param('province', ''),
'city'=> $this->request->param('city', ''),
'county'=> $this->request->param('county', ''),
'business_address' => $this->request->param('business_address', ''),
'lat'=> $this->request->param('lat', ''),
'lng'=> $this->request->param('lng', ''),
'business_circle_id' => $this->request->param('business_circle_id/d', 0),
'agency_code' => $this->request->param('agency_code', ''),
'type'=> $this->request->param('type/d', 0),
'contact_name'=> $this->request->param('contact_name', ''),
'contact_phone'=> $this->request->param('contact_phone', ''),
];
$accountId = $this->request->user['user_id'] ?? 0;
@ -63,6 +70,9 @@ class Business extends Base
if (empty($account)) {
throw new ValidateException('无效请求!');
}
if ($account->type !== Account::type_consumer) {
throw new ValidateException('您已经是商家或者员工,不能认证');
}
if (!$validate->scene('apiRegister')->check($params)) {
throw new ValidateException($validate->getError());
@ -88,6 +98,8 @@ class Business extends Base
} elseif ($agencyBusiness['enable'] == self::BOOL_TRUE) {
throw new ValidateException('该代理商已被封禁!');
}
$params['is_assign'] = 1;
}
$business = null;
@ -95,11 +107,14 @@ class Business extends Base
$business = $busRepo->findOneByWhere(['code'=> $account['business_code']]);
}
$params['create_time'] = date('Y-m-d H:i:s');
$params['is_delete'] = 0;
$params['state'] = BusinessModel::state_reviewing;
$params['enable'] = 0;
$params['type_name'] = $businessCategory['name'];
$params['create_time'] = date('Y-m-d H:i:s');
$params['is_delete'] = 0;
$params['state'] = BusinessModel::state_reviewing;
$params['enable'] = 0;
$params['total_recharge'] = 0;
$params['balance'] = 0;
$params['is_agency'] = 0;
$params['type_name'] = $businessCategory['name'];
if ($business) {
if ($business['state'] == BusinessModel::state_reviewing) {
@ -108,7 +123,7 @@ class Business extends Base
// 更新审批信息,重新审批
$params['update_time'] = date('Y-m-d H:i:s');
$business = $business->save($params);
$business->save($params);
} else {
// 添加审批记录
@ -273,6 +288,103 @@ class Business extends Base
return $this->json(0,"success",$data);
}
/**
* 检查是有已经有商家审核了
* */
public function checkAuth()
{
$accountId = $this->request->user['user_id'] ?? 0;
$account = AccountRepository::getInstance()->findById($accountId, [], function ($q) {
return $q->with(['business', 'parent']);
});
if(empty($account)){
return $this->json(6001,"登录失效");
}
//如果有商家 并且审核失败或者
if (isset($account->business) && !empty($account->business) && in_array($account->business->state, [BusinessModel::state_off, BusinessModel::state_reviewing,])) {
if ($account->business->state == BusinessModel::state_off) {
return $this->json(4001, "认证被退回,请重新填写资料:" . $account->business->reason,["business"=>$account->business]);
}
return $this->json(4001, " 正在认证中请耐心等待",["business"=>$account->business]);
}
//检查有没有加入一个商家的申请
//TODO....
return $this->json();
}
/**
* 充值
* */
public function recharge()
{
$accountId = $this->request->user['user_id'] ?? 0;
$money = input("money/f",1);
$account = AccountRepository::getInstance()->findById($accountId, [], function ($q) {
return $q->with(['business', 'parent']);
});
if(empty($account)||empty($account->business)){
return $this->json(6001,"登录失效");
}
if ($money <= 0) {
return $this->json(4001,"充值金额有误");
}
$money = floor($money*100)/100;
Db::startTrans();
try {
//创建充值订单
if (!$order = RechargeRepository::getInstance()->createOrder($account->business_code, $account->open_id,$money)) {
throw new RepositoryException('订单创建失败,请稍后重试');
}
//生成支付
$time = time();
$res = WechatPay::getInstance()->order->unify([
'body' => '商家充值',
'openid' => $account->open_id,
'out_trade_no' => $order->order_num,
'total_fee' => $money * 100,
'trade_type' => 'JSAPI',
'timeStamp' => $time,
'product_id' => $order->id,
'sign_type' => "MD5",
'notify_url' => $this->request->domain() . "/api/recharge/notify.html",
]);
if (!isset($res['prepay_id'])) {
throw new RepositoryException('订单创建失败,请稍后重试');
}
$payData = [
"appId" =>config("wechat.applets_appId"),
"timeStamp" =>$time."",
'nonceStr' => randomStr(0,16),
'package' => 'prepay_id='.$res['prepay_id'],
"signType" =>'MD5',
];
$payData['sign'] = generate_sign($payData, config("wechat.key"));
Db::commit();
return $this->json(0, "success", [
"payData" => $payData
]);
}catch (RepositoryException $e){
Db::rollback();
return $this->json(4001,"发起充值失败");
}catch (Exception $e){
echo $e->getMessage();
Db::rollback();
return $this->json(5001,"发起充值失败");
}
}
}

View File

@ -162,6 +162,7 @@ class User extends Base
'balance' => $account['business']['balance'],
'enable' => $account['business']['enable'],
],
"alertMoney"=>config("wechat.balance")
];
return $this->json(0, 'success', $businessRes);
@ -174,6 +175,7 @@ class User extends Base
'userType' => $account['type'],
'userTypeDes' => Account::accountTypeDescList()[$account['type']] ?? '游客',
'couponCount' => $couponCount,
"alertMoney"=>config("wechat.balance")
];

View File

@ -311,7 +311,11 @@ class Business extends Base
Db::startTrans();
try {
$business->save(["state" => $state, "reason" => $reason]);
$account->save(["type" => Account::type_business]);
//通过 就改变用户为商家
if($state == BusinessModel::state_on){
$account->save(["type" => Account::type_business]);
}
Db::commit();
return $this->json();
} catch (RepositoryException $e) {

View File

@ -42,12 +42,14 @@ class RechargeRepository extends Repository
/**
* 创建一个支付订单
* @param $businessCode
* @param $openId
* @param $money
* @return Recharge|Model
*/
public function createOrder($businessCode, $money)
public function createOrder($businessCode,$openId,$money)
{
$data = [
"open_id" => $openId,
"order_num" => createUuid(),
"business_code" => $businessCode,
"money" => $money,

View File

@ -16,9 +16,9 @@ class BusinessValidate extends Validate
'lat' => 'require|between:-90,90',
'lng' => 'require|between:-180,180',
'province|所属省份' => 'max:100',
'city|所属城市' => 'max:100',
'county|所属区县' => 'max:100',
'province|所属省份' => 'require',
'city|所属城市' => 'require',
'county|所属区县' => 'require',
'business_address|商家地址' => 'require|max:250',
'characteristic|商家特色' => 'max:250',