最近上海理工大学光电学院的拉吉研究生张逸风全家出了车祸,他妈妈住进了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快递代拿系统 快递代取平台 校园快递代拿系统 校园快递代取平台
来源:oschina
链接:https://my.oschina.net/u/4349018/blog/4921344