278 行
11 KiB
PHP
可执行文件
278 行
11 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace PayCoupon\Business;
|
|
|
|
use Common\Model\JurisdictionUserModel;
|
|
use Common\Model\RetailStoreModel;
|
|
use PayCoupon\Model\PayCouponModel;
|
|
use PayCoupon\Model\PayCouponRecordModel;
|
|
|
|
/**
|
|
* 代金券记录类
|
|
* Class PayCouponRecord
|
|
* [
|
|
* 发放记录 getRecord
|
|
* 代金券详情 couponInfo
|
|
* 代金券列表 getCouponList
|
|
* 代金券列表的where查询条件 getCouponListTerm
|
|
* ]
|
|
* @package PayCoupon\Business
|
|
*
|
|
*/
|
|
class PayCouponRecord
|
|
{
|
|
|
|
/**
|
|
* 发放记录
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* page
|
|
* limit
|
|
* searchText 名称/手机号/代金券ID
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function getRecord($param)
|
|
{
|
|
if (empty($param) || empty($param['merchant_id']) || empty($param['page']) || empty($param['limit'])) {
|
|
return callBack(statusCode()['error'], "缺少必要参数");
|
|
}
|
|
$page = $param['page'];
|
|
$limit = $param['limit'];
|
|
$fields = 'r.*,v.mobile_phone,v.name,v.nickname,s.storetag as receive_store_name';
|
|
$where = [
|
|
'r.merchant_id' => $param['merchant_id'],
|
|
];
|
|
if (!empty($param['searchText'])) {
|
|
$param['searchText'] = trim($param['searchText']);
|
|
$where['v.name|v.nickname|v.mobile_phone|r.stock_id|r.stock_name'] = ['like', "%{$param['searchText']}%"];
|
|
}
|
|
if (!empty($param['use_status'])) {
|
|
$where['r.use_status'] = $param['use_status'];
|
|
}
|
|
try {
|
|
$payCouponRecord = new PayCouponRecordModel();
|
|
$list = $payCouponRecord->record($fields, $where, $page, $limit);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], "查询成功", ['list' => [], 'count' => 0]);
|
|
}
|
|
if ($list) {
|
|
$count = $payCouponRecord->recordCount($where);
|
|
$StoreModel = new RetailStoreModel();
|
|
foreach ($list as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
$val['name'] = $val['name'] ? $val['name'] : $val['nickname'];
|
|
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
|
|
if (empty($val['receive_store_name'])) {
|
|
$val['receive_store_name'] = '主动发放';
|
|
}
|
|
switch ($val['user_type']) {
|
|
case 1:
|
|
$val['user_type_name'] = '普通模式';
|
|
switch ($val['type']) {
|
|
case 1:
|
|
$val['type_name'] = '线上';
|
|
break;
|
|
case 2:
|
|
$val['type_name'] = '线下';
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
$val['user_type_name'] = '服务商模式';
|
|
$val['type_name'] = '线上,线下';
|
|
break;
|
|
}
|
|
switch ($val['stock_type']) {
|
|
case 1:
|
|
$val['stock_type_name'] = '固定面额满减券';
|
|
break;
|
|
case 2:
|
|
$val['stock_type_name'] = '折扣券';
|
|
break;
|
|
case 3:
|
|
$val['stock_type_name'] = '换购券';
|
|
break;
|
|
}
|
|
if($val['use_status'] == 2){
|
|
//已使用
|
|
if (!empty($val['use_time'])) {
|
|
$val['use_time'] = date('Y-m-d H:i:s', $val['use_time']);
|
|
}
|
|
if (!empty($val['use_store_id'])) {
|
|
$val['use_store_name'] = $StoreModel->getFindField([
|
|
'id' => $val['use_store_id']
|
|
], 'storetag');
|
|
} else {
|
|
$val['use_store_name'] = '';
|
|
}
|
|
switch ($val['use_scene']) {
|
|
case 1:
|
|
$val['use_scene_name'] = '小程序';
|
|
break;
|
|
case 2:
|
|
$val['use_scene_name'] = '收银机';
|
|
break;
|
|
case 3:
|
|
$val['use_scene_name'] = '公众号';
|
|
break;
|
|
}
|
|
}else{
|
|
$val['use_time'] = '';
|
|
}
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 代金券详情
|
|
* @param $param
|
|
* [
|
|
* id
|
|
* merchant_id
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function couponInfo($param)
|
|
{
|
|
if (empty($param['id']) || empty($param['merchant_id'])) {
|
|
return callBack(statusCode()['error'], "缺少参数");
|
|
}
|
|
try {
|
|
$payCouponModel = new PayCouponModel();
|
|
$info = $payCouponModel->getFind(['id' => $param['id'], 'merchant_id' => $param['merchant_id']]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], "查询成功", ['info' => []]);
|
|
}
|
|
$available_begin_time = date('Y-m-d H:i:s', $info['available_begin_time']);
|
|
$available_begin_time = explode(' ', $available_begin_time);
|
|
$available_begin_time = $available_begin_time[0] . 'T' . $available_begin_time[1];
|
|
$available_end_time = date('Y-m-d H:i:s', $info['available_end_time']);
|
|
$available_end_time = explode(' ', $available_end_time);
|
|
$available_end_time = $available_end_time[0] . 'T' . $available_end_time[1];
|
|
$info['type'] = intval($info['type']);
|
|
$info['user_type'] = intval($info['user_type']);
|
|
$info['available_time'] = [$available_begin_time, $available_end_time];
|
|
$info['pattern_info'] = json_decode($info['pattern_info'], true);
|
|
$info['stock_use_rule'] = json_decode($info['stock_use_rule'], true);
|
|
$info['coupon_use_rule'] = json_decode($info['coupon_use_rule'], true);
|
|
return callBack(statusCode()['success'], "查询成功", ['info' => $info]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 代金券列表
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* add_time
|
|
* stock_type 批次类型 1为NORMAL固定面额满减券,2为DISCOUNT折扣券使用规则,3为EXCHANGE换购券使用规则
|
|
* suspend_status 1已激活 2未激活
|
|
* activate_status 1已激活 2未激活
|
|
* ]
|
|
* @return mixed
|
|
* [
|
|
* status
|
|
* message
|
|
* data=>[
|
|
* list 列表
|
|
* count 总条数
|
|
* ]
|
|
* ]
|
|
*/
|
|
public function getCouponList($param)
|
|
{
|
|
if (empty($param['merchant_id'])) {
|
|
return callBack(statusCode()['error'], "缺少参数");
|
|
}
|
|
$where = $this->getCouponListTerm($param);
|
|
$page = $param['page'] ? $param['page'] : '';
|
|
$limit = $param['limit'] ? $param['limit'] : '';
|
|
$field = 'id,stock_name,stock_id,stock_type,stock_use_rule,available_begin_time,available_end_time,activate_status,type,suspend_status,user_type,operator_id,operation_num,store_id_gather,coupon_type';
|
|
try {
|
|
$couponModel = new PayCouponModel();
|
|
$list = $couponModel->getSelect($where, $field, $order = 'id desc', $page . ',' . $limit);
|
|
if (!empty($list)) {
|
|
$count = $couponModel->getCount($where);
|
|
$JurisdictionUserModel = new JurisdictionUserModel();
|
|
foreach ($list as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
$val['available_begin_time'] = date('Y-m-d H:i:s', $val['available_begin_time']);
|
|
$val['available_end_time'] = date('Y-m-d H:i:s', $val['available_end_time']);
|
|
$val['valid_time'] = $val['available_begin_time'] . '-' . $val['available_end_time'];
|
|
switch ($val['stock_type']) {
|
|
case 1:
|
|
$val['stock_type_name'] = '固定面额满减券';
|
|
break;
|
|
case 2:
|
|
$val['stock_type_name'] = '折扣券';
|
|
break;
|
|
case 3:
|
|
$val['stock_type_name'] = '换购券';
|
|
break;
|
|
}
|
|
switch ($val['user_type']) {
|
|
case 1:
|
|
$val['user_name'] = '普通支付模式';
|
|
switch ($val['type']) {
|
|
case 1:
|
|
$val['type_name'] = '线上';
|
|
break;
|
|
case 2:
|
|
$val['type_name'] = '线下';
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
$val['user_name'] = '服务商支付模式';
|
|
$val['type_name'] = '线上+线下';
|
|
break;
|
|
}
|
|
$val['operator_name'] = $JurisdictionUserModel->getFindField(['id' => $val['operator_id']], "name");
|
|
$val['max_coupons'] = json_decode($val['stock_use_rule'], true)['max_coupons'];
|
|
}
|
|
}
|
|
return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]);
|
|
} catch (\Exception $e) {
|
|
return callBack(statusCode()['success'], "查询成功", ['list' => [], 'count' => 0]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 代金券列表的where查询条件
|
|
* @param $param
|
|
* [
|
|
* merchant_id
|
|
* add_time
|
|
* stock_type 批次类型 1为NORMAL固定面额满减券,2为DISCOUNT折扣券使用规则,3为EXCHANGE换购券使用规则
|
|
* suspend_status 1已激活 2未激活
|
|
* activate_status 1已激活 2未激活
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function getCouponListTerm($param)
|
|
{
|
|
if (!empty($param['add_time'])) {
|
|
$where['available_begin_time'] = ['egt', strtotime($param['add_time'][0])];
|
|
$where['available_end_time'] = ['elt', strtotime($param['add_time'][1])];
|
|
}
|
|
if (!empty($param['stock_type'])) {
|
|
$where['stock_type'] = $param['stock_type'];
|
|
}
|
|
if (!empty($param['suspend_status'])) {
|
|
$where['suspend_status'] = $param['suspend_status'];
|
|
}
|
|
if (!empty($param['activate_status'])) {
|
|
$where['activate_status'] = $param['activate_status'];
|
|
}
|
|
$where['status'] = 1; //正常
|
|
$where['merchant_id'] = $param['merchant_id'];
|
|
return $where;
|
|
}
|
|
|
|
|
|
} |