admin
2024-07-03 158b3be9024917bc5798486777dead4dd167abc7
bug修改
13个文件已修改
2个文件已添加
393 ■■■■ 已修改文件
src/main/java/com/taoke/autopay/controller/admin/AdminSettingsController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/controller/client/OrderController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/entity/SystemConfigKeyEnum.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/SystemConfigService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/impl/KeyOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/impl/SystemConfigServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/KeyOrderMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/index.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/js/main.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/order-list.html 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/settings_edit.html 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/user-edit.html 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/user-list.html 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/taoke/autopay/AutopayApplicationTests.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/controller/admin/AdminSettingsController.java
New file
@@ -0,0 +1,59 @@
package com.taoke.autopay.controller.admin;
import com.taoke.autopay.entity.SystemConfigKeyEnum;
import com.taoke.autopay.service.SystemConfigService;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.yeshi.utils.JsonUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/admin/api/settings")
public class AdminSettingsController {
    @Resource
    private SystemConfigService systemConfigService;
    @ResponseBody
    @RequestMapping("getDefaultOrderCount")
    public String getDefaultOrderCount() {
        // 获取默认的
        SystemConfigKeyEnum[] keys = new SystemConfigKeyEnum[]{
                SystemConfigKeyEnum.DY_ORDER_MAX_PAY_COUNT_DEFAULT,
                SystemConfigKeyEnum.KS_ORDER_MAX_PAY_COUNT_DEFAULT,
                SystemConfigKeyEnum.ORDER_MAX_SUBMIT_COUNT_DEFAULT
        };
        JSONObject data = new JSONObject();
        for (SystemConfigKeyEnum key : keys) {
            String val = systemConfigService.getValue(key);
            data.put(key.getKey(), val);
        }
        return JsonUtil.loadTrueResult(data);
    }
    @ResponseBody
    @RequestMapping("setDefaultOrderCount")
    public String setDefaultOrderCount(HttpServletRequest request) {
        SystemConfigKeyEnum[] keys = new SystemConfigKeyEnum[]{
                SystemConfigKeyEnum.DY_ORDER_MAX_PAY_COUNT_DEFAULT,
                SystemConfigKeyEnum.KS_ORDER_MAX_PAY_COUNT_DEFAULT,
                SystemConfigKeyEnum.ORDER_MAX_SUBMIT_COUNT_DEFAULT
        };
        for (SystemConfigKeyEnum key : keys) {
            String val = request.getParameter(key.getKey());
            if (val != null) {
                systemConfigService.setValue(key, val);
            }
        }
        systemConfigService.clearCache();
        return JsonUtil.loadTrueResult("");
    }
}
src/main/java/com/taoke/autopay/controller/client/OrderController.java
@@ -283,13 +283,6 @@
                orderUpdate.setStateDesc("支付失败");
                keyOrderService.update(orderUpdate);
            } else {
                KeyOrder orderUpdate = new KeyOrder();
                orderUpdate.setId(id);
                orderUpdate.setState(KeyOrder.STATE_PAY);
                if (order.getPayTime() == null) {
                    orderUpdate.setPayTime(new Date());
                }
                orderUpdate.setStateDesc("支付成功");
                try {
                    keyOrderService.paySuccess(id, "支付成功", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd"));
                } catch (WxOrderCountException e) {
src/main/java/com/taoke/autopay/entity/SystemConfigKeyEnum.java
@@ -15,6 +15,8 @@
    DY_ORDER_MAX_PAY_COUNT_DEFAULT("dy_order_pay_count_default","抖音订单最大默认付款次数"),
    KS_ORDER_MAX_PAY_COUNT_DEFAULT("ks_order_pay_count_default","快手订单最大默认付款次数"),
    ORDER_MAX_SUBMIT_COUNT_DEFAULT("order_submit_count_default","订单最大默认提交次数"),
    ;
src/main/java/com/taoke/autopay/service/SystemConfigService.java
@@ -20,9 +20,13 @@
    public SystemConfig getCache(SystemConfigKeyEnum key);
    public String getValue(SystemConfigKeyEnum key);
    public String getValueCache(SystemConfigKeyEnum key);
    public void clearCache();
    public void setValue(SystemConfigKeyEnum key, String val);
}
src/main/java/com/taoke/autopay/service/impl/KeyOrderServiceImpl.java
@@ -102,6 +102,9 @@
        orderUpdate.setId(id);
        orderUpdate.setState(KeyOrder.STATE_PAY);
        orderUpdate.setStateDesc(stateDesc);
        if(old.getPayTime()==null){
            orderUpdate.setPayTime(new Date());
        }
        update(orderUpdate);
    }
src/main/java/com/taoke/autopay/service/impl/SystemConfigServiceImpl.java
@@ -10,6 +10,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@@ -65,6 +66,15 @@
        return get(key);
    }
    @Override
    public String getValue(SystemConfigKeyEnum key) {
        SystemConfig config = get(key);
        if (config != null) {
            return config.getValue();
        }
        return null;
    }
    @Cacheable(value = "configCache", key = "'getValueCache-'+#key")
    @Override
    public String getValueCache(SystemConfigKeyEnum key) {
@@ -81,5 +91,17 @@
    }
    @Override
    public void setValue(SystemConfigKeyEnum key, String val) {
        SystemConfig config = get(key);
        if (config != null) {
            SystemConfig update = new SystemConfig();
            update.setId(config.getId());
            update.setValue(val);
            update.setUpdateTime(new Date());
            systemConfigMapper.updateByPrimaryKeySelective(update);
        }
    }
}
src/main/resources/application.yml
@@ -1,3 +1,3 @@
spring:
  profiles:
    active: pro
    active: dev
src/main/resources/mapper/KeyOrderMapper.xml
@@ -115,12 +115,12 @@
      <if test="excutePayTime !=null">excute_pay_time =#{excutePayTime,jdbcType=TIMESTAMP},</if>
      <if test="excutePayTime !=null">pay_time =#{payTime,jdbcType=TIMESTAMP},</if>
    </set> where id = #{id,jdbcType=VARCHAR}
  </update>
  </update>
  <select id="listDistributeUids" resultMap="DistributeResultMap" parameterType="java.util.Date">SELECT u.`id` as uid, IF( a.count IS NULL,0,a.count) AS `count` FROM `table_user` u LEFT JOIN (SELECT o.`distribute_client_uid` AS uid,COUNT(*) AS `count` FROM `table_order` o WHERE o.`state` = 0 GROUP BY o.`distribute_client_uid`) a ON a.uid = u.`id` WHERE rule=0 
    <if test="minActiveTime!=null">and active_time &gt;=#{minActiveTime}</if> 
  </select>
  </select>
  <select id="listNotDistributed" resultMap="BaseResultMap">select 
    <include refid="Base_Column_List"/> from table_order where distribute_client_uid is null and state=0 limit #{start},#{count}
  </select>
  </select>
  <delete id="deleteAll" parameterType="java.util.Date">delete from table_order where #{maxCreateTime} &gt;= create_time</delete> 
</mapper>
src/main/resources/static/admin/index.html
@@ -9,6 +9,14 @@
        <link rel="stylesheet" type="text/css" href="layui/css/layui.css"/>
        <link rel="stylesheet" type="text/css" href="css/admin.css"/>
        <script src="layui/layui.js" type="text/javascript" charset="utf-8"></script>
        <style>
            .rightNav a {
                color: #000 !important;
            }
            .rightNav a:hover{
                color: rgba(0, 0, 0, .5) !important;
            }
        </style>
    </head>
    <body>
        <div class="main-layout" id='main-layout'>
@@ -32,7 +40,7 @@
                  <li class="layui-nav-item">
                    <a href="javascript:;"><i class="iconfont">&#xe60b;</i>系统设置</a>
                    <dl class="layui-nav-child">
                      <dd><a href="javascript:;" data-url="article-list.html" data-id='4' data-text="默认参数设置"><span class="l-line"></span>默认参数设置</a></dd>
                      <dd><a href="javascript:;" data-url="settings_edit.html" data-id='4' data-text="默认参数设置"><span class="l-line"></span>默认参数设置</a></dd>
                    </dl>
                  </li>
                </ul>
@@ -46,7 +54,7 @@
                            <span class="iconfont">&#xe60e;</span>
                        </a>
                    </div>
                    <ul class="layui-nav" lay-filter="rightNav">
                    <ul class="layui-nav rightNav" lay-filter="rightNav">
                      <li class="layui-nav-item">
                        <a href="javascript:;" data-id='5' data-text="个人信息">超级管理员</a>
                      </li>
src/main/resources/static/admin/js/main.js
@@ -61,6 +61,19 @@
        }
        mainLayout.removeClass('hide-side');
    });
    // 监听跨域切换
    // window.addEventListener('message', function(event) {
    //     // 处理接收到的消息
    //     console.log('Received message from layui:', event.data);
    // });
    window.addEventListener('message', function(event) {
        // 验证消息来源
        // 处理接收到的消息
        console.log('Received message from iframe child:', event.data);
    });
    //菜单隐藏显示
    hideBtn.on('click', function() {
        if(!mainLayout.hasClass('hide-side')) {
src/main/resources/static/admin/order-list.html
@@ -40,13 +40,11 @@
            }
            layui.use(['form', 'jquery', 'layer', 'table'], function() {
                var table = layui.table;
                var form = layui.form;
                var $ = layui.jquery;
                //第一个实例
                let tableIns = table.render({
                let table_option = {
                    elem: '#table',
                    url: '/admin/api/order/list', //数据接口
                    where: {
@@ -176,17 +174,23 @@
                        ]
                    ]
                });
                };
                var key = http_util.getQueryString("key");
                if (key != null && key != undefined) {
                    form.val("search", {
                        "key": key
                    });
                    table_option.data=[];
                    setTimeout(function() {
                        $("#search").click();
                    }, 100);
                }
                //第一个实例
                let tableIns = table.render(table_option);
                //监听提交
                form.on('submit(search)', function(data) {
src/main/resources/static/admin/settings_edit.html
New file
@@ -0,0 +1,106 @@
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
            content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title>系统配置参数修改</title>
        <link rel="stylesheet" type="text/css" href="layui/css/layui.css" />
        <style>
            body {
                padding: 10px;
            }
            input {
                width: 200px !important;
            }
        </style>
    </head>
    <body>
        <form class="layui-form" lay-filter="edit">
            <div class="layui-form-item">
                <label class="layui-form-label">抖音频次限制默认值</label>
                <div class="layui-input-block">
                    <input type="text" name="dy_order_pay_count_default" required lay-verify="required|num"
                        placeholder="抖音频次限制" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">快手频次限制默认值</label>
                <div class="layui-input-block">
                    <input type="text" name="ks_order_pay_count_default" required lay-verify="required|num"
                        placeholder="快手频次限制" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">总频次限制默认值</label>
                <div class="layui-input-block">
                    <input type="text" name="order_submit_count_default" required lay-verify="required|num"
                        placeholder="总频次限制" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-input-block">
                <button class="layui-btn layui-btn-normal" lay-submit lay-filter="sure" id="sure">确定</button>
            </div>
        </form>
        <script src="layui/layui.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/http_api.js"></script>
        <script>
            layui.use(['form', 'layedit', 'laydate'], function() {
                var form = layui.form,
                    layer = layui.layer;
                 // 在 iframe 内部的子页面中
                 // 示例:向父页面发送消息
                 window.parent.postMessage('Hello from iframe child!', window.location.href);
                //自定义验证规则
                form.verify({
                    num: [/^\d+$/, "必须为正整数"]
                });
                let index = layer.load(1);
                $.post("/admin/api/settings/getDefaultOrderCount", {},
                    function(response) {
                        layer.close(index);
                        if (response.code == 0) {
                            form.val("edit", response.data);
                        } else {
                            layer.msg(response.msg);
                        }
                    }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
                    layer.msg("网络请求失败");
                    layer.close(index);
                });
                //监听提交
                form.on('submit(sure)', function(data) {
                    $.post("/admin/api/settings/setDefaultOrderCount", data.field,
                        function(response) {
                            if (response.code == 0) {
                                layer.msg("修改成功");
                            } else {
                                layer.msg(response.msg);
                            }
                        }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
                        layer.msg("网络请求失败");
                    });
                    return false;
                });
            });
        </script>
    </body>
</html>
src/main/resources/static/admin/user-edit.html
@@ -21,7 +21,7 @@
             <div class="layui-form-item">
                <label class="layui-form-label">抖音频次限制</label>
                <div class="layui-input-block">
                 <input type="text" name="dyPayCount" required lay-verify="required" placeholder="抖音频次限制"
                 <input type="text" name="dyPayCount" required lay-verify="required|num" placeholder="抖音频次限制"
                     autocomplete="off" class="layui-input">
                </div>
              </div>
@@ -30,7 +30,7 @@
              <div class="layui-form-item">
                 <label class="layui-form-label">快手频次限制</label>
                 <div class="layui-input-block">
                  <input type="text" name="ksPayCount" required lay-verify="required" placeholder="抖音频次限制"
                  <input type="text" name="ksPayCount" required lay-verify="required|num" placeholder="抖音频次限制"
                      autocomplete="off" class="layui-input">
                 </div>
               </div>
@@ -38,7 +38,7 @@
               <div class="layui-form-item">
                  <label class="layui-form-label">总频次限制</label>
                  <div class="layui-input-block">
                   <input type="text" name="totalSubmitCount" required lay-verify="required" placeholder="总频次限制"
                   <input type="text" name="totalSubmitCount" required lay-verify="required|num" placeholder="总频次限制"
                       autocomplete="off" class="layui-input">
                  </div>
                </div>
@@ -66,10 +66,9 @@
                //自定义验证规则
                form.verify({
                    dyPayCount: [/\d+/, "必须为正整数"],
                    ksPayCount: [/\d+/, "必须为正整数"],
                    totalSubmitCount: [/\d+/, "必须为正整数"]
                    num: [/^\d+$/, "必须为正整数"]
                });
                
                
src/main/resources/static/admin/user-list.html
@@ -35,59 +35,57 @@
        <script src="js/http_api.js"></script>
        <!-- <script src="js/common.js" type="text/javascript" charset="utf-8"></script> -->
        <script>
            function editUserClick(uid){
            function editUserClick(uid) {
                var layerIndex = layer.open({
                        title:"修改订单频次",
                        type: 2,
                        area: ['400px', '350px'],
                        shade: 0.3,
                        shadeClose: false,//默认开启遮罩关闭
                        resize: false,//默认重设大小是否
                        //如果不让iframe出现滚动条,
                        //可以content: ['http://sentsin.com', 'no']
                        content: 'user-edit.html?id='+uid,
                        btn: ['确定','取消'],
                        yes: function (index) {
                            //submit方法为弹框内容中的方法
                            window["layui-layer-iframe" + index].submit(function (res) {
                              try {
                                  var index = layer.load(1);
                                  $.post("/admin/api/wxuser/updateOrderSettings", res, function(response) {
                                      layer.close(index);
                                      if (response.code == 0) {
                    title: "修改订单频次",
                    type: 2,
                    area: ['400px', '350px'],
                    shade: 0.3,
                    shadeClose: false, //默认开启遮罩关闭
                    resize: false, //默认重设大小是否
                    //如果不让iframe出现滚动条,
                    //可以content: ['http://sentsin.com', 'no']
                    content: 'user-edit.html?id=' + uid,
                    btn: ['确定', '取消'],
                    yes: function(index) {
                        //submit方法为弹框内容中的方法
                        window["layui-layer-iframe" + index].submit(function(res) {
                            try {
                                var index = layer.load(1);
                                $.post("/admin/api/wxuser/updateOrderSettings", res, function(response) {
                                    layer.close(index);
                                    if (response.code == 0) {
                                        layer.close(layerIndex);
                                          layer.msg("更改成功");
                                      } else {
                                          layer.msg(response.msg);
                                      }
                                  }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
                                      layer.close(index);
                                      layer.msg("网络请求失败");
                                  });
                              } catch (e) {
                                  console.log(e);
                              }
                            });
                        },
                        cancel: function () {
                        }
                    });
                                        layer.msg("更改成功");
                                    } else {
                                        layer.msg(response.msg);
                                    }
                                }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
                                    layer.close(index);
                                    layer.msg("网络请求失败");
                                });
                            } catch (e) {
                                console.log(e);
                            }
                        });
                    },
                    cancel: function() {
                    }
                });
            }
            layui.use(['form', 'jquery', 'layer', 'table'], function() {
                var table = layui.table;
                var form = layui.form;
                var $ = layui.jquery;
                //第一个实例
                let tableIns = table.render({
                let table_option = {
                    elem: '#table',
                    height: 600,
                    url: '/admin/api/wxuser/list', //数据接口
@@ -154,16 +152,22 @@
                        ]
                    ]
                });
                };
                var uid = http_util.getQueryString("uid");
                if(uid!=null&&uid!=undefined){
                    form.val("search",{"uid":uid});
                    setTimeout(function(){
                if (uid != null && uid != undefined) {
                    form.val("search", {
                        "uid": uid
                    });
                    table_option.data = [];
                    setTimeout(function() {
                        $("#search").click();
                    },100);
                    }, 100);
                }
                //第一个实例
                let tableIns = table.render(table_option);
                //监听提交
                form.on('submit(search)', function(data) {
                    tableIns.reload({
src/test/java/com/taoke/autopay/AutopayApplicationTests.java
@@ -31,33 +31,35 @@
    private KeyOrderMapper keyOrderMapper;
    @Test
    void addClientInfo(){
        for(int i=4;i<50;i++) {
            ClientInfo info=new ClientInfo();
    void addClientInfo() {
        for (int i = 4; i < 50; i++) {
            ClientInfo info = new ClientInfo();
            info.setRule(0);
            info.setAccount("c"+i);
            info.setAccount("c" + i);
            info.setPwd("e10adc3949ba59abbe56e057f20f883e");
            info.setCreateTime(new Date());
            info.setName("客户端"+i);
            info.setName("客户端" + i);
            mapper.insertSelective(info);
        }
    }
    @Test
    void test4(){
    void test4() {
        clientInfoService.logout(3L);
    }
    @Test
    void test3() throws Exception {
        keyOrderService.deleteAll(new Date(System.currentTimeMillis() - 1000*60*60*24L *5));
        for (int i = 0; i < 100; i++) {
            Long uid = keyOrderService.getCanDistributeUid();
            System.out.println(uid);
        }
    }
    @Test
    void contextLoads() {
        ClientInfo info=new ClientInfo();
        ClientInfo info = new ClientInfo();
        info.setName("超级管理员");
        info.setAccount("admin");
        info.setPwd(StringUtil.Md5("123456"));
@@ -65,11 +67,11 @@
        info.setRule(ClientInfo.RULE_ADMIN);
        mapper.insertSelective(info);
        ClientInfoMapper.DaoQuery query=new ClientInfoMapper.DaoQuery();
        query.count=10;
        ClientInfoMapper.DaoQuery query = new ClientInfoMapper.DaoQuery();
        query.count = 10;
        query.start = 0;
       List<ClientInfo> list = mapper.list(query);
       System.out.println(list.size());
        List<ClientInfo> list = mapper.list(query);
        System.out.println(list.size());
    }