From 3ce298b53df68bb59038c2927f2059e0bf1ff4d3 Mon Sep 17 00:00:00 2001 From: 18650502300 <18650502300@163.com> Date: Mon, 27 May 2024 14:36:47 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=AF=8F=E5=A4=A9=E5=87=8C=E6=99=A80?= =?UTF-8?q?=E7=82=B95=E5=88=86=E6=89=A7=E8=A1=8C=EF=BC=8C=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=88=86=E8=B4=A6=E7=BB=93=E6=9E=9C=202.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E8=B4=A6=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/constant/Constants.java | 2 +- .../common/core/domain/entity/SysUser.java | 24 ++++ .../java/com/ruoyi/quartz/task/RyTask.java | 2 +- .../ruoyi/system/domain/EtDividendDetail.java | 53 +++++++++ .../system/mapper/EtDividendDetailMapper.java | 70 +++++++++++ .../service/IEtDividendDetailService.java | 69 +++++++++++ .../ruoyi/system/service/IEtOrderService.java | 1 + .../impl/EtDividendDetailServiceImpl.java | 110 ++++++++++++++++++ .../service/impl/SysDeptServiceImpl.java | 2 +- .../service/impl/SysUserServiceImpl.java | 47 +++++++- .../java/com/ruoyi/system/task/EtTask.java | 104 +++++++++++++++++ .../mapper/system/EtDividendDetailMapper.xml | 97 +++++++++++++++ .../resources/mapper/system/SysUserMapper.xml | 10 +- 13 files changed, 584 insertions(+), 7 deletions(-) create mode 100644 electripper-system/src/main/java/com/ruoyi/system/domain/EtDividendDetail.java create mode 100644 electripper-system/src/main/java/com/ruoyi/system/mapper/EtDividendDetailMapper.java create mode 100644 electripper-system/src/main/java/com/ruoyi/system/service/IEtDividendDetailService.java create mode 100644 electripper-system/src/main/java/com/ruoyi/system/service/impl/EtDividendDetailServiceImpl.java create mode 100644 electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java create mode 100644 electripper-system/src/main/resources/mapper/system/EtDividendDetailMapper.xml diff --git a/electripper-common/src/main/java/com/ruoyi/common/constant/Constants.java b/electripper-common/src/main/java/com/ruoyi/common/constant/Constants.java index f7935d9..327a986 100644 --- a/electripper-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/electripper-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -168,7 +168,7 @@ public class Constants /** * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) */ - public static final String[] JOB_WHITELIST_STR = { "com.ruoyi.quartz.task" }; + public static final String[] JOB_WHITELIST_STR = { "com.ruoyi.quartz.task", "com.ruoyi.system.task" }; /** * 定时任务违规的字符 diff --git a/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index 8ebfcbe..93060cf 100644 --- a/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/electripper-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -110,6 +110,30 @@ public class SysUser extends BaseEntity /** 角色ID */ private Long roleId; + /** 分账项目 */ + @Excel(name = "分账项目") + private String dividendItem; + + /** 分账项目ids */ + @Excel(name = "分账项目ids") + private List dividendItemIds; + + public List getDividendItemIds() { + return dividendItemIds; + } + + public void setDividendItemIds(List dividendItemIds) { + this.dividendItemIds = dividendItemIds; + } + + public String getDividendItem() { + return dividendItem; + } + + public void setDividendItem(String dividendItem) { + this.dividendItem = dividendItem; + } + public SysUser() { diff --git a/electripper-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/electripper-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index 853243b..e241ab1 100644 --- a/electripper-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/electripper-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -5,7 +5,7 @@ import com.ruoyi.common.utils.StringUtils; /** * 定时任务调度测试 - * + * * @author ruoyi */ @Component("ryTask") diff --git a/electripper-system/src/main/java/com/ruoyi/system/domain/EtDividendDetail.java b/electripper-system/src/main/java/com/ruoyi/system/domain/EtDividendDetail.java new file mode 100644 index 0000000..9177218 --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/domain/EtDividendDetail.java @@ -0,0 +1,53 @@ +package com.ruoyi.system.domain; + +import java.math.BigDecimal; + +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 分账明细对象 et_dividend_detail + * + * @author 邱贞招 + * @date 2024-05-27 + */ +@Data +public class EtDividendDetail extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 区域id */ + @Excel(name = "区域id") + private Long areaId; + + /** 合伙人id */ + @Excel(name = "合伙人id") + private Long partnerId; + + /** 订单号 */ + @Excel(name = "订单号") + private String orderNo; + + /** 订单总金额 */ + @Excel(name = "订单总金额") + private BigDecimal totalAmount; + + /** 分账金额 */ + @Excel(name = "分账金额") + private BigDecimal dividendAmount; + + /** 分红比例 */ + @Excel(name = "分红比例") + private Integer dividendProportion; + + /** 分账项目 */ + @Excel(name = "分账项目") + private String dividendItem; + +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/mapper/EtDividendDetailMapper.java b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtDividendDetailMapper.java new file mode 100644 index 0000000..95c8a3e --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/mapper/EtDividendDetailMapper.java @@ -0,0 +1,70 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.EtDividendDetail; + +/** + * 分账明细Mapper接口 + * + * @author 邱贞招 + * @date 2024-05-27 + */ +public interface EtDividendDetailMapper +{ + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + public EtDividendDetail selectEtDividendDetailById(Long id); + + /** + * 查询分账明细列表 + * + * @param etDividendDetail 分账明细 + * @return 分账明细集合 + */ + public List selectEtDividendDetailList(EtDividendDetail etDividendDetail); + + /** + * 新增分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + public int insertEtDividendDetail(EtDividendDetail etDividendDetail); + + /** + * 修改分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + public int updateEtDividendDetail(EtDividendDetail etDividendDetail); + + /** + * 删除分账明细 + * + * @param id 分账明细主键 + * @return 结果 + */ + public int deleteEtDividendDetailById(Long id); + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEtDividendDetailByIds(Long[] ids); + + + /** + * 判断是否已经计算过 + * @param date + * @return + */ + public int isDividendComputed(String date); + +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/IEtDividendDetailService.java b/electripper-system/src/main/java/com/ruoyi/system/service/IEtDividendDetailService.java new file mode 100644 index 0000000..0a01b1e --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/service/IEtDividendDetailService.java @@ -0,0 +1,69 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.EtDividendDetail; + +/** + * 分账明细Service接口 + * + * @author 邱贞招 + * @date 2024-05-27 + */ +public interface IEtDividendDetailService +{ + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + public EtDividendDetail selectEtDividendDetailById(Long id); + + /** + * 查询分账明细列表 + * + * @param etDividendDetail 分账明细 + * @return 分账明细集合 + */ + public List selectEtDividendDetailList(EtDividendDetail etDividendDetail); + + /** + * 新增分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + public int insertEtDividendDetail(EtDividendDetail etDividendDetail); + + /** + * 修改分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + public int updateEtDividendDetail(EtDividendDetail etDividendDetail); + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的分账明细主键集合 + * @return 结果 + */ + public int deleteEtDividendDetailByIds(Long[] ids); + + /** + * 删除分账明细信息 + * + * @param id 分账明细主键 + * @return 结果 + */ + public int deleteEtDividendDetailById(Long id); + + /** + * 判断该日期是否已经计算过分账结果 + * + * @param date 日期格式: yyyy-MM-dd + * @return 结果 + */ + boolean isDividendComputed(String date); +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java b/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java index b3396e9..884437a 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/IEtOrderService.java @@ -161,5 +161,6 @@ public interface IEtOrderService List rechargeList(EtOrder etOrder); + // public partnerBill(); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtDividendDetailServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtDividendDetailServiceImpl.java new file mode 100644 index 0000000..0af6b91 --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtDividendDetailServiceImpl.java @@ -0,0 +1,110 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.EtDividendDetailMapper; +import com.ruoyi.system.domain.EtDividendDetail; +import com.ruoyi.system.service.IEtDividendDetailService; + +/** + * 分账明细Service业务层处理 + * + * @author 邱贞招 + * @date 2024-05-27 + */ +@Service +public class EtDividendDetailServiceImpl implements IEtDividendDetailService +{ + @Autowired + private EtDividendDetailMapper etDividendDetailMapper; + + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + @Override + public EtDividendDetail selectEtDividendDetailById(Long id) + { + return etDividendDetailMapper.selectEtDividendDetailById(id); + } + + /** + * 查询分账明细列表 + * + * @param etDividendDetail 分账明细 + * @return 分账明细 + */ + @Override + public List selectEtDividendDetailList(EtDividendDetail etDividendDetail) + { + return etDividendDetailMapper.selectEtDividendDetailList(etDividendDetail); + } + + /** + * 新增分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + @Override + public int insertEtDividendDetail(EtDividendDetail etDividendDetail) + { + etDividendDetail.setCreateTime(DateUtils.getNowDate()); + return etDividendDetailMapper.insertEtDividendDetail(etDividendDetail); + } + + /** + * 修改分账明细 + * + * @param etDividendDetail 分账明细 + * @return 结果 + */ + @Override + public int updateEtDividendDetail(EtDividendDetail etDividendDetail) + { + return etDividendDetailMapper.updateEtDividendDetail(etDividendDetail); + } + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的分账明细主键 + * @return 结果 + */ + @Override + public int deleteEtDividendDetailByIds(Long[] ids) + { + return etDividendDetailMapper.deleteEtDividendDetailByIds(ids); + } + + /** + * 删除分账明细信息 + * + * @param id 分账明细主键 + * @return 结果 + */ + @Override + public int deleteEtDividendDetailById(Long id) + { + return etDividendDetailMapper.deleteEtDividendDetailById(id); + } + + /** + * 判断是否已经计算过 + * @param date + * @return + */ + @Override + public boolean isDividendComputed(String date) { + if(etDividendDetailMapper.isDividendComputed(date) > 0){ + return true; + } + return false; + } + + +} diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index e64563c..eb3f074 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -215,7 +215,7 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 新增保存部门信息 - * + * 分账 partner_dividend 对账 reconciliation dividend amount 金额 分成 Divide amount 总金额 * @param dept 部门信息 * @return 结果 */ diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 5dfbc3b..8fdd076 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -19,6 +19,7 @@ import com.ruoyi.system.service.IAsDeviceService; import com.ruoyi.system.service.IEtOperatingAreaService; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; +import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -139,7 +140,30 @@ public class SysUserServiceImpl implements ISysUserService @Override public SysUser selectUserById(Long userId) { - return userMapper.selectUserById(userId); + SysUser sysUser = userMapper.selectUserById(userId); + if(ObjectUtils.isNotEmpty(sysUser)){ + // 显示分润项目 + showDividendItem(sysUser); + } + return sysUser; + } + + /** + * 回显分账项目 + * @param sysUser + */ + private void showDividendItem(SysUser sysUser) { + String space = sysUser.getDividendItem(); + if(StringUtils.isNotEmpty(space)){ + String[] split = space.split(","); + List ids = new ArrayList<>(); + for (String id:split) { + ids.add(id); + } + sysUser.setDividendItemIds(ids); + }else{ + sysUser.setDividendItemIds(new ArrayList<>()); + } } /** @@ -274,6 +298,8 @@ public class SysUserServiceImpl implements ISysUserService @Transactional public int insertUser(SysUser user) { + // 分账项目 + setDividendItem(user); // 新增用户信息 int rows = userMapper.insertUser(user); // 新增用户岗位关联 @@ -283,6 +309,23 @@ public class SysUserServiceImpl implements ISysUserService return rows; } + private void setDividendItem(SysUser user) { + List ids = user.getDividendItemIds(); + if(ObjectUtils.isNotEmpty(ids)){ + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < ids.size(); i++) { + sb.append(ids.get(i)); + // 判断是否是最后一个元素,如果不是,则添加逗号 + if (i < ids.size() - 1) { + sb.append(","); + } + } + user.setDividendItem(sb.toString()); + }else{ + user.setDividendItem(""); + } + } + /** * 注册用户信息 * @@ -314,6 +357,8 @@ public class SysUserServiceImpl implements ISysUserService userPostMapper.deleteUserPostByUserId(userId); // 新增用户与岗位管理 insertUserPost(user); + // 分账项目 + setDividendItem(user); return userMapper.updateUser(user); } diff --git a/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java b/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java new file mode 100644 index 0000000..571dc17 --- /dev/null +++ b/electripper-system/src/main/java/com/ruoyi/system/task/EtTask.java @@ -0,0 +1,104 @@ +package com.ruoyi.system.task; + +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.ServiceConstants; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.system.domain.EtDividendDetail; +import com.ruoyi.system.domain.EtOperatingArea; +import com.ruoyi.system.domain.EtOrder; +import com.ruoyi.system.mapper.EtOrderMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.system.service.IEtDividendDetailService; +import com.ruoyi.system.service.IEtOperatingAreaService; +import com.ruoyi.system.service.IEtOrderService; +import com.ruoyi.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; + +/** + * 定时任务调度测试 + * + * @author ruoyi + */ +@Slf4j +@Component("etTask") +public class EtTask { + + @Resource + private EtOrderMapper etOrderMapper; + + @Autowired + private IEtOperatingAreaService etOperatingAreaService; + + @Resource + private SysUserMapper userMapper; + + @Autowired + private IEtDividendDetailService dividendDetailService; + + + /** + * 每天凌晨0点5分执行,计算分账结果 + * cron: 0 5 0 * * ? + */ + public void computeDividend() + { + log.info("每天凌晨0点5分执行,计算分账结果"); + // 获取昨天的订单,2024-05-26 00:00:00 -- 2024-05-26 23:59:59 + // 获取昨天日期格式: yyyy-MM-dd + + LocalDate yesterday = LocalDate.now().minusDays(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedYesterday = yesterday.format(formatter); + log.info("获取昨天日期 = " + formattedYesterday); + + //判断该日期是否已经计算过分账结果 + if(dividendDetailService.isDividendComputed(LocalDate.now().format(formatter))){ + log.info("该日期已经计算过分账结果"); + return; + } + + String startDateStr = formattedYesterday + " "+ Constants.DATE_FORMAT_START_PEREND; + String endDateStr = formattedYesterday + " " +Constants.DATE_FORMAT_END_PEREND; + + EtOrder order = new EtOrder(); + order.setStartTime(startDateStr); + order.setEndTime(endDateStr); + order.setPaid(ServiceConstants.ORDER_PAY_STATUS_PAID); + order.setStatus(ServiceConstants.ORDER_STATUS_ORDER_END); + List orderListByDate = etOrderMapper.selectEtOrderList(order); + for(EtOrder order1:orderListByDate){ + EtDividendDetail etDividendDetail = new EtDividendDetail(); + EtOperatingArea area = etOperatingAreaService.selectEtOperatingAreaByAreaId(order1.getAreaId()); + + SysUser sysUser = new SysUser(); + sysUser.setUserType("03"); + sysUser.setAreaId(area.getAreaId()); + List sysUsers = userMapper.selectUserList(sysUser); + for(SysUser user : sysUsers){ + etDividendDetail.setAreaId(area.getAreaId()); + etDividendDetail.setPartnerId(user.getUserId()); + etDividendDetail.setOrderNo(order1.getOrderNo()); + etDividendDetail.setTotalAmount(order1.getTotalFee()); + etDividendDetail.setDividendAmount(order1.getTotalFee().multiply(new BigDecimal(user.getDividendProportion()).divide(new BigDecimal(100),2, BigDecimal.ROUND_HALF_UP))); + etDividendDetail.setDividendProportion(user.getDividendProportion()); + etDividendDetail.setCreateTime(DateUtils.getNowDate()); + etDividendDetail.setDividendItem(user.getDividendItem()); + int i = dividendDetailService.insertEtDividendDetail(etDividendDetail); + if(i==0){ + throw new ServiceException("保存分账明细失败"); + } + } + } + } + +} diff --git a/electripper-system/src/main/resources/mapper/system/EtDividendDetailMapper.xml b/electripper-system/src/main/resources/mapper/system/EtDividendDetailMapper.xml new file mode 100644 index 0000000..3118e03 --- /dev/null +++ b/electripper-system/src/main/resources/mapper/system/EtDividendDetailMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + select id, area_id, partner_id, order_no, total_amount, dividend_amount, dividend_proportion, create_time, dividend_item from et_dividend_detail + + + + + + + + + insert into et_dividend_detail + + id, + area_id, + partner_id, + order_no, + total_amount, + dividend_amount, + dividend_proportion, + create_time, + dividend_item, + + + #{id}, + #{areaId}, + #{partnerId}, + #{orderNo}, + #{totalAmount}, + #{dividendAmount}, + #{dividendProportion}, + #{createTime}, + #{dividendItem}, + + + + + update et_dividend_detail + + area_id = #{areaId}, + partner_id = #{partnerId}, + order_no = #{orderNo}, + total_amount = #{totalAmount}, + dividend_amount = #{dividendAmount}, + dividend_proportion = #{dividendProportion}, + create_time = #{createTime}, + dividend_item = #{dividendItem}, + + where id = #{id} + + + + delete from et_dividend_detail where id = #{id} + + + + delete from et_dividend_detail where id in + + #{id} + + + diff --git a/electripper-system/src/main/resources/mapper/system/SysUserMapper.xml b/electripper-system/src/main/resources/mapper/system/SysUserMapper.xml index cdf8b6a..9808b00 100644 --- a/electripper-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -51,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.area_id,u.dividend_proportion,u.cooperation_time,u.dividend_status, + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.area_id,u.dividend_proportion,u.dividend_item, u.cooperation_time,u.dividend_status, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,a.area_name areaName from sys_user u @@ -62,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"