日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java开发快递物流项目(6)

發(fā)布時間:2024/3/24 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java开发快递物流项目(6) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前端系統(tǒng)(AngularJS )、用戶注冊? 短信平臺、Redis 、MQ

一.前端AngularJS

1)ng-app 在任何元素上使用,代表 angular 應(yīng)用作用域

?? ng-controller 指定控制器

?? ng-model 指定模型

?? ng-bind 或者 {{屬性名}} 進行屬性取值用于顯示

?2) 什么是雙向數(shù)據(jù)綁定?

?? 更新模型,視圖會自動更新, 更新視圖,模型會自動更新

????? 3)前端代碼

<!DOCTYPE html> <html><head><meta content="application/xhtml+xml;charset=UTF-8" http-equiv="Content-Type"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>我的xx-注冊</title><link rel="stylesheet" type="text/css" href="css/styleloginsign.css"><link rel="stylesheet" type="text/css" href="css/bootstrap/bootstrap.min.css"><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/bootstrap.min.js"></script><script type="text/javascript" src="js/self/effect.js"></script><script type="text/javascript" src="js/angular.min.js"></script><!--[if IE]><script type="text/javascript" src="js/html5.js"></script><script type="text/javascript" src="js/respond.min.js"></script><![endif]--></head><body><!--head--><div class="loginnav"><nav class="navbar navbar-default"><div class="container"><div class="navbar-header"><a class="navbar-brand" href="#"><img src="images/icon/logo.png"></a><span class="logintitle">用戶注冊</span></div></div></nav></div><div class="container"><!--mainsignup--><section class="mainsign"><div class="headnav"></div><div class="signup" ng-app="signupApp" ng-controller="signupCtrl"><div class="col-md-9 signupbox"><form id="customerForm" action="customer_regist.action" method="post" class="form col-md-6"><div class=" form-group"><label for="inputaccount" class="col-sm-3 control-label"><b>*</b>手機號</label><div class="col-sm-8"><input type="text" class="form-control" name="telephone" ng-model="telephone" id="inputaccount" placeholder="請輸入手機號"></div></div><div class="form-group"><label for="inputaccount" class="col-sm-3 control-label"><b>*</b>驗證碼</label><div class="col-sm-5"><input type="text" class="form-control" id="inputaccount" placeholder="請輸入驗證碼" name="checkcode"></div><div class="col-sm-3 song"><!-- 發(fā)送驗證碼按鈕 --><a class="btn btn-default" ng-click="getCheckCode(telephone)" ng-bind="btnMsg"></a></div></div><div class="form-group"><label for="inputaccount" class="col-sm-3 control-label"><b>*</b>密碼</label><div class="col-sm-8"><input type="password" class="form-control" id="inputaccount" placeholder="6-16位數(shù)字或英文字母" name="password"><p class="text-right grey">安全強度:*****</p></div></div><div class="form-group"><label for="inputaccount" class="col-sm-3 control-label"><b>*</b>確認(rèn)密碼</label><div class="col-sm-8"><input type="password" class="form-control" id="inputaccount" placeholder="6-16位數(shù)字或英文字母"></div></div><div class="form-group"><label for="inputaccount" class="col-sm-3 control-label"><b>*</b>綁定郵箱</label><div class="col-sm-8"><input type="email" class="form-control" id="inputemail" placeholder="請輸入需要綁定的郵箱" name="email"></div></div><div class="form-group"><div class="col-sm-offset-3 col-sm-8 song"><div class="checkbox"><label><input type="checkbox"> 查看并同意<a href="#"> 《速運快遞服務(wù)協(xié)議》</a></label></div></div></div><div class="form-group signbtn"><div class="col-sm-offset-3 col-sm-8 song"><a class="btn btn-danger" href="javascript:$('#customerForm').submit();">注冊</a></div></div></form></div><div class="col-md-3 introbox"><div class="signintro"><h5 class="redtext">注冊成為速運會員,您可以享受更多的服務(wù)!</h5><ul><li class="list-group">積分獎勵,電子運單專享特權(quán)</li><li class="list-group">快速理賠,保價優(yōu)惠</li><li class="list-group">大陸偏遠地區(qū)附加費減免</li><li class="list-group">快件路由訂閱,快件信息管理,批量下單</li></ul></div></div></div></section></div><!--foot--><footer><section class="copyright size12"><div class="container"><p class="text-center">地址:xxxxxxxx 郵編:1xxxxx 電話:400-618-xxxx 傳真:010-8xxxxx </p><p class="text-center">京ICP備08xxxxxxx號京公網(wǎng)安備2xxxxxxx</p></div></section></footer><script type="text/javascript">// 模塊定義 var signupApp = angular.module("signupApp", []);// 控制器定義signupApp.controller("signupCtrl", ["$scope","$http",function($scope,$http) {$scope.btnMsg = "發(fā)送驗證碼";var active = true;var second = 60; // 倒計時60秒var secondInterval;$scope.getCheckCode = function(telephone) {if(active == false) {return;}// 1 發(fā)送一個HTTP請求,通知服務(wù)器 發(fā)送短信給目標(biāo)用戶 var regex = /^1(3|5|7|8)\d{9}$/;if(regex.test(telephone)) {// 校驗通過$http({method: 'GET',url: 'customer_sendSms.action',params : {telephone : telephone}}).error(function(data, status, headers, config) {// 當(dāng)響應(yīng)以錯誤狀態(tài)返回時調(diào)用alert("發(fā)送短信出錯,請聯(lián)系管理員");});} else {// 校驗失敗 alert("手機號非法,請重新輸入 ");return;}// 2 顯示倒計時按鈕,60秒后,允許重新發(fā)送 active = false;secondInterval = setInterval(function() {if(second < 0) {// 倒計時結(jié)束,允許重新發(fā)送 $scope.btnMsg = "重發(fā)驗證碼";// 強制更新視圖$scope.$digest();active = true;second = 60;// 關(guān)閉定時器clearInterval(secondInterval);secondInterval = undefined;} else {// 繼續(xù)計時$scope.btnMsg = second + "秒后重發(fā)";// 強制更新視圖$scope.$digest();second--;}}, 1000);}}]);</script></body></html>


二.用戶注冊,發(fā)送短信驗證碼,郵件激活碼保存到redis,使用ActiveMQ

import static org.hamcrest.CoreMatchers.nullValue;import java.io.IOException; import java.util.Random; import java.util.concurrent.TimeUnit;import javax.annotation.Resource; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.Session; import javax.print.DocFlavor.STRING; import javax.servlet.Servlet; import javax.ws.rs.core.MediaType;import org.apache.commons.lang3.RandomStringUtils; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.stereotype.Controller;import cn.bos.utils.MailUtils; import cn.crm.domain.Customer;@ParentPackage("json-default") @Namespace("/") @Controller @Scope("prototype") public class CustomerAction extends BaseAction<Customer> {@Resource(name = "jmsQueueTemplate")private JmsTemplate jmsTemplate;@Action(value = "customer_sendSms")public String sendSms() {// 手機保存在Customer對象// 生成4位數(shù)的短信驗證碼String randomCode = RandomStringUtils.randomNumeric(4);// 將短信驗證碼保存到sessionServletActionContext.getRequest().getSession().setAttribute(model.getTelephone(), randomCode);System.out.println("生成手機驗證碼為:" + randomCode);// 編輯短信內(nèi)容final String msg = "尊敬的用戶您好,本次獲取的驗證碼為:" + randomCode + ",服務(wù)電話:99999";// 調(diào)用MQ服務(wù),發(fā)送一條信息jmsTemplate.send("bos_sms", new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {MapMessage mapMessage = session.createMapMessage();mapMessage.setString("telephone", model.getTelephone());mapMessage.setString("msg", msg);return mapMessage;}});return NONE;}// 屬性驅(qū)動private String checkCode;public void setCheckCode(String checkCode) {this.checkCode = checkCode;}@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Action(value = "customer_regist", results = {@Result(name = "success", type = "redirect", location = "signup-success.html"),@Result(name = "input", type = "redirect", location = "signup.html") })public String regist() {// 先校驗短信驗證碼,如果不通過,返回注冊頁面// 從session獲取之前生成的驗證碼String checkcodeSession = (String) ServletActionContext.getRequest().getSession().getAttribute(model.getTelephone());if (checkcodeSession == null || !checkcodeSession.equals(checkCode)) {System.out.println("短信驗證碼錯誤");return INPUT;}// 調(diào)用webService連接CRM 保存客戶的信息WebClient.create("http://localhost:9002/crm_management/services"+ "/customerService/customer").type(MediaType.APPLICATION_JSON).post(model);System.out.println("客戶注冊成功");// 發(fā)送一封激活郵件// 生成激活碼String activecode = RandomStringUtils.randomNumeric(32);redisTemplate.opsForValue().set(model.getTelephone(), activecode, 24,TimeUnit.HOURS);// 調(diào)用MailUtils發(fā)送激活郵件String content = "尊敬的客戶您好,請于24小時內(nèi),進行郵箱賬戶的綁定,點擊下面地址完成綁定:<br/><a href='"+ MailUtils.activeUrl + "?telephone=" + model.getTelephone()+ "&activecode=" + activecode + "'>xx快遞郵箱綁定地址</a>";MailUtils.sendMail("速運快遞激活郵件", content, model.getEmail());return SUCCESS;}// 屬性驅(qū)動private String activecode;public void setActivecode(String activecode) {this.activecode = activecode;}@Action("customer_activeMail")public String activeMail() throws Exception {ServletActionContext.getResponse().setContentType("text/html;charset-utf-8");// 判斷激活碼是否有效String activecodeRedis = redisTemplate.opsForValue().get(model.getTelephone());if (activecodeRedis == null|| !activecodeRedis.equals(activecodeRedis)) {// 激活碼無效ServletActionContext.getResponse().getWriter().println("激活碼無效,請登錄系統(tǒng),重新綁定郵箱");} else {// 激活碼有效// 防止重復(fù)綁定// 調(diào)用CRM webService查詢客戶信息,判斷是否已經(jīng)綁定激活碼Customer customer = WebClient.create("http://localhost:9002/crm_management/services"+ "/customerService/customer/telephone/"+ model.getTelephone()).accept(MediaType.APPLICATION_JSON).get(Customer.class);if (customer.getType() == null || customer.getType() != 1) {// 沒有綁定,進行綁定WebClient.create("http://localhost:9002/crm_management/services"+ "/customerService/customer/updatetype/"+ model.getTelephone()).get();ServletActionContext.getResponse().getWriter().println("郵箱綁定成功!");} else {// 已經(jīng)綁定過ServletActionContext.getResponse().getWriter().println("郵箱已經(jīng)綁定過,無需重復(fù)綁定");}// 刪除redis的激活碼redisTemplate.delete(model.getTelephone());}return NONE;}}




總結(jié)

以上是生活随笔為你收集整理的Java开发快递物流项目(6)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。