Administrator
2025-02-20 d58f02c29c0ddb3c3383c3e84637b524308190f4
口令提交过渡页
13个文件已修改
324 ■■■■ 已修改文件
src/main/java/com/taoke/autopay/controller/WebApiController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/entity/WxUserInfo.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/factory/OrderFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/factory/WxUserFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/WxUserService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/impl/KeyOrderServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/service/impl/WxUserServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/vo/WxUserVO.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/vo/admin/AdminOrderVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WxUserInfoMapper.xml 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/order-list.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/admin/user-list.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/taoke/autopay/MapperTest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/controller/WebApiController.java
@@ -301,7 +301,7 @@
                }
                break;
            case KeyOrder.STATE_NOT_PAY:
                desc = "正在支付...";
                desc = "正在支付中,支付完成后才可继续提交口令。";
                break;
            case KeyOrder.STATE_PAY:
                desc = "支付成功";
src/main/java/com/taoke/autopay/entity/WxUserInfo.java
@@ -1,5 +1,6 @@
package com.taoke.autopay.entity;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.yeshi.utils.generater.mybatis.Column;
import org.yeshi.utils.generater.mybatis.Table;
@@ -13,6 +14,7 @@
 * @description: 微信用户信息
 * @date 2024/6/28 16:45
 */
@Data
@Table("table_wx_user")
public class WxUserInfo implements Serializable {
    @Id
@@ -28,62 +30,11 @@
    private Date loginTime;
    @Column(name="create_time")
    private Date createTime;
    @Column(name="latest_ip")
    private String LatestIP;
    @Column(name="latest_ip_info")
    private String latestIPInfo;
    @Column(name="update_time")
    private Date updateTime;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getOpenId() {
        return openId;
    }
    public void setOpenId(String openId) {
        this.openId = openId;
    }
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    public String getPortrait() {
        return portrait;
    }
    public void setPortrait(String portrait) {
        this.portrait = portrait;
    }
    public Date getLoginTime() {
        return loginTime;
    }
    public void setLoginTime(Date loginTime) {
        this.loginTime = loginTime;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
src/main/java/com/taoke/autopay/factory/OrderFactory.java
@@ -1,11 +1,13 @@
package com.taoke.autopay.factory;
import com.google.gson.Gson;
import com.taoke.autopay.entity.ClientInfo;
import com.taoke.autopay.entity.KeyOrder;
import com.taoke.autopay.entity.OrderChannelEnum;
import com.taoke.autopay.entity.WxUserOrderCount;
import com.taoke.autopay.entity.agent.ChannelAgent;
import com.taoke.autopay.utils.Constant;
import com.taoke.autopay.utils.IPUtil;
import com.taoke.autopay.utils.StringUtil;
import com.taoke.autopay.utils.TimeUtil;
import com.taoke.autopay.utils.order.OrderChannelUtil;
@@ -112,6 +114,10 @@
        OrderChannelEnum orderChannel=OrderChannelUtil.getChannelByKey(order.getOrderChannel());
        vo.setOrderChannel(orderChannel==null?"未知":orderChannel.getName());
        vo.setPayMerchant(order.getPayMerchant());
        vo.setIp(order.getIp());
        if(!StringUtil.isNullOrEmpty(order.getIpInfo())){
            vo.setIpInfo(new Gson().fromJson(order.getIpInfo(), IPUtil.IPInfo.class));
        }
        if(agent!=null){
            vo.setAgent(agent.getName());
        }else{
src/main/java/com/taoke/autopay/factory/WxUserFactory.java
@@ -1,7 +1,10 @@
package com.taoke.autopay.factory;
import com.google.gson.Gson;
import com.taoke.autopay.entity.WxUserInfo;
import com.taoke.autopay.entity.WxUserSettings;
import com.taoke.autopay.utils.IPUtil;
import com.taoke.autopay.utils.StringUtil;
import com.taoke.autopay.vo.WxUserOrderSettingVO;
import com.taoke.autopay.vo.WxUserVO;
@@ -20,6 +23,10 @@
        vo.setLoginTime(user.getLoginTime());
        vo.setNickName(user.getNickName());
        vo.setPortrait(user.getPortrait());
        vo.setIp(user.getLatestIP());
        if(!StringUtil.isNullOrEmpty(user.getLatestIPInfo())){
            vo.setIpInfo(new Gson().fromJson(user.getLatestIPInfo(), IPUtil.IPInfo.class));
        }
        WxUserOrderSettingVO settingVO = new WxUserOrderSettingVO(settings.getDyOrderCountPerDay(), settings.getKsOrderCountPerDay(), settings.getTotalOrderCountPerDay());
        vo.setOrderSetting(settingVO);
        return vo;
src/main/java/com/taoke/autopay/service/WxUserService.java
@@ -2,6 +2,7 @@
import com.taoke.autopay.dao.WxUserInfoMapper;
import com.taoke.autopay.entity.WxUserInfo;
import com.taoke.autopay.utils.IPUtil;
import com.taoke.autopay.utils.WxApiUtil;
import java.util.List;
@@ -22,5 +23,7 @@
    public long count(WxUserInfoMapper.DaoQuery query);
    public void setLatestInfoInfo(Long uid, String ip, IPUtil.IPInfo ipInfo);
}
src/main/java/com/taoke/autopay/service/impl/KeyOrderServiceImpl.java
@@ -67,6 +67,9 @@
    @Resource
    private PayMoneySettingService payMoneySettingService;
    @Resource
    private WxUserService wxUserService;
    @Override
    public KeyOrder selectById(String id) {
@@ -87,6 +90,7 @@
            WxUserSettings settings = wxUserSettingService.getUserSettings(uid);
            OrderCountTypeEnum countType = OrderCountTypeEnum.SUBMIT_TOKEN_COUNT;
            wxUserOrderCountService.addOrderCount(uid, countType,null, day, 1, settings.getTotalOrderCountPerDay());
            wxUserService.setLatestInfoInfo(uid, keyInfo.getIp(),keyInfo.getIpInfo());
        }
        String id = OrderFactory.createId(keyInfo.getKey());
        KeyOrder order = keyOrderMapper.selectById(id);
src/main/java/com/taoke/autopay/service/impl/WxUserServiceImpl.java
@@ -1,5 +1,6 @@
package com.taoke.autopay.service.impl;
import com.google.gson.Gson;
import com.taoke.autopay.dao.WxUserInfoMapper;
import com.taoke.autopay.entity.SystemConfigKeyEnum;
import com.taoke.autopay.entity.WxUserInfo;
@@ -7,6 +8,7 @@
import com.taoke.autopay.service.SystemConfigService;
import com.taoke.autopay.service.WxUserService;
import com.taoke.autopay.service.WxUserSettingService;
import com.taoke.autopay.utils.IPUtil;
import com.taoke.autopay.utils.StringUtil;
import com.taoke.autopay.utils.WxApiUtil;
import org.springframework.stereotype.Service;
@@ -82,4 +84,14 @@
    public long count(WxUserInfoMapper.DaoQuery query) {
        return wxUserInfoMapper.count(query);
    }
    @Override
    public void setLatestInfoInfo(Long uid, String ip, IPUtil.IPInfo ipInfo) {
        WxUserInfo wxUserInfo=new WxUserInfo();
        wxUserInfo.setId(uid);
        wxUserInfo.setLatestIP(ip);
        wxUserInfo.setLatestIPInfo(ipInfo!=null?new Gson().toJson(ipInfo):null);
        wxUserInfo.setUpdateTime(new Date());
        wxUserInfoMapper.updateByPrimaryKeySelective(wxUserInfo);
    }
}
src/main/java/com/taoke/autopay/vo/WxUserVO.java
@@ -1,5 +1,8 @@
package com.taoke.autopay.vo;
import com.taoke.autopay.utils.IPUtil;
import lombok.Data;
import java.util.Date;
/**
@@ -8,6 +11,7 @@
 * @description: TODO
 * @date 2024/6/29 13:21
 */
@Data
public class WxUserVO {
    private Long id;
    private Date createTime;
@@ -15,52 +19,6 @@
    private WxUserOrderSettingVO orderSetting;
    private String nickName;
    private String portrait;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getLoginTime() {
        return loginTime;
    }
    public void setLoginTime(Date loginTime) {
        this.loginTime = loginTime;
    }
    public WxUserOrderSettingVO getOrderSetting() {
        return orderSetting;
    }
    public void setOrderSetting(WxUserOrderSettingVO orderSetting) {
        this.orderSetting = orderSetting;
    }
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    public String getPortrait() {
        return portrait;
    }
    public void setPortrait(String portrait) {
        this.portrait = portrait;
    }
    private String ip;
    private IPUtil.IPInfo ipInfo;
}
src/main/java/com/taoke/autopay/vo/admin/AdminOrderVO.java
@@ -1,6 +1,7 @@
package com.taoke.autopay.vo.admin;
import com.taoke.autopay.entity.ClientInfo;
import com.taoke.autopay.utils.IPUtil;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;
@@ -38,4 +39,6 @@
    private String agent;
    private String orderChannel;
    private String payMerchant;
    private String ip;
    private IPUtil.IPInfo ipInfo;
}
src/main/resources/mapper/WxUserInfoMapper.xml
@@ -1,77 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.taoke.autopay.dao.WxUserInfoMapper">
  <resultMap id="BaseResultMap" type="com.taoke.autopay.entity.WxUserInfo">
    <id column="id" property="id" jdbcType="BIGINT"/>
    <result column="openid" property="openId" jdbcType="VARCHAR"/>
    <result column="nick_name" property="nickName" jdbcType="VARCHAR"/>
    <result column="portrait" property="portrait" jdbcType="VARCHAR"/>
    <result column="login_time" property="loginTime" jdbcType="TIMESTAMP"/>
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
    <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
  </resultMap>
  <sql id="Base_Column_List">id,openid,nick_name,portrait,login_time,create_time,update_time</sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select
<mapper namespace="com.taoke.autopay.dao.WxUserInfoMapper">
  <resultMap id="BaseResultMap" type="com.taoke.autopay.entity.WxUserInfo">
    <id column="id" property="id" jdbcType="BIGINT"/>
    <result column="openid" property="openId" jdbcType="VARCHAR"/>
    <result column="nick_name" property="nickName" jdbcType="VARCHAR"/>
    <result column="portrait" property="portrait" jdbcType="VARCHAR"/>
    <result column="login_time" property="loginTime" jdbcType="TIMESTAMP"/>
    <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
    <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
    <result column="latest_ip" property="LatestIP" jdbcType="VARCHAR"/>
    <result column="latest_ip_info" property="latestIPInfo" jdbcType="VARCHAR"/>
  </resultMap>
  <sql id="Base_Column_List">id,openid,nick_name,portrait,login_time,create_time,update_time,latest_ip,latest_ip_info</sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select
    <include refid="Base_Column_List"/> from table_wx_user where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long">select
  </select>
  <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long">select
    <include refid="Base_Column_List"/> from table_wx_user where id = #{id,jdbcType=BIGINT} for update
  </select>
  <sql id="listWhereSQL">
    <if test="query.id!=null">AND id = #{query.id}</if>
    <if test="query.openId!=null">AND openid = #{query.openId}</if>
    <if test="query.nickName!=null">AND nick_name = #{query.nickName}</if>
    <if test="query.searchKey!=null">AND (nick_name like '%${query.searchKey}%' or openid = #{query.searchKey})</if>
    <if test="query.portrait!=null">AND portrait = #{query.portrait}</if>
    <if test="query.minLoginTime!=null">AND login_time >= #{query.minLoginTime}</if>
    <if test="query.maxLoginTime!=null">AND #{query.maxLoginTime} > login_time</if>
    <if test="query.minCreateTime!=null">AND create_time >= #{query.minCreateTime}</if>
    <if test="query.maxCreateTime!=null">AND #{query.maxCreateTime} > create_time</if>
    <if test="query.minUpdateTime!=null">AND update_time >= #{query.minUpdateTime}</if>
    <if test="query.maxUpdateTime!=null">AND #{query.maxUpdateTime} > update_time</if>
  </sql>
  <select id="list" resultMap="BaseResultMap">select
    <include refid="Base_Column_List"/> from table_wx_user where 1=1
    <include refid="listWhereSQL"/>
    <if test="query.sortList!=null">
      <foreach collection="query.sortList" item="item" open=" order by " separator=",">#{item}</foreach>
  </select>
  <sql id="listWhereSQL">
    <if test="query.id!=null">AND id = #{query.id}</if>
    <if test="query.openId!=null">AND openid = #{query.openId}</if>
    <if test="query.nickName!=null">AND nick_name = #{query.nickName}</if>
    <if test="query.searchKey!=null">AND (nick_name like '%${query.searchKey}%' or openid = #{query.searchKey})</if>
    <if test="query.portrait!=null">AND portrait = #{query.portrait}</if>
    <if test="query.minLoginTime!=null">AND login_time &gt;= #{query.minLoginTime}</if>
    <if test="query.maxLoginTime!=null">AND #{query.maxLoginTime} &gt; login_time</if>
    <if test="query.minCreateTime!=null">AND create_time &gt;= #{query.minCreateTime}</if>
    <if test="query.maxCreateTime!=null">AND #{query.maxCreateTime} &gt; create_time</if>
    <if test="query.minUpdateTime!=null">AND update_time &gt;= #{query.minUpdateTime}</if>
    <if test="query.maxUpdateTime!=null">AND #{query.maxUpdateTime} &gt; update_time</if>
  </sql>
  <select id="list" resultMap="BaseResultMap">select
    <include refid="Base_Column_List"/> from table_wx_user where 1=1
    <include refid="listWhereSQL"/>
    <if test="query.sortList!=null">
      <foreach collection="query.sortList" item="item" open=" order by " separator=",">#{item}</foreach>
    </if>limit #{query.start},#{query.count}
  </select>
  <select id="count" resultType="java.lang.Long">select count(*) from table_wx_user where 1=1
    <include refid="listWhereSQL"/>
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from table_wx_user where id = #{id,jdbcType=BIGINT}</delete>
  <insert id="insert" parameterType="com.taoke.autopay.entity.WxUserInfo" useGeneratedKeys="true" keyProperty="id">insert into table_wx_user (id,openid,nick_name,portrait,login_time,create_time,update_time) values (#{id,jdbcType=BIGINT},#{openId,jdbcType=VARCHAR},#{nickName,jdbcType=VARCHAR},#{portrait,jdbcType=VARCHAR},#{loginTime,jdbcType=TIMESTAMP},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert>
  <insert id="insertSelective" parameterType="com.taoke.autopay.entity.WxUserInfo" useGeneratedKeys="true" keyProperty="id">insert into table_wx_user
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">id,</if>
      <if test="openId != null">openid,</if>
      <if test="nickName != null">nick_name,</if>
      <if test="portrait != null">portrait,</if>
      <if test="loginTime != null">login_time,</if>
      <if test="createTime != null">create_time,</if>
      <if test="updateTime != null">update_time,</if>
    </trim>values
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">#{id,jdbcType=BIGINT},</if>
      <if test="openId != null">#{openId,jdbcType=VARCHAR},</if>
      <if test="nickName != null">#{nickName,jdbcType=VARCHAR},</if>
      <if test="portrait != null">#{portrait,jdbcType=VARCHAR},</if>
      <if test="loginTime != null">#{loginTime,jdbcType=TIMESTAMP},</if>
      <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
      <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
  </select>
  <select id="count" resultType="java.lang.Long">select count(*) from table_wx_user where 1=1
    <include refid="listWhereSQL"/>
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from table_wx_user where id = #{id,jdbcType=BIGINT}</delete>
  <insert id="insert" parameterType="com.taoke.autopay.entity.WxUserInfo" useGeneratedKeys="true" keyProperty="id">insert into table_wx_user (id,openid,nick_name,portrait,login_time,create_time,update_time,id,latest_ip,latest_ip_info) values (#{id,jdbcType=BIGINT},#{openId,jdbcType=VARCHAR},#{nickName,jdbcType=VARCHAR},#{portrait,jdbcType=VARCHAR},#{loginTime,jdbcType=TIMESTAMP},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP},#{id,jdbcType=BIGINT},#{LatestIP,jdbcType=VARCHAR},#{latestIPInfo,jdbcType=VARCHAR})</insert>
  <insert id="insertSelective" parameterType="com.taoke.autopay.entity.WxUserInfo" useGeneratedKeys="true" keyProperty="id">insert into table_wx_user
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">id,</if>
      <if test="openId != null">openid,</if>
      <if test="nickName != null">nick_name,</if>
      <if test="portrait != null">portrait,</if>
      <if test="loginTime != null">login_time,</if>
      <if test="createTime != null">create_time,</if>
      <if test="updateTime != null">update_time,</if>
      <if test="LatestIP != null">latest_ip,</if>
      <if test="latestIPInfo != null">latest_ip_info,</if>
    </trim>values
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">#{id,jdbcType=BIGINT},</if>
      <if test="openId != null">#{openId,jdbcType=VARCHAR},</if>
      <if test="nickName != null">#{nickName,jdbcType=VARCHAR},</if>
      <if test="portrait != null">#{portrait,jdbcType=VARCHAR},</if>
      <if test="loginTime != null">#{loginTime,jdbcType=TIMESTAMP},</if>
      <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
      <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
      <if test="LatestIP != null">#{LatestIP,jdbcType=VARCHAR},</if>
      <if test="latestIPInfo != null">#{latestIPInfo,jdbcType=VARCHAR},</if>
    </trim>
  </insert>
  <update id="updateByPrimaryKey" parameterType="com.taoke.autopay.entity.WxUserInfo">update table_wx_user set openid = #{openId,jdbcType=VARCHAR},nick_name = #{nickName,jdbcType=VARCHAR},portrait = #{portrait,jdbcType=VARCHAR},login_time = #{loginTime,jdbcType=TIMESTAMP},create_time = #{createTime,jdbcType=TIMESTAMP},update_time = #{updateTime,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT}</update>
  <update id="updateByPrimaryKeySelective" parameterType="com.taoke.autopay.entity.WxUserInfo">update table_wx_user
    <set>
      <if test="openId != null">openid=#{openId,jdbcType=VARCHAR},</if>
      <if test="nickName != null">nick_name=#{nickName,jdbcType=VARCHAR},</if>
      <if test="portrait != null">portrait=#{portrait,jdbcType=VARCHAR},</if>
      <if test="loginTime != null">login_time=#{loginTime,jdbcType=TIMESTAMP},</if>
      <if test="createTime != null">create_time=#{createTime,jdbcType=TIMESTAMP},</if>
      <if test="updateTime != null">update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
  <update id="updateByPrimaryKey" parameterType="com.taoke.autopay.entity.WxUserInfo">update table_wx_user set openid = #{openId,jdbcType=VARCHAR},nick_name = #{nickName,jdbcType=VARCHAR},portrait = #{portrait,jdbcType=VARCHAR},login_time = #{loginTime,jdbcType=TIMESTAMP},create_time = #{createTime,jdbcType=TIMESTAMP},update_time = #{updateTime,jdbcType=TIMESTAMP} ,latest_ip =#{LatestIP,jdbcType=VARCHAR}, latest_ip_info =#{latestIPInfo,jdbcType=VARCHAR}, where id = #{id,jdbcType=BIGINT}</update>
  <update id="updateByPrimaryKeySelective" parameterType="com.taoke.autopay.entity.WxUserInfo">update table_wx_user
    <set>
      <if test="openId != null">openid=#{openId,jdbcType=VARCHAR},</if>
      <if test="nickName != null">nick_name=#{nickName,jdbcType=VARCHAR},</if>
      <if test="portrait != null">portrait=#{portrait,jdbcType=VARCHAR},</if>
      <if test="loginTime != null">login_time=#{loginTime,jdbcType=TIMESTAMP},</if>
      <if test="createTime != null">create_time=#{createTime,jdbcType=TIMESTAMP},</if>
      <if test="updateTime != null">update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
      <if test="LatestIP !=null">latest_ip =#{LatestIP,jdbcType=VARCHAR},</if>
      <if test="latestIPInfo !=null">latest_ip_info =#{latestIPInfo,jdbcType=VARCHAR},</if>
    </set> where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
src/main/resources/static/admin/order-list.html
@@ -256,6 +256,18 @@
                            },
                            {
                                field: 'ipInfo',
                                title: '地域',
                                width: 170,
                                templet: function(d){
                                    if(d["ipInfo.city"]){
                                        return d["ipInfo.province"] + "/"+ d["ipInfo.city"];
                                    }
                                    return "";
                                },
                            },
                            {
                                field: '',
                                title: '操作',
                                sort: false,
src/main/resources/static/admin/user-list.html
@@ -162,7 +162,18 @@
                                field: 'orderSetting.totalSubmitCount',
                                title: '总频次限制'
                            },{
                            field: 'orderSetting.totalSubmitCount',
                            title: '用户地域',
                            templet: function(d){
                                if(d["ipInfo.city"]){
                                    return d["ipInfo.province"] + "/"+ d["ipInfo.city"];
                                }
                                return "";
                            },
                        },
                            {
                                field: '',
                                title: '操作',
src/test/java/com/taoke/autopay/MapperTest.java
@@ -1,9 +1,6 @@
package com.taoke.autopay;
import com.taoke.autopay.entity.KeyOrder;
import com.taoke.autopay.entity.PayMoneySetting;
import com.taoke.autopay.entity.UserPayCount;
import com.taoke.autopay.entity.WxUserOrderCount;
import com.taoke.autopay.entity.*;
import com.taoke.autopay.entity.agent.*;
import org.junit.jupiter.api.Test;
import org.yeshi.utils.generater.GeneraterManagerV2;
@@ -30,8 +27,8 @@
//        MyBatisMapperUtil.createMapper(AdminUser.class);
        ColumnParseUtil.parseColumn(WxUserOrderCount.class,
                "D:\\项目\\淘客代付系统\\taoke_autopay_server\\src\\main\\resources\\mapper\\WxUserOrderCountMapper.xml");
        ColumnParseUtil.parseColumn(WxUserInfo.class,
                "D:\\workspace\\taoke_pay\\src\\main\\resources\\mapper\\WxUserInfoMapper.xml");
//        System.out.println(   MyBatisMapperUtil.createSQL(ChannelAgentOrderStatisticRecord.class));
//        System.out.println(   MyBatisMapperUtil.createSQL(ChannelAgentSettings.class));
//        System.out.println(MyBatisMapperUtil.createSQL(ChannelAgentSettleRecord.class));