From 2ed61ba13cc22a33406d0eda9239c71e9e22ba37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 11:24:34 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/AppLoginController.java | 10 ++++++++ .../com/sqx/modules/app/dto/BindWxDTO.java | 14 +++++++++++ .../sqx/modules/app/service/UserService.java | 2 ++ .../app/service/impl/UserServiceImpl.java | 25 +++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 src/main/java/com/sqx/modules/app/dto/BindWxDTO.java diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index a581bf0c..4e3ed94a 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sqx.common.annotation.Debounce; import com.sqx.common.utils.Result; +import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.app.dto.BindWxDTO; import com.sqx.modules.app.dto.LoginDTO; import com.sqx.modules.app.dto.RegisterDTO; import com.sqx.modules.app.dto.UserInviteDTO; @@ -168,6 +170,14 @@ public class AppLoginController { return userService.register(registerDTO); } + @Login + @PostMapping("/bindWx") + @ResponseBody + @Debounce(interval = 2500, value = "#code") + public Result bindWx(@RequestBody BindWxDTO bindWxDTO, @RequestHeader Long userId) { + return userService.bindWx(bindWxDTO, userId); + } + @PostMapping("/bindWxOpenPhone") @ApiOperation("微信公众号绑定手机号") public Result bindWxOpenPhone(Long userId,String phone,String msg){ diff --git a/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java b/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java new file mode 100644 index 00000000..af0a5eb9 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java @@ -0,0 +1,14 @@ +package com.sqx.modules.app.dto; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * @author Administrator + */ +@Data +public class BindWxDTO { + @NotEmpty(message = "code不能为空") + private String code; +} diff --git a/src/main/java/com/sqx/modules/app/service/UserService.java b/src/main/java/com/sqx/modules/app/service/UserService.java index 4fedeb33..e4d25b01 100644 --- a/src/main/java/com/sqx/modules/app/service/UserService.java +++ b/src/main/java/com/sqx/modules/app/service/UserService.java @@ -238,4 +238,6 @@ public interface UserService extends IService { Result removeUserBlack(Long userId, Integer status); Map queryPayAndExtractInfo(); + + Result bindWx(BindWxDTO bindWxDTO, Long userId); } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index 5260427b..dd1b5191 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -80,6 +80,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import weixin.popular.api.SnsAPI; +import weixin.popular.bean.sns.SnsToken; import weixin.popular.util.JsonUtil; import javax.servlet.http.HttpServletRequest; @@ -1824,4 +1825,28 @@ public class UserServiceImpl extends ServiceImpl implements return result; } + + @Override + public Result bindWx(BindWxDTO bindWxDTO, Long userId) { + //微信appid + CommonInfo one = commonInfoService.findOne(5); + //微信秘钥 + CommonInfo two = commonInfoService.findOne(21); + SnsToken snsToken = SnsAPI.oauth2AccessToken(one.getValue(), two.getValue(), bindWxDTO.getCode()); + String openid = snsToken.getOpenid(); + int count = count(new LambdaQueryWrapper().eq(UserEntity::getWxOpenId, openid)); + if (count > 0) { + return Result.error("该微信已被其他用户绑定"); + } + + UserEntity userEntity = getOne(new LambdaQueryWrapper().eq(UserEntity::getUserId, userId)); + if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { + return Result.error("当前用户已绑定微信"); + } + + userEntity.setWxOpenId(openid); + userEntity.setUpdateTime(DateUtil.now()); + update(userEntity, new LambdaQueryWrapper().eq(UserEntity::getUserId, userId)); + return Result.success(); + } } From cdc2a65330d79cfdbf0262e8a5d753963e80059e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 11:42:53 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sqx/modules/app/service/impl/UserServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index dd1b5191..e5e59f6b 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -1829,10 +1829,13 @@ public class UserServiceImpl extends ServiceImpl implements @Override public Result bindWx(BindWxDTO bindWxDTO, Long userId) { //微信appid - CommonInfo one = commonInfoService.findOne(5); + CommonInfo one = commonInfoService.findOne(937); //微信秘钥 - CommonInfo two = commonInfoService.findOne(21); + CommonInfo two = commonInfoService.findOne(936); SnsToken snsToken = SnsAPI.oauth2AccessToken(one.getValue(), two.getValue(), bindWxDTO.getCode()); + if (!snsToken.isSuccess()) { + return Result.error("获取失败"); + } String openid = snsToken.getOpenid(); int count = count(new LambdaQueryWrapper().eq(UserEntity::getWxOpenId, openid)); if (count > 0) { From 782eb71fa16c35e692f4cfb51afc762ebad3b432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 11:45:33 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sqx/modules/app/controller/app/AppLoginController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index 4e3ed94a..6ccfa249 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -174,7 +174,7 @@ public class AppLoginController { @PostMapping("/bindWx") @ResponseBody @Debounce(interval = 2500, value = "#code") - public Result bindWx(@RequestBody BindWxDTO bindWxDTO, @RequestHeader Long userId) { + public Result bindWx(@RequestBody BindWxDTO bindWxDTO, @RequestAttribute("userId") Long userId) { return userService.bindWx(bindWxDTO, userId); } From 6979421db70fb82198af295e8f298bbc064210f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 13:32:57 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/AppOrdersController.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index e2d45358..f76dc426 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -1,8 +1,15 @@ package com.sqx.modules.orders.controller.app; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.sqx.common.annotation.Debounce; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.service.UserService; +import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.sys.controller.AbstractController; import io.swagger.annotations.Api; @@ -26,6 +33,22 @@ public class AppOrdersController extends AbstractController { @Autowired private OrdersService ordersService; + @Autowired + private CommonInfoService commonInfoService; + @Autowired + private UserService userService; + + private void checkWxBind(Long userId) { + CommonInfo commonInfo = commonInfoService.findOne(938); + if (commonInfo == null || !"1".equals(commonInfo.getValue())) { + return; + } + UserEntity userEntity = userService.getOne(new LambdaQueryWrapper().eq(UserEntity::getUserId, userId).select(UserEntity::getWxOpenId)); + if (StrUtil.isBlank(userEntity.getWxOpenId())) { + throw new RuntimeException("请先绑定微信"); + } + } + /** * 生成商品订单 @@ -39,6 +62,7 @@ public class AppOrdersController extends AbstractController { @ApiOperation("生成商品订单") @Debounce(interval = 20000, value = "#userId") public Result insertCourseOrders(Long courseId,Long courseDetailsId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertCourseOrders(courseId, courseDetailsId,userId); } @@ -53,6 +77,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertCourseOrders/limit10") @ApiOperation("生成商品订单") public Result insertCourseOrdersLimit10(Long courseId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertCourseOrdersLimit10(courseId, userId); } @@ -60,6 +85,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertVipOrders") @ApiOperation("生成会员订单") public Result insertVipOrders(@ApiParam("会员详情信息") Long vipDetailsId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertVipOrders(vipDetailsId, userId); } From 853b918d54f0cb29ec26813a62d98b6c7be979e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 13:35:22 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqx/modules/orders/controller/app/AppOrdersController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index f76dc426..00cbc309 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.sqx.common.annotation.Debounce; +import com.sqx.common.exception.SqxException; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.entity.UserEntity; @@ -45,7 +46,7 @@ public class AppOrdersController extends AbstractController { } UserEntity userEntity = userService.getOne(new LambdaQueryWrapper().eq(UserEntity::getUserId, userId).select(UserEntity::getWxOpenId)); if (StrUtil.isBlank(userEntity.getWxOpenId())) { - throw new RuntimeException("请先绑定微信"); + throw new SqxException("请先绑定微信"); } } From 8f4f69781f38f94f2613736fffdb39a5a37fbe12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 13:44:07 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sqx/modules/app/service/impl/UserServiceImpl.java | 2 +- .../sqx/modules/orders/controller/app/AppOrdersController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index e5e59f6b..a5130233 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -1842,7 +1842,7 @@ public class UserServiceImpl extends ServiceImpl implements return Result.error("该微信已被其他用户绑定"); } - UserEntity userEntity = getOne(new LambdaQueryWrapper().eq(UserEntity::getUserId, userId)); + UserEntity userEntity = queryByUserId(userId); if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { return Result.error("当前用户已绑定微信"); } diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index 00cbc309..ca14ccaf 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -44,7 +44,7 @@ public class AppOrdersController extends AbstractController { if (commonInfo == null || !"1".equals(commonInfo.getValue())) { return; } - UserEntity userEntity = userService.getOne(new LambdaQueryWrapper().eq(UserEntity::getUserId, userId).select(UserEntity::getWxOpenId)); + UserEntity userEntity = userService.queryByUserId(userId); if (StrUtil.isBlank(userEntity.getWxOpenId())) { throw new SqxException("请先绑定微信"); } From 63a54df37d1860886b4e6f35b1cffd5dd6920df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 11:24:34 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 微信绑定实现 --- .../controller/app/AppLoginController.java | 10 +++++++ .../com/sqx/modules/app/dto/BindWxDTO.java | 14 ++++++++++ .../sqx/modules/app/service/UserService.java | 2 ++ .../app/service/impl/UserServiceImpl.java | 28 +++++++++++++++++++ .../controller/app/AppOrdersController.java | 27 ++++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 src/main/java/com/sqx/modules/app/dto/BindWxDTO.java diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index a581bf0c..6ccfa249 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sqx.common.annotation.Debounce; import com.sqx.common.utils.Result; +import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.app.dto.BindWxDTO; import com.sqx.modules.app.dto.LoginDTO; import com.sqx.modules.app.dto.RegisterDTO; import com.sqx.modules.app.dto.UserInviteDTO; @@ -168,6 +170,14 @@ public class AppLoginController { return userService.register(registerDTO); } + @Login + @PostMapping("/bindWx") + @ResponseBody + @Debounce(interval = 2500, value = "#code") + public Result bindWx(@RequestBody BindWxDTO bindWxDTO, @RequestAttribute("userId") Long userId) { + return userService.bindWx(bindWxDTO, userId); + } + @PostMapping("/bindWxOpenPhone") @ApiOperation("微信公众号绑定手机号") public Result bindWxOpenPhone(Long userId,String phone,String msg){ diff --git a/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java b/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java new file mode 100644 index 00000000..af0a5eb9 --- /dev/null +++ b/src/main/java/com/sqx/modules/app/dto/BindWxDTO.java @@ -0,0 +1,14 @@ +package com.sqx.modules.app.dto; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * @author Administrator + */ +@Data +public class BindWxDTO { + @NotEmpty(message = "code不能为空") + private String code; +} diff --git a/src/main/java/com/sqx/modules/app/service/UserService.java b/src/main/java/com/sqx/modules/app/service/UserService.java index 4fedeb33..e4d25b01 100644 --- a/src/main/java/com/sqx/modules/app/service/UserService.java +++ b/src/main/java/com/sqx/modules/app/service/UserService.java @@ -238,4 +238,6 @@ public interface UserService extends IService { Result removeUserBlack(Long userId, Integer status); Map queryPayAndExtractInfo(); + + Result bindWx(BindWxDTO bindWxDTO, Long userId); } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java index 5260427b..a5130233 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java @@ -80,6 +80,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import weixin.popular.api.SnsAPI; +import weixin.popular.bean.sns.SnsToken; import weixin.popular.util.JsonUtil; import javax.servlet.http.HttpServletRequest; @@ -1824,4 +1825,31 @@ public class UserServiceImpl extends ServiceImpl implements return result; } + + @Override + public Result bindWx(BindWxDTO bindWxDTO, Long userId) { + //微信appid + CommonInfo one = commonInfoService.findOne(937); + //微信秘钥 + CommonInfo two = commonInfoService.findOne(936); + SnsToken snsToken = SnsAPI.oauth2AccessToken(one.getValue(), two.getValue(), bindWxDTO.getCode()); + if (!snsToken.isSuccess()) { + return Result.error("获取失败"); + } + String openid = snsToken.getOpenid(); + int count = count(new LambdaQueryWrapper().eq(UserEntity::getWxOpenId, openid)); + if (count > 0) { + return Result.error("该微信已被其他用户绑定"); + } + + UserEntity userEntity = queryByUserId(userId); + if (StringUtils.isNotBlank(userEntity.getWxOpenId())) { + return Result.error("当前用户已绑定微信"); + } + + userEntity.setWxOpenId(openid); + userEntity.setUpdateTime(DateUtil.now()); + update(userEntity, new LambdaQueryWrapper().eq(UserEntity::getUserId, userId)); + return Result.success(); + } } diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index e2d45358..ca14ccaf 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -1,8 +1,16 @@ package com.sqx.modules.orders.controller.app; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.sqx.common.annotation.Debounce; +import com.sqx.common.exception.SqxException; import com.sqx.common.utils.Result; import com.sqx.modules.app.annotation.Login; +import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.service.UserService; +import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.orders.service.OrdersService; import com.sqx.modules.sys.controller.AbstractController; import io.swagger.annotations.Api; @@ -26,6 +34,22 @@ public class AppOrdersController extends AbstractController { @Autowired private OrdersService ordersService; + @Autowired + private CommonInfoService commonInfoService; + @Autowired + private UserService userService; + + private void checkWxBind(Long userId) { + CommonInfo commonInfo = commonInfoService.findOne(938); + if (commonInfo == null || !"1".equals(commonInfo.getValue())) { + return; + } + UserEntity userEntity = userService.queryByUserId(userId); + if (StrUtil.isBlank(userEntity.getWxOpenId())) { + throw new SqxException("请先绑定微信"); + } + } + /** * 生成商品订单 @@ -39,6 +63,7 @@ public class AppOrdersController extends AbstractController { @ApiOperation("生成商品订单") @Debounce(interval = 20000, value = "#userId") public Result insertCourseOrders(Long courseId,Long courseDetailsId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertCourseOrders(courseId, courseDetailsId,userId); } @@ -53,6 +78,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertCourseOrders/limit10") @ApiOperation("生成商品订单") public Result insertCourseOrdersLimit10(Long courseId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertCourseOrdersLimit10(courseId, userId); } @@ -60,6 +86,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertVipOrders") @ApiOperation("生成会员订单") public Result insertVipOrders(@ApiParam("会员详情信息") Long vipDetailsId, @RequestAttribute("userId") Long userId) { + checkWxBind(userId); return ordersService.insertVipOrders(vipDetailsId, userId); } From dad1d0beb3b2f7657b20b7cbc19785bb3f585a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 14:58:10 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controller/app/AppLoginController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index 6ccfa249..cead5243 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -1,6 +1,7 @@ package com.sqx.modules.app.controller.app; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sqx.common.annotation.Debounce; @@ -29,6 +30,8 @@ import org.springframework.web.bind.annotation.*; import weixin.popular.api.SnsAPI; import weixin.popular.bean.sns.SnsToken; +import java.util.HashMap; + /** * APP登录授权 * @@ -178,6 +181,16 @@ public class AppLoginController { return userService.bindWx(bindWxDTO, userId); } + @Login + @GetMapping("/bindStatus") + @ResponseBody + public Result bindWx(@RequestAttribute("userId") Long userId) { + UserEntity userEntity = userService.queryByUserId(userId); + return Result.success(new HashMap(){{ + put("wxBind", StrUtil.isNotBlank(userEntity.getWxOpenId())); + }}); + } + @PostMapping("/bindWxOpenPhone") @ApiOperation("微信公众号绑定手机号") public Result bindWxOpenPhone(Long userId,String phone,String msg){ From bf417a6ba860386048b206c400fb6ee657b1ea1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 15:02:24 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqx/modules/app/controller/app/AppLoginController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java index cead5243..8d3d057a 100644 --- a/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java +++ b/src/main/java/com/sqx/modules/app/controller/app/AppLoginController.java @@ -187,7 +187,9 @@ public class AppLoginController { public Result bindWx(@RequestAttribute("userId") Long userId) { UserEntity userEntity = userService.queryByUserId(userId); return Result.success(new HashMap(){{ - put("wxBind", StrUtil.isNotBlank(userEntity.getWxOpenId())); + put("data", new HashMap(){{ + put("wxBind", StrUtil.isNotBlank(userEntity.getWxOpenId())); + }}); }}); } From c660e1714cbb06d5252e8b21c3cca847770b885d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 15:14:52 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqx/modules/orders/controller/app/AppOrdersController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index ca14ccaf..540ce2f9 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -46,7 +46,7 @@ public class AppOrdersController extends AbstractController { } UserEntity userEntity = userService.queryByUserId(userId); if (StrUtil.isBlank(userEntity.getWxOpenId())) { - throw new SqxException("请先绑定微信"); + throw new SqxException("请先绑定微信", 407); } } From 02969a2c75e70f1cb076489cf6098a55dc4bc950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 16:47:42 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/AppOrdersController.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index 540ce2f9..15db5d7b 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -39,15 +39,16 @@ public class AppOrdersController extends AbstractController { @Autowired private UserService userService; - private void checkWxBind(Long userId) { + private boolean checkWxBind(Long userId) { CommonInfo commonInfo = commonInfoService.findOne(938); if (commonInfo == null || !"1".equals(commonInfo.getValue())) { - return; + return true; } UserEntity userEntity = userService.queryByUserId(userId); if (StrUtil.isBlank(userEntity.getWxOpenId())) { - throw new SqxException("请先绑定微信", 407); + return false; } + return true; } @@ -63,7 +64,9 @@ public class AppOrdersController extends AbstractController { @ApiOperation("生成商品订单") @Debounce(interval = 20000, value = "#userId") public Result insertCourseOrders(Long courseId,Long courseDetailsId, @RequestAttribute("userId") Long userId) { - checkWxBind(userId); + if (!checkWxBind(userId)) { + return Result.error(407, "请先绑定微信"); + } return ordersService.insertCourseOrders(courseId, courseDetailsId,userId); } @@ -78,7 +81,9 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertCourseOrders/limit10") @ApiOperation("生成商品订单") public Result insertCourseOrdersLimit10(Long courseId, @RequestAttribute("userId") Long userId) { - checkWxBind(userId); + if (!checkWxBind(userId)) { + return Result.error(407, "请先绑定微信"); + } return ordersService.insertCourseOrdersLimit10(courseId, userId); } @@ -86,7 +91,9 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertVipOrders") @ApiOperation("生成会员订单") public Result insertVipOrders(@ApiParam("会员详情信息") Long vipDetailsId, @RequestAttribute("userId") Long userId) { - checkWxBind(userId); + if (!checkWxBind(userId)) { + return Result.error(407, "请先绑定微信"); + } return ordersService.insertVipOrders(vipDetailsId, userId); } From d6dcb8eeee0ddcab13b6e558920ad0a7da7b3efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 17:00:23 +0800 Subject: [PATCH 12/23] =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sqx/common/aspect/DebounceAspect.java | 16 +++++++++++++--- .../controller/app/AppOrdersController.java | 19 ++++++------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/sqx/common/aspect/DebounceAspect.java b/src/main/java/com/sqx/common/aspect/DebounceAspect.java index 992f3471..c69cf417 100644 --- a/src/main/java/com/sqx/common/aspect/DebounceAspect.java +++ b/src/main/java/com/sqx/common/aspect/DebounceAspect.java @@ -1,6 +1,7 @@ package com.sqx.common.aspect; import com.sqx.common.annotation.Debounce; +import com.sqx.common.exception.SqxException; import com.sqx.common.utils.Result; import com.sqx.common.utils.SpelUtil; import org.apache.commons.lang3.StringUtils; @@ -26,8 +27,8 @@ import java.util.concurrent.locks.ReentrantLock; public class DebounceAspect { @Pointcut("@annotation(com.sqx.common.annotation.Debounce)") - public void logPointCut() { - + public void logPointCut() { + } // 用于存储基于方法和入参情况的上次执行时间,结构为:方法签名 -> (入参值 -> 上次执行时间) @@ -87,7 +88,16 @@ public class DebounceAspect { if (lastTime == null || currentTime - timeUnit.toMillis(interval) >= lastTime) { // 满足防抖间隔,更新上次执行时间,并执行目标方法 methodExecutionTimeMap.put(targetValue, currentTime); - return joinPoint.proceed(); + try { + return joinPoint.proceed(); + }catch (Exception e) { + if (e instanceof SqxException && ((SqxException) e).getCode() == 403) { + methodExecutionTimeMap.remove(targetValue); + } + throw e; + } + + } // 在防抖间隔内,不执行目标方法,直接返回 return Result.error("请求频繁,请重试"); diff --git a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java index 15db5d7b..540ce2f9 100644 --- a/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java +++ b/src/main/java/com/sqx/modules/orders/controller/app/AppOrdersController.java @@ -39,16 +39,15 @@ public class AppOrdersController extends AbstractController { @Autowired private UserService userService; - private boolean checkWxBind(Long userId) { + private void checkWxBind(Long userId) { CommonInfo commonInfo = commonInfoService.findOne(938); if (commonInfo == null || !"1".equals(commonInfo.getValue())) { - return true; + return; } UserEntity userEntity = userService.queryByUserId(userId); if (StrUtil.isBlank(userEntity.getWxOpenId())) { - return false; + throw new SqxException("请先绑定微信", 407); } - return true; } @@ -64,9 +63,7 @@ public class AppOrdersController extends AbstractController { @ApiOperation("生成商品订单") @Debounce(interval = 20000, value = "#userId") public Result insertCourseOrders(Long courseId,Long courseDetailsId, @RequestAttribute("userId") Long userId) { - if (!checkWxBind(userId)) { - return Result.error(407, "请先绑定微信"); - } + checkWxBind(userId); return ordersService.insertCourseOrders(courseId, courseDetailsId,userId); } @@ -81,9 +78,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertCourseOrders/limit10") @ApiOperation("生成商品订单") public Result insertCourseOrdersLimit10(Long courseId, @RequestAttribute("userId") Long userId) { - if (!checkWxBind(userId)) { - return Result.error(407, "请先绑定微信"); - } + checkWxBind(userId); return ordersService.insertCourseOrdersLimit10(courseId, userId); } @@ -91,9 +86,7 @@ public class AppOrdersController extends AbstractController { @GetMapping("/insertVipOrders") @ApiOperation("生成会员订单") public Result insertVipOrders(@ApiParam("会员详情信息") Long vipDetailsId, @RequestAttribute("userId") Long userId) { - if (!checkWxBind(userId)) { - return Result.error(407, "请先绑定微信"); - } + checkWxBind(userId); return ordersService.insertVipOrders(vipDetailsId, userId); } From d3ae230c83bde5609bde305487da9815eee3901d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 27 Mar 2025 17:00:35 +0800 Subject: [PATCH 13/23] =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/sqx/common/aspect/DebounceAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sqx/common/aspect/DebounceAspect.java b/src/main/java/com/sqx/common/aspect/DebounceAspect.java index c69cf417..b88c8c42 100644 --- a/src/main/java/com/sqx/common/aspect/DebounceAspect.java +++ b/src/main/java/com/sqx/common/aspect/DebounceAspect.java @@ -91,7 +91,7 @@ public class DebounceAspect { try { return joinPoint.proceed(); }catch (Exception e) { - if (e instanceof SqxException && ((SqxException) e).getCode() == 403) { + if (e instanceof SqxException && ((SqxException) e).getCode() == 407) { methodExecutionTimeMap.remove(targetValue); } throw e; From d14d80db853f97449492aae8a3d2fa892bd2c1ae Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Fri, 28 Mar 2025 17:57:06 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E9=82=80=E8=AF=B7=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/controller/ExtSysController.java | 45 +++++++++++++ .../ext/param/InviteFriendConfigParam.java | 22 +++++++ .../modules/ext/service/ExtSysService.java | 15 +++++ .../ext/service/impl/ExtSysServiceImpl.java | 66 +++++++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 src/main/java/com/sqx/modules/ext/controller/ExtSysController.java create mode 100644 src/main/java/com/sqx/modules/ext/param/InviteFriendConfigParam.java create mode 100644 src/main/java/com/sqx/modules/ext/service/ExtSysService.java create mode 100644 src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java diff --git a/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java new file mode 100644 index 00000000..1deaf3bd --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java @@ -0,0 +1,45 @@ +package com.sqx.modules.ext.controller; + +import cn.hutool.core.exceptions.ValidateException; +import com.sqx.common.utils.Result; +import com.sqx.modules.coupon.entity.Coupon; +import com.sqx.modules.ext.param.InviteFriendConfigParam; +import com.sqx.modules.ext.service.ExtSysService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.ws.rs.GET; + +/** + * 扩展功能控制层 + * @author tankaikai + * @since 2025-03-28 09:32 + */ +@RestController +@Api(value = "扩展功能", tags = {"扩展功能"}) +@RequestMapping(value = {"/ext/sys","/app/ext/sys"}) +public class ExtSysController { + + @Autowired + private ExtSysService extSysService; + + @PostMapping("/invite/friend/config/save") + @ApiOperation("保存邀请好友配置信息") + public Result saveInviteFriendConfig(@RequestBody InviteFriendConfigParam param){ + try { + extSysService.saveInviteFriendConfig(param); + }catch (ValidateException e){ + return Result.error(e.getMessage()); + } + return Result.success(); + } + + @GetMapping("/invite/friend/config/get") + @ApiOperation("获取邀请好友配置信息") + public Result getInviteFriendConfig(){ + InviteFriendConfigParam data = extSysService.getInviteFriendConfig(); + return Result.success().put("data", data); + } +} diff --git a/src/main/java/com/sqx/modules/ext/param/InviteFriendConfigParam.java b/src/main/java/com/sqx/modules/ext/param/InviteFriendConfigParam.java new file mode 100644 index 00000000..ce54d68f --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/param/InviteFriendConfigParam.java @@ -0,0 +1,22 @@ +package com.sqx.modules.ext.param; + +import lombok.Data; + +/** + * 邀请好友配置入参 + * @author tankaikai + * @since 2025-03-28 09:32 + */ +@Data +public class InviteFriendConfigParam { + + /** + * 邀请好友海报图片地址 + */ + private String imageUrl; + + /** + * 邀请文案 + */ + private String tips; +} diff --git a/src/main/java/com/sqx/modules/ext/service/ExtSysService.java b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java new file mode 100644 index 00000000..060f9566 --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java @@ -0,0 +1,15 @@ +package com.sqx.modules.ext.service; + +import com.sqx.modules.ext.param.InviteFriendConfigParam; + +/** + * 扩展系统服务接口 + * @author tankaikai + * @since 2025-03-28 09:32 + */ +public interface ExtSysService { + + void saveInviteFriendConfig(InviteFriendConfigParam param); + + InviteFriendConfigParam getInviteFriendConfig(); +} diff --git a/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java new file mode 100644 index 00000000..d3efcb72 --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java @@ -0,0 +1,66 @@ +package com.sqx.modules.ext.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.exceptions.ValidateException; +import cn.hutool.core.util.StrUtil; +import com.sqx.modules.common.dao.CommonInfoDao; +import com.sqx.modules.common.entity.CommonInfo; +import com.sqx.modules.common.service.CommonInfoService; +import com.sqx.modules.ext.param.InviteFriendConfigParam; +import com.sqx.modules.ext.service.ExtSysService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 扩展功能服务实现类 + * + * @author tankaikai + * @since 2025-03-28 09:32 + */ +@Service +public class ExtSysServiceImpl implements ExtSysService { + @Autowired + private CommonInfoDao commonInfoDao; + + @Override + public void saveInviteFriendConfig(InviteFriendConfigParam param) { + if (StrUtil.isBlank(param.getImageUrl())) { + throw new ValidateException("顶部图片地址不能为空"); + } + if (StrUtil.isBlank(param.getTips())) { + throw new ValidateException("邀请文案不能为空"); + } + if (param.getTips().length() > 20) { + throw new ValidateException("邀请文案不能大于20个字符"); + } + CommonInfo commonInfo = commonInfoDao.selectById(999L); + if (commonInfo == null) { + commonInfo = new CommonInfo(); + commonInfo.setId(999L); + commonInfo.setCreateAt(DateUtil.now()); + commonInfo.setMax(param.getTips()); + commonInfo.setMin("邀请好友配置"); + commonInfo.setValue(param.getImageUrl()); + commonInfo.setType(Convert.toInt(commonInfo.getId())); + commonInfo.setIsAppUse(1); + commonInfoDao.insert(commonInfo); + return; + } + commonInfo.setMax(param.getTips()); + commonInfo.setValue(param.getImageUrl()); + commonInfoDao.updateById(commonInfo); + } + + @Override + public InviteFriendConfigParam getInviteFriendConfig() { + CommonInfo commonInfo = commonInfoDao.selectById(999L); + if (commonInfo == null) { + return null; + } + InviteFriendConfigParam data = new InviteFriendConfigParam(); + data.setTips(commonInfo.getMax()); + data.setImageUrl(commonInfo.getValue()); + return data; + } +} From 03cff5e66fc6058d44ca82242001d0f386de3222 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Mon, 31 Mar 2025 15:14:47 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E7=9F=AD=E5=89=A7=E6=96=B0=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/controller/AppExtSysController.java | 31 ++++++++ .../ext/controller/ExtSysController.java | 39 ++++++++-- .../com/sqx/modules/ext/dao/ExtSysDao.java | 23 ++++++ .../sqx/modules/ext/dto/InviteAwardDTO.java | 41 +++++++++++ .../sqx/modules/ext/dto/InviteFriendDTO.java | 50 +++++++++++++ .../com/sqx/modules/ext/dto/SignInNumDTO.java | 73 +++++++++++++++++++ .../modules/ext/service/ExtSysService.java | 7 ++ .../ext/service/impl/ExtSysServiceImpl.java | 39 ++++++++++ src/main/resources/mapper/ext/ExtSysDao.xml | 64 ++++++++++++++++ 9 files changed, 362 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/sqx/modules/ext/controller/AppExtSysController.java create mode 100644 src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java create mode 100644 src/main/java/com/sqx/modules/ext/dto/InviteAwardDTO.java create mode 100644 src/main/java/com/sqx/modules/ext/dto/InviteFriendDTO.java create mode 100644 src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java create mode 100644 src/main/resources/mapper/ext/ExtSysDao.xml diff --git a/src/main/java/com/sqx/modules/ext/controller/AppExtSysController.java b/src/main/java/com/sqx/modules/ext/controller/AppExtSysController.java new file mode 100644 index 00000000..a7371e9d --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/controller/AppExtSysController.java @@ -0,0 +1,31 @@ +package com.sqx.modules.ext.controller; + +import cn.hutool.core.exceptions.ValidateException; +import com.sqx.common.utils.Result; +import com.sqx.modules.ext.param.InviteFriendConfigParam; +import com.sqx.modules.ext.service.ExtSysService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 扩展功能控制层 + * @author tankaikai + * @since 2025-03-28 09:32 + */ +@RestController +@Api(value = "APP扩展功能", tags = {"APP扩展功能"}) +@RequestMapping("/app/ext/sys") +public class AppExtSysController { + + @Autowired + private ExtSysService extSysService; + + @GetMapping("/invite/friend/config/get") + @ApiOperation("获取邀请好友配置信息") + public Result getInviteFriendConfig(){ + InviteFriendConfigParam data = extSysService.getInviteFriendConfig(); + return Result.success().put("data", data); + } +} diff --git a/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java index 1deaf3bd..8aa33b54 100644 --- a/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java +++ b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java @@ -1,7 +1,13 @@ package com.sqx.modules.ext.controller; +import cn.hutool.core.convert.Convert; import cn.hutool.core.exceptions.ValidateException; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; +import com.sqx.modules.app.entity.App; +import com.sqx.modules.app.entity.VipDetails; import com.sqx.modules.coupon.entity.Coupon; import com.sqx.modules.ext.param.InviteFriendConfigParam; import com.sqx.modules.ext.service.ExtSysService; @@ -11,15 +17,17 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.ws.rs.GET; +import java.util.List; /** * 扩展功能控制层 + * * @author tankaikai * @since 2025-03-28 09:32 */ @RestController -@Api(value = "扩展功能", tags = {"扩展功能"}) -@RequestMapping(value = {"/ext/sys","/app/ext/sys"}) +@Api(value = "ADMIN扩展功能", tags = {"ADMIN扩展功能"}) +@RequestMapping("/ext/sys") public class ExtSysController { @Autowired @@ -27,10 +35,10 @@ public class ExtSysController { @PostMapping("/invite/friend/config/save") @ApiOperation("保存邀请好友配置信息") - public Result saveInviteFriendConfig(@RequestBody InviteFriendConfigParam param){ + public Result saveInviteFriendConfig(@RequestBody InviteFriendConfigParam param) { try { extSysService.saveInviteFriendConfig(param); - }catch (ValidateException e){ + } catch (ValidateException e) { return Result.error(e.getMessage()); } return Result.success(); @@ -38,8 +46,29 @@ public class ExtSysController { @GetMapping("/invite/friend/config/get") @ApiOperation("获取邀请好友配置信息") - public Result getInviteFriendConfig(){ + public Result getInviteFriendConfig() { InviteFriendConfigParam data = extSysService.getInviteFriendConfig(); return Result.success().put("data", data); } + + @GetMapping("/invite/friend/award/page") + @ApiOperation("邀请好友奖励分页") + public Result getInviteFriendAwardPage(Integer page, Integer limit, String keywords) { + PageUtils data = extSysService.queryInviteFriendRecord(page, limit, keywords); + return Result.success().put("data", data); + } + + @GetMapping("/invite/friend/signIn/page") + @ApiOperation("邀请好友奖励-签到人数分页") + public Result getInviteFriendSignInPage(Integer page, Integer limit, String userId) { + PageUtils data = extSysService.queryInviteSignInRecord(page, limit, Convert.toLong(userId)); + return Result.success().put("data", data); + } + + @GetMapping("/invite/friend/award/detail/page") + @ApiOperation("邀请好友奖励详情分页") + public Result getInviteFriendAwardDetailPage(Integer page, Integer limit, String userId) { + PageUtils data = extSysService.queryInviteAwardDetailRecord(page, limit, Convert.toLong(userId)); + return Result.success().put("data", data); + } } diff --git a/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java b/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java new file mode 100644 index 00000000..11c261af --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java @@ -0,0 +1,23 @@ +package com.sqx.modules.ext.dao; + +import com.sqx.modules.ext.dto.InviteAwardDTO; +import com.sqx.modules.ext.dto.InviteFriendDTO; +import com.sqx.modules.ext.dto.SignInNumDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 扩展系统数据访问层 + * @author tankaikai + * @since 2025-03-28 10:39 + */ +@Mapper +public interface ExtSysDao { + List findInviteFriendList(@Param("keywords") String keywords); + + List findInviteSignInList(@Param("userId") Long userId); + + List findInviteAwardDetailList(@Param("userId") Long userId); +} diff --git a/src/main/java/com/sqx/modules/ext/dto/InviteAwardDTO.java b/src/main/java/com/sqx/modules/ext/dto/InviteAwardDTO.java new file mode 100644 index 00000000..cdecfa6f --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dto/InviteAwardDTO.java @@ -0,0 +1,41 @@ +package com.sqx.modules.ext.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 邀请奖励明细 + * + * @author tankaikai + * @since 2025-03-28 10:07 + */ +@Data +public class InviteAwardDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 奖励id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + /** + * 发放金额 + */ + private BigDecimal amount; + /** + * 有效邀请人 + */ + private String userPhone; + /** + * 发放时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/src/main/java/com/sqx/modules/ext/dto/InviteFriendDTO.java b/src/main/java/com/sqx/modules/ext/dto/InviteFriendDTO.java new file mode 100644 index 00000000..5b9ae6e0 --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dto/InviteFriendDTO.java @@ -0,0 +1,50 @@ +package com.sqx.modules.ext.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 邀请好友DTO + * + * @author tankaikai + * @since 2025-03-28 09:56 + */ +@Data +public class InviteFriendDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + + /** + * 用户名称 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 头像地址 + */ + private String avatar; + + /** + * 签到人数 + */ + private Integer signInNum; + /** + * 已发放奖励金额 + */ + private BigDecimal awardAmount; +} diff --git a/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java b/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java new file mode 100644 index 00000000..535c83ae --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java @@ -0,0 +1,73 @@ +package com.sqx.modules.ext.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 签到人数DTO + * + * @author tankaikai + * @since 2025-03-28 10:24 + */ +@Data +public class SignInNumDTO implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 签到账号ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + /** + * 用户名称 + */ + private String userName; + + /** + * 手机号 + */ + private String phone; + + /** + * 真实姓名 + */ + private String realName; + /** + * 身份证号 + */ + private String idCardNo; + /** + * 银行名称 + */ + private String bankName; + /** + * 银行卡号 + */ + private String bankCardNo; + /** + * 银行预留手机号 + */ + private String mobile; + /** + * 省 + */ + private String province; + /** + * 市 + */ + private String city; + /** + * 开户行 + */ + private String bankBranch; + /** + * 发放时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/src/main/java/com/sqx/modules/ext/service/ExtSysService.java b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java index 060f9566..45e118df 100644 --- a/src/main/java/com/sqx/modules/ext/service/ExtSysService.java +++ b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java @@ -1,5 +1,6 @@ package com.sqx.modules.ext.service; +import com.sqx.common.utils.PageUtils; import com.sqx.modules.ext.param.InviteFriendConfigParam; /** @@ -12,4 +13,10 @@ public interface ExtSysService { void saveInviteFriendConfig(InviteFriendConfigParam param); InviteFriendConfigParam getInviteFriendConfig(); + + PageUtils queryInviteFriendRecord(Integer page, Integer limit, String keywords); + + PageUtils queryInviteSignInRecord(Integer page, Integer limit, Long userId); + + PageUtils queryInviteAwardDetailRecord(Integer page, Integer limit, Long userId); } diff --git a/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java index d3efcb72..63ccfe21 100644 --- a/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java +++ b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java @@ -4,14 +4,27 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.exceptions.ValidateException; import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.sqx.common.utils.PageUtils; +import com.sqx.common.utils.Result; +import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.VipDetails; import com.sqx.modules.common.dao.CommonInfoDao; import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; +import com.sqx.modules.ext.dao.ExtSysDao; +import com.sqx.modules.ext.dto.InviteAwardDTO; +import com.sqx.modules.ext.dto.InviteFriendDTO; +import com.sqx.modules.ext.dto.SignInNumDTO; import com.sqx.modules.ext.param.InviteFriendConfigParam; import com.sqx.modules.ext.service.ExtSysService; +import com.sqx.modules.utils.TimeCompleteUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * 扩展功能服务实现类 * @@ -22,6 +35,8 @@ import org.springframework.stereotype.Service; public class ExtSysServiceImpl implements ExtSysService { @Autowired private CommonInfoDao commonInfoDao; + @Autowired + private ExtSysDao extSysDao; @Override public void saveInviteFriendConfig(InviteFriendConfigParam param) { @@ -63,4 +78,28 @@ public class ExtSysServiceImpl implements ExtSysService { data.setImageUrl(commonInfo.getValue()); return data; } + + @Override + public PageUtils queryInviteFriendRecord(Integer page, Integer limit, String keywords) { + PageHelper.startPage(page,limit); + List list = extSysDao.findInviteFriendList(keywords); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); + } + + @Override + public PageUtils queryInviteSignInRecord(Integer page, Integer limit, Long userId) { + PageHelper.startPage(page,limit); + List list = extSysDao.findInviteSignInList(userId); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); + } + + @Override + public PageUtils queryInviteAwardDetailRecord(Integer page, Integer limit, Long userId) { + PageHelper.startPage(page,limit); + List list = extSysDao.findInviteAwardDetailList(userId); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); + } } diff --git a/src/main/resources/mapper/ext/ExtSysDao.xml b/src/main/resources/mapper/ext/ExtSysDao.xml new file mode 100644 index 00000000..8c8b6c1f --- /dev/null +++ b/src/main/resources/mapper/ext/ExtSysDao.xml @@ -0,0 +1,64 @@ + + + + + + + + \ No newline at end of file From cf3fac6f884a439151a32f25c5796872427a4aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 1 Apr 2025 09:02:15 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E7=9F=AD=E5=89=A7=E6=96=B0=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/controller/ExtSysController.java | 14 ++ .../com/sqx/modules/ext/dao/ExtSysDao.java | 11 +- .../modules/ext/dto/LotteryCountQueryDTO.java | 57 +++++++ .../sqx/modules/ext/dto/LotteryDetailDTO.java | 39 +++++ .../com/sqx/modules/ext/dto/SignInNumDTO.java | 3 +- .../modules/ext/service/ExtSysService.java | 4 + .../ext/service/impl/ExtSysServiceImpl.java | 31 ++-- src/main/resources/application-dev.yml | 144 +++++++++--------- src/main/resources/mapper/ext/ExtSysDao.xml | 96 ++++++++---- 9 files changed, 283 insertions(+), 116 deletions(-) create mode 100644 src/main/java/com/sqx/modules/ext/dto/LotteryCountQueryDTO.java create mode 100644 src/main/java/com/sqx/modules/ext/dto/LotteryDetailDTO.java diff --git a/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java index 8aa33b54..20628501 100644 --- a/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java +++ b/src/main/java/com/sqx/modules/ext/controller/ExtSysController.java @@ -71,4 +71,18 @@ public class ExtSysController { PageUtils data = extSysService.queryInviteAwardDetailRecord(page, limit, Convert.toLong(userId)); return Result.success().put("data", data); } + + @GetMapping("/lottery/count/query/page") + @ApiOperation("抽奖次数查询-分页") + public Result getLotteryCountQueryPage(Integer page, Integer limit, String keywords) { + PageUtils data = extSysService.queryLotteryCountPage(page, limit, keywords); + return Result.success().put("data", data); + } + + @GetMapping("/lottery/detail/page") + @ApiOperation("抽奖详情查询-分页") + public Result getLotteryDetailPage(Integer page, Integer limit, String userId) { + PageUtils data = extSysService.queryLotteryDetailPage(page, limit, Convert.toLong(userId)); + return Result.success().put("data", data); + } } diff --git a/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java b/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java index 11c261af..2750ec90 100644 --- a/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java +++ b/src/main/java/com/sqx/modules/ext/dao/ExtSysDao.java @@ -1,8 +1,6 @@ package com.sqx.modules.ext.dao; -import com.sqx.modules.ext.dto.InviteAwardDTO; -import com.sqx.modules.ext.dto.InviteFriendDTO; -import com.sqx.modules.ext.dto.SignInNumDTO; +import com.sqx.modules.ext.dto.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -10,6 +8,7 @@ import java.util.List; /** * 扩展系统数据访问层 + * * @author tankaikai * @since 2025-03-28 10:39 */ @@ -20,4 +19,10 @@ public interface ExtSysDao { List findInviteSignInList(@Param("userId") Long userId); List findInviteAwardDetailList(@Param("userId") Long userId); + + List findLotteryCountList(@Param("keywords") String keywords); + + List findLotteryDetailPage(@Param("userId") Long userId); + + } diff --git a/src/main/java/com/sqx/modules/ext/dto/LotteryCountQueryDTO.java b/src/main/java/com/sqx/modules/ext/dto/LotteryCountQueryDTO.java new file mode 100644 index 00000000..706c1ae0 --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dto/LotteryCountQueryDTO.java @@ -0,0 +1,57 @@ +package com.sqx.modules.ext.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; + +/** + * 抽奖次数查询DTO + * + * @author tankaikai + * @since 2025-03-28 10:24 + */ +@Data +public class LotteryCountQueryDTO implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 账号ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + /** + * 头像地址 + */ + private String avatar; + /** + * 用户名称 + */ + private String userName; + /** + * 手机号 + */ + private String phone; + /** + * 共解锁 + */ + private Integer unlocked; + /** + * 今日解锁 + */ + private Integer todayUnlocked; + /** + * 共获得抽奖次数 + */ + private Integer totalDrawCount; + /** + * 剩余抽奖次数 + */ + private Integer residueDrawCount; + /** + * 今日抽奖次数 + */ + private Integer todayDrawCount; + +} diff --git a/src/main/java/com/sqx/modules/ext/dto/LotteryDetailDTO.java b/src/main/java/com/sqx/modules/ext/dto/LotteryDetailDTO.java new file mode 100644 index 00000000..35cc9784 --- /dev/null +++ b/src/main/java/com/sqx/modules/ext/dto/LotteryDetailDTO.java @@ -0,0 +1,39 @@ +package com.sqx.modules.ext.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 抽奖详情DTO类 + * + * @author tankaikai + * @since 2025-03-28 10:24 + */ +@Data +public class LotteryDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 抽奖id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + /** + * 用户名称 + */ + private String name; + /** + * 手机号 + */ + private String number; + /** + * 发放时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java b/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java index 535c83ae..09829155 100644 --- a/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java +++ b/src/main/java/com/sqx/modules/ext/dto/SignInNumDTO.java @@ -68,6 +68,5 @@ public class SignInNumDTO implements Serializable { /** * 发放时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; + private String createTime; } diff --git a/src/main/java/com/sqx/modules/ext/service/ExtSysService.java b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java index 45e118df..be082b1e 100644 --- a/src/main/java/com/sqx/modules/ext/service/ExtSysService.java +++ b/src/main/java/com/sqx/modules/ext/service/ExtSysService.java @@ -19,4 +19,8 @@ public interface ExtSysService { PageUtils queryInviteSignInRecord(Integer page, Integer limit, Long userId); PageUtils queryInviteAwardDetailRecord(Integer page, Integer limit, Long userId); + + PageUtils queryLotteryCountPage(Integer page, Integer limit, String keywords); + + PageUtils queryLotteryDetailPage(Integer page, Integer limit, Long userId); } diff --git a/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java index 63ccfe21..814c2f66 100644 --- a/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java +++ b/src/main/java/com/sqx/modules/ext/service/impl/ExtSysServiceImpl.java @@ -7,19 +7,12 @@ import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.Result; -import com.sqx.modules.app.entity.UserEntity; -import com.sqx.modules.app.entity.VipDetails; import com.sqx.modules.common.dao.CommonInfoDao; import com.sqx.modules.common.entity.CommonInfo; -import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.ext.dao.ExtSysDao; -import com.sqx.modules.ext.dto.InviteAwardDTO; -import com.sqx.modules.ext.dto.InviteFriendDTO; -import com.sqx.modules.ext.dto.SignInNumDTO; +import com.sqx.modules.ext.dto.*; import com.sqx.modules.ext.param.InviteFriendConfigParam; import com.sqx.modules.ext.service.ExtSysService; -import com.sqx.modules.utils.TimeCompleteUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -81,7 +74,7 @@ public class ExtSysServiceImpl implements ExtSysService { @Override public PageUtils queryInviteFriendRecord(Integer page, Integer limit, String keywords) { - PageHelper.startPage(page,limit); + PageHelper.startPage(page, limit); List list = extSysDao.findInviteFriendList(keywords); PageInfo pageInfo = new PageInfo<>(list); return PageUtils.page(pageInfo); @@ -89,7 +82,7 @@ public class ExtSysServiceImpl implements ExtSysService { @Override public PageUtils queryInviteSignInRecord(Integer page, Integer limit, Long userId) { - PageHelper.startPage(page,limit); + PageHelper.startPage(page, limit); List list = extSysDao.findInviteSignInList(userId); PageInfo pageInfo = new PageInfo<>(list); return PageUtils.page(pageInfo); @@ -97,9 +90,25 @@ public class ExtSysServiceImpl implements ExtSysService { @Override public PageUtils queryInviteAwardDetailRecord(Integer page, Integer limit, Long userId) { - PageHelper.startPage(page,limit); + PageHelper.startPage(page, limit); List list = extSysDao.findInviteAwardDetailList(userId); PageInfo pageInfo = new PageInfo<>(list); return PageUtils.page(pageInfo); } + + @Override + public PageUtils queryLotteryCountPage(Integer page, Integer limit, String keywords) { + PageHelper.startPage(page, limit); + List list = extSysDao.findLotteryCountList(keywords); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); + } + + @Override + public PageUtils queryLotteryDetailPage(Integer page, Integer limit, Long userId) { + PageHelper.startPage(page, limit); + List list = extSysDao.findLotteryDetailPage(userId); + PageInfo pageInfo = new PageInfo<>(list); + return PageUtils.page(pageInfo); + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b5f4816c..95897d4f 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -121,66 +121,66 @@ spring: max-lifetime: ${max-lifetime} connection-timeout: ${connection-timeout} - duanju-slave: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-0: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-1: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-2: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-3: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} - duanju-slave-4: - driver-class-name: ${driver-class-name} - jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT - username: root - password: 0fd6497c308ccfa8 - minimum-idle: ${minimum-idle} - maximum-pool-size: ${maximum-pool-size} - idle-timeout: ${idle-timeout} - max-lifetime: ${max-lifetime} - connection-timeout: ${connection-timeout} +# duanju-slave: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-0: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-1: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-2: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-3: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} +# duanju-slave-4: +# driver-class-name: ${driver-class-name} +# jdbc-url: jdbc:mysql://47.122.26.160:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT +# username: root +# password: 0fd6497c308ccfa8 +# minimum-idle: ${minimum-idle} +# maximum-pool-size: ${maximum-pool-size} +# idle-timeout: ${idle-timeout} +# max-lifetime: ${max-lifetime} +# connection-timeout: ${connection-timeout} # 数据源配置end # 读写分离配置begin @@ -189,31 +189,31 @@ spring: duanju: masterDataSourceName: duanju slaveDataSourceNames: - # - duanju - - duanju-slave + - duanju + #- duanju-slave duanju-0: masterDataSourceName: duanju-0 slaveDataSourceNames: - # - duanju-0 - - duanju-slave-0 + - duanju-0 + #- duanju-slave-0 duanju-1: masterDataSourceName: duanju-1 slaveDataSourceNames: - # - duanju-1 - - duanju-slave-1 + - duanju-1 + #- duanju-slave-1 duanju-2: masterDataSourceName: duanju-2 slaveDataSourceNames: - # - duanju-2 - - duanju-slave-2 + - duanju-2 + #- duanju-slave-2 duanju-3: masterDataSourceName: duanju-3 slaveDataSourceNames: - # - duanju-3 - - duanju-slave-3 + - duanju-3 + #- duanju-slave-3 duanju-4: masterDataSourceName: duanju-4 slaveDataSourceNames: - # - duanju-4 - - duanju-slave-4 + - duanju-4 + #- duanju-slave-4 diff --git a/src/main/resources/mapper/ext/ExtSysDao.xml b/src/main/resources/mapper/ext/ExtSysDao.xml index 8c8b6c1f..7cdc6418 100644 --- a/src/main/resources/mapper/ext/ExtSysDao.xml +++ b/src/main/resources/mapper/ext/ExtSysDao.xml @@ -4,56 +4,43 @@ + + \ No newline at end of file From 7b0c54ca228360c7fde03e7cc8a8cb864693292e Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 1 Apr 2025 09:05:42 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E7=9F=AD=E5=89=A7=E6=96=B0=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/ext/ExtSysDao.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/resources/mapper/ext/ExtSysDao.xml b/src/main/resources/mapper/ext/ExtSysDao.xml index 7cdc6418..b313cecf 100644 --- a/src/main/resources/mapper/ext/ExtSysDao.xml +++ b/src/main/resources/mapper/ext/ExtSysDao.xml @@ -10,8 +10,8 @@ t1.avatar, ifnull(t2.signInNum,0) as signInNum, ifnull(t2.awardAmount,0) as awardAmount - from v_tb_user t1 - left JOIN (select x_user_id,sum(money) as awardAmount,sum(case when title = '签到奖励' then 1 else 0 end) as signInNum from v_user_money_details where classify = 6 group by x_user_id) t2 on t1.x_user_id = t2.x_user_id + from tb_user t1 + left JOIN (select x_user_id,sum(money) as awardAmount,sum(case when title = '签到奖励' then 1 else 0 end) as signInNum from user_money_details where classify = 6 group by x_user_id) t2 on t1.x_user_id = t2.x_user_id and (t1.user_name like concat('%',#{keywords},'%') or t1.phone like concat('%',#{keywords},'%')) @@ -24,7 +24,7 @@ t1.by_user_id AS userId, MIN( t1.create_time ) as createTime FROM - v_user_money_details t1 + user_money_details t1 WHERE 1=1 AND t1.user_id = #{userId} AND t1.classify = 6 @@ -39,7 +39,7 @@ t2.phone as userPhone, t1.create_time as createTime FROM - v_user_money_details t1 + user_money_details t1 LEFT JOIN tb_user t2 on t1.by_user_id = t2.user_id WHERE t1.user_id = #{userId} @@ -60,14 +60,14 @@ ifnull( t3.residueDrawCount, 0 ) AS residueDrawCount, ifnull( t3.todayDrawCount, 0 ) AS todayDrawCount FROM - v_tb_user t1 + tb_user t1 LEFT JOIN ( SELECT user_id, count( 1 ) AS unlocked, sum(CASE WHEN pay_time >= DATE_FORMAT(CURDATE(), '%Y-%m-%d 00:00:00') and pay_time <= DATE_FORMAT(CURDATE(), '%Y-%m-%d 23:59:59') then 1 else 0 end) as todayUnlocked FROM - v_orders + orders WHERE STATUS = 1 AND pay_way = 9 GROUP BY user_id ) t2 on t1.user_id = t2.user_id @@ -77,8 +77,8 @@ count(x.orders_id) as totalDrawCount, sum(case when y.source_id is null then 1 else 0 end) as residueDrawCount, sum(case when y.source_id is not null and DATE_FORMAT(y.create_time,'%Y-%m-%d') = CURDATE() then 1 else 0 end) as todayDrawCount - FROM v_orders x - LEFT JOIN v_disc_spinning_record y ON x.orders_id = y.source_id + FROM orders x + LEFT JOIN disc_spinning_record y ON x.orders_id = y.source_id AND y.source = 'order' WHERE 1 = 1 AND x.status = 1 @@ -97,7 +97,7 @@ t1.name, t1.number, t1.create_time - from v_disc_spinning_record t1 + from disc_spinning_record t1 where t1.user_id = #{userId} order by t1.id asc From 7bde58522cbcaddd16f5c895c52d3e94095ad798 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 1 Apr 2025 09:11:29 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E7=9F=AD=E5=89=A7=E6=96=B0=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/ext/ExtSysDao.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/mapper/ext/ExtSysDao.xml b/src/main/resources/mapper/ext/ExtSysDao.xml index b313cecf..12c06ce2 100644 --- a/src/main/resources/mapper/ext/ExtSysDao.xml +++ b/src/main/resources/mapper/ext/ExtSysDao.xml @@ -4,20 +4,20 @@ \ No newline at end of file From c2276c3bbb25675d3ff69530e08c7f770d6f0e1c Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Wed, 2 Apr 2025 14:54:23 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E7=9F=AD=E5=89=A7=E6=96=B0=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/ext/ExtSysDao.xml | 37 +++------------------ 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/src/main/resources/mapper/ext/ExtSysDao.xml b/src/main/resources/mapper/ext/ExtSysDao.xml index 0ecc1084..e0ce576a 100644 --- a/src/main/resources/mapper/ext/ExtSysDao.xml +++ b/src/main/resources/mapper/ext/ExtSysDao.xml @@ -14,7 +14,7 @@ left JOIN (select user_id,sum(money) as awardAmount,sum(case when title = '签到奖励' then 1 else 0 end) as signInNum from v_user_money_details where classify = 6 group by user_id) t2 on t1.user_id = t2.user_id - and (t1.user_name like concat('%',${keywords},'%') or t1.phone like concat('%',${keywords},'%')) + and (t1.user_name = ${keywords} or t1.phone = ${keywords}) ORDER BY t2.signInNum desc,t1.user_id asc @@ -71,43 +71,16 @@ t1.avatar, t1.user_name as userName, t1.phone, - ifnull( t2.unlocked, 0 ) AS unlocked, - ifnull( t2.todayUnlocked, 0 ) AS todayUnlocked, - ifnull( t3.totalDrawCount, 0 ) AS totalDrawCount, - ifnull( t3.residueDrawCount, 0 ) AS residueDrawCount, - ifnull( t3.todayDrawCount, 0 ) AS todayDrawCount + (select count(1) from v_orders where STATUS = 1 and pay_way = 9 and user_id = t1.user_id and pay_time >= DATE_FORMAT(CURDATE(), '%Y-%m-%d 00:00:00') and pay_time <= DATE_FORMAT(CURDATE(), '%Y-%m-%d 23:59:59') ) as todayUnlocked, + (select count(1) from v_disc_spinning_record where user_id = t1.user_id and DATE_FORMAT(create_time,'%Y-%m-%d') = CURDATE()) as todayDrawCount FROM v_tb_user t1 - LEFT JOIN ( - SELECT - user_id, - count( 1 ) AS unlocked, - sum(CASE WHEN pay_time >= DATE_FORMAT(CURDATE(), '%Y-%m-%d 00:00:00') and pay_time <= DATE_FORMAT(CURDATE(), '%Y-%m-%d 23:59:59') then 1 else 0 end) as todayUnlocked - FROM - v_orders - WHERE STATUS = 1 AND pay_way = 9 - GROUP BY user_id - ) t2 on t1.user_id = t2.user_id - LEFT JOIN ( - SELECT - x.user_id, - count(x.orders_id) as totalDrawCount, - sum(case when y.source_id is null then 1 else 0 end) as residueDrawCount, - sum(case when y.source_id is not null and DATE_FORMAT(y.create_time,'%Y-%m-%d') = CURDATE() then 1 else 0 end) as todayDrawCount - FROM v_orders x - LEFT JOIN v_disc_spinning_record y ON x.orders_id = y.source_id - AND y.source = 'order' - WHERE 1 = 1 - AND x.status = 1 - AND x.pay_way = 9 - group by x.user_id - ) t3 on t1.user_id = t3.user_id - and (t1.user_name like concat('%',${keywords},'%') or t1.phone like concat('%',${keywords},'%')) + and (t1.user_name = ${keywords} or t1.phone = ${keywords}) - order by t2.unlocked desc,t1.user_id asc + order by todayUnlocked desc,t1.user_id asc \ No newline at end of file