From bccada7cbf7eea3c37c0243d95426d1a29d9121f Mon Sep 17 00:00:00 2001 From: yn147 <2270338776@qq.com> Date: 星期四, 23 十一月 2023 09:47:18 +0800 Subject: [PATCH] 缓存,及成绩管理 --- src/main/java/com/qxueyou/scc/sys/action/LoginController.java | 232 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 161 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java index 506ddd9..4e12b38 100644 --- a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java +++ b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject; import com.qxueyou.scc.base.util.*; import com.qxueyou.scc.wx.service.IWechatService; +import freemarker.template.utility.StringUtil; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.common.network.LoginType; import org.apache.tomcat.util.net.openssl.ciphers.Authentication; @@ -23,6 +24,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Controller; +import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.*; import com.qxueyou.scc.admin.teacher.service.ITeacherService; @@ -52,12 +54,12 @@ import io.swagger.annotations.ApiOperation; /** - * 娉ㄥ唽controller 鎻愪緵娉ㄥ唽锛岀櫥褰曪紝娉ㄩ攢鏈嶅姟 + * 娉ㄥ唽controller 鎻愪緵娉ㄥ唽锛屽綍锛屾敞閿�鏈嶅姟 * * @author 寰疯檸 * @history 2014-11-25 鏂板缓 澶忓痉铏� */ -@Api(tags="鐧诲叆鐩稿叧鎺ュ彛") +@Api(tags="鍏ョ浉鍏虫帴鍙�") @Controller @CrossOrigin(origins="*",maxAge=3600) @EnableConfigurationProperties(SccConfig.class) @@ -114,6 +116,18 @@ @Value("${wx.secret}") private String secret; + /** + * 鍏紬鍙穉ppID + */ + @Value("${wx.app.appId}") + private String wxappId; + + + /** + * 鍏紬鍙穝ecret + */ + @Value("${wx.app.secret}") + private String wxsecret; public static String UUNUMBER="QXYUUNUMBER"; @@ -121,21 +135,74 @@ IWechatService wechatService; /** - * 寰俊鐧诲綍 + * 寰俊褰� * * @param uid * @throws IOException */ - @PostMapping("/auth/wechat/login") - @ApiOperation("寰俊鐧诲綍") - public Result wechatLogin(String code) { - JSONObject sessionKeyOrOpenId = wechatService.getSessionKeyOrOpenId(code); - System.out.println(sessionKeyOrOpenId); - return new Result(true,"cg",sessionKeyOrOpenId); -// return new Result(true,"token",securityProperties.getTokenStartWith() + token,"user",user); + + @PostMapping("/wxAccountsLogin") + @ApiOperation("寰俊鍏紬鍙峰綍") + @ResponseBody + public Result wxAccountsLogin(String code) { + JSONObject gettoken = wechatService.gettoken(wxappId, wxsecret); + JSONObject OpenId = wechatService.getSessionKeyOrOpenId(code); + JSONObject user = wechatService.getUser(gettoken.get("access_token").toString(), OpenId.get("openid").toString()); + return new Result(true,"鎴愬姛",user); } - @ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "") + + @PostMapping("/wxlogin") + @ApiOperation("寰俊灏忕▼搴忓綍") + @ResponseBody + public Result wechatLogin(String code,String number) { + JSONObject sessionKeyOrOpenId = wechatService.getSessionKeyOrOpenId(code); + JSONObject gettoken = wechatService.gettoken(appId, secret); + Result phone = wechatService.getNumber(gettoken.get("access_token").toString(), number); + if(phone.getSuccess()){ + String hql = "from User where deleteFlag is false and mobilePhone = ? "; + System.out.println(phone.getData()); + List<Object> params = CollectionUtils.newList(phone.getData()); + User user = commonDAO.findUnique(hql,params, User.class); + if(user==null){ + //鏂板鐢ㄦ埛 + User user1=new User(); + user1.setMobilePhone(phone.getData().toString()); + user1.setOpenId(sessionKeyOrOpenId.get("openid").toString()); + commonDAO.save(user1); + //鏂板鍏宠仈瀛﹀憳 + String addUserSql = "from User where deleteFlag is false and mobilePhone = ? "; + List<Object> newParams = CollectionUtils.newList(phone.getData()); + User newUser = commonDAO.findUnique(addUserSql,newParams, User.class); + StuStudent stuStudent=new StuStudent(); + stuStudent.setStatus(StuStudent.STATUS_REGISTER); + stuStudent.setUserId(newUser.getUserId()); + stuStudent.setMobilePhone(newUser.getMobilePhone()); + commonDAO.save(stuStudent); + } + if(StringUtils.isEmpty(user.getOpenId())){ + user.setOpenId(sessionKeyOrOpenId.get("openid").toString()); + commonDAO.saveOrUpdate(user); + } + String studentSql = "from StuStudent where deleteFlag is false and userId = ? "; + List<Object> stuParams = CollectionUtils.newList(user.getUserId()); + StuStudent stuStudent = commonDAO.findUnique(studentSql, stuParams, StuStudent.class); + CacheParamters param = new CacheParamters(); + param.setUserId(user.getUserId()); + param.setCustomRoleValue(user.getEmail()); + param.setCustomOrgId(user.getImei()); + param.setCacheIpFlag(true); + // 缂撳瓨鍒拌姹傜嚎绋� + UserInfoWrapper wrapper = cacheUserInfo(param, null); + // 瀛樺埌redis + redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper); + return new Result(true,"鎺堟潈鎴愬姛",CollectionUtils.newObjectMap("user",user,"ClassId",stuStudent.getClassId())); + } + return phone; + } + + + @ApiOperation(value = "鍏ユ帴鍙�", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "璐﹀彿", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "password", value = "瀵嗙爜", required = true, paramType="query", dataType = "String"), @@ -150,7 +217,7 @@ // 鏌ヨ鐢ㄦ埛淇℃伅 String uuNumber=null; String uuReNumber=null; - String hql = "from User where deleteFlag is false and account = ? and password = ? "; + String hql = "from User where deleteFlag is false and account = ? and password= ?"; List<Object> params = CollectionUtils.newList(account,password); User user = commonDAO.findUnique(hql,params, User.class); if (user == null ) { @@ -180,11 +247,17 @@ } // 鎻掑叆鏃ュ織 insertLoginLog(request, user, account, "SYS-LOGIN"); + String salt = user.getSalt(); + String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes()); + //姣旇緝鐢ㄦ埛杈撳叆鐨勫瘑鐮佸姞瀵嗗悗鐨勫瓧绗︿覆鏄惁璺熸敞鍐屾椂濉啓鐨勫姞瀵嗗瘑鐮佺浉鍚� + if (!newPassword.equals(user.getPassword())) { + return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇垨缂哄皯鍑瘉"); + } // 杩斿洖 return new Result(true, "楠岃瘉鎴愬姛",CollectionUtils.newObjectMap("uuNumber",uuNumber,"uuReNumber",uuReNumber)); } - @ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "") + @ApiOperation(value = "鍏ユ帴鍙�", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "uuNumber", value = "uuNumber", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "uuReNumber", value = "uuReNumber", required = true, paramType="query", dataType = "String"), @@ -220,7 +293,7 @@ return new Result(true, "楠岃瘉鎴愬姛"); } - @ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "") + @ApiOperation(value = "鍏ユ帴鍙�", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "uuNumber", value = "uuNumber", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "uuReNumber", value = "uuReNumber", required = true, paramType="query", dataType = "String"), @@ -254,37 +327,41 @@ return new Result(true, "楠岃瘉鎴愬姛"); } - //閫�鍑虹櫥褰� 娓呴櫎session - @RequestMapping(value = "khdloginout", method = RequestMethod.POST) + //閫�鍑哄綍 娓呴櫎session + @RequestMapping(value = "release", method = RequestMethod.GET) @ResponseBody - public void khdloginout(HttpServletRequest request, HttpServletResponse response) { - System.out.println("娓呴櫎session"); - HttpSession session = request.getSession(); - redisTemplate.delete(UserInfoWrapper.SESSION_USER_INFO_KEY); - System.out.println(session.getAttribute("userId")); - System.out.println(session.getAttribute("classId")); - session.invalidate(); + public void release(HttpServletRequest request, HttpServletResponse response) { +// System.out.println("娓呴櫎session"); +// HttpSession session = request.getSession(); +// redisTemplate.delete(UserInfoWrapper.SESSION_USER_INFO_KEY); +// System.out.println(session.getAttribute("userId")); +// System.out.println(session.getAttribute("classId")); + doRelease(request, response); +// session.invalidate(); } /** - * 瀛﹀憳绔櫥褰� + * 瀛﹀憳绔綍 * * @param account 璐︽埛 * @param password 瀵嗙爜 * @return */ - @ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "") + @ApiOperation(value = "鍏ユ帴鍙�", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "璐﹀彿", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "password", value = "瀵嗙爜", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "organizationId", value = "鏈烘瀯id", required = true, paramType="query", dataType = "String"), - @ApiImplicitParam(name = "platForm", value = "鐧诲叆骞冲彴锛坅pp锛寃eb锛宷Live锛宲c锛寃eixin锛�", required = true, paramType="query", dataType = "String"), - @ApiImplicitParam(name = "logType", value = "鐧诲叆type锛坰tudy瀛﹀憳锛宼eacher鏁欏笀,鍚﹀垯涓哄悗鍙帮級", required = true, paramType="query", dataType = "String"), + @ApiImplicitParam(name = "platForm", value = "鍏ュ钩鍙帮紙app锛寃eb锛宷Live锛宲c锛寃eixin锛�", required = true, paramType="query", dataType = "String"), + @ApiImplicitParam(name = "logType", value = "鍏ype锛坰tudy瀛﹀憳锛宼eacher鏁欏笀,鍚﹀垯涓哄悗鍙帮級", required = true, paramType="query", dataType = "String"), }) @RequestMapping(value = "studentLogin", method = RequestMethod.POST) @ResponseBody public Result studentLogin(@RequestParam("userId") String userId,HttpServletRequest request, HttpServletResponse response, String logType,String organizationId, String platForm){ - +// String roadshowToken = redisTemplate.opsForValue().get("roadshowToken").toString(); +// if(roadshowToken == null){ +// return new Result(false,"楠岃瘉澶辫触"); +// } String hql = null; List<Object> params = null; hql = "from User where deleteFlag is false and userId = ?"; @@ -313,19 +390,19 @@ } /** - * 鍚庡彴鐧诲綍 + * 鍚庡彴褰� * * @param account 璐︽埛 * @param password 瀵嗙爜 * @return */ - @ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "") + @ApiOperation(value = "鍏ユ帴鍙�", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "璐﹀彿", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "password", value = "瀵嗙爜", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "organizationId", value = "鏈烘瀯id", required = true, paramType="query", dataType = "String"), - @ApiImplicitParam(name = "platForm", value = "鐧诲叆骞冲彴锛坅pp锛寃eb锛宷Live锛宲c锛寃eixin锛�", required = true, paramType="query", dataType = "String"), - @ApiImplicitParam(name = "logType", value = "鐧诲叆type锛坰tudy瀛﹀憳锛宼eacher鏁欏笀,鍚﹀垯涓哄悗鍙帮級", required = true, paramType="query", dataType = "String"), + @ApiImplicitParam(name = "platForm", value = "鍏ュ钩鍙帮紙app锛寃eb锛宷Live锛宲c锛寃eixin锛�", required = true, paramType="query", dataType = "String"), + @ApiImplicitParam(name = "logType", value = "鍏ype锛坰tudy瀛﹀憳锛宼eacher鏁欏笀,鍚﹀垯涓哄悗鍙帮級", required = true, paramType="query", dataType = "String"), }) @RequestMapping(value = "platformLogin", method = RequestMethod.POST) @ResponseBody @@ -341,17 +418,20 @@ List<Object> params = null; // boolean flag=true; if ("study".equals(logType)) { - hql = "from User where deleteFlag is false and account = ? and password = ? "; - params = CollectionUtils.newList(account, password); + hql = "from User where deleteFlag is false and account = ?"; + params = CollectionUtils.newList(account); }else if("portal".equals(logType)){ - hql = "from User where deleteFlag is false and mobilePhone = ? and password = ? "; - params = CollectionUtils.newList(account, password); + hql = "from User where deleteFlag is false and email = ?"; + params = CollectionUtils.newList(account); + }else if("zhyly".equals(logType)){ + hql = "from User where deleteFlag is false and mobilePhone = ?"; + params = CollectionUtils.newList(account); }else{ if(StringUtils.isEmpty(password)) { return new Result(false, "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖"); } - hql = "from User where deleteFlag is false and account = ? and password = ? "; - params = CollectionUtils.newList(account,password); + hql = "from User where deleteFlag is false and account = ?"; + params = CollectionUtils.newList(account); } if(StringUtils.isNotEmpty(organizationId)){ @@ -360,33 +440,39 @@ } // 鏌ヨ鐢ㄦ埛淇℃伅 - User user = commonDAO.findUnique(hql,params, User.class); + User user = commonDAO.findUnique(hql,params, User .class); if(uuNumber!=null&&!"".equals(uuNumber)&&!"null".equals(uuNumber)){ - //鐧诲綍鎴愬姛瀛樺叆user閲岋紝鍒犻櫎session閲岀殑uuNumber锛屼笅涓汉鏃犳硶浣跨敤 + //褰曟垚鍔熷瓨鍏ser閲岋紝鍒犻櫎session閲岀殑uuNumber锛屼笅涓汉鏃犳硶浣跨敤 user.setEmail(uuNumber); // request.getSession().removeAttribute("uuNumber"); } // if(uuReNumber!=null&&!"".equals(uuReNumber)&&!"null".equals(uuReNumber)){ -// //鐧诲綍鎴愬姛瀛樺叆user閲岋紝鍒犻櫎session閲岀殑uuReNumber锛屼笅涓汉鏃犳硶浣跨敤 +// //褰曟垚鍔熷瓨鍏ser閲岋紝鍒犻櫎session閲岀殑uuReNumber锛屼笅涓汉鏃犳硶浣跨敤 // user.setImei(uuReNumber); -// request.getSession().removeAttribute("uuReNumber"); +// request.getSesssion().removeAttribute("uuReNumber"); // } + if (user == null) { + return new Result(false, "鐢ㄦ埛璐︽埛涓嶅瓨鍦�"); + } // 鎻掑叆鏃ュ織 insertLoginLog(request, user, account, "SYS-LOGIN"); - - //鑰冭瘯鐧诲綍浼氭帶鍒秄lag鍙橀噺 鍏朵粬鐧诲綍涓嶄細 榛樿true - if (user == null) { - return new Result(false, "鐢ㄦ埛璐︽埛銆佸瘑鐮侀敊璇垨缂哄皯鍑瘉"); - } +// String salt = user.getSalt(); +// String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes()); +// //姣旇緝鐢ㄦ埛杈撳叆鐨勫瘑鐮佸姞瀵嗗悗鐨勫瓧绗︿覆鏄惁璺熸敞鍐屾椂濉啓鐨勫姞瀵嗗瘑鐮佺浉鍚� +// if("study".equals(logType) || "portal".equals(logType) || "adminis".equals(logType)){ +// if (!newPassword.equals(user.getPassword())) { +// return new Result(false, "瀵嗙爜閿欒"); +// } +// } // 杩斿洖鐢ㄦ埛鍩烘湰淇℃伅 return this.loginValidate(user, 1, request, response, logType, platForm, organizationId); } /** - * 鐧诲叆楠岃瘉 + * 鍏ラ獙璇� * @param user * @param type * @param request @@ -409,29 +495,33 @@ param.setIp(RequestClientUtils.getRemoteIP(request)); // 缂撳瓨鍒拌姹傜嚎绋� UserInfoWrapper wrapper = cacheUserInfo(param, null); + + System.out.println("wrapper======================"+wrapper.getUserId()); + request.getSession().setAttribute("userId",wrapper.getUserId()); + redisTemplate.opsForValue().set(wrapper.getUserId(),wrapper.getUserId()); // 瀛樺埌redis - redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper); - request.getSession().setAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper); - if ("study".equals(logType) || "portal".equals(logType)) { + redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY+wrapper.getUserId(), wrapper); + request.getSession().setAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY+wrapper.getUserId(), wrapper); + if ("study".equals(logType) || "portal".equals(logType) || "zhyly".equals(logType)) { /*if (StringUtils.isEmpty(ClientUtils.getClassId()) && user.getRoles() == null) { return new Result(false, "璇ョ敤鎴锋湭鍔犲叆浠讳綍鐝骇鎴栨湭婵�娲伙紝璇疯仈绯荤彮涓讳换"); }*/ if (StringUtils.isEmpty(user.getOrganizationId())) { - return new Result(false, "璇ョ敤鎴蜂笉灞炰簬浠讳綍鏈烘瀯锛屾棤娉曠櫥鍏�"); + return new Result(false, "璇ョ敤鎴蜂笉灞炰簬浠讳綍鏈烘瀯锛屾棤娉曞叆"); } if (StringUtils.isNoneBlank(organizationId) && !user.getOrganizationId().equals(organizationId)) { return new Result(false, "閫夋嫨鐨勬満鏋勯敊璇紝璇风‘璁�"); } - //鍒ゆ柇鏄惁涓哄鐢燂紝濡傛灉鏄鐢燂紝鍒ゆ柇鏄惁宸插喕缁撴垨绉婚櫎锛屽喕缁撴垨绉婚櫎鐨勫鐢熶笉璁╃櫥褰� + //鍒ゆ柇鏄惁涓哄鐢燂紝濡傛灉鏄鐢燂紝鍒ゆ柇鏄惁宸插喕缁撴垨绉婚櫎锛屽喕缁撴垨绉婚櫎鐨勫鐢熶笉璁╁綍 StuStudent stu = this.studentService.getStudentByUserId(user.getUserId()); if(stu!=null && (stu.getDeleteFlag() || stu.getStatus().equalsIgnoreCase(StuStudent.STATUS_DEACTIVE))){ return new Result(false, "鐢ㄦ埛璐︽埛宸茬粡琚喕缁撴垨绉婚櫎"); } /*if(StringUtils.isEmpty(wrapper.getInfo(UserInfoWrapper.INF_CLASS_ID))) { - return new Result(false, "璇ョ敤鎴锋湭鍔犲叆浠讳綍鐝骇锛屾棤娉曠櫥鍏�"); + return new Result(false, "璇ョ敤鎴锋湭鍔犲叆浠讳綍鐝骇锛屾棤娉曞叆"); }*/ // 淇濆瓨鍒皊ession涓� return new Result(true, "success", @@ -442,16 +532,16 @@ }else if("teacher".equals(logType)) { String teacherId = teacherService.getTeacherIdByUserId(user.getUserId()); if (StringUtils.isEmpty(teacherId)) { - return new Result(false, "璇ヨ处鎴蜂笉鏄�佸笀瑙掕壊锛屾棤娉曠櫥鍏�"); + return new Result(false, "璇ヨ处鎴蜂笉鏄�佸笀瑙掕壊锛屾棤娉曞叆"); } if (StringUtils.isEmpty(user.getOrganizationId())) { - return new Result(false, "璇ョ敤鎴蜂笉灞炰簬浠讳綍鏈烘瀯锛屾棤娉曠櫥鍏�"); + return new Result(false, "璇ョ敤鎴蜂笉灞炰簬浠讳綍鏈烘瀯锛屾棤娉曞叆"); } if (StringUtils.isNoneBlank(organizationId) && !user.getOrganizationId().equals(organizationId)) { return new Result(false, "閫夋嫨鐨勬満鏋勯敊璇紝璇风‘璁�"); } - //鑾峰彇鐢ㄦ埛瀵瑰簲鐨剆essionId鏄惁涓庝繚瀛樺湪redis涓殑涓�鑷达紝濡傛灉涓嶄竴鑷村垯璺宠浆鍒扮櫥褰曢〉闈� + //鑾峰彇鐢ㄦ埛瀵瑰簲鐨剆essionId鏄惁涓庝繚瀛樺湪redis涓殑涓�鑷达紝濡傛灉涓嶄竴鑷村垯璺宠浆鍒板綍椤甸潰 // stringRedisTemplate.opsForHash().put(UserInfoWrapper.REDIS_USER_ONLINE_MAP_KEY, user.getUserId(), request.getSession().getId()); return new Result(true, "success", CollectionUtils.newObjectMap("userId", user.getUserId(), "userName", user.getName(), "imgPath", @@ -478,20 +568,20 @@ } /** - * 鍚庡彴锛氶��鍑虹櫥褰�,鍚庡彴绯荤粺 - * - * @param account 璐︽埛 - * @return - */ - @ApiOperation(value = "閫�鍑哄悗鍙扮郴缁熸搷浣�", notes = "") - @RequestMapping(value = "release", method = RequestMethod.GET) - public String release(HttpServletRequest httpRequest, HttpServletResponse response) { - doRelease(httpRequest, response); - return "redirect:/web/admin/index.html#login"; - } + * 鍚庡彴锛氶��鍑哄綍,鍚庡彴绯荤粺 +// * +// * @param account 璐︽埛 +// * @return +// */ +// @ApiOperation(value = "閫�鍑哄悗鍙扮郴缁熸搷浣�", notes = "") +// @RequestMapping(value = "release", method = RequestMethod.GET) +// public String release(HttpServletRequest httpRequest, HttpServletResponse response) { +// doRelease(httpRequest, response); +// return "redirect:/web/admin/index.html#login"; +// } /** - * 鍚庡彴锛氶��鍑虹櫥褰�,鍚庡彴绯荤粺 + * 鍚庡彴锛氶��鍑哄綍,鍚庡彴绯荤粺 * * @return */ @@ -521,7 +611,7 @@ } /** - * 鎻掑叆鐧诲綍鏃ュ織 + * 鎻掑叆褰曟棩蹇� * * @param request * @param lstUser @@ -569,7 +659,7 @@ @ApiOperation(value = "淇敼瀵嗙爜", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "usedPass", value = "鑰佸瘑鐮�", required = false, paramType="query", dataType = "String"), - @ApiImplicitParam(name = "pass", value = "鏂板瘑鐮�", required = false, paramType="query", dataType = "String"), + @ApiImplicitParam(name = "pass", value = "鏂板瘑鐮�", required = false, paramType=" query", dataType = "String"), }) @RequestMapping(value = "updatePassword", method = RequestMethod.POST) @ResponseBody -- Gitblit v1.8.0