Browse Source

积分核销功能 init

feature/syp_points
liuchuang 5 years ago
parent
commit
b44dcdb46e
  1. 17
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
  2. 10
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java
  3. 10
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  4. 5
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  5. 11
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml
  6. 6
      esua-epdc/epdc-commons/epdc-commons-tools/pom.xml
  7. 2
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java
  8. 10
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/PointsConstant.java
  9. 4
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/StrConstant.java
  10. 7
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/pointsenum/PointsOperationModeEnum.java
  11. 73
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/FileUtils.java
  12. 224
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/QrCodeUtils.java
  13. 36
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkPointsVerificationFormDTO.java
  14. 54
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcWorkVerificationLogsFormDTO.java
  15. 39
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/PointsExchangeLogsFormDTO.java
  16. 27
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcVerificationLogsResultDTO.java
  17. 67
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiUserPointsVerificationController.java
  18. 86
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkPointsVerificationController.java
  19. 13
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  20. 40
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java
  21. 28
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java
  22. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java
  23. 21
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java
  24. 11
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java
  25. 83
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationService.java
  26. 71
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationServiceImpl.java
  27. 15
      esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/dto/PointsLogsDTO.java
  28. 55
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java
  29. 34
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java
  30. 15
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/entity/PointsLogsEntity.java
  31. 11
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  32. 4
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/UsersFeignClient.java
  33. 5
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java
  34. 44
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java
  35. 104
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java
  36. 71
      esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml
  37. 5
      esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml
  38. 81
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserPointsVerificationQrCodeDTO.java
  39. 23
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserPointsVerificationCheckFormDTO.java
  40. 36
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserPointsVerificationResultDTO.java
  41. 21
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserPointsVerificationResultDTO.java
  42. 57
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserPointsVerificationQrCodeController.java
  43. 84
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserPointsVerificationQrCodeController.java
  44. 43
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserPointsVerificationQrCodeDao.java
  45. 51
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserPointsVerificationQrCodeEntity.java
  46. 41
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java
  47. 28
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java
  48. 117
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserPointsVerificationQrCodeService.java
  49. 197
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserPointsVerificationQrCodeServiceImpl.java
  50. 7
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java
  51. 10
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserPointsVerificationQrCodeDao.xml

17
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<com.elink.esua.epdc.dto.epdc.DeptCodeOption>
* @return com.elink.esua.epdc.getdeptinfocommons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.DeptCodeOption>
**/
@GetMapping("getDeptCode")
public Result<DeptCodeOption> getDeptCodeTree(){
return sysDeptService.getDeptCodeTree();
}
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>>
* @author Liuchuang
* @since 2021/1/20 9:58
*/
@GetMapping("getdeptinfo/{typeKey}")
public Result<List<SysDeptDTO>> getDeptInfoByTypeKey(@PathVariable String typeKey) {
List<SysDeptDTO> data = sysDeptService.listOfDeptInfoByTypeKey(typeKey);
return new Result<List<SysDeptDTO>>().ok(data);
}
}

10
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<SysDeptEntity> {
List<DeptTreeDTO> selectListDeptTreeStreetDept();
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>
* @author Liuchuang
* @since 2021/1/20 10:01
*/
List<SysDeptDTO> selectListOfDeptInfoByTypeKey(String typeKey);
}

10
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<SysDeptEntity> {
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.DeptCodeOption>
**/
Result<DeptCodeOption> getDeptCodeTree();
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>
* @author Liuchuang
* @since 2021/1/20 9:59
*/
List<SysDeptDTO> listOfDeptInfoByTypeKey(String typeKey);
}

5
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<SysDeptDao, SysDeptEntit
dto.getId().toString(), JSONObject.toJSONString(body));
}
}
@Override
public List<SysDeptDTO> listOfDeptInfoByTypeKey(String typeKey) {
return baseDao.selectListOfDeptInfoByTypeKey(typeKey);
}
}

11
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')
</select>
<select id="selectListOfDeptInfoByTypeKey" resultType="com.elink.esua.epdc.dto.SysDeptDTO">
SELECT
*
FROM
sys_dept t
WHERE
t.del_flag = 0
AND type_key = #{typeKey}
AND t.id NOT IN ( SELECT c.dept_id FROM sys_dept_config c WHERE c.del_flag = '0' ) ORDER BY t.`name`
</select>
</mapper>

6
esua-epdc/epdc-commons/epdc-commons-tools/pom.xml

@ -23,6 +23,7 @@
<fastjson.version>1.2.59</fastjson.version>
<jsoup.version>1.11.3</jsoup.version>
<lombok.version>1.18.4</lombok.version>
<zxing.version>3.3.0</zxing.version>
</properties>
<dependencies>
@ -113,6 +114,11 @@
<version>0.7.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>${zxing.version}</version>
</dependency>
</dependencies>
<build>

2
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;
}

10
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";
}

4
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 = ".";
}

7
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;

73
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();
}
}

224
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<EncodeHintType, Object> 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();
}
}
}

36
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;
}

54
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;
}

39
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;
}

27
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<T> implements Serializable {
private static final long serialVersionUID = -6338967854031776740L;
/**
* 核销总积分
*/
private Integer pointsTotal;
/**
* 核销记录
*/
private List<T> verificationLogs;
}

67
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<com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 10:54
*/
@GetMapping("getqrcode")
public Result<UserPointsVerificationResultDTO> getQRCode(@LoginUser TokenDto userDetail) {
if (null == userDetail || StringUtils.isEmpty(userDetail.getUserId())) {
return new Result<UserPointsVerificationResultDTO>().error("获取用户信息失败,请稍后重试");
}
return userPointsVerificationService.getQRCode(userDetail.getUserId());
}
/**
* 获取用户积分记录
*
* @param userDetail 用户信息
* @param formDto 表单
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO>>
* @author Liuchuang
* @since 2021/1/19 14:16
*/
@GetMapping("getpointslogs")
public Result<List<PointsLogsResultDTO>> getPointsLogs(@LoginUser TokenDto userDetail, @RequestBody PointsExchangeLogsFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
formDto.setUserId(userDetail.getUserId());
return userPointsVerificationService.listOfPointsLogs(formDto);
}
}

86
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<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 15:03
*/
@PostMapping("getuserinfobycode")
public Result<EpdcUserPointsVerificationResultDTO> 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<java.util.List<com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO>>
* @author Liuchuang
* @since 2021/1/19 17:00
*/
@GetMapping("verificationlogs")
public Result<EpdcVerificationLogsResultDTO> verificationLogs(@RequestBody EpdcWorkVerificationLogsFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return userPointsVerificationService.listOfVerificationLogs(formDto);
}
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>>
* @author Liuchuang
* @since 2021/1/20 9:58
*/
@GetMapping("getdeptinfo/{typeKey}")
public Result<List<SysDeptDTO>> getDeptInfoByTypeKey(@PathVariable String typeKey) {
return userPointsVerificationService.listOfDeptInfoByTypeKey(typeKey);
}
}

13
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<String> 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<List<EpdcAppSysDictResultDTO>> listFullDictInfo(@PathVariable("dictType") String dicType);
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>>
* @author Liuchuang
* @since 2021/1/20 9:58
*/
@GetMapping("sys/dept/getdeptinfo/{typeKey}")
Result<List<SysDeptDTO>> getDeptInfoByTypeKey(@PathVariable String typeKey);
}

40
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<PointsRuleResultDTO> getPointsRuleByBehaviorCode (@PathVariable("behaviorCode") String behaviorCode);
/**
* 获取用户积分记录
*
* @param formDto 表单
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO>>
* @author Liuchuang
* @since 2021/1/19 14:22
*/
@GetMapping(value = "points/epdc-app/points/getpointslogs/list", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<PointsLogsResultDTO>> 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<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 17:43
*/
@GetMapping(value = "points/epdc-app/points/verificationLogs/list", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<EpdcVerificationLogsResultDTO> verificationLogs(EpdcWorkVerificationLogsFormDTO formDto);
}

28
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<PageData<EpdcScreenSelectPeopleResultDTO>> 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<Long> getUserGridIdByUserId(@PathVariable String userId);
}
/**
* 获取积分核销兑换码
*
* @param userId 用户ID
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 15:08
*/
@GetMapping(value = "app-user/epdc-app/verificationqrcode/getqrcode/{userId}", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<UserPointsVerificationResultDTO> getQRCode(@PathVariable String userId);
/**
* 扫描兑换码获取用户信息接口
*
* @param formDto 码ID
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 15:08
*/
@PostMapping(value = "app-user/epdc-app/verificationqrcode/getuserinfobycode", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<EpdcUserPointsVerificationResultDTO> getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto);
}

5
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<List<EpdcAppSysDictResultDTO>> listFullDictInfo(String dicType) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listFullDictInfo", dicType);
}
@Override
public Result<List<SysDeptDTO>> getDeptInfoByTypeKey(String typeKey) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptInfoByTypeKey", typeKey);
}
}

21
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<PointsRuleResultDTO> getPointsRuleByBehaviorCode(String behaviorCode) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "getPointsRuleByBehaviorCode", behaviorCode);
}
@Override
public Result<List<PointsLogsResultDTO>> 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<EpdcVerificationLogsResultDTO> verificationLogs(EpdcWorkVerificationLogsFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "verificationLogs", formDto);
}
}

11
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<PageData<EpdcScreenGridRankingResultDTO>> gridRanking(EpdcScreenGridRankingFormDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "gridRanking", dto);
}
@Override
public Result<UserPointsVerificationResultDTO> getQRCode(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getQRCode", userId);
}
@Override
public Result<EpdcUserPointsVerificationResultDTO> getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserInfoByCode", formDto);
}
}

83
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<com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 10:57
*/
Result<UserPointsVerificationResultDTO> getQRCode(String userId);
/**
* 获取用户积分记录
*
* @param formDto 表单
* @return java.util.List<com.elink.esua.epdc.pointcommons.tools.dto.PointsLogsResultDTO>
* @author Liuchuang
* @since 2021/1/19 14:17
*/
Result<List<PointsLogsResultDTO>> listOfPointsLogs(PointsExchangeLogsFormDTO formDto);
/**
* 扫描兑换码获取用户信息接口
*
* @param formDto 码ID
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 15:04
*/
Result<EpdcUserPointsVerificationResultDTO> 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<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 17:41
*/
Result<EpdcVerificationLogsResultDTO> listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto);
/**
* 根据机构类型获取机构数据
*
* @param typeKey 机构类型
* @return java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>
* @author Liuchuang
* @since 2021/1/20 9:59
*/
Result<List<SysDeptDTO>> listOfDeptInfoByTypeKey(String typeKey);
}

71
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<UserPointsVerificationResultDTO> getQRCode(String userId) {
return userFeignClient.getQRCode(userId);
}
@Override
public Result<List<PointsLogsResultDTO>> listOfPointsLogs(PointsExchangeLogsFormDTO formDto) {
return pointsFeignClient.getPointsLogs(formDto);
}
@Override
public Result<EpdcUserPointsVerificationResultDTO> getUserInfoByCode(EpdcUserPointsVerificationCheckFormDTO formDto) {
return userFeignClient.getUserInfoByCode(formDto);
}
@Override
public Result pointsVerification(EpdcWorkPointsVerificationFormDTO formDto) {
return pointsFeignClient.pointsVerification(formDto);
}
@Override
public Result<EpdcVerificationLogsResultDTO> listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto) {
return pointsFeignClient.verificationLogs(formDto);
}
@Override
public Result<List<SysDeptDTO>> listOfDeptInfoByTypeKey(String typeKey) {
return adminFeignClient.getDeptInfoByTypeKey(typeKey);
}
}

15
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;
}
/**
* 操作人所属部门名称
*/
private String createdDept;
/**
* 操作人所属部门ID
*/
private String createdDeptId;
/**
* 操作人所属部门所有部门ID
*/
private String createdDeptAllDeptIds;
}

55
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<PointsRuleResultDTO>().ok(pointsRuleByBehaviorCode);
}
/**
* 获取用户积分记录
*
* @param formDto 表单
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.result.PointsLogsResultDTO>>
* @author Liuchuang
* @since 2021/1/19 14:27
*/
@GetMapping("getpointslogs/list")
public Result<List<PointsLogsResultDTO>> getPointsLogs(@RequestBody PointsExchangeLogsFormDTO formDto) {
List<PointsLogsResultDTO> data = pointsLogsService.listOfPointsLogs(formDto);
return new Result<List<PointsLogsResultDTO>>().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<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 17:45
*/
@GetMapping("verificationLogs/list")
public Result<EpdcVerificationLogsResultDTO> verificationLogs(@RequestBody EpdcWorkVerificationLogsFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
EpdcVerificationLogsResultDTO data = pointsLogsService.listOfVerificationLogs(formDto);
return new Result<EpdcVerificationLogsResultDTO>().ok(data);
}
}

34
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<PointsLogsEntity> {
* @return java.util.List<com.elink.esua.epdc.dto.PointsLogsDTO>
**/
List<PointsLogsDTO> selectListOfOrganizationInfo(String toString);
/**
* 获取用户积分记录
*
* @param formDto 表单
* @return java.util.List<com.elink.esua.epdc.dto.result.PointsLogsResultDTO>
* @author Liuchuang
* @since 2021/1/19 14:32
*/
List<PointsLogsResultDTO> selectListOfPointsLogs(PointsExchangeLogsFormDTO formDto);
/**
* 核销记录
*
* @param formDto 表单
* @return java.util.List<com.elink.esua.epdc.dto.result.PointsLogsResultDTO>
* @author Liuchuang
* @since 2021/1/20 9:49
*/
List<PointsLogsResultDTO> selectListOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto);
/**
* 核销总积分
*
* @param formDto 表单
* @return java.lang.Integer
* @author Liuchuang
* @since 2021/1/20 9:49
*/
Integer selectCountOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto);
}

15
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;
}
/**
* 操作人所属部门名称
*/
private String createdDept;
/**
* 操作人所属部门ID
*/
private Long createdDeptId;
/**
* 操作人所属部门所有部门ID
*/
private String createdDeptAllDeptIds;
}

11
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<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") Long deptId);
/**
* 根据部门id获取所有上级部门id英文逗号隔开拼接字符串
*
* @param deptId
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @author work@yujt.net.cn
* @date 2019/11/27 15:07
*/
@GetMapping("sys/dept/getParentDeptIds/{deptId}")
Result<String> getParentDeptIds(@PathVariable("deptId") Long deptId);
}

4
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<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserPointsResultDTO>
**/
@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<Long> getUserGridIdByUserId(@PathVariable String userId);
}

5
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<ParentAndAllDeptDTO> getParentAndAllDept(Long deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", deptId);
}
@Override
public Result<String> getParentDeptIds(Long deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentDeptIds", deptId);
}
}

44
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<PointsLogsEntity> {
*/
EpdcAppPointsRankingResultDTO listPointsRanking(EpdcAppPointsRankingFormDTO formDto);
/**
* @Description 积分管理-积分统计 -统计调整积分
* @Description 积分管理-积分统计 -统计调整积分
* @Author songyunpeng
* @Date 2020/6/9
* @Param [formDto]
@ -202,11 +198,41 @@ public interface PointsLogsService extends BaseService<PointsLogsEntity> {
*/
PageData<UserPointResultDTO> listPoint(Map<String, Object> 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<com.elink.esua.epdc.dto.result.PointsLogsResultDTO>
* @author Liuchuang
* @since 2021/1/19 14:29
*/
List<PointsLogsResultDTO> 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<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 17:45
*/
EpdcVerificationLogsResultDTO listOfVerificationLogs(EpdcWorkVerificationLogsFormDTO formDto);
}

104
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<PointsLogsDao, Points
return entities;
}
@Override
public List<PointsLogsResultDTO> 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<UserDTO> 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<PointsLogsResultDTO> 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<BehaviorResultDto> 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<Long> userGridIdByUserId = usersFeignClient.getUserGridIdByUserId(formDto.getUserId());
Result<ParentAndAllDeptDTO> 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<String> currentUserDept = adminFeignClient.getParentDeptIds(user.getDeptId());
pointsLogsEntity.setCreatedDeptAllDeptIds(currentUserDept.getData());
pointsLogsEntity.setCreatedDept(user.getDeptName());
pointsLogsEntity.setCreatedDeptId(user.getDeptId());
return pointsLogsEntity;
}
}

71
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 )
</select>
<select id="selectListOfPointsLogs" resultType="com.elink.esua.epdc.dto.result.PointsLogsResultDTO">
SELECT
ID,
USER_ID,
NICKNAME,
FACE_IMG,
OPERATION_DESC,
OPERATION_TIME,
OPERATION_TYPE,
POINTS
FROM
epdc_points_logs
WHERE
DEL_FLAG = '0'
AND USER_ID = #{userId}
AND BEHAVIOR_CODE = #{behaviorCode}
ORDER BY
CREATED_TIME DESC
LIMIT #{pageIndex}, #{pageSize}
</select>
<select id="selectListOfVerificationLogs" resultType="com.elink.esua.epdc.dto.result.PointsLogsResultDTO">
SELECT
ID,
USER_ID,
NICKNAME,
FACE_IMG,
OPERATION_DESC,
OPERATION_TIME,
OPERATION_TYPE,
POINTS
FROM
epdc_points_logs
WHERE
DEL_FLAG = '0'
AND OPERATION_MODE = #{operationMode}
AND CREATED_DEPT_ID = #{currentUserDeptId}
<if test="startTime != null and startTime != ''">
and DATE_FORMAT( OPERATION_TIME, '%Y-%m-%d' ) &gt;=#{startTime}
</if>
<if test="endTime != null and endTime != ''">
and DATE_FORMAT( OPERATION_TIME, '%Y-%m-%d' ) &lt;=#{endTime}
</if>
<if test="deptId != null and deptId != ''">
AND CREATED_DEPT_ID = #{deptId}
</if>
ORDER BY
CREATED_TIME DESC
LIMIT #{pageIndex}, #{pageSize}
</select>
<select id="selectCountOfVerificationLogs" resultType="integer">
SELECT
COUNT(ID)
FROM
epdc_points_logs
WHERE
DEL_FLAG = '0'
AND OPERATION_MODE = #{operationMode}
AND CREATED_DEPT_ID = #{currentUserDeptId}
<if test="startTime != null and startTime != ''">
and DATE_FORMAT( OPERATION_TIME, '%Y-%m-%d' ) &gt;=#{startTime}
</if>
<if test="endTime != null and endTime != ''">
and DATE_FORMAT( OPERATION_TIME, '%Y-%m-%d' ) &lt;=#{endTime}
</if>
<if test="deptId != null and deptId != ''">
AND GRID_ID = #{deptId}
</if>
</select>
</mapper>

5
esua-epdc/epdc-module/epdc-user/epdc-user-client/pom.xml

@ -19,6 +19,11 @@
<artifactId>epdc-commons-tools</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-oss-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>

81
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

23
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;
}

36
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;
}

21
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;
}

57
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<com.elink.esua.epdc.dto.epdc.result.UserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 10:54
*/
@GetMapping("getqrcode/{userId}")
public Result<UserPointsVerificationResultDTO> getQRCode(@PathVariable String userId) {
UserPointsVerificationResultDTO data = userPointsVerificationQrCodeService.generatePointsVerificationQRCode(userId);
return new Result<UserPointsVerificationResultDTO>().ok(data);
}
/**
* 扫描兑换码获取用户信息接口
*
* @param formDto 码ID
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcUserPointsVerificationResultDTO>
* @author Liuchuang
* @since 2021/1/19 15:09
*/
@PostMapping("getuserinfobycode")
public Result<EpdcUserPointsVerificationResultDTO> getUserInfoByCode(@RequestBody EpdcUserPointsVerificationCheckFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
EpdcUserPointsVerificationResultDTO data = userPointsVerificationQrCodeService.getUserInfoByCode(formDto.getQrCodeId());
return new Result<EpdcUserPointsVerificationResultDTO>().ok(data);
}
}

84
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<PageData<UserPointsVerificationQrCodeDTO>> page(@RequestParam Map<String, Object> params){
PageData<UserPointsVerificationQrCodeDTO> page = userPointsVerificationQrCodeService.page(params);
return new Result<PageData<UserPointsVerificationQrCodeDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<UserPointsVerificationQrCodeDTO> get(@PathVariable("id") String id){
UserPointsVerificationQrCodeDTO data = userPointsVerificationQrCodeService.get(id);
return new Result<UserPointsVerificationQrCodeDTO>().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();
}
}

43
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<UserPointsVerificationQrCodeEntity> {
/**
* 根据用户ID删除兑换码
*
* @param userId 用户ID
* @return void
* @author Liuchuang
* @since 2021/1/19 13:52
*/
void deleteByUserId(String userId);
}

51
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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;
}

41
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<java.lang.String>
* @Author: liuchuang
* @Date: 2019/9/11 17:17
*/
@PostMapping(value = "oss/file/uploadBase64")
Result<String> upload(UploadFormDTO formDTO);
/**
*
* 图片上传
*
* @params [file]
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UploadDTO>
* @author liuchuang
* @since 2019/11/25 16:13
*/
@PostMapping(value = "oss/file/uploadFile", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<String> uploadFile(UploadToOssDTO uploadToOssDto);
}

28
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<String> upload(UploadFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "upload", formDTO);
}
@Override
public Result<String> uploadFile(UploadToOssDTO uploadToOssDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "uploadFile", uploadToOssDto);
}
}

117
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<UserPointsVerificationQrCodeEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<UserPointsVerificationQrCodeDTO>
* @author generator
* @date 2021-01-18
*/
PageData<UserPointsVerificationQrCodeDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<UserPointsVerificationQrCodeDTO>
* @author generator
* @date 2021-01-18
*/
List<UserPointsVerificationQrCodeDTO> list(Map<String, Object> 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);
}

197
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
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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<UserPointsVerificationQrCodeDao, UserPointsVerificationQrCodeEntity> implements UserPointsVerificationQrCodeService {
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private UserService userService;
@Override
public PageData<UserPointsVerificationQrCodeDTO> page(Map<String, Object> params) {
IPage<UserPointsVerificationQrCodeEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, UserPointsVerificationQrCodeDTO.class);
}
@Override
public List<UserPointsVerificationQrCodeDTO> list(Map<String, Object> params) {
List<UserPointsVerificationQrCodeEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, UserPointsVerificationQrCodeDTO.class);
}
private QueryWrapper<UserPointsVerificationQrCodeEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<UserPointsVerificationQrCodeEntity> 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<String> 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();
}
}

7
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<UserDao, UserEntity> implem
@Override
public Result<UserDTO> 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);

10
esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserPointsVerificationQrCodeDao.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.dao.UserPointsVerificationQrCodeDao">
<delete id="deleteByUserId">
UPDATE epdc_user_points_verification_qr_code SET DEL_FLAG = '1', UPDATED_TIME = NOW() WHERE USER_ID = #{userId}
</delete>
</mapper>
Loading…
Cancel
Save