parent
ed4c18b356
commit
583f18cba9
|
|
@ -34,26 +34,31 @@ class VipExchangeCodeDao extends BaseDao{
|
|||
->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){
|
||||
$query->where('status', (int)$params['status']);
|
||||
})
|
||||
->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){
|
||||
->when(isset($params['mer_id']) && $params['mer_id'] !== '' && (int)$params['mer_id'] > 0,function($query) use ($params){
|
||||
$query->where('mer_id', (int)$params['mer_id']);
|
||||
})
|
||||
->when(isset($params['staff_id']) && $params['staff_id'] !== '' && (int)$params['staff_id'] > 0,function($query) use ($params){
|
||||
$query->where('staff_id', (int)$params['staff_id']);
|
||||
})
|
||||
->when(isset($params['group_data_id']) && $params['group_data_id'] !== '',function($query) use ($params){
|
||||
$query->where('group_data_id', (int)$params['group_data_id']);
|
||||
})
|
||||
->with([
|
||||
'mer' => function($query){
|
||||
'mer' => function($query){
|
||||
$query->field(['mer_id','mer_name'])->bind(['mer_name']);
|
||||
},
|
||||
'vipInfo' => function($query){
|
||||
$query->field(['group_data_id','value','value as svip_name'])->withAttr('svip_name', function ($val) {
|
||||
$value = json_decode($val, true);
|
||||
|
||||
$query->field(['group_data_id','value','value as svip_name'])->withAttr('svip_name',function($val){
|
||||
$value = json_decode($val,TRUE);
|
||||
return $value['svip_name'] ?? '';
|
||||
})->bind(['svip_name']);
|
||||
},
|
||||
'user' => function($query){
|
||||
'user' => function($query){
|
||||
$query->field('uid,nickname,avatar');
|
||||
},
|
||||
'staff' => function($query){
|
||||
$query->field('service_id,nickname as staff_nickname,avatar as staff_avatar')->bind(['staff_nickname','staff_avatar']);
|
||||
},
|
||||
])
|
||||
->order('create_time DESC,id DESC');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
namespace app\common\model\user;
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\store\service\StoreService;
|
||||
use app\common\model\system\groupData\SystemGroupData;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
|
||||
|
|
@ -25,7 +26,9 @@ class UserVipExchangeCode extends BaseModel{
|
|||
public function user(){
|
||||
return $this->hasOne(User::class, 'uid', 'use_user_id');
|
||||
}
|
||||
|
||||
public function staff(){
|
||||
return $this->hasOne(StoreService::class, 'service_id', 'staff_id');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace app\common\repositories\user;
|
|||
use app\common\dao\user\VipExchangeCodeDao;
|
||||
use app\common\model\user\UserVipExchangeCode;
|
||||
use app\common\repositories\BaseRepository;
|
||||
use app\common\repositories\store\service\StoreServiceRepository;
|
||||
use app\common\repositories\system\groupData\GroupDataRepository;
|
||||
use app\common\repositories\system\groupData\GroupRepository;
|
||||
use app\common\repositories\system\merchant\MerchantRepository;
|
||||
|
|
@ -98,13 +99,13 @@ class VipExchangeCodeRepository extends BaseRepository{
|
|||
return $this->dao->insertAll($insertData);
|
||||
}
|
||||
/**
|
||||
* Common: 激活表单
|
||||
* Common: 分配兑换码给商户表单
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/02 16:51
|
||||
* @return \FormBuilder\Form
|
||||
* @throws \FormBuilder\Exception\FormBuilderException
|
||||
*/
|
||||
public function getActivateFormData(){
|
||||
public function allocationMerchantFormData(){
|
||||
$formData = [];
|
||||
// 获取商户列表
|
||||
$merList = app()->make(MerchantRepository::class)
|
||||
|
|
@ -150,16 +151,16 @@ class VipExchangeCodeRepository extends BaseRepository{
|
|||
Elm::select('group_data_id','绑定会员卡类型')->options($vipList),
|
||||
];
|
||||
$form->setRule($rules);
|
||||
return $form->setTitle( '激活兑换码')->formData($formData);
|
||||
return $form->setTitle( '分配兑换码')->formData($formData);
|
||||
}
|
||||
/**
|
||||
* Common: 激活兑换码
|
||||
* Common: 兑换码分配给商户(不进行激活操作)
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/02 17:09
|
||||
* @param $params
|
||||
* @return UserVipExchangeCode
|
||||
*/
|
||||
public function activateExchangeCode($params){
|
||||
public function allocationMerchantExchangeCode($params){
|
||||
// 是否允许生成兑换码
|
||||
if($params['end_id'] <= 0) throw new ValidateException('结束id必须大于0');
|
||||
if($params['end_id'] <= $params['start_id']) throw new ValidateException('结束id必须大于开始id');
|
||||
|
|
@ -168,26 +169,80 @@ class VipExchangeCodeRepository extends BaseRepository{
|
|||
|
||||
return UserVipExchangeCode::where('id','>',$params['start_id'])
|
||||
->where('id','<=',$params['end_id'])
|
||||
->where('status',0)
|
||||
->where('status', 0)
|
||||
->where(function($query) use ($params){
|
||||
$query->where('mer_id', null)->whereOr('mer_id', '<=', 0);
|
||||
})
|
||||
->update([
|
||||
'status' => 1,
|
||||
'activate' => date("Y-m-d H:i:s",time()),
|
||||
'mer_id' => $params['mer_id'],
|
||||
'mer_id' => $params['mer_id'],
|
||||
'group_data_id' => $params['group_data_id'],
|
||||
]);
|
||||
}
|
||||
/**
|
||||
* Common: 分配给员工并且激活表单
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/03 10:03
|
||||
* @param $merId
|
||||
* @return \FormBuilder\Form
|
||||
* @throws \FormBuilder\Exception\FormBuilderException
|
||||
*/
|
||||
public function getActivateFormData($merId){
|
||||
$formData = [];
|
||||
// 获取商户员工列表
|
||||
$serviceList = app()->make(StoreServiceRepository::class)
|
||||
->getSearch([])
|
||||
->field(['nickname as label','service_id as value'])
|
||||
->where('mer_id', $merId)
|
||||
->where('is_del', 0)
|
||||
->select()
|
||||
->toArray();
|
||||
$url = Route::buildUrl('systemUserVipExchangeCodeActivateInfo')->build();
|
||||
$form = Elm::createForm($url);
|
||||
$rules = [
|
||||
Elm::number('start_id','开始ID')->required()->appendRule('suffix',[
|
||||
'type' => 'div',
|
||||
'style' => ['color' => '#999999'],
|
||||
'domProps' => [
|
||||
'innerHTML' => '例:输入 15 则ID大于15 小于等于结束ID的兑换码都会激活',
|
||||
]
|
||||
]),
|
||||
Elm::number('end_id','结束ID')->required()->appendRule('suffix',[
|
||||
'type' => 'div',
|
||||
'style' => ['color' => '#999999'],
|
||||
'domProps' => [
|
||||
'innerHTML' => '例:输入 80 则ID小于等于80 大于开始ID的兑换码都会激活',
|
||||
]
|
||||
]),
|
||||
Elm::select('staff_id','绑定员工')->options($serviceList),
|
||||
];
|
||||
$form->setRule($rules);
|
||||
return $form->setTitle( '分配并激活兑换码')->formData($formData);
|
||||
}
|
||||
/**
|
||||
* Common: 分配给员工并且激活
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/03 10:08
|
||||
* @param $params
|
||||
* @param $merId
|
||||
* @return UserVipExchangeCode
|
||||
*/
|
||||
public function activateExchangeCode($params, $merId){
|
||||
// 是否允许生成兑换码
|
||||
if($params['end_id'] <= 0) throw new ValidateException('结束id必须大于0');
|
||||
if($params['end_id'] <= $params['start_id']) throw new ValidateException('结束id必须大于开始id');
|
||||
if($params['staff_id'] <= 0) throw new ValidateException('请绑定员工');
|
||||
|
||||
return UserVipExchangeCode::where('id','>',$params['start_id'])
|
||||
->where('id','<=',$params['end_id'])
|
||||
->where('status', 0)
|
||||
->where('mer_id', $merId)
|
||||
->update([
|
||||
'activate' => date("Y-m-d H:i:s"),
|
||||
'status' => 1,
|
||||
'staff_id' => $params['staff_id'],
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<?php
|
||||
namespace app\controller\admin\user;
|
||||
|
||||
use app\common\repositories\store\service\StoreServiceRepository;
|
||||
use app\common\repositories\system\groupData\GroupDataRepository;
|
||||
use app\common\repositories\system\groupData\GroupRepository;
|
||||
use app\common\repositories\system\merchant\MerchantRepository;
|
||||
use app\common\repositories\user\VipExchangeCodeRepository;
|
||||
use crmeb\basic\BaseController;
|
||||
use think\App;
|
||||
|
|
@ -25,7 +29,8 @@ class ExchangeCode extends BaseController{
|
|||
*/
|
||||
public function getList(){
|
||||
[$page, $limit] = $this->getPage();
|
||||
$params = $this->request->params(['is_export','batch_unique','status']);
|
||||
$params = $this->request->params(['is_export','batch_unique','status','mer_id','staff_id','group_data_id']);
|
||||
$params['mer_id'] = $this->request->merId();
|
||||
$data = $this->repository->getList((array)$params,(int)$page,(int)$limit);
|
||||
// 导出数据处理
|
||||
if($params['is_export'] == 1){
|
||||
|
|
@ -59,7 +64,8 @@ class ExchangeCode extends BaseController{
|
|||
* @return mixed
|
||||
*/
|
||||
public function getBatchList(){
|
||||
$list = $this->repository->getSearchModel([])->column('batch_unique','batch_title');
|
||||
$params['mer_id'] = $this->request->merId();
|
||||
$list = $this->repository->getSearchModel($params)->column('batch_unique','batch_title');
|
||||
|
||||
return app('json')->success($list);
|
||||
}
|
||||
|
|
@ -88,14 +94,21 @@ class ExchangeCode extends BaseController{
|
|||
return app('json')->success('添加成功');
|
||||
}
|
||||
/**
|
||||
* Common: 激活表单
|
||||
* Common: 分配商户 || 分配给员工
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/02 16:51
|
||||
* @return mixed
|
||||
* @throws \FormBuilder\Exception\FormBuilderException
|
||||
*/
|
||||
public function activateForm(){
|
||||
$data = $this->repository->getActivateFormData();
|
||||
$merId = $this->request->merId();
|
||||
if($merId > 0){
|
||||
// 商户操作 - 分配给员工并且激活
|
||||
$data = $this->repository->getActivateFormData($merId);
|
||||
}else{
|
||||
// 总平台操作 - 分配给商户
|
||||
$data = $this->repository->allocationMerchantFormData();
|
||||
}
|
||||
|
||||
return app('json')->success(formToData($data));
|
||||
}
|
||||
|
|
@ -106,12 +119,62 @@ class ExchangeCode extends BaseController{
|
|||
* @return mixed
|
||||
*/
|
||||
public function activateInfo(){
|
||||
$params = $this->request->params(['start_id','end_id',['mer_id', 0],['group_data_id',0]]);
|
||||
$this->repository->activateExchangeCode($params);
|
||||
$merId = $this->request->merId();
|
||||
if($merId > 0){
|
||||
// 商户操作 - 分配给员工并且激活
|
||||
$params = $this->request->params(['start_id','end_id',['staff_id', 0]]);
|
||||
$this->repository->activateExchangeCode($params, $merId);
|
||||
}else{
|
||||
// 总平台操作 - 分配给商户
|
||||
$params = $this->request->params(['start_id','end_id',['mer_id', 0],['group_data_id',0]]);
|
||||
$this->repository->allocationMerchantExchangeCode($params);
|
||||
}
|
||||
|
||||
return app('json')->success('激活成功');
|
||||
}
|
||||
/**
|
||||
* Common: 获取搜索条件对象列表
|
||||
* Author: wu-hui
|
||||
* Time: 2024/03/03 10:40
|
||||
* @return mixed
|
||||
*/
|
||||
public function getSearchData(){
|
||||
$merId = $this->request->merId();
|
||||
$groupId = app()->make(GroupRepository::class)->getSearch(['group_key' => 'svip_pay'])->value('group_id');
|
||||
$data['vipList'] = app()->make(GroupDataRepository::class)
|
||||
->getSearch([])
|
||||
->field(['group_data_id','value'])
|
||||
->withAttr('value', function ($val) {
|
||||
$value = json_decode($val, true);
|
||||
|
||||
return $value['svip_name'] ?? '';
|
||||
})
|
||||
->where('mer_id', 0)
|
||||
->where('status', 1)
|
||||
->where('group_id', $groupId)
|
||||
->order('sort DESC,group_data_id ASC')
|
||||
->select()
|
||||
->toArray();
|
||||
if($merId > 0){
|
||||
// 商户操作
|
||||
$data['service'] = app()->make(StoreServiceRepository::class)
|
||||
->getSearch([])
|
||||
->field(['nickname','service_id'])
|
||||
->where('mer_id', $merId)
|
||||
->where('is_del', 0)
|
||||
->select()
|
||||
->toArray();
|
||||
}else{
|
||||
// 总平台操作
|
||||
$data['mer_list'] = app()->make(MerchantRepository::class)
|
||||
->search(['is_del' => 0,'merchant_type' => 0,'status' => 1])
|
||||
->field(['mer_id','mer_name'])
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
|
||||
return app('json')->success($data);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Route::group(function () {
|
|||
],
|
||||
]
|
||||
]);
|
||||
//付费会员等级
|
||||
// 会员卡兑换码
|
||||
Route::group('user/exchangeCode', function () {
|
||||
// 兑换码列表
|
||||
Route::get('getList', 'admin.user.ExchangeCode/getList')->name('systemUserVipExchangeCodeGetList');
|
||||
|
|
@ -62,23 +62,15 @@ Route::group(function () {
|
|||
// 提交激活表单
|
||||
Route::post('activateInfo', 'admin.user.ExchangeCode/activateInfo')->name('systemUserVipExchangeCodeActivateInfo');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})->append(['type' => 1])->option([
|
||||
'_path' => '/user/member/exchangeCode',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
||||
|
||||
|
||||
// 会员订单列表
|
||||
Route::get('user/svip/order_lst', 'admin.user.Svip/payList')->name('systemUserSvipPayLst')->option([
|
||||
'_alias' => '列表',
|
||||
'_path' => '/user/member/record',
|
||||
]);
|
||||
|
||||
/**
|
||||
* 付费会员权益
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ Route::group(function () {
|
|||
'_path' => '/user/searchRecord',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
||||
//商户用户列表
|
||||
Route::group('user', function () {
|
||||
Route::get('lst', '/getList')->name('merchantUserLst')->option([
|
||||
|
|
@ -39,7 +38,6 @@ Route::group(function () {
|
|||
'_path' => '/user/list',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
||||
//用户自动标签
|
||||
Route::group('auto_label', function () {
|
||||
Route::get('lst', '/getList')->name('merchantLabelRuleLst')->option([
|
||||
|
|
@ -61,7 +59,6 @@ Route::group(function () {
|
|||
'_path' => '/user/maticlabel',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
||||
//手动标签
|
||||
Route::group('user/label', function () {
|
||||
Route::get('lst', '/lst')->name('merchantUserLabelLst')->option([
|
||||
|
|
@ -91,7 +88,23 @@ Route::group(function () {
|
|||
'_auth' => true,
|
||||
]);
|
||||
|
||||
// 会员卡兑换码
|
||||
Route::group('user/exchangeCode', function () {
|
||||
// 兑换码列表
|
||||
Route::get('getList', 'admin.user.ExchangeCode/getList')->name('systemUserVipExchangeCodeGetList');
|
||||
// 兑换码批次列表
|
||||
Route::get('getBatchList', 'admin.user.ExchangeCode/getBatchList')->name('systemUserVipExchangeCodeGetBatchList');
|
||||
// 激活表单
|
||||
Route::get('activateForm', 'admin.user.ExchangeCode/activateForm')->name('systemUserVipExchangeCodeActivateForm');
|
||||
// 提交激活表单
|
||||
Route::post('activateInfo', 'admin.user.ExchangeCode/activateInfo')->name('systemUserVipExchangeCodeActivateInfo');
|
||||
// 搜索条件对象列表
|
||||
Route::get('getSearchData', 'admin.user.ExchangeCode/getSearchData')->name('systemUserVipExchangeCodeGetSearchData');
|
||||
|
||||
})->append(['type' => 1])->option([
|
||||
'_path' => '/user/member/exchangeCode',
|
||||
'_auth' => true,
|
||||
]);
|
||||
|
||||
|
||||
})->middleware(AllowOriginMiddleware::class)
|
||||
|
|
|
|||
Loading…
Reference in New Issue