zhs 3 years ago
parent
commit
1b3353ee09

+ 10 - 0
src/main/java/com/supplier/controller/IndexController.java

@@ -153,4 +153,14 @@ public class IndexController {
         model.addAttribute("phone", phone);
         return "registered/index";
     }
+
+    /**
+     * 新增人员
+     * @param model
+     * @return
+     */
+    @RequestMapping("/personnel")
+    public String personnel(Model model){
+        return "permissions/index";
+    }
 }

+ 37 - 1
src/main/java/com/supplier/controller/PersonalController.java

@@ -99,7 +99,6 @@ public class PersonalController {
             //获取token
             Map<String, Object> userMap = ParsingToken.tokenParsing(request);
             supplier.setCode((String) userMap.get("code"));
-
             personalServce.updatePhone(supplier);
             map.put("msg", "200");
         } catch (Exception e){
@@ -152,4 +151,41 @@ public class PersonalController {
         String code = (String) ParsingToken.tokenParsing(request).get("code");
         return personalServce.topUpNum(code);
     }
+
+    /**
+     * 查询子账户
+     * @param supplier 参数
+     * @param request 参数
+     * @return 返回结果
+     */
+    @GetMapping("getEmployees")
+    public Map<String, Object> getEmployees(Supplier supplier, HttpServletRequest request){
+        supplier.setCode((String) ParsingToken.tokenParsing(request).get("code"));
+        return personalServce.getEmployees(supplier);
+    }
+
+    /**
+     * 创建子账号
+     * @param supplier 参数
+     * @param request 参数
+     * @return 返回结果
+     */
+    @PutMapping("editorEmployees")
+    public Map<String, Object> editorEmployees(Supplier supplier, HttpServletRequest request){
+        supplier.setCode((String) ParsingToken.tokenParsing(request).get("code"));
+        supplier.setPhone(DesEncry.encrypt(supplier.getPhone()));
+        return personalServce.editorEmployees(supplier);
+    }
+
+    /**
+     * 删除子账户
+     * @param supplier 参数
+     * @param request 参数
+     * @return 返回结果
+     */
+    @DeleteMapping("delChild")
+    public Map<String, Object> delChild(Supplier supplier, HttpServletRequest request){
+        supplier.setCode((String) ParsingToken.tokenParsing(request).get("code"));
+        return personalServce.delChild(supplier);
+    }
 }

+ 8 - 0
src/main/java/com/supplier/mapper/PersonalMapper.java

@@ -38,4 +38,12 @@ public interface PersonalMapper {
     List<Map<String, Object>> balanceOfPayments(String code);
 
     Map<String, Object> topUpNum(String code);
+
+    List<Supplier> getEmployees(Supplier supplier);
+
+    int getEmployeesCount(Supplier supplier);
+
+    void editorEmployees(Supplier supplier);
+
+    void delChild(Supplier supplier);
 }

+ 8 - 0
src/main/java/com/supplier/model/Supplier.java

@@ -146,4 +146,12 @@ public class Supplier implements Serializable {
      * 超管
      */
     private String permissionsType;
+    /**
+     * 页数
+     */
+    private int page;
+    /**
+     * 条数
+     */
+    private int limit;
 }

+ 6 - 0
src/main/java/com/supplier/service/PersonalServce.java

@@ -30,4 +30,10 @@ public interface PersonalServce {
     Map<String, Object> balanceOfPayments(String code);
 
     Map<String, Object> topUpNum(String code);
+
+    Map<String, Object> getEmployees(Supplier supplier);
+
+    Map<String, Object> editorEmployees(Supplier supplier);
+
+    Map<String, Object> delChild(Supplier supplier);
 }

+ 58 - 0
src/main/java/com/supplier/service/impl/PersonalServiceImpl.java

@@ -3,10 +3,13 @@ package com.supplier.service.impl;
 import com.supplier.mapper.PersonalMapper;
 import com.supplier.model.*;
 import com.supplier.service.PersonalServce;
+import com.supplier.util.DesDecry;
 import com.supplier.util.SnowflakeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -142,4 +145,59 @@ public class PersonalServiceImpl implements PersonalServce {
         }
         return map;
     }
+
+    @Override
+    public Map<String, Object> getEmployees(Supplier supplier) {
+        Map<String, Object> map = new HashMap<>();
+        try{
+            supplier.setPage((supplier.getPage() - 1) * supplier.getLimit());
+            List<Supplier> list = new ArrayList<>();
+            for(Supplier supplier1 : personalMapper.getEmployees(supplier)){
+                supplier1.setPhone(DesDecry.decrypt(supplier1.getPhone()));
+                list.add(supplier1);
+            }
+            map.put("data", list);
+            map.put("count", personalMapper.getEmployeesCount(supplier));
+            map.put("msg", "200");
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("msg", "500");
+            map.put("errMsg", "服务器请求异常,请稍后再试");
+        }
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> editorEmployees(Supplier supplier) {
+        Map<String, Object> map = new HashMap<>();
+        try{
+            int count = personalMapper.checkCaptcha(supplier);//校验验证码是否正确
+            if(count > 0) {
+                personalMapper.editorEmployees(supplier);
+                map.put("msg", "200");
+            } else {
+                map.put("errMsg", "手机号或验证码不正确");
+                map.put("msg", "300");
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("msg", "500");
+            map.put("errMsg", "服务器请求异常,请稍后再试");
+        }
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> delChild(Supplier supplier) {
+        Map<String, Object> map = new HashMap<>();
+        try{
+            personalMapper.delChild(supplier);
+            map.put("msg", "200");
+        }catch (Exception e){
+            e.printStackTrace();
+            map.put("msg", "500");
+            map.put("errMsg", "服务器请求异常,请稍后再试");
+        }
+        return map;
+    }
 }

+ 28 - 0
src/main/resources/config/mapping/PersonalMapper.xml

@@ -147,4 +147,32 @@
         WHERE
             a.code = #{code}
     </select>
+    <!-- 查询子账户 -->
+    <select id="getEmployees" resultType="Supplier" parameterType="Supplier">
+        select
+            top ${limit} *
+        from sys_supplier
+        where
+            account_associated = #{code} and flag = '0'
+            and id not in (select top ${page} id from sys_supplier where account_associated = #{code} and flag = '0'
+                <if test="phone != null and phone != ''">
+                    and phone = #{phone}
+                </if>
+                )
+            <if test="phone != null and phone != ''">
+                and phone = #{phone}
+            </if>
+    </select>
+    <!-- 查询子账户个数 -->
+    <select id="getEmployeesCount" resultType="int" parameterType="Supplier">
+        select count(*) from sys_supplier where account_associated = #{code}
+    </select>
+    <!-- 创建子账户 -->
+    <update id="editorEmployees" parameterType="Supplier">
+        update sys_supplier set
+    </update>
+    <!-- 删除指定子账户 -->
+    <update id="delChild" parameterType="Supplier">
+        update sys_supplier set flag = '1' where id = #{id}
+    </update>
 </mapper>

+ 12 - 0
src/main/resources/static/css/permissions/index.css

@@ -0,0 +1,12 @@
+.title_input .layui-input, .layui-select, .layui-textarea {
+    height: 38px;
+    line-height: 1.3;
+    line-height: 38px\9;
+    border-width: 1px;
+    border-style: solid;
+    background-color: #fff;
+    color: rgba(0,0,0,.85);
+    border-radius: 2px;
+    padding-left: 10px;
+    font-size: inherit;
+}

+ 8 - 4
src/main/resources/static/js/indexHome/function.js

@@ -13,10 +13,7 @@ function clickItem(obj){
         });
         $(obj).find("a cite img").attr("src",  "/images/indeHome/" + $(obj).attr("titleVal") + "_click.png");
         //个人信息特殊处理
-        if($(obj).find("a cite").attr("name") == "账户信息"){
-            clickEvent(obj);
-            iframeClick(obj);
-        }else if($(obj).find("a cite").attr("name") == "路线发布"){//路线发布特殊处理
+        if($(obj).find("a cite").attr("name") == "账户信息" || $(obj).find("a cite").attr("name") == "路线发布" || $(obj).find("a cite").attr("name") == "人员设置"){
             clickEvent(obj);
             iframeClick(obj);
         }
@@ -77,6 +74,13 @@ function iframeClick(obj){
                 "                </div>");
             $("iframe").attr("src", "/page/releaseIndex");
         }
+        if(thisClickName == "人员设置"){
+            $(".center_top").append("<div onClick='switchMenu(this)' name='人员设置' src='/page/personnel' class=\"select_button check_div\">\n" +
+                "                    <span data-locale=\""+ locale +"\">"+ thisName +"</span>\n" +
+                "                    <div class=\"close_button\" onclick='removeThis(this)'><i class=\"layui-icon layui-icon-close\"></i></div>\n" +
+                "                </div>");
+            $("iframe").attr("src", "/page/personnel");
+        }
         if(parentName == "退款申请"){
             $(".center_top").append("<div onClick='switchMenu(this)' name="+ thisClickName +" src='/page/refundIndex?idVal="+ idVal +"' class=\"select_button check_div\">\n" +
                 "                    <span data-locale=\""+ locale +"\">"+ thisName +"</span>\n" +

+ 6 - 0
src/main/resources/static/js/permissions/even.js

@@ -0,0 +1,6 @@
+var $ = null;
+var form = null;
+var layer = null;
+var laydate = null;
+var laypage = null;
+var phone = null;//电话

+ 84 - 0
src/main/resources/static/js/permissions/function.js

@@ -0,0 +1,84 @@
+//查询人员
+function load(page, limit, phone){
+    layer.load(3);
+    $.ajax({
+        url: "/personal/getEmployees",
+        type: "get",
+        data: {
+            "page": page,
+            "limit": limit,
+            "phone": phone
+        },
+        headers: {"token": localStorage.getItem("token")},
+        dataType: "json",
+        success: (data) => {
+            if(data.msg == "200"){
+                $.each(data.data, (index, item) => {
+                    $(".content_div").append("<div id="+ item.id +" class=\"content_column\">\n" +
+                        "<div class=\"content_div_input\">\n" +
+                        "<div class=\"head_name\" style=\"width: 5%;\">"+ (index + 1) +"</div>\n" +
+                        "<div class=\"head_name\" style=\"width: 37.5%;\">"+ item.name +"</div>\n" +
+                        "<div class=\"head_name\" style=\"width: 37.5%;\">"+ item.phone +"</div>\n" +
+                        "<div class=\"head_name\" style=\"width: 20%;\">" +
+                        "<button class=\"offer_button button_div_head\" onclick='modify(this)'><img src=\"/images/demandForSingle/offer.png\"/><span>权限修改</span></button>\n" +
+                        // "<button class=\"button_div_head layui-btn-danger\" onclick='delChild(this)'><img src=\"/images/demandForSingle/offer.png\"/><span>删除</span></button></div>\n" +
+                        "</div>\n" +
+                        "</div>")
+                });
+                //自定义样式分页
+                laypage.render({
+                    elem: 'demo2'
+                    ,count: data.count
+                    ,theme: '#1E9FFF'
+                    , limit: limit
+                    , curr: page
+                    , jump: function (obj,first) {
+                        if (!first) {
+                            load(obj.curr,obj.limit, phone);
+                        }
+                    }
+                    , prev: '<em><i class="layui-icon">&#xe603;</i></em>'
+                    , next: '<em><i class="layui-icon">&#xe602;</i></em>'
+                });
+            } else {
+                layer.alert(paramReturn("服务器异常,请联系管理员", parent.type), {icon: 2});
+            }
+            layer.closeAll("loading");
+        },
+        error: () => {
+            layer.alert(paramReturn("服务器异常,请联系管理员", parent.type), {icon: 2});
+            layer.closeAll("loading");
+        }
+    });
+}
+//权限修改
+function modify(obj){
+    let id = $(obj).parent().parent().parent().attr("id");
+    console.log(id)
+}
+//删除子账号
+function delChild(obj){
+    layer.load(3);
+    let id = $(obj).parent().parent().parent().attr("id");
+    $.ajax({
+        url: "/personal/delChild",
+        type: "delete",
+        data: {
+            "id": id
+        },
+        headers: {"token": localStorage.getItem("token")},
+        dataType: "json",
+        success: (data) => {
+            if(data.msg == "200"){
+                layer.msg("删除成功", {icon: 1, function(){
+                    load(1, 7, phone);
+                }});
+            }
+            layer.closeAll("loading");
+        },
+        error: () => {
+            layer.alert(paramReturn("服务器异常,请联系管理员", parent.type), {icon: 2});
+            layer.closeAll("loading");
+        }
+    });
+}

+ 114 - 0
src/main/resources/static/js/permissions/index.js

@@ -0,0 +1,114 @@
+layui.use(["layer", "form", "laydate", 'laypage'], function(){
+    $ = layui.$;
+    form = layui.form;
+    layer = layui.layer;
+    laypage = layui.laypage;
+
+    //头部查询
+    $(".query_button").on("click", () => {
+        phone = $("input[name=phone]").val(); //开始日期
+        load(1, 7, phone);//查询报价单数据渲染
+    });
+
+    //头部重置
+    $(".reset_button").on("click", () => {
+        $("input[name=phone]").val(""); //开始日期
+        phone = null;
+        load(1, 7, phone);//查询报价单数据渲染
+    });
+    //新增子账号
+    $(".add_button").on("click", function (e){
+        let str = "<div class='phoneBox'>"
+            // +"<div class='phoneSmBox'>原手机号码 <input type='text' name='oldPhone' lay-verify='oldPhone' autocomplete='off' class='layui-input'></div>"
+            +"<div class='phoneSmBox'>手机号码 <input type='text' name='phone' lay-verify='newPhone' autocomplete='off' class='layui-input'></div>"
+            +"<div class='phoneSmBox2'><input type='text' name='yzNum' lay-verify='yzNum' autocomplete='off' class='layui-input'>"
+            +"<div class='getCode getCaptcha'>获取验证码</div></div>"
+            +"</div>";
+        layer.confirm(str,{
+            btn: ['确定', '取消'],
+            title: "新增人员",
+            skin: 'layclass'
+        }, function () {
+            layer.load(3);
+            //修改
+            $.ajax({
+                url: "/personal/editorEmployees",
+                type: "put",
+                data: {
+                    "phone": $("input[name=phone]").val(),
+                    "captcha": $("input[name=yzNum]").val()
+                },
+                headers: {"token": localStorage.getItem("token")},
+                dataType: "json",
+                success: (data) => {
+                    if(data.msg == "200"){
+                        layer.closeAll();
+                        parent.layer.msg("修改成功", {icon: 1});
+                        load(1, 7, null);//数据渲染
+                    } else if(data.msg == "300"){
+                        layer.closeAll("loading");
+                        layer.msg(data.errMsg, {icon: 2});
+                    }
+                },
+                error: () => {
+                    layer.closeAll("loading");
+                    layer.alert("网络错误 请联系管理员");
+                }
+            });
+        }, function(){
+            layer.closeAll()
+        });
+    });
+    //发送验证码
+    $(document).on("click", ".getCode", (e) => {
+        let phone = $("input[name=phone]").val();//新手机号
+        // let oldPhone = $("input[name=oldPhone]").val();//新手机号
+        // if(!(/^1[3456789]\d{9}$/.test(oldPhone))){
+        //     layer.alert("手机号格式不正确", {icon: 2});
+        //     return false;
+        // }
+        if(!(/^1[3456789]\d{9}$/.test(phone))){
+            layer.alert("手机号格式不正确", {icon: 2});
+            return false;
+        }
+        //发送验证码
+        $.ajax({
+            // url: "https://www.tuyatrip.com/api/supplier/checkTele",
+            url: "http://locslhost:9620/supplier/checkTele",
+            type: "post",
+            data: {
+                "phone": phone
+            },
+            // contentType: "application/json",
+            headers: {"token": localStorage.getItem("token")},
+            dataType: "json",
+            success: (data) => {
+                if(data.msg == "500"){
+                    layer.alert(data.errMsg, {icon: 2});
+                } else {
+                    layer.alert("发送成功", {icon: 1});
+                    let time = 60;
+                    let timer = "";
+                    clearInterval(timer);
+                    timer = setInterval(function () {
+                        if (time > 0) {
+                            $('.getCaptcha').html(time + "S");
+                            $(".getCaptcha").removeClass("getCode");
+                            time--;
+                        } else {
+                            $('.getCaptcha').html("获取验证码");
+                            time = 60;
+                            $(".getCaptcha").addClass("getCode");
+                            clearInterval(timer);
+                        }
+                    }, 1000);
+                }
+            },
+            error: () => {
+                layer.closeAll("loading");
+                layer.alert("网络错误 请联系管理员");
+            }
+        });
+    });
+    load(1, 7, phone);//数据渲染
+})

+ 8 - 0
src/main/resources/templates/indexHome.html

@@ -142,6 +142,14 @@
 
                             </dl>
                         </li>
+                        <li class="layui-nav-item" name="人员设置" menu="A-4" titleVal="img3" onclick="clickItem(this)">
+                            <a lay-id="#" lay-url="#">
+                                <i class="ri-shield-keyhole-line"></i>&emsp;<cite name="人员设置"><img src="/images/indeHome/img3.png"/><span>人员设置</span></cite>
+                            </a>
+                            <dl class="layui-nav-child">
+
+                            </dl>
+                        </li>
                         <li class="layui-nav-item" name="途丫旅游" menu="A-5" titleVal="tuya" onclick="clickItem(this)">
                             <a lay-id="#" lay-url="#">
                                 <i class="ri-shield-keyhole-line"></i>&emsp;<cite name="途丫旅游"><img src="/images/indeHome/tuya.png"/><span>途丫旅游</span></cite>

+ 57 - 0
src/main/resources/templates/permissions/index.html

@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>人员设置</title>
+    <link rel="stylesheet" href="/layui/css/layui.css">
+    <script src="/layui/layui.js"></script>
+    <script src="/js/jquery.js"></script>
+    <script src="/js/common.js"></script>
+    <link rel="stylesheet" href="/css/demandForSingle/index.css">
+    <link rel="stylesheet" href="/css/personal/index.css">
+    <link rel="stylesheet" href="/css/permissions/index.css">
+    <script src="/js/permissions/even.js" type="text/javascript"></script>
+    <script src="/js/permissions/index.js" type="text/javascript"></script>
+    <script src="/js/permissions/function.js" type="text/javascript"></script>
+    <script src="/js/translationVal.js"></script>
+</head>
+<body>
+<!-- 头部搜索 -->
+<div class="form_div">
+    <!-- 搜索条件 -->
+    <div class="title_input layui-form">
+        <div class="layui-form-item">
+            <label class="layui-form-label">手机号</label>
+            <div class="layui-input-block" style="float: left;margin-left: 0;">
+                <input style="height: 45px;border-radius: 5px;border-color: #ccc;" type="text" name="phone" required  lay-verify="required" placeholder="请输入手机号" autocomplete="off" class="layui-input">
+            </div>
+        </div>
+        <!-- 按钮 -->
+        <div class="query_button button_div" data-locale="chaxun"><img src="/images/demandForSingle/query.png"/>查询</div>
+        <div class="reset_button button_div" data-locale="chongzhi"><img src="/images/demandForSingle/reset.png"/>重置</div>
+        <div class="layui-btn-normal add_button button_div">新增人员</div>
+    </div>
+    <!-- 表单 -->
+    <div class="list_div">
+        <!-- 列表 -->
+        <div class="form_table">
+            <!-- 表头 -->
+            <div class="head_div">
+                <div class="head_name" style="width: 5%;">序号</div>
+                <div class="head_name" style="width: 37.5%;">名称</div>
+                <div class="head_name" style="width: 37.5%;">手机号</div>
+                <div class="head_name" data-locale="caozuo" style="width: 20%;">操作</div>
+            </div>
+            <!-- 内容 -->
+            <div class="content_div">
+
+            </div>
+        </div>
+        <!-- 分页 -->
+        <div class="page_div">
+            <div id="demo2"></div>
+        </div>
+    </div>
+</div>
+</body>
+</html>