495 行
21 KiB
PHP
可执行文件
495 行
21 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
|
|
use Common\Model\MerchantModel;
|
|
use Common\Model\RetailAdminModel;
|
|
use Common\Model\RetailAgentModel;
|
|
use Common\Model\RetailGroupModel;
|
|
use Common\Model\RetailConsumModel;
|
|
use Common\Model\RetailMealPriceModel;
|
|
use Common\Model\JurisdictionUserModel;
|
|
use Common\Model\RetailMerchantConfigModel;
|
|
use Common\Model\RetailMerchantModel;
|
|
use LittleGift\Business\LittleGift;
|
|
use Retail\Model\ThirdConfigModel;
|
|
use Super\Model\ThirdErpSetModel;
|
|
|
|
//[1.8.50]
|
|
|
|
/**
|
|
* 商户操作类
|
|
* class Merchant
|
|
* [
|
|
* 获取商户平台类型 getMerPlatFormType
|
|
* 商户的第三方配置信息 thirdConfigInfo
|
|
* 商户的第三方接口链接列表 thirdSetList
|
|
* 添加商户第三方平台的参数验证 thirdAddMerchantVerify
|
|
* 会员充值分期到账设置 getSetting
|
|
* 参数验证 paramVerify
|
|
* 添加商户 addMerchant
|
|
* ]
|
|
* @package Common\Business
|
|
*/
|
|
class Merchant
|
|
{
|
|
/**
|
|
* 获取商户平台类型
|
|
* @param $merchant_id
|
|
* @return mixed
|
|
*/
|
|
public function getMerPlatFormType($merchant_id)
|
|
{
|
|
$MerchantModel = new RetailMerchantModel();
|
|
$platform_type = $MerchantModel->getFindField([
|
|
'id' => $merchant_id
|
|
], 'platform_type');
|
|
return $platform_type ? $platform_type : '1';
|
|
}
|
|
|
|
|
|
/**
|
|
* 商户的第三方配置信息
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* platform_type 2 第三方平台
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function thirdConfigInfo($param)
|
|
{
|
|
if (empty($param['merchant_id']) || empty($param['platform_type'])) {
|
|
return callBack(statusCode()['error'], '参数有误');
|
|
}
|
|
$where = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'platform_type' => $param['platform_type']
|
|
];
|
|
try {
|
|
$ThirdConfigModel = new ThirdConfigModel();
|
|
$info = $ThirdConfigModel->getFind($where);
|
|
return callBack(statusCode()['success'], '查询成功', $info);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '查询失败');
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 商户的第三方接口链接列表
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* identification 插件标识
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function thirdSetList($param)
|
|
{
|
|
$where = [
|
|
'm.merchant_id' => $param['merchant_id'],
|
|
't.status' => 1,
|
|
't.identification' => $param['identification']
|
|
];
|
|
$fields = 'm.status,m.third_id,t.id,t.type,t.route_url,t.route_name';
|
|
try {
|
|
$ThirdErpSetModel = new ThirdErpSetModel();
|
|
$list = $ThirdErpSetModel->merchantThirdSet($where, $fields);
|
|
if (!empty($list)) {
|
|
foreach ($list as &$val) {
|
|
if (empty($val['third_id'])) {
|
|
$val['status'] = 2;
|
|
}
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], '查询成功', $list);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], '查询失败', []);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 添加商户第三方平台的参数验证
|
|
* @param $param
|
|
* [
|
|
* agent_id 代理商id
|
|
* platform_type 2微礼平台
|
|
* merchant_id
|
|
* littlegift=>json字符串{
|
|
* id 主键id编辑所需
|
|
* third_domain_url 域名
|
|
* third_account_number 登录账户
|
|
* third_password 登录密码
|
|
* }
|
|
* route_list=>json字符串{
|
|
* {
|
|
* id 合伙人路径配置id
|
|
* type 模块类型
|
|
* status 1开启 2关闭
|
|
* route_url 路径
|
|
* }
|
|
* }
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function thirdAddMerchantVerify($param)
|
|
{
|
|
if (empty($param['agent_id'])) {
|
|
return callBack(statusCode()['error'], '登录超时');
|
|
}
|
|
if (!in_array($param['platform_type'], ['2'])) {
|
|
return callBack(statusCode()['error'], '登录超时');
|
|
}
|
|
switch ($param['platform_type']) {
|
|
case 2:
|
|
//微礼平台
|
|
if (empty($param['littlegift']) || empty($param['route_list'])) {
|
|
return callBack(statusCode()['error'], '缺少插件必传参数');
|
|
}
|
|
$littlegift = json_decode($param['littlegift'], true);
|
|
$route_list = json_decode($param['route_list'], true);
|
|
if (!is_array($littlegift) || !is_array($route_list)) {
|
|
return callBack(statusCode()['error'], '插件参数格式有误');
|
|
}
|
|
if (empty($littlegift['third_domain_url']) || empty($littlegift['third_account_number']) || empty($littlegift['third_password'])) {
|
|
return callBack(statusCode()['error'], '缺少插件所需必要参数');
|
|
}
|
|
$login_url = '';
|
|
foreach ($route_list as $val) {
|
|
if ($val['type'] == 1) {
|
|
if ($val['status'] == 2) {
|
|
return callBack(statusCode()['error'], '登录必须开启');
|
|
} else {
|
|
if (empty($val['route_url'])) {
|
|
return callBack(statusCode()['error'], '缺少登录路径');
|
|
} else {
|
|
$login_url = $val['route_url'];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
$identification_arr = ['littlegift'];
|
|
break;
|
|
}
|
|
$PlugClass = new Plug();
|
|
$result = $PlugClass->agentPlugPermissions([
|
|
'agent_id' => $param['agent_id'],
|
|
'identification_arr' => $identification_arr
|
|
]);
|
|
switch ($param['platform_type']) {
|
|
case 2:
|
|
if (empty($result['data']['littlegift'])) {
|
|
return callBack(statusCode()['error'], '暂无该插件权限');
|
|
}
|
|
$LittleClass = new LittleGift([
|
|
'domain_url' => $littlegift['third_domain_url']
|
|
]);
|
|
$result = $LittleClass->login([
|
|
'method' => $login_url,
|
|
'account_number' => $littlegift['third_account_number'],
|
|
'password' => $littlegift['third_password']
|
|
]);
|
|
if ($result['status'] != 1) {
|
|
return callBack(statusCode()['error'], 'Q3 ERP平台信息有误' . $result['error']['message']);
|
|
}
|
|
return callBack(statusCode()['success'], '验证成功', $result);
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 会员充值分期到账设置
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* ]
|
|
* @return mixed
|
|
* [
|
|
* data 分期设置
|
|
* ]
|
|
*/
|
|
public function getSetting($param)
|
|
{
|
|
$where = [
|
|
'id' => $param['merchant_id'],
|
|
'status' => 1
|
|
];
|
|
$fields = [
|
|
'id',
|
|
'aging_cycle',
|
|
'aging_repay',
|
|
'aging_time'
|
|
];
|
|
try {
|
|
$MerchantModel = new RetailMerchantModel();
|
|
$info = $MerchantModel->getFind($where, $fields);
|
|
if (!empty($info)) {
|
|
return callBack(statusCode()['success'], "商户的分期设置获取成功", $info);
|
|
} else {
|
|
return callBack(statusCode()['error'], "商户的分期设置获取失败");
|
|
}
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['error'], "商户的分期设置获取失败");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 参数验证
|
|
* $param = [
|
|
* merchant_rate 新大陆费率 必填
|
|
* ali_rate 支付宝费率 必填
|
|
* wx_rate 微信费率 必填
|
|
* id 商户id 必填
|
|
* name 商户的名称 必填
|
|
* address 详细地址 必填
|
|
* mobile 商户手机号(登录账号) 必填
|
|
* time_limit 时间限制(判断结束时间) 必填
|
|
* mealid 套餐id 必填
|
|
* end_time 商户账号过期时间
|
|
* password 商户登录密码 必填
|
|
* ]
|
|
* $user 当前登录人信息['id','partnerid'=>合伙人id]
|
|
*/
|
|
public function paramVerify($param, $user)
|
|
{
|
|
$MerchantModel = new MerchantModel();
|
|
$RetailAgentModel = new RetailAgentModel();
|
|
$RetailMealPriceModel = new RetailMealPriceModel();
|
|
|
|
$param['merchant_rate'] = $param['merchant_rate'] ? $param['merchant_rate'] : 0;
|
|
$param['ali_rate'] = $param['ali_rate'] ? $param['ali_rate'] : 0;
|
|
$param['wx_rate'] = $param['wx_rate'] ? $param['wx_rate'] : 0;
|
|
if (empty($param['id'])) {
|
|
$param['addtime'] = time();
|
|
$newParam['begin_time'] = strval(strtotime(date("Y-m-d 00:00:00", time())));
|
|
if (
|
|
empty($param['name'])
|
|
|| empty($param['address'])
|
|
|| empty($param['mobile'])
|
|
|| empty($param['time_limit'])
|
|
|| empty($param['mealid'])
|
|
) {
|
|
return ['status' => 0, 'msg' => '表单信息有误,请重新操作'];
|
|
}
|
|
if ($param['time_limit'] == 7) { //自定义时间
|
|
if (empty($param['end_time'])) {
|
|
return (['status' => 0, 'msg' => '自定义时间有误']);
|
|
}
|
|
if (strtotime($param['end_time']) < time()) {
|
|
return ['status' => 0, 'msg' => '过期时间不能小于当前时间'];
|
|
}
|
|
}
|
|
//手机号不能重复
|
|
$map['status'] = ['in', '1,2'];
|
|
$map['mobile'] = $param['mobile'];
|
|
$existence = $MerchantModel->getFind($map);
|
|
if ($existence) {
|
|
return ['status' => 0, 'msg' => '手机号已被使用,请重新完善信息'];
|
|
}
|
|
if (strlen($param['password']) > 16) {
|
|
return ['status' => 0, 'msg' => '密码不能大于16位'];
|
|
}
|
|
|
|
$userinfo = $RetailAgentModel->getFind(['id' => $user['id']]);
|
|
if (!$userinfo) {
|
|
return (['status' => 0, 'msg' => '登录超时']);
|
|
}
|
|
//单价
|
|
$unitprice = $RetailMealPriceModel->getFindField(['meal_id' => $param['mealid'], 'time_limit' => $param['time_limit']], 'price');
|
|
if ($param['time_limit'] == 7) { //自定义时间
|
|
$start_time = strtotime(date('Y-m-d', $newParam['begin_time']));
|
|
$end_time = newStrToTime($param['end_time'] . "24:00:00");
|
|
$dat_num = (($end_time - $start_time) / 86400) * 1;
|
|
$unitprice = $dat_num * $unitprice;
|
|
}
|
|
$otherParam['unitprice'] = $unitprice;
|
|
if ($unitprice < 0) {
|
|
return ['status' => 0, 'msg' => '价格不能小于0'];
|
|
}
|
|
} else {
|
|
$map['id'] = $param['id'];
|
|
//手机号不能重复
|
|
$oldMerchant = $MerchantModel->getFind($map);
|
|
if ($oldMerchant['mobile'] != $param['mobile']) {
|
|
$wh['status'] = ['in', '1,2'];
|
|
$wh['mobile'] = $param['mobile'];
|
|
$existence = $MerchantModel->getFind($wh);
|
|
if ($existence) {
|
|
return ['status' => 0, 'msg' => '手机号已被使用,请重新完善信息'];
|
|
}
|
|
}
|
|
}
|
|
return ['status' => 1, 'param' => $param, 'userinfo' => $userinfo, 'otherParam' => $otherParam];
|
|
}
|
|
|
|
/**
|
|
* 添加商户
|
|
*/
|
|
public function addMerchant($param, $user)
|
|
{
|
|
$MerchantModel = new MerchantModel();
|
|
$RetailAdminModel = new RetailAdminModel();
|
|
$RetailAgentModel = new RetailAgentModel();
|
|
$RetailGroupModel = new RetailGroupModel();
|
|
$RetailConsumModel = new RetailConsumModel();
|
|
$JurisdictionUserModel = new JurisdictionUserModel();
|
|
$RetailMerchantConfigModel = new RetailMerchantConfigModel();
|
|
//验参
|
|
$paramRes = $this->paramVerify($param, $user);
|
|
|
|
if ($paramRes['status'] == 1) {
|
|
$param = $paramRes['param'];
|
|
$userinfo = $paramRes['userinfo'];
|
|
$otherParam = $paramRes['otherParam'];
|
|
//封装
|
|
if (empty($param['id'])) {
|
|
$end_time = $param['end_time'];
|
|
$time_limit = $param['time_limit'];
|
|
$MerchantData['mealid'] = $param['mealid'];
|
|
$MerchantData['addtime'] = time();
|
|
$MerchantData['begin_time'] = strval(strtotime(date("Y-m-d 00:00:00", time())));
|
|
$CryptrModel = new \Addons\Api\Crypto();
|
|
$MerchantData['password'] = $CryptrModel->encrypt($param['password'], date('YmdHis', $MerchantData['addtime']));
|
|
//添加商户
|
|
$MerchantData['partnerid'] = $user['partnerid'];
|
|
$MerchantData['agentid'] = $user['id'];
|
|
//时限
|
|
switch ($time_limit) {
|
|
case 1:
|
|
$MerchantData['end_time'] = strtotime("+1 month" . "24:00:00");
|
|
break;
|
|
case 2:
|
|
$MerchantData['end_time'] = strtotime("+3 month" . "24:00:00");
|
|
break;
|
|
case 3:
|
|
$MerchantData['end_time'] = strtotime("+6 month" . "24:00:00");
|
|
break;
|
|
case 4:
|
|
$MerchantData['end_time'] = strtotime("+1 year" . "24:00:00");
|
|
break;
|
|
case 5:
|
|
$MerchantData['end_time'] = strtotime("+2 year" . "24:00:00");
|
|
break;
|
|
case 6:
|
|
$MerchantData['end_time'] = strtotime("+3 year" . "24:00:00");
|
|
break;
|
|
case 7:
|
|
$MerchantData['end_time'] = newStrToTime($end_time . "24:00:00");
|
|
break;
|
|
}
|
|
//折扣
|
|
$discount = $RetailGroupModel->getFindField(['id' => $userinfo['discountid']], 'discount');
|
|
$discount = $discount ? $discount : 1;
|
|
//单价
|
|
$unitprice = $otherParam['unitprice'];
|
|
//该扣除的价格
|
|
$reduce = round($unitprice * $discount, 2);
|
|
//判断是否可以减
|
|
$surplus = $userinfo['money'] - $reduce;
|
|
if ($surplus > 0 || $surplus == 0) {
|
|
$success = $RetailAgentModel->tosetDec(['id' => $userinfo['id']], 'money', $reduce);
|
|
if ($success || $reduce == 0) {
|
|
$re = $MerchantModel->addMerchant($MerchantData);
|
|
if ($re) {
|
|
//添加默认仓库
|
|
$content = [
|
|
'province' => '北京',
|
|
'number' => 'A_001',
|
|
'city' => '北京市',
|
|
'area' => '海淀区',
|
|
'name' => '默认采购仓',
|
|
'address' => '北京市海淀区',
|
|
'merchant_id' => $re,
|
|
'measure_area' => 100,
|
|
'person_name' => '小李',
|
|
'person_phone' => '18888888888',
|
|
];
|
|
$WarehouseClass = new Warehouse();
|
|
$WarehouseClass->merchantPurchaseWarehouseOperation($content);
|
|
$content['name'] = '默认供给仓';
|
|
$WarehouseClass->merchantSaleWarehouseOperation($content);
|
|
|
|
//添加默认商户设置
|
|
$merchantConfig = $RetailMerchantConfigModel->getFind(['merchant_id' => $re]);
|
|
if (!$merchantConfig) {
|
|
$merchantConfigAdd = [
|
|
'integral_arrive_cash' => 0,
|
|
'integral_arrive_cash_data' => 0,
|
|
'integral_arrive_cash_rate' => 0,
|
|
'other_pay' => 1,
|
|
];
|
|
$configAddRes = $RetailMerchantConfigModel->addOrder($merchantConfigAdd);
|
|
if (!$configAddRes) {
|
|
return ['status' => 0, 'msg' => '默认商户设置添加失败!'];
|
|
}
|
|
}
|
|
|
|
$consum['type'] = 2;
|
|
$consum['actualmoney'] = $reduce;
|
|
$consum['discount'] = $discount;
|
|
$consum['money'] = $unitprice;
|
|
$consum['agentid'] = $user['id'];
|
|
$consum['addtime'] = $MerchantData['addtime'];
|
|
$consuminfo = $RetailConsumModel->addOrder($consum);
|
|
$reagent = $RetailAgentModel->getFind(['id' => $user['id']]);
|
|
$readmin = $RetailAdminModel->getFind(['id' => $reagent['partnerid']], 'phone,name');
|
|
$shop['appid'] = 4;
|
|
$shop['addtime'] = time();
|
|
$shop['site'] = C('adminhttp');
|
|
$shop['name'] = $readmin['name'];
|
|
$shop['phone'] = $readmin['phone'];
|
|
$shop['end_time'] = $MerchantData['end_time'];
|
|
$shop['begin_time'] = $MerchantData['begin_time'];
|
|
if ($consuminfo) {
|
|
//添加ls_jurisdiction_user
|
|
$jurData['name'] = $MerchantData['name'];
|
|
$jurData['login_name'] = $MerchantData['mobile'];
|
|
$jurData['add_time'] = $MerchantData['addtime'];
|
|
$jurData['password'] = $MerchantData['password'];
|
|
$jurData['jurisdiction_group_id'] = 3;
|
|
$jurData['user_type'] = 3;
|
|
$jurData['system_user_id'] = $re;
|
|
$jurData['pid'] = session('jurisdiction_user')['id'];
|
|
$jurAdd = D('JurisdictionUser')->addUser($jurData);
|
|
$url = "http://console.mobzhifu.com/index.php/VersionApi/Agent/addMerchant";
|
|
$re = http_request($url, $shop);
|
|
|
|
$res = ['statue' => 1, 'msg' => '添加成功'];
|
|
} else {
|
|
$res = ['statue' => 0, 'msg' => '添加失败'];
|
|
}
|
|
} else {
|
|
$res = ['statue' => 0, 'msg' => '添加失败'];
|
|
}
|
|
} else {
|
|
$res = ['statue' => 0, 'msg' => '操作失败'];
|
|
}
|
|
} else {
|
|
$res = ['statue' => 0, 'msg' => '余额不足,请联系商家充值'];
|
|
}
|
|
} else {
|
|
$map['id'] = $param['id'];
|
|
//手机号不能重复
|
|
$oldMerchant = $MerchantModel->getFind($map);
|
|
$re = $MerchantModel->UpdateMerchant($map, $param);
|
|
$up['login_name'] = $param['mobile'];
|
|
$up['name'] = $param['name'];
|
|
$upres = $JurisdictionUserModel->updateUser(['system_user_id' => $oldMerchant['id'], 'user_type' => 3], $up);
|
|
if ($re !== false) {
|
|
$res = ['statue' => 1, 'msg' => '修改成功', 'num' => $param['storenum']];
|
|
} else {
|
|
$res = ['statue' => 0, 'msg' => '修改失败'];
|
|
}
|
|
}
|
|
return $res;
|
|
} else {
|
|
return $paramRes;
|
|
}
|
|
}
|
|
}
|