完善用户拓展文档

This commit is contained in:
wanggeng 2022-09-06 23:40:21 +08:00
parent 6719277a05
commit 88342a08ae

View File

@ -35,6 +35,34 @@ public class UserExpandDTO extends UserDTO {
示例
```java
package ink.wgink.gateway.manage.dao.user.expand;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.UpdateException;
import org.springframework.stereotype.Repository;
import java.util.Map;
@Repository
public interface IUserExpandDao {
/**
* 新增
*
* @param params
* @throws SaveException
*/
void save(Map<String, Object> params) throws SaveException;
/**
* 修改
*
* @param params
* @throws UpdateException
*/
void update(Map<String, Object> params) throws UpdateException;
}
```
@ -43,7 +71,61 @@ public class UserExpandDTO extends UserDTO {
示例
```xml
<?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="ink.wgink.gateway.manage.dao.user.expand.IUserExpandDao">
<resultMap id="userExpandDTO" type="ink.wgink.gateway.manage.pojo.dtos.user.expand.UserExpandDTO">
<result column="gateway_access_key" property="gatewayAccessKey"/>
<result column="gateway_access_secret" property="gatewayAccessSecret"/>
</resultMap>
<resultMap id="userExpandPO" type="ink.wgink.gateway.manage.pojo.pos.user.expand.UserExpandPO">
<result column="gateway_access_key" property="gatewayAccessKey"/>
<result column="gateway_access_secret" property="gatewayAccessSecret"/>
<result column="modifier" property="modifier"/>
<result column="gmt_modified" property="gmtModified"/>
</resultMap>
<!-- 新增 -->
<insert id="save" parameterType="map">
INSERT INTO sys_user_expand(
user_id,
gateway_access_key,
gateway_access_secret,
creator,
gmt_create,
modifier,
gmt_modified
) VALUES(
#{userId},
#{gatewayAccessKey},
#{gatewayAccessSecret},
#{creator},
#{gmtCreate},
#{modifier},
#{gmtModified}
}
</insert>
<!-- 修改 -->
<update id="update" parameterType="map">
UPDATE
sys_user_expand
SET
<if test="gatewayAccessKey != null and gatewayAccessKey != ''">
gateway_access_key = #{gatewayAccessKey},
</if>
<if test="gatewayAccessSecret != null">
gateway_access_secret = #{gatewayAccessSecret},
</if>
modifier = #{modifier},
gmt_modified = #{gmtModified}
WHERE
user_id = #{userId}
</update>
</mapper>
```
### 4. 创建接口
@ -85,7 +167,7 @@ public interface IUserExpandService extends IUserExpandBaseService<UserExpandDTO
}
```
## 实现接口
### 5.实现接口
根据需要实现对应的方法
@ -101,3 +183,158 @@ public class UserExpandServiceImpl extends DefaultBaseService implements IUserEx
}
}
```
### 6.编辑界面
通过实现接口中的方法,在用户列表的操作列中,会多出一个按钮,用于完成拓展属性的编辑。
步骤如下:
1. 增加拓展属性页面与接口的 `Controller`
2. 实现`public String getRoute()`
> `getRoute`的返回值为拓展属性编辑页面的url。
> 当`getRoute`返回`null`或者**空字符串**时,用户列表中的按钮不显示。
示例
```java
@Service
public class UserExpandServiceImpl extends DefaultBaseService implements IUserExpandService {
@Override
public String getRoute() {
return "route/user/expand/update";
}
// TODO ...
}
```
当属性按钮出现后点击按钮时会弹窗打开编辑页面同时在url后携带userId参数。
携带的userId就是点击行的用户ID页面自行接收处理。
如:`/route/user/expand/update?uesrId=123123123`
页面示例
```html
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<blockquote class="layui-elem-quote">网关访问属性(保存刷新)</blockquote>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">网关访问Key</label>
<div class="layui-input-block">
<input type="text" id="gatewayAccessKey" name="gatewayAccessKey" class="layui-input" value="" placeholder="网关访问Key" maxlength="255" disabled>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">网关访问Secret</label>
<div class="layui-input-block">
<input type="text" id="gatewayAccessSecret" name="gatewayAccessSecret" class="layui-input" value="" placeholder="网关访问Secret" maxlength="255" disabled>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
</body>
</html>
```
```js
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate'], function () {
var $ = layui.$;
var form = layui.form;
var userId = top.restAjax.params(window.location.href).userId;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/user/expand/get/{userId}', [userId]), {}, null, function (code, data) {
var dataFormData = {};
for (var i in data) {
dataFormData[i] = data[i] + '';
}
form.val('dataForm', dataFormData);
form.render(null, 'dataForm');
}, function (code, data) {
top.dialog.msg(data.msg);
}, function () {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function () {
top.dialog.close(loadLayerIndex);
});
}
initData();
// 提交表单
form.on('submit(submitForm)', function (formData) {
top.dialog.confirm(top.dataMessage.commit, function (index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/user/expand/update/{userId}', [userId]), formData.field, null, function (code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function (index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function () {
closeBox();
}
});
}, function (code, data) {
top.dialog.msg(data.msg);
}, function () {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function () {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function () {
closeBox();
});
// 校验
form.verify({});
});
```