public NutMap _topic(Topic topic, Map<Integer, UserProfile> authors, String mdrender) { yvrService.fillTopic(topic, authors); NutMap tp = new NutMap(); tp.put("id", topic.getId()); tp.put("author_id", "" + topic.getAuthor().getUserId()); tp.put("tab", topic.getType().toString()); tp.put( "content", "false".equals(mdrender) ? topic.getContent() : Markdowns.toHtml(topic.getContent(), urlbase)); tp.put("title", StringEscapeUtils.unescapeHtml(topic.getTitle())); if (topic.getLastComment() != null) tp.put("last_reply_at", _time(topic.getLastComment().getCreateTime())); tp.put("good", topic.isGood()); tp.put("top", topic.isTop()); tp.put("reply_count", topic.getReplyCount()); tp.put("visit_count", topic.getVisitCount()); tp.put("create_at", _time(topic.getCreateTime())); UserProfile profile = topic.getAuthor(); if (profile != null) { profile.setScore(yvrService.getUserScore(topic.getUserId())); } tp.put("author", _author(profile)); return tp; }
@Aop("redis") public String accessToken(UserProfile profile) { String loginname = profile.getLoginname(); String at = jedis().hget(RKEY_USER_ACCESSTOKEN, loginname); if (at == null) { // 双向绑定 at = R.UU32(); jedis().hset(RKEY_USER_ACCESSTOKEN, loginname, at); jedis().hset(RKEY_USER_ACCESSTOKEN2, at, loginname); jedis().hset(RKEY_USER_ACCESSTOKEN3, at, "" + profile.getUserId()); } return at; }
@SuppressWarnings("serial") public void init(NutConfig nc) { NutShiro.DefaultLoginURL = "/admin/logout"; // 检查环境 if (!Charset.defaultCharset().name().equalsIgnoreCase(Encoding.UTF8)) { log.warn("This project must run in UTF-8, pls add -Dfile.encoding=UTF-8 to JAVA_OPTS"); } // 获取Ioc容器及Dao对象 Ioc ioc = nc.getIoc(); // 加载freemarker自定义标签 自定义宏路径 ioc.get(Configuration.class) .setAutoImports( new HashMap<String, String>(2) { { put("p", "/ftl/pony/index.ftl"); put("s", "/ftl/spring.ftl"); } }); ioc.get(FreeMarkerConfigurer.class, "mapTags"); Dao dao = ioc.get(Dao.class); // 为全部标注了@Table的bean建表 Daos.createTablesInPackage(dao, getClass().getPackage().getName() + ".bean", false); // 获取配置对象 PropertiesProxy conf = ioc.get(PropertiesProxy.class, "conf"); // 初始化SysLog,触发全局系统日志初始化 ioc.get(SysLogService.class); // 初始化默认根用户 User admin = dao.fetch(User.class, "admin"); if (admin == null) { UserService us = ioc.get(UserService.class); admin = us.add("admin", "123456"); } // 初始化游客用户 User guest = dao.fetch(User.class, "guest"); if (guest == null) { UserService us = ioc.get(UserService.class); guest = us.add("guest", "123456"); UserProfile profile = dao.fetch(UserProfile.class, guest.getId()); profile.setNickname("游客"); dao.update(profile, "nickname"); } // 获取NutQuartzCronJobFactory从而触发计划任务的初始化与启动 ioc.get(NutQuartzCronJobFactory.class); // 权限系统初始化 AuthorityService as = ioc.get(AuthorityService.class); as.initFormPackage("net.wendal.nutzbook"); as.checkBasicRoles(admin); // 检查一下Ehcache CacheManager 是否正常. CacheManager cacheManager = ioc.get(CacheManager.class); log.debug("Ehcache CacheManager = " + cacheManager); // CachedNutDaoExecutor.DEBUG = true; // 启用FastClass执行入口方法 Mvcs.disableFastClassInvoker = false; // 设置Markdown缓存 if (cacheManager.getCache("markdown") == null) cacheManager.addCache("markdown"); Markdowns.cache = cacheManager.getCache("markdown"); if (conf.getBoolean("cdn.enable", false) && !Strings.isBlank(conf.get("cdn.urlbase"))) { MarkdownFunction.cdnbase = conf.get("cdn.urlbase"); } }
public NutMap _author(UserProfile profile) { NutMap author = new NutMap(); author.setv("loginname", profile.getLoginname()); author.setv("avatar_url", _avatar_url(profile.getLoginname())); return author; }