文件
mashangyoujiu/Application/PayCoupon/Business/PayCouponRecord.class.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;
}
}