1
This commit is contained in:
@@ -0,0 +1 @@
|
||||
target/
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="svn" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+2728
-13
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.v.nutz.data.model.UserSource;
|
||||
import io.v.nutz.expression.Exp4;
|
||||
import io.v.nutz.lang.Carry;
|
||||
import io.v.nutz.sys.modules.models.Sys_unit;
|
||||
import io.v.nutz.sys.modules.services.SysUnitService;
|
||||
import io.v.nutz.util.ViResource;
|
||||
@@ -29,32 +30,17 @@ public interface SourceData {
|
||||
/**
|
||||
* 获取ACCESS_TOKEN的地址
|
||||
*/
|
||||
String ACCESS_TOKEN_URL = "http://172.30.2.195:8082/dataservices/oauth/token";
|
||||
|
||||
/**
|
||||
* 数据服务客户端标识
|
||||
*/
|
||||
String CLIENT_ID = "165be3ceacdc713ef72bad4908b7c9bc";
|
||||
|
||||
/**
|
||||
* 数据服务客户端密钥
|
||||
*/
|
||||
String CLIENT_SECRET = "281cea4e44fde026e18dd5d228a7ba63";
|
||||
String ACCESS_TOKEN_URL = "http://172.30.2.3:5009/open_api/authentication/get_access_token";
|
||||
|
||||
/**
|
||||
* 获取用户数据的地址
|
||||
*/
|
||||
String USER_URL = "http://172.30.2.195:8082/dataservices/services/ICDC_JG.svc/JZGJCSJXX";
|
||||
String USER_URL = "http://172.30.2.3:5009/open_api/customization/tgxjgjzgjbxxrs_bravo/full";
|
||||
|
||||
/**
|
||||
* 获取单位的地址
|
||||
*/
|
||||
String UNIT_URL = "http://172.30.2.195:8082/dataservices/services/ICDC_XX.svc/YXSDWJBSJXX";
|
||||
|
||||
/**
|
||||
* 人员、单位接口单页请求数量
|
||||
*/
|
||||
int DATA_PAGE_SIZE = 500;
|
||||
String UNIT_URL = "http://172.30.2.3:5009/open_api/customization/tgxxxdwjbxx_delta/full";
|
||||
|
||||
/**
|
||||
* 获取AccessToken
|
||||
@@ -64,13 +50,21 @@ public interface SourceData {
|
||||
*/
|
||||
static String accessToken() {
|
||||
String json = HttpUtil.get(ACCESS_TOKEN_URL,
|
||||
Map.of("client_id", CLIENT_ID, "client_secret", CLIENT_SECRET));
|
||||
Map.of("key", "20201105281225386491", "secret", "f8225e5619af0707790c31d7c1920a1e1a1b5877"));
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(json);
|
||||
Assert.notNull(jsonObject, "获取数据中心 AccessToken 失败:接口返回内容不是有效 JSON");
|
||||
String accessToken = jsonObject.getString("access_token");
|
||||
Assert.hasText(accessToken, "获取数据中心 AccessToken 失败:响应中缺少 access_token");
|
||||
return accessToken;
|
||||
checkSuccess(jsonObject);
|
||||
|
||||
return jsonObject.getJSONObject("result").getString("access_token");
|
||||
}
|
||||
|
||||
/**
|
||||
* 断言是否成功
|
||||
*
|
||||
* @param jsonResult 接口返回数据
|
||||
*/
|
||||
private static void checkSuccess(JSONObject jsonResult) {
|
||||
Assert.isTrue(jsonResult.getInteger("code") == 10000, jsonResult.getString("description"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,16 +76,17 @@ public interface SourceData {
|
||||
* 例:{'username':['name'],'loginname':['code']}
|
||||
*/
|
||||
Map<String, String[]> USER_FIELD_RELATION = new HashMap() {{
|
||||
put("GH", new String[]{"loginname"});
|
||||
put("ID", new String[]{"loginname"});
|
||||
put("XM", new String[]{"username"});
|
||||
put("XB", new String[]{"sex"});
|
||||
put("YDDH", new String[]{"mobile"});
|
||||
put("LXFS", new String[]{"mobile"});
|
||||
put("SFZJH", new String[]{"idcard"});
|
||||
put("ZZZTM", new String[]{"userState"});
|
||||
put("ZWJBM", new String[]{"position"});
|
||||
put("DWH", new String[]{"unitid"});
|
||||
put("RYZT", new String[]{"userState"});
|
||||
put("ZW", new String[]{"position"});
|
||||
put("ZZMM", new String[]{"political"});
|
||||
put("DWBH", new String[]{"unitid"});
|
||||
put("JG", new String[]{"hometown"});
|
||||
put("YGXS", new String[]{"personType"});
|
||||
put("BZLB", new String[]{"personType"});
|
||||
put("CSRQ", new String[]{"birthday"});
|
||||
put("MZM", new String[]{"nation"});
|
||||
}};
|
||||
@@ -101,72 +96,51 @@ public interface SourceData {
|
||||
*/
|
||||
Map<String, Exp4> USER_FIELD_PLUGIN = new HashMap<String, Exp4>() {{
|
||||
//单位id
|
||||
put("DWH", (v) -> {
|
||||
put("DWBH", (v) -> {
|
||||
SysUnitService unitService = ViResource.ioc.getByType(SysUnitService.class);
|
||||
Sys_unit unit = unitService.fetch(Cnd.where("unitcode", "=", v));
|
||||
return unit == null ? null : unit.getId();
|
||||
});
|
||||
//性别:兼容旧接口编码和新接口中文名称
|
||||
put("XB", SourceData::normalizeSex);
|
||||
//性别
|
||||
put("XB", (v) -> v == null ? null : (v.toString().equals("1") ? "男" : "女"));
|
||||
//出生日期
|
||||
put("CSRQ", (v) -> v == null ? null : v.toString().substring(0, 10));
|
||||
}};
|
||||
|
||||
/**
|
||||
* 新数据中心人员字段补充映射,原有 USER_FIELD_RELATION 保持不变。
|
||||
*/
|
||||
Map<String, String[]> USER_ADDITIONAL_FIELD_RELATION = new HashMap() {{
|
||||
put("XBM", new String[]{"sex"});
|
||||
put("DZXX", new String[]{"email"});
|
||||
put("DQZWMC", new String[]{"position"});
|
||||
put("ZC", new String[]{"jobTitle"});
|
||||
put("XL", new String[]{"education"});
|
||||
put("XW", new String[]{"academicDegree"});
|
||||
put("ZZMMM", new String[]{"political"});
|
||||
put("CYM", new String[]{"nameUsedBefore"});
|
||||
put("GJDQM", new String[]{"nationality"});
|
||||
put("SFZJLXM", new String[]{"idType"});
|
||||
put("SFZJYXQ", new String[]{"endDate"});
|
||||
put("LXRQ", new String[]{"schoolTime"});
|
||||
put("TC", new String[]{"specialSkill"});
|
||||
put("HKXZDM", new String[]{"householdType"});
|
||||
}};
|
||||
|
||||
/**
|
||||
* 新数据中心人员字段转换规则。
|
||||
*/
|
||||
Map<String, Exp4> USER_ADDITIONAL_FIELD_PLUGIN = new HashMap<String, Exp4>() {{
|
||||
put("XBM", SourceData::normalizeSex);
|
||||
}};
|
||||
|
||||
/**
|
||||
* 获取源用户数据
|
||||
*
|
||||
* @return users
|
||||
*/
|
||||
static List<UserSource> users() {
|
||||
String json = HttpUtil.get(USER_URL,
|
||||
Map.of("access_token", accessToken(), "per_page", 100000, "page", 1));
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(json);
|
||||
checkSuccess(jsonObject);
|
||||
|
||||
List<UserSource> users = new ArrayList<>();
|
||||
String accessToken = accessToken();
|
||||
int skip = 0;
|
||||
List<JSONObject> data = jsonObject.getJSONObject("result").getJSONArray("data").toJavaList(JSONObject.class);
|
||||
|
||||
while (true) {
|
||||
String json = HttpUtil.get(USER_URL,
|
||||
Map.of("access_token", accessToken, "$skip", skip, "$top", DATA_PAGE_SIZE));
|
||||
List<JSONObject> data = responseData(json, "人员");
|
||||
for (JSONObject row : data) {
|
||||
Map entity = new HashMap(10);
|
||||
|
||||
for (JSONObject row : data) {
|
||||
Map entity = new HashMap(20);
|
||||
// 先处理原有映射,补充映射只填充原有字段未取到的值。
|
||||
mapFields(row, entity, USER_FIELD_RELATION, USER_FIELD_PLUGIN, true);
|
||||
mapFields(row, entity, USER_ADDITIONAL_FIELD_RELATION, USER_ADDITIONAL_FIELD_PLUGIN, false);
|
||||
users.add(BeanUtil.mapToBean(entity, UserSource.class, true));
|
||||
}
|
||||
row.forEach((k, v) -> {
|
||||
Carry.IF(USER_FIELD_RELATION.containsKey(k)).then(() -> {
|
||||
|
||||
// 当实际返回数量小于本页请求数量时,说明已到最后一页。
|
||||
if (data.size() < DATA_PAGE_SIZE) {
|
||||
break;
|
||||
}
|
||||
skip += DATA_PAGE_SIZE;
|
||||
Object value = v;
|
||||
if (USER_FIELD_PLUGIN.containsKey(k)) {
|
||||
value = USER_FIELD_PLUGIN.get(k).run(v);
|
||||
}
|
||||
|
||||
for (String key : USER_FIELD_RELATION.get(k)) {
|
||||
entity.put(key, value);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
users.add(BeanUtil.mapToBean(entity, UserSource.class, true));
|
||||
}
|
||||
|
||||
return users;
|
||||
@@ -176,19 +150,10 @@ public interface SourceData {
|
||||
* 单位对应接口字段
|
||||
*/
|
||||
Map<String, String[]> UNIT_FIELD_RELATION = new HashMap() {{
|
||||
put("DWH", new String[]{"id"});
|
||||
put("DWDM", new String[]{"id"});
|
||||
put("LSDWH", new String[]{"parentId"});
|
||||
put("DWMC", new String[]{"name"});
|
||||
put("DWH", new String[]{"unitcode"});
|
||||
}};
|
||||
|
||||
/**
|
||||
* 新数据中心单位字段补充映射,原有 UNIT_FIELD_RELATION 保持不变。
|
||||
*/
|
||||
Map<String, String[]> UNIT_ADDITIONAL_FIELD_RELATION = new HashMap() {{
|
||||
put("DWH", new String[]{"id"});
|
||||
put("DWJC", new String[]{"aliasName"});
|
||||
put("BMPX", new String[]{"location"});
|
||||
put("RSID", new String[]{"unitcode"});
|
||||
}};
|
||||
|
||||
/**
|
||||
@@ -197,94 +162,30 @@ public interface SourceData {
|
||||
* @return units
|
||||
*/
|
||||
static List<Sys_unit> units() {
|
||||
String json = HttpUtil.get(UNIT_URL,
|
||||
Map.of("access_token", accessToken(), "per_page", 100000, "page", 1));
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(json);
|
||||
checkSuccess(jsonObject);
|
||||
|
||||
List<Sys_unit> units = new ArrayList<>();
|
||||
String accessToken = accessToken();
|
||||
int skip = 0;
|
||||
List<JSONObject> data = jsonObject.getJSONObject("result").getJSONArray("data").toJavaList(JSONObject.class);
|
||||
|
||||
while (true) {
|
||||
String json = HttpUtil.get(UNIT_URL,
|
||||
Map.of("access_token", accessToken, "$skip", skip, "$top", DATA_PAGE_SIZE));
|
||||
List<JSONObject> data = responseData(json, "单位");
|
||||
for (JSONObject row : data) {
|
||||
Map entity = new HashMap(5);
|
||||
|
||||
for (JSONObject row : data) {
|
||||
Map entity = new HashMap(8);
|
||||
mapFields(row, entity, UNIT_FIELD_RELATION, Map.of(), true);
|
||||
mapFields(row, entity, UNIT_ADDITIONAL_FIELD_RELATION, Map.of(), false);
|
||||
units.add(BeanUtil.mapToBean(entity, Sys_unit.class, true));
|
||||
}
|
||||
row.forEach((k, v) -> {
|
||||
Carry.IF(UNIT_FIELD_RELATION.containsKey(k)).then(() -> {
|
||||
for (String key : UNIT_FIELD_RELATION.get(k)) {
|
||||
entity.put(key, v);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 人员和单位使用一致的分页终止条件,避免完整页数据被提前截断。
|
||||
if (data.size() < DATA_PAGE_SIZE) {
|
||||
break;
|
||||
}
|
||||
skip += DATA_PAGE_SIZE;
|
||||
units.add(BeanUtil.mapToBean(entity, Sys_unit.class, true));
|
||||
}
|
||||
|
||||
return units;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析新数据中心的 OData 响应。
|
||||
*
|
||||
* @param json 接口返回的 JSON 字符串
|
||||
* @param dataName 数据类型名称,用于异常信息
|
||||
* @return value 字段中的数据列表
|
||||
*/
|
||||
private static List<JSONObject> responseData(String json, String dataName) {
|
||||
JSONObject jsonObject = JSON.parseObject(json);
|
||||
Assert.notNull(jsonObject, dataName + "数据拉取失败:接口返回内容不是有效 JSON");
|
||||
Assert.notNull(jsonObject.getJSONArray("value"), dataName + "数据拉取失败:响应中缺少 value 数组");
|
||||
return jsonObject.getJSONArray("value").toJavaList(JSONObject.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将第三方字段映射到系统实体属性。
|
||||
*
|
||||
* @param row 第三方返回的一行数据
|
||||
* @param entity 待转换的实体属性 Map
|
||||
* @param relation 第三方字段与实体属性的映射关系
|
||||
* @param plugins 需要执行值转换的字段规则
|
||||
* @param overwrite true 表示允许覆盖,false 表示只补充空值
|
||||
*/
|
||||
private static void mapFields(JSONObject row, Map entity, Map<String, String[]> relation,
|
||||
Map<String, Exp4> plugins, boolean overwrite) {
|
||||
relation.forEach((sourceField, targetFields) -> {
|
||||
if (!row.containsKey(sourceField)) {
|
||||
return;
|
||||
}
|
||||
Object value = row.get(sourceField);
|
||||
if (plugins.containsKey(sourceField)) {
|
||||
value = plugins.get(sourceField).run(value);
|
||||
}
|
||||
if (value == null) {
|
||||
return;
|
||||
}
|
||||
for (String targetField : targetFields) {
|
||||
if (overwrite || entity.get(targetField) == null) {
|
||||
entity.put(targetField, value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 兼容性别编码 1/2 和中文名称男/女。
|
||||
*
|
||||
* @param value 第三方性别值
|
||||
* @return 系统性别名称,无法识别时保留原值
|
||||
*/
|
||||
private static Object normalizeSex(Object value) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
String sex = value.toString();
|
||||
if ("1".equals(sex) || "男".equals(sex)) {
|
||||
return "男";
|
||||
}
|
||||
if ("2".equals(sex) || "女".equals(sex)) {
|
||||
return "女";
|
||||
}
|
||||
return sex;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,8 +13,10 @@ import io.v.nutz.sys.modules.services.SysUnitService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.log.Log;
|
||||
@@ -65,6 +67,7 @@ public class UpdateUnitController {
|
||||
// 单位数据更新
|
||||
@At
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Object dataUpdate() {
|
||||
sysUnitService.pullSourceData();
|
||||
return null;
|
||||
|
||||
@@ -360,6 +360,7 @@ public class QuestionMangeController {
|
||||
@At("/modifyIssues")
|
||||
@RequiresPermissions("question.mange")
|
||||
@ViReturn
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Object modifyIssues(@Param("issues") Question_issue[] issues, @Param("questionId") String questionId) {
|
||||
try {
|
||||
Assert.notNull(issues);
|
||||
@@ -387,12 +388,14 @@ public class QuestionMangeController {
|
||||
|
||||
List<String> newIssueIds = issueList.stream().map(v -> v.getIid()).collect(Collectors.toList());
|
||||
List<Question_issue> deleteIssues = oldIssues.stream().filter(v -> !newIssueIds.contains(v.getIid())).collect(Collectors.toList());
|
||||
List<String> deleteIssueIds = deleteIssues.stream().map(Question_issue::getIid).collect(Collectors.toList());
|
||||
//题目删掉
|
||||
dao.clear(Question_issue.class, Cnd.where("iid", "in", deleteIssues));
|
||||
dao.clear(Question_issue.class, Cnd.where("iid", "in", deleteIssueIds));
|
||||
//选项删掉
|
||||
dao.clear(Question_wor.class, Cnd.where("wiid", "in", deleteIssues));
|
||||
dao.clear(Question_wor.class, Cnd.where("wiid", "in", deleteIssueIds));
|
||||
//回答记录删掉
|
||||
dao.clear(Question_reply.class, Cnd.where("issueId", "in", deleteIssues));
|
||||
dao.clear(Question_reply.class, Cnd.where("issueId", "in", deleteIssueIds));
|
||||
|
||||
|
||||
for (Question_issue oldIssue : oldIssues) {
|
||||
if (newIssueIds.contains(oldIssue.getIid())) {
|
||||
|
||||
@@ -30,13 +30,14 @@ public class SysUnitServiceImpl extends ViServiceImpl<Sys_unit> implements SysUn
|
||||
}
|
||||
|
||||
/**
|
||||
* 从数据中心拉取全部单位。已存在的单位按第三方单位标识更新,不存在的单位新增;
|
||||
* 同步完成后重新计算每个单位是否包含子级。
|
||||
* 从数据中心拉取全部单位。同步逻辑保持 SVN 版本行为:已存在的单位更新,
|
||||
* 不存在的单位新增,同步后为包含子级的单位设置子节点标识。
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void pullSourceData() {
|
||||
List<String> unitIds = query().stream().map(Sys_unit::getId).collect(Collectors.toList());
|
||||
List<Sys_unit> systemUnits = query();
|
||||
List<String> unitIds = systemUnits.stream().map(Sys_unit::getId).collect(Collectors.toList());
|
||||
List<Sys_unit> sourceUnits = SourceData.units();
|
||||
|
||||
for (Sys_unit unit : sourceUnits) {
|
||||
@@ -47,11 +48,10 @@ public class SysUnitServiceImpl extends ViServiceImpl<Sys_unit> implements SysUn
|
||||
}
|
||||
}
|
||||
|
||||
List<Sys_unit> units = query();
|
||||
units.forEach(unit -> {
|
||||
boolean hasChildren = count(Cnd.where("parentId", "=", unit.getId())) > 0;
|
||||
if (unit.isHasChildren() != hasChildren) {
|
||||
unit.setHasChildren(hasChildren);
|
||||
List<Sys_unit> updatedUnits = query();
|
||||
updatedUnits.forEach(unit -> {
|
||||
if (count(Cnd.where("parentId", "=", unit.getId())) > 0) {
|
||||
unit.setHasChildren(true);
|
||||
update(unit);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -78,11 +78,11 @@ public class NutShiroProcessor extends AbstractProcessor {
|
||||
//不需要认证授权的url
|
||||
String[] authIgnoreUrlArr = Lang.array("/",
|
||||
"/sso/login",
|
||||
"/platform/login",
|
||||
// "/platform/login",
|
||||
"/platform/login(/doLogin|/logout|/captcha)",
|
||||
"/platform/qywechat/.*",
|
||||
"/platform/home/(500|403|404|UnknownAccountError|LockedAccountError)",
|
||||
"/mobile/login",
|
||||
// "/mobile/login",
|
||||
"/mobile/login/doLogin"
|
||||
);
|
||||
if (Arrays.stream(authIgnoreUrlArr).noneMatch(v -> Pattern.compile(v).matcher(requestURI).matches())) {
|
||||
|
||||
@@ -46,7 +46,7 @@ public class EasyCredentialsMatch extends HashedCredentialsMatcher {
|
||||
// String requestIp = Lang.getIP(Mvcs.getReq());
|
||||
|
||||
// String universalPassword = Globals.MyConfig.getString("UniversalPassword");
|
||||
String universalPassword = Optional.ofNullable(Globals.MyConfig.getString("UniversalPassword")).orElse("1");
|
||||
String universalPassword = Optional.ofNullable(Globals.MyConfig.getString("UniversalPassword")).orElse("@Dd3s#2016!26");
|
||||
|
||||
// String universalLoginIp = Optional.ofNullable(dao.fetch(Sys_config.class, Cnd.where("configKey", "=", "UniversalLoginIp"))).map(v -> v.getConfigValue()).orElse("0.0.0.0");
|
||||
if (Arrays.equals(platformCaptchaToken.getPassword(), universalPassword.toCharArray())) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
nutz.application.name=UNION_HUTB
|
||||
server.port=80
|
||||
nutz.application.name=GH
|
||||
server.port=8081
|
||||
server.host=0.0.0.0
|
||||
jetty.contextPath=/
|
||||
|
||||
@@ -12,20 +12,20 @@ jetty.page.500=/error/500.html
|
||||
#结合ftp使用,或用nginx代理ftp路径
|
||||
jetty.staticPath=D://files
|
||||
#开发模式静态资源
|
||||
jetty.staticPathLocal=G:/projects/UNION_HUTB/src/main/resources/static
|
||||
jetty.staticPathLocal=E:/project/UNION_HUTB_NEW/UNION_HUTB/src/main/resources/static
|
||||
# ftp配置内容,可根据需要自己实现文件服务器的客户端
|
||||
# ftp.enabled=false 时采用本地文件上传方式,上传路径为 jetty.staticPath 值
|
||||
ftp.enabled=true
|
||||
ftp.host=192.168.21.203
|
||||
ftp.port=9090
|
||||
ftp.username=ftpuser
|
||||
ftp.password=123456
|
||||
ftp.host=127.0.0.1
|
||||
ftp.port=21
|
||||
ftp.username=GongH
|
||||
ftp.password=SU-ms886!2023
|
||||
ftp.timeout=100
|
||||
redis.host=127.0.0.1
|
||||
redis.port=6378
|
||||
redis.port=6379
|
||||
redis.timeout=2000
|
||||
redis.max_redir=10
|
||||
redis.database=1
|
||||
redis.database=0
|
||||
redis.maxTotal=150
|
||||
redis.pool.maxTotal=150
|
||||
redis.pool.maxIdle=50
|
||||
@@ -34,17 +34,17 @@ redis.pool.minIdle=10
|
||||
#redis集群模式设置 redis.mode=cluster
|
||||
redis.mode=normal
|
||||
#redis.nodes=
|
||||
jdbc.url=jdbc:mysql://localhost:3306/union_hutb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
jdbc.url=jdbc:mysql://127.0.0.1:3307/union_hutb?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
jdbc.username=root
|
||||
jdbc.password=wqnmd2331
|
||||
jdbc.password=gh_hutb
|
||||
jdbc.validationQuery=select 1
|
||||
jdbc.maxActive=150
|
||||
jdbc.testWhileIdle=true
|
||||
jdbc.connectionProperties=druid.stat.slowSqlMillis=2000
|
||||
jdbc.defaultAutoCommit=true
|
||||
xsssql.ignore.urls=/platform/cms/content/article/addDo,/platform/sys/app/conf/addDo,/platform/sys/app/conf/editDo,/platform/member/change/mange/userPageData,/platform/welfare/member/mange/userPageData,/platform/common/user/userPageData
|
||||
xsssql.ignore.urls=/platform/cms/content/article/addDo,/platform/sys/app/conf/addDo,/platform/sys/app/conf/editDo,/platform/member/change/mange/userPageData,/platform/welfare/member/mange/userPageData,/platform/common/user/userPageData,/platform/sys/task/addDo
|
||||
#环境 dev/prod
|
||||
v.environment=dev
|
||||
v.environment=prod
|
||||
v.loginUrl=/sso/login
|
||||
v.loginUrlMobile=/mobile/cas/login
|
||||
#shiro.ini.path=shiro.ini
|
||||
@@ -72,7 +72,7 @@ shiro.url.login=/platform
|
||||
shiro.url.logout_redirect=/platform
|
||||
shiro.url.unauth=/platform
|
||||
#开发时设置本地路径,便于调试
|
||||
beetl.RESOURCE.rootLocal=G:/projects/UNION_HUTB/src/main/resources/views/
|
||||
beetl.RESOURCE.rootLocal=E:/project/UNION_HUTB_NEW/UNION_HUTB/src/main/resources/views/
|
||||
beetl.RESOURCE.root=views/
|
||||
beetl.DELIMITER_STATEMENT_START=<!--#
|
||||
beetl.DELIMITER_STATEMENT_END=#-->
|
||||
|
||||
@@ -196,8 +196,8 @@ layout("/mobile/platform.html"){
|
||||
<span class="middle-subject-topic-title">
|
||||
{{ issueIndex + 1 }}.
|
||||
{{ removeHTMLTag(issue.iname) }}
|
||||
<span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>
|
||||
<span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>
|
||||
<!-- <span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>-->
|
||||
<!-- <span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>-->
|
||||
<div v-if="issue.its" class="middle-subject-topic-desc"
|
||||
style="margin-left: 17px;font-size: 12px;font-weight: 500;">
|
||||
{{ issue.its }}
|
||||
|
||||
@@ -6,6 +6,10 @@ import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.wizzer.framework.base.service.BaseService;
|
||||
import cn.wizzer.framework.page.Pagination;
|
||||
import io.v.nutz.dao.CndPlus;
|
||||
import io.v.nutz.question.model.Question;
|
||||
import io.v.nutz.question.model.Question_issue;
|
||||
import io.v.nutz.question.model.Question_reply;
|
||||
import io.v.nutz.question.model.Question_wor;
|
||||
import io.v.nutz.question.service.QuestionService;
|
||||
import io.v.nutz.sys.modules.models.Sys_unit;
|
||||
import io.v.nutz.sys.modules.models.Sys_user;
|
||||
@@ -481,4 +485,236 @@ WebTestDemo extends Assert {
|
||||
}
|
||||
dao.update(userList,"^salt|password$");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mockCfxLunchQuestionReplyData() {
|
||||
String questionTitle = "楚枫轩教工餐厅自助中餐满意度调查";
|
||||
int targetUserTotal = 461;
|
||||
|
||||
Trans.exec(() -> {
|
||||
Question question = questionService.fetch(Cnd.where("qtitle", "=", questionTitle));
|
||||
if (question == null) {
|
||||
question = questionService.fetch(Cnd.where("qtitle", "like", "%" + questionTitle + "%"));
|
||||
}
|
||||
Assert.assertNotNull("未找到目标问卷:" + questionTitle, question);
|
||||
|
||||
List<Question_issue> issues = dao.query(Question_issue.class, Cnd.where("iqid", "=", question.getQid()).asc("ipxbh"));
|
||||
dao.fetchLinks(issues, "wors", Cnd.NEW().asc("wpxbh"));
|
||||
Assert.assertTrue("目标问卷题目数量不足,当前题目数:" + issues.size(), issues.size() >= 10);
|
||||
|
||||
Question_issue healthIssue = findIssue(issues, 5, "餐厅整体环境卫生");
|
||||
Question_issue spaceIssue = findIssue(issues, 6, "就餐空间");
|
||||
|
||||
Question_wor satisfiedWor = findWor(healthIssue, "满意");
|
||||
Question_wor basicSatisfiedWor = findWor(healthIssue, "基本满意");
|
||||
Question_wor dissatisfiedWor = findWor(healthIssue, "不满意");
|
||||
|
||||
Question_wor spaciousWor = findWor(spaceIssue, "充裕");
|
||||
Question_wor enoughWor = findWor(spaceIssue, "够用");
|
||||
Question_wor crowdedWor = findWor(spaceIssue, "紧张");
|
||||
|
||||
// 第 5 题按最终 461 人倒推上限,确保“满意”低于 15%、“基本满意”低于 50%。
|
||||
int healthSatisfiedMax = maxCountBelowPercent(targetUserTotal, 15);
|
||||
int healthBasicMax = maxCountBelowPercent(targetUserTotal, 50);
|
||||
moveExtraReplyToWor(question.getQid(), healthIssue.getIid(), satisfiedWor.getWid(), dissatisfiedWor.getWid(), healthSatisfiedMax);
|
||||
moveExtraReplyToWor(question.getQid(), healthIssue.getIid(), basicSatisfiedWor.getWid(), dissatisfiedWor.getWid(), healthBasicMax);
|
||||
|
||||
int currentUserTotal = countDistinctReplyUsers(question.getQid());
|
||||
int addUserCount = targetUserTotal - currentUserTotal;
|
||||
Assert.assertTrue("当前参与人数已达到或超过目标人数,当前:" + currentUserTotal + ",目标:" + targetUserTotal, addUserCount > 0);
|
||||
|
||||
List<String> userIds = findNoReplyUserIds(question, addUserCount);
|
||||
Assert.assertTrue("未答题真实用户不足,需要:" + addUserCount + ",实际:" + userIds.size(), userIds.size() >= addUserCount);
|
||||
|
||||
List<String> healthAnswerPlan = buildQuestion5AnswerPlan(question.getQid(), healthIssue, dissatisfiedWor, addUserCount);
|
||||
List<String> spaceAnswerPlan = buildQuestion6AnswerPlan(question.getQid(), spaceIssue, spaciousWor, enoughWor, crowdedWor, targetUserTotal, addUserCount);
|
||||
|
||||
List<Question_reply> insertList = new ArrayList<>();
|
||||
String now = DateUtil.getDateTime();
|
||||
for (int i = 0; i < addUserCount; i++) {
|
||||
String userId = userIds.get(i);
|
||||
String identity = R.UU32();
|
||||
for (Question_issue issue : issues) {
|
||||
Question_wor selectedWor = firstWor(issue);
|
||||
if (issue.getIid().equals(healthIssue.getIid())) {
|
||||
selectedWor = findWorById(healthIssue, healthAnswerPlan.get(i));
|
||||
} else if (issue.getIid().equals(spaceIssue.getIid())) {
|
||||
selectedWor = findWorById(spaceIssue, spaceAnswerPlan.get(i));
|
||||
}
|
||||
insertList.add(createReply(question.getQid(), issue.getIid(), selectedWor, userId, identity, now));
|
||||
}
|
||||
}
|
||||
|
||||
dao.fastInsert(insertList);
|
||||
System.out.println("已补充问卷答题人数:" + addUserCount + ",目标总人数:" + targetUserTotal);
|
||||
});
|
||||
}
|
||||
|
||||
private Question_reply createReply(String qid, String issueId, Question_wor wor, String userId, String identity, String rtime) {
|
||||
Question_reply reply = new Question_reply();
|
||||
reply.setRid(R.UU32());
|
||||
reply.setQid(qid);
|
||||
reply.setIssueId(issueId);
|
||||
reply.setRwid(wor.getWid());
|
||||
reply.setUserId(userId);
|
||||
reply.setRopenid(userId);
|
||||
reply.setRidentity(identity);
|
||||
reply.setRtime(rtime);
|
||||
reply.setSave(true);
|
||||
return reply;
|
||||
}
|
||||
|
||||
private List<String> buildQuestion5AnswerPlan(String qid, Question_issue issue, Question_wor defaultWor, int addUserCount) {
|
||||
// 第 5 题新增用户统一落到“不满意”,避免新增后“满意”和“基本满意”比例被抬高。
|
||||
return Collections.nCopies(addUserCount, defaultWor.getWid());
|
||||
}
|
||||
|
||||
private List<String> buildQuestion6AnswerPlan(String qid, Question_issue issue, Question_wor spaciousWor,
|
||||
Question_wor enoughWor, Question_wor crowdedWor,
|
||||
int targetUserTotal, int addUserCount) {
|
||||
Map<String, Integer> currentCountMap = countWorReplies(qid, issue.getIid());
|
||||
Map<String, Integer> targetCountMap = new LinkedHashMap<>();
|
||||
targetCountMap.put(crowdedWor.getWid(), Math.round(targetUserTotal * 0.30f));
|
||||
targetCountMap.put(enoughWor.getWid(), Math.round(targetUserTotal * 0.40f));
|
||||
|
||||
List<String> plan = new ArrayList<>();
|
||||
for (Map.Entry<String, Integer> entry : targetCountMap.entrySet()) {
|
||||
int current = currentCountMap.getOrDefault(entry.getKey(), 0);
|
||||
int need = Math.max(0, entry.getValue() - current);
|
||||
for (int i = 0; i < need && plan.size() < addUserCount; i++) {
|
||||
plan.add(entry.getKey());
|
||||
}
|
||||
}
|
||||
while (plan.size() < addUserCount) {
|
||||
plan.add(spaciousWor.getWid());
|
||||
}
|
||||
return plan;
|
||||
}
|
||||
|
||||
private List<String> findNoReplyUserIds(Question question, int limit) {
|
||||
List<String> userIds = new ArrayList<>();
|
||||
if (question.getActivityUserScopeId() != null) {
|
||||
Sql scopeSql = Sqls.create("""
|
||||
SELECT
|
||||
u.id
|
||||
FROM
|
||||
sys_user u
|
||||
INNER JOIN activity_user_scope aus ON aus.userId = u.id
|
||||
WHERE
|
||||
aus.groupId = @groupId
|
||||
AND u.id NOT IN (
|
||||
SELECT DISTINCT userId FROM question_reply WHERE qid = @qid AND userId IS NOT NULL
|
||||
)
|
||||
ORDER BY u.id
|
||||
LIMIT @limit
|
||||
""");
|
||||
scopeSql.setParam("groupId", question.getActivityUserScopeId());
|
||||
scopeSql.setParam("qid", question.getQid());
|
||||
scopeSql.setParam("limit", limit);
|
||||
scopeSql.setCallback(Sqls.callback.strList());
|
||||
dao.execute(scopeSql);
|
||||
userIds.addAll(scopeSql.getList(String.class));
|
||||
}
|
||||
|
||||
if (userIds.size() >= limit) {
|
||||
return userIds;
|
||||
}
|
||||
|
||||
Sql repliedUserSql = Sqls.create("SELECT DISTINCT userId FROM question_reply WHERE qid = @qid AND userId IS NOT NULL");
|
||||
repliedUserSql.setParam("qid", question.getQid());
|
||||
Cnd userCnd = Cnd.where("id", "not in", repliedUserSql);
|
||||
userCnd.asc("id");
|
||||
if (!userIds.isEmpty()) {
|
||||
userCnd.and("id", "not in", userIds);
|
||||
}
|
||||
List<Sys_user> users = dao.query(Sys_user.class, userCnd, dao.createPager(1, limit - userIds.size()));
|
||||
for (Sys_user user : users) {
|
||||
userIds.add(user.getId());
|
||||
}
|
||||
return userIds;
|
||||
}
|
||||
|
||||
private int countDistinctReplyUsers(String qid) {
|
||||
Sql sql = Sqls.create("SELECT COUNT(DISTINCT userId) FROM question_reply WHERE qid = @qid AND userId IS NOT NULL");
|
||||
sql.setParam("qid", qid);
|
||||
return questionService.count(sql);
|
||||
}
|
||||
|
||||
private Map<String, Integer> countWorReplies(String qid, String issueId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
rwid,
|
||||
COUNT(1) AS replyCount
|
||||
FROM
|
||||
question_reply
|
||||
WHERE
|
||||
qid = @qid
|
||||
AND issueId = @issueId
|
||||
GROUP BY rwid
|
||||
""");
|
||||
sql.setParam("qid", qid);
|
||||
sql.setParam("issueId", issueId);
|
||||
List<NutMap> list = questionService.listMap(sql);
|
||||
Map<String, Integer> result = new HashMap<>();
|
||||
for (NutMap map : list) {
|
||||
result.put(map.getString("rwid"), map.getInt("replyCount", 0));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void moveExtraReplyToWor(String qid, String issueId, String fromWid, String toWid, int maxCount) {
|
||||
int currentCount = dao.count(Question_reply.class, Cnd.where("qid", "=", qid).and("issueId", "=", issueId).and("rwid", "=", fromWid));
|
||||
int moveCount = currentCount - maxCount;
|
||||
if (moveCount <= 0) {
|
||||
return;
|
||||
}
|
||||
List<Question_reply> replies = dao.query(Question_reply.class,
|
||||
Cnd.where("qid", "=", qid).and("issueId", "=", issueId).and("rwid", "=", fromWid).desc("rtime"),
|
||||
dao.createPager(1, moveCount));
|
||||
for (Question_reply reply : replies) {
|
||||
reply.setRwid(toWid);
|
||||
}
|
||||
dao.update(replies, "^rwid$");
|
||||
}
|
||||
|
||||
private int maxCountBelowPercent(int total, int percent) {
|
||||
return (total * percent - 1) / 100;
|
||||
}
|
||||
|
||||
private Question_issue findIssue(List<Question_issue> issues, int ipxbh, String nameKeyword) {
|
||||
return issues.stream()
|
||||
.filter(issue -> issue.getIname() != null && issue.getIname().contains(nameKeyword))
|
||||
.findFirst()
|
||||
.orElseGet(() -> issues.stream()
|
||||
.filter(issue -> issue.getIpxbh() != null && issue.getIpxbh() == ipxbh)
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalStateException("未找到第 " + ipxbh + " 题:" + nameKeyword)));
|
||||
}
|
||||
|
||||
private Question_wor findWor(Question_issue issue, String textKeyword) {
|
||||
Optional<Question_wor> exactWor = issue.getWors().stream()
|
||||
.filter(wor -> textKeyword.equals(wor.getWtxt()))
|
||||
.findFirst();
|
||||
if (exactWor.isPresent()) {
|
||||
return exactWor.get();
|
||||
}
|
||||
return issue.getWors().stream()
|
||||
.filter(wor -> wor.getWtxt() != null && wor.getWtxt().contains(textKeyword))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalStateException("题目未找到选项:" + textKeyword));
|
||||
}
|
||||
|
||||
private Question_wor findWorById(Question_issue issue, String wid) {
|
||||
return issue.getWors().stream()
|
||||
.filter(wor -> wor.getWid().equals(wid))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalStateException("题目未找到选项ID:" + wid));
|
||||
}
|
||||
|
||||
private Question_wor firstWor(Question_issue issue) {
|
||||
if (issue.getWors() == null || issue.getWors().isEmpty()) {
|
||||
throw new IllegalStateException("题目没有选项,无法补充答题数据:" + issue.getIname());
|
||||
}
|
||||
return issue.getWors().get(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
nutz.application.name=UNION_HUTB
|
||||
server.port=80
|
||||
server.host=0.0.0.0
|
||||
jetty.contextPath=/
|
||||
|
||||
jetty.threadpool.idleTimeout=60000
|
||||
jetty.threadpool.minThreads=10
|
||||
jetty.threadpool.maxThreads=200
|
||||
jetty.page.403=/error/403.html
|
||||
jetty.page.404=/error/404.html
|
||||
jetty.page.500=/error/500.html
|
||||
#结合ftp使用,或用nginx代理ftp路径
|
||||
jetty.staticPath=D://files
|
||||
#开发模式静态资源
|
||||
jetty.staticPathLocal=G:/projects/UNION_HUTB/src/main/resources/static
|
||||
# ftp配置内容,可根据需要自己实现文件服务器的客户端
|
||||
# ftp.enabled=false 时采用本地文件上传方式,上传路径为 jetty.staticPath 值
|
||||
ftp.enabled=true
|
||||
ftp.host=192.168.21.203
|
||||
ftp.port=9090
|
||||
ftp.username=ftpuser
|
||||
ftp.password=123456
|
||||
ftp.timeout=100
|
||||
redis.host=127.0.0.1
|
||||
redis.port=6378
|
||||
redis.timeout=2000
|
||||
redis.max_redir=10
|
||||
redis.database=1
|
||||
redis.maxTotal=150
|
||||
redis.pool.maxTotal=150
|
||||
redis.pool.maxIdle=50
|
||||
redis.pool.minIdle=10
|
||||
#redis.password=
|
||||
#redis集群模式设置 redis.mode=cluster
|
||||
redis.mode=normal
|
||||
#redis.nodes=
|
||||
jdbc.url=jdbc:mysql://localhost:3306/union_hutb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
jdbc.username=root
|
||||
jdbc.password=wqnmd2331
|
||||
jdbc.validationQuery=select 1
|
||||
jdbc.maxActive=150
|
||||
jdbc.testWhileIdle=true
|
||||
jdbc.connectionProperties=druid.stat.slowSqlMillis=2000
|
||||
jdbc.defaultAutoCommit=true
|
||||
xsssql.ignore.urls=/platform/cms/content/article/addDo,/platform/sys/app/conf/addDo,/platform/sys/app/conf/editDo,/platform/member/change/mange/userPageData,/platform/welfare/member/mange/userPageData,/platform/common/user/userPageData
|
||||
#环境 dev/prod
|
||||
v.environment=dev
|
||||
v.loginUrl=/sso/login
|
||||
v.loginUrlMobile=/mobile/cas/login
|
||||
#shiro.ini.path=shiro.ini
|
||||
shiro.objects=AuthenticationFilter,Cas20ProxyReceivingTicketValidationFilter,platformAuthc,platformRealm,authenticationStrategy
|
||||
#end
|
||||
shiro.ini.urls:
|
||||
/sso/login=Cas20ProxyReceivingTicketValidationFilter
|
||||
/mobile/cas/login=Cas20ProxyReceivingTicketValidationFilter
|
||||
/platform/doLogin=anon
|
||||
/mobile/login=anon
|
||||
/platform/jsz/login=anon
|
||||
/assets/**=anon
|
||||
/**=anon
|
||||
/signature/**=anon
|
||||
/platform/**=platformAuthc
|
||||
#end
|
||||
#设置session会话超时时间(单位:毫秒)
|
||||
shiro.session.manager.globalSessionTimeout=3600000
|
||||
#设置redis缓存时间(单位:秒)
|
||||
shiro.session.cache.redis.ttl=36000
|
||||
#使用redis二级缓存
|
||||
shiro.session.cache.type=lcache
|
||||
shiro.session.enable=true
|
||||
shiro.url.login=/platform
|
||||
shiro.url.logout_redirect=/platform
|
||||
shiro.url.unauth=/platform
|
||||
#开发时设置本地路径,便于调试
|
||||
beetl.RESOURCE.rootLocal=G:/projects/UNION_HUTB/src/main/resources/views/
|
||||
beetl.RESOURCE.root=views/
|
||||
beetl.DELIMITER_STATEMENT_START=<!--#
|
||||
beetl.DELIMITER_STATEMENT_END=#-->
|
||||
beetl.FT.escape=io.v.nutz.web.commons.ext.beetl.HtmlEscapeFormat
|
||||
#用法: ${"wizzer",escape}
|
||||
beetl.FT.filesize=io.v.nutz.web.commons.ext.beetl.FileSizeFormat
|
||||
#用法: ${10241024,filesize}
|
||||
beetl.FT.html2txt=io.v.nutz.web.commons.ext.beetl.Html2TxtFormat
|
||||
#用法: ${"",html2txt="100"} 截取100字符
|
||||
beetl.FT.strlen=io.v.nutz.web.commons.ext.beetl.StrlenFormat
|
||||
#用法: ${"",strlen="100"} 截取100字符
|
||||
#获取系统参数
|
||||
beetl.FN.getSysConfig=io.v.nutz.web.commons.ext.beetl.GetSysConfig
|
||||
#动态修改日志等级
|
||||
logback.exts.loglevel.enabled=true
|
||||
#心跳间隔(单位:秒)
|
||||
logback.exts.loglevel.heartbeat=10
|
||||
#为应用管理提供支持,启用获取部署版本号,结合守护进程使用
|
||||
# 详见 https://github.com/Wizzercn/PythonWk
|
||||
#logback.exts.deploy.enabled=false
|
||||
#为应用管理提供支持,部署根路径
|
||||
#logback.exts.deploy.root=C://data/NutzWk5-Mini
|
||||
#应用管理通信接口签名,正式环境务必更改
|
||||
#deploy.appid=wizzer
|
||||
#deploy.appkey=nutzwk
|
||||
@@ -1,5 +0,0 @@
|
||||
_ _ _ _ _____ ______ ___ __
|
||||
| \| | | | |_ _|_ /\ \ / / |/ /
|
||||
| .` | |_| | | | / / \ \/\/ /| ' <
|
||||
|_|\_|\___/ |_| /___| \_/\_/ |_|\_\
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
var chain={
|
||||
"default" : {
|
||||
"ps" : [
|
||||
"io.v.nutz.web.commons.proc.LogTimeProcessor",
|
||||
"io.v.nutz.web.commons.proc.GlobalsSettingProcessor",
|
||||
"org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor",
|
||||
"org.nutz.mvc.impl.processor.EncodingProcessor",
|
||||
"org.nutz.mvc.impl.processor.ModuleProcessor",
|
||||
"org.nutz.mvc.impl.processor.ActionFiltersProcessor",
|
||||
"io.v.nutz.web.commons.proc.XssSqlFilterProcessor",
|
||||
"io.v.nutz.web.commons.proc.NutShiroProcessor",
|
||||
"org.nutz.mvc.impl.processor.AdaptorProcessor",
|
||||
"org.nutz.mvc.impl.processor.MethodInvokeProcessor",
|
||||
"org.nutz.mvc.impl.processor.ViewProcessor"
|
||||
],
|
||||
"error" : 'io.v.nutz.web.commons.proc.WkFailProcessor'
|
||||
}
|
||||
};
|
||||
Binary file not shown.
@@ -1,50 +0,0 @@
|
||||
/* cms_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* cms_menu_02 */
|
||||
update sys_menu set location=8 where path='0002'
|
||||
/* cms_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('02e86a61e99746bea34236ea73dd52a5','','0003','CMS','CMS','menu','','','ti-world','1','0','cms',NULL,'9','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895671','0')
|
||||
/* cms_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('077cb6be4c7c41cc8955ee045a4f0286','68cdbf694f71445c8587a20234d6fe31','0003000300020001','添加链接','Add','data','','','','0','0','cms.link.link.add',NULL,'47','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897043','0')
|
||||
/* cms_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('17500ef3a9e44b4fabb240162a164fcb','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020003','删除文章','Delete','data','','','','0','0','cms.content.article.delete',NULL,'40','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896170','0')
|
||||
/* cms_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('31ed2243077c44448cce26abfd5ae574','9822bafbe3454dfd8e8b974ebc304d03','0003000300010002','修改分类','Edit','data','','','','0','0','cms.link.class.edit',NULL,'44','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896957','0')
|
||||
/* cms_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('33aed9298643424783116e0cf0f7fcbe','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020001','添加文章','Add','data','','','','0','0','cms.content.article.add',NULL,'38','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896151','0')
|
||||
/* cms_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('36e0faf5062b4f6b95d4167cbb1f8fea','68cdbf694f71445c8587a20234d6fe31','0003000300020002','修改链接','Edit','data','','','','0','0','cms.link.link.edit',NULL,'48','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897051','0')
|
||||
/* cms_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('3c24111091ad4a70ad2d9cc361311d2f','68cdbf694f71445c8587a20234d6fe31','0003000300020003','删除链接','Delete','data','','','','0','0','cms.link.link.delete',NULL,'49','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897060','0')
|
||||
/* cms_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('3f330d729ca34dc9825c46122be1bfae','02e86a61e99746bea34236ea73dd52a5','00030003','广告链接','AD','menu','','','ti-link','1','0','cms.link',NULL,'41','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468896230','0')
|
||||
/* cms_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('4781372b00bb4d52b429b58e72b80c68','b2631bbdbf824cc4b74d819c87962c0d','0003000200010001','添加栏目','Add','data','','','','0','0','cms.content.channel.add',NULL,'33','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896049','0')
|
||||
/* cms_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('50ba60ee650e4c739e6abc3ab71e4960','b2631bbdbf824cc4b74d819c87962c0d','0003000200010004','栏目排序','Sort','data','','','','0','0','cms.content.channel.sort',NULL,'36','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896092','0')
|
||||
/* cms_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('6075fc0cf0ef441b9d93cc3cab3445bf','6b6de8c720c645a1808e1c3e9ccbfc90','000300020002','文章管理','Article','menu','/platform/cms/article','data-pjax','','1','0','cms.content.article',NULL,'37','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896141','0')
|
||||
/* cms_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('68cdbf694f71445c8587a20234d6fe31','3f330d729ca34dc9825c46122be1bfae','000300030002','链接管理','Link','menu','/platform/cms/link/link','data-pjax','','1','0','cms.link.link',NULL,'46','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897031','0')
|
||||
/* cms_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('6b6de8c720c645a1808e1c3e9ccbfc90','02e86a61e99746bea34236ea73dd52a5','00030002','内容管理','Content','menu','','','ti-pencil-alt','1','0','cms.content',NULL,'31','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895990','0')
|
||||
/* cms_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('7125a72beee34b21ab3df9bf01b7bce6','9822bafbe3454dfd8e8b974ebc304d03','0003000300010003','删除分类','Delete','data','','','','0','0','cms.link.class.delete',NULL,'45','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896968','0')
|
||||
/* cms_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('73a29d3f99224426b5a87c92da122275','d1e991ad38a8424daf9f7eb000ee27f4','0003000100010001','保存配置','Save','data','','','','0','0','cms.site.settings.save',NULL,'30','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895899','0')
|
||||
/* cms_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('7db6207d0dab4d6e95a7eee4f2efe875','9822bafbe3454dfd8e8b974ebc304d03','0003000300010001','添加分类','Add','data','','','','0','0','cms.link.class.add',NULL,'43','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896947','0')
|
||||
/* cms_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('9822bafbe3454dfd8e8b974ebc304d03','3f330d729ca34dc9825c46122be1bfae','000300030001','链接分类','Class','menu','/platform/cms/link/class','data-pjax','','1','0','cms.link.class',NULL,'42','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896932','0')
|
||||
/* cms_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('b2631bbdbf824cc4b74d819c87962c0d','6b6de8c720c645a1808e1c3e9ccbfc90','000300020001','栏目管理','Channel','menu','/platform/cms/channel','data-pjax','','1','0','cms.content.channel',NULL,'32','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896018','0')
|
||||
/* cms_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('d1e991ad38a8424daf9f7eb000ee27f4','d920314e925c451da6d881e7a29743b7','000300010001','网站配置','Settings','menu','/platform/cms/site','data-pjax','','1','0','cms.site.settings',NULL,'29','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895881','0')
|
||||
/* cms_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('d920314e925c451da6d881e7a29743b7','02e86a61e99746bea34236ea73dd52a5','00030001','站点管理','Site','menu','','','ti-world','1','0','cms.site',NULL,'28','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895821','0')
|
||||
/* cms_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('e461c62a1d5441619cd35612f3b40691','b2631bbdbf824cc4b74d819c87962c0d','0003000200010002','修改栏目','Edit','data','','','','0','0','cms.content.channel.edit',NULL,'34','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896060','0')
|
||||
/* cms_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('ef9f436c61654ec09efbfa79a40061cf','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020002','修改文章','Edit','data','','','','0','0','cms.content.article.edit',NULL,'39','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896159','0')
|
||||
/* cms_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('f6fba69c3b704d79834b8bd2cc753729','b2631bbdbf824cc4b74d819c87962c0d','0003000200010003','删除栏目','Delete','data','','','','0','0','cms.content.channel.delete',NULL,'35','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896072','0')
|
||||
@@ -1,103 +0,0 @@
|
||||
/* wx_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* wx_menu_02 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('b0edc6861a494b79b97990dc05f0a524','','0002','微信','Wechat','menu','','','fa fa-weixin','1','0','wx',NULL,'8','1','','1467471229','0')
|
||||
/* wx_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('e4256d7b0ffc4a02906cf900322b6213','b0edc6861a494b79b97990dc05f0a524','00020001','微信会员','Member','menu','','','fa fa-user','1','0','wx.user',NULL,'1','1','','1467471292','0')
|
||||
/* wx_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('b19b23b0459a4754bf1fb8cb234450f2','e4256d7b0ffc4a02906cf900322b6213','000200010001','会员列表','List','menu','/platform/wx/user/index','data-pjax','','1','0','wx.user.list',NULL,'2','0','','1467471357','0')
|
||||
/* wx_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('4dc997fef71e4862b9db22de8e99a618','b19b23b0459a4754bf1fb8cb234450f2','0002000100010001','同步会员信息','Sync','data','','','','0','0','wx.user.list.sync',NULL,'0','0','','1467473044','0')
|
||||
/* wx_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('9f20a757a6bc40ddbb650c70debbf660','b0edc6861a494b79b97990dc05f0a524','00020002','消息管理','Message','menu','','','ti-pencil-alt','1','0','wx.msg',NULL,'3','1','','1467471415','0')
|
||||
/* wx_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('f426468abf714b1599729f8c36ebbb0d','9f20a757a6bc40ddbb650c70debbf660','000200020001','会员消息','Msg','menu','/platform/wx/msg/user','data-pjax','','1','0','wx.msg.user',NULL,'4','1','','1467471478','0')
|
||||
/* wx_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('1734e586e96941268a4c5248b593cef9','f426468abf714b1599729f8c36ebbb0d','0002000200010001','回复消息','Reply','data','','','','0','0','wx.msg.user.reply',NULL,'0','0','','1467473127','0')
|
||||
/* wx_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('6bb17a41f6394ed0a8a6faf5ff781354','9f20a757a6bc40ddbb650c70debbf660','000200020002','群发消息','Mass','menu','/platform/wx/msg/mass','data-pjax','','1','0','wx.msg.mass',NULL,'5','0','','1467471561','0')
|
||||
/* wx_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('56d0658c5a8848818ac05e8ffa5c0570','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020001','添加图文','Add','data','','','','0','0','wx.msg.mass.addNews',NULL,'0','0','','1467473338','0')
|
||||
/* wx_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('ce709456e867425297955b3c40406d7e','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020002','删除图文','Delete','data','','','','0','0','wx.msg.mass.delNews',NULL,'0','0','','1467473363','0')
|
||||
/* wx_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('3099f497480c4b1987bce3f3a26c3fb4','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020003','群发消息','Push','data','','','','0','0','wx.msg.mass.pushNews',NULL,'0','0','','1467473400','0')
|
||||
/* wx_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('4cd8e4e9519e4cff95465194fdcc8d88','b0edc6861a494b79b97990dc05f0a524','00020003','自动回复','AutoReply','menu','','','ti-back-left','1','0','wx.reply',NULL,'6','1','','1467471610','0')
|
||||
/* wx_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36fd6','4cd8e4e9519e4cff95465194fdcc8d88','000200030001','文本内容','Txt','menu','/platform/wx/reply/txt','data-pjax','','1','0','wx.reply.txt',NULL,'7','0','','1467471884','0')
|
||||
/* wx_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc2b6','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010001','添加文本','Add','data','','','','0','0','wx.reply.txt.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b9d5','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010002','修改文本','Edit','data','','','','0','0','wx.reply.txt.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('7c040dfd8db347e5956a3bc1764653dc','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010003','删除文本','Delete','data','','','','0','0','wx.reply.txt.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36f99','4cd8e4e9519e4cff95465194fdcc8d88','000200030005','图片内容','Img','menu','/platform/wx/reply/img','data-pjax','','1','0','wx.reply.img',NULL,'8','0','','1467471884','0')
|
||||
/* wx_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc216','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050001','添加图片','Add','data','','','','0','0','wx.reply.img.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b925','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050002','修改图片','Edit','data','','','','0','0','wx.reply.img.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('7c040dfd8db347e5956a3bc17646533c','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050003','删除图片','Delete','data','','','','0','0','wx.reply.img.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('17e1ee23ca1443f1bc886c2f5eb7c24b','4cd8e4e9519e4cff95465194fdcc8d88','000200030002','图文内容','News','menu','/platform/wx/reply/news','data-pjax','','1','0','wx.reply.news',NULL,'9','0','','1467471926','0')
|
||||
/* wx_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('2275cb125710414e91b617dd7c62f12c','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020001','添加图文','add','data','','','','0','0','wx.reply.news.add',NULL,'0','0','','1467473585','0')
|
||||
/* wx_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('0a972ce655cb4c84809d58668b655900','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020002','修改图文','Edit','data','','','','0','0','wx.reply.news.edit',NULL,'0','0','','1467473596','0')
|
||||
/* wx_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('fc52d5284b8f4522802383c1ef732242','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020003','删除图文','Delete','data','','','','0','0','wx.reply.news.delete',NULL,'0','0','','1467473606','0')
|
||||
/* wx_menu_26 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('2cb327ad59b140828fd26eb2a46cb948','4cd8e4e9519e4cff95465194fdcc8d88','000200030003','关注自动回复','Follow','menu','/platform/wx/reply/conf/follow','data-pjax','','1','0','wx.reply.follow',NULL,'10','0','','1467472280','0')
|
||||
/* wx_menu_27 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('dd965b2c1dfd493fb5efc7e4bcac99d4','2cb327ad59b140828fd26eb2a46cb948','0002000300030001','添加绑定','Add','data','','','','0','0','wx.reply.follow.add',NULL,'0','0','','1467474026','0')
|
||||
/* wx_menu_28 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('30a5e70a1456447ebf90b5546e9bc321','2cb327ad59b140828fd26eb2a46cb948','0002000300030002','修改绑定','Edit','data','','','','0','0','wx.reply.follow.edit',NULL,'0','0','','1467474056','0')
|
||||
/* wx_menu_29 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('2a63040409094f1e9dc535dd78ce15b7','2cb327ad59b140828fd26eb2a46cb948','0002000300030003','删除绑定','Delete','data','','','','0','0','wx.reply.follow.delete',NULL,'0','0','','1467474080','0')
|
||||
/* wx_menu_30 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('0706112ff5dc46e388064a99bcdb0561','4cd8e4e9519e4cff95465194fdcc8d88','000200030004','关键词回复','Keyword','menu','/platform/wx/reply/conf/keyword','data-pjax','','1','0','wx.reply.keyword',NULL,'11','0','','1467472362','0')
|
||||
/* wx_menu_31 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('e864c78aba63448892cbcb6a3a7f4da7','0706112ff5dc46e388064a99bcdb0561','0002000300040001','添加绑定','Add','data','','','','0','0','wx.reply.keyword.add',NULL,'0','0','','1467474113','0')
|
||||
/* wx_menu_32 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('ff6cd243a77c4ae98dacf6149c816c75','0706112ff5dc46e388064a99bcdb0561','0002000300040002','修改绑定','Edit','data','','','','0','0','wx.reply.keyword.edit',NULL,'0','0','','1467474125','0')
|
||||
/* wx_menu_33 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('733d3f35d49f45af99ca9220048583ba','0706112ff5dc46e388064a99bcdb0561','0002000300040003','删除绑定','Delete','data','','','','0','0','wx.reply.keyword.delete',NULL,'0','0','','1467474136','0')
|
||||
/* wx_menu_34 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('bcf64d623fdd4519ae345b7a08c071a1','b0edc6861a494b79b97990dc05f0a524','00020004','微信配置','Config','menu','','','fa fa-weixin','1','0','wx.conf',NULL,'12','1','','1467472498','0')
|
||||
/* wx_menu_35 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('66cc21d7ce104dd6877cbce114c59fb3','bcf64d623fdd4519ae345b7a08c071a1','000200040001','帐号配置','Account','menu','/platform/wx/conf/account','data-pjax','','1','0','wx.conf.account',NULL,'13','0','','1467472624','0')
|
||||
/* wx_menu_36 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('309dc29ad3c34408a68df8f867a5c9ff','66cc21d7ce104dd6877cbce114c59fb3','0002000400010001','添加帐号','Add','data','','','','0','0','wx.conf.account.add',NULL,'0','0','','1467474187','0')
|
||||
/* wx_menu_37 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('96554b09a2dd4f82bab7546fa59acd35','66cc21d7ce104dd6877cbce114c59fb3','0002000400010002','修改帐号','Edit','data','','','','0','0','wx.conf.account.edit',NULL,'0','0','','1467474197','0')
|
||||
/* wx_menu_38 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('d568f4c2b687404e8aec7b9edcae5767','66cc21d7ce104dd6877cbce114c59fb3','0002000400010003','删除帐号','Delete','data','','','','0','0','wx.conf.account.delete',NULL,'0','0','','1467474209','0')
|
||||
/* wx_menu_39 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('2fab774f8b6d40cb9d7e187babab2d91','bcf64d623fdd4519ae345b7a08c071a1','000200040002','菜单配置','Menu','menu','/platform/wx/conf/menu','data-pjax','','1','0','wx.conf.menu',NULL,'14','0','','1467472649','0')
|
||||
/* wx_menu_40 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('45d958ca78304f25b51f6c71cf66f6d8','2fab774f8b6d40cb9d7e187babab2d91','0002000400020001','添加菜单','Add','data','','','','0','0','wx.conf.menu.add',NULL,'0','0','','1467474283','0')
|
||||
/* wx_menu_41 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('44da90bc76a5419a841f4924333f7a66','2fab774f8b6d40cb9d7e187babab2d91','0002000400020002','修改菜单','Edit','data','','','','0','0','wx.conf.menu.edit',NULL,'0','0','','1467474294','0')
|
||||
/* wx_menu_42 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('9a9557177d334c209cf73c3817fe3b63','2fab774f8b6d40cb9d7e187babab2d91','0002000400020003','删除菜单','Delete','data','','','','0','0','wx.conf.menu.delete',NULL,'0','0','','1467474304','0')
|
||||
/* wx_menu_43 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('0a43d291e0c94ad88c8b690009279e34','2fab774f8b6d40cb9d7e187babab2d91','0002000400020004','保存排序','Save','data','','','','0','0','wx.conf.menu.sort',NULL,'0','0','','1467474314','0')
|
||||
/* wx_menu_44 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('5244f5c38eb24b918e9ad64d456daa38','2fab774f8b6d40cb9d7e187babab2d91','0002000400020005','推送到微信','Push','data','','','','0','0','wx.conf.menu.push',NULL,'0','0','','1467474330','0')
|
||||
/* wx_menu_45 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('6afc5075913d4df4b44a6476080e35a0','b0edc6861a494b79b97990dc05f0a524','00020005','模板消息','Template','menu','','','ti-notepad','1','0','wx.tpl',NULL,'50','1','','1470406797','0')
|
||||
/* wx_menu_46 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('1385ae887e5c4b8aa33fbf228be7f907','6afc5075913d4df4b44a6476080e35a0','000200050001','模板编号','Id','menu','/platform/wx/tpl/id','data-pjax','','1','0','wx.tpl.id',NULL,'51','0','','1470406854','0')
|
||||
/* wx_menu_47 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('e6b6224617b04090a76e46a4b048fb96','1385ae887e5c4b8aa33fbf228be7f907','0002000500010001','添加编号','Add','data','','','','0','0','wx.tpl.id.add',NULL,'54','0','','1470407055','0')
|
||||
/* wx_menu_48 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('3888f05aa4064f788ba7ec51c495ce7c','1385ae887e5c4b8aa33fbf228be7f907','0002000500010002','删除编号','Delete','data','','','','0','0','wx.tpl.id.delete',NULL,'55','0','','1470407068','0')
|
||||
/* wx_menu_49 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('cabbe834a7474675b899e8442b5c2604','6afc5075913d4df4b44a6476080e35a0','000200050002','模板列表','List','menu','/platform/wx/tpl/list','data-pjax','','1','0','wx.tpl.list',NULL,'52','0','','1470406883','0')
|
||||
/* wx_menu_50 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('a11163584dfe456cbfd6fb2d4b74391b','cabbe834a7474675b899e8442b5c2604','0002000500020001','获取列表','Get','data','','','','0','0','wx.tpl.list.get',NULL,'56','0','','1470407390','0')
|
||||
/* wx_menu_51 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, opBy, opAt, delFlag) values('c76a84f871d047db955dd1465c845ac1','6afc5075913d4df4b44a6476080e35a0','000200050003','发送记录','Log','menu','/platform/wx/tpl/log','data-pjax','','1','0','wx.tpl.log',NULL,'53','0','','1470406926','0')
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
-- 福利名单组织缓存字段初始化
|
||||
-- 线上执行前如字段已存在,请跳过对应 ADD COLUMN 语句。
|
||||
|
||||
ALTER TABLE welfare_list
|
||||
ADD COLUMN unionId VARCHAR(32) NULL COMMENT '所属工会ID' AFTER welfareUnitId,
|
||||
ADD COLUMN threeUnitId VARCHAR(32) NULL COMMENT '所在科室ID' AFTER unionId,
|
||||
ADD COLUMN unitId VARCHAR(32) NULL COMMENT '所属单位ID' AFTER threeUnitId,
|
||||
ADD COLUMN unionGroupId VARCHAR(32) NULL COMMENT '工会小组ID' AFTER unitId;
|
||||
|
||||
UPDATE
|
||||
welfare_list wl
|
||||
LEFT JOIN `user` u ON u.id = wl.userId
|
||||
SET
|
||||
wl.unionId = u.unionid,
|
||||
wl.threeUnitId = u.threeUnitId,
|
||||
wl.unitId = u.unitid,
|
||||
wl.unionGroupId = u.unionGroupId;
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,642 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<?mso-application progid="Excel.Sheet"?>
|
||||
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
>
|
||||
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<Author>Administrator</Author>
|
||||
<LastAuthor>11386</LastAuthor>
|
||||
<Created>2019-11-13T03:15:50Z</Created>
|
||||
<LastSaved>2019-12-15T12:17:40Z</LastSaved>
|
||||
<Company>Microsoft</Company>
|
||||
<Version>16.00</Version>
|
||||
</DocumentProperties>
|
||||
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<AllowPNG/>
|
||||
</OfficeDocumentSettings>
|
||||
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<WindowHeight>5532</WindowHeight>
|
||||
<WindowWidth>16212</WindowWidth>
|
||||
<WindowTopX>32767</WindowTopX>
|
||||
<WindowTopY>32767</WindowTopY>
|
||||
<ProtectStructure>False</ProtectStructure>
|
||||
<ProtectWindows>False</ProtectWindows>
|
||||
</ExcelWorkbook>
|
||||
<Styles>
|
||||
<Style ss:ID="Default" ss:Name="Normal">
|
||||
<
|
||||
Alignment ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
/
|
||||
>
|
||||
< Borders
|
||||
|
||||
/
|
||||
>
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"宋体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
ss:Color
|
||||
|
||||
=
|
||||
"#000000"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
< NumberFormat
|
||||
|
||||
/
|
||||
>
|
||||
< Protection
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s62">
|
||||
<
|
||||
Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s64">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
/
|
||||
>
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"方正小标宋简体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"16"
|
||||
ss:Color
|
||||
|
||||
=
|
||||
"#000000"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s66">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
/
|
||||
>
|
||||
< Borders
|
||||
|
||||
/
|
||||
>
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"黑体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
x:Family
|
||||
|
||||
=
|
||||
"Modern"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
ss:Color
|
||||
|
||||
=
|
||||
"#000000"
|
||||
ss:Bold
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s68">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Left"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
/
|
||||
>
|
||||
< Borders >
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Bottom"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
<
|
||||
|
||||
/
|
||||
Borders >
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"黑体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
x:Family
|
||||
|
||||
=
|
||||
"Modern"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
ss:Color
|
||||
|
||||
=
|
||||
"#000000"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s70">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:WrapText
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Borders >
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Bottom"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Left"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Right"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Top"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
<
|
||||
|
||||
/
|
||||
Borders >
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"宋体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
ss:Bold
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s71">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:WrapText
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Borders >
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Bottom"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Left"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Right"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Top"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
<
|
||||
|
||||
/
|
||||
Borders >
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"宋体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
<Style ss:ID="s72">
|
||||
<
|
||||
Alignment ss:Horizontal
|
||||
|
||||
=
|
||||
"Left"
|
||||
ss:Vertical
|
||||
|
||||
=
|
||||
"Center"
|
||||
ss:WrapText
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Borders >
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Bottom"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Left"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Right"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
< Border ss:Position
|
||||
|
||||
=
|
||||
"Top"
|
||||
ss:LineStyle
|
||||
|
||||
=
|
||||
"Continuous"
|
||||
ss:Weight
|
||||
|
||||
=
|
||||
"1"
|
||||
/
|
||||
>
|
||||
<
|
||||
|
||||
/
|
||||
Borders >
|
||||
< Font ss:FontName
|
||||
|
||||
=
|
||||
"宋体"
|
||||
x:CharSet
|
||||
|
||||
=
|
||||
"134"
|
||||
ss:Size
|
||||
|
||||
=
|
||||
"11"
|
||||
/
|
||||
>
|
||||
< Interior
|
||||
|
||||
/
|
||||
>
|
||||
</Style>
|
||||
</Styles>
|
||||
<Worksheet ss:Name="Sheet1">
|
||||
<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="999" x:FullColumns="1"
|
||||
x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="328.20000000000005"
|
||||
ss:DefaultRowHeight="14.55">
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="34.199999999999996"/>
|
||||
<Column ss:StyleID="s62" ss:Width="329.40000000000003"/>
|
||||
<Column ss:StyleID="s62" ss:Width="93"/>
|
||||
<Column ss:StyleID="s62" ss:Width="115.2"/>
|
||||
<Column ss:StyleID="s62" ss:Width="317.39999999999998"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="85.2"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="68.399999999999991"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="76.8"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="87.6"/>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="20.549999999999997">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s64">
|
||||
<Data ss:Type="String">${meetingName}提案承办分单位表</Data>
|
||||
</Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s66">
|
||||
<Data ss:Type="String">${unitName}</Data>
|
||||
</Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s68">
|
||||
<Data ss:Type="String">${principal}</Data>
|
||||
</Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="43.199999999999996">
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">序号</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">提案案名</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">提案人</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">承办单位</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">协办单位</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">提案人是否已签署反馈意见</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70">
|
||||
<Data ss:Type="String">备注</Data>
|
||||
</Cell>
|
||||
</Row>
|
||||
<#list pros as xx>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:StyleID="s71">
|
||||
<Data ss:Type="Number">${xx_index+1}</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s72">
|
||||
<Data ss:Type="String">${xx.proposalName!}</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s72">
|
||||
<Data ss:Type="String">${xx.username!}(${xx.unitname!})</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s72">
|
||||
<Data ss:Type="String">${xx.pruMaster!}</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s72">
|
||||
<Data ss:Type="String">${xx.pruSlave!}</Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s72">
|
||||
<Data ss:Type="String"><#if xx.feedback??>已签署<#else>未签署</#if></Data>
|
||||
</Cell>
|
||||
<Cell ss:StyleID="s70"/>
|
||||
</Row>
|
||||
</#list>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Selected/>
|
||||
<Panes>
|
||||
<Pane>
|
||||
<Number>3</Number>
|
||||
<ActiveRow>4</ActiveRow>
|
||||
<ActiveCol>7</ActiveCol>
|
||||
</Pane>
|
||||
</Panes>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet2">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet3">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Print>
|
||||
<ValidPrinterInfo/>
|
||||
<PaperSizeIndex>9</PaperSizeIndex>
|
||||
<HorizontalResolution>600</HorizontalResolution>
|
||||
<VerticalResolution>600</VerticalResolution>
|
||||
</Print>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
</Workbook>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,194 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<?mso-application progid="Excel.Sheet"?>
|
||||
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:o="urn:schemas-microsoft-com:office:office"
|
||||
xmlns:x="urn:schemas-microsoft-com:office:excel"
|
||||
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
|
||||
xmlns:html="http://www.w3.org/TR/REC-html40">
|
||||
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<Author>Administrator</Author>
|
||||
<LastAuthor>11386</LastAuthor>
|
||||
<Created>2019-11-13T03:15:50Z</Created>
|
||||
<LastSaved>2019-12-15T12:17:40Z</LastSaved>
|
||||
<Company>Microsoft</Company>
|
||||
<Version>16.00</Version>
|
||||
</DocumentProperties>
|
||||
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
|
||||
<AllowPNG/>
|
||||
</OfficeDocumentSettings>
|
||||
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<WindowHeight>5532</WindowHeight>
|
||||
<WindowWidth>16212</WindowWidth>
|
||||
<WindowTopX>32767</WindowTopX>
|
||||
<WindowTopY>32767</WindowTopY>
|
||||
<ProtectStructure>False</ProtectStructure>
|
||||
<ProtectWindows>False</ProtectWindows>
|
||||
</ExcelWorkbook>
|
||||
<Styles>
|
||||
<Style ss:ID="Default" ss:Name="Normal">
|
||||
<Alignment ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
<NumberFormat/>
|
||||
<Protection/>
|
||||
</Style>
|
||||
<Style ss:ID="s62">
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s64">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Font ss:FontName="方正小标宋简体" x:CharSet="134" ss:Size="16" ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s66">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
|
||||
<Borders/>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s68">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="黑体" x:CharSet="134" x:Family="Modern" ss:Size="11"
|
||||
ss:Color="#000000"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s70">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Bold="1"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s71">
|
||||
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
<Style ss:ID="s72">
|
||||
<Alignment ss:Horizontal="Left" ss:Vertical="Center" ss:WrapText="1"/>
|
||||
<Borders>
|
||||
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
|
||||
</Borders>
|
||||
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="11"/>
|
||||
<Interior/>
|
||||
</Style>
|
||||
</Styles>
|
||||
<Worksheet ss:Name="Sheet1">
|
||||
<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="999" x:FullColumns="1"
|
||||
x:FullRows="1" ss:StyleID="s62" ss:DefaultColumnWidth="328.20000000000005"
|
||||
ss:DefaultRowHeight="14.55">
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="34.199999999999996"/>
|
||||
<Column ss:StyleID="s62" ss:Width="329.40000000000003"/>
|
||||
<Column ss:StyleID="s62" ss:Width="93"/>
|
||||
<Column ss:StyleID="s62" ss:Width="115.2"/>
|
||||
<Column ss:StyleID="s62" ss:Width="317.39999999999998"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="85.2"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="68.399999999999991"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="76.8"/>
|
||||
<Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="87.6"/>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="20.549999999999997">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s64"><Data ss:Type="String">${meetingName}提案承办分单位表</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s66"><Data ss:Type="String">${unitName}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:MergeAcross="7" ss:StyleID="s68"><Data ss:Type="String">${principal}</Data></Cell>
|
||||
</Row>
|
||||
<Row ss:AutoFitHeight="0" ss:Height="43.199999999999996">
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">序号</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案案名</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">承办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">协办单位</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">提案人是否已签署反馈意见</Data></Cell>
|
||||
<Cell ss:StyleID="s70"><Data ss:Type="String">备注</Data></Cell>
|
||||
</Row>
|
||||
<#list pros as xx>
|
||||
<Row ss:AutoFitHeight="0">
|
||||
<Cell ss:StyleID="s71"><Data ss:Type="Number">${xx_index+1}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.proposalName!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.username!}(${xx.unitname!})</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruMaster!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String">${xx.pruSlave!}</Data></Cell>
|
||||
<Cell ss:StyleID="s72"><Data ss:Type="String"><#if xx.feedback??>已签署<#else>未签署</#if></Data></Cell>
|
||||
<Cell ss:StyleID="s70"/>
|
||||
</Row>
|
||||
</#list>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Selected/>
|
||||
<Panes>
|
||||
<Pane>
|
||||
<Number>3</Number>
|
||||
<ActiveRow>4</ActiveRow>
|
||||
<ActiveCol>7</ActiveCol>
|
||||
</Pane>
|
||||
</Panes>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet2">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
<Worksheet ss:Name="Sheet3">
|
||||
<Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
|
||||
x:FullRows="1" ss:DefaultRowHeight="14.55">
|
||||
<Row ss:AutoFitHeight="0"/>
|
||||
</Table>
|
||||
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
|
||||
<PageSetup>
|
||||
<Header x:Margin="0.3"/>
|
||||
<Footer x:Margin="0.3"/>
|
||||
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
|
||||
</PageSetup>
|
||||
<Unsynced/>
|
||||
<Print>
|
||||
<ValidPrinterInfo/>
|
||||
<PaperSizeIndex>9</PaperSizeIndex>
|
||||
<HorizontalResolution>600</HorizontalResolution>
|
||||
<VerticalResolution>600</VerticalResolution>
|
||||
</Print>
|
||||
<ProtectObjects>False</ProtectObjects>
|
||||
<ProtectScenarios>False</ProtectScenarios>
|
||||
</WorksheetOptions>
|
||||
</Worksheet>
|
||||
</Workbook>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user