diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java index 6884e8ce..cb4e6992 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java @@ -263,10 +263,25 @@ public class SysDeptController { * @Author songyunpeng * @Date 2021/1/7 * @Param [] - * @return com.elink.esua.epdc.commons.tools.utils.Result + * @return com.elink.esua.epdc.getdeptinfocommons.tools.utils.Result **/ @GetMapping("getDeptCode") public Result getDeptCodeTree(){ return sysDeptService.getDeptCodeTree(); } + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/20 9:58 + */ + @GetMapping("getdeptinfo/{typeKey}") + public Result> getDeptInfoByTypeKey(@PathVariable String typeKey) { + List data = sysDeptService.listOfDeptInfoByTypeKey(typeKey); + + return new Result>().ok(data); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java index 90688ad8..b0eca256 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java @@ -166,4 +166,14 @@ public interface SysDeptDao extends BaseDao { List selectListDeptTreeStreetDept(); + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/20 10:01 + */ + List selectListOfDeptInfoByTypeKey(String typeKey); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index 1f42e0ad..83180500 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java @@ -270,4 +270,14 @@ public interface SysDeptService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result **/ Result getDeptCodeTree(); + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/20 9:59 + */ + List listOfDeptInfoByTypeKey(String typeKey); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index 2c75e71b..035b53ee 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -957,4 +957,9 @@ public class SysDeptServiceImpl extends BaseServiceImpl listOfDeptInfoByTypeKey(String typeKey) { + return baseDao.selectListOfDeptInfoByTypeKey(typeKey); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml index b1000f4b..d712572e 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml @@ -263,4 +263,15 @@ sys_dept sd where sd.del_flag='0' and sd.ID not in(select dept_id from sys_dept_config t where t.del_flag ='0' and congig_type = 'screen_not_dept') + + diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml b/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml index 4618fdb7..4d694242 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml +++ b/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml @@ -23,6 +23,7 @@ 1.2.59 1.11.3 1.18.4 + 3.3.0 @@ -113,6 +114,11 @@ 0.7.0 compile + + com.google.zxing + core + ${zxing.version} + diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java index a3183463..01de0bba 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java @@ -46,4 +46,6 @@ public interface NumConstant { int TWO_HUNDRED = 200; + int ONE_HUNDRED_EIGHTY = 180; + } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java index 03d6db02..c2bbaf03 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java @@ -15,4 +15,14 @@ public interface PointsConstant { * 手动调整积分动作编码 */ String behaviorCodeCode ="hand_regulation_behavior"; + + /** + * 积分规则编码-工作端-扫码兑换码-积分核销 + */ + String ruleWorkScanCodePointsVerification ="rule_points_exchange"; + + /** + * 积分动作编码-工作端-扫码兑换码-积分核销 + */ + String behaviorWorkScanCodePointsVerification ="points_exchange"; } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java index ee9566ee..1999cfbb 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java @@ -43,4 +43,8 @@ public interface StrConstant { * 问号 */ String QUESTION_MARK = "?"; + + String SUFFIX_IMG_PNG = "png"; + + String DOT = "."; } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java index c486cfb7..fe2a26a3 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java @@ -20,7 +20,12 @@ public enum PointsOperationModeEnum { /** * sys-系统操作 */ - OPERATION_MODE_SYS("sys"); + OPERATION_MODE_SYS("sys"), + + /** + * 工作端-扫描兑换码-积分核销 + */ + OPERATION_MODE_WORK_JFHX("work_jfhx"); private String operationMode; diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java new file mode 100644 index 00000000..5ac74517 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java @@ -0,0 +1,73 @@ +package com.elink.esua.epdc.commons.tools.utils; + +import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import org.apache.commons.lang3.StringUtils; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * @author work@yujt.net.cn + * @date + */ +public class FileUtils { + + + /** + * File文件转为byte[] + * + * @param file + * @return byte[] + * @author work@yujt.net.cn + * @date 2019/9/19 15:56 + */ + public static byte[] fileToByteArray(File file) { + try { + //获取输入流 + FileInputStream fis = new FileInputStream(file); + //新的 byte 数组输出流,缓冲区容量1024byte + ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); + //缓存 + byte[] b = new byte[1024]; + int n; + while ((n = fis.read(b)) != NumConstant.ONE_NEG) { + bos.write(b, NumConstant.ZERO, n); + } + fis.close(); + //改变为byte[] + byte[] data = bos.toByteArray(); + bos.close(); + return data; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * BufferedImage文件转为byte[] + * + * @param bImage 图片 + * @param formatName 格式 e.g. png + * @return byte[] + * @author work@yujt.net.cn + * @date 2020/8/7 13:30 + */ + public static byte[] imageToBytes(BufferedImage bImage, String formatName) { + if (null == bImage || StringUtils.isBlank(formatName)) { + return null; + } + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + ImageIO.write(bImage, formatName, out); + } catch (IOException e) { + //log.error(e.getMessage()); + } + return out.toByteArray(); + } + +} diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java new file mode 100644 index 00000000..89f18cf6 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java @@ -0,0 +1,224 @@ +package com.elink.esua.epdc.commons.tools.utils; + +import com.elink.esua.epdc.commons.tools.constant.StrConstant; +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; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.CharEncoding; +import org.apache.commons.lang3.StringUtils; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.geom.RoundRectangle2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.util.Hashtable; + +/** + * 二维码工具类 + * + * @author yujintao + * @date 2018/11/12 14:49 + */ +@Slf4j +public class QrCodeUtils { + + /** + * 二维码尺寸 + */ + private static final int QRCODE_SIZE = 800; + + /** + * 生成二维码图片,并转为byte[] + * + * @param content 二维码内的信息 + * @param imgPath logo地址 + * @param needCompress 是否压缩logo + * @return java.awt.image.BufferedImage + * @author work@yujt.net.cn + * @date 2020/8/7 10:58 + */ + public static byte[] encodeByByte(String content, String imgPath, boolean needCompress) { + return FileUtils.imageToBytes(encodeByImage(content, imgPath, needCompress), StrConstant.SUFFIX_IMG_PNG); + } + + /** + * 生成二维码图片 + * + * @param content 二维码内的信息 + * @param imgPath logo地址 + * @param needCompress 是否压缩logo + * @return java.awt.image.BufferedImage + * @author work@yujt.net.cn + * @date 2020/8/7 10:58 + */ + public static BufferedImage encodeByImage(String content, String imgPath, boolean needCompress) { + BufferedImage image = null; + try { + image = QrCodeUtils.createImage(content, imgPath, needCompress); + } catch (Exception e) { + log.error("创建二维码失败,\n content={} \n imagePath={}", content, imgPath); + } + return image; + } + + + /** + * 生成二维码(内嵌LOGO),选择是否压缩logo,直接存入指定文件目录 + * + * @param content 内容 + * @param imgPath LOGO地址 + * @param destPath 存放目录 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception { + BufferedImage image = QrCodeUtils.createImage(content, imgPath, needCompress); + mkdirs(destPath); + ImageIO.write(image, StrConstant.SUFFIX_IMG_PNG, new File(destPath)); + } + + /** + * 生成二维码(内嵌LOGO),不压缩logo,直接存入指定目录 + * + * @param content 内容 + * @param imgPath LOGO地址 + * @param destPath 存储地址 + * @throws Exception + */ + public static void encode(String content, String imgPath, String destPath) throws Exception { + QrCodeUtils.encode(content, imgPath, destPath, false); + } + + /** + * 生成二维码,不插入logo + * + * @param content 内容 + * @param destPath 存储地址 + * @throws Exception + */ + public static void encode(String content, String destPath) throws Exception { + QrCodeUtils.encode(content, null, destPath, false); + } + + /** + * 生成二维码(内嵌LOGO) + * + * @param content 内容 + * @param imgPath LOGO地址 + * @param output 输出流 + * @param needCompress 是否压缩LOGO + * @throws Exception + */ + public static void encode(String content, String imgPath, OutputStream output, boolean needCompress) + throws Exception { + BufferedImage image = QrCodeUtils.createImage(content, imgPath, needCompress); + ImageIO.write(image, StrConstant.SUFFIX_IMG_PNG, output); + } + + /** + * 生成二维码 + * + * @param content 内容 + * @param output 输出流 + * @throws Exception + */ + public static void encode(String content, OutputStream output) throws Exception { + QrCodeUtils.encode(content, null, output, false); + } + + private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception { + Hashtable hints = new Hashtable(); + hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); + hints.put(EncodeHintType.CHARACTER_SET, CharEncoding.UTF_8); + hints.put(EncodeHintType.MARGIN, 1); + BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, + hints); + int width = bitMatrix.getWidth(); + int height = bitMatrix.getHeight(); + 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) ? 0xFF000000 : 0xFFFFFFFF); + } + } + if (StringUtils.isBlank(imgPath)) { + return image; + } + // 插入logo图片 + QrCodeUtils.insertImage(image, imgPath, needCompress); + return image; + } + + /** + * 插入LOGO + * + * @param source 二维码图片 + * @param imgPath LOGO图片地址 + * @param needCompress 是否压缩 + * @throws Exception + */ + private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception { + + URL url = new URL(imgPath); + InputStream is = url.openConnection().getInputStream(); + + Image src = ImageIO.read(is); + int width = src.getWidth(null); + int height = src.getHeight(null); + // 压缩LOGO + if (needCompress) { + // 限制最大LOGO宽度 + int maxWidth = QRCODE_SIZE / 4; + // 限制最大LOGO高度 + int maxHeight = QRCODE_SIZE / 4; + + if (width > maxWidth) { + width = maxWidth; + } + if (height > maxHeight) { + height = maxHeight; + } + Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH); + BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = tag.getGraphics(); + // 绘制缩小后的图 + g.drawImage(image, 0, 0, null); + g.dispose(); + src = image; + } + // 插入LOGO + Graphics2D graph = source.createGraphics(); + int x = (QRCODE_SIZE - width) / 2; + int y = (QRCODE_SIZE - height) / 2; + graph.drawImage(src, x, y, width, height, null); + Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6); + graph.setStroke(new BasicStroke(3f)); + graph.draw(shape); + graph.dispose(); + } + + + /** + * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常) + * + * @param destPath 存放目录 + * @author lanyuan Email: mmm333zzz520@163.com + * @date 2013-12-11 上午10:16:36 + */ + private static void mkdirs(String destPath) { + File file = new File(destPath); + // 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常) + if (!file.exists() && !file.isDirectory()) { + file.mkdirs(); + } + } + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkPointsVerificationFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkPointsVerificationFormDTO.java new file mode 100644 index 00000000..790ef714 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkPointsVerificationFormDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 积分核销表单 + * + * @author Liuchuang + * @since 2021/1/19 15:47 + */ +@Data +public class EpdcWorkPointsVerificationFormDTO implements Serializable { + private static final long serialVersionUID = 499510543162448451L; + + /** + * 用户ID + */ + @NotBlank(message = "用户ID不能为空") + private String userId; + + /** + * 积分操作类型 0-减积分,1-加积分 + */ + @NotBlank(message = "积分操作类型不能为空") + private String operationType; + + /** + * 操作积分值 + */ + @Min(value = 1, message = "操作积分值必须大于0") + private Integer points; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkVerificationLogsFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkVerificationLogsFormDTO.java new file mode 100644 index 00000000..cbb445ca --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkVerificationLogsFormDTO.java @@ -0,0 +1,54 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import java.io.Serializable; + +/** + * 工作端获取核销记录formDTO + * + * @author Liuchuang + * @since 2021/1/19 16:59 + */ +@Data +public class EpdcWorkVerificationLogsFormDTO implements Serializable { + private static final long serialVersionUID = -2519917462142795840L; + + /** + * 页码 + */ + @Min(value = 1, message = "页码必须大于0") + private Integer pageIndex; + + /** + * 页容量 + */ + @Min(value = 1, message = "页容量必须大于0") + private Integer pageSize; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 当前用户所属部门ID + */ + private Long currentUserDeptId; + + /** + * 操作方式 user-用户操作,admin-管理员操作,sys-系统操作, work_jfhx-工作端-扫描兑换码-积分核销 + */ + private String operationMode; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/PointsExchangeLogsFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/PointsExchangeLogsFormDTO.java new file mode 100644 index 00000000..bd349105 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/PointsExchangeLogsFormDTO.java @@ -0,0 +1,39 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import java.io.Serializable; + +/** + * 查询积分记录 表单 + * + * @author Liuchuang + * @since 2021/1/19 14:08 + */ +@Data +public class PointsExchangeLogsFormDTO implements Serializable { + private static final long serialVersionUID = 7021642608531330184L; + + /** + * 用户ID + */ + private String userId; + + /** + * 积分动作编码 + */ + private String behaviorCode; + + /** + * 页码 + */ + @Min(value = 1, message = "页码必须大于0") + private Integer pageIndex; + + /** + * 页容量 + */ + @Min(value = 1, message = "页容量必须大于0") + private Integer pageSize; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcVerificationLogsResultDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcVerificationLogsResultDTO.java new file mode 100644 index 00000000..3c1f1777 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcVerificationLogsResultDTO.java @@ -0,0 +1,27 @@ +package com.elink.esua.epdc.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 核销记录 + * + * @author Liuchuang + * @since 2021/1/19 17:36 + */ +@Data +public class EpdcVerificationLogsResultDTO implements Serializable { + private static final long serialVersionUID = -6338967854031776740L; + + /** + * 核销总积分 + */ + private Integer pointsTotal; + + /** + * 核销记录 + */ + private List verificationLogs; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiUserPointsVerificationController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiUserPointsVerificationController.java new file mode 100644 index 00000000..7cd54628 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiUserPointsVerificationController.java @@ -0,0 +1,67 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.common.token.dto.TokenDto; +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.PointsExchangeLogsFormDTO; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO; +import com.elink.esua.epdc.service.UserPointsVerificationService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 用户积分核销模块 + * + * @author Liuchuang + * @since 2021/1/19 10:47 + */ +@RestController +@RequestMapping("userpointsverification") +public class ApiUserPointsVerificationController { + + @Autowired + private UserPointsVerificationService userPointsVerificationService; + + /** + * 获取积分核销兑换码 + * + * @param userDetail 用户信息 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 10:54 + */ + @GetMapping("getqrcode") + public Result getQRCode(@LoginUser TokenDto userDetail) { + if (null == userDetail || StringUtils.isEmpty(userDetail.getUserId())) { + return new Result().error("获取用户信息失败,请稍后重试"); + } + + return userPointsVerificationService.getQRCode(userDetail.getUserId()); + } + + /** + * 获取用户积分记录 + * + * @param userDetail 用户信息 + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/19 14:16 + */ + @GetMapping("getpointslogs") + public Result> getPointsLogs(@LoginUser TokenDto userDetail, @RequestBody PointsExchangeLogsFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + formDto.setUserId(userDetail.getUserId()); + + return userPointsVerificationService.listOfPointsLogs(formDto); + } + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkPointsVerificationController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkPointsVerificationController.java new file mode 100644 index 00000000..8b787449 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkPointsVerificationController.java @@ -0,0 +1,86 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.SysDeptDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsVerificationCheckFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkPointsVerificationFormDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkVerificationLogsFormDTO; +import com.elink.esua.epdc.dto.result.EpdcVerificationLogsResultDTO; +import com.elink.esua.epdc.service.UserPointsVerificationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 工作端用户积分核销模块 + * + * @author Liuchuang + * @since 2021/1/19 10:47 + */ +@RestController +@RequestMapping("work/pointsverification") +public class ApiWorkPointsVerificationController { + + @Autowired + private UserPointsVerificationService userPointsVerificationService; + + /** + * 扫描兑换码获取用户信息接口 + * + * @param formDto 码ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:03 + */ + @PostMapping("getuserinfobycode") + public Result getUserInfoByCode(@RequestBody EpdcUserPointsVerificationCheckFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return userPointsVerificationService.getUserInfoByCode(formDto); + } + + /** + * 积分核销 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:52 + */ + @PostMapping("pointsverification") + public Result pointsVerification(@RequestBody EpdcWorkPointsVerificationFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return userPointsVerificationService.pointsVerification(formDto); + } + + /** + * 工作端-核销记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/19 17:00 + */ + @GetMapping("verificationlogs") + public Result verificationLogs(@RequestBody EpdcWorkVerificationLogsFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return userPointsVerificationService.listOfVerificationLogs(formDto); + } + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/20 9:58 + */ + @GetMapping("getdeptinfo/{typeKey}") + public Result> getDeptInfoByTypeKey(@PathVariable String typeKey) { + return userPointsVerificationService.listOfDeptInfoByTypeKey(typeKey); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index c1034109..963cf641 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -147,7 +147,7 @@ public interface AdminFeignClient { @PostMapping(value = "sys/user/getUserInfoByGridAndMobile", consumes = MediaType.APPLICATION_JSON_VALUE) Result getUserInfoByGridAndMobile(@RequestBody EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO); /** - * @Description 根据用户ID获取用户临时凭证 + * @Description 根据用户ID获取用户临时凭证 * @Author songyunpeng * @Date 2020/12/11 * @Param [id] @@ -167,4 +167,15 @@ public interface AdminFeignClient { */ @GetMapping("/sys/dict/listFull/{dictType}") Result> listFullDictInfo(@PathVariable("dictType") String dicType); + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/20 9:58 + */ + @GetMapping("sys/dept/getdeptinfo/{typeKey}") + Result> getDeptInfoByTypeKey(@PathVariable String typeKey); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java index 8d990cf2..6c4c7380 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java @@ -2,16 +2,19 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; +import com.elink.esua.epdc.dto.result.EpdcVerificationLogsResultDTO; import com.elink.esua.epdc.feign.fallback.PointsFeignClientFallback; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO; import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @@ -60,4 +63,37 @@ public interface PointsFeignClient { **/ @GetMapping(value = "points/epdc-app/points/getPointsRuleByBehaviorCode/{behaviorCode}", consumes = MediaType.APPLICATION_JSON_VALUE) Result getPointsRuleByBehaviorCode (@PathVariable("behaviorCode") String behaviorCode); + + /** + * 获取用户积分记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/19 14:22 + */ + @GetMapping(value = "points/epdc-app/points/getpointslogs/list", consumes = MediaType.APPLICATION_JSON_VALUE) + Result> getPointsLogs(PointsExchangeLogsFormDTO formDto); + + /** + * 积分核销 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:56 + */ + @PostMapping(value = "points/epdc-app/points/pointsVerification", consumes = MediaType.APPLICATION_JSON_VALUE) + Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto); + + /** + * 工作端-核销记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 17:43 + */ + @GetMapping(value = "points/epdc-app/points/verificationLogs/list", consumes = MediaType.APPLICATION_JSON_VALUE) + Result verificationLogs(EpdcWorkVerificationLogsFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 7592997c..039d76d8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -483,7 +483,7 @@ public interface UserFeignClient { **/ @GetMapping(value = "app-user/usersign/addConsequentSignPoints", consumes = MediaType.APPLICATION_JSON_VALUE) Result addConsequentSignPoints(UserSignDTO userSignDTO); - + /** * @Description 大屏找人接口 * @Author songyunpeng @@ -493,7 +493,7 @@ public interface UserFeignClient { **/ @PostMapping(value = "app-user/screenPopulationInfo/selectPeople", consumes = MediaType.APPLICATION_JSON_VALUE) Result> selectPeople(EpdcScreenSelectPeopleFormDTO dto); - + /** * @Description 房屋用途数据接口 * @Author songyunpeng @@ -572,4 +572,26 @@ public interface UserFeignClient { @GetMapping(value = "app-user/epdc-app/user/getUserGridIdByUserId/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE) Result getUserGridIdByUserId(@PathVariable String userId); -} \ No newline at end of file + /** + * 获取积分核销兑换码 + * + * @param userId 用户ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:08 + */ + @GetMapping(value = "app-user/epdc-app/verificationqrcode/getqrcode/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getQRCode(@PathVariable String userId); + + /** + * 扫描兑换码获取用户信息接口 + * + * @param formDto 码ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:08 + */ + @PostMapping(value = "app-user/epdc-app/verificationqrcode/getuserinfobycode", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto); + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 88ef3145..c053e453 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -85,4 +85,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> listFullDictInfo(String dicType) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listFullDictInfo", dicType); } + + @Override + public Result> getDeptInfoByTypeKey(String typeKey) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptInfoByTypeKey", typeKey); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java index db4c39eb..ed2567c0 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java @@ -3,11 +3,13 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; +import com.elink.esua.epdc.dto.result.EpdcVerificationLogsResultDTO; import com.elink.esua.epdc.feign.PointsFeignClient; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO; import com.elink.esua.epdc.pointcommons.tools.dto.PointsRuleResultDTO; import org.springframework.stereotype.Component; @@ -35,4 +37,19 @@ public class PointsFeignClientFallback implements PointsFeignClient { public Result getPointsRuleByBehaviorCode(String behaviorCode) { return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "getPointsRuleByBehaviorCode", behaviorCode); } + + @Override + public Result> getPointsLogs(PointsExchangeLogsFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "getPointsLogs", formDto); + } + + @Override + public Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "pointsVerification", formDto); + } + + @Override + public Result verificationLogs(EpdcWorkVerificationLogsFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "verificationLogs", formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index 75718166..0423fd86 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -10,6 +10,7 @@ import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.feign.UserFeignClient; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -277,4 +278,14 @@ public class UserFeignClientFallback implements UserFeignClient { public Result> gridRanking(EpdcScreenGridRankingFormDTO dto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "gridRanking", dto); } + + @Override + public Result getQRCode(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getQRCode", userId); + } + + @Override + public Result getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserInfoByCode", formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationService.java new file mode 100644 index 00000000..3ee04bc7 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationService.java @@ -0,0 +1,83 @@ +package com.elink.esua.epdc.service; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.SysDeptDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsVerificationCheckFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkPointsVerificationFormDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkVerificationLogsFormDTO; +import com.elink.esua.epdc.dto.form.PointsExchangeLogsFormDTO; +import com.elink.esua.epdc.dto.result.EpdcVerificationLogsResultDTO; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO; + +import java.util.List; + +/** + * 用户积分核销 + * + * @author Liuchuang + * @since 2021/1/19 10:48 + */ +public interface UserPointsVerificationService { + + /** + * 获取积分核销兑换码 + * + * @param userId 用户ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 10:57 + */ + Result getQRCode(String userId); + + /** + * 获取用户积分记录 + * + * @param formDto 表单 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/19 14:17 + */ + Result> listOfPointsLogs(PointsExchangeLogsFormDTO formDto); + + /** + * 扫描兑换码获取用户信息接口 + * + * @param formDto 码ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:04 + */ + Result getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto); + + /** + * 积分核销 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:53 + */ + Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto); + + /** + * 工作端-核销记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 17:41 + */ + Result listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto); + + /** + * 根据机构类型获取机构数据 + * + * @param typeKey 机构类型 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/20 9:59 + */ + Result> listOfDeptInfoByTypeKey(String typeKey); +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationServiceImpl.java new file mode 100644 index 00000000..5600e72d --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationServiceImpl.java @@ -0,0 +1,71 @@ +package com.elink.esua.epdc.service.impl; + +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.SysDeptDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsVerificationCheckFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkPointsVerificationFormDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkVerificationLogsFormDTO; +import com.elink.esua.epdc.dto.form.PointsExchangeLogsFormDTO; +import com.elink.esua.epdc.dto.result.EpdcVerificationLogsResultDTO; +import com.elink.esua.epdc.feign.AdminFeignClient; +import com.elink.esua.epdc.feign.PointsFeignClient; +import com.elink.esua.epdc.feign.UserFeignClient; +import com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO; +import com.elink.esua.epdc.service.UserPointsVerificationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户积分核销 + * + * @author Liuchuang + * @since 2021/1/19 10:49 + */ +@Service +public class UserPointsVerificationServiceImpl implements UserPointsVerificationService { + + @Autowired + private UserFeignClient userFeignClient; + + @Autowired + private PointsFeignClient pointsFeignClient; + + @Autowired + private AdminFeignClient adminFeignClient; + + @Override + public Result getQRCode(String userId) { + return userFeignClient.getQRCode(userId); + } + + @Override + public Result> listOfPointsLogs(PointsExchangeLogsFormDTO formDto) { + return pointsFeignClient.getPointsLogs(formDto); + } + + @Override + public Result getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto) { + return userFeignClient.getUserInfoByCode(formDto); + } + + @Override + public Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto) { + return pointsFeignClient.pointsVerification(formDto); + } + + @Override + public Result listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto) { + return pointsFeignClient.verificationLogs(formDto); + } + + @Override + public Result> listOfDeptInfoByTypeKey(String typeKey) { + return adminFeignClient.getDeptInfoByTypeKey(typeKey); + } +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/PointsLogsDTO.java b/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/PointsLogsDTO.java index 1a8a1679..c9615a6a 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/PointsLogsDTO.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/PointsLogsDTO.java @@ -163,4 +163,17 @@ public class PointsLogsDTO implements Serializable { */ private String allDeptNames; -} \ No newline at end of file + /** + * 操作人所属部门名称 + */ + private String createdDept; + /** + * 操作人所属部门ID + */ + private String createdDeptId; + /** + * 操作人所属部门所有部门ID + */ + private String createdDeptAllDeptIds; + +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java index c83694d0..11537a36 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java @@ -2,11 +2,10 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; -import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; -import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; -import com.elink.esua.epdc.dto.result.PointsRuleResultDTO; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.*; +import com.elink.esua.epdc.dto.result.*; import com.elink.esua.epdc.service.PointsLogsService; import com.elink.esua.epdc.service.PointsRuleService; import org.springframework.beans.factory.annotation.Autowired; @@ -67,4 +66,50 @@ public class EpdcAppPointsController { PointsRuleResultDTO pointsRuleByBehaviorCode = pointsRuleService.getPointsRuleByBehaviorCode(behaviorCode); return new Result().ok(pointsRuleByBehaviorCode); } + + /** + * 获取用户积分记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/1/19 14:27 + */ + @GetMapping("getpointslogs/list") + public Result> getPointsLogs(@RequestBody PointsExchangeLogsFormDTO formDto) { + List data = pointsLogsService.listOfPointsLogs(formDto); + + return new Result>().ok(data); + } + + /** + * 积分核销 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:57 + */ + @PostMapping("pointsVerification") + public Result pointsVerification(@RequestBody EpdcWorkPointsVerificationFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return pointsLogsService.pointsVerification(formDto); + } + + /** + * 工作端-核销记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 17:45 + */ + @GetMapping("verificationLogs/list") + public Result verificationLogs(@RequestBody EpdcWorkVerificationLogsFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + EpdcVerificationLogsResultDTO data = pointsLogsService.listOfVerificationLogs(formDto); + + return new Result().ok(data); + } } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java index ec381742..4eac7167 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java @@ -20,9 +20,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.PointsLogsDTO; import com.elink.esua.epdc.dto.UserPointResultDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; -import com.elink.esua.epdc.dto.form.PointsLogsFormDTO; +import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.result.*; import com.elink.esua.epdc.entity.PointsLogsEntity; import org.apache.ibatis.annotations.Mapper; @@ -161,4 +159,34 @@ public interface PointsLogsDao extends BaseDao { * @return java.util.List **/ List selectListOfOrganizationInfo(String toString); + + /** + * 获取用户积分记录 + * + * @param formDto 表单 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/19 14:32 + */ + List selectListOfPointsLogs(PointsExchangeLogsFormDTO formDto); + + /** + * 核销记录 + * + * @param formDto 表单 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/20 9:49 + */ + List selectListOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto); + + /** + * 核销总积分 + * + * @param formDto 表单 + * @return java.lang.Integer + * @author Liuchuang + * @since 2021/1/20 9:49 + */ + Integer selectCountOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/entity/PointsLogsEntity.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/entity/PointsLogsEntity.java index 0b1ebc33..8d92317d 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/entity/PointsLogsEntity.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/entity/PointsLogsEntity.java @@ -129,4 +129,17 @@ public class PointsLogsEntity extends BaseEpdcEntity { */ private String allDeptNames; -} \ No newline at end of file + /** + * 操作人所属部门名称 + */ + private String createdDept; + /** + * 操作人所属部门ID + */ + private Long createdDeptId; + /** + * 操作人所属部门所有部门ID + */ + private String createdDeptAllDeptIds; + +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index ff1ac2ad..a860244f 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -26,4 +26,15 @@ public interface AdminFeignClient { */ @GetMapping("sys/dept/getParentAndAllDept/{deptId}") Result getParentAndAllDept(@PathVariable("deptId") Long deptId); + + /** + * 根据部门id,获取所有上级部门id,英文逗号隔开拼接字符串 + * + * @param deptId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/11/27 15:07 + */ + @GetMapping("sys/dept/getParentDeptIds/{deptId}") + Result getParentDeptIds(@PathVariable("deptId") Long deptId); } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/UsersFeignClient.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/UsersFeignClient.java index 544d7961..a1c8f1a5 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/UsersFeignClient.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/UsersFeignClient.java @@ -64,7 +64,7 @@ public interface UsersFeignClient { * @Param [userId] * @return com.elink.esua.epdc.commons.tools.utils.Result **/ - @PostMapping(value = "app-user/epdc-app/user/getUserGridIdByUserId/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = "app-user/epdc-app/user/getUserGridIdByUserId/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE) Result getUserGridIdByUserId(@PathVariable String userId); } - + diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index c5587ae4..e7f1a96a 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -18,4 +18,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result getParentAndAllDept(Long deptId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", deptId); } + + @Override + public Result getParentDeptIds(Long deptId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentDeptIds", deptId); + } } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java index be82b299..7cd4c617 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java @@ -24,13 +24,9 @@ import com.elink.esua.epdc.dto.EpdcAdjustUserPointsDTO; import com.elink.esua.epdc.dto.PointsLogsDTO; import com.elink.esua.epdc.dto.UserPointResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAdjustVolunteerPointsDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; -import com.elink.esua.epdc.dto.form.PointsLogsFormDTO; -import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; -import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; -import com.elink.esua.epdc.dto.result.PointsLogsResultDTO; -import com.elink.esua.epdc.dto.result.PointsStatisticsListResultDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.*; +import com.elink.esua.epdc.dto.result.*; import com.elink.esua.epdc.entity.PointsLogsEntity; import com.elink.esua.epdc.mq.dto.OrganizationModifyDTO; @@ -167,7 +163,7 @@ public interface PointsLogsService extends BaseService { */ EpdcAppPointsRankingResultDTO listPointsRanking(EpdcAppPointsRankingFormDTO formDto); /** - * @Description 积分管理-积分统计 -统计调整积分 + * @Description 积分管理-积分统计 -统计调整积分 * @Author songyunpeng * @Date 2020/6/9 * @Param [formDto] @@ -202,11 +198,41 @@ public interface PointsLogsService extends BaseService { */ PageData listPoint(Map params); /** - * @Description mq修改组织机构信息 + * @Description mq修改组织机构信息 * @Author songyunpeng * @Date 2020/12/21 * @Param [dto] * @return void **/ void modifyOrganizationInfo(OrganizationModifyDTO dto); + + /** + * 获取用户积分记录 + * + * @param formDto 表单 + * @return java.util.List + * @author Liuchuang + * @since 2021/1/19 14:29 + */ + List listOfPointsLogs(PointsExchangeLogsFormDTO formDto); + + /** + * 积分核销 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:53 + */ + Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto); + + /** + * 工作端-核销记录 + * + * @param formDto 表单 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 17:45 + */ + EpdcVerificationLogsResultDTO listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java index c3a27c11..62c44499 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java @@ -30,6 +30,7 @@ import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.security.content.dto.form.ParentAndAllDeptDTO; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dao.PointsLogsDao; @@ -38,9 +39,8 @@ import com.elink.esua.epdc.dto.constant.PointsNoticeConstant; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAdjustVolunteerPointsDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; -import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; -import com.elink.esua.epdc.dto.form.PointsLogsFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.result.*; import com.elink.esua.epdc.entity.PointsLogsEntity; import com.elink.esua.epdc.feign.AdminFeignClient; @@ -417,4 +417,102 @@ public class PointsLogsServiceImpl extends BaseServiceImpl listOfPointsLogs(PointsExchangeLogsFormDTO formDto) { + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + return baseDao.selectListOfPointsLogs(formDto); + } + + @Override + public Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto) { + if (null == SecurityUser.getUser() || null == SecurityUser.getDeptId()) { + throw new RenException("登陆信息超时,请重新登陆"); + } + // 获取用户信息 + EpdcUserPointsFormDTO userPointsFormDTO = new EpdcUserPointsFormDTO(); + userPointsFormDTO.setUserId(formDto.getUserId()); + userPointsFormDTO.setPoints(formDto.getPoints()); + userPointsFormDTO.setOperationType(formDto.getOperationType()); + Result result = usersFeignClient.handleUserPoints(userPointsFormDTO); + if (!result.success()) { + return new Result().error(result.getMsg()); + } + + // 保存积分日志 + PointsLogsEntity pointsLogsEntity = packagePointsLogs(result.getData(), formDto); + this.insert(pointsLogsEntity); + + return new Result(); + } + + @Override + public EpdcVerificationLogsResultDTO listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto) { + if (null == SecurityUser.getUser() || null == SecurityUser.getDeptId()) { + throw new RenException("登陆信息超时,请重新登陆"); + } + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + formDto.setCurrentUserDeptId(SecurityUser.getDeptId()); + formDto.setOperationMode(PointsOperationModeEnum.OPERATION_MODE_WORK_JFHX.getOperationMode()); + + // 核销记录 + List verificationLogs = baseDao.selectListOfVerificationLogs(formDto); + // 核销总积分 + Integer pointsTotal = baseDao.selectCountOfVerificationLogs(formDto); + + EpdcVerificationLogsResultDTO data = new EpdcVerificationLogsResultDTO(); + data.setPointsTotal(pointsTotal); + data.setVerificationLogs(verificationLogs); + + return data; + } + + /** + * 组装积分日志信息 + * + * @param userDto 用户信息 + * @param formDto 表单信息 + * @return com.elink.esua.epdc.entity.PointsLogsEntity + * @author Liuchuang + * @since 2021/1/19 16:14 + */ + private PointsLogsEntity packagePointsLogs(UserDTO userDto, EpdcWorkPointsVerificationFormDTO formDto) { + //根据动作编码获取动作信息 + Result behaviorCodeInfoByBehaviorCode = pointsBehaviorService.getBehaviorCodeInfoByBehaviorCode(PointsConstant.behaviorWorkScanCodePointsVerification); + PointsLogsEntity pointsLogsEntity = new PointsLogsEntity(); + pointsLogsEntity.setUserId(formDto.getUserId()); + pointsLogsEntity.setNickname(userDto.getNickname()); + pointsLogsEntity.setFaceImg(userDto.getFaceImg()); + pointsLogsEntity.setOperationTime(new Date()); + pointsLogsEntity.setOperationMode(PointsOperationModeEnum.OPERATION_MODE_WORK_JFHX.getOperationMode()); + pointsLogsEntity.setRuleCode(PointsConstant.ruleWorkScanCodePointsVerification); + pointsLogsEntity.setBehaviorCode(PointsConstant.behaviorWorkScanCodePointsVerification); + pointsLogsEntity.setOperationDesc(behaviorCodeInfoByBehaviorCode.getData().getBehaviorDesc()); + pointsLogsEntity.setPoints(formDto.getPoints()); + pointsLogsEntity.setOperationType(formDto.getOperationType()); + pointsLogsEntity.setReferenceId(formDto.getUserId()); + pointsLogsEntity.setLavePoints(userDto.getPoints()); + + // 赋值积分所属部门 + Result userGridIdByUserId = usersFeignClient.getUserGridIdByUserId(formDto.getUserId()); + Result parentAndAllDept = adminFeignClient.getParentAndAllDept(userGridIdByUserId.getData()); + ParentAndAllDeptDTO parentAndAllDeptDTO = parentAndAllDept.getData(); + pointsLogsEntity.setGrid(parentAndAllDeptDTO.getGrid()); + pointsLogsEntity.setGridId(parentAndAllDeptDTO.getGridId()); + pointsLogsEntity.setAllDeptIds(parentAndAllDeptDTO.getAllDeptIds()); + pointsLogsEntity.setAllDeptNames(parentAndAllDeptDTO.getAllDeptNames()); + pointsLogsEntity.setParentDeptIds(parentAndAllDeptDTO.getParentDeptIds()); + pointsLogsEntity.setParentDeptNames(parentAndAllDeptDTO.getParentDeptNames()); + + // 组装操作人信息 + UserDetail user = SecurityUser.getUser(); + Result currentUserDept = adminFeignClient.getParentDeptIds(user.getDeptId()); + pointsLogsEntity.setCreatedDeptAllDeptIds(currentUserDept.getData()); + pointsLogsEntity.setCreatedDept(user.getDeptName()); + pointsLogsEntity.setCreatedDeptId(user.getDeptId()); + + return pointsLogsEntity; + } } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml index a33061f1..d34499e4 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml @@ -270,4 +270,75 @@ WHERE FIND_IN_SET( #{deptId}, ALL_DEPT_IDS ) + + + + + + diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml index 7dafca27..fbc45181 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml @@ -19,6 +19,11 @@ epdc-commons-tools 1.0.0 + + com.esua.epdc + epdc-oss-client + 1.0.0 + diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserPointsVerificationQrCodeDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserPointsVerificationQrCodeDTO.java new file mode 100644 index 00000000..bfe9192d --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserPointsVerificationQrCodeDTO.java @@ -0,0 +1,81 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +@Data +public class UserPointsVerificationQrCodeDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 用户ID + */ + private String userId; + + /** + * 二维码地址 + */ + private String codeUrl; + + /** + * 删除标记:0-否,1-是 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsVerificationCheckFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsVerificationCheckFormDTO.java new file mode 100644 index 00000000..59006414 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsVerificationCheckFormDTO.java @@ -0,0 +1,23 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 兑换码校验表单 + * + * @author Liuchuang + * @since 2021/1/20 11:08 + */ +@Data +public class EpdcUserPointsVerificationCheckFormDTO implements Serializable { + private static final long serialVersionUID = -5573771550554955607L; + + /** + * 兑换码ID + */ + @NotBlank(message = "兑换码ID不能为空") + private String qrCodeId; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserPointsVerificationResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserPointsVerificationResultDTO.java new file mode 100644 index 00000000..b76b187d --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserPointsVerificationResultDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户信息 + * + * @author Liuchuang + * @since 2021/1/19 14:58 + */ +@Data +public class EpdcUserPointsVerificationResultDTO implements Serializable { + private static final long serialVersionUID = 8116531573516487358L; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户真实姓名 + */ + private String realName; + + /** + * 用户头像 + */ + private String faceImg; + + /** + * 用户积分 + */ + private Integer points; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserPointsVerificationResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserPointsVerificationResultDTO.java new file mode 100644 index 00000000..b5219664 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserPointsVerificationResultDTO.java @@ -0,0 +1,21 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户积分核销二维码 + * + * @author Liuchuang + * @since 2021/1/19 10:51 + */ +@Data +public class UserPointsVerificationResultDTO implements Serializable { + private static final long serialVersionUID = 567506783648999124L; + + /** + * 二维码地址 + */ + private String codeUrl; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserPointsVerificationQrCodeController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserPointsVerificationQrCodeController.java new file mode 100644 index 00000000..fb7d46b6 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserPointsVerificationQrCodeController.java @@ -0,0 +1,57 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsVerificationCheckFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.service.UserPointsVerificationQrCodeService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 用户积分核销兑换码 接口 + * + * @author Liuchuang + * @since 2021/1/19 11:03 + */ +@RestController +@RequestMapping(Constant.EPDC_APP + "verificationqrcode") +public class EpdcAppUserPointsVerificationQrCodeController { + + @Autowired + private UserPointsVerificationQrCodeService userPointsVerificationQrCodeService; + + /** + * 获取积分核销兑换码 + * + * @param userId 用户ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 10:54 + */ + @GetMapping("getqrcode/{userId}") + public Result getQRCode(@PathVariable String userId) { + UserPointsVerificationResultDTO data = userPointsVerificationQrCodeService.generatePointsVerificationQRCode(userId); + return new Result().ok(data); + } + + /** + * 扫描兑换码获取用户信息接口 + * + * @param formDto 码ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/1/19 15:09 + */ + @PostMapping("getuserinfobycode") + public Result getUserInfoByCode(@RequestBody EpdcUserPointsVerificationCheckFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + EpdcUserPointsVerificationResultDTO data = userPointsVerificationQrCodeService.getUserInfoByCode(formDto.getQrCodeId()); + + return new Result().ok(data); + } +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserPointsVerificationQrCodeController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserPointsVerificationQrCodeController.java new file mode 100644 index 00000000..d90f6efa --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserPointsVerificationQrCodeController.java @@ -0,0 +1,84 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.AssertUtils; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.dto.UserPointsVerificationQrCodeDTO; +import com.elink.esua.epdc.service.UserPointsVerificationQrCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +@RestController +@RequestMapping("userpointsverificationqrcode") +public class UserPointsVerificationQrCodeController { + + @Autowired + private UserPointsVerificationQrCodeService userPointsVerificationQrCodeService; + + @GetMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = userPointsVerificationQrCodeService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + UserPointsVerificationQrCodeDTO data = userPointsVerificationQrCodeService.get(id); + return new Result().ok(data); + } + + @PostMapping + public Result save(@RequestBody UserPointsVerificationQrCodeDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + userPointsVerificationQrCodeService.save(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody UserPointsVerificationQrCodeDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + userPointsVerificationQrCodeService.update(dto); + return new Result(); + } + + @DeleteMapping + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + userPointsVerificationQrCodeService.delete(ids); + return new Result(); + } + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserPointsVerificationQrCodeDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserPointsVerificationQrCodeDao.java new file mode 100644 index 00000000..529c012f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserPointsVerificationQrCodeDao.java @@ -0,0 +1,43 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dao; + +import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +import com.elink.esua.epdc.entity.UserPointsVerificationQrCodeEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +@Mapper +public interface UserPointsVerificationQrCodeDao extends BaseDao { + + /** + * 根据用户ID删除兑换码 + * + * @param userId 用户ID + * @return void + * @author Liuchuang + * @since 2021/1/19 13:52 + */ + void deleteByUserId(String userId); + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserPointsVerificationQrCodeEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserPointsVerificationQrCodeEntity.java new file mode 100644 index 00000000..71f00ed6 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserPointsVerificationQrCodeEntity.java @@ -0,0 +1,51 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("epdc_user_points_verification_qr_code") +public class UserPointsVerificationQrCodeEntity extends BaseEpdcEntity { + + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private String userId; + + /** + * 二维码地址 + */ + private String codeUrl; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java new file mode 100644 index 00000000..875445a5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java @@ -0,0 +1,41 @@ +package com.elink.esua.epdc.feign; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadFormDTO; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.feign.fallback.OssFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * 文件对象模块 + * @Author LC + * @Date 2019/9/8 18:24 + */ +@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class) +public interface OssFeignClient { + + /** + * 图片上传 + * @Params: [base64] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: liuchuang + * @Date: 2019/9/11 17:17 + */ + @PostMapping(value = "oss/file/uploadBase64") + Result upload(UploadFormDTO formDTO); + + /** + * + * 图片上传 + * + * @params [file] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/11/25 16:13 + */ + @PostMapping(value = "oss/file/uploadFile", consumes = MediaType.APPLICATION_JSON_VALUE) + Result uploadFile(UploadToOssDTO uploadToOssDto); +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java new file mode 100644 index 00000000..8925de8f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java @@ -0,0 +1,28 @@ +package com.elink.esua.epdc.feign.fallback; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadFormDTO; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.feign.OssFeignClient; +import org.springframework.stereotype.Component; + +/** + * 文件对象模块 + * @Author LC + * @Date 2019/9/8 18:25 + */ +@Component +public class OssFeignClientFallback implements OssFeignClient { + + @Override + public Result upload(UploadFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "upload", formDTO); + } + + @Override + public Result uploadFile(UploadToOssDTO uploadToOssDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "uploadFile", uploadToOssDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationQrCodeService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationQrCodeService.java new file mode 100644 index 00000000..fb0bfeb6 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationQrCodeService.java @@ -0,0 +1,117 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.service; + +import com.elink.esua.epdc.commons.mybatis.service.BaseService; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.dto.UserPointsVerificationQrCodeDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.entity.UserPointsVerificationQrCodeEntity; + +import java.util.List; +import java.util.Map; + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +public interface UserPointsVerificationQrCodeService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-01-18 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-01-18 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return UserPointsVerificationQrCodeDTO + * @author generator + * @date 2021-01-18 + */ + UserPointsVerificationQrCodeDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-01-18 + */ + void save(UserPointsVerificationQrCodeDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-01-18 + */ + void update(UserPointsVerificationQrCodeDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-01-18 + */ + void delete(String[] ids); + + /** + * 生成积分核销二维码 + * + * @param userId 用户ID + * @return com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO + * @author Liuchuang + * @since 2021/1/19 11:11 + */ + UserPointsVerificationResultDTO generatePointsVerificationQRCode(String userId); + + /** + * 扫描兑换码获取用户信息接口 + * + * @param qrCodeId 码ID + * @return com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO + * @author Liuchuang + * @since 2021/1/19 15:11 + */ + EpdcUserPointsVerificationResultDTO getUserInfoByCode(String qrCodeId); +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationQrCodeServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationQrCodeServiceImpl.java new file mode 100644 index 00000000..d8a8a3d0 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationQrCodeServiceImpl.java @@ -0,0 +1,197 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.constant.StrConstant; +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.utils.QrCodeUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dao.UserPointsVerificationQrCodeDao; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.dto.UserDTO; +import com.elink.esua.epdc.dto.UserPointsVerificationQrCodeDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO; +import com.elink.esua.epdc.entity.UserPointsVerificationQrCodeEntity; +import com.elink.esua.epdc.feign.OssFeignClient; +import com.elink.esua.epdc.service.UserPointsVerificationQrCodeService; +import com.elink.esua.epdc.service.UserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 用户积分核销二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-01-18 + */ +@Service +public class UserPointsVerificationQrCodeServiceImpl extends BaseServiceImpl implements UserPointsVerificationQrCodeService { + + @Autowired + private OssFeignClient ossFeignClient; + + @Autowired + private UserService userService; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, UserPointsVerificationQrCodeDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, UserPointsVerificationQrCodeDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public UserPointsVerificationQrCodeDTO get(String id) { + UserPointsVerificationQrCodeEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, UserPointsVerificationQrCodeDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(UserPointsVerificationQrCodeDTO dto) { + UserPointsVerificationQrCodeEntity entity = ConvertUtils.sourceToTarget(dto, UserPointsVerificationQrCodeEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(UserPointsVerificationQrCodeDTO dto) { + UserPointsVerificationQrCodeEntity entity = ConvertUtils.sourceToTarget(dto, UserPointsVerificationQrCodeEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public UserPointsVerificationResultDTO generatePointsVerificationQRCode(String userId) { + // 删除用户对应的兑换码 + baseDao.deleteByUserId(userId); + + // 保存用户信息 + UserPointsVerificationQrCodeEntity entity = new UserPointsVerificationQrCodeEntity(); + entity.setUserId(userId); + insert(entity); + + // 生成二维码 + String codeUrl = generateQRCode(entity.getId()); + entity.setCodeUrl(codeUrl); + + // 更新二维码地址 + updateById(entity); + UserPointsVerificationResultDTO resultDto = new UserPointsVerificationResultDTO(); + resultDto.setCodeUrl(codeUrl); + + return resultDto; + } + + @Override + public EpdcUserPointsVerificationResultDTO getUserInfoByCode(String qrCodeId) { + // 校验兑换码 + String userId = checkQRCode(qrCodeId); + // 获取用户信息 + UserDTO userDto = userService.get(userId); + EpdcUserPointsVerificationResultDTO resultDto = ConvertUtils.sourceToTarget(userDto, EpdcUserPointsVerificationResultDTO.class); + resultDto.setUserId(userDto.getId()); + + return resultDto; + } + + /** + * 生成二维码并上传 OSS + * + * @param param 二维码参数 + * @return java.lang.String + * @author Liuchuang + * @since 2021/1/19 13:30 + */ + private String generateQRCode(String param) { + UploadToOssDTO dto = new UploadToOssDTO(); + dto.setFileByte(QrCodeUtils.encodeByByte(param, "", false)); + dto.setFileName(param.concat(StrConstant.DOT).concat(StrConstant.SUFFIX_IMG_PNG)); + + Result ossResult = ossFeignClient.uploadFile(dto); + if (null == ossResult || !ossResult.success() || null == ossResult.getData()) { + throw new RenException("兑换码上传失败,请稍后重试"); + } + return ossResult.getData(); + } + + /** + * 兑换码校验 + * + * @param qrCodeId 码ID + * @return java.lang.String + * @author Liuchuang + * @since 2021/1/19 15:26 + */ + private String checkQRCode(String qrCodeId) { + UserPointsVerificationQrCodeEntity entity = baseDao.selectById(qrCodeId); + if (null == entity) { + throw new RenException("获取兑换码信息失败,请重新扫码"); + } + + // 兑换码有效时间3分钟 + long seconds = (System.currentTimeMillis() - entity.getCreatedTime().getTime()) / 1000; + if (seconds > NumConstant.ONE_HUNDRED_EIGHTY) { + throw new RenException("兑换码已失效,请重新扫码"); + } + + return entity.getUserId(); + } + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java index eb0a3794..f2870cfa 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java @@ -977,11 +977,18 @@ public class UserServiceImpl extends BaseServiceImpl implem @Override public Result handleUserPoints(EpdcUserPointsFormDTO formDTO) { UserEntity userEntity = baseDao.selectById(formDTO.getUserId()); + if (null == userEntity) { + return new Result().error("未查询到改用户"); + } //规则操作类型(0-减积分,1-加积分) if (PointsOperationEnum.OPERATION_TYPE_ADD.getOperationType().equals(formDTO.getOperationType())) { userEntity.setPoints(userEntity.getPoints() + formDTO.getPoints()); userEntity.setPointsTotle(userEntity.getPointsTotle() + formDTO.getPoints()); } else if (PointsOperationEnum.OPERATION_TYPE_SUBSTRACT.getOperationType().equals(formDTO.getOperationType())) { + int points = null == userEntity.getPoints() ? 0 : userEntity.getPoints(); + if (formDTO.getPoints() > points) { + return new Result().error("用户积分不足"); + } userEntity.setPoints(userEntity.getPoints() - formDTO.getPoints()); } baseDao.updateById(userEntity); diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserPointsVerificationQrCodeDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserPointsVerificationQrCodeDao.xml new file mode 100644 index 00000000..5e9c4fbf --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserPointsVerificationQrCodeDao.xml @@ -0,0 +1,10 @@ + + + + + + + UPDATE epdc_user_points_verification_qr_code SET DEL_FLAG = '1', UPDATED_TIME = NOW() WHERE USER_ID = #{userId} + + +