From 1695aa136a89421b1cff75d672888e81d2a24d9a Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 29 八月 2023 18:30:23 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 60 +++--- ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java | 6 ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java | 41 ++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 7 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysOperLog.java | 27 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 9 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberSimpleTotalVo.java | 30 +++ ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 6 ruoyi-modules/ruoyi-shop/pom.xml | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java | 4 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java | 5 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 10 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java | 1 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/ShoppingCartMapper.xml | 2 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 10 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java | 15 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java | 8 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java | 10 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java | 14 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java | 11 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java | 10 + ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java | 10 + ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 17 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java | 5 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 20 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java | 44 ++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtUserTaskMsgVo.java | 23 ++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 12 + /dev/null | 33 --- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java | 1 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java | 28 +- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java | 15 + ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java | 1 36 files changed, 400 insertions(+), 105 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysOperLog.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysOperLog.java index 9cd6c06..638ff44 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysOperLog.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysOperLog.java @@ -5,7 +5,9 @@ import com.ruoyi.common.core.annotation.Excel.ColumnType; import com.ruoyi.common.core.web.domain.BaseEntity; +import java.util.Arrays; import java.util.Date; +import java.util.StringJoiner; /** * 操作日志记录表 oper_log @@ -207,6 +209,7 @@ this.operParam = operParam; } + public String getJsonResult() { return jsonResult; @@ -264,4 +267,28 @@ public void setOperContent(String operContent) { this.operContent = operContent; } + + @Override + public String toString() { + return new StringJoiner(", ", SysOperLog.class.getSimpleName() + "[", "]") + .add("operId=" + operId) + .add("title='" + title + "'") + .add("businessType=" + businessType) + .add("businessTypes=" + Arrays.toString(businessTypes)) + .add("method='" + method + "'") + .add("requestMethod='" + requestMethod + "'") + .add("operatorType=" + operatorType) + .add("operName='" + operName + "'") + .add("deptName='" + deptName + "'") + .add("operUrl='" + operUrl + "'") + .add("operIp='" + operIp + "'") + .add("operParam='" + operParam + "'") + .add("jsonResult='" + jsonResult + "'") + .add("status=" + status) + .add("errorMsg='" + errorMsg + "'") + .add("operTime=" + operTime) + .add("costTime=" + costTime) + .add("operContent='" + operContent + "'") + .toString(); + } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberSimpleTotalVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberSimpleTotalVo.java new file mode 100644 index 0000000..f0df84d --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberSimpleTotalVo.java @@ -0,0 +1,30 @@ +package com.ruoyi.system.api.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @ClassName MerMemberTotalVo + * @Description TODO + * @Author jqs + * @Date 2023/8/29 16:55 + * @Version 1.0 + */ +@Data +public class MerMemberSimpleTotalVo { + + @ApiModelProperty(value = "次数剩余") + private Integer surpNumber; + + @ApiModelProperty(value = "消费次数") + private Integer userNumber; + + @ApiModelProperty(value = "消费总额") + private BigDecimal payMoney; + + @ApiModelProperty(value = "待支付金额") + private BigDecimal unpaidMoney; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtUserTaskMsgVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtUserTaskMsgVo.java new file mode 100644 index 0000000..2b8b7f1 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtUserTaskMsgVo.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.api.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName MgtUserTaskMsgVo + * @Description TODO + * @Author jqs + * @Date 2023/8/29 14:20 + * @Version 1.0 + */ +@Data +public class MgtUserTaskMsgVo { + + @ApiModelProperty(value="userId") + private Long userId; + + @ApiModelProperty(value="任务名") + private String taskTitle; + + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java index 2026eeb..be2e16b 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java @@ -80,6 +80,11 @@ public R<AgencyTotalVo> getAgencyTotalVo(List<Long> shopIdList) { return R.fail("获取区域统计失败:" + throwable.getMessage()); } + + @Override + public R<MerMemberSimpleTotalVo> getMerMemberSimpleTotalVo(MerBaseDto merBaseDto) { + return R.fail("获取商户会员订单统计失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java index c2996e4..a60c799 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java @@ -125,6 +125,11 @@ public R<List<Long>> listShopIdByCityCode(List<String> cityCodes) { return R.fail("获取商户列表失败:" + throwable.getMessage()); } + + @Override + public R<List<MgtUserTaskMsgVo>> getTaskMsgList() { + return R.fail("获取任务通知列表失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java index 1d4a1c1..d499fb1 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java @@ -97,4 +97,15 @@ */ @PostMapping("/order/getAgencyTotalVo") public R<AgencyTotalVo> getAgencyTotalVo(@RequestBody List<Long> shopIdList); + + + /** + * @description 获取用户统计 + * @author jqs + * @date 2023/8/29 17:38 + * @param merBaseDto + * @return R<MerMemberSimpleTotalVo> + */ + @PostMapping("/order/getMerMemberSimpleTotalVo") + public R<MerMemberSimpleTotalVo> getMerMemberSimpleTotalVo(@RequestBody MerBaseDto merBaseDto); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java index d583428..9672a85 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java @@ -165,4 +165,14 @@ @PostMapping("/shop/listShopIdByCityCode") R<List<Long>> listShopIdByCityCode(@RequestBody List<String> cityCodes); + + /** + * @description 获取今日任务通知 + * @author jqs + * @date 2023/8/29 15:05 + * @param + * @return R<List<MgtUserTaskMsgVo>> + */ + @PostMapping("/shop/getTaskMsgList") + R<List<MgtUserTaskMsgVo>> getTaskMsgList(); } diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index 4ee5f2c..60ba2c4 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -207,6 +207,10 @@ { throw new ServiceException(userResult.getMsg()); } + if (401 == userResult.getCode()) + { + throw new ServiceException("商户已被冻结,请联系管理员",401); + } QwH5LoginVo userInfo = userResult.getData(); SysUser user = userInfo.getSysUser(); String username = user.getUserName(); diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java index b764fec..9b060f6 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java @@ -1,6 +1,8 @@ package com.ruoyi.common.log.aspect; import com.alibaba.fastjson2.JSON; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.ip.IpUtils; @@ -28,6 +30,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Collection; +import java.util.HashMap; import java.util.Map; /** @@ -174,7 +177,43 @@ && (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))) { String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames); - operLog.setOperParam(StringUtils.substring(params, 0, 2000)); + if(operLog.getOperContent().equals("编辑商户")){ + // 将JSON字符串转换为Map + ObjectMapper objectMapper = new ObjectMapper(); + Map<String, String> jsonMap = new HashMap<>(); + try { + jsonMap = objectMapper.readValue(params, HashMap.class); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + // 从Map中删除指定的元素 + jsonMap.remove("shopDetail"); + // 将Map转换回JSON字符串 + try { + params = objectMapper.writeValueAsString(jsonMap); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + if(operLog.getOperContent().equals("编辑商品")){ + // 将JSON字符串转换为Map + ObjectMapper objectMapper = new ObjectMapper(); + Map<String, String> jsonMap = new HashMap<>(); + try { + jsonMap = objectMapper.readValue(params, HashMap.class); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + // 从Map中删除指定的元素 + jsonMap.remove("goodsDetail"); + // 将Map转换回JSON字符串 + try { + params = objectMapper.writeValueAsString(jsonMap); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + operLog.setOperParam(StringUtils.substring(params, 0, 5000)); } else { diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java index d9ceee4..9da3267 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java @@ -20,62 +20,62 @@ @Data public class MgtGoodsPageVo { - + @Excel(name = "商品图片", width = 30, sort = 1) @ApiModelProperty(value = "商品id") private String goodsId; - @Excel(name = "商品名称", width = 30, sort = 1) + @Excel(name = "商品名称", width = 30, sort = 3) @ApiModelProperty(value = "商品名称") private String goodsName; - @Excel(name = "商品简介", width = 30, sort = 2) + @Excel(name = "商品简介", width = 30, sort = 4) @ApiModelProperty(value = "商品简介") private String goodsIntroduction; - @Excel(name = "商品分类", width = 30, sort = 3) + @Excel(name = "所属分类", width = 30, sort = 6) @ApiModelProperty(value = "商品分类") private String goodsClass; - @Excel(name = "商品标签", width = 30, sort = 5) + @Excel(name = "标签", width = 30, sort = 7) @ApiModelProperty(value = "商品标签") private String goodsTags; - @Excel(name = "商品图片", width = 30) + @Excel(name = "商品图片", width = 30, sort = 2) @ApiModelProperty(value = "商品图片") private String goodsPicture; - @Excel(name = "商品类型", width = 30, sort = 4) + @Excel(name = "商品类型", width = 30, sort = 6) @ApiModelProperty(value = "商品类型1周期2服务3体验4单品") private String goodsType; - @Excel(name = "商品建议售价", width = 30, sort = 6) + @Excel(name = "建议售价", width = 30, sort = 8) @ApiModelProperty(value = "商品建议售价") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal suggestSalesPrice;; - @Excel(name = "最低售价", width = 30, sort = 7) + @Excel(name = "最低售价", width = 30, sort = 9) @ApiModelProperty(value = "最低售价") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal mininumPrice;; - @Excel(name = "销量", width = 30, sort = 8) + @Excel(name = "销量", width = 30, sort = 10) @ApiModelProperty(value = "销量") private Integer buyNumCount; - @Excel(name = "销售额", width = 30, sort = 9) + @Excel(name = "销售额", width = 30, sort = 11) @ApiModelProperty(value = "销售额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal buyMoneyTotal; - @Excel(name = "是否推荐", width = 30, sort = 10) + @Excel(name = "是否推荐", width = 30, sort = 12) @ApiModelProperty(value = "是否推荐") private String recommendFlag; - @Excel(name = "商品状态", width = 30, sort = 11) + @Excel(name = "状态", width = 30, sort = 13) @ApiModelProperty(value = "商品状态") private String goodsStatus; - @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 12) + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 14) @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml index d75bcf8..37f3e1f 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml @@ -50,6 +50,7 @@ <if test="param.createEndTime!=null and param.createEndTime != ''"> AND Date(ta.create_time) <= #{param.createEndTime} </if> + ORDER BY ta.create_time DESC </select> <select id="pageMgtActivityRecord" resultType="com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo"> @@ -74,6 +75,7 @@ <if test="param.orderFlag!=null and param.orderFlag == 0"> AND order_id IS NULL </if> + ORDER BY create_time DESC </select> <select id="pagePlatformMerActivity" resultType="com.ruoyi.goods.domain.vo.MerActivityPageVo"> diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/ShoppingCartMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/ShoppingCartMapper.xml index 743766e..621a7ef 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/ShoppingCartMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/ShoppingCartMapper.xml @@ -96,7 +96,7 @@ LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{shopId} WHERE tsc.del_flag = 0 AND tg.del_flag = 0 AND tsc.shop_id = #{shopId} AND tsc.user_id = #{userId} AND tg.del_flag = 0 AND tg.goods_status = 1 - ORDER BY tg.create_time DESC + ORDER BY tsc.create_time DESC </select> <update id="deleteByUserIdAndGoodsId"> diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index 96766d4..9bbe28c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -20,6 +20,7 @@ import com.ruoyi.member.domain.pojo.member.IntegralRecord; import com.ruoyi.member.domain.pojo.member.MemberArchive; import com.ruoyi.member.domain.pojo.member.MemberTotal; +import com.ruoyi.member.domain.vo.MerMemberTotalVo; import com.ruoyi.member.domain.vo.*; import com.ruoyi.member.mapper.member.MemberMapper; import com.ruoyi.member.service.member.IntegralRecordService; @@ -476,16 +477,16 @@ MemberTotal memberTotal = memberTotalService.getById(member.getMemberId()); // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount()); - merMemberInfoVo.setUserNumber(memberTotal.getTotalPayCount()); - merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney()); // 创建MerBaseDto对象 MerBaseDto merBaseDto = new MerBaseDto(); // 设置MerBaseDto对象的属性值 merBaseDto.setShopId(merBaseGetDto.getShopId()); merBaseDto.setUserId(userId); // 获取未支付订单金额 - BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData(); - merMemberInfoVo.setUnpaidMoney(unpaidMoney); + MerMemberSimpleTotalVo memberSimpleTotalVo = remoteOrderService.getMerMemberSimpleTotalVo(merBaseDto).getData(); + merMemberInfoVo.setUserNumber(memberSimpleTotalVo.getUserNumber()); + merMemberInfoVo.setPayMoney(memberSimpleTotalVo.getPayMoney()); + merMemberInfoVo.setUnpaidMoney(memberSimpleTotalVo.getUnpaidMoney()); // 获取最近的会员任务 MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData(); if (memberTaskSimpleVo != null) { @@ -1366,12 +1367,13 @@ mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode()); mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode()); MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); + List<Long> list = new ArrayList<>(); if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) { - List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) + list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); - mgtBasePlatformDto.setShopIdList(list); } + mgtBasePlatformDto.setShopIdList(list); } //获取基础统计 MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); @@ -1821,11 +1823,13 @@ } MerMemberRecommendTotalVo memberRecommendTotalVo = new MerMemberRecommendTotalVo(); //获取会员推荐排名 - List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto); + /*List<MgtMapIntTotalVo> recommendList = memberMapper.getMerMemberRecommendRank(merTotalDto); if (recommendList != null && recommendList.size() > 0) { recommendList = listRemoveNull(recommendList); memberRecommendTotalVo.setRecommendList(recommendList); - } + }*/ + List<MgtMapIntTotalVo> recommendList = new ArrayList<>(); + memberRecommendTotalVo.setRecommendList(recommendList); return memberRecommendTotalVo; } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml index 6a2c93b..1b101e7 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml @@ -151,7 +151,7 @@ <select id="pageMerMember" resultType="com.ruoyi.member.domain.vo.MerMemberPageVo"> SELECT tm.user_id userId, - tm.nick_name nickName, + tm.real_name nickName, tm.avatar avatar, CASE tm.gender WHEN 0 THEN '男' WHEN 1 THEN '女' ELSE '未知' END gender, tm.mobile mobile, @@ -681,7 +681,7 @@ FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.del_flag = 0 AND binding_flag = 1 - <if test="param.shopIdList != null and shopIdList.size() > 0"> + <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND tm.relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} @@ -991,7 +991,7 @@ </foreach> </if> <if test="param.ageType !=null and param.ageType == 1"> - AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 + AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 0 AND 20 </if> <if test="param.ageType !=null and param.ageType == 2"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java index 205930b..10b7122 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java @@ -62,6 +62,7 @@ mgtBulletinBoardVo.setSalesTotal(mgtBulletinBoardVoOrder.getSalesTotal()); mgtBulletinBoardVo.setUnUseOrderTotal(mgtBulletinBoardVoOrder.getUnUseOrderTotal()); mgtBulletinBoardVo.setActivityOrderTotal(mgtBulletinBoardVoOrder.getActivityOrderTotal()); + mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoOrder.getActivityUserTotal()); return R.ok(mgtBulletinBoardVo); } @@ -155,4 +156,18 @@ AgencyTotalVo agencyTotalVo= orderService.getAgencyTotalVo(shopIdList); return R.ok(agencyTotalVo); } + + /** + * @description 获取用户统计 + * @author jqs + * @date 2023/8/29 17:38 + * @param merBaseDto + * @return R<MerMemberSimpleTotalVo> + */ + @PostMapping("/getMerMemberSimpleTotalVo") + public R<MerMemberSimpleTotalVo> getMerMemberSimpleTotalVo(@RequestBody MerBaseDto merBaseDto){ + MerMemberSimpleTotalVo memberSimpleTotalVo= orderService.getMerMemberSimpleTotalVo(merBaseDto); + return R.ok(memberSimpleTotalVo); + } + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java index 692067d..71fb6c3 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.vo.*; @@ -12,7 +11,6 @@ import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.model.LoginUser; -import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -43,11 +41,6 @@ @Resource private OrderService orderService; - @Resource - private RedisService redisService; - - @Resource - private RemoteConfigService remoteConfigService; @RequestMapping(value = "/buyGoods", method = RequestMethod.POST) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java index 3eeb5c1..edf5113 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java @@ -24,6 +24,10 @@ @JsonSerialize(using = ToStringSerializer.class) private BigDecimal totalOrderMoney; + @ApiModelProperty(value = "总订金") + @JsonSerialize(using = ToStringSerializer.class) + private BigDecimal totalDepositMoney; + @ApiModelProperty(value = "实收金额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal totalReceiveMoney; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java index ecfdb44..331ec33 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java @@ -703,4 +703,14 @@ * @return AgencyTotalVo */ AgencyTotalVo getAgencyTotalVo(@Param("shopIdList")List<Long> shopIdList); + + + /** + * @description 商户端会员订单统计 + * @author jqs + * @date 2023/8/29 17:39 + * @param merBaseDto + * @return MerMemberSimpleTotalVo + */ + MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(@Param("param") MerBaseDto merBaseDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index c8e30a9..e59af1b 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -5494,4 +5494,16 @@ AgencyTotalVo agencyTotalVo = orderMapper.getAgencyTotalVo(shopIdList); return agencyTotalVo; } + + /** + * @description 商户端会员订单统计 + * @author jqs + * @date 2023/8/29 17:39 + * @param merBaseDto + * @return MerMemberSimpleTotalVo + */ + @Override + public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){ + return orderMapper.getMerMemberSimpleTotalVo(merBaseDto); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index ffc2bfb..84d2608 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -579,4 +579,13 @@ * @return */ Order getByOutTradeNo(String outTradeNo); + + /** + * @description 商户端会员订单统计 + * @author jqs + * @date 2023/8/29 17:39 + * @param merBaseDto + * @return MerMemberSimpleTotalVo + */ + MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index ab96e5d..5e560a4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -459,8 +459,8 @@ toc.order_from orderFrom, CASE toc.order_from WHEN 1 THEN "商城订单" - WHEN 2 THEN "秒杀活动订单" - WHEN 3 THEN "线下创建订单" + WHEN 2 THEN "秒杀订单" + WHEN 3 THEN "线下订单" END orderFromDesc, #{param.keyword} AS keyword FROM t_order toc @@ -728,18 +728,18 @@ <select id="boardOrderTotal" resultType="com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo"> SELECT - IFNULL(SUM(CASE WHEN order_status = 3 THEN pay_money ELSE 0 END),0) salesTotal, + IFNULL(SUM(CASE WHEN order_status = 3 THEN change_receivable_money ELSE 0 END),0) salesTotal, IFNULL(SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END),0) UnUseOrderTotal, IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityOrderTotal FROM t_order - WHERE del_flag = 0 + WHERE del_flag = 0 AND order_status IN (2,3) </select> <select id="activityUserTotal" resultType="java.lang.Integer"> SELECT COUNT(DISTINCT user_id) FROM t_order - WHERE del_flag = 0 AND order_from = 2 + WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) </select> <select id="getTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo"> @@ -820,7 +820,7 @@ COUNT(order_id) AS mapValueFirst, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order - WHERE del_flag = 0 AND order_status IN (2,3) + WHERE del_flag = 0 AND order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> @@ -878,8 +878,8 @@ SELECT CASE toc.order_from WHEN 1 THEN "商城订单" - WHEN 2 THEN "秒杀活动订单" - WHEN 3 THEN "线下创建订单" + WHEN 2 THEN "秒杀订单" + WHEN 3 THEN "线下订单" END mapKey, IFNULL(SUM(CASE WHEN toc.pay_type = 1 THEN toc.change_receivable_money WHEN toc.pay_type = 2 THEN toc.change_receivable_money + toc.online_pay_money ELSE 0 END),0) mapValue FROM t_order toc @@ -939,9 +939,9 @@ SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(DISTINCT order_id) AS mapValueFirst, - SUM(order_money) AS mapValueSecond + IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order - WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> @@ -1192,7 +1192,7 @@ SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(order_id) AS mapValueFirst, - IFNULL(SUM(receivable_money),0) AS mapValueSecond + IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_status = 3 @@ -1263,8 +1263,8 @@ SELECT CASE toc.order_from WHEN 1 THEN "商城订单" - WHEN 2 THEN "秒杀活动订单" - WHEN 3 THEN "线下创建订单" + WHEN 2 THEN "秒杀订单" + WHEN 3 THEN "线下订单" END mapKey, IFNULL(SUM(toc.order_money),0) mapValue FROM t_order toc @@ -1316,7 +1316,7 @@ COUNT(DISTINCT CASE WHEN tog.goods_type = 3 THEN toc.user_id ELSE NULL END) servicePerson FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) AND toc.new_member_flag = 1 + WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1652,8 +1652,8 @@ SELECT CASE toc.order_from WHEN 1 THEN "商城订单" - WHEN 2 THEN "秒杀活动订单" - WHEN 3 THEN "线下创建订单" + WHEN 2 THEN "秒杀订单" + WHEN 3 THEN "线下订单" END mapKey, IFNULL(SUM(tog.goods_receivable_money),0) mapValue FROM t_order toc @@ -1733,8 +1733,8 @@ toc.user_id userId, toc.order_money orderMoney, toc.discount_money discountMoney, - toc.receivable_money receivableMoney, - toc.pay_money payMoney, + CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney, + toc.change_receivable_money payMoney, CASE toc.order_from WHEN 1 THEN '小程序' WHEN 2 THEN CONCAT('秒杀活动(',toc.activity_name,')') WHEN 3 THEN '线下创建' END orderFrom, CASE toc.order_status WHEN 0 THEN "已取消" @@ -1743,7 +1743,7 @@ WHEN 3 THEN "已完成" END orderStatus FROM t_order toc - WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3) + WHERE toc.del_flag = 0 <if test="param.orderFrom != null"> AND toc.order_from = #{param.orderFrom} </if> @@ -1836,7 +1836,7 @@ SUM(tog.goods_receivable_money) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id - WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status = 3 <if test="param.goodsType !=null and param.goodsType != ''"> AND tog.goods_type = #{param.goodsType} </if> @@ -1867,7 +1867,7 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status IN (2,3) AND toc.shop_id = #{param.shopId} + WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status = 3 AND toc.shop_id = #{param.shopId} <if test="param.activityId !=null and param.activityId != ''"> AND toc.activity_id = #{param.activityId} </if> @@ -1889,7 +1889,7 @@ COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status IN (2,3) + WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status = 3 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1920,9 +1920,6 @@ WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status IN (2,3) <if test="param.activityId !=null and param.activityId != ''"> AND toc.activity_id = #{param.activityId} - </if> - <if test="param.goodsType !=null and param.goodsType != ''"> - AND tog.goods_type = #{param.goodsType} </if> <if test="param.userIdList !=null and param.userIdList.size()>0"> AND toc.user_id IN @@ -2004,9 +2001,10 @@ SELECT COUNT(DISTINCT toc.order_id) orderTotal, IFNULL(SUM(toc.order_money),0) totalOrderMoney, - IFNULL(SUM(toc.change_receivable_money),0) totalReceiveMoney + IFNULL(SUM(toc.change_receivable_money),0) totalReceiveMoney, + IFNULL(SUM(CASE WHEN toc.pay_type = 2 THEN toc.online_pay_money ELSE 0 END),0) totalDepositMoney FROM t_order toc - WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3) + WHERE toc.del_flag = 0 <if test="param.orderFrom != null"> AND toc.order_from = #{param.orderFrom} </if> @@ -2098,4 +2096,12 @@ </foreach> </select> + <select id="getMerMemberSimpleTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerMemberSimpleTotalVo"> + SELECT + COUNT(DISTINCT toc.order_id) userNumber, + IFNULL(SUM(toc.change_receivable_money),0) payMoney, + IFNULL(SUM(CASE WHEN toc.close_flag = 0 THEN toc.change_receivable_money - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) ELSE 0 END),0) unpaidMoney + FROM t_order toc + WHERE toc.del_flag = 0 AND toc.user_id = #{param.userId} AND toc.shop_id = #{param.shopId} AND toc.order_status IN (2,3) + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml index 12e115e..94a278e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml @@ -104,7 +104,7 @@ tsrd.consumer_goods_name consumerGoodsName, tusr.service_type serviceType, tusr.create_time createTime, - tsrd.service_num serviceNum, + 1 serviceNum, tsrd.surp_num surpNum FROM t_user_service_record tusr LEFT JOIN t_service_record_detail tsrd ON tsrd.record_id = tusr.id diff --git a/ruoyi-modules/ruoyi-shop/pom.xml b/ruoyi-modules/ruoyi-shop/pom.xml index cc0716a..13a5313 100644 --- a/ruoyi-modules/ruoyi-shop/pom.xml +++ b/ruoyi-modules/ruoyi-shop/pom.xml @@ -108,6 +108,8 @@ <artifactId>weixin-java-pay</artifactId> <version>4.5.0</version> </dependency> + + <!-- 微信支付 --> <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-apache-httpclient</artifactId> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java index 1b8986b..c36aa00 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java @@ -94,7 +94,7 @@ if(shop.getFrozenFlag()==1){ String userKey = SecurityUtils.getUserKey(); redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey); - throw new ServiceException("商户已被冻结",401); + throw new ServiceException("商户已被冻结,请联系管理员",401); } // 构造登录返回信息 QwH5LoginVo qwH5LoginVo = new QwH5LoginVo(); @@ -360,4 +360,17 @@ return R.ok(); } + /** + * @description 获取今日任务通知列表 + * @author jqs + * @date 2023/8/29 15:03 + * @param + * @return R<List<MgtUserTaskMsgVo>> + */ + @PostMapping("/getTaskMsgList") + R<List<MgtUserTaskMsgVo>> getTaskMsgList(){ + List<MgtUserTaskMsgVo> userTaskMsgVoList = shopService.getTaskMsgList(); + return R.ok(userTaskMsgVoList); + } + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java index 89ae793..76670e2 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java @@ -10,6 +10,7 @@ import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; +import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -247,4 +248,13 @@ * @return List<Long> */ List<Long> listShopIdByCityCode(List<String> cityCodes); + + /** + * @description + * @author jqs + * @date 2023/8/29 14:36 + * @param + * @return List<MgtUserTaskMsgVo> + */ + List<MgtUserTaskMsgVo> getTaskMsgList(); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index c4a0f43..205641b 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java @@ -859,7 +859,7 @@ if(shop.getFrozenFlag()==1){ String userKey = SecurityUtils.getUserKey(); redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey); - throw new ServiceException("商户已被冻结",401); + throw new ServiceException("商户已被冻结,请联系管理员",401); } merHomeShopTotalVo.setShopType(shop.getShopType()); MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); @@ -1607,4 +1607,19 @@ throw new RuntimeException(e); } } + + + + /** + * @description + * @author jqs + * @date 2023/8/29 14:33 + * @param + * @return List<MgtUserTaskMsgVo> + */ + @Override + public List<MgtUserTaskMsgVo> getTaskMsgList(){ + return shopMapper.getTaskMsgList(); + } + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java index 517e573..1b785ad 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java @@ -184,6 +184,7 @@ if(taskFileList!=null&&!taskFileList.isEmpty()){ taskFileService.saveBatch(taskFileList); } + agencyTaskRecordService.saveOrUpdate(agencyTaskRecord); } //创建新任务 if(StringUtils.isNotBlank(merFollowAgencyTaskDto.getNextTaskDate())){ diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java index 3ba3861..41b8142 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java @@ -199,6 +199,7 @@ if(taskFileList!=null&&!taskFileList.isEmpty()){ taskFileService.saveBatch(taskFileList); } + } // 判断下一个任务日期是否为空,并处理 if (StringUtils.isNotBlank(merFollowMemberTaskDto.getNextTaskDate())) { diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java index fb3de74..03ff06d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java @@ -12,10 +12,7 @@ import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; -import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; -import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; -import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; -import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; +import com.ruoyi.system.api.domain.vo.*; import java.util.List; @@ -379,4 +376,13 @@ * @return void */ ProfitSharingReceiverResult addProfitSharingReceiver(ProfitSharingReceiverRequest request); + + /** + * @description + * @author jqs + * @date 2023/8/29 14:36 + * @param + * @return List<MgtUserTaskMsgVo> + */ + List<MgtUserTaskMsgVo> getTaskMsgList(); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/Certificate.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/Certificate.java deleted file mode 100644 index f8c0dc1..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/Certificate.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.ruoyi.shop.util; - -import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @date 2020-03-18 15:06 - * @description - */ -@Slf4j -public class Certificate { - - private static final Logger logger = LoggerFactory.getLogger(Certificate.class); - - /** - * 获取微信支付平台证书 - * - * @param merchantId - * @param timeout - * @param serialNo - * @param mchPrivateKeyPath - * @param APIv3Key - * @param savePath - * @return - */ - /*public static List<X509Certificate> getCertByAPI(String merchantId, int timeout, String serialNo, String mchPrivateKeyPath, String wechatPubKeyPath, String APIv3Key, String savePath) { - String result = ""; - //创建http请求 - HttpGet httpGet = new HttpGet("https://api.mch.weixin.qq.com/v3/certificates"); - httpGet.addHeader("Content-Type", "application/json"); - httpGet.addHeader("Accept", "application/json"); - - String authorization = SignUtils.authorization("GET", "/v3/certificates", merchantId, serialNo, "", mchPrivateKeyPath); - - //设置认证信息 - httpGet.setHeader("Authorization", authorization); - - //设置请求器配置:如超时限制等 - RequestConfig config = RequestConfig.custom().setSocketTimeout(timeout * 1000).setConnectTimeout(timeout * 1000).build(); - httpGet.setConfig(config); - List<X509Certificate> x509Certs = new ArrayList<X509Certificate>(); - try { - CloseableHttpClient httpClient = HttpClients.createDefault(); - CloseableHttpResponse response = httpClient.execute(httpGet); - int statusCode = response.getStatusLine().getStatusCode(); - HttpEntity httpEntity = response.getEntity(); - result = EntityUtils.toString(httpEntity, "UTF-8"); - if (statusCode == 200) { - logger.info("下载平台证书返回结果:" + result); - Header[] timestampHeader = response.getHeaders("Wechatpay-Timestamp"); - Header[] nonceHeader = response.getHeaders("Wechatpay-Nonce"); - Header[] signatureHeader = response.getHeaders("Wechatpay-Signature"); - if (timestampHeader != null && timestampHeader.length > 0 && - nonceHeader != null && nonceHeader.length > 0 && - signatureHeader != null && signatureHeader.length > 0) { - // 验证微信支付返回签名 - String wTimestamp = timestampHeader[0].getValue(); - String wNonce = nonceHeader[0].getValue(); - String wSign = signatureHeader[0].getValue(); - - logger.info("wTimestamp:{},wNonce:{},wSign:{}", wTimestamp, wNonce, wSign); - // 拼装待签名串 - StringBuffer ss = new StringBuffer(); - ss.append(wTimestamp).append("\n"); - ss.append(wNonce).append("\n"); - ss.append(result).append("\n"); - // 验证签名 - if (SignUtils.v3VerifyRSA(ss.toString(), Base64.decodeBase64(wSign.getBytes()), wechatPubKeyPath)) { - List<CertificateItem> certList = new ArrayList<CertificateItem>(); - JSONObject json = JSONObject.parseObject(result); - logger.info("查询结果json字符串转证书List:" + json.get("data")); - JSONArray jsonArray = (JSONArray) json.get("data"); - for (int i = 0; i < jsonArray.size(); i++) { - CertificateItem certificateItem = new CertificateItem(); - EncryptedCertificateItem encryptCertificate = new EncryptedCertificateItem(); - JSONObject bo = JSONObject.parseObject(jsonArray.get(i).toString()); - certificateItem.setSerial_no(bo.get("serial_no").toString()); - certificateItem.setEffective_time(bo.get("effective_time").toString()); - certificateItem.setExpire_time(bo.get("expire_time").toString()); - JSONObject encryptBo = JSONObject.parseObject(bo.get("encrypt_certificate").toString()); - encryptCertificate.setAlgorithm(encryptBo.get("algorithm").toString()); - encryptCertificate.setNonce(encryptBo.get("nonce").toString()); - encryptCertificate.setAssociated_data(encryptBo.get("associated_data").toString()); - encryptCertificate.setCiphertext(encryptBo.get("ciphertext").toString()); - certificateItem.setEncrypt_certificate(encryptCertificate); - certList.add(certificateItem); - } - logger.info("证书List:" + certList); - - *//*List<PlainCertificateItem> plainList = decrypt(certList, APIv3Key); - if (CollectionUtils.isNotEmpty(plainList)) { - logger.info("平台证书开始保存"); - x509Certs = saveCertificate(plainList, savePath); - }*//* - } - } - } - response.close(); - httpClient.close(); //throw - return x509Certs; - } catch (Exception e) { - e.printStackTrace(); - logger.error("下载平台证书返回结果:" + e); - } - return x509Certs; - }*/ - - - /*private static List<PlainCertificateItem> decrypt(List<CertificateItem> certList,CloseableHttpResponse response) throws GeneralSecurityException, IOException { - List<PlainCertificateItem> plainCertificateList = new ArrayList<PlainCertificateItem>(); - AesUtil aesUtil = new AesUtil("".getBytes(StandardCharsets.UTF_8)); - for(CertificateItem item:certList){ - PlainCertificateItem bo = new PlainCertificateItem(); - bo.setSerialNo(item.getSerial_no()); - bo.setEffectiveTime(item.getEffective_time()); - bo.setExpireTime(item.getExpire_time()); - logger.info("平台证书密文解密"); - bo.setPlainCertificate(aesUtil.decryptToString(item.getEncrypt_certificate().getAssociated_data().getBytes(StandardCharsets.UTF_8), - item.getEncrypt_certificate().getNonce().getBytes(StandardCharsets.UTF_8), item.getEncrypt_certificate().getCiphertext())); - logger.info("平台证书公钥明文:"+bo.getPlainCertificate()); - plainCertificateList.add(bo); - } - return plainCertificateList; - }*/ - - - //证书保存 - /*private static List<X509Certificate> saveCertificate(List<PlainCertificateItem> cert) throws IOException { - List<X509Certificate> x509Certs = new ArrayList<X509Certificate>(); - File file = new File("平台证书路径"); - file.mkdirs(); - for (PlainCertificateItem item : cert) { - ByteArrayInputStream inputStream = new ByteArrayInputStream(item.getPlainCertificate().getBytes(StandardCharsets.UTF_8)); - X509Certificate x509Cert = PemUtil.loadCertificate(inputStream); - x509Certs.add(x509Cert); - String outputAbsoluteFilename = file.getAbsolutePath() + File.separator + "wechatpay_" + item.getSerialNo() + ".pem"; - try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputAbsoluteFilename), StandardCharsets.UTF_8))) { - writer.write(item.getPlainCertificate()); - } - logger.info("输出证书文件目录:" + outputAbsoluteFilename); - } - return x509Certs; - }*/ -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/CertificateUtils.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/CertificateUtils.java deleted file mode 100644 index 8b6cfae..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/CertificateUtils.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ruoyi.shop.util; - -/** - * @date 2020-03-18 11:25 - * @description 证书相关 - */ -public class CertificateUtils { - - - /** - * 获取商户私钥 - * @param priKeyPath 商户私钥证书路径 - * @return - */ - /*public static String getPrivateKey(String priKeyPath) throws Exception { - String originalKey = FileUtil.readUtf8String(priKeyPath); - String privateKey = originalKey - .replace("-----BEGIN PRIVATE KEY-----", "") - .replace("-----END PRIVATE KEY-----", "") - .replaceAll("\\s+", ""); - return getPrivateKeyStr(loadPrivateKey(privateKey)); - } - - - private static String getPrivateKeyStr(PrivateKey privateKey) { - return Base64.encode(privateKey.getEncoded()); - } - - - *//** - * 从字符串中加载私钥 - * @param privateKeyStr 私钥 - * @return - *//* - public static PrivateKey loadPrivateKey(String privateKeyStr) throws Exception { - try { - byte[] buffer = Base64.decode(privateKeyStr); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(buffer); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - return keyFactory.generatePrivate(keySpec); - } catch (NoSuchAlgorithmException e) { - throw new Exception("无此算法"); - } catch (InvalidKeySpecException e) { - throw new Exception("私钥非法"); - } catch (NullPointerException e) { - throw new Exception("私钥数据为空"); - } - } - - - *//** - * 获取证书 - * @param fileName 证书文件路径 (required) - * @return - *//* - public static X509Certificate getCertificate(String fileName) throws IOException { - InputStream fis = new FileInputStream(fileName); - try (BufferedInputStream bis = new BufferedInputStream(fis)) { - CertificateFactory cf = CertificateFactory.getInstance("X509"); - X509Certificate cert = (X509Certificate) cf.generateCertificate(bis); - cert.checkValidity(); - return cert; - } catch (CertificateExpiredException e) { - throw new RuntimeException("证书已过期", e); - } catch (CertificateNotYetValidException e) { - throw new RuntimeException("证书尚未生效", e); - } catch (CertificateException e) { - throw new RuntimeException("无效的证书文件", e); - } - } - - - *//** - * 获取证书 - * @param inputStream 证书文件 - * @return - *//* - public static X509Certificate getCertificate(InputStream inputStream) { - try { - CertificateFactory cf = CertificateFactory.getInstance("X509"); - X509Certificate cert = (X509Certificate) cf.generateCertificate(inputStream); - cert.checkValidity(); - return cert; - } catch (CertificateExpiredException e) { - throw new RuntimeException("证书已过期", e); - } catch (CertificateNotYetValidException e) { - throw new RuntimeException("证书尚未生效", e); - } catch (CertificateException e) { - throw new RuntimeException("无效的证书", e); - } - }*/ -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/SignUtils.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/SignUtils.java deleted file mode 100644 index ac5c3f1..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/SignUtils.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.ruoyi.shop.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @date 2020-03-18 11:02 - * @description 签名相关 - */ -public class SignUtils { - private static final Logger logger = LoggerFactory.getLogger(SignUtils.class); - - /** - * 签名生成 - * @param method 请求方法 如POST - * @param urlSuffix 请求地址后缀 如/v3/certificates - * @param mchId 电商平台商户号 - * @param serialNo 电商平台商户API证书序列号 - * @param body 请求请求报文主体,如果没有,就传空字符串 - * @param mchPrivateKeyPath 电商平台商户API私钥 - * @return - */ - /*public static String authorization(String method,String urlSuffix,String mchId,String serialNo,String body,String mchPrivateKeyPath) { - try { - String mchPrivateKey = CertificateUtils.getPrivateKey(mchPrivateKeyPath); - //时间戳 - String timestamp = Long.toString(System.currentTimeMillis()/1000); - //随机数 - String nonceStr = IdUtils.randomUUID(); - - //拼签名串 - StringBuilder sb = signMessage(method,urlSuffix,timestamp,nonceStr,body); - - logger.info("sign original string:{}",sb.toString()); - - //计算签名 - String sign = new String(Base64.encodeBase64(v3signRSA(sb.toString(),mchPrivateKey))); - - logger.info("sign result:{}",sign); - - //拼装http头的Authorization内容 - String authorization ="WECHATPAY2-SHA256-RSA2048 mchid=\""+mchId+"\",nonce_str=\""+nonceStr+"\",signature=\""+sign+"\",timestamp=\""+timestamp+"\",serial_no=\""+serialNo+"\""; - - logger.info("authorization result:{}",authorization); - - return authorization; - - } catch (Exception e) { - logger.error("authorization Exception result:{}",e); - e.printStackTrace(); - return null; - } - } - - *//** - * Authorization 签名串 - * @param method - * @param urlSuffix - * @param timestamp - * @param nonceStr - * @param body - * @return - *//* - private static StringBuilder signMessage(String method,String urlSuffix,String timestamp,String nonceStr,String body) { - return new StringBuilder() - .append(method) - .append("\n") - .append(urlSuffix) - .append("\n") - .append(timestamp) - .append("\n") - .append(nonceStr) - .append("\n") - .append(body) - .append("\n"); - } - - *//** - * 私钥签名 - * @param data 需要加密的数据 - * @param mchPriKey - * @return - * @throws Exception - *//* - public static byte[] v3signRSA(String data, String mchPriKey) throws Exception { - //签名的类型 - Signature sign = Signature.getInstance("SHA256withRSA"); - //读取商户私钥,该方法传入商户私钥证书的内容即可 - byte[] keyBytes = Base64.decodeBase64(mchPriKey); - PKCS8EncodedKeySpec keySpec =new PKCS8EncodedKeySpec(keyBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - PrivateKey priKey = keyFactory.generatePrivate(keySpec); - sign.initSign(priKey); - sign.update(data.getBytes(StandardCharsets.UTF_8)); - return sign.sign(); - } - - public static boolean v3VerifyRSA(HttpResponse response,String wechatPubKeyPath) { - - if (response == null || StringUtils.isEmpty(wechatPubKeyPath)) { - return false; - } - Map<String, List<String>> headers = response.headers(); - //验证微信支付返回签名 - String headsTimestamp = headers.get("Wechatpay-Timestamp").get(0); - String headsNonce = headers.get("Wechatpay-Nonce").get(0); - String headsSign = headers.get("Wechatpay-Signature").get(0); - String resContent = response.body(); - //拼装待签名串 - StringBuilder sb =new StringBuilder(); - sb.append(headsTimestamp).append("\n"); - sb.append(headsNonce).append("\n"); - sb.append(resContent).append("\n"); - try { - //验证签名 - return v3VerifyRSA(sb.toString(), Base64.decodeBase64(headsSign.getBytes()), wechatPubKeyPath); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - public static boolean v3VerifyRSA(String data,byte[] sign, String wechatPubKeyPath) throws Exception{ - if(data == null || sign == null || wechatPubKeyPath == null){ - return false; - } - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - FileInputStream in =new FileInputStream(wechatPubKeyPath); - Certificate c = cf.generateCertificate(in); - in.close(); - PublicKey publicKey = c.getPublicKey(); - Signature signature = Signature.getInstance("SHA256WithRSA"); - signature.initVerify(publicKey); - signature.update(data.getBytes(StandardCharsets.UTF_8)); - - boolean result = signature.verify(sign); - if (result) { - logger.info("v3VerifyRSA result:{}","签名验证成功"); - } else { - logger.info("v3VerifyRSA result:{}","签名验证失败"); - } - return result; - }*/ -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WxShopUtils.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WxShopUtils.java deleted file mode 100644 index 084d93f..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WxShopUtils.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.ruoyi.shop.util; - -import com.alibaba.fastjson2.JSONObject; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.shop.util.dto.ContactInfo; -import com.ruoyi.shop.util.dto.IdCardInfo; -import com.ruoyi.shop.util.dto.SubmitInfo; -import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder; -import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier; -import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner; -import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials; -import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator; -import com.wechat.pay.contrib.apache.httpclient.exception.HttpCodeException; -import com.wechat.pay.contrib.apache.httpclient.exception.NotFoundException; -import com.wechat.pay.contrib.apache.httpclient.util.PemUtil; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.util.EntityUtils; - -import javax.crypto.Cipher; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.security.GeneralSecurityException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.Base64; - -/** - * @ClassName WxShopUtils - * @Description TODO - * @Author jqs - * @Date 2023/6/19 11:11 - * @Version 1.0 - */ - -public class WxShopUtils { - - private final static String PRIVATE_KEY = ""; - - private final static String MCH_ID = ""; - - private final static String MCH_SERIAL_NO = ""; - - private final static String API_V3_KEY = ""; - - - /** - * @description 创建httpClient - * @author jqs - * @date 2023/6/19 12:50 - * @param - * @return CloseableHttpClient - */ - private static CloseableHttpClient createHttpClient() throws NotFoundException, IOException, GeneralSecurityException, HttpCodeException { - - String privateKey = PRIVATE_KEY; - String mchId = MCH_ID; - String mchSerialNo = MCH_SERIAL_NO; - String apiV3Key = API_V3_KEY; - // 加载商户私钥(privateKey:私钥字符串) - PrivateKey merchantPrivateKey = PemUtil - .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8"))); - - // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥) - AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier( - new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8")); - - // 初始化httpClient - CloseableHttpClient httpClient = WechatPayHttpClientBuilder.create() - .withMerchant(mchId, mchSerialNo, merchantPrivateKey) - .withValidator(new WechatPay2Validator(verifier)).build(); - return httpClient; - } - - /** - * @description 提交申请 - * @author jqs - * @date 2023/7/19 11:01 - * @param submitInfo - * @return void - */ - public static void ApplymentSubMch(SubmitInfo submitInfo) throws Exception { - - // 初始化httpClient - CloseableHttpClient httpClient = createHttpClient(); - //请求URL - HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/ecommerce/applyments/"); - // 请求body参数 - String reqdata = convertToStr(submitInfo); - StringEntity entity = new StringEntity(reqdata,"utf-8"); - entity.setContentType("application/json"); - httpPost.setEntity(entity); - httpPost.setHeader("Accept", "application/json"); - //完成签名并执行请求 - CloseableHttpResponse response = httpClient.execute(httpPost); - try { - int statusCode = response.getStatusLine().getStatusCode(); - if (statusCode == 200) { //处理成功 - System.out.println("success,return body = " + EntityUtils.toString(response.getEntity())); - } else if (statusCode == 204) { //处理成功,无返回Body - System.out.println("success"); - } else { - System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity())); - throw new IOException("request failed"); - } - } finally { - httpClient.close(); - response.close(); - } - - } - - /** - * @description 获取申请状态 - * @author jqs - * @date 2023/7/19 11:01 - * @param applymentId - * @return void - */ - public static void QueryApplyments(String applymentId) throws Exception{ - - // 初始化httpClient - CloseableHttpClient httpClient = createHttpClient(); - //请求URL - HttpGet httpGet = new HttpGet("https://api.mch.weixin.qq.com/v3/ecommerce/applyments/out-request-no/"+applymentId); - httpGet.setHeader("Accept", "application/json"); - //完成签名并执行请求 - CloseableHttpResponse response = httpClient.execute(httpGet); - try { - int statusCode = response.getStatusLine().getStatusCode(); - if (statusCode == 200) { //处理成功 - System.out.println("success,return body = " + EntityUtils.toString(response.getEntity())); - } else if (statusCode == 204) { //处理成功,无返回Body - System.out.println("success"); - } else { - System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity())); - throw new IOException("request failed"); - } - } finally { - httpClient.close(); - response.close(); - } - } - - - //加密申请信息 - private static String convertToStr(SubmitInfo submitInfo) throws Exception { - rsaEncryptSubmitInfo(submitInfo); - return JSONObject.toJSONString(submitInfo); - } - - - private static void rsaEncryptSubmitInfo(SubmitInfo submitInfo) throws Exception { - IdCardInfo idCardInfo=submitInfo.getId_card_info(); - if(idCardInfo!=null){ - idCardInfo.setId_card_name(rsaEncryptByCert(idCardInfo.getId_card_name())); - idCardInfo.setId_card_number(rsaEncryptByCert(idCardInfo.getId_card_number())); - } - ContactInfo contactInfo=submitInfo.getContact_info(); - if(contactInfo!=null){ - contactInfo.setContact_name(rsaEncryptByCert(contactInfo.getContact_name())); - contactInfo.setContact_id_card_number(rsaEncryptByCert(contactInfo.getContact_id_card_number())); - contactInfo.setMobile_phone(rsaEncryptByCert(contactInfo.getMobile_phone())); - if(!StringUtils.isEmpty(contactInfo.getContact_email())){ - contactInfo.setContact_email(rsaEncryptByCert(contactInfo.getContact_email())); - } - } - } - - private static String rsaEncryptByCert(String content) throws Exception { - String platPrivateKey = PRIVATE_KEY; - InputStream inStream=new ByteArrayInputStream(platPrivateKey.getBytes(StandardCharsets.UTF_8)); - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - X509Certificate certificate = (X509Certificate)cf.generateCertificate(inStream); - PublicKey publicKey=certificate.getPublicKey(); - Cipher ci= Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding"); - ci.init(Cipher.ENCRYPT_MODE,publicKey); - return Base64.getEncoder().encodeToString(ci.doFinal(content.getBytes(StandardCharsets.UTF_8))); - } - - -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/AccountInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/AccountInfo.java deleted file mode 100644 index 7e46bb9..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/AccountInfo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName AccountInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:55 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 结算银行账户 - */ -@Data -public class AccountInfo implements Serializable { - private static final long serialVersionUID=1L; - /**账户类型*/ - private String bank_account_type; - /**开户银行*/ - private String account_bank; - /**开户名称*/ - private String account_name; - /**开户银行省市编码*/ - private String bank_address_code; - /**开户银行联行号*/ - private String bank_branch_id; - /**开户银行全称 (含支行)*/ - private String bank_name; - /**银行帐号*/ - private String account_number; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/BusinessLicenseInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/BusinessLicenseInfo.java deleted file mode 100644 index e30b92d..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/BusinessLicenseInfo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName BusinessLicenseInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:54 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 营业执照/登记证书信息 - */ -@Data -public class BusinessLicenseInfo implements Serializable { - private static final long serialVersionUID=1L; - /**证件扫描件*/ - private String business_license_copy; - /**证件注册号*/ - private String business_license_number; - /**商户名称*/ - private String merchant_name; - /**经营者/法定代表人姓名*/ - private String legal_person; - /**注册地址*/ - private String company_address; - /**营业期限*/ - private String business_time; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/CertificateItem.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/CertificateItem.java deleted file mode 100644 index 5a9c13e..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/CertificateItem.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.shop.util.dto; - - -import lombok.Data; - -//平台证书item -@Data -public class CertificateItem { - - //加密的平台证书序列号 - private String serial_no; - - //加密的平台证书序列号 - private String effective_time; - - //证书弃用时间 - private String expire_time; - - //证书加密信息 - private EncryptedCertificateItem encrypt_certificate; - -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/ContactInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/ContactInfo.java deleted file mode 100644 index c5a5752..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/ContactInfo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName ContactInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:55 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 超级管理员信息 - */ -@Data -public class ContactInfo implements Serializable { - private static final long serialVersionUID=1L; - /**超级管理员类型*/ - private String contact_type; - /**超级管理员姓名*/ - private String contact_name; - /**超级管理员身份证件号码*/ - private String contact_id_doc_type; - private String contact_id_card_number; - private String mobile_phone; - private String contact_email; -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/EncryptedCertificateItem.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/EncryptedCertificateItem.java deleted file mode 100644 index f0402b4..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/EncryptedCertificateItem.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ruoyi.shop.util.dto; - -import lombok.Data; - -/** - * @ClassName EncryptedCertificateItem - * @Description TODO - * @Author jqs - * @Date 2023/6/19 14:12 - * @Version 1.0 - */ -@Data -public class EncryptedCertificateItem { - - //加密的平台证书序列号 - private String algorithm; - - //加密的平台证书序列号 - private String nonce; - - //证书弃用时间 - private String associated_data; - - //证书弃用时间 - private String ciphertext; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdCardInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdCardInfo.java deleted file mode 100644 index 787d62c..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdCardInfo.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName IdCardInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:54 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 经营者/法人身份证信息 - */ -@Data -public class IdCardInfo implements Serializable { - private static final long serialVersionUID=1L; - /**身份证人像面照片*/ - private String id_card_copy; - /**身份证国徽面照片*/ - private String id_card_national; - /**身份证姓名*/ - private String id_card_name; - /**身份证号码*/ - private String id_card_number; - /**身份证有效期限*/ - private String id_card_valid_time_begin; - private String id_card_valid_time; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdDocInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdDocInfo.java deleted file mode 100644 index 0656198..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/IdDocInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName IdDocInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:55 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 经营者/法人其他类型证件信息 - */ -@Data -public class IdDocInfo implements Serializable { - private static final long serialVersionUID=1L; - /**证件姓名*/ - private String id_doc_name; - /**证件号码*/ - private String id_doc_number; - /**证件照片*/ - private String id_doc_copy; - /**证件结束日期*/ - private String doc_period_end; -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/OrganizationCertInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/OrganizationCertInfo.java deleted file mode 100644 index d656e02..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/OrganizationCertInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName OrganizationCertInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:54 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 组织机构代码证信息 - */ -@Data -public class OrganizationCertInfo implements Serializable { - private static final long serialVersionUID=1L; - /**组织机构代码证照片*/ - private String organization_copy; - /**组织机构代码*/ - private String organization_number; - /**组织机构代码有效期限*/ - private String organization_time; -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/PlainCertificateItem.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/PlainCertificateItem.java deleted file mode 100644 index 1db8021..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/PlainCertificateItem.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.shop.util.dto; - -import lombok.Data; - -/** - * @ClassName PlainCertificateItem - * @Description TODO - * @Author jqs - * @Date 2023/6/19 14:14 - * @Version 1.0 - */ -@Data -public class PlainCertificateItem { - - private String serialNo; - - private String effectiveTime; - - private String expireTime; - - private String plainCertificate; - -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SalesSceneInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SalesSceneInfo.java deleted file mode 100644 index d08376c..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SalesSceneInfo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName SalesSceneInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:56 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; - -/** - * 店铺信息 - */ -@Data -public class SalesSceneInfo implements Serializable { - private static final long serialVersionUID=1L; - /**店铺名称*/ - private String store_name; - /**店铺链接*/ - private String store_url; - /**店铺二维码*/ - private String store_qr_code; - -} \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SubmitInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SubmitInfo.java deleted file mode 100644 index 4654a1f..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/SubmitInfo.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ruoyi.shop.util.dto; - -/** - * @ClassName SubmitInfo - * @Description TODO - * @Author jqs - * @Date 2023/6/19 12:53 - * @Version 1.0 - */ - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * 进件信息 - */ -@Data -public class SubmitInfo implements Serializable { - private static final long serialVersionUID=1L; - /**业务申请编号*/ - private String out_request_no; - /**主体类型*/ - private String organization_type; - /**营业执照/登记证书信息*/ - private BusinessLicenseInfo business_license_info; - /**组织机构代码证信息*/ - private OrganizationCertInfo organization_cert_info; - /**经营者/法人证件类型*/ - private String id_doc_type; - /**经营者/法人身份证信息*/ - private IdCardInfo id_card_info; - /**经营者/法人其他类型证件信息*/ - private IdDocInfo id_doc_info; - /**经营者/法人是否为受益人*/ - private Boolean owner; - /**是否填写结算银行账户*/ - private Boolean need_account_info; - /**结算银行账户*/ - private AccountInfo account_info; - /**超级管理员信息*/ - private ContactInfo contact_info; - /**店铺信息*/ - private SalesSceneInfo sales_scene_info; - /**商户简称*/ - private String merchant_shortname; - /**特殊资质*/ - private String qualifications; - /**补充材料*/ - private String business_addition_pics; - /**补充说明*/ - private String business_addition_desc; - - private List<UboInfo> ubo_info_list; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/UboInfo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/UboInfo.java deleted file mode 100644 index bd29c13..0000000 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/dto/UboInfo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ruoyi.shop.util.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @ClassName UboInfo - * @Description TODO - * @Author jqs - * @Date 2023/7/18 15:57 - * @Version 1.0 - */ -@Data -public class UboInfo implements Serializable { - private static final long serialVersionUID=1L; - - private String ubo_id_doc_type; - - private String ubo_id_doc_copy; - - private String ubo_id_doc_copy_back; - - private String ubo_id_doc_name; - - private String ubo_id_doc_number; - - private String ubo_id_doc_address; - - private String ubo_id_doc_period_begin; - - private String ubo_id_doc_period_end; -} diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index 6c28571..079c59a 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -926,4 +926,14 @@ #{id} </foreach> </select> + + <select id="getTaskMsgList" resultType="com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo"> + SELECT + ts.belong_user_id userId, + CONCAT('[', GROUP_CONCAT(tst.task_title SEPARATOR '],['), ']') taskTitles + FROM t_shop_task tst + INNER JOIN t_shop ts ON tst.shop_id = ts.shop_id + WHERE tst.del_flag = 0 AND tst.task_status = 1 AND tst.task_date = CURRENT_DATE + GROUP BY userId + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java index 4dedcc4..3398f36 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java @@ -41,6 +41,7 @@ return wxService; } + @Bean public WxCryptUtil wxCryptUtil() { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java index 2921a7d..be5a2b8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java @@ -32,4 +32,14 @@ } } + /** + * 定时同步企业微信部门 + */ + @Scheduled(cron="0 35 8 * * ?") + private void timingSendTaskMessage(){ + if(schedulerUtils.getSchedulerRun()) { + log.info("定时发送通知任务任务开始执行"); + sysWxCpService.sendTaskMessage(); + } + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java index 2b94fce..1665be2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java @@ -1,6 +1,11 @@ package com.ruoyi.system.service.impl.staff; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.domain.poji.sys.SysDept; +import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; +import com.ruoyi.system.api.service.RemoteShopService; +import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import lombok.extern.log4j.Log4j2; @@ -8,6 +13,8 @@ import me.chanjar.weixin.cp.api.WxCpDepartmentService; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.bean.WxCpDepart; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -28,7 +35,13 @@ private WxCpService wxCpService; @Resource + private RemoteShopService remoteShopService; + + @Resource private ISysDeptService sysDeptService; + + @Resource + private SysStaffService sysStaffService; /** * @description * @author jqs @@ -94,4 +107,35 @@ throw new RuntimeException(e); } } + + /** + * @description 企业微信消息推送 + * @author jqs + * @date 2023/8/29 11:05 + * @return void + */ + @Override + public void sendTaskMessage(){ + List<MgtUserTaskMsgVo> userTaskMsgVoList = remoteShopService.getTaskMsgList().getData(); + WxCpMessage message; + SysStaff sysStaff; + if(userTaskMsgVoList!=null&&!userTaskMsgVoList.isEmpty()){ + for(MgtUserTaskMsgVo mgtUserTaskMsgVo : userTaskMsgVoList){ + sysStaff = sysStaffService.getByUserId(mgtUserTaskMsgVo.getUserId()); + if(sysStaff!=null&& StringUtils.isNotBlank(sysStaff.getWxUserId())){ + message = new WxCpMessage(); + message.setAgentId(1000024); + message.setToUser(sysStaff.getWxUserId()); + message.setMsgType("text"); + message.setContent(mgtUserTaskMsgVo.getTaskTitle()+"今日需要任务跟进,请注意!"); + try { + WxCpMessageSendResult result = wxCpService.getMessageService().send(message); + System.out.println(result); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + } + } + } + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java index 0bfc9ad..173155e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java @@ -26,4 +26,12 @@ * @return void */ void syncDepartment(); + + /** + * @description 企业微信消息推送 + * @author jqs + * @date 2023/8/29 11:05 + * @return void + */ + void sendTaskMessage(); } diff --git a/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java b/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java index 3c10423..680da4b 100644 --- a/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java +++ b/ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java @@ -2,7 +2,6 @@ import com.ruoyi.system.service.staff.SysWxCpService; -import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -23,8 +22,7 @@ @Resource private SysWxCpService sysWxCpService; - @Test + /*@Test public void main() { - sysWxCpService.syncDepartment(); - } + }*/ } -- Gitblit v1.7.1