From c97706c3cc213b7db3d381e8a0435ff0ef9a04d6 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期一, 04 九月 2023 18:53:40 +0800 Subject: [PATCH] seata 同步 支付调整 --- ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java | 12 + ruoyi-modules/ruoyi-system/src/test/java/com/ruoyi/system/systemTest.java | 13 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtWxCPStaffDto.java | 36 +++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java | 5 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpProperties.java | 3 ruoyi-modules/ruoyi-order/pom.xml | 8 ruoyi-modules/ruoyi-shop/pom.xml | 6 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpConfiguration.java | 17 + ruoyi-modules/ruoyi-system/pom.xml | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java | 3 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 6 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java | 9 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysWxCpService.java | 49 ++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java | 28 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java | 22 +- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java | 4 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/AsyncConfig.java | 4 ruoyi-common/ruoyi-common-seata/pom.xml | 1 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerBirthdayController.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/scheduler/SystemScheduler.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 24 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java | 4 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java | 201 ++++++++++++++++++- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 14 + ruoyi-modules/ruoyi-member/pom.xml | 5 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopCommonProportionEditDto.java | 21 ++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java | 6 ruoyi-modules/ruoyi-goods/pom.xml | 7 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java | 10 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java | 9 ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java | 4 37 files changed, 497 insertions(+), 69 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java index e753326..aa59168 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/ConfigEnum.java @@ -37,7 +37,8 @@ NURSE_PROBLEM("NURSE_PROBLEM", 4,"调理问题"), HOME_STYLE("HOME_STYLE", 2,"首页风格"), HOME_SLOGAN("HOME_SLOGAN", 1,"首页广告语"), - HOME_LOGO("HOME_LOGO", 1,"首页logo"); + HOME_LOGO("HOME_LOGO", 1,"首页logo"), + SHOP_COMMON_PROPORTION("SHOP_COMMON_PROPORTION", 1,"商户统一分成"); diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java index 9381a1c..5f7ac74 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/SecurityConstant.java @@ -52,6 +52,11 @@ String AUTO_CANCEL_ORDER_TIME = "AUTO_CANCEL_ORDER_TIME"; /** + * 商户统一分成 + */ + String SHOP_COMMON_PROPORTION = "SHOP_COMMON_PROPORTION"; + + /** * 自动取消订单时间 */ String PAY_MONEY_INTEGRAL = "PAY_MONEY_INTEGRAL"; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java index ab6c083..11230b8 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java @@ -280,6 +280,12 @@ */ @TableField("auth_flag") private Integer authFlag; + + /** + * 分账标记 + */ + @TableField("account_flag") + private Integer accountFlag; /** * 店铺二维码 */ diff --git a/ruoyi-common/ruoyi-common-seata/pom.xml b/ruoyi-common/ruoyi-common-seata/pom.xml index 7e8ce07..3031adb 100644 --- a/ruoyi-common/ruoyi-common-seata/pom.xml +++ b/ruoyi-common/ruoyi-common-seata/pom.xml @@ -23,5 +23,6 @@ <artifactId>spring-cloud-starter-alibaba-seata</artifactId> </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/AsyncConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/AsyncConfig.java index 3bc8ba7..5c8e743 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/AsyncConfig.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/AsyncConfig.java @@ -1,6 +1,6 @@ package com.ruoyi.common.security.config; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.AsyncConfigurer; @@ -20,7 +20,7 @@ */ @Configuration @EnableAsync -@Slf4j +@Log4j2 public class AsyncConfig implements AsyncConfigurer { /** diff --git a/ruoyi-modules/ruoyi-goods/pom.xml b/ruoyi-modules/ruoyi-goods/pom.xml index 123fe0b..6128e42 100644 --- a/ruoyi-modules/ruoyi-goods/pom.xml +++ b/ruoyi-modules/ruoyi-goods/pom.xml @@ -78,6 +78,13 @@ <artifactId>ruoyi-common-swagger</artifactId> </dependency> + <!-- RuoYi Common Seata--> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-seata</artifactId> + </dependency> + + <dependency> <groupId>com.baomidou</groupId> diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java index 23c40e7..5050765 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java @@ -2,14 +2,14 @@ import com.ruoyi.goods.service.activity.ActivityService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component -@Slf4j +@Log4j2 public class ActivityScheduler { diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml index c17cff4..4122064 100644 --- a/ruoyi-modules/ruoyi-member/pom.xml +++ b/ruoyi-modules/ruoyi-member/pom.xml @@ -78,6 +78,11 @@ <artifactId>ruoyi-common-swagger</artifactId> </dependency> + <!-- RuoYi Common Seata--> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-seata</artifactId> + </dependency> <dependency> diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerBirthdayController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerBirthdayController.java index 9309e1f..a02a102 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerBirthdayController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerBirthdayController.java @@ -9,6 +9,7 @@ import com.ruoyi.system.api.domain.dto.MerBaseDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.log4j.Log4j2; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -26,6 +27,7 @@ @Api(value = "商户端生日卡相关接口", tags = "商户端生日卡相关接口", description = "商户端生日卡相关接口") @RestController @RequestMapping("/mer/birthday") +@Log4j2 public class MerBirthdayController { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java index 8cfff87..5bab29b 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java @@ -5,7 +5,7 @@ import com.ruoyi.member.service.member.MemberCouponService; import com.ruoyi.member.service.member.MemberService; import com.ruoyi.member.service.member.MemberTotalService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -14,7 +14,7 @@ @Component -@Slf4j +@Log4j2 public class MemberScheduler { diff --git a/ruoyi-modules/ruoyi-order/pom.xml b/ruoyi-modules/ruoyi-order/pom.xml index d180c09..5f77d00 100644 --- a/ruoyi-modules/ruoyi-order/pom.xml +++ b/ruoyi-modules/ruoyi-order/pom.xml @@ -78,6 +78,13 @@ <artifactId>ruoyi-common-swagger</artifactId> </dependency> + <!-- RuoYi Common Seata--> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-seata</artifactId> + </dependency> + + <dependency> <groupId>com.baomidou</groupId> @@ -143,6 +150,7 @@ <version>4.13.1</version> <scope>test</scope> </dependency> + </dependencies> <build> diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java index e7b6efc..54dfb5c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java @@ -2,7 +2,7 @@ import com.ruoyi.order.service.order.OrderService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -11,7 +11,7 @@ @Component -@Slf4j +@Log4j2 public class OrderScheduler { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java index df34a6f..29ba1ef 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java @@ -30,6 +30,7 @@ import com.ruoyi.system.api.service.RemoteGoodsService; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteShopService; +import io.seata.spring.annotation.GlobalTransactional; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,7 +101,7 @@ * @param merSureConsumerGoodsDto */ @Override - @Transactional + @Transactional public void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ ConsumerGoods oldConsumerGoods = this.getById(merSureConsumerGoodsDto.getConsumerGoodsId()); if(oldConsumerGoods.getSureNum()==null||oldConsumerGoods.getSureNum()<1){ @@ -217,6 +218,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); if (goodsList != null && !goodsList.isEmpty()) { 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 e165591..f533272 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 @@ -58,7 +58,8 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; -import lombok.extern.slf4j.Slf4j; +import io.seata.spring.annotation.GlobalTransactional; +import lombok.extern.log4j.Log4j2; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; @@ -84,7 +85,7 @@ * @since 2023-04-25 */ @Service -@Slf4j +@Log4j2 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { @Resource @@ -513,6 +514,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { // 获取用户ID Long userId = appPlaceOrderDto.getUserId(); @@ -912,6 +914,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) { Long userId = appPlaceActivityDto.getUserId(); // 创建订单对象 @@ -1448,6 +1451,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto) { String orderId = merVerifyOrderDto.getOrderId(); BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); @@ -1696,6 +1700,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); @@ -1823,6 +1828,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) { MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData(); @@ -2287,6 +2293,7 @@ } //更新会员消费记录 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); + memberTotalChangeDto.setUserId(order.getUserId()); memberTotalChangeDto.setConsumeTime(nowTime); remoteMemberService.changeMemberTotal(memberTotalChangeDto); //更新商户统计 @@ -4424,6 +4431,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public void autoCancelOrder(String orderId) { //更新订单信息 Order order = this.getById(orderId); @@ -4490,6 +4498,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public void payBack(PartnerTransactionsResult transaction) { log.info("订单支付回调---"+transaction.toString()); // Order order = this.getById(orderId); @@ -4656,6 +4665,7 @@ */ @Override @Transactional + @GlobalTransactional(rollbackFor = Exception.class) public void refundOrder(String orderId) { // 更新订单信息 Order order = this.getById(orderId); 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 c74f07c..7de2e4b 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 @@ -1318,8 +1318,8 @@ SELECT COUNT(DISTINCT toc.user_id) orderPerson, COUNT(DISTINCT CASE WHEN tog.goods_type = 1 THEN toc.user_id ELSE NULL END) cyclePerson, - COUNT(DISTINCT CASE WHEN tog.goods_type = 2 THEN toc.user_id ELSE NULL END) experiencePerson, - COUNT(DISTINCT CASE WHEN tog.goods_type = 3 THEN toc.user_id ELSE NULL END) servicePerson + COUNT(DISTINCT CASE WHEN tog.goods_type = 3 THEN toc.user_id ELSE NULL END) experiencePerson, + COUNT(DISTINCT CASE WHEN tog.goods_type = 2 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 = 3 AND toc.new_member_flag = 1 @@ -1775,7 +1775,7 @@ <select id="countUserActivityByActivity" resultType="java.lang.Integer"> SELECT COUNT(order_id) FROM t_order - WHERE del_flag = 0 AND order_from =2 AND user_id = #{userId} AND activity_id = #{activityId} AND order_status > 0 + WHERE del_flag = 0 AND order_from =2 AND user_id = #{userId} AND activity_id = #{activityId} AND order_status > 1 </select> <select id="getStaffActivityOrderTotal" resultType="com.ruoyi.order.domain.vo.StaffActivityOrderTotalVo"> diff --git a/ruoyi-modules/ruoyi-shop/pom.xml b/ruoyi-modules/ruoyi-shop/pom.xml index 13a5313..220e5ce 100644 --- a/ruoyi-modules/ruoyi-shop/pom.xml +++ b/ruoyi-modules/ruoyi-shop/pom.xml @@ -78,6 +78,12 @@ <artifactId>ruoyi-common-swagger</artifactId> </dependency> + <!-- RuoYi Common Seata--> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-seata</artifactId> + </dependency> + <dependency> <groupId>com.baomidou</groupId> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java index 7f5f421..735cd40 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java @@ -274,7 +274,7 @@ @RequestMapping(value = "/mgtShopAuth", method = RequestMethod.POST) @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户进件") @ApiOperation(value = "平台商户进件") - public R mgtShopAuth(@Validated @RequestBody MgtShopAuthDto mgtShopAuthDto) throws Exception { + public R mgtShopAuth(@Validated @RequestBody MgtShopAuthDto mgtShopAuthDto) { Long userId = SecurityUtils.getUserId(); mgtShopAuthDto.setUserId(userId); shopService.mgtShopAuth(mgtShopAuthDto); @@ -295,5 +295,13 @@ return R.ok(mgtShopAuthCodeVo); } - + @RequestMapping(value = "/mgtShopAuth", method = RequestMethod.POST) + @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户进件") + @ApiOperation(value = "平台商户进件") + public R mgtShopAuth(@RequestBody MgtShopAuthGetDto mgtShopAuthGetDto){ + Long userId = SecurityUtils.getUserId(); + mgtShopAuthGetDto.setUserId(userId); + shopService.addProfitSharingReceiver(mgtShopAuthGetDto); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java index 68b6603..73b42b2 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java @@ -44,6 +44,7 @@ @ApiModelProperty(value = "签约链接") private String signUrl; - + @ApiModelProperty(value = "分账方标记1是0否 0的时候需要添加为分账方") + private Integer accountFlag; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java index 888c016..062f682 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java @@ -3,7 +3,7 @@ import com.ruoyi.shop.service.shop.ShopService; import com.ruoyi.shop.service.task.ShopTaskService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -12,7 +12,7 @@ @Component -@Slf4j +@Log4j2 public class ShopScheduler { 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 ac16539..4e0e998 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 @@ -39,7 +39,7 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -59,7 +59,7 @@ * @since 2023-04-25 */ @Service -@Slf4j +@Log4j2 public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements ShopService { @Resource @@ -245,6 +245,7 @@ shop.setFrozenFlag(0); shop.setCooperativeFlag(1); shop.setAuthFlag(0); + shop.setAccountFlag(0); newShop = true; } BeanUtils.copyProperties(mgtEditShopDto,shop); @@ -1030,7 +1031,7 @@ * @return void */ @Override - public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException { + public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) { ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId()); Shop shop = this.getByShopId(shopAuthentication.getShopId()); @@ -1600,10 +1601,21 @@ * @return void */ @Override - public ProfitSharingReceiverResult addProfitSharingReceiver(ProfitSharingReceiverRequest request){ + public void addProfitSharingReceiver(MgtShopAuthGetDto mgtShopAuthGetDto){ try { - ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); - return result; + ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthGetDto.getAuthId()); + Shop shop = this.getByShopId(shopAuthentication.getShopId()); + if(shopAuthentication!=null&&shopAuthentication.getAuditStatus()==6){ + ProfitSharingReceiverRequest request = new ProfitSharingReceiverRequest(); + request.setAccount(shopAuthentication.getSubMchid()); + request.setName(shopAuthentication.getBlShopName()); + ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); + if(StringUtils.isNotBlank(result.getAccount())){ + shop.setAccountFlag(1); + this.saveOrUpdate(shop); + } + } + } catch (WxPayException e) { throw new RuntimeException(e); } 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 03ff06d..75f51f2 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 @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverRequest; import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingReceiverResult; -import com.github.binarywang.wxpay.exception.WxPayException; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.vo.*; import com.ruoyi.system.api.domain.dto.MerBaseDto; @@ -207,7 +206,7 @@ * @param mgtShopAuthDto * @return void */ - void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException; + void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto); /** * @description 获取平台商户统计 @@ -367,15 +366,7 @@ * @return StaffShopDetailVo */ StaffShopDetailVo getShopDetail(Long shopId); - - /** - * @description - * @author jqs - * @date 2023/8/23 9:44 - * @param - * @return void - */ - ProfitSharingReceiverResult addProfitSharingReceiver(ProfitSharingReceiverRequest request); + /** * @description @@ -385,4 +376,13 @@ * @return List<MgtUserTaskMsgVo> */ List<MgtUserTaskMsgVo> getTaskMsgList(); + + /** + * @description 添加分账方 + * @author jqs + * @date 2023/9/4 18:14 + * @param mgtShopAuthGetDto + * @return void + */ + void addProfitSharingReceiver(MgtShopAuthGetDto mgtShopAuthGetDto); } 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 da314be..461819f 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 @@ -417,7 +417,7 @@ AND ts.frozen_flag = 1 </if> <if test="param.shopStatus!=null and param.shopStatus==2"> - AND ts.cooperative_flag = 0 + AND ts.cooperation_end_time IS NOT NULL AND (CURRENT_DATE < Date(ts.cooperation_start_time) OR CURRENT_DATE > Date(ts.cooperation_end_time)) </if> <if test="param.keyword!=null and param.keyword!=''"> AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%') @@ -547,10 +547,10 @@ WHEN 7 THEN '已拒绝' WHEN 8 THEN '已拒绝' END auditStatusDesc, + ts.account_flag accountFlag, CASE tsa.audit_status WHEN 4 THEN 1 WHEN 5 THEN 1 - END auditStatusSort FROM t_shop ts INNER JOIN t_shop_authentication tsa ON ts.shop_id = tsa.shop_id AND tsa.del_flag = 0 @@ -931,7 +931,7 @@ <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 + CONCAT('[', GROUP_CONCAT(tst.task_title SEPARATOR '],['), ']') taskTitle 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 diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml index 3f02e14..2b7a9ee 100644 --- a/ruoyi-modules/ruoyi-system/pom.xml +++ b/ruoyi-modules/ruoyi-system/pom.xml @@ -78,6 +78,12 @@ <artifactId>ruoyi-common-swagger</artifactId> </dependency> + <!-- RuoYi Common Seata--> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-common-seata</artifactId> + </dependency> + <dependency> <groupId>com.baomidou</groupId> 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 26c967c..1d57627 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 @@ -27,9 +27,8 @@ private WxCpProperties properties; @Bean - @ConditionalOnMissingBean + @ConditionalOnMissingBean(name = "wxService") public WxCpService wxService() { - WxCpDefaultConfigImpl wxCpConfigStorage = new WxCpDefaultConfigImpl(); wxCpConfigStorage.setCorpId(properties.getCorpId()); wxCpConfigStorage.setAgentId(properties.getAgentId()); @@ -41,6 +40,20 @@ return wxService; } + @Bean + @ConditionalOnMissingBean(name = "adWxService") + public WxCpService adWxService() { + WxCpDefaultConfigImpl wxAdCpConfigStorage = new WxCpDefaultConfigImpl(); + wxAdCpConfigStorage.setCorpId(properties.getCorpId()); + wxAdCpConfigStorage.setAgentId(properties.getAgentId()); + wxAdCpConfigStorage.setCorpSecret(properties.getAddressSecret()); + wxAdCpConfigStorage.setAesKey(properties.getEncodingAESKey()); + wxAdCpConfigStorage.setToken(properties.getToken()); + WxCpService adWxService = new WxCpServiceImpl(); + adWxService.setWxCpConfigStorage(wxAdCpConfigStorage); + return adWxService; + } + @Bean @ConditionalOnMissingBean diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpProperties.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpProperties.java index 436ed29..29b63d3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpProperties.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/config/WxCpProperties.java @@ -29,6 +29,9 @@ */ private String agentSecret; + + private String addressSecret; + /** * */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java index 2a16ad0..bf855ec 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java @@ -133,6 +133,16 @@ return R.ok(); } + @RequestMapping(value = "/editShopProportion", method = RequestMethod.POST) + @Log(title = "商户分成管理", businessType = BusinessType.UPDATE,operContent = "修改商户分成") + @ApiOperation(value = "修改商户分成") + public R editShopProportion(@RequestBody MgtShopCommonProportionEditDto mgtShopCommonProportionEditDto) { + Long userId = SecurityUtils.getUserId(); + mgtShopCommonProportionEditDto.setUserId(userId); + customConfigService.editShopProportion(mgtShopCommonProportionEditDto); + return R.ok(); + } + @RequestMapping(value = "/editAgreement", method = RequestMethod.POST) @Log(title = "协议管理", businessType = BusinessType.UPDATE,operContent = "修改协议") @ApiOperation(value = "修改协议") diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopCommonProportionEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopCommonProportionEditDto.java new file mode 100644 index 0000000..7327f8d --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtShopCommonProportionEditDto.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName MgtShopCommonProportionEditDto + * @Description TODO + * @Author jqs + * @Date 2023/9/4 18:03 + * @Version 1.0 + */ +@Data +public class MgtShopCommonProportionEditDto extends MgtBaseDto { + + @ApiModelProperty(value = "商户统一分成比例") + private String shopCommonProportion; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtWxCPStaffDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtWxCPStaffDto.java new file mode 100644 index 0000000..7c25057 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtWxCPStaffDto.java @@ -0,0 +1,36 @@ +package com.ruoyi.system.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName MgtWxCPStaffDto + * @Description TODO + * @Author jqs + * @Date 2023/9/4 16:49 + * @Version 1.0 + */ +@Data +public class MgtWxCPStaffDto { + + @ApiModelProperty(value = "微信部门id") + private Long wxDeptId; + + @ApiModelProperty(value = "微信用户id") + private String wxUserId; + + @ApiModelProperty(value = "员工姓名") + private String staffName; + + @ApiModelProperty(value = "员工电话") + private String staffMobile; + + @ApiModelProperty(value = "员工职位") + private String staffPost; + + @ApiModelProperty(value = "员工邮箱") + private String staffEmail; + + @ApiModelProperty(value = "负责人标记") + private String headFlag; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java index 209348b..b852a0e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/RedisListener.java @@ -8,7 +8,7 @@ import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteCouponService; import com.ruoyi.system.api.service.RemoteOrderService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; @@ -26,7 +26,7 @@ * @date 2023年06月06日 * @version: 1.0 */ -@Slf4j +@Log4j2 @Component public class RedisListener extends KeyExpirationEventMessageListener { 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 0de2d2c..fd5b1c0 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 @@ -2,14 +2,14 @@ import com.ruoyi.system.service.staff.SysWxCpService; -import lombok.extern.slf4j.Slf4j; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component -@Slf4j +@Log4j2 public class SystemScheduler { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java index 43eb4fd..6a0688d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java @@ -49,6 +49,15 @@ void editServiceCode(MgtServiceCodeEditDto mgtServiceCodeEditDto); /** + * @description 修改统一分成 + * @author jqs + * @date 2023/9/4 18:05 + * @param mgtShopCommonProportionEditDto + * @return void + */ + void editShopProportion(MgtShopCommonProportionEditDto mgtShopCommonProportionEditDto); + + /** * @description 平台获取自定义配置 * @author jqs * @date 2023/6/7 15:02 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java index c37ea0f..f357232 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java @@ -137,6 +137,34 @@ } /** + * @description 修改统一分成 + * @author jqs + * @date 2023/9/4 18:05 + * @param mgtShopCommonProportionEditDto + * @return void + */ + @Override + public void editShopProportion(MgtShopCommonProportionEditDto mgtShopCommonProportionEditDto){ + // 获取平台统一分成的配置 + CustomConfig customConfig = getByKey(ConfigEnum.SHOP_COMMON_PROPORTION.getKey()); + // 如果配置不存在,则创建一个新的配置 + if (customConfig == null) { + customConfig = new CustomConfig(); + customConfig.setCreateTime(new Date()); + customConfig.setDelFlag(0); + } + // 设置配置的类型、键、名称、值和更新时间 + customConfig.setConfigType(ConfigEnum.SHOP_COMMON_PROPORTION.getKeyType()); + customConfig.setConfigKey(ConfigEnum.SHOP_COMMON_PROPORTION.getKey()); + customConfig.setConfigName(ConfigEnum.SHOP_COMMON_PROPORTION.getKeyName()); + customConfig.setConfigValue(mgtShopCommonProportionEditDto.getShopCommonProportion()); + customConfig.setUpdateTime(new Date()); + // 保存或更新配置 + this.saveOrUpdate(customConfig); + redisService.setCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION,mgtShopCommonProportionEditDto.getShopCommonProportion()); + } + + /** * @param * @return MgtCustomConfigVo * @description 平台获取自定义配置 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 3f6867d..3cdbef9 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 @@ -4,6 +4,7 @@ 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.dto.MgtWxCPStaffDto; import com.ruoyi.system.domain.pojo.staff.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; @@ -13,8 +14,11 @@ 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.WxCpUser; import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -31,8 +35,13 @@ @Log4j2 public class SysWxCpServiceImpl implements SysWxCpService { - @Resource + @Autowired + @Qualifier("wxService") private WxCpService wxCpService; + + @Autowired + @Qualifier("adWxService") + private WxCpService adWxCpService; @Resource private RemoteShopService remoteShopService; @@ -42,6 +51,7 @@ @Resource private SysStaffService sysStaffService; + /** * @description * @author jqs @@ -142,28 +152,193 @@ } } + /** + * @description 更新企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxDeptId + * @param deptName + * @return void + */ @Override - public void updateDept(){ + public void updateWxCpDept(Long wxDeptId,String deptName){ WxCpDepart group = new WxCpDepart(); - group.setId(240L); - group.setName("软件开发测试部门"); + group.setId(wxDeptId); + group.setName(deptName); try { - wxCpService.getDepartmentService().update(group); + adWxCpService.getDepartmentService().update(group); } catch (WxErrorException e) { throw new RuntimeException(e); } } + /** + * @description 创建企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param parentId + * @param deptName + * @return void + */ @Override - public void sendMessage(){ - WxCpMessage message; - message = new WxCpMessage(); - message.setAgentId(1000024); - message.setToUser("jiangqiushi"); - message.setMsgType("text"); - message.setContent("今日需要任务跟进,请注意!"); + public Long addWxCpDept(Long parentId,String deptName){ + WxCpDepart depart = new WxCpDepart(); + depart.setParentId(parentId); + depart.setName(deptName); + Long departId = null; try { - WxCpMessageSendResult result = wxCpService.getMessageService().send(message); + departId = adWxCpService.getDepartmentService().create(depart); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + return departId; + } + + /** + * @description 删除企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxDeptId + * @return void + */ + @Override + public void deleteWxCpDept(Long wxDeptId){ + try { + adWxCpService.getDepartmentService().delete(wxDeptId); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + } + + /** + * @description 通过手机号获取wxUserId + * @author jqs + * @date 2023/9/4 15:44 + * @param mobile + * @return String + */ + private String getWxUserIdByMobile(String mobile){ + String wxUserId = null; + try { + wxUserId = adWxCpService.getUserService().getUserId(mobile); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + return wxUserId; + } + + + /** + * @description 通过wxUserId获取用户 + * @author jqs + * @date 2023/9/4 16:35 + * @param wxUserId + * @return WxCpUser + */ + private WxCpUser getWxCpUser(String wxUserId){ + WxCpUser wxCpUser = null; + try { + wxCpUser = adWxCpService.getUserService().getById(wxUserId); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + return wxCpUser; + } + + /** + * @description 创建企业微信员工 + * @author jqs + * @date 2023/9/4 15:19 + * @param mgtWxCPStaffDto + * @return void + */ + @Override + public String addWxCpStaff(MgtWxCPStaffDto mgtWxCPStaffDto){ + String wxUserId = mgtWxCPStaffDto.getWxUserId(); + String mobile = mgtWxCPStaffDto.getStaffMobile(); + String oldUserId = this.getWxUserIdByMobile(mobile); + WxCpUser oldWxCpUser = null; + Boolean sameUserId = false; + //判断手机号是否有对应企业微信用户 有则更新 无则新建 + if(StringUtils.isNotBlank(oldUserId)){ + oldWxCpUser = this.getWxCpUser(oldUserId); + }else{ + //当手机号无对应用户时判断wxUserId是否被占用 + oldWxCpUser = this.getWxCpUser(wxUserId); + if(oldWxCpUser!=null){ + sameUserId = true; + oldWxCpUser = null; + } + } + //获取企业微信用户是否存在 + if(oldWxCpUser!=null){ + oldWxCpUser.setUserId(mgtWxCPStaffDto.getWxUserId()); + oldWxCpUser.setName(mgtWxCPStaffDto.getStaffName()); + oldWxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile()); + if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){ + oldWxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail()); + } + if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){ + oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); + } + oldWxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); + Long[] departIds = new Long[1]; + departIds[0] = mgtWxCPStaffDto.getWxDeptId(); + oldWxCpUser.setDepartIds(departIds); + if(mgtWxCPStaffDto.getHeadFlag()!=null){ + Integer[] isLeaderInDept = new Integer[1]; + isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag()); + oldWxCpUser.setIsLeaderInDept(isLeaderInDept); + } + try { + adWxCpService.getUserService().update(oldWxCpUser); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + }else{ + WxCpUser wxCpUser = new WxCpUser(); + //wxUserId被占用重新生成 + if(sameUserId){ + wxUserId = wxUserId + "1"; + } + wxCpUser.setUserId(wxUserId); + wxCpUser.setName(mgtWxCPStaffDto.getStaffName()); + wxCpUser.setMobile(mgtWxCPStaffDto.getStaffMobile()); + if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffEmail())){ + wxCpUser.setEmail(mgtWxCPStaffDto.getStaffEmail()); + } + if(StringUtils.isNotBlank(mgtWxCPStaffDto.getStaffPost())){ + wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); + } + wxCpUser.setPosition(mgtWxCPStaffDto.getStaffPost()); + Long[] departIds = new Long[1]; + departIds[0] = mgtWxCPStaffDto.getWxDeptId(); + wxCpUser.setDepartIds(departIds); + if(mgtWxCPStaffDto.getHeadFlag()!=null){ + Integer[] isLeaderInDept = new Integer[1]; + isLeaderInDept[0] = Integer.valueOf(mgtWxCPStaffDto.getHeadFlag()); + wxCpUser.setIsLeaderInDept(isLeaderInDept); + } + try { + adWxCpService.getUserService().create(wxCpUser); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + } + return wxUserId; + } + + /** + * @description 删除企业微信员工 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxUserId + * @return void + */ + @Override + public void deleteWxCpStaff(String wxUserId){ + try { + adWxCpService.getUserService().delete(wxUserId); } catch (WxErrorException e) { throw new RuntimeException(e); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java index b7b4b70..a0ec401 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java @@ -15,10 +15,12 @@ import com.ruoyi.system.mapper.sys.SysDeptMapper; import com.ruoyi.system.mapper.sys.SysDeptMenuMapper; import com.ruoyi.system.mapper.sys.SysRoleMapper; +import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -40,6 +42,9 @@ @Autowired private SysDeptMenuMapper deptMenuMapper; + + @Resource + private SysWxCpService sysWxCpService; /** * 查询部门管理数据 @@ -338,6 +343,10 @@ @Override public int deleteDeptById(Long deptId) { + SysDept sysDept = this.selectDeptById(deptId); + if(sysDept.getWxDeptId()!=null){ + sysWxCpService.deleteWxCpDept(sysDept.getWxDeptId()); + } return deptMapper.deleteDeptById(deptId); } 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 cc69edf..080e37a 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 @@ -1,5 +1,7 @@ package com.ruoyi.system.service.staff; +import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; + /** * @ClassName WxCpService * @Description TODO @@ -35,8 +37,51 @@ */ void sendTaskMessage(); + /** + * @description 更新企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxDeptId + * @param deptName + * @return void + */ + void updateWxCpDept(Long wxDeptId,String deptName); - void updateDept(); + /** + * @description 创建企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param parentId + * @param deptName + * @return void + */ + Long addWxCpDept(Long parentId,String deptName); - void sendMessage(); + /** + * @description 删除企业微信部门 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxDeptId + * @return void + */ + void deleteWxCpDept(Long wxDeptId); + + + /** + * @description 创建企业微信员工 + * @author jqs + * @date 2023/9/4 15:19 + * @param mgtWxCPStaffDto + * @return void + */ + String addWxCpStaff(MgtWxCPStaffDto mgtWxCPStaffDto); + + /** + * @description 删除企业微信员工 + * @author jqs + * @date 2023/9/4 15:19 + * @param wxUserId + * @return void + */ + void deleteWxCpStaff(String wxUserId); } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 5f68674..0408244 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -48,7 +48,7 @@ agentId: 1000024 agentSecret: -wuQ2EBxNT9BJa40LdpFqyxI_8RqrZTCUNiabzBasi8 authorizeState: HONGRUITANG - suiteSecret: HoHhls3QUFESA2wDypkaWvldYYHBciwZJ2zEpPVrjNx + addressSecret: D5rirpvzRnygC0RncaUdooxAwvXTA7In9dqvPHvnV4w token: HaiHeng2023 encodingAESKey: jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C 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 e9b8001..903c071 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,8 @@ import com.ruoyi.system.service.staff.SysWxCpService; -import me.chanjar.weixin.cp.api.WxCpService; +import me.chanjar.weixin.common.error.WxErrorException; +import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -23,11 +24,9 @@ @Resource private SysWxCpService sysWxCpService; - @Resource - private WxCpService wxCpService; - - /*@Test + @Test public void main() throws WxErrorException { - - }*/ + sysWxCpService.sendMessage(); + sysWxCpService.updateDept(); + } } -- Gitblit v1.7.1