小程序端login demo
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package com.cwhelp.admin.business.controller;
|
||||
|
||||
import com.cwhelp.common.api.baidu.BaiduAipOCR;
|
||||
import com.cwhelp.common.api.baidu.entity.vatinvoice.*;
|
||||
import com.cwhelp.common.constant.ApiConst;
|
||||
import com.cwhelp.common.enums.InvoiceTypeEnum;
|
||||
import com.cwhelp.common.utils.ResultVoUtil;
|
||||
import com.cwhelp.common.vo.ResultVo;
|
||||
import com.cwhelp.component.fileUpload.FileUpload;
|
||||
import com.cwhelp.component.fileUpload.enums.UploadResultEnum;
|
||||
import com.cwhelp.devtools.generate.utils.jAngel.utils.StringUtil;
|
||||
import com.cwhelp.modules.business.domain.BssVatInvoice;
|
||||
import com.cwhelp.modules.system.domain.Upload;
|
||||
import com.cwhelp.modules.system.service.ApiBizService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by huangjc on 2019/12/1 0001.
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api_biz")
|
||||
public class BssApiBizController {
|
||||
|
||||
@Autowired
|
||||
private ApiBizService apiBizService;
|
||||
|
||||
@PostMapping("/invoiceOCR")
|
||||
@ResponseBody
|
||||
public ResultVo invoiceOCR(@RequestParam("image") MultipartFile multipartFile,
|
||||
@RequestParam("invoiceType") int invoiceType,
|
||||
@RequestParam("operator") String operator){
|
||||
|
||||
if (multipartFile.getSize() == 0){
|
||||
return new ResultVo(ApiConst.API_PARAM_BLANK_CODE, UploadResultEnum.NO_FILE_NULL.getMessage());
|
||||
}
|
||||
|
||||
if(invoiceType == 0 || StringUtil.isBlank(operator)){
|
||||
return new ResultVo(ApiConst.API_PARAM_BLANK_CODE, ApiConst.API_PARAM_BLANK_MSG);
|
||||
}
|
||||
|
||||
// 创建Upload实体对象
|
||||
Upload upload = FileUpload.getFile(multipartFile, "/images");
|
||||
try {
|
||||
FileUpload.transferTo(multipartFile, upload);
|
||||
File destFile = FileUpload.getDestFile(upload);
|
||||
|
||||
BssVatInvoice vatInvoice = new BssVatInvoice();
|
||||
if(invoiceType == InvoiceTypeEnum.TRAIN_INVOICE.getCode()){
|
||||
TrainResult trainResult = (TrainResult)BaiduAipOCR.queryBaiduVatInvoiceApi(destFile, invoiceType);
|
||||
TrainWordsResult trainWordsResult = trainResult.getWords_result();
|
||||
vatInvoice = apiBizService.getResultByTrain(trainWordsResult, destFile.getPath());
|
||||
}else if(invoiceType == InvoiceTypeEnum.ADD_VALUE_TAX_INVOICE.getCode()){
|
||||
VatInvoiceResult vatInvoiceResult = (VatInvoiceResult)BaiduAipOCR.queryBaiduVatInvoiceApi(destFile, invoiceType);
|
||||
WordsResult wordsResult = vatInvoiceResult.getWords_result();
|
||||
vatInvoice = apiBizService.getResultByAddValue(wordsResult, destFile.getPath());
|
||||
}
|
||||
|
||||
|
||||
return ResultVoUtil.success(ApiConst.API_OPT_SUCCESS_MSG, vatInvoice);
|
||||
|
||||
} catch (Exception e) {
|
||||
return new ResultVo(ApiConst.API_UPLOAD_PICTURE_FAILED_CODE, ApiConst.API_UPLOAD_PICTURE_FAILED_MSG);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.cwhelp.admin.business.controller;
|
||||
|
||||
import com.cwhelp.common.constant.ApiConst;
|
||||
import com.cwhelp.common.utils.ResultVoUtil;
|
||||
import com.cwhelp.common.vo.ResultVo;
|
||||
import com.cwhelp.component.actionLog.action.UserAction;
|
||||
import com.cwhelp.component.actionLog.annotation.ActionLog;
|
||||
import com.cwhelp.devtools.generate.utils.jAngel.utils.StringUtil;
|
||||
import com.cwhelp.modules.system.domain.Role;
|
||||
import com.cwhelp.modules.system.domain.User;
|
||||
import com.cwhelp.modules.system.service.ApiUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.Iterator;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Created by huangjc on 2019/12/1 0001.
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api")
|
||||
public class BssApiLoginController {
|
||||
|
||||
@Autowired
|
||||
private ApiUserService apiUserService;
|
||||
|
||||
@PostMapping("/me/login")
|
||||
@ResponseBody
|
||||
@ActionLog(key = UserAction.API_USER_LOGIN, action = UserAction.class)
|
||||
public ResultVo apiUserlogin(HttpServletRequest request, @RequestParam("telephone") String telephone, @RequestParam("password") String password){
|
||||
|
||||
if(StringUtil.isBlank(telephone) || StringUtil.isBlank(password)){
|
||||
return new ResultVo(ApiConst.API_PARAM_BLANK_CODE, ApiConst.API_PARAM_BLANK_MSG);
|
||||
}
|
||||
|
||||
User user = apiUserService.checkLoginPremission(telephone);
|
||||
if(user == null){
|
||||
return new ResultVo(ApiConst.API_LOGIN_PWD_ERR_CODE, ApiConst.API_LOGIN_PWD_ERR_MSG);
|
||||
}else {
|
||||
Iterator<Role> iterator = user.getRoles().iterator();
|
||||
boolean hasPremission = false;
|
||||
while(iterator.hasNext()){
|
||||
if (iterator.next().getName().contains(ApiConst.API_PREMISSION_USER_STR)) {
|
||||
hasPremission = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasPremission) {
|
||||
//暂定密码为 telephone后六位
|
||||
if(password.equals(telephone.substring(5, telephone.length()))){
|
||||
HttpSession session = request.getSession();
|
||||
String token = UUID.randomUUID().toString();
|
||||
session.setAttribute(token,user);
|
||||
return ResultVoUtil.success(ApiConst.API_LOGIN_SUCCESS_MSG, token);
|
||||
}else{
|
||||
return new ResultVo(ApiConst.API_LOGIN_PWD_ERR_CODE, ApiConst.API_LOGIN_PWD_ERR_MSG);
|
||||
}
|
||||
} else {
|
||||
return new ResultVo(ApiConst.API_NOT_PREMISSION_CODE, ApiConst.API_NOT_PREMISSION_MSG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String tel = "16621001775";
|
||||
|
||||
System.out.println(tel.substring(5, tel.length()));
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -2,10 +2,10 @@ package com.cwhelp.admin.business.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cwhelp.admin.business.validator.BssVatInvoiceCheckValid;
|
||||
import com.cwhelp.admin.business.validator.BssVatInvoiceValid;
|
||||
import com.cwhelp.common.api.baidu.BaiduAipOCR;
|
||||
import com.cwhelp.common.api.baidu.entity.vatinvoice.*;
|
||||
import com.cwhelp.common.api.baidu.entity.vatinvoice.enums.VatInvoiceTypeEnum;
|
||||
import com.cwhelp.common.enums.InvoiceTypeEnum;
|
||||
import com.cwhelp.common.enums.StatusEnum;
|
||||
import com.cwhelp.common.utils.*;
|
||||
import com.cwhelp.common.vo.ResultVo;
|
||||
@@ -186,7 +186,7 @@ public class BssVatInvoiceController {
|
||||
try {
|
||||
FileUpload.transferTo(multipartFile, upload);
|
||||
File destFile = FileUpload.getDestFile(upload);
|
||||
VatInvoiceResult vatInvoiceResult = BaiduAipOCR.queryBaiduVatInvoiceApi(destFile);
|
||||
VatInvoiceResult vatInvoiceResult = (VatInvoiceResult)BaiduAipOCR.queryBaiduVatInvoiceApi(destFile, InvoiceTypeEnum.ADD_VALUE_TAX_INVOICE.getCode());
|
||||
WordsResult wordsResult = vatInvoiceResult.getWords_result();
|
||||
BssVatInvoice vatInvoice = new BssVatInvoice();
|
||||
Long bssplatformId = ShiroUtil.getSubject().getBssPlatform().getId();
|
||||
|
||||
@@ -0,0 +1,267 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
|
||||
<link rel="stylesheet" th:href="@{/css/generate.code.css}">
|
||||
</head>
|
||||
<body>
|
||||
生产凭证
|
||||
<div class="layui-form timo-compile" style="padding-top: 0px;">
|
||||
<!-- <div class="layui-tab layui-tab-card">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">手工录入</li>
|
||||
<!– <li>查验录入</li>–>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="height: 100%;">
|
||||
<div class="layui-tab-item layui-show">
|
||||
<form th:action="@{/bss/vatInvoice/add}">
|
||||
<fieldset id="basic" class="layui-elem-field layui-form">
|
||||
<legend class="code-legend">基本信息</legend>
|
||||
<div class="layui-field-box">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">发票类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="invoiceType" name="invoiceType" lay-filter="invoiceType">
|
||||
<option value="0">增值税普通发票</option>
|
||||
<option value="1">增值税专用发票</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">发票代码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="invoiceCode" name="invoiceCode" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">发票号码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="invoiceNo" name="invoiceNo" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">校验码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="checkCode" name="checkCode" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">发票日期</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="invoiceDate" class="layui-input test-item" id="laydate" placeholder="yyyy-MM-dd" lay-key="1">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">备注</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="remark" name="remark" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">不含税金额</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="invoiceMoney" name="invoiceMoney" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">税额</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="taxAmount" name="taxAmount" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">价税合计</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="totalAmount" name="totalAmount" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required">价税合计(大写)</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="totalAmountCn" name="totalAmountCn" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<input type="hidden" id="salerTaxInfoId" name="salerTaxInfoId" />
|
||||
<input type="hidden" id="buyTaxInfoId" name="buyTaxInfoId" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">发票图片</label>
|
||||
<div class="layui-input-inline">
|
||||
<button type="button" class="layui-btn" id="vatInvoiceImg" name="invoiceImg" up-field="path" up-url="/bss/vatInvoice/upload/image">
|
||||
<i class="layui-icon"></i>上传图片
|
||||
</button>
|
||||
</div>
|
||||
<div class="upload-show"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="panel">
|
||||
<div class="panel-header">
|
||||
<div class="title">货物信息</div>
|
||||
<div class="control">
|
||||
<button class="col-add field-add layui-btn layui-btn-primary layui-btn-xs">
|
||||
<i class="fa fa-plus-circle"></i>添加
|
||||
</button>
|
||||
<button class="col-del field-del layui-btn layui-btn-primary layui-btn-xs">
|
||||
<i class="fa fa-minus-circle"></i>删除
|
||||
</button>
|
||||
</div>
|
||||
<div class="entity"><span class="bindTableEntity"></span>(<span class="bindTablePrefix"></span><span class="bindTableName"></span>)</div>
|
||||
</div>
|
||||
<div class="panel-body panel-body-entity">
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="20">#</th>
|
||||
<th width="100">货物名称</th>
|
||||
<th width="100">规格型号</th>
|
||||
<th width="100">单位</th>
|
||||
<th width="100">数量</th>
|
||||
<th width="100">单价</th>
|
||||
<th width="100">金额</th>
|
||||
<th width="100">税率</th>
|
||||
<th width="100">税额</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="entity">
|
||||
<tr>
|
||||
<td class="entity-number" th:text="1"></td>
|
||||
<td class="entity-name"><input type="text" name="name"/></td>
|
||||
<td class="entity-specification"><input type="text" name="specification"/></td>
|
||||
<td class="entity-unit"><input type="text" name="unit"/></td>
|
||||
<td class="entity-num"><input type="text" name="num"/></td>
|
||||
<td class="entity-unitPrice"><input type="text" name="unitPrice"/></td>
|
||||
<td class="entity-detailAmount"><input type="text" name="detailAmount"/></td>
|
||||
<td class="entity-taxRate"><input type="text" name="taxRate"/></td>
|
||||
<td class="entity-taxAmount"><input type="text" name="goodTaxAmount"/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="layui-form-item timo-finally">
|
||||
<button class="layui-btn ajax-submit" ><i class="fa fa-check-circle"></i> 保存</button>
|
||||
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!–<div class="layui-tab-item">
|
||||
<form th:action="@{/bss/vatInvoice/check}">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发票代码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input class="layui-input" type="text" name="invoiceCode" placeholder="请输入发票代码" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发票号码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input class="layui-input" type="text" name="invoiceNo" placeholder="请输入发票号码" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">开票时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="invoiceDate" placeholder="yyyy-MM-dd">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">开具金额(不含税)</label>
|
||||
<div class="layui-input-inline">
|
||||
<input class="layui-input" type="text" name="invoiceMoney" placeholder="请输入开具金额(不含税)" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">校验码</label>
|
||||
<div class="layui-input-inline">
|
||||
<input class="layui-input" type="text" name="checkCode" placeholder="请输入校验码" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item timo-finally">
|
||||
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
|
||||
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>–>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
|
||||
<script th:replace="/common/template :: script"></script>
|
||||
<script type="text/javascript" th:src="@{/js/plugins/jquery-3.3.1.min.js}"></script>
|
||||
<!--<script type="text/javascript" th:src="@{/lib/zTree_v3/js/jquery.ztree.core.min.js}"></script>-->
|
||||
<!--<script type="text/javascript" th:src="@{/js/timoTree.js}"></script>-->
|
||||
<script type="text/javascript">
|
||||
// 树形菜单
|
||||
// $.fn.selectTree({
|
||||
// rootTree: '顶级菜单'
|
||||
// });
|
||||
|
||||
// 验证下拉选择器
|
||||
// layui.config({
|
||||
// base: '[[@{/lib/formSelects-v4/}]]'
|
||||
// }).extend({
|
||||
// formSelects: 'formSelects-v4.min'
|
||||
// });
|
||||
|
||||
var entity = $("#entity");
|
||||
var field = null;
|
||||
// 选中字段
|
||||
entity.on("click", ".entity-number", function () {
|
||||
if(field !== null){
|
||||
$(field).css("background-color", "#FFFFFF");
|
||||
$(field).css("color", "#666666");
|
||||
}
|
||||
if(field !== this){
|
||||
$(this).css("background-color", "#5FB878");
|
||||
$(this).css("color", "#FFFFFF");
|
||||
field = this;
|
||||
}else{
|
||||
field = null;
|
||||
}
|
||||
});
|
||||
|
||||
// 添加行
|
||||
$(".col-add").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
var element = entity.children("tr:last-child").clone();
|
||||
element.find("input").val("");
|
||||
if(field == null){
|
||||
entity.append(element);
|
||||
}else {
|
||||
$(field).parent().after(element);
|
||||
}
|
||||
element.children(".entity-number").click();
|
||||
resetNumber();
|
||||
});
|
||||
|
||||
// 删除行
|
||||
$(".col-del").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
if(field != null){
|
||||
if (entity.children("tr").length == 1) {
|
||||
return;
|
||||
}
|
||||
$(field).parent().remove();
|
||||
entity.children("tr:last-child").children(".entity-number").click();
|
||||
resetNumber();
|
||||
}
|
||||
});
|
||||
|
||||
// 重置字段编号
|
||||
var resetNumber = function(){
|
||||
entity.children().each(function (key, val) {
|
||||
$(val).children(".entity-number").text(key + 1);
|
||||
});
|
||||
};
|
||||
</script>
|
||||
<!--<script type="text/javascript" th:src="@{/js/generate.code.js}"></script>-->
|
||||
<!--<script type="text/javascript" th:src="@{/js/build.js}"></script>-->
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user