profile modify command

This commit is contained in:
Sola
2015-12-15 21:26:48 +08:00
parent fa572b2d36
commit b13ec99ddf
5 changed files with 81 additions and 11 deletions

View File

@@ -2,12 +2,15 @@ package love.sola.netsupport.api;
import com.google.gson.Gson; import com.google.gson.Gson;
import love.sola.netsupport.enums.Attribute; import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.enums.ISP;
import love.sola.netsupport.pojo.User; import love.sola.netsupport.pojo.User;
import love.sola.netsupport.sql.SQLCore; import love.sola.netsupport.sql.SQLCore;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.util.Checker; import love.sola.netsupport.util.Checker;
import love.sola.netsupport.util.ParseUtil; import love.sola.netsupport.util.ParseUtil;
import love.sola.netsupport.wechat.Command; import love.sola.netsupport.wechat.Command;
import me.chanjar.weixin.common.session.WxSession; import me.chanjar.weixin.common.session.WxSession;
import org.hibernate.exception.ConstraintViolationException;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet; import javax.servlet.annotation.WebServlet;
@@ -17,6 +20,8 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import static love.sola.netsupport.util.Checker.*;
/** /**
* *********************************************** * ***********************************************
* Created by Sola on 2015/12/15. * Created by Sola on 2015/12/15.
@@ -43,18 +48,39 @@ public class ProfileModify extends HttpServlet {
} }
private Response process(HttpServletRequest request) { private Response process(HttpServletRequest request) {
WxSession session = Checker.isAuthorized(request, Command.QUERY); WxSession session = Checker.isAuthorized(request, Command.PROFILE);
if (session == null) { if (session == null) {
return new Response(Response.ResponseCode.UNAUTHORIZED); return new Response(Response.ResponseCode.UNAUTHORIZED);
} }
User u = (User) session.getAttribute(Attribute.USER); User u = (User) session.getAttribute(Attribute.USER);
if (u == null) return new Response(Response.ResponseCode.UNAUTHORIZED); if (u == null) return new Response(Response.ResponseCode.UNAUTHORIZED);
String isp = request.getParameter("isp");
String netaccount = request.getParameter("username");
String block = request.getParameter("block");
String room = request.getParameter("room");
String phone = request.getParameter("phone");
return null;
}
ISP isp = checkISP(request.getParameter("isp"));
String netAccount = checkNetAccount(request.getParameter("username"), isp);
int block = checkBlock(request.getParameter("block"));
int room = checkRoom(request.getParameter("room"), block);
long phone = checkPhoneNumber(request.getParameter("phone"));
if (netAccount != null) {
u.setIsp(isp);
u.setNetAccount(netAccount);
}
if (room != -1) {
u.setBlock(block);
u.setRoom(room);
}
if (phone != -1) {
u.setPhone(phone);
}
try {
TableUser.update(u);
} catch (ConstraintViolationException e) {
String dupKey = e.getConstraintName();
return new Response(Response.ResponseCode.REQUEST_FAILED, "Duplicated_" + dupKey.toUpperCase());
} catch (Exception e) {
e.printStackTrace();
return new Response(Response.ResponseCode.INTERNAL_ERROR, e.getMessage());
}
session.invalidate();
return new Response(Response.ResponseCode.OK);
}
} }

View File

@@ -31,7 +31,6 @@ import static love.sola.netsupport.util.Checker.*;
@WebServlet(name = "Register", urlPatterns = "/api/register", loadOnStartup = 21) @WebServlet(name = "Register", urlPatterns = "/api/register", loadOnStartup = 21)
public class Register extends HttpServlet { public class Register extends HttpServlet {
private Gson gson = SQLCore.gson; private Gson gson = SQLCore.gson;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

View File

@@ -20,6 +20,7 @@ public enum Command {
QUERY(1, QueryHandler.class), QUERY(1, QueryHandler.class),
SUBMIT(2, SubmitHandler.class), SUBMIT(2, SubmitHandler.class),
CANCEL(3, CancelHandler.class), CANCEL(3, CancelHandler.class),
PROFILE(4, ProfileHandler.class),
LOGIN(10, LoginHandler.class), LOGIN(10, LoginHandler.class),
; ;

View File

@@ -0,0 +1,42 @@
package love.sola.netsupport.wechat.handler;
import love.sola.netsupport.enums.Attribute;
import love.sola.netsupport.pojo.User;
import love.sola.netsupport.sql.TableUser;
import love.sola.netsupport.wechat.Command;
import love.sola.netsupport.wechat.WechatSession;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.session.WxSession;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.outxmlbuilder.TextBuilder;
import java.util.Map;
import static love.sola.netsupport.config.Lang.format;
/**
* ***********************************************
* Created by Sola on 2015/12/15.
* Don't modify this source without my agreement
* ***********************************************
*/
public class ProfileHandler implements WxMpMessageHandler {
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
User u = TableUser.getByWechat(wxMessage.getFromUserName());
String id = WechatSession.genId();
WxSession session = WechatSession.get(id, true);
session.setAttribute(Attribute.AUTHORIZED, Command.PROFILE);
session.setAttribute(Attribute.WECHAT, wxMessage.getFromUserName());
session.setAttribute(Attribute.USER, u);
TextBuilder out = WxMpXmlOutMessage.TEXT().fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName());
out.content(format("User_Profile_Link", id, u.getName(), u.getIsp().id, u.getNetAccount(), u.getBlock(), u.getRoom(), u.getPhone()));
return out.build();
}
}

View File

@@ -5,10 +5,11 @@ Unknown_Encrypt_Type: 'Unknown encrypt-type.'
#Command Regex #Command Regex
REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$' REGEX_QUERY: '^(?i)(Query)|(查询)|(cx)$'
REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(绑定)|(zc)$' REGEX_REGISTER: '^(?i)(Reg(ister)?)|(注册)|(绑定)|(zc)|(bd)$'
REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$' REGEX_SUBMIT: '^(?i)(Submit)|(报修)|(bx)$'
REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(撤销)|(qx)$' REGEX_CANCEL: '^(?i)(Cancel)|(取消)|(撤销)|(qx)|(cx)$'
REGEX_LOGIN: '^(?i)Authme$' REGEX_LOGIN: '^(?i)Authme$'
REGEX_PROFILE: '^(?i)(EditProfile)|(修改资料)|(xgzl)$'
#Event #Event
Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题请将投诉或建议邮件至loli@sola.love.\n\n请发送'绑定'进行微信绑定" Event_Subscribe: "欢迎使用电子科技大学中山学院网络维护科微信自助报修平台。\n如您在使用中遇到任何问题请将投诉或建议邮件至loli@sola.love.\n\n请发送'绑定'进行微信绑定"
@@ -44,6 +45,7 @@ Internal_Error: '啊哦,登录失败了哦。'
User_Register_Link: '您尚未进行微信绑定, 请<a href="http://topaz.sinaapp.com/nm/v1/reg.html?token={0}">点击这里</a>进行微信绑定操作。' User_Register_Link: '您尚未进行微信绑定, 请<a href="http://topaz.sinaapp.com/nm/v1/reg.html?token={0}">点击这里</a>进行微信绑定操作。'
User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/list.html?token={0}' User_Query_Link: 'http://topaz.sinaapp.com/nm/v1/list.html?token={0}'
User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/rrepair.html?token={0}&name={1}&isp={2}&room={3}&block={4}&phone={5,number,#}' User_Submit_Link: 'http://topaz.sinaapp.com/nm/v1/rrepair.html?token={0}&name={1}&isp={2}&room={3}&block={4}&phone={5,number,#}'
User_Profile_Link: 'http://topaz.sinaapp.com/nm/v1/profile.html?token={0}&name={1}&isp={2}&account={3}&block={4}&room={5}&phone={6,number,#}'
Result_Page: 'http://topaz.sinaapp.com/nm/v1/result.html' Result_Page: 'http://topaz.sinaapp.com/nm/v1/result.html'
Operator_Home_Page: '<a href="http://topaz.sinaapp.com/nm/v1/man/home.html?token={0}">CLICK HERE</a>' Operator_Home_Page: '<a href="http://topaz.sinaapp.com/nm/v1/man/home.html?token={0}">CLICK HERE</a>'
Operator_Login_Page: '' Operator_Login_Page: ''