From f9d1ac20105d7229f2b4520d5220e2996b2e8a92 Mon Sep 17 00:00:00 2001
From: jianglong <974886602@qq.com>
Date: Tue, 7 Feb 2023 17:29:57 +0800
Subject: [PATCH] chengx
---
application/admin/controller/Client.php | 256 ++++++++++++++++++++-
application/admin/controller/Common.php | 3 +
application/admin/view/auth/admin_list.html | 29 ++-
application/admin/view/client/active_list.html | 172 ++++++++++++++
application/admin/view/client/active_list_add.html | 94 ++++++++
.../admin/view/client/active_list_edit.html | 95 ++++++++
application/admin/view/client/index.html | 3 +-
application/admin/view/client/point_detail.html | 171 ++++++++++++++
application/admin/view/client/point_list.html | 148 ++++++++++++
application/admin/view/client/take_add.html | 89 +++++++
config/app.php | 3 +-
public/.htaccess | 15 +-
public/.user.ini | 1 -
13 files changed, 1068 insertions(+), 11 deletions(-)
create mode 100644 application/admin/view/client/active_list.html
create mode 100644 application/admin/view/client/active_list_add.html
create mode 100644 application/admin/view/client/active_list_edit.html
create mode 100644 application/admin/view/client/point_detail.html
create mode 100644 application/admin/view/client/point_list.html
create mode 100644 application/admin/view/client/take_add.html
delete mode 100644 public/.user.ini
diff --git a/application/admin/controller/Client.php b/application/admin/controller/Client.php
index 2f4cc94..b8e0aaf 100644
--- a/application/admin/controller/Client.php
+++ b/application/admin/controller/Client.php
@@ -899,4 +899,258 @@ class Client extends Common{
}
}
-}
\ No newline at end of file
+
+ //积分活动
+ public function activeList(){
+ if(request()->isPost()){
+ $page =input('page')?input('page'):1;
+ $pageSize =input('limit')?input('limit'):config('pageSize');
+ $list = db('crm_client_active')
+ ->paginate(array('list_rows'=>$pageSize,'page'=>$page))
+ ->toArray();
+ return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1];
+ }
+ return $this->fetch();
+ }
+
+ //添加积分活动
+ public function activeAdd(){
+ if(request()->isPost()){
+ $data = input();
+ unset($data['/admin/client/activeadd_html']);
+ $data['add_time'] = time();
+ $result = Db::table('crm_client_active')->insert($data);
+ if ($result){
+ $msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]];
+ return json($msg);
+ }else{
+ $msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]];
+ return json($msg);
+ }
+ }
+ return $this->fetch('client/active_list_add');
+ }
+ //编辑积分活动
+ public function activeEdit(){
+ if (Request::isAjax()){
+ $data = input();
+ unset($data['/admin/client/activeedit_html']);
+ // 获取原状态
+ $oldstatus = Db::table('crm_client_active')->where(['id'=>$data['id']])->find();
+ if (!$oldstatus) {
+ $msg = ['code' => -200,'msg'=>'数据不存在','data'=>[]];
+ return json($msg);
+ }else{
+ $ischange = true;
+ }
+
+ $result = Db::table('crm_client_active')->where(['id'=>$data['id']])->update($data);
+ if ($result){
+ $msg = ['code' => 0,'msg'=>'编辑成功!','data'=>[]];
+ return json($msg);
+ }else{
+ $msg = ['code' => -200,'msg'=>'编辑失败!','data'=>[]];
+ return json($msg);
+ }
+ }
+
+ $result = Db::table('crm_client_active') ->where(['id' => Request::param('id')])->find();
+ $this -> assign('result',$result);
+ return $this -> fetch('client/active_list_edit');
+ }
+
+ //删除积分活动
+ public function activeDel(){
+ $id = Request::param('id');
+ // 获取原状态
+ $oldstatus = Db::table('crm_client_active')->where(['id'=>$id])->find();
+ $oldstatusname = $oldstatus['name'];
+
+ $result = Db::table('crm_client_active')->where('id',$id)->delete();
+ if ($result){
+ $msg = ['code' => 0,'msg'=>'删除成功!','data'=>[]];
+ return json($msg);
+ }else{
+ $msg = ['code' => -200,'msg'=>'删除失败!','data'=>[]];
+ return json($msg);
+ }
+ }
+
+ //添加积分活动
+ public function take(){
+ if(request()->isPost()){
+ $data = input();
+ $weixin_template_0 = config('weixin_template_0');
+ $admin = Db::table('admin') ->where(['admin_id' => $data['aid']])->find();
+ if(!$admin){
+ $msg = ['code' => -200,'msg'=>'经销商不能为空!','data'=>[]];
+ return json($msg);
+ }
+ //先保存提货单数据
+ $data['add_time'] = time();
+ $data['take_time'] = strtotime($data['take_time']);
+ $result = Db::table('admin_take')->insert($data,0,1);
+ if (!$result){
+ $msg = ['code' => -200,'msg'=>'添加失败!','data'=>[]];
+ return json($msg);
+ }
+ $activeInfo = Db::table('crm_client_active')->where(['id'=>$data['active_id']])->find();
+ if(!$activeInfo){
+ $msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]];
+ return json($msg);
+ }
+ $get_money_point_rate = $activeInfo['get_point']/$activeInfo['get_money'];
+ $out_mpney_point_rate = $activeInfo['out_point']/$activeInfo['out_money'];
+ $admin_point = Db::table('admin_point') ->where(['aid' => $data['aid']])->find();
+
+ if(!$admin_point){
+ $admin_point['aid'] = $data['aid'];
+ $admin_point['point'] = 0;
+ $admin_point['in_point'] = 0;
+ $admin_point['out_point'] = 0;
+ $admin_point['add_time'] = time();
+ $admin_point['id'] = Db::table('admin_point')->insert($admin_point,0,1);
+ }
+ $pre_point = $admin_point['in_point'];
+
+ //再计算抵扣积分 提货金额*0.01 = 可抵扣金额 * (积分/金额比)
+ $can_out_money = intval(intval($data['take_money'])*0.01);
+ $out_point = intval($can_out_money*$out_mpney_point_rate);
+ //如果当前用户的在期积分大于抵扣积分 生成抵扣积分记录 扣除想要的积分值
+ if($admin_point['in_point']>$out_point){
+ $out_point_log = [];
+ $out_point_log['aid'] = $data['aid'];
+ $out_point_log['take_id'] = $result;
+ $out_point_log['change'] = -$out_point;
+ $out_point_log['type'] = 1;
+ $out_point_log['aid'] = $data['aid'];
+ $out_point_log['in_point'] = $admin_point['in_point'];
+ $out_point_log['active_id'] = $data['active_id'];
+ $out_point_log['active_name'] = $activeInfo['name'];
+ $out_point_log['money'] = $can_out_money;
+ $out_point_log['point'] = $out_point;
+ $out_point_log['remark'] = $activeInfo['content'];
+ $out_point_log['add_time'] = time();
+ Db::table('admin_point_log')->insert($out_point_log);
+
+ //扣除
+ Db::table('admin_point')->where(['id'=>$admin_point['id']])->setDec('point',$out_point);
+ Db::table('admin_point')->where(['id'=>$admin_point['id']])->setDec('in_point',$out_point);
+ //依次扣除 用户id 要扣除多少分
+ $this->subAdminPoint($data['aid'],$out_point);
+ }else{
+ $out_point = 0;
+ }
+ //重新获取最新的数据了
+ $admin_point = Db::table('admin_point') ->where(['aid' => $data['aid']])->find();
+ //再计算提货积分 提货金额 * (积分/金额比)
+ $in_point = intval(intval($data['take_money'])*$get_money_point_rate);
+
+ $out_point_log = [];
+ $out_point_log['aid'] = $data['aid'];
+ $out_point_log['take_id'] = $result;
+ $out_point_log['change'] = $in_point;
+ $out_point_log['type'] = 0;
+ $out_point_log['aid'] = $data['aid'];
+ $out_point_log['in_point'] = $admin_point['in_point'];
+ $out_point_log['active_id'] = $data['active_id'];
+ $out_point_log['active_name'] = $activeInfo['name'];
+ $out_point_log['money'] = intval($data['take_money']);
+ $out_point_log['point'] = $out_point_log['use_point'] = $in_point;
+ $out_point_log['remark'] = $activeInfo['content'];
+ $out_point_log['out_time'] = strtotime(date('Y-m-d',strtotime('+1 years +1 days')));
+ $out_point_log['add_time'] = time();
+ Db::table('admin_point_log')->insert($out_point_log);
+
+ //加上提货积分
+ Db::table('admin_point')->where(['id'=>$admin_point['id']])->setInc('point',$in_point);
+ Db::table('admin_point')->where(['id'=>$admin_point['id']])->setInc('in_point',$in_point);
+
+ //重新获取最新的数据了
+ $admin_point = Db::table('admin_point') ->where(['aid' => $data['aid']])->find();
+ //再生成积分变动消息
+ $message = [];
+ $message['aid'] = $data['aid'];
+ $message['openid'] = $admin['openid']?$admin['openid']:'';
+ $message['tempid'] = 0;
+ $message['take_money'] = intval($data['take_money']);
+ $message['out_point'] = $out_point;
+ $message['get_point'] = $in_point;
+ $message['point'] = $admin_point['point'];
+ $message['remark'] = str_replace(["{pre_point}","{take_money}","{out_point}","{get_point}","{point}","{active_content}"],[$pre_point,intval($data['take_money']),$out_point,$in_point,$admin_point['point'],$activeInfo['content']],$weixin_template_0);
+ $message['add_time'] = time();
+ Db::table('admin_point_message')->insert($message);
+
+ $msg = ['code' => 0,'msg'=>'添加成功!','data'=>[]];
+ return json($msg);
+ }
+ $aid = input("id");
+ $admin = Db::table('admin') ->where(['admin_id' => $aid])->find();
+ $this -> assign('aid',$aid);
+ $this -> assign('admin',$admin);
+ $activeList = Db::table('crm_client_active') ->where(['status' => 1])->select();
+ $this -> assign('activeList',$activeList);
+ return $this->fetch('client/take_add');
+ }
+
+ //用户积分列表
+ public function userPointList(){
+ if(request()->isPost()){
+ $page =input('page')?input('page'):1;
+ $pageSize =input('limit')?input('limit'):config('pageSize');
+ $list = db('admin')
+ -> alias("a")
+ -> join('admin_point b','a.admin_id=b.aid')
+ ->where('a.group_id',11)
+ ->paginate(array('list_rows'=>$pageSize,'page'=>$page))
+ ->toArray();
+
+ return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1];
+ }
+ return $this->fetch('client/point_list');
+ }
+
+ //用户积分列表
+ public function userPointDetail(){
+ $aid = input("id");
+ if($this->sys_admin_info['group_id'] == 11){
+ $aid = $this->sys_admin_info['admin__id'];
+ }
+ if(request()->isPost()){
+ $page =input('page')?input('page'):1;
+ $pageSize =input('limit')?input('limit'):config('pageSize');
+ $list = db('admin_point_log')
+ ->field("b.*,a.username")
+ -> alias("b")
+ -> join('admin a','a.admin_id=b.aid')
+ ->where('b.aid',$aid)
+ ->order("id desc")
+ ->paginate(array('list_rows'=>$pageSize,'page'=>$page))
+ ->toArray();
+ return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1];
+ }
+ $this->assign("id",$aid);
+ return $this->fetch('client/point_detail');
+ }
+
+ // 将扣除的积分指定到每条记录上
+ public function subAdminPoint($aid=0,$out_point=0){
+ if($aid ==0 || $out_point==0 ){
+ return 0;
+ }
+ $now_point = $out_point;
+
+ //获取用户所有的提货获取的积分且有效的且有剩余可抵扣的积分记录 按时间正序开始
+ $admin_point_logs = Db::table('admin_point_log')->where(['aid'=>$aid,'type'=>0,'status'=>0])->where('use_point','>',0)->order('add_time','asc')->select();
+ foreach ($admin_point_logs as $logs){
+ if($now_point>0){
+ $use_point = $now_point>=$logs['use_point'] ? 0 : $logs['use_point'] - $now_point;
+ $update = ['use_point'=>$use_point];
+ $now_point = $now_point>=$logs['use_point'] ? $now_point-$logs['use_point'] : 0;
+ Db::table('admin_point_log')->where(['id' => $logs['id']])->update($update);
+ }else{
+ break;
+ }
+ }
+ }
+}
diff --git a/application/admin/controller/Common.php b/application/admin/controller/Common.php
index 76f32f7..7450826 100644
--- a/application/admin/controller/Common.php
+++ b/application/admin/controller/Common.php
@@ -5,6 +5,7 @@ use think\Controller;
class Common extends Controller
{
protected $mod,$role,$system,$nav,$menudata,$cache_model,$categorys,$module,$moduleid,$adminRules,$HrefId;
+ public $sys_admin_info;
public function initialize()
{
//判断管理员是否登录
@@ -13,6 +14,8 @@ class Common extends Controller
}
define('MODULE_NAME',strtolower(request()->controller()));
define('ACTION_NAME',strtolower(request()->action()));
+ //获取管理员信息
+ $this->sys_admin_info = Db::table('admin') ->where(['admin_id' => session('aid')])->find();
//权限管理
//当前操作权限ID
if(session('aid')!=1){
diff --git a/application/admin/view/auth/admin_list.html b/application/admin/view/auth/admin_list.html
index 9f2bf2c..c83a53b 100644
--- a/application/admin/view/auth/admin_list.html
+++ b/application/admin/view/auth/admin_list.html
@@ -8,13 +8,21 @@
{include file="common/foot"/}
+
+