From 63159098302e4b0e3508d094fcaa649755b74d2d Mon Sep 17 00:00:00 2001 From: 邓实川 <544939826@qq.com> Date: Wed, 29 Apr 2020 11:44:21 +0800 Subject: [PATCH] 登录注册、企业中心bug修复 --- pom.xml | 12 ++++++++++++ src/main/java/cn/timer/api/controller/LoginController.java | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------- src/main/java/cn/timer/api/controller/qyxx/CmsController.java | 33 ++++++++++++++------------------- src/main/java/cn/timer/api/controller/qyzx/QyzxBusinessController.java | 32 +++++++++++++++++++++++++++++--- src/main/java/cn/timer/api/utils/QRCode/LogoUtil.java | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/utils/QRCode/ZXingUtil.java | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/utils/aliyun/AliyunSMS.java | 2 +- src/main/resources/application-dev.yml | 1 + src/main/resources/application-pro.yml | 1 + src/main/resources/application-test.yml | 1 + 10 files changed, 319 insertions(+), 97 deletions(-) create mode 100644 src/main/java/cn/timer/api/utils/QRCode/LogoUtil.java create mode 100644 src/main/java/cn/timer/api/utils/QRCode/ZXingUtil.java diff --git a/pom.xml b/pom.xml index 3dc83ba..b46cf55 100644 --- a/pom.xml +++ b/pom.xml @@ -372,6 +372,18 @@ <artifactId>UserAgentUtils</artifactId> <version>1.2.4</version> </dependency> + + <!-- Zxing-二维码 --> + <dependency> + <groupId>com.google.zxing</groupId> + <artifactId>core</artifactId> + <version>3.3.0</version> + </dependency> + <dependency> + <groupId>com.google.zxing</groupId> + <artifactId>javase</artifactId> + <version>3.3.0</version> + </dependency> </dependencies> diff --git a/src/main/java/cn/timer/api/controller/LoginController.java b/src/main/java/cn/timer/api/controller/LoginController.java index 941a696..b9410c6 100644 --- a/src/main/java/cn/timer/api/controller/LoginController.java +++ b/src/main/java/cn/timer/api/controller/LoginController.java @@ -3,9 +3,12 @@ package cn.timer.api.controller; import java.io.IOException; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Stream; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -13,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -58,58 +62,87 @@ public class LoginController { @Value("${config-8timer.register-free-time}") public Integer offset; // 系统赠送时间 - /* - * @Value("${config-8timer.Aliyun.PROJECT_NAME}") private String PROJECT_NAME; - * - * @Value("${config-8timer.Aliyun.REGION_ID}") private String REGION_ID; - * - * @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") private String ACCESSKEY_ID; - * - * @Value("${config-8timer.Aliyun.SECRET}") private String SECRET; - * - * public static String host; public static String PROJECT_ID; public static - * String PROJECT_SECRET; - * - * @Value("${config-8timer.esign.host}") private String host_s; - * - * @Value("${config-8timer.esign.PROJECT_ID}") private String PROJECT_ID_s; - * - * @Value("${config-8timer.esign.PROJECT_SECRET}") private String - * PROJECT_SECRET_s; - * - * @PostConstruct public void init() { host = host_s; PROJECT_ID = PROJECT_ID_s; - * PROJECT_SECRET = PROJECT_SECRET_s; } - * - * @Value("${config-8timer.Aliyun.PROJECT_NAME}") private String endpoint; - * - * @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") private String accessKeyId; - * - * @Value("${config-8timer.Aliyun.SECRET}") private String accessKeySecret; - * - * @Value("${config-8timer.Aliyun.bucketName}") private String bucketName; - * - * @Value("${config-8timer.Aliyun.bucketName_pri}") private String - * bucketName_pri; - * - * @Value("${config-8timer.Aliyun.project_package}") private String - * project_package; - * - * @Value("${config-8timer.Aliyun.expirationTime}") private String - * expirationTime; - * - * @Value("${config-8timer.Aliyun.expirationTime_pri}") private String - * expirationTime_pri; - * - * @GetMapping(value = "/test") public Map<String, Object> test() { Map<String, - * Object> map = new HashMap<String, Object>(); map.put("1", offset); - * map.put("2", PROJECT_NAME); map.put("3", REGION_ID); map.put("4", - * ACCESSKEY_ID); map.put("5", SECRET); map.put("6", host); map.put("7", - * PROJECT_ID); map.put("8", PROJECT_SECRET); map.put("9", endpoint); - * map.put("10", accessKeyId); map.put("11", accessKeySecret); map.put("12", - * bucketName); map.put("13", bucketName_pri); map.put("14", project_package); - * map.put("15", expirationTime); map.put("16", expirationTime_pri); return map; - * } - */ + @Value("${config-8timer.register-company-max-num}") + public Integer max; + + @Value("${config-8timer.Aliyun.PROJECT_NAME}") + private String PROJECT_NAME; + + @Value("${config-8timer.Aliyun.REGION_ID}") + private String REGION_ID; + + @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") + private String ACCESSKEY_ID; + + @Value("${config-8timer.Aliyun.SECRET}") + private String SECRET; + + public static String host; + public static String PROJECT_ID; + public static String PROJECT_SECRET; + + @Value("${config-8timer.esign.host}") + private String host_s; + + @Value("${config-8timer.esign.PROJECT_ID}") + private String PROJECT_ID_s; + + @Value("${config-8timer.esign.PROJECT_SECRET}") + private String PROJECT_SECRET_s; + + @PostConstruct + public void init() { + host = host_s; + PROJECT_ID = PROJECT_ID_s; + PROJECT_SECRET = PROJECT_SECRET_s; + } + + @Value("${config-8timer.Aliyun.PROJECT_NAME}") + private String endpoint; + + @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") + private String accessKeyId; + + @Value("${config-8timer.Aliyun.SECRET}") + private String accessKeySecret; + + @Value("${config-8timer.Aliyun.bucketName}") + private String bucketName; + + @Value("${config-8timer.Aliyun.bucketName_pri}") + private String bucketName_pri; + + @Value("${config-8timer.Aliyun.project_package}") + private String project_package; + + @Value("${config-8timer.Aliyun.expirationTime}") + private String expirationTime; + + @Value("${config-8timer.Aliyun.expirationTime_pri}") + private String expirationTime_pri; + + @GetMapping(value = "/test") + public Map<String, Object> test() { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("1", offset); + map.put("2", PROJECT_NAME); + map.put("3", REGION_ID); + map.put("4", ACCESSKEY_ID); + map.put("5", SECRET); + map.put("6", host); + map.put("7", PROJECT_ID); + map.put("8", PROJECT_SECRET); + map.put("9", endpoint); + map.put("10", accessKeyId); + map.put("11", accessKeySecret); + map.put("12", bucketName); + map.put("13", bucketName_pri); + map.put("14", project_package); + map.put("15", expirationTime); + map.put("16", expirationTime_pri); + map.put("test1", max); + return map; + } @Autowired private HttpSession session; @@ -138,10 +171,14 @@ public class LoginController { public Result<String> sendCode(@RequestBody EntRegisterDto entRegisterDto) { String phone = entRegisterDto.getPhone(); + if (phone == null || StrUtil.hasBlank(phone)) { + return ResultUtil.error("请输入手机号"); + } Integer orgCode = null; if (entRegisterDto.getTc() != 4) { // 如果不是注册,则判断 - orgCode = QyzxEmpLogin.builder().build() - .selectOne(new LambdaQueryWrapper<QyzxEmpLogin>().eq(QyzxEmpLogin::getPhone, phone)).getOrgId(); + QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().build() + .selectOne(new LambdaQueryWrapper<QyzxEmpLogin>().eq(QyzxEmpLogin::getPhone, phone)); + orgCode = qyzxEmpLogin.getOrgId(); QyzxRemainingQuantity quantity = QyzxRemainingQuantity.builder().build() .selectOne(new LambdaQueryWrapper<QyzxRemainingQuantity>() .eq(QyzxRemainingQuantity::getOrgCode, orgCode).eq(QyzxRemainingQuantity::getPmid, 1) @@ -153,7 +190,7 @@ public class LoginController { date = quantity.getExpireDate(); } - if (quantity == null || remainder == null || remainder <= 0) { // 判断充了钱没 + if (remainder == null || remainder <= 0) { // 判断充了钱没 return ResultUtil.error("请充值后使用短信功能!"); } if (date != null && date.getTime() <= new Date().getTime()) { @@ -409,17 +446,16 @@ public class LoginController { * TransactionStatus status = transactionManager.getTransaction(def); */ try { - String username = entRegisterDto.getUsername(); String phone = entRegisterDto.getPhone(); - if (phone == null || phone.equals("") && username == null || username.equals("")) { - return ResultUtil.error("请输入手机号和用户名!"); - } - if (phone == null || phone.equals("")) - phone = username; - if (username == null || username.equals("")) - username = phone; + String username = entRegisterDto.getUsername(); String name = entRegisterDto.getName(); String pw = entRegisterDto.getPw(); + + if ((phone == null || StrUtil.hasBlank(phone)) || (username == null || StrUtil.hasBlank(username)) + || (name == null || StrUtil.hasBlank(name)) || (pw == null || StrUtil.hasBlank(pw))) { + return ResultUtil.error("用户信息不能为空"); + } + QyzxEmpLogin login = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); if (login != null) { @@ -427,7 +463,7 @@ public class LoginController { .eq(QyzxEmpEntAsso::getEmpNum, login.getId()) .eq(QyzxEmpEntAsso::getUserType, CommonEnum.U_TYPE_ADMIN.getType()).count(); - if (count > 0) { + if (count > max) { return ResultUtil.error("已注册过企业"); } } @@ -458,18 +494,17 @@ public class LoginController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultUtil.error("注册企业失败2"); } - - boolean b4 = YgglMainEmp.builder().orgCode(qyzxEntInfoM.getId()).empNum(qyzxEmpLogin.getId()) - .name(username).build().insert(); - if (!b4) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return ResultUtil.error("注册企业失败3"); - } - + } + + boolean b4 = YgglMainEmp.builder().orgCode(qyzxEntInfoM.getId()).empNum(login.getId()) + .name(username).build().insert(); + if (!b4) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return ResultUtil.error("注册企业失败3"); } // 员工企业关联表 - QyzxEmpEntAsso qyzxEmpEntAsso = QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(qyzxEntInfoM.getId()) + QyzxEmpEntAsso qyzxEmpEntAsso = QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(qyzxEntInfoM.getId()).status(1) .userType(CommonEnum.U_TYPE_ADMIN.getType()).build(); boolean b3 = qyzxEmpEntAsso.insert(); if (!b3) { @@ -523,7 +558,8 @@ public class LoginController { } catch (Exception e) { e.printStackTrace(); } - List<QysDto> qys = qyzxEmpLoginMapper.getQys(qyzxEmpLogin1.getId()); + List<QysDto> qys = qyzxEmpLoginMapper.getQys(qyzxEmpLogin1.getId() + ); if (qys.size() == 0) return ResultUtil.error("没有任何公司可以查看!"); qyzxEmpLogin1.setQys(qys); diff --git a/src/main/java/cn/timer/api/controller/qyxx/CmsController.java b/src/main/java/cn/timer/api/controller/qyxx/CmsController.java index 22c9012..5647229 100644 --- a/src/main/java/cn/timer/api/controller/qyxx/CmsController.java +++ b/src/main/java/cn/timer/api/controller/qyxx/CmsController.java @@ -134,9 +134,8 @@ public class CmsController { @ApiOperation(value = "分类内容获取", httpMethod = "GET", notes = "接口发布说明") public Result<Object> getType(@CurrentUser UserBean userBean) { // 分类模块信息 - List<CmsContentModular> list = CmsContentModular.builder().build().selectList( - new QueryWrapper<CmsContentModular>() - .eq("is_open", 0) //是否开启 + List<CmsContentModular> list = CmsContentModular.builder().build() + .selectList(new QueryWrapper<CmsContentModular>().eq("is_open", 0) // 是否开启 // .eq("organization_id", userBean.getOrgCode()) ); List<List<CmsContent>> o = new ArrayList<List<CmsContent>>(); @@ -160,11 +159,9 @@ public class CmsController { @GetMapping(value = "/xxfl") @ApiOperation(value = "获取分类", httpMethod = "GET", notes = "接口发布说明") public Result<Object> getxxfl(@CurrentUser UserBean userBean) { - return ResultUtil.data(CmsContentModular.builder().build().selectList( - new QueryWrapper<CmsContentModular>() + return ResultUtil.data(CmsContentModular.builder().build().selectList(new QueryWrapper<CmsContentModular>() // .eq("organization_id", userBean.getOrgCode()) - .eq("is_open", 0)), - "查询分类成功!"); + .eq("is_open", 0)), "查询分类成功!"); } /** @@ -298,16 +295,13 @@ public class CmsController { qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); - queryWrapper - .eq("organization_id", userBean.getOrgCode()) - .eq("status", 1).eq(t != null && t > -1, "modularid", t) - .eq(r != null && r > -1, "releasestate", r) - .between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "releasetime", + queryWrapper.eq("organization_id", userBean.getOrgCode()).eq("status", 1) + .eq(t != null && t > -1, "modularid", t).eq(r != null && r > -1, "releasestate", r) + .between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "releasetime", !StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00") - .and(!StrUtil.hasBlank(q), wq -> wq.like("userid", q) - .or().like("author", q).or().like("title", q)) - .orderByDesc("addeddate"); + .and(!StrUtil.hasBlank(q), wq -> wq.like("userid", q).or().like("author", q).or().like("title", q)) + .orderByDesc("addeddate"); IPage<CmsContent> cmsContentPage = CmsContent.builder().build().selectPage(page, queryWrapper); List<CmsContent> cmsContents = cmsContentPage.getRecords(); cmsContentPage.getCurrent(); @@ -355,8 +349,7 @@ public class CmsController { qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); // 查询条件 QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); - queryWrapper - .eq("organization_id", userBean.getOrgCode()) + queryWrapper.eq("organization_id", userBean.getOrgCode()) .select("id", "auditopinion", "modularid", "status", "title", "releasetime", "addeddate", "author", "summary", "releasetype", "fmtpath") .ne("status", 1).eq(t != null && t > -1, "modularid", t) @@ -492,6 +485,7 @@ public class CmsController { qyxxQueryDto.getCurrentPage() == null ? 1 : qyxxQueryDto.getCurrentPage(), qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); QueryWrapper<CmsAnnouncement> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("org_code", userBean.getOrgCode()); queryWrapper.between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "fbtime", !StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00") .and(!StrUtil.hasBlank(q), wq -> wq.like("title", q).or().like("fbnr", q)).orderByDesc("fbtime"); @@ -509,10 +503,11 @@ public class CmsController { * 查询默认轮播信息 */ @GetMapping(value = "/defaultCarousel") - @ApiOperation(value = "查询轮播信息", httpMethod = "GET", notes = "接口发布说明") + @ApiOperation(value = "查询轮播信息(默认)", httpMethod = "GET", notes = "接口发布说明") public Result<Object> defaultCarousel(@CurrentUser UserBean userBean) { return ResultUtil.data( - CmsAnnouncement.builder().build().selectOne(new QueryWrapper<CmsAnnouncement>().eq("is_default", 1)), + CmsAnnouncement.builder().build().selectOne( + new QueryWrapper<CmsAnnouncement>().eq("is_default", 1).eq("org_code", userBean.getOrgCode())), "查询成功"); } diff --git a/src/main/java/cn/timer/api/controller/qyzx/QyzxBusinessController.java b/src/main/java/cn/timer/api/controller/qyzx/QyzxBusinessController.java index da51c3e..29960c2 100644 --- a/src/main/java/cn/timer/api/controller/qyzx/QyzxBusinessController.java +++ b/src/main/java/cn/timer/api/controller/qyzx/QyzxBusinessController.java @@ -8,6 +8,7 @@ package cn.timer.api.controller.qyzx; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,9 +30,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import cn.timer.api.bean.qyzx.QyzxEntInfoM; import cn.timer.api.bean.qyzx.businessService.QyzxBuyRecord; import cn.timer.api.bean.qyzx.businessService.QyzxInvoiceData; import cn.timer.api.bean.qyzx.businessService.QyzxOrderRecord; @@ -74,7 +78,7 @@ public class QyzxBusinessController { @GetMapping(value = "/getQuantity") @ApiOperation(value = "获取套餐余量信息(数量)", httpMethod = "GET", notes = "接口发布说明") - public Result<List<Map<String, Object>>> getQuantity(@CurrentUser UserBean userBean) { + public Result<List<Map<String, Integer>>> getQuantity(@CurrentUser UserBean userBean) { List<QyzxRemainingQuantity> qyzxRemainingQuantitys1 = QyzxRemainingQuantity.builder().build() .selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().eq(QyzxRemainingQuantity::getIsDelete, 0) .eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode()) @@ -89,16 +93,38 @@ public class QyzxBusinessController { Integer sum2 = qyzxRemainingQuantitys2.stream() .collect(Collectors.summingInt(QyzxRemainingQuantity::getRemainder)); - Map<String, Object> map1 = new HashMap<String, Object>(); + Map<String, Integer> map1 = new HashMap<String, Integer>(); map1.put("message", sum1); - Map<String, Object> map2 = new HashMap<String, Object>(); + Map<String, Integer> map2 = new HashMap<String, Integer>(); map2.put("contract", sum2); + List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>(); + list.add(map1); + list.add(map2); + return ResultUtil.data(list, "获取成功"); + } + + @GetMapping(value = "/getQuantity/System") + @ApiOperation(value = "获取系统剩余天数、版本", httpMethod = "GET", notes = "接口发布说明") + public Result<Object> getSystemQuantity(@CurrentUser UserBean userBean) { + QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().build() + .selectOne(new LambdaQueryWrapper<QyzxEntInfoM>().eq(QyzxEntInfoM::getId, userBean.getOrgCode())); + Date endTime = qyzxEntInfoM.getEndTime(); + Long day = DateUtil.between(new Date(), endTime, DateUnit.DAY,false); + Integer level = qyzxEntInfoM.getLevel(); + + Map<String, Object> map1 = new HashMap<String, Object>(); + map1.put("betweenDay", day); + + Map<String, Object> map2 = new HashMap<String, Object>(); + map2.put("level", level); + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list.add(map1); list.add(map2); return ResultUtil.data(list, "获取成功"); + } @GetMapping(value = "/getPayList/Contract") diff --git a/src/main/java/cn/timer/api/utils/QRCode/LogoUtil.java b/src/main/java/cn/timer/api/utils/QRCode/LogoUtil.java new file mode 100644 index 0000000..0007598 --- /dev/null +++ b/src/main/java/cn/timer/api/utils/QRCode/LogoUtil.java @@ -0,0 +1,68 @@ +/** +* <p>Title: LogoUtil.java</p> +* <p>Description: </p> +* @author dsc +* @date 2020年4月28日 +* @version 1.0 +*/ +package cn.timer.api.utils.QRCode; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.geom.RoundRectangle2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +/** + * <p> + * Title: LogoUtil.java + * </p> + * <p> + * Description: + * </p> + * + * @author dsc + * @date 2020年4月28日 + * @version 1.0 + */ + +public class LogoUtil { + // 传入logo、二维码 ->带logo的二维码 + public static BufferedImage logoMatrix(BufferedImage matrixImage, String logo) throws IOException { + // 在二维码上画logo:产生一个 二维码画板 + Graphics2D g2 = matrixImage.createGraphics(); + + // 画logo: String->BufferedImage(内存) + BufferedImage logoImg = ImageIO.read(new File(logo)); + int height = matrixImage.getHeight(); + int width = matrixImage.getWidth(); + // 纯logo图片 + g2.drawImage(logoImg, width * 2 / 5, height * 2 / 5, width * 1 / 5, height * 1 / 5, null); + + // 产生一个 画 白色圆角正方形的 画笔 + BasicStroke stroke = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + // 将画板-画笔 关联 + g2.setStroke(stroke); + // 创建一个正方形 + RoundRectangle2D.Float round = new RoundRectangle2D.Float(width * 2 / 5, height * 2 / 5, width * 1 / 5, + height * 1 / 5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + g2.setColor(Color.WHITE); + g2.draw(round); + + // 灰色边框 + BasicStroke stroke2 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + g2.setStroke(stroke2); + // 创建一个正方形 + RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(width * 2 / 5 + 2, height * 2 / 5 + 2, + width * 1 / 5 - 4, height * 1 / 5 - 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); +// Color color = new Color(128,128,128) ; + g2.setColor(Color.GRAY); + g2.draw(round2); + + g2.dispose(); + matrixImage.flush(); + + return matrixImage; + } +} diff --git a/src/main/java/cn/timer/api/utils/QRCode/ZXingUtil.java b/src/main/java/cn/timer/api/utils/QRCode/ZXingUtil.java new file mode 100644 index 0000000..655724b --- /dev/null +++ b/src/main/java/cn/timer/api/utils/QRCode/ZXingUtil.java @@ -0,0 +1,82 @@ +/** +* <p>Title: QRCodeUtil.java</p> +* <p>Description: </p> +* @author dsc +* @date 2020年4月28日 +* @version 1.0 +*/ +package cn.timer.api.utils.QRCode; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.util.Hashtable; + +import javax.imageio.ImageIO; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;; + +/** + * <p> + * Title: QRCodeUtil.java + * </p> + * <p> + * Description: + * </p> + * + * @author dsc + * @date 2020年4月28日 + * @version 1.0 + */ + +public class ZXingUtil { + /** + * @param imgPath 保存路径 + * @param format 图片格式 + * @param content 保存内容 + * @param width 宽 + * @param height 高 + * @param logo logo图片路径 + * @throws Exception + */ + public static void encodeImg(String imgPath, String format, String content, int width, int height, String logo) + throws Exception { + Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); + // 排错率 L<M<Q<H + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); + // 编码 + hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); + // 外边距:margin + hints.put(EncodeHintType.MARGIN, 1); + /* + * content : 需要加密的 文字 BarcodeFormat.QR_CODE:要解析的类型(二维码) hints:加密涉及的一些参数:编码、排错率 + */ + BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); + // 内存中的一张图片:此时需要的图片 是二维码-> 需要一个boolean[][] ->BitMatrix + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + image.setRGB(x, y, (bitMatrix.get(x, y) ? 0 : 16777215)); // TODO + } + } + // 画logo + image = LogoUtil.logoMatrix(image, logo); + // string->file + File file = new File(imgPath); + // 生成图片 + ImageIO.write(image, format, file); + } + + /* + * public static void main(String[] args) { String imgPath = + * "C:\\Users\\Lenovo\\Desktop\\8timer.png"; String content = "8timer.cn"; + * String logo = "C:\\Users\\Lenovo\\Pictures\\Saved Pictures\\生气.jpg"; // + * 加密:文字信息->二维码 try { ZXingUtil.encodeImg(imgPath, "png", content, 430, 430, + * logo); } catch (Exception e) { e.printStackTrace(); } } + */ + +} \ No newline at end of file diff --git a/src/main/java/cn/timer/api/utils/aliyun/AliyunSMS.java b/src/main/java/cn/timer/api/utils/aliyun/AliyunSMS.java index 447f45a..7bd05e8 100644 --- a/src/main/java/cn/timer/api/utils/aliyun/AliyunSMS.java +++ b/src/main/java/cn/timer/api/utils/aliyun/AliyunSMS.java @@ -86,7 +86,7 @@ public class AliyunSMS { Date date = quantity.getExpireDate(); orderNo = quantity.getOrderNo(); - if (quantity == null || remainder == null || remainder <= 0) { + if (remainder == null || remainder <= 0) { System.err.println("企业 " + orgCode + " :套餐余额不足,请充钱"); return null; } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index da00731..acf8628 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -151,6 +151,7 @@ logging: config-8timer: register-free-time: 90 #系统赠送时间 + register-company-max-num: 100 Aliyun: # 阿里云 PROJECT_NAME: 8小时人事管家 REGION_ID: cn-shenzhen diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml index 4884c38..426b048 100644 --- a/src/main/resources/application-pro.yml +++ b/src/main/resources/application-pro.yml @@ -127,6 +127,7 @@ logging: config-8timer: register-free-time: 90 #系统赠送时间 + register-company-max-num: 100 Aliyun: # 阿里云 PROJECT_NAME: 8小时人事管家 REGION_ID: cn-shenzhen diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index b001f99..f3b837e 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -127,6 +127,7 @@ logging: config-8timer: register-free-time: 90 #系统赠送时间 + register-company-max-num: 100 Aliyun: # 阿里云 PROJECT_NAME: 8小时人事管家 REGION_ID: cn-shenzhen -- libgit2 0.26.0