Commit 0b5fb8c1 authored by zchuanzhao's avatar zchuanzhao
Browse files

增加授权机制

增加支付宝支付
parent 2b2bb991
Showing with 66 additions and 195 deletions
+66 -195
JEESNS用户许可协议
版权所有 (c)2017-2018,jeesns.cn 保留所有权利
版权所有 (c)2017-2019,jeesns.cn 保留所有权利
感谢您使用JEESNS,JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。数据库使用MYSQL,全部源代码开放,官方网址:www.jeesns.cn。
无论您处于什么目的使用本软件,均请先仔细阅读本许可协议,如果您安装、使用、修改或分发本软件,则表示您已经完全接受本许可协议的所有条款。
一、许可
......
No preview for this file type
......@@ -49,8 +49,8 @@ public class ConfigServiceImpl extends BaseServiceImpl<Config> implements IConfi
@Override
public boolean update(Map<String, String> params, HttpServletRequest request) {
for(Map.Entry entry : params.entrySet()){
if(((String)entry.getValue()).length() > 500){
throw new ParamException("只能输入255个字符");
if(((String)entry.getValue()).length() > 2000){
throw new ParamException("只能输入2000个字符");
}else {
configDao.update((String)entry.getKey(),(String)entry.getValue());
request.getServletContext().setAttribute(((String)entry.getKey()).toUpperCase(),entry.getValue());
......
......@@ -150,7 +150,7 @@ CREATE TABLE `tbl_article_comment` (
CREATE TABLE `tbl_config` (
`jkey` varchar(100) NOT NULL DEFAULT '',
`jvalue` varchar(500) DEFAULT '',
`jvalue` varchar(2000) DEFAULT '',
`description` varchar(255) DEFAULT '',
PRIMARY KEY (`jkey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
......@@ -599,6 +599,19 @@ CREATE TABLE `tbl_answer` (
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tbl_pay` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`no` varchar(32) COMMENT '订单号',
`member_id` INT(11) COMMENT '会员',
`money` double(11,2) COMMENT '充值金额',
`fee` double(11,2) DEFAULT '0' COMMENT '手续费',
`act_money` double(11,2) DEFAULT '0' COMMENT '实充金额',
`type` int(11) COMMENT '类型,1支付宝,2微信',
`status` int(11) DEFAULT '0' COMMENT '状态,0未付款,1已付款,2已退款,3已关闭',
`trade_no` varchar(32) COMMENT '支付宝交易号',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `tbl_action_log` ADD CONSTRAINT `fk_action_log_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `tbl_action_log` ADD CONSTRAINT `fk_action_log_action` FOREIGN KEY (`action_id`) REFERENCES `tbl_action` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
......@@ -645,6 +658,7 @@ VALUES
('group_alias','群组','群组别名'),
('group_apply','1','群组是否可以申请,0不可以,1可以'),
('group_apply_review','0','群组申请是否需要审核,0需要审核,1不需要审核'),
('group_follow_pay_fee','0','付费群组收取手续费'),
('member_email_valid','0','邮箱验证,0不需要验证,1需要验证'),
('member_login_open','1','会员登录开关,0关闭,1开启'),
('member_register_open','1','会员注册开关,0关闭,1开启'),
......@@ -658,11 +672,14 @@ VALUES
('site_send_email_smtp','','发送邮箱SMTP服务器地址'),
('site_seo_title','又一个JEESNS社区','SEO标题'),
('site_icp','闽ICP备12013573号','备案号'),
('site_copyright','Copyright © 2012 - 2017.','版权说明'),
('site_copyright','Copyright © 2017 - 2019.','版权说明'),
('site_tongji','<script>var _hmt = _hmt || [];(function() {var hm = document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?6e79d941db914e4195f4a839b06f2567";var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})();</script>','统计代码'),
('weibo_alias','微博','微博别名'),
('weibo_post','1','微博发布,0不可以发布,1可以发布'),
('weibo_post_maxcontent','140','微博内容字数');
('weibo_post_maxcontent','140','微博内容字数'),
('alipay_app_id','','支付宝应用ID'),
('alipay_merchant_private_key','','支付宝商户私钥'),
('alipay_public_key','','支付宝公钥');
INSERT INTO `tbl_member` (`id`, `group_id`, `name`, `email`, `phone`, `password`, `sex`, `avatar`, `create_time`, `regip`, `login_count`, `curr_login_time`, `curr_login_ip`, `last_login_time`, `last_login_ip`, `update_time`, `money`, `score`, `is_active`, `status`, `birthday`, `addprovince`, `addcity`, `addarea`, `address`, `qq`, `wechat`, `contact_phone`, `contact_email`, `website`, `introduce`, `is_admin`)
......
......@@ -17,5 +17,5 @@ INSERT INTO `tbl_config` (`jkey`, `jvalue`, `description`)
VALUES
('alipay_app_id','','支付宝应用ID'),
('alipay_merchant_private_key','','支付宝商户私钥'),
('alipay_alipay_public_key','','支付宝公钥');
('alipay_public_key','','支付宝公钥');
alter table `tbl_config` CHANGE `jvalue` `jvalue` varchar(2000);
CREATE TABLE `tbl_pay` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`no` varchar(32) COMMENT '订单号',
`member_id` INT(11) COMMENT '会员',
`money` double(11,2) COMMENT '充值金额',
`fee` double(11,2) DEFAULT '0' COMMENT '手续费',
`act_money` double(11,2) DEFAULT '0' COMMENT '实充金额',
`type` int(11) COMMENT '类型,1支付宝,2微信',
`status` int(11) DEFAULT '0' COMMENT '状态,0未付款,1已付款,2已退款,3已关闭',
`trade_no` varchar(32) COMMENT '支付宝交易号',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tbl_config` (`jkey`, `jvalue`, `description`)
VALUES
('group_follow_pay_fee','0','付费群组收取手续费');
\ No newline at end of file
('alipay_app_id','','支付宝应用ID'),
('alipay_merchant_private_key','','支付宝商户私钥'),
('alipay_public_key','','支付宝公钥'),
('group_follow_pay_fee','0','付费群组收取手续费');
package com.lxinet.jeesns.listener;
import com.lxinet.jeesns.core.consts.PluginExists;
import com.lxinet.jeesns.core.utils.Const;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.core.utils.SpringContextUtil;
......@@ -34,6 +35,10 @@ public class InitListener implements ServletContextListener {
sce.getServletContext().setAttribute("managePath",managePath);
sce.getServletContext().setAttribute("groupPath",Const.GROUP_PATH);
sce.getServletContext().setAttribute("weiboPath",Const.WEIBO_PATH);
sce.getServletContext().setAttribute("payExists",PluginExists.PAY);
sce.getServletContext().setAttribute("extExists",PluginExists.EXT);
sce.getServletContext().setAttribute("systemVersion",Const.SYSTEM_VERSION);
sce.getServletContext().setAttribute("systemName",Const.SYSTEM_NAME);
IConfigService configService = SpringContextUtil.getBean("configService");
List<Config> configList = configService.allList();
for (Config config : configList) {
......
package com.lxinet.jeesns.web.common;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.exception.JeeException;
import com.lxinet.jeesns.core.exception.ParamException;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.model.member.MemberToken;
import com.lxinet.jeesns.service.member.IMemberTokenService;
import com.lxinet.jeesns.core.utils.Const;
import com.lxinet.jeesns.core.utils.StringUtils;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
/**
* Controller基类
* Created by zchuanzhao on 2016/11/26.
*/
public class BaseController {
@Resource
protected HttpServletRequest request;
@Resource
protected HttpServletResponse response;
@Resource
protected IMemberTokenService memberTokenService;
@Resource
protected JeesnsConfig jeesnsConfig;
protected ResultModel<MemberToken> validMemberToken(){
ResultModel model = new ResultModel(-1,"非法操作");
String token = getParam("token");
if (StringUtils.isNotEmpty(token)){
MemberToken memberToken = memberTokenService.getByToken(token);
if (memberToken != null){
model.setData(memberToken);
model.setCode(0);
model.setMessage("");
}
}
return model;
}
protected String getParam(String name){
return request.getParameter(name);
}
protected String getParam(String name, String defaultValue){
String value = getParam(name);
if (null == value){
value = defaultValue;
}
return value;
}
protected int getParamToInt(String name) throws ParamException {
String value = getParam(name);
try {
return Integer.parseInt(value);
}catch (Exception e){
throw new ParamException("参数异常");
}
}
protected int getParamToInt(String name, int defaultValue){
try {
return getParamToInt(name);
} catch (ParamException paramException) {
return defaultValue;
}
}
protected double getParamToDouble(String name) throws ParamException {
String value = getParam(name);
try {
return Double.parseDouble(value);
}catch (Exception e){
throw new ParamException("参数异常");
}
}
protected double getParamToInt(String name, double defaultValue){
try {
return getParamToDouble(name);
} catch (ParamException paramException) {
return defaultValue;
}
}
protected String getErrorMessages(BindingResult result) {
StringBuffer errorMessages = new StringBuffer();
List<FieldError> list = result.getFieldErrors();
int count = 0;
for (FieldError error : list) {
errorMessages.append(error.getDefaultMessage());
count ++;
if(count < list.size()){
errorMessages.append("<br/>");
}
}
return errorMessages.toString();
}
protected String errorModel(Model model,String msg){
model.addAttribute("msg",msg);
return Const.MANAGE_ERROR_FTL_PATH;
}
/**
* 判断是否是AJAX请求
* @return true ajax
*/
protected boolean isAjaxRequest(){
String header = request.getHeader("X-Requested-With");
return "XMLHttpRequest".equalsIgnoreCase(header) ? true : false;
}
/**
* 全局捕获异常
* @param e 捕获到的异常
*/
@ExceptionHandler
public void execptionHandler(Exception e){
//ajax请求在aop中处理异常
if (!isAjaxRequest()){
try {
e.printStackTrace();
String msg = "系统异常:" + e.toString();
if (e instanceof JeeException && ((JeeException) e).getJeeMessage() != null){
msg = ((JeeException) e).getJeeMessage().getMessage();
}
msg = URLEncoder.encode(msg, "UTF-8");
String currUrl = request.getRequestURL().toString();
request.setAttribute("msg",msg);
String redirectUrl;
if (currUrl.indexOf("/" + jeesnsConfig.getManagePath() + "/") > -1){
redirectUrl = request.getContextPath() + "/" + jeesnsConfig.getManagePath() + "/error?msg="+msg;
}else {
redirectUrl = request.getContextPath() + "/error?msg="+msg;
}
response.sendRedirect(redirectUrl);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
......@@ -7,6 +7,8 @@ import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.utils.Const;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.web.common.BaseController;
import com.lxinet.jeesns.model.system.ActionLog;
import com.lxinet.jeesns.service.system.IActionLogService;
import org.springframework.stereotype.Controller;
......
......@@ -2,6 +2,7 @@ package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.annotation.UsePage;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.interceptor.UserLoginInterceptor;
......@@ -13,7 +14,6 @@ import com.lxinet.jeesns.service.question.IAnswerService;
import com.lxinet.jeesns.service.question.IQuestionService;
import com.lxinet.jeesns.service.question.IQuestionTypeService;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.web.common.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.core.enums.Messages;
import com.lxinet.jeesns.core.exception.NotFountException;
......@@ -11,7 +12,6 @@ import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.*;
import com.lxinet.jeesns.web.common.BaseController;
import com.lxinet.jeesns.model.cms.ArticleCate;
import com.lxinet.jeesns.model.cms.Article;
import com.lxinet.jeesns.service.cms.IArticleCateService;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.dto.ResultModel;
......@@ -9,7 +10,6 @@ import com.lxinet.jeesns.interceptor.UserLoginInterceptor;
import com.lxinet.jeesns.model.member.Checkin;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.service.member.ICheckinService;
import com.lxinet.jeesns.web.common.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
......
......@@ -2,6 +2,7 @@ package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.annotation.UsePage;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.PageUtil;
......@@ -12,7 +13,6 @@ import com.lxinet.jeesns.model.member.ScoreDetail;
import com.lxinet.jeesns.service.member.IFinancialService;
import com.lxinet.jeesns.service.member.IScoreDetailService;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.web.common.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.core.exception.ParamException;
import com.lxinet.jeesns.interceptor.UserLoginInterceptor;
......@@ -10,7 +11,6 @@ import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.*;
import com.lxinet.jeesns.service.group.*;
import com.lxinet.jeesns.web.common.BaseController;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.service.member.IMemberService;
import org.springframework.stereotype.Controller;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.utils.StringUtils;
import com.lxinet.jeesns.service.cms.IArticleService;
import com.lxinet.jeesns.service.common.IArchiveService;
......@@ -15,7 +16,6 @@ import com.lxinet.jeesns.service.group.IGroupFansService;
import com.lxinet.jeesns.service.group.IGroupService;
import com.lxinet.jeesns.service.group.IGroupTopicService;
import com.lxinet.jeesns.service.member.IMemberFansService;
import com.lxinet.jeesns.web.common.BaseController;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.service.member.IMemberService;
import com.lxinet.jeesns.model.system.ActionLog;
......@@ -34,7 +34,7 @@ import java.io.PrintWriter;
*/
@Controller("indexController")
@RequestMapping("/")
public class IndexController extends BaseController{
public class IndexController extends BaseController {
@Resource
private IArticleService articleService;
@Resource
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.invoke.JeesnsInvoke;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.core.exception.ParamException;
......@@ -8,14 +9,12 @@ import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.*;
import com.lxinet.jeesns.web.common.BaseController;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.service.member.IMemberService;
import com.lxinet.jeesns.service.member.IMessageService;
import com.lxinet.jeesns.model.system.ActionLog;
import com.lxinet.jeesns.service.system.IActionLogService;
import com.lxinet.jeesns.service.system.IConfigService;
//import com.lxinet.jeesns.modules.weibo.service.IWeiboService;
import com.lxinet.jeesns.utils.ConfigUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.dto.ResultModel;
......@@ -15,7 +16,6 @@ import com.lxinet.jeesns.service.member.IMemberService;
import com.lxinet.jeesns.service.picture.IPictureAlbumService;
import com.lxinet.jeesns.service.picture.IPictureCommentService;
import com.lxinet.jeesns.service.picture.IPictureService;
import com.lxinet.jeesns.web.common.BaseController;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
......
package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.exception.NotLoginException;
import com.lxinet.jeesns.core.invoke.JeesnsInvoke;
import com.lxinet.jeesns.core.utils.Const;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.core.utils.StringUtils;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.web.common.BaseController;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
......
......@@ -2,38 +2,23 @@ package com.lxinet.jeesns.web.front;
import com.lxinet.jeesns.core.annotation.Before;
import com.lxinet.jeesns.core.annotation.UsePage;
import com.lxinet.jeesns.core.controller.BaseController;
import com.lxinet.jeesns.core.dto.ResultModel;
import com.lxinet.jeesns.core.enums.Messages;
import com.lxinet.jeesns.core.exception.NotFountException;
import com.lxinet.jeesns.core.exception.ParamException;
import com.lxinet.jeesns.core.model.Page;
import com.lxinet.jeesns.core.utils.JeesnsConfig;
import com.lxinet.jeesns.core.utils.StringUtils;
import com.lxinet.jeesns.interceptor.UserLoginInterceptor;
import com.lxinet.jeesns.model.cms.Article;
import com.lxinet.jeesns.model.cms.ArticleCate;
import com.lxinet.jeesns.model.cms.ArticleComment;
import com.lxinet.jeesns.model.member.Member;
import com.lxinet.jeesns.model.question.Answer;
import com.lxinet.jeesns.model.question.Question;
import com.lxinet.jeesns.model.question.QuestionType;
import com.lxinet.jeesns.service.cms.IArticleCateService;
import com.lxinet.jeesns.service.cms.IArticleCommentService;
import com.lxinet.jeesns.service.cms.IArticleService;
import com.lxinet.jeesns.service.common.IArchiveService;
import com.lxinet.jeesns.service.question.IAnswerService;
import com.lxinet.jeesns.service.question.IQuestionService;
import com.lxinet.jeesns.service.question.IQuestionTypeService;
import com.lxinet.jeesns.utils.MemberUtil;
import com.lxinet.jeesns.web.common.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment