WIN-2308041133\Administrator 1 개월 전
부모
커밋
353b7d6eea
3개의 변경된 파일125개의 추가작업 그리고 2개의 파일을 삭제
  1. 87 2
      app/admin/controller/user/User.php
  2. 6 0
      app/admin/model/user/User.php
  3. 32 0
      app/admin/view/user/user/index.php

+ 87 - 2
app/admin/controller/user/User.php

@@ -18,9 +18,9 @@ use app\models\user\UserAgentLevel as AgentLevel;
 use app\admin\model\order\StoreOrder;
 use app\admin\model\wechat\WechatMessage;
 use app\admin\model\store\{StoreVisit, StoreCouponUser};
-use app\admin\model\system\{SystemUserAgentLevel, SystemUserLevel, SystemUserTask};
+use app\admin\model\system\{SystemDealerLevel, SystemUserAgentLevel, SystemUserLevel, SystemUserTask};
 use crmeb\services\{FormBuilder as Form, UtilService as Util, JsonService as Json};
-use app\admin\model\user\{User as UserModel, UserBill as UserBillAdmin, UserLevel, UserGroup, UserTaskFinish};
+use app\admin\model\user\{User as UserModel, UserBill as UserBillAdmin, UserDealer, UserLevel, UserGroup, UserTaskFinish};
 
 /**
  * 用户管理控制器
@@ -450,6 +450,91 @@ class User extends AuthController
         else
             return Json::fail('清除失败');
     }
+
+    /**
+     * 赠送经销商等级
+     * @param int $uid
+     * @return string|void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function give_dealer_level($uid = 0)
+    {
+        if (!$uid) return $this->failed('缺少参数');
+        //查询高于当前经销商等级的所有经销商等级
+        $systemLevelList = SystemDealerLevel::where(['is_show' => 1, 'is_del' => 0])->field(['name', 'id'])->order('grade asc')->select();
+        $field[] = Form::select('dealer_level_id', '经销商等级')->setOptions(function () use ($systemLevelList) {
+            $menus = [];
+            foreach ($systemLevelList as $menu) {
+                $menus[] = ['value' => $menu['id'], 'label' => $menu['name']];
+            }
+            return $menus;
+        })->filterable(1);
+        $form = Form::make_post_form('赠送经销商等级', $field, Url::buildUrl('save_give_dealer_level', ['uid' => $uid]), 2);
+        $this->assign(compact('form'));
+        return $this->fetch('public/form-builder');
+    }
+
+    /*
+     * 赠送经销商等级
+     * @paran int $uid
+     * @return json
+     * */
+    public function save_give_dealer_level($uid = 0)
+    {
+        if (!$uid) return Json::fail('缺少参数');
+        list($dealer_level_id) = Util::postMore([
+            ['dealer_level_id', 0],
+        ], $this->request, true);
+        //查询当前选择的经销商等级
+        $systemLevel = SystemDealerLevel::where(['is_show' => 1, 'is_del' => 0, 'id' => $dealer_level_id])->find();
+        if (!$systemLevel) return Json::fail('您选择赠送的经销商等级不存在!');
+        //检查是否拥有此经销商等级
+        $level = UserDealer::where(['uid' => $uid, 'level_id' => $dealer_level_id, 'is_del' => 0])->find();
+        if ($level) return Json::fail('此用户已有该经销商等级,无法再次赠送');
+        UserModel::commitTrans();
+        try {
+            //保存经销商信息
+            $res = UserDealer::create([
+                'status' => 1,
+                'is_del' => 0,
+                'grade' => $systemLevel->grade,
+                'uid' => $uid,
+                'add_time' => time(),
+                'level_id' => $dealer_level_id,
+                'discount' => $systemLevel->discount,
+                'commission_rate' => $systemLevel->commission_rate,
+                'mark' => '尊敬的用户【' . UserModel::where('uid', $uid)->value('nickname') . '】在' . date('Y-m-d H:i:s', time()) . '赠送经销商等级成为' . $systemLevel['name'] . '经销商',
+            ]);
+            $res = $res && UserModel::where('uid', $uid)->update(['dealer' => $dealer_level_id]);
+            if ($res) {
+                UserModel::commitTrans();
+                return Json::successful('赠送成功');
+            } else {
+                UserModel::rollbackTrans();
+                return Json::successful('赠送失败');
+            }
+        } catch (\Exception $e) {
+            UserModel::rollbackTrans();
+            return Json::fail('赠送失败');
+        }
+    }
+
+    /*
+     * 清除经销商等级
+     * @param int $uid
+     * @return json
+     * */
+    public function del_dealer_level($uid = 0)
+    {
+        if (!$uid) return Json::fail('缺少参数');
+        if (UserDealer::cleanUpDealerLevel($uid))
+            return Json::successful('清除成功');
+        else
+            return Json::fail('清除失败');
+    }
+
     /**
      * 修改user表状态
      *

+ 6 - 0
app/admin/model/user/User.php

@@ -186,6 +186,12 @@ class User extends BaseModel
                 if ($agentLevelInfo) {
                     $item['agent_level_name'] = SystemUserAgentLevel::where('id', $agentLevelInfo['level_id'])->value('name');
                 }
+                // 获取经销商等级名称
+                $item['dealer_level_name'] = false;
+                $dealerInfo = \app\admin\model\user\UserDealer::where('uid', $item['uid'])->where('is_del', 0)->order('grade desc')->field('level_id')->find();
+                if ($dealerInfo) {
+                    $item['dealer_level_name'] = \app\admin\model\system\SystemDealerLevel::where('id', $dealerInfo['level_id'])->value('name');
+                }
             });//->toArray();
         $count = self::setWherePage(self::setWhere($where), $where, ['w.sex', 'w.province', 'w.city', 'u.status', 'u.is_promoter'], ['u.nickname', 'u.uid'])->alias('u')->join('WechatUser w', 'u.uid=w.uid')->count();
         return ['count' => $count, 'data' => $list];

+ 32 - 0
app/admin/view/user/user/index.php

@@ -264,6 +264,11 @@
                                 <a href="javascript:void(0);" lay-event="franchisee">
                                     <i class="layui-icon layui-icon-star-fill" aria-hidden="true"></i> 加盟商修改</a>
                             </li>
+                            <li>
+                                <a href="javascript:void(0);" lay-event="give_dealer_level">
+                                    <i class="layui-icon layui-icon-star-fill" aria-hidden="true"></i> 修改经销商等级
+                                </a>
+                            </li>
                             {{# if(d.vip_name){ }}
                             <li>
                                 <a href="javascript:void(0);" lay-event="del_level">
@@ -276,6 +281,12 @@
                                     <i class="layui-icon layui-icon-close-fill" aria-hidden="true"></i> 清除代理等级</a>
                             </li>
                             {{# } }}
+                            {{# if(d.dealer_level_name){ }}
+                            <li>
+                                <a href="javascript:void(0);" lay-event="del_dealer_level">
+                                    <i class="layui-icon layui-icon-close-fill" aria-hidden="true"></i> 清除经销商等级</a>
+                            </li>
+                            {{# } }}
                         </ul>
                     </script>
                 </div>
@@ -435,12 +446,33 @@
                     confirm:'是的我要清除'
                 })
                 break;
+            case 'del_dealer_level':
+                $eb.$swal('delete',function(){
+                    $eb.axios.get(layList.U({a:'del_dealer_level',q:{uid:data.uid}})).then(function(res){
+                        if(res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success',res.data.msg);
+                            obj.update({dealer_level_name:false});
+                            layList.reload();
+                        }else
+                            return Promise.reject(res.data.msg || '清除失败')
+                    }).catch(function(err){
+                        $eb.$swal('error',err);
+                    });
+                },{
+                    title:'您确定要清除【'+data.nickname+'】的经销商等级吗?',
+                    text:'清除后无法恢复请谨慎操作',
+                    confirm:'是的我要清除'
+                })
+                break;
             case 'give_level':
                 $eb.createModalFrame(data.nickname+'-赠送会员',layList.Url({a:'give_level',p:{uid:data.uid}}),{w:500,h:300});
                 break;
             case 'give_agent_level':
                 $eb.createModalFrame(data.nickname+'-赠送代理会员',layList.Url({a:'give_agent_level',p:{uid:data.uid}}),{w:500,h:300});
                 break;
+            case 'give_dealer_level':
+                $eb.createModalFrame(data.nickname+'-赠送经销商等级',layList.Url({a:'give_dealer_level',p:{uid:data.uid}}),{w:500,h:300});
+                break;
             case 'set_group':
                 $eb.createModalFrame(data.nickname+'-设置分组',layList.Url({a:'set_group',p:{uid:data.uid}}),{w:500,h:300});
                 break;