From 072d61a7220474b2ca2c4de69f857f4f5dd31e3e Mon Sep 17 00:00:00 2001 From: Sum1Dream <418471657@qq.com> Date: Thu, 18 Aug 2022 13:48:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=9D=E8=B4=B9=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HighTyAgentOilStationController.java | 6 - .../main/java/com/cweb/config/SysConfig.java | 9 + .../cweb/controller/HighUserController.java | 110 +++++++ .../src/main/resources/dev/config.properties | 2 + .../resources/prod-9401/config.properties | 3 + .../src/main/resources/prod/config.properties | 3 + .../com/hai/schedule/HighOrderSchedule.java | 1 + .../java/com/hai/common/QRCodeGenerator.java | 10 - .../java/com/hai/common/utils/ImageUtils.java | 307 ++++++++++++++++++ .../java/com/hai/common/utils/TelApiUtil.java | 3 + .../java/com/hai/config/CommonConfig.java | 169 ++++++++++ .../java/com/hai/config/CommonSysConfig.java | 10 + .../dao/BsDistributionRebateMapperExt.java | 25 +- .../com/hai/dao/BsRequestRecordMapperExt.java | 9 +- .../com/hai/entity/BsDistributionUserRel.java | 2 +- .../main/java/com/hai/entity/HighOrder.java | 20 ++ .../main/java/com/hai/entity/HighUser.java | 6 +- .../java/com/hai/enum_type/GoodsType.java | 6 +- .../java/com/hai/enum_type/OrderLogoEnum.java | 49 +++ .../service/BsDistributionUserRelService.java | 25 ++ .../com/hai/service/HighOrderService.java | 3 + .../java/com/hai/service/HighUserService.java | 12 + .../BsDistributionUserRelServiceImpl.java | 153 ++++++++- .../impl/BsIntegralRebateServiceImpl.java | 17 + .../service/impl/HighOrderServiceImpl.java | 34 +- .../hai/service/impl/HighUserServiceImpl.java | 16 +- .../resources/dev/commonConfig.properties | 5 + .../prod-9401/commonConfig.properties | 3 + .../resources/prod/commonConfig.properties | 3 + .../v1/controller/HighOrderController.java | 7 + 30 files changed, 986 insertions(+), 42 deletions(-) create mode 100644 hai-service/src/main/java/com/hai/common/utils/ImageUtils.java create mode 100644 hai-service/src/main/java/com/hai/config/CommonConfig.java create mode 100644 hai-service/src/main/java/com/hai/enum_type/OrderLogoEnum.java diff --git a/hai-bweb/src/main/java/com/bweb/controller/HighTyAgentOilStationController.java b/hai-bweb/src/main/java/com/bweb/controller/HighTyAgentOilStationController.java index b3db9988..90e2cd46 100644 --- a/hai-bweb/src/main/java/com/bweb/controller/HighTyAgentOilStationController.java +++ b/hai-bweb/src/main/java/com/bweb/controller/HighTyAgentOilStationController.java @@ -43,12 +43,6 @@ public class HighTyAgentOilStationController { @Resource private HighTyAgentOilStationService highTyAgentOilStationService; - @Resource - private BsOrganizationService organizationService; - - @Resource - private HighTySalesmanService tySalesmanService; - @Resource private UserCenter userCenter; diff --git a/hai-cweb/src/main/java/com/cweb/config/SysConfig.java b/hai-cweb/src/main/java/com/cweb/config/SysConfig.java index 3753b3ef..6b3ff21a 100644 --- a/hai-cweb/src/main/java/com/cweb/config/SysConfig.java +++ b/hai-cweb/src/main/java/com/cweb/config/SysConfig.java @@ -30,6 +30,7 @@ public class SysConfig { private String wxGzSubAppId; private String wxGzSubMchId; + private String qrCodeUrl; // 重庆电子商务有限公司 private String HDAppId; @@ -177,4 +178,12 @@ public class SysConfig { public void setImgUrl(String imgUrl) { this.imgUrl = imgUrl; } + + public String getQrCodeUrl() { + return qrCodeUrl; + } + + public void setQrCodeUrl(String qrCodeUrl) { + this.qrCodeUrl = qrCodeUrl; + } } diff --git a/hai-cweb/src/main/java/com/cweb/controller/HighUserController.java b/hai-cweb/src/main/java/com/cweb/controller/HighUserController.java index c077b8b0..6a0fa5ae 100644 --- a/hai-cweb/src/main/java/com/cweb/controller/HighUserController.java +++ b/hai-cweb/src/main/java/com/cweb/controller/HighUserController.java @@ -1,12 +1,17 @@ package com.cweb.controller; import com.alibaba.fastjson.JSONObject; +import com.cweb.config.SysConst; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.SysCode; import com.hai.common.security.*; +import com.hai.common.utils.ImageUtils; import com.hai.common.utils.RedisUtil; import com.hai.common.utils.ResponseMsgUtil; +import com.hai.config.CommonConfig; import com.hai.entity.HighOrder; import com.hai.entity.HighUser; import com.hai.entity.HighUserCoupon; @@ -27,6 +32,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; /** @@ -53,6 +60,12 @@ public class HighUserController { @Resource private HltUnionCardVipService hltUnionCardVipService; + @Resource + private BsDistributionUserRelService bsDistributionUserRelService; + + @Resource + private HighOrderService highOrderService; + @Resource private RedisUtil redisUtil; @@ -267,4 +280,101 @@ public class HighUserController { } } + @RequestMapping(value = "/userDistributionStatistics", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询分销用户统计内容") + public ResponseData userDistributionStatistics(HttpServletRequest request) { + try { + // 用户 + SessionObject sessionObject = userCenter.getSessionObject(request); + HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject(); + return ResponseMsgUtil.success(bsDistributionUserRelService.userDistributionStatistics(userInfoModel.getHighUser().getId())); + } catch (Exception e) { + log.error("HighOrderController --> getBackendToken() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/distributionInviteList", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询分销用户邀请列表") + public ResponseData distributionInviteList(HttpServletRequest request, + @RequestParam(name = "pageNum", required = true) Integer pageNum, + @RequestParam(name = "pageSize", required = true) Integer pageSize) { + try { + // 用户 + SessionObject sessionObject = userCenter.getSessionObject(request); + HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject(); + + Map map = new HashMap<>(); + map.put("popularizeUserId" , userInfoModel.getHighUser().getId()); + + + PageHelper.startPage(pageNum,pageSize); + return ResponseMsgUtil.success(new PageInfo<>(bsDistributionUserRelService.getDistributionUserRelList(map))); + } catch (Exception e) { + log.error("HighOrderController --> getBackendToken() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/distributionOrderList", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询分销用户积分列表") + public ResponseData distributionOrderList(HttpServletRequest request, + @RequestParam(name = "pageNum", required = true) Integer pageNum, + @RequestParam(name = "pageSize", required = true) Integer pageSize) { + try { + // 用户 + SessionObject sessionObject = userCenter.getSessionObject(request); + HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject(); + + Map map = new HashMap<>(); + map.put("popularizeUserId" , userInfoModel.getHighUser().getId()); + PageHelper.startPage(pageNum,pageSize); + return ResponseMsgUtil.success(new PageInfo<>(bsDistributionUserRelService.getDistributionRebateList(map))); + } catch (Exception e) { + log.error("HighOrderController --> getBackendToken() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/promotionalPosters", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "生成推广海报") + public ResponseData promotionalPosters(HttpServletRequest request) { + try { + // 用户 + SessionObject sessionObject = userCenter.getSessionObject(request); + HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject(); + + String path = ImageUtils.QrCodeImg(SysConst.getSysConfig().getQrCodeUrl() , userInfoModel.getHighUser().getId().intValue()); + + CommonConfig.overlapImage(path , userInfoModel.getHighUser().getId().toString()); + + return ResponseMsgUtil.success(SysConst.getSysConfig().getImgUrl() + path); + } catch (Exception e) { + log.error("HighOrderController --> getBackendToken() error!", e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/promoteOrderList", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询用户推广列表") + public ResponseData promoteOrderList(HttpServletRequest request, + @RequestParam(name = "pageNum", required = true) Integer pageNum, + @RequestParam(name = "pageSize", required = true) Integer pageSize) { + try { + // 用户 + SessionObject sessionObject = userCenter.getSessionObject(request); + HighUserModel userInfoModel = (HighUserModel) sessionObject.getObject(); + + PageHelper.startPage(pageNum,pageSize); + return ResponseMsgUtil.success(new PageInfo<>(highOrderService.promoteOrderList(userInfoModel.getHighUser().getId()))); + } catch (Exception e) { + log.error("HighOrderController --> getBackendToken() error!", e); + return ResponseMsgUtil.exception(e); + } + } } diff --git a/hai-cweb/src/main/resources/dev/config.properties b/hai-cweb/src/main/resources/dev/config.properties index 657c7733..53a3b59d 100644 --- a/hai-cweb/src/main/resources/dev/config.properties +++ b/hai-cweb/src/main/resources/dev/config.properties @@ -23,3 +23,5 @@ imgUrl=https://hsgcs.dctpay.com/filesystem/ fileUrl=/home/project/hsg/filesystem cmsPath=/home/project/hsg/filesystem/cmsPath couponCodePath=/home/project/hsg/filesystem/couponCode + +qrCodeUrl=https://hsgcs.dctpay.com/hsgH5?accountId=000009&key=&code= diff --git a/hai-cweb/src/main/resources/prod-9401/config.properties b/hai-cweb/src/main/resources/prod-9401/config.properties index ed2c6c16..d60d2170 100644 --- a/hai-cweb/src/main/resources/prod-9401/config.properties +++ b/hai-cweb/src/main/resources/prod-9401/config.properties @@ -21,3 +21,6 @@ imgUrl=https://hsg.dctpay.com/filesystem/ fileUrl=/home/project/hsg/filesystem cmsPath=/home/project/hsg/filesystem/cmsPath couponCodePath=/home/project/hsg/filesystem/couponCode + + +qrCodeUrl=https://hsg.dctpay.com/hsgH5?accountId=000009&key=&code= diff --git a/hai-cweb/src/main/resources/prod/config.properties b/hai-cweb/src/main/resources/prod/config.properties index 6ad1b7f2..783d4ab4 100644 --- a/hai-cweb/src/main/resources/prod/config.properties +++ b/hai-cweb/src/main/resources/prod/config.properties @@ -23,3 +23,6 @@ imgUrl=https://hsg.dctpay.com/filesystem/ fileUrl=/home/project/hsg/filesystem cmsPath=/home/project/hsg/filesystem/cmsPath couponCodePath=/home/project/hsg/filesystem/couponCode + + +qrCodeUrl=https://hsg.dctpay.com/hsgH5?accountId=000009&key=&code= diff --git a/hai-schedule/src/main/java/com/hai/schedule/HighOrderSchedule.java b/hai-schedule/src/main/java/com/hai/schedule/HighOrderSchedule.java index 8426151c..0a9ff1f5 100644 --- a/hai-schedule/src/main/java/com/hai/schedule/HighOrderSchedule.java +++ b/hai-schedule/src/main/java/com/hai/schedule/HighOrderSchedule.java @@ -446,6 +446,7 @@ public class HighOrderSchedule { if (goldRecs.size() == 0) { List childOrderList = highOrderService.getChildOrderByOrder(highOrder.getId()); + // 查询订单来源 JSONObject object = highOrderService.orderSource(childOrderList.get(0).getGoodsType() , childOrderList.get(0).getGoodsId(),highOrder.getOrderNo() , highOrder.getCompanyId()); object.put("price" , highOrder.getPayRealPrice()); diff --git a/hai-service/src/main/java/com/hai/common/QRCodeGenerator.java b/hai-service/src/main/java/com/hai/common/QRCodeGenerator.java index 7ac839f9..ce60a9a2 100644 --- a/hai-service/src/main/java/com/hai/common/QRCodeGenerator.java +++ b/hai-service/src/main/java/com/hai/common/QRCodeGenerator.java @@ -32,14 +32,4 @@ public class QRCodeGenerator { } - public static void main(String[] args) { - try { - generateQRCodeImage("This is my first QR Code", 350, 350, "D:\\/ss/qr1.png"); - } catch (WriterException e) { - System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage()); - } catch (IOException e) { - System.out.println("Could not generate QR Code, IOException :: " + e.getMessage()); - } - - } } diff --git a/hai-service/src/main/java/com/hai/common/utils/ImageUtils.java b/hai-service/src/main/java/com/hai/common/utils/ImageUtils.java new file mode 100644 index 00000000..993e4c85 --- /dev/null +++ b/hai-service/src/main/java/com/hai/common/utils/ImageUtils.java @@ -0,0 +1,307 @@ +package com.hai.common.utils; + + +import com.hai.common.QRCodeGenerator; +import com.hai.config.CommonSysConst; +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Objects; + +/** + * 图片处理 + */ +public class ImageUtils { + + public static void main(String[] args) throws Exception { + String a = ImageToBase64ByOnline("https://oos.jyfwy.cn/common/test/test20210511.jpg"); + System.out.println(a); + } + + public static String transferAlphaForHttp(InputStream inputStream){ + try { + byte[] data = transferAlpha(null,inputStream,130); + return byteArrayToBase64(data); + }catch (Exception e){ + e.printStackTrace(); + } + return ""; + } + + public static String byteArrayToBase64(byte[] bytes) { + BASE64Encoder encoder = new BASE64Encoder(); + String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串 + png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n + System.out.println("值为:" + "data:image/jpg;base64," + png_base64); + return "data:image/jpg;base64," + png_base64; + } + + /** + * 图片去白色的背景,并裁切 + * + * @param image 图片 + * @param range 范围 1-255 越大 容错越高 去掉的背景越多 + * @return 图片 + * @throws Exception 异常 + */ + public static byte[] transferAlpha(Image image, InputStream in, int range) throws Exception { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + try { + if (image == null && in != null) { + image = ImageIO.read(in); + } + ImageIcon imageIcon = new ImageIcon(image); + BufferedImage bufferedImage = new BufferedImage(imageIcon + .getIconWidth(), imageIcon.getIconHeight(), + BufferedImage.TYPE_4BYTE_ABGR); + Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); + g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon + .getImageObserver()); + int alpha = 0; + int minX = bufferedImage.getWidth(); + int minY = bufferedImage.getHeight(); + int maxX = 0; + int maxY = 0; + + for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage + .getHeight(); j1++) { + for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage + .getWidth(); j2++) { + int rgb = bufferedImage.getRGB(j2, j1); + + int R = (rgb & 0xff0000) >> 16; + int G = (rgb & 0xff00) >> 8; + int B = (rgb & 0xff); + if (((255 - R) < range) && ((255 - G) < range) && ((255 - B) < range)) { //去除白色背景; + rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff); + } else { + minX = minX <= j2 ? minX : j2; + minY = minY <= j1 ? minY : j1; + maxX = maxX >= j2 ? maxX : j2; + maxY = maxY >= j1 ? maxY : j1; + } + bufferedImage.setRGB(j2, j1, rgb); + } + } + int width = maxX - minX; + int height = maxY - minY; + BufferedImage sub = bufferedImage.getSubimage(minX, minY, width, height); + ImageIO.write(sub, "png", byteArrayOutputStream); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + return byteArrayOutputStream.toByteArray(); + } + + public static byte[] transferAlphaAndRotate(Image image, InputStream in, int range, double angel) throws Exception { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + try { + if (image == null && in != null) { + image = ImageIO.read(in); + } + image = imageRotate(image,angel); + ImageIcon imageIcon = new ImageIcon(image); + BufferedImage bufferedImage = new BufferedImage(imageIcon + .getIconWidth(), imageIcon.getIconHeight(), + BufferedImage.TYPE_4BYTE_ABGR); + Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); + g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon + .getImageObserver()); + int alpha = 0; + int minX = bufferedImage.getWidth(); + int minY = bufferedImage.getHeight(); + int maxX = 0; + int maxY = 0; + + for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage + .getHeight(); j1++) { + for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage + .getWidth(); j2++) { + int rgb = bufferedImage.getRGB(j2, j1); + + int R = (rgb & 0xff0000) >> 16; + int G = (rgb & 0xff00) >> 8; + int B = (rgb & 0xff); + if (((255 - R) < range) && ((255 - G) < range) && ((255 - B) < range)) { //去除白色背景; + rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff); + } else { + minX = minX <= j2 ? minX : j2; + minY = minY <= j1 ? minY : j1; + maxX = maxX >= j2 ? maxX : j2; + maxY = maxY >= j1 ? maxY : j1; + } + bufferedImage.setRGB(j2, j1, rgb); + } + } + int width = maxX - minX; + int height = maxY - minY; + BufferedImage sub = bufferedImage.getSubimage(minX, minY, width, height); + ImageIO.write(sub, "png", byteArrayOutputStream); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + + return byteArrayOutputStream.toByteArray(); + } + + /** + * 图像旋转 + * @param src + * @param angel + * @return + */ + public static BufferedImage imageRotate(Image src, double angel) { + int src_width = src.getWidth(null); + int src_height = src.getHeight(null); + // calculate the new image size + Rectangle rect_des = CalcRotatedSize(new Rectangle(new Dimension( + src_width, src_height)), angel); + + BufferedImage res = null; + res = new BufferedImage(rect_des.width, rect_des.height, + BufferedImage.TYPE_3BYTE_BGR); + Graphics2D g2 = res.createGraphics(); + // transform + g2.translate((rect_des.width - src_width) / 2, + (rect_des.height - src_height) / 2); + g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2); + + g2.drawImage(src, null, null); + return res; + } + + public static Rectangle CalcRotatedSize(Rectangle src, double angel) { + // if angel is greater than 90 degree, we need to do some conversion + if (angel >= 90) { + if(angel / 90 % 2 == 1){ + int temp = src.height; + src.height = src.width; + src.width = temp; + } + angel = angel % 90; + } + + double r = Math.sqrt(src.height * src.height + src.width * src.width) / 2; + double len = 2 * Math.sin(Math.toRadians(angel) / 2) * r; + double angel_alpha = (Math.PI - Math.toRadians(angel)) / 2; + double angel_dalta_width = Math.atan((double) src.height / src.width); + double angel_dalta_height = Math.atan((double) src.width / src.height); + + int len_dalta_width = (int) (len * Math.cos(Math.PI - angel_alpha + - angel_dalta_width)); + len_dalta_width=len_dalta_width>0?len_dalta_width:-len_dalta_width; + + int len_dalta_height = (int) (len * Math.cos(Math.PI - angel_alpha + - angel_dalta_height)); + len_dalta_height=len_dalta_height>0?len_dalta_height:-len_dalta_height; + + int des_width = src.width + len_dalta_width * 2; + int des_height = src.height + len_dalta_height * 2; + des_width=des_width>0?des_width:-des_width; + des_height=des_height>0?des_height:-des_height; + return new Rectangle(new Dimension(des_width, des_height)); + } + + + /** + * base64转inputStream + * @param base64string + * @return + */ + public static InputStream BaseToInputStream(String base64string){ + ByteArrayInputStream stream = null; + try { + BASE64Decoder decoder = new BASE64Decoder(); + byte[] bytes1 = decoder.decodeBuffer(base64string); + stream = new ByteArrayInputStream(bytes1); + } catch (Exception e) { + // TODO: handle exception + } + return stream; + } + + /** + * 获取网络图片流 + * + * @param url + * @return + */ + public static InputStream getImageStream(String url) { + try { + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setReadTimeout(5000); + connection.setConnectTimeout(5000); + connection.setRequestMethod("GET"); + if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream inputStream = connection.getInputStream(); + return inputStream; + } + } catch (IOException e) { + System.out.println("获取网络图片出现异常,图片路径为:" + url); + e.printStackTrace(); + } + return null; + } + + + public static String ImageToBase64ByOnline(String imgURL) { + ByteArrayOutputStream data = new ByteArrayOutputStream(); + try { + // 创建URL + URL url = new URL(imgURL); + byte[] by = new byte[1024]; + // 创建链接 + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(5000); + InputStream is = conn.getInputStream(); + // 将内容读取内存中 + int len = -1; + while ((len = is.read(by)) != -1) { + data.write(by, 0, len); + } + // 关闭流 + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + // 对字节数组Base64编码 + BASE64Encoder encoder = new BASE64Encoder(); + return encoder.encode(data.toByteArray()); + } + + public static String ImageToBase64(String imgPath) { + byte[] data = null; + // 读取图片字节数组 + try { + InputStream in = new FileInputStream(imgPath); + data = new byte[in.available()]; + in.read(data); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + // 对字节数组Base64编码 + BASE64Encoder encoder = new BASE64Encoder(); + // 返回Base64编码过的字节数组字符串 + return encoder.encode(Objects.requireNonNull(data)); + } + + public static String QrCodeImg(String imgPath , Integer id) throws Exception { + // 生成二维码 + String qrCodeImg = "qrCode/" + id + ".png"; + String qrCodeUrl = CommonSysConst.getSysConfig().getFileUrl() + qrCodeImg; + QRCodeGenerator.generateQRCodeImage(imgPath + id, 134, 134, qrCodeUrl); + return qrCodeImg; + } +} diff --git a/hai-service/src/main/java/com/hai/common/utils/TelApiUtil.java b/hai-service/src/main/java/com/hai/common/utils/TelApiUtil.java index 9f520447..19ae4a8d 100644 --- a/hai-service/src/main/java/com/hai/common/utils/TelApiUtil.java +++ b/hai-service/src/main/java/com/hai/common/utils/TelApiUtil.java @@ -28,5 +28,8 @@ public class TelApiUtil { return m.matches(); } + public static String phoneDesensitization(String phone) { + return phone.substring(0,3) + "****" + phone.substring(phone.length() - 4); + } } diff --git a/hai-service/src/main/java/com/hai/config/CommonConfig.java b/hai-service/src/main/java/com/hai/config/CommonConfig.java new file mode 100644 index 00000000..74fca6f6 --- /dev/null +++ b/hai-service/src/main/java/com/hai/config/CommonConfig.java @@ -0,0 +1,169 @@ +package com.hai.config; + +import org.springframework.context.annotation.Configuration; +import sun.font.FontDesignMetrics; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * @serviceName QrCodeUtilsConfig.java + * @author Sum1Dream + * @version 1.0.0 + * @Description // 工具 + * @createTime 09:54 2022/4/13 + **/ +@Configuration +public class CommonConfig { + + //得到该字体字符串的长度 + public static int getWordWidth(Font font, String content) { + FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font); + int width = 0; + for (int i = 0; i < content.length(); i++) { + width += metrics.charWidth(content.charAt(i)); + } + return width; + } + + // 二维码生产自定义图片 + public static void overlapImage(String path , String content) throws Exception { + BufferedImage read = ImageIO.read(new File(CommonSysConst.getSysConfig().getFileUrl() + "img/original_image.png")); + Image image = ImageIO.read(new File(CommonSysConst.getSysConfig().getFileUrl() + "/" + path)); + + Graphics graphics = read.getGraphics(); + + graphics.drawImage(image, (read.getWidth() - image.getWidth(null))/2 ,306, null); + graphics.setColor(Color.BLACK); + //定义字体 + Font font = new Font("微软雅黑", Font.PLAIN, 14); + //计算该字体文本的长度 + int wordWidth = CommonConfig.getWordWidth(font, content); + + graphics.setFont(font); + graphics.drawString( content, (read.getWidth() - wordWidth)/2 ,304 + image.getHeight(null)); + + ImageIO.write(read , "png" , new File(CommonSysConst.getSysConfig().getFileUrl() + "/" + path)); + } + + + /** + * 多文件压缩成ZIP + * + * @param imageMap 需要压缩的文件列表,键值对为 <文件名,文件的字节数组>,文件名必须包含后缀 + * @param out 压缩文件输出流 + * @throws RuntimeException 压缩失败会抛出运行时异常 + */ + public static void toZip(Map imageMap, OutputStream out) throws RuntimeException { + long start = System.currentTimeMillis(); + try (ZipOutputStream zos = new ZipOutputStream(out)) { + for (Map.Entry map : imageMap.entrySet()) { + zos.putNextEntry(new ZipEntry(map.getKey())); + zos.write(map.getValue()); + zos.closeEntry(); + } + long end = System.currentTimeMillis(); + System.out.println("压缩完成,耗时:" + (end - start) + " ms"); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils", e); + } + } + + + /** + * + * 文件夹压缩成ZIP + * + * @param srcDir 压缩文件夹路径 + * @param out 压缩文件输出流 + * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + * + * @throws RuntimeException 压缩失败会抛出运行时异常 + * + */ + public static void toZip(String srcDir, OutputStream out, boolean keepDirStructure) + throws RuntimeException { + long start = System.currentTimeMillis(); + ZipOutputStream zos = null; + try { + zos = new ZipOutputStream(out); + File sourceFile = new File(srcDir); + compress(sourceFile, zos, sourceFile.getName(), keepDirStructure); + long end = System.currentTimeMillis(); + System.out.println("压缩完成,耗时:" + (end - start) + " ms"); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils", e); + } finally { + if (zos != null) { + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * + * 递归压缩方法 + * @param sourceFile 源文件 + * @param zos zip输出流 + * @param name 压缩后的名称 + * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + * @throws Exception + */ + private static void compress(File sourceFile, ZipOutputStream zos, String name, boolean keepDirStructure) throws Exception { + byte[] buf = new byte[2048]; + if (sourceFile.isFile()) { + // 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字 + zos.putNextEntry(new ZipEntry(name)); + // copy文件到zip输出流中 + int len; + FileInputStream in = new FileInputStream(sourceFile); + while ((len = in.read(buf)) != -1) { + zos.write(buf, 0, len); + } + // Complete the entry + zos.closeEntry(); + in.close(); + } else { + File[] listFiles = sourceFile.listFiles(); + if (listFiles == null || listFiles.length == 0) { + // 需要保留原来的文件结构时,需要对空文件夹进行处理 + if (keepDirStructure) { + // 空文件夹的处理 + zos.putNextEntry(new ZipEntry(name + "/")); + // 没有文件,不需要文件的copy + zos.closeEntry(); + } + } else { + for (File file : listFiles) { + // 判断是否需要保留原来的文件结构 + if (keepDirStructure) { + // 注意:file.getName()前面需要带上父文件夹的名字加一斜杠, + // 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了 + compress(file, zos, name + "/" + file.getName(), keepDirStructure); + } else { + compress(file, zos, file.getName(), keepDirStructure); + } + } + } + } + } + + + +} diff --git a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java index 44cf0163..bc053361 100644 --- a/hai-service/src/main/java/com/hai/config/CommonSysConfig.java +++ b/hai-service/src/main/java/com/hai/config/CommonSysConfig.java @@ -99,6 +99,8 @@ public class CommonSysConfig { private String unionSecret; private String unionRsaKey; + private String fileUrl; + public String getJzAppId() { return jzAppId; } @@ -643,4 +645,12 @@ public class CommonSysConfig { public void setGasDefaultOilStationImg(String gasDefaultOilStationImg) { this.gasDefaultOilStationImg = gasDefaultOilStationImg; } + + public String getFileUrl() { + return fileUrl; + } + + public void setFileUrl(String fileUrl) { + this.fileUrl = fileUrl; + } } diff --git a/hai-service/src/main/java/com/hai/dao/BsDistributionRebateMapperExt.java b/hai-service/src/main/java/com/hai/dao/BsDistributionRebateMapperExt.java index b898b4be..7dabc685 100644 --- a/hai-service/src/main/java/com/hai/dao/BsDistributionRebateMapperExt.java +++ b/hai-service/src/main/java/com/hai/dao/BsDistributionRebateMapperExt.java @@ -1,7 +1,30 @@ package com.hai.dao; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.Map; + /** * mapper扩展类 */ public interface BsDistributionRebateMapperExt { -} \ No newline at end of file + + + @Select({ + "" + }) + Map countDistribution(@Param("userId") Long userId); + + @Select({ + "" + }) + BigDecimal toDayIntegralNum(@Param("userId") Long userId); + + +} diff --git a/hai-service/src/main/java/com/hai/dao/BsRequestRecordMapperExt.java b/hai-service/src/main/java/com/hai/dao/BsRequestRecordMapperExt.java index 70c4a8b3..c32a6564 100644 --- a/hai-service/src/main/java/com/hai/dao/BsRequestRecordMapperExt.java +++ b/hai-service/src/main/java/com/hai/dao/BsRequestRecordMapperExt.java @@ -1,7 +1,14 @@ package com.hai.dao; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Map; + /** * mapper扩展类 */ public interface BsRequestRecordMapperExt { -} \ No newline at end of file + + +} diff --git a/hai-service/src/main/java/com/hai/entity/BsDistributionUserRel.java b/hai-service/src/main/java/com/hai/entity/BsDistributionUserRel.java index 56c4b29d..11197afe 100644 --- a/hai-service/src/main/java/com/hai/entity/BsDistributionUserRel.java +++ b/hai-service/src/main/java/com/hai/entity/BsDistributionUserRel.java @@ -270,4 +270,4 @@ public class BsDistributionUserRel implements Serializable { sb.append("]"); return sb.toString(); } -} \ No newline at end of file +} diff --git a/hai-service/src/main/java/com/hai/entity/HighOrder.java b/hai-service/src/main/java/com/hai/entity/HighOrder.java index 7fc2c1f5..4c6567a1 100644 --- a/hai-service/src/main/java/com/hai/entity/HighOrder.java +++ b/hai-service/src/main/java/com/hai/entity/HighOrder.java @@ -245,6 +245,26 @@ public class HighOrder implements Serializable { private String password; + private String time; + + private String goodsTypeName; + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getGoodsTypeName() { + return goodsTypeName; + } + + public void setGoodsTypeName(String goodsTypeName) { + this.goodsTypeName = goodsTypeName; + } + /** * 是否自动充值积分 0 否 1 是 */ diff --git a/hai-service/src/main/java/com/hai/entity/HighUser.java b/hai-service/src/main/java/com/hai/entity/HighUser.java index 319dc82e..bb17936a 100644 --- a/hai-service/src/main/java/com/hai/entity/HighUser.java +++ b/hai-service/src/main/java/com/hai/entity/HighUser.java @@ -1,5 +1,7 @@ package com.hai.entity; +import com.hai.model.UserModel; + import java.io.Serializable; import java.util.Date; @@ -12,7 +14,7 @@ import java.util.Date; * 代码由工具生成 * **/ -public class HighUser implements Serializable { +public class HighUser extends UserModel implements Serializable { /** * 用户编号 */ @@ -367,4 +369,4 @@ public class HighUser implements Serializable { sb.append("]"); return sb.toString(); } -} \ No newline at end of file +} diff --git a/hai-service/src/main/java/com/hai/enum_type/GoodsType.java b/hai-service/src/main/java/com/hai/enum_type/GoodsType.java index 4f246b7d..9cdfe5d3 100644 --- a/hai-service/src/main/java/com/hai/enum_type/GoodsType.java +++ b/hai-service/src/main/java/com/hai/enum_type/GoodsType.java @@ -9,7 +9,11 @@ public enum GoodsType { goodsType3(3 , "团油"), goodsType4(4 , "KFC"), goodsType5(5 , "电影票"), - goodsType6(6 , "话费充值") + goodsType6(6 , "话费充值"), + goodsType7(7 , "优惠卷包"), + goodsType8(8 , "汇联通充值"), + goodsType9(9 , "星巴克"), + goodsType10(10 , "会员充值"), ; private Integer type; diff --git a/hai-service/src/main/java/com/hai/enum_type/OrderLogoEnum.java b/hai-service/src/main/java/com/hai/enum_type/OrderLogoEnum.java new file mode 100644 index 00000000..35f6e150 --- /dev/null +++ b/hai-service/src/main/java/com/hai/enum_type/OrderLogoEnum.java @@ -0,0 +1,49 @@ +package com.hai.enum_type; + +import java.util.Objects; + +/** + * 产品图片 + * @author hurui + */ +public enum OrderLogoEnum { + name1("orderLogo/coupon.png", 1), + name3("orderLogo/refuel.png", 3), + name4("orderLogo/kfc.png", 4), + name9("orderLogo/starbucks.png", 9), + name10("orderLogo/member-recharge.png", 10), + name20("orderLogo/call-charges.png", 20), + ; + + + private String imgUrl; + + private Integer type; + public static String getNameByImgUrl(Integer type) { + for (OrderLogoEnum ele : values()) { + if(Objects.equals(type,ele.getType())) return ele.getImgUrl(); + } + return null; + } + + OrderLogoEnum(String imgUrl, Integer type) { + this.imgUrl = imgUrl; + this.type = type; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/hai-service/src/main/java/com/hai/service/BsDistributionUserRelService.java b/hai-service/src/main/java/com/hai/service/BsDistributionUserRelService.java index 8d5fdd75..586cfa4f 100644 --- a/hai-service/src/main/java/com/hai/service/BsDistributionUserRelService.java +++ b/hai-service/src/main/java/com/hai/service/BsDistributionUserRelService.java @@ -1,5 +1,6 @@ package com.hai.service; +import com.alibaba.fastjson.JSONObject; import com.hai.entity.BsDistributionRebate; import com.hai.entity.BsDistributionUserRel; @@ -44,4 +45,28 @@ public interface BsDistributionUserRelService { * @return com.hai.entity.BsDistributionUserRel */ BsDistributionUserRel findDistributionUserRel(Map map); + + /** + * @Author Sum1Dream + * @name distributionRebate.java + * @Description // 分销返利 + * @Date 14:24 2022/8/15 + * @Param [com.alibaba.fastjson.JSONObject] + * @return void + */ + void distributionRebate(JSONObject object); + + /** + * @Author Sum1Dream + * @name userDistributionStatistics.java + * @Description // 用户分销统计 + * @Date 10:50 2022/8/16 + * @Param [java.lang.Long] + * @return com.alibaba.fastjson.JSONObject + */ + JSONObject userDistributionStatistics(Long userId); + + + List getDistributionRebateList(Map map) throws Exception; + } diff --git a/hai-service/src/main/java/com/hai/service/HighOrderService.java b/hai-service/src/main/java/com/hai/service/HighOrderService.java index 1512a62e..f293466c 100644 --- a/hai-service/src/main/java/com/hai/service/HighOrderService.java +++ b/hai-service/src/main/java/com/hai/service/HighOrderService.java @@ -562,4 +562,7 @@ public interface HighOrderService { * @return com.alibaba.fastjson.JSONObject */ JSONObject orderSource(Integer goodsType , Long goodsId , String orderNo , Long companyId); + + List promoteOrderList(Long identificationCode) throws Exception; + } diff --git a/hai-service/src/main/java/com/hai/service/HighUserService.java b/hai-service/src/main/java/com/hai/service/HighUserService.java index 46862901..4f1d896b 100644 --- a/hai-service/src/main/java/com/hai/service/HighUserService.java +++ b/hai-service/src/main/java/com/hai/service/HighUserService.java @@ -1,5 +1,6 @@ package com.hai.service; +import com.alibaba.fastjson.JSONObject; import com.hai.entity.HighUser; import javax.servlet.http.HttpServletRequest; @@ -121,4 +122,15 @@ public interface HighUserService { Long countUser(); + /** + * @Author Sum1Dream + * @name userDistributionStatistics.java + * @Description // 用户分销统计 + * @Date 10:00 2022/8/16 + * @Param [java.lang.Long] + * @return com.alibaba.fastjson.JSONObject + */ + JSONObject userDistributionStatistics(Long userId); + + } diff --git a/hai-service/src/main/java/com/hai/service/impl/BsDistributionUserRelServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/BsDistributionUserRelServiceImpl.java index 4a9b291e..479cec00 100644 --- a/hai-service/src/main/java/com/hai/service/impl/BsDistributionUserRelServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/BsDistributionUserRelServiceImpl.java @@ -1,5 +1,9 @@ package com.hai.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.hai.common.utils.DateUtil; +import com.hai.common.utils.TelApiUtil; +import com.hai.dao.BsDistributionRebateMapper; import com.hai.dao.BsDistributionUserRelMapper; import com.hai.entity.*; import com.hai.service.*; @@ -21,6 +25,9 @@ public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelSe @Resource private HighDiscountPackageService highDiscountPackageService; + @Resource + private BsDistributionRebateMapper bsDistributionRebateMapper; + @Resource private HighUserService highUserService; @@ -46,15 +53,21 @@ public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelSe BsDistributionUserRel popularizeUser = findDistributionUserRel(map); - if (popularizeUser != null) { - distributionUserRel.setAgentId(popularizeUser.getAgentId()); - distributionUserRel.setAgentName(popularizeUser.getAgentName()); + if (pUser.getIsAgent() != null) { + distributionUserRel.setAgentId(pUser.getId()); + distributionUserRel.setAgentName(pUser.getName()); + } else { + if (popularizeUser != null) { + distributionUserRel.setAgentId(popularizeUser.getAgentId()); + distributionUserRel.setAgentName(popularizeUser.getAgentName()); + } + distributionUserRel.setPopularizeUserId(popularizeUserId); + distributionUserRel.setPopularizeUserName(pUser.getName()); } distributionUserRel.setUserId(userId); distributionUserRel.setUserName(user.getName()); - distributionUserRel.setPopularizeUserId(popularizeUserId); - distributionUserRel.setPopularizeUserName(pUser.getName()); + distributionUserRel.setPhone(TelApiUtil.phoneDesensitization(user.getPhone())); distributionUserRel.setCreateTime(new Date()); distributionUserRel.setUpdateTime(new Date()); distributionUserRel.setStatus(100); @@ -76,13 +89,16 @@ public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelSe freeMap.put("userPhone", user.getPhone()); highDiscountPackageService.freeUserDiscountPackage(freeMap); - // 查询推广有礼优惠券包 - HighDiscountPackage promoteDiscountPackage = highDiscountPackageService.getCallExclusive(4 , bsCompany.getId().intValue()); - Map freeMap1 = new HashMap<>(); - freeMap1.put("discountPackageId", promoteDiscountPackage.getId()); - freeMap1.put("userId", userId); - freeMap1.put("userPhone", user.getPhone()); - highDiscountPackageService.freeUserDiscountPackage(freeMap1); + if (pUser.getIsAgent() == null) { + // 查询推广有礼优惠券包 + HighDiscountPackage promoteDiscountPackage = highDiscountPackageService.getCallExclusive(4 , bsCompany.getId().intValue()); + Map freeMap1 = new HashMap<>(); + freeMap1.put("discountPackageId", promoteDiscountPackage.getId()); + freeMap1.put("userId", pUser.getId()); + freeMap1.put("userPhone", pUser.getPhone()); + highDiscountPackageService.freeUserDiscountPackage(freeMap1); + } + } catch (Exception e) { e.printStackTrace(); } @@ -93,7 +109,20 @@ public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelSe @Override public List getDistributionUserRelList(Map map) { - return null; + + BsDistributionUserRelExample example = new BsDistributionUserRelExample(); + BsDistributionUserRelExample.Criteria criteria = example.createCriteria(); + + + if (MapUtils.getLong(map , "userId") != null) { + criteria.andUserIdEqualTo(MapUtils.getLong(map , "userId")); + } + + if (MapUtils.getLong(map , "popularizeUserId") != null) { + criteria.andPopularizeUserIdEqualTo(MapUtils.getLong(map , "popularizeUserId")); + } + + return bsDistributionUserRelMapper.selectByExample(example); } @Override @@ -114,4 +143,102 @@ public class BsDistributionUserRelServiceImpl implements BsDistributionUserRelSe return null; } + + + @Override + public void distributionRebate(JSONObject object) { + HighUser user = highUserService.findByUserId(object.getLong("userId")); + // 查询下单用户上级推广员 + Map mapSuper = new HashMap<>(); + mapSuper.put("userId" , object.getLong("userId")); + BsDistributionUserRel distributionUserRel = findDistributionUserRel(mapSuper); + BsDistributionRebate distributionRebate = new BsDistributionRebate(); + // 上级推广员返利 + if (distributionUserRel != null) { + distributionRebate.setAgentId(distributionUserRel.getAgentId()); + distributionRebate.setCreateTime(new Date()); + distributionRebate.setUpdateTime(new Date()); + distributionRebate.setStatus(100); + distributionRebate.setType(1); + distributionRebate.setUserName(user.getName()); + distributionRebate.setUserId(object.getLong("userId")); + distributionRebate.setAgentId(distributionUserRel.getAgentId()); + distributionUserRel.setAgentName(distributionUserRel.getAgentName()); + distributionUserRel.setUserName(user.getName()); + distributionRebate.setPopularizeUserId(distributionUserRel.getPopularizeUserId()); + distributionRebate.setTitle(object.getString("title")); + distributionRebate.setIntegralNum(object.getBigDecimal("integralNumFirst")); + distributionRebate.setOrderNo(object.getString("orderNo")); + distributionRebate.setExt1(object.getString("logoImg")); + + if (distributionUserRel.getPopularizeUserId() != null) { + bsDistributionRebateMapper.insert(distributionRebate); + // 上级返利 + highUserService.goldHandle(distributionUserRel.getPopularizeUserId(), object.getInteger("integralNumFirst"), 1, 4, object.getLong("userId") , user.getName() + "下单:获得返利" + object.getInteger("integralNumFirst")); + + // 查询下单用户顶级推广员 + Map mapTop = new HashMap<>(); + mapTop.put("userId" , distributionUserRel.getPopularizeUserId()); + BsDistributionUserRel distributionUserRelTop = findDistributionUserRel(mapTop); + if (distributionUserRelTop != null) { + // 顶级推广员 + if (distributionUserRelTop.getPopularizeUserId() != null) { + distributionRebate.setIntegralNum(object.getBigDecimal("integralNumSecond")); + distributionRebate.setPopularizeUserId(distributionUserRelTop.getPopularizeUserId()); + distributionRebate.setType(2); + bsDistributionRebateMapper.insert(distributionRebate); + // 顶级返利 + highUserService.goldHandle(distributionUserRelTop.getPopularizeUserId(), object.getInteger("integralNumSecond"), 1, 4, object.getLong("userId") , user.getName() + "下单:获得返利" + object.getInteger("integralNumSecond")); + + } + + } + } + + } + + } + + @Override + public JSONObject userDistributionStatistics(Long userId) { + + JSONObject jsonObject = new JSONObject(); + + BsDistributionUserRelExample example = new BsDistributionUserRelExample(); + BsDistributionUserRelExample.Criteria criteria = example.createCriteria(); + criteria.andPopularizeUserIdEqualTo(userId); + + Map map = bsDistributionRebateMapper.countDistribution(userId); + + jsonObject.put("inviteeNum" , bsDistributionUserRelMapper.countByExample(example)); + jsonObject.put("integralIncome" , map.get("sum")); + jsonObject.put("orderCount" , map.get("count")); + jsonObject.put("toDayIntegralNum" , bsDistributionRebateMapper.toDayIntegralNum(userId)); + + + return jsonObject; + } + + @Override + public List getDistributionRebateList(Map map) throws Exception { + BsDistributionRebateExample example = new BsDistributionRebateExample(); + BsDistributionRebateExample.Criteria criteria = example.createCriteria(); + + + if (MapUtils.getLong(map , "userId") != null) { + criteria.andUserIdEqualTo(MapUtils.getLong(map , "userId")); + } + + if (MapUtils.getLong(map , "popularizeUserId") != null) { + criteria.andPopularizeUserIdEqualTo(MapUtils.getLong(map , "popularizeUserId")); + } + + List list = bsDistributionRebateMapper.selectByExample(example); + + for (BsDistributionRebate distributionRebate : list ) { + distributionRebate.setExt3(DateUtil.date2String(distributionRebate.getCreateTime() , "MM月dd日 HH:mm")); + } + + return list; + } } diff --git a/hai-service/src/main/java/com/hai/service/impl/BsIntegralRebateServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/BsIntegralRebateServiceImpl.java index decf564a..4a60b768 100644 --- a/hai-service/src/main/java/com/hai/service/impl/BsIntegralRebateServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/BsIntegralRebateServiceImpl.java @@ -6,6 +6,7 @@ import com.hai.dao.BsIntegralRebateMapper; import com.hai.entity.BsIntegralRebate; import com.hai.entity.BsIntegralRebateExample; import com.hai.entity.HighOrder; +import com.hai.service.BsDistributionUserRelService; import com.hai.service.BsIntegralRebateService; import com.hai.service.HighOrderService; import com.hai.service.HighUserService; @@ -30,6 +31,9 @@ public class BsIntegralRebateServiceImpl implements BsIntegralRebateService { @Resource private HighOrderService highOrderService; + @Resource + private BsDistributionUserRelService bsDistributionUserRelService; + @Override public BsIntegralRebate findIntegralRebateByMap(Map map) { @@ -106,6 +110,8 @@ public class BsIntegralRebateServiceImpl implements BsIntegralRebateService { if (DateUtil.isEffectiveDate(object.getDate("createTime"), bsIntegralRebate.getStartTime() , bsIntegralRebate.getEndTime())) { BigDecimal integralNum = object.getBigDecimal("price").multiply(bsIntegralRebate.getPercentage()).setScale( 0, BigDecimal.ROUND_HALF_UP ); + BigDecimal integralNumFirst = object.getBigDecimal("price").multiply(bsIntegralRebate.getFirstDistribution()).setScale( 0, BigDecimal.ROUND_HALF_UP ); + BigDecimal integralNumSecond = object.getBigDecimal("price").multiply(bsIntegralRebate.getSecondDistribution()).setScale( 0, BigDecimal.ROUND_HALF_UP ); HighOrder order = highOrderService.getOrderById(object.getLong("orderId")); @@ -115,6 +121,17 @@ public class BsIntegralRebateServiceImpl implements BsIntegralRebateService { highUserService.goldHandle(object.getLong("userId"), integralNum.intValue(), 1, 4, object.getLong("orderId") , object.getString("remark") + integralNum); + JSONObject jsonObject = new JSONObject(); + + jsonObject.put("integralNumFirst" , integralNumFirst); + jsonObject.put("integralNumSecond" , integralNumSecond); + jsonObject.put("title" , object.getString("name")); + jsonObject.put("orderNo" , order.getOrderNo()); + jsonObject.put("userId" , object.getLong("userId")); + jsonObject.put("logoImg" , object.getString("logoImg")); + + bsDistributionUserRelService.distributionRebate(jsonObject); + } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java index fb45c0b7..c1c87505 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighOrderServiceImpl.java @@ -1608,6 +1608,9 @@ public class HighOrderServiceImpl implements HighOrderService { if (MapUtils.getString(map, "merchId") != null) { criteria.andMerchIdEqualTo(MapUtils.getString(map, "merchId")); } + if (MapUtils.getLong(map, "identificationCode") != null) { + criteria.andIdentificationCodeEqualTo(MapUtils.getLong(map, "identificationCode")); + } if (StringUtils.isNotBlank(MapUtils.getString(map, "createTimeS")) && StringUtils.isNotBlank(MapUtils.getString(map, "createTimeE"))) { criteria.andCreateTimeBetween( DateUtil.format(MapUtils.getString(map, "createTimeS"), "yyyy-MM-dd HH:mm:ss"), @@ -2288,8 +2291,8 @@ public class HighOrderServiceImpl implements HighOrderService { } // 下单 -// jsonObject = QianZhuConfig.starbucksOrders(user.getId().toString(), object.getString("storeCode"), List.toString().replace(" ", ""), object.getString("customerMobile")); - jsonObject = QianZhuConfig.starbucksOrders(user.getId().toString(), "50562", List.toString().replace(" ", ""), object.getString("customerMobile")); + jsonObject = QianZhuConfig.starbucksOrders(user.getId().toString(), object.getString("storeCode"), List.toString().replace(" ", ""), object.getString("customerMobile")); +// jsonObject = QianZhuConfig.starbucksOrders(user.getId().toString(), "50562", List.toString().replace(" ", ""), object.getString("customerMobile")); // 判断下单是否成功 if (!Objects.equals(jsonObject.getString("code"), "200")) { @@ -3009,7 +3012,8 @@ public class HighOrderServiceImpl implements HighOrderService { object.put("type" , 1); object.put("productId", coupon.getCouponSource()); object.put("companyId", coupon.getCompanyId()); - object.put("remark" , "卡券订单" + orderNo + "积分返利:"); + object.put("remark" , "卡券订单:"+ coupon + "-" + orderNo + "积分返利:"); + object.put("name" , "购买卡券产品:"+ coupon); } if (goodsType == 3) { @@ -3018,6 +3022,7 @@ public class HighOrderServiceImpl implements HighOrderService { object.put("productId", 1); object.put("companyId", merchantStore.getCompanyId()); object.put("remark" , "在线加油订单" + orderNo + "积分返利:"); + object.put("name" , "购买在线加油产品"); } if (goodsType == 4) { @@ -3025,20 +3030,43 @@ public class HighOrderServiceImpl implements HighOrderService { object.put("productId", 2); object.put("companyId", companyId); object.put("remark" , "肯德基订单" + orderNo + "积分返利:"); + object.put("name" , "购买肯德基产品"); } if (goodsType == 9) { object.put("type" , 4); object.put("productId", 1); object.put("companyId", companyId); object.put("remark" , "星巴克订单" + orderNo + "积分返利:"); + object.put("name" , "购买星巴克产品"); } if (goodsType == 10) { object.put("type" , 4); object.put("productId", 3); object.put("companyId", companyId); object.put("remark" , "会员充值订单" + orderNo + "积分返利:"); + object.put("name" , "购买会员充值产品"); } + object.put("logoImg" , OrderLogoEnum.getNameByImgUrl(goodsType)); return object; } + + @Override + public List promoteOrderList(Long identificationCode) throws Exception { + + HighOrderExample example = new HighOrderExample(); + HighOrderExample.Criteria criteria = example.createCriteria(); + + criteria.andIdentificationCodeEqualTo(identificationCode).andOrderStatusEqualTo(3); + + List list = highOrderMapper.selectByExample(example); + + for (HighOrder order : list) { + order.setTime(DateUtil.date2String(order.getCreateTime() , "MM月dd日 HH:mm")); + List childOrder = getChildOrderByOrder(order.getId()); + order.setGoodsTypeName("购买:" + GoodsType.getNameByType(childOrder.get(0).getGoodsType())); + } + + return list; + } } diff --git a/hai-service/src/main/java/com/hai/service/impl/HighUserServiceImpl.java b/hai-service/src/main/java/com/hai/service/impl/HighUserServiceImpl.java index 63c79c4a..d3d2814e 100644 --- a/hai-service/src/main/java/com/hai/service/impl/HighUserServiceImpl.java +++ b/hai-service/src/main/java/com/hai/service/impl/HighUserServiceImpl.java @@ -1,5 +1,6 @@ package com.hai.service.impl; +import com.alibaba.fastjson.JSONObject; import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.SysCode; @@ -225,10 +226,8 @@ public class HighUserServiceImpl implements HighUserService { } } - new Thread(()-> { - // 绑定推广关联关系 - distributionUserRelService.insertDistributionRebate(highUser.getId() , popularizeUserId , regionId); - }).start(); + // 绑定推广关联关系 + distributionUserRelService.insertDistributionRebate(highUser.getId() , popularizeUserId , regionId); } @Override @@ -282,4 +281,13 @@ public class HighUserServiceImpl implements HighUserService { example.createCriteria().andResIdEqualTo(resId).andResTypeEqualTo(resType); return highGoldRecMapper.selectByExample(example).size() == 0; } + + @Override + public JSONObject userDistributionStatistics(Long userId) { + + JSONObject object = new JSONObject(); + + + return null; + } } diff --git a/hai-service/src/main/resources/dev/commonConfig.properties b/hai-service/src/main/resources/dev/commonConfig.properties index 21340389..e9cef055 100644 --- a/hai-service/src/main/resources/dev/commonConfig.properties +++ b/hai-service/src/main/resources/dev/commonConfig.properties @@ -96,3 +96,8 @@ CyPostUrl=http://120.24.83.85:8999/ unionAppId=7113783e75354df2a985efd3f31b9528 unionSecret=e2c731d2a026469aa6d218432f361653 unionRsaKey=891f6775fba7f12cc23df7c75e02b39b891f6775fba7f12c + + +#url +fileUrl=/home/project/hsg/filesystem/ +#fileUrl=/Volumes/work/code/filesystem/ diff --git a/hai-service/src/main/resources/prod-9401/commonConfig.properties b/hai-service/src/main/resources/prod-9401/commonConfig.properties index 43887e8f..a2208f9b 100644 --- a/hai-service/src/main/resources/prod-9401/commonConfig.properties +++ b/hai-service/src/main/resources/prod-9401/commonConfig.properties @@ -94,3 +94,6 @@ CyPostUrl=http://120.24.83.85:8999/ unionAppId=ced46392acfe42be863fdfdd3e61164a unionSecret=a0f380bb22cd4ce2a8d35f3bf437d6fa unionRsaKey=f2e6b6b95da445866194498c371a7c8af2e6b6b95da44586 + +#url +fileUrl=/home/project/hlt/filesystem/ diff --git a/hai-service/src/main/resources/prod/commonConfig.properties b/hai-service/src/main/resources/prod/commonConfig.properties index 15de0406..bc86281c 100644 --- a/hai-service/src/main/resources/prod/commonConfig.properties +++ b/hai-service/src/main/resources/prod/commonConfig.properties @@ -92,3 +92,6 @@ CyPostUrl=http://120.24.83.85:8999/ unionAppId=ced46392acfe42be863fdfdd3e61164a unionSecret=a0f380bb22cd4ce2a8d35f3bf437d6fa unionRsaKey=f2e6b6b95da445866194498c371a7c8af2e6b6b95da44586 + +#url +fileUrl=/home/project/hlt/filesystem/ diff --git a/v1/src/main/java/com/v1/controller/HighOrderController.java b/v1/src/main/java/com/v1/controller/HighOrderController.java index 5bebb71b..d74461af 100644 --- a/v1/src/main/java/com/v1/controller/HighOrderController.java +++ b/v1/src/main/java/com/v1/controller/HighOrderController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; @@ -108,6 +109,9 @@ public class HighOrderController { Map postMap = new HashMap<>(); postMap.put("merchId" , object.getString("merchId")); + postMap.put("createTimeS", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object.getLong("createTimeS"))); + postMap.put("createTimeE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object.getLong("createTimeE"))); + return ResponseMsgUtil.success(outRechargeOrderService.getListRechargeOrder(postMap)); @@ -173,6 +177,9 @@ public class HighOrderController { Map postMap = new HashMap<>(); postMap.put("merchId" , object.getString("merchId")); + postMap.put("createTimeS", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object.getLong("createTimeS"))); + postMap.put("createTimeE", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(object.getLong("createTimeE"))); + return ResponseMsgUtil.success(highOrderService.getOrderList(postMap));