最近上海理工大學光電學院的拉吉研究生張逸風全家出了車禍,他媽媽住進了ICU腦袋也不好使了,他爹害也不好意思過世了,這孩子挺堅強的,媳婦被人綠了,自己也住進去了,他委託我幫他開發一個系統,幫他圓夢,因此我開始瞭如下的創作,幫大家快速入門開發,奧利給
相關技術棧
- 前端: Thymeleaf、Bootstrap、Ajax、JQuery
- 開發環境: IDEA 、SpringBoot 2.1、Maven
- 數據庫與緩存:MySQL 5.7、Redis、Guava Cache
- 三方服務:阿里云云短信服務、支付寶支付(沙箱)、百度人臉識別
- 安全框架:Spring Security
- 其他技術:API 接口限速、二級緩存
主要功能
- 登陸與註冊: 用戶名密碼、短信驗證碼、人臉識別登錄、QQ登錄
- 權限: 普通用戶、配送員、後臺管理員
- 普通用戶:下單支付、訂單查詢、意見反饋、訂單評價
- 配送員:接單、訂單管理、意見反饋、訂單評價
- 系統管理員:用戶管理、訂單管理、反饋管理
核心代碼解析
短信接口代碼解析
public SendSmsResponse sendSms(String mobile,String template_code,String sign_name,String param) throws ClientException {
// String accessKeyId =env.getProperty("aliyun.sms.accessKeyId");
// String accessKeySecret = env.getProperty("aliyun.sms.accessKeySecret");
//可自助調整超時時間
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暫不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//組裝請求對象-具體描述見控制檯-文檔部分內容
SendSmsRequest request = new SendSmsRequest();
//必填:待發送手機號
request.setPhoneNumbers(mobile);
//必填:短信簽名-可在短信控制檯中找到
request.setSignName(sign_name);
//必填:短信模板-可在短信控制檯中找到
request.setTemplateCode(template_code);
//可選:模板中的變量替換JSON串,如模板內容爲"親愛的${name},您的驗證碼爲${code}"時,此處的值爲
request.setTemplateParam(param);
//選填-上行短信擴展碼(無特殊需求用戶請忽略此字段)
//request.setSmsUpExtendCode("90997");
//可選:outId爲提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
request.setOutId("yourOutId");
//hint 此處可能會拋出異常,注意catch
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
return sendSmsResponse;
}
支付寶沙箱支付核心代碼如下
@Override
public ResponseResult batchAllotOrder(String[] ids, String courierId) {
int success = 0;
for(String orderId : ids) {
OrderInfo orderInfo = orderInfoMapper.selectById(orderId);
// 限定訂單狀態,未接單
if(orderInfo.getOrderStatus() != OrderStatusEnum.WAIT_DIST) {
continue;
}
// 訂單狀態爲支付成功、支付結束
OrderPayment payment = orderPaymentService.getById(orderId);
if(payment.getPaymentStatus() != PaymentStatusEnum.TRADE_SUCCESS && payment.getPaymentStatus() != PaymentStatusEnum.TRADE_FINISHED) {
continue;
}
orderInfo.setCourierId(courierId);
orderInfo.setOrderStatus(OrderStatusEnum.TRANSPORT);
if(this.retBool(orderInfoMapper.updateById(orderInfo))) {
success++;
}
}
int finalSuccess = success;
Map<String, Integer> count = new HashMap<String, Integer>(16) {
{
put("success", finalSuccess);
put("error", ids.length - finalSuccess);
}};
return ResponseResult.success(count);
}
學習總結
通過以上知識,我們學會代碼開發了,特別是在代碼假如創新點如:短信接口、支付寶沙箱支付、人臉識別登錄,學會了這些面試寫在簡歷中是加分項哦
源代碼開源地址
掉炸天人臉識別SpringBoot快遞代拿系統 快遞代取平臺 校園快遞代拿系統 校園快遞代取平臺