Compare commits

..

3 Commits

  1. 12
      .idea/compiler.xml
  2. 6
      .idea/vcs.xml
  3. 40
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java
  4. 12
      ruoyi-admin/src/main/resources/application-dev.yml
  5. 2
      ruoyi-admin/src/main/resources/application.yml
  6. 2
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
  7. 4
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/XcxLoginBody.java
  8. 3
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/UserType.java
  9. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppDeliveryOrderController.java
  10. 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppProductOrderController.java
  11. 17
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppUserController.java
  12. 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessProductOrderController.java
  13. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessSignerOrderController.java
  14. 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessStatisticsController.java
  15. 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessWithdrawalController.java
  16. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRegion.java
  17. 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java
  18. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/PayOrderBo.java
  19. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRegionBo.java
  20. 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java
  21. 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProductOrderPriceVo.java
  22. 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRegionVo.java
  23. 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java
  24. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISignerOrderService.java
  25. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java
  26. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
  27. 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/OrderService.java
  28. 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/WxMpConsumer.java
  29. 12
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/api/ProductOrderExpressApi.java
  30. 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/calculate/impl/DeliveryOrderCalculateService.java
  31. 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/BusinessDistrictServiceImpl.java
  32. 22
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/OrderServiceImpl.java
  33. 19
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ProductOrderServiceImpl.java
  34. 9
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SignerOrderServiceImpl.java
  35. 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRegionServiceImpl.java
  36. 23
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java
  37. 9
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  38. 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysWithdrawalServiceImpl.java
  39. 4
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ProductOrderMapper.xml
  40. 2
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ProductOrderPriceMapper.xml

12
.idea/compiler.xml

@ -25,18 +25,6 @@
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.5.Final/mapstruct-processor-1.5.5.Final.jar" /> <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.5.Final/mapstruct-processor-1.5.5.Final.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/tools/gem/gem-api/1.0.0.Alpha3/gem-api-1.0.0.Alpha3.jar" /> <entry name="$MAVEN_REPOSITORY$/org/mapstruct/tools/gem/gem-api/1.0.0.Alpha3/gem-api-1.0.0.Alpha3.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" /> <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc-scribe/0.15.0/therapi-runtime-javadoc-scribe-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc/0.15.0/therapi-runtime-javadoc-0.15.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar" />
<entry name="$MAVEN_REPOSITORY$/org/springframework/boot/spring-boot-configuration-processor/3.2.11/spring-boot-configuration-processor-3.2.11.jar" />
<entry name="$MAVEN_REPOSITORY$/io/github/linpeilie/mapstruct-plus-processor/1.4.5/mapstruct-plus-processor-1.4.5.jar" />
<entry name="$MAVEN_REPOSITORY$/io/github/linpeilie/mapstruct-plus/1.4.5/mapstruct-plus-1.4.5.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.5.5.Final/mapstruct-1.5.5.Final.jar" />
<entry name="$MAVEN_REPOSITORY$/io/github/linpeilie/mapstruct-plus-object-convert/1.4.5/mapstruct-plus-object-convert-1.4.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/baidu/lbsyun/javapoet/1.9.0/javapoet-1.9.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.5.Final/mapstruct-processor-1.5.5.Final.jar" />
<entry name="$MAVEN_REPOSITORY$/org/mapstruct/tools/gem/gem-api/1.0.0.Alpha3/gem-api-1.0.0.Alpha3.jar" />
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" />
</processorPath> </processorPath>
<module name="ruoyi-common-job" /> <module name="ruoyi-common-job" />
<module name="ruoyi-job" /> <module name="ruoyi-job" />

6
.idea/vcs.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

40
ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java

@ -88,16 +88,8 @@ public class XcxAuthStrategy implements IAuthStrategy {
String username = authUser.getUsername(); String username = authUser.getUsername();
authUser.setSource(loginBody.getSource()); authUser.setSource(loginBody.getSource());
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
SysUserVo user = loadUserByOpenid(loginBody.getSource()+openid); if( StringUtils.isNotEmpty(loginBody.getPhoneCode())){
//未找到用户信息 注册
if (user == null && StringUtils.isEmpty(loginBody.getPhoneCode())) {
LoginVo loginVo = new LoginVo();
loginVo.setBindingFlag(false);
return loginVo;
}
else if(user == null && StringUtils.isNotEmpty(loginBody.getPhoneCode())){
//注册用户 //注册用户
username = SocialUtils username = SocialUtils
.loginXcxAuthPhone(loginBody.getSource(), loginBody.getPhoneCode(), socialProperties); .loginXcxAuthPhone(loginBody.getSource(), loginBody.getPhoneCode(), socialProperties);
authUser.setUsername(username); authUser.setUsername(username);
@ -105,23 +97,23 @@ public class XcxAuthStrategy implements IAuthStrategy {
RegisterBody registerBody = new RegisterBody(); RegisterBody registerBody = new RegisterBody();
registerBody.setUsername(username); registerBody.setUsername(username);
registerBody.setTenantId(loginBody.getTenantId()); registerBody.setTenantId(loginBody.getTenantId());
if(StringUtils.isEmpty(loginBody.getUserType())){
loginBody.setUserType(UserType.APP_USER.getUserType());
}
registerBody.setUserType(loginBody.getUserType());
SysUserVo sysUserVo = loadUserByUsername(username); SysUserVo sysUserVo = loadUserByUsername(username);
user = new SysUserVo(); SysUserVo user = new SysUserVo();
if(sysUserVo == null){ if(sysUserVo == null){
//手机号注册账号 //手机号注册账号
SysUserBo register = register(registerBody); SysUserBo register = register(registerBody);
BeanUtil.copyProperties(register, user); BeanUtil.copyProperties(register, user);
}else{ }else{
sysUserVo.setUserType(loginBody.getUserType());
BeanUtil.copyProperties(sysUserVo, user); BeanUtil.copyProperties(sysUserVo, user);
} }
//注册 第三方 //注册 第三方
socialRegister(authUser, user.getUserId()); socialRegister(authUser, user.getUserId());
}
if(user == null){
user = new SysUserVo();
}
LoginVo loginVo = new LoginVo(); LoginVo loginVo = new LoginVo();
XcxLoginUser loginUser = loginService.buildLoginXcxUser(user); XcxLoginUser loginUser = loginService.buildLoginXcxUser(user);
loginUser.setClientKey(client.getClientKey()); loginUser.setClientKey(client.getClientKey());
loginUser.setDeviceType(client.getDeviceType()); loginUser.setDeviceType(client.getDeviceType());
@ -141,6 +133,10 @@ public class XcxAuthStrategy implements IAuthStrategy {
loginVo.setOpenid(openid); loginVo.setOpenid(openid);
loginVo.setBindingFlag(true); loginVo.setBindingFlag(true);
return loginVo; return loginVo;
}else{
throw new ServiceException("未获取到登录手机号");
}
} }
private SysUserVo loadUserByOpenid(String authId) { private SysUserVo loadUserByOpenid(String authId) {
// 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户 // 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户
@ -174,8 +170,8 @@ public class XcxAuthStrategy implements IAuthStrategy {
//密码 //密码
String password = sysConfigService.selectConfigByKey("sys.user.initPassword"); String password = sysConfigService.selectConfigByKey("sys.user.initPassword");
// app用户 // app用户
String userType = UserType.APP_USER.getUserType();
String userType = UserType.APP_USER.getUserType();
SysUserBo sysUser = new SysUserBo(); SysUserBo sysUser = new SysUserBo();
sysUser.setUserName(username); sysUser.setUserName(username);
sysUser.setNickName("微信用户:"+ username.substring(7)); sysUser.setNickName("微信用户:"+ username.substring(7));
@ -194,8 +190,6 @@ public class XcxAuthStrategy implements IAuthStrategy {
long postId = Long.parseLong(appPostId); long postId = Long.parseLong(appPostId);
sysUser.setPostIds(new Long[]{postId}); sysUser.setPostIds(new Long[]{postId});
sysUserService.registerUser(sysUser, "000000"); sysUserService.registerUser(sysUser, "000000");
recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success")); recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success"));
return sysUser; return sysUser;
@ -214,14 +208,14 @@ public class XcxAuthStrategy implements IAuthStrategy {
bo.setUnionId(authUserData.getToken().getUnionId()); bo.setUnionId(authUserData.getToken().getUnionId());
bo.setUserName(authUserData.getUsername()); bo.setUserName(authUserData.getUsername());
bo.setNickName(authUserData.getNickname()); bo.setNickName(authUserData.getNickname());
List<SysSocialVo> checkList = sysSocialService.selectByAuthId(authId);
if (CollUtil.isNotEmpty(checkList)) {
throw new ServiceException("此三方账号已经被绑定!");
}
// 查询是否已经绑定用户 // 查询是否已经绑定用户
SysSocialBo params = new SysSocialBo(); SysSocialBo params = new SysSocialBo();
params.setUserId(userId); //params.setUserId(userId);
params.setUserName(authUserData.getUsername());
params.setOpenId(authUserData.getUuid());
params.setSource(bo.getSource()); params.setSource(bo.getSource());
bo.setStatus(0L);
List<SysSocialVo> list = sysSocialService.queryList(params); List<SysSocialVo> list = sysSocialService.queryList(params);
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
// 没有绑定用户, 新增用户信息 // 没有绑定用户, 新增用户信息

12
ruoyi-admin/src/main/resources/application-dev.yml

@ -47,17 +47,17 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
#url: jdbc:mysql://rm-bp1r153qwj1m54i8djo.mysql.rds.aliyuncs.com:3306/duodiankeji?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true url: jdbc:mysql://rm-bp1r153qwj1m54i8djo.mysql.rds.aliyuncs.com:3306/duodiankeji?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
#username: duodiankeji username: duodiankeji
#password: duodiankeji@2025 password: duodiankeji@2025
#master: #master:
#type: ${spring.datasource.type} #type: ${spring.datasource.type}
#driverClassName: com.mysql.cj.jdbc.Driver #driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://127.0.0.1:3306/duodiankeji?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true #url: jdbc:mysql://127.0.0.1:3306/duodiankeji?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root #username: root
password: 123456 #password: 123456
# 从库数据源 # 从库数据源
# oracle: # oracle:

2
ruoyi-admin/src/main/resources/application.yml

@ -100,7 +100,7 @@ sa-token:
# token名称 (同时也是cookie名称) # token名称 (同时也是cookie名称)
token-name: Authorization token-name: Authorization
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true is-concurrent: false
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false is-share: false
# jwt秘钥 # jwt秘钥

2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java

@ -126,6 +126,8 @@ public class LoginUser implements Serializable {
*/ */
private String deviceType; private String deviceType;
private String openid;
/** /**
* 获取登录id * 获取登录id
*/ */

4
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/XcxLoginBody.java

@ -29,6 +29,10 @@ public class XcxLoginBody extends LoginBody {
* 手机号验证码 * 手机号验证码
*/ */
private String phoneCode; private String phoneCode;
/**
* 用户类型app_user business_user
*/
private String userType;
/** /**

3
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/UserType.java

@ -22,7 +22,8 @@ public enum UserType {
/** /**
* app端 * app端
*/ */
APP_USER("app_user"); APP_USER("app_user"),
BUSINESS_USER("business_user");
private final String userType; private final String userType;

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppDeliveryOrderController.java

@ -52,7 +52,7 @@ public class AppDeliveryOrderController extends BaseController {
} }
/** /**
* 查询配送订单号信息 * 查询配送订单号信息(闪时送)
* *
* @param orderNo * @param orderNo
*/ */

4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppProductOrderController.java

@ -206,7 +206,9 @@ public class AppProductOrderController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PostMapping("wx/pay") @PostMapping("wx/pay")
public R<PayOrderBo> wxPay(@RequestBody PayOrderBo bo) { public R<PayOrderBo> wxPay(@RequestBody PayOrderBo bo) {
Long userId = LoginHelper.getLoginUser().getUserId(); LoginUser loginUser = LoginHelper.getLoginUser();
Long userId = loginUser.getUserId();
bo.setOpenId(loginUser.getOpenid());
productOrderService.wxPay(bo, userId); productOrderService.wxPay(bo, userId);
return R.ok(bo); return R.ok(bo);
} }

17
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/AppUserController.java

@ -72,6 +72,11 @@ public class AppUserController extends BaseController {
return R.ok(userInfoVo); return R.ok(userInfoVo);
} }
/**
* 修改用户信息
* @param user
* @return
*/
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysUserBo user) { public R<Void> edit(@Validated @RequestBody SysUserBo user) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
@ -79,5 +84,15 @@ public class AppUserController extends BaseController {
return toAjax(userService.updateUser(user)); return toAjax(userService.updateUser(user));
} }
/**
* 修改用户类型
* userType=用户app_user 商家business_user
*/
@PostMapping("change/userType")
public R<Void> changeUserType(@Validated @RequestBody SysUserBo user) {
LoginUser loginUser = LoginHelper.getLoginUser();
user.setUserId(loginUser.getUserId());
userService.changeUserType(user);
return R.ok();
}
} }

3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessProductOrderController.java

@ -2,6 +2,7 @@ package org.dromara.system.controller.app;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.github.binarywang.wxpay.exception.WxPayException;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
@ -196,7 +197,7 @@ public class BusinessProductOrderController extends BaseController {
*/ */
@PostMapping("xcx/send/{channelOrder}") @PostMapping("xcx/send/{channelOrder}")
@SaIgnore @SaIgnore
public R<Void> wxSend(@PathVariable String channelOrder) throws WxErrorException { public R<Void> wxSend(@PathVariable String channelOrder) throws WxErrorException, WxPayException {
orderService.xcxSendChannelOrder(channelOrder); orderService.xcxSendChannelOrder(channelOrder);
return R.ok(); return R.ok();
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessSignerOrderController.java

@ -75,7 +75,7 @@ public class BusinessSignerOrderController extends BaseController {
if (sysBusinessVo == null) { if (sysBusinessVo == null) {
throw new ServiceException("你还不是商家"); throw new ServiceException("你还不是商家");
} }
return R.ok(signerOrderService.wxPay(sysBusinessVo)); return R.ok(signerOrderService.wxPay(sysBusinessVo, loginUser.getOpenid()));
} }

1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessStatisticsController.java

@ -39,7 +39,6 @@ public class BusinessStatisticsController {
*/ */
@GetMapping("order") @GetMapping("order")
public R<BusinessStatisticsVo> orderStatistics(){ public R<BusinessStatisticsVo> orderStatistics(){
LoginUser loginUser = LoginHelper.getLoginUser();
SysBusinessVo sysBusinessVo = sysBusinessService.currentInfo(); SysBusinessVo sysBusinessVo = sysBusinessService.currentInfo();
BusinessStatisticsVo businessStatisticsVo = new BusinessStatisticsVo(); BusinessStatisticsVo businessStatisticsVo = new BusinessStatisticsVo();
businessStatisticsVo.setTotalAmount(statisticsService.getTotalAmount(sysBusinessVo.getId())); businessStatisticsVo.setTotalAmount(statisticsService.getTotalAmount(sysBusinessVo.getId()));

1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/BusinessWithdrawalController.java

@ -76,6 +76,7 @@ public class BusinessWithdrawalController extends BaseController {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
SysBusinessVo sysBusinessVo = sysBusinessService.checkCurrentInfo(); SysBusinessVo sysBusinessVo = sysBusinessService.checkCurrentInfo();
bo.setBusinessId(sysBusinessVo.getId()); bo.setBusinessId(sysBusinessVo.getId());
bo.setOpenId(loginUser.getOpenid());
return toAjax(sysWithdrawalService.insertByBo(bo)); return toAjax(sysWithdrawalService.insertByBo(bo));
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRegion.java

@ -54,5 +54,7 @@ public class SysRegion extends BaseEntity {
@TableLogic @TableLogic
private String delFlag; private String delFlag;
private Long sort;
} }

5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java

@ -132,5 +132,10 @@ public class SysSocial extends TenantEntity {
*/ */
private String oauthTokenSecret; private String oauthTokenSecret;
/**
*
* 0开启 1关闭
*/
private Long status;
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/PayOrderBo.java

@ -17,4 +17,6 @@ public class PayOrderBo {
* 支付参数信息 * 支付参数信息
*/ */
private String payStr; private String payStr;
private String openId;
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRegionBo.java

@ -52,5 +52,7 @@ public class SysRegionBo extends BaseEntity {
@NotBlank(message = "行政区划级别不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "行政区划级别不能为空", groups = { AddGroup.class, EditGroup.class })
private String level; private String level;
private Long sort;
} }

5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java

@ -138,5 +138,10 @@ public class SysSocialBo extends TenantEntity {
private String oauthTokenSecret; private String oauthTokenSecret;
/**
*
* 0开启 1关闭
*/
private Long status;
} }

1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProductOrderPriceVo.java

@ -122,4 +122,5 @@ public class ProductOrderPriceVo implements Serializable {
private BigDecimal expressPrice; private BigDecimal expressPrice;
private Long totalNum;
} }

6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRegionVo.java

@ -59,4 +59,8 @@ public class SysRegionVo implements Serializable {
private String level; private String level;
private List<SysRegionVo> children; private List<SysRegionVo> children;
}
private Long sort;
}

5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java

@ -141,4 +141,9 @@ public class SysSocialVo implements Serializable {
* 创建时间 * 创建时间
*/ */
private Date createTime; private Date createTime;
/**
*
* 0开启 1关闭
*/
private Long status;
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISignerOrderService.java

@ -88,7 +88,7 @@ public interface ISignerOrderService {
Long queryCount(SignerOrderBo bo); Long queryCount(SignerOrderBo bo);
AllOrderBo wxPay(SysBusinessVo sysBusinessVo); AllOrderBo wxPay(SysBusinessVo sysBusinessVo, String openid);
void paySuccess(Long orderId); void paySuccess(Long orderId);
} }

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java

@ -58,6 +58,8 @@ public interface ISysSocialService {
*/ */
SysSocialVo selectByUserIdAndSource(Long userId, String wechatMiniProgram); SysSocialVo selectByUserIdAndSource(Long userId, String wechatMiniProgram);
List<SysSocialVo> queryListByUserIdAndSource(Long userId, String source);
/** /**
* 根据authId获取userId用加个胡 * 根据authId获取userId用加个胡
* @param authId * @param authId

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java

@ -235,4 +235,6 @@ public interface ISysUserService {
* @return * @return
*/ */
Long getAppUserCount(); Long getAppUserCount();
void changeUserType(SysUserBo user);
} }

5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/OrderService.java

@ -1,6 +1,7 @@
package org.dromara.system.service; package org.dromara.system.service;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.system.domain.bo.CancelOrderBo; import org.dromara.system.domain.bo.CancelOrderBo;
@ -34,9 +35,9 @@ public interface OrderService {
R<Void> jiedanByOrderId(JiedanBo bo, SysBusinessVo sysBusinessVo); R<Void> jiedanByOrderId(JiedanBo bo, SysBusinessVo sysBusinessVo);
void xcxSend(Long orderId) throws WxErrorException; void xcxSend(Long orderId) throws WxErrorException, WxPayException;
void xcxSendChannelOrder(String orderNo) throws WxErrorException; void xcxSendChannelOrder(String orderNo) throws WxErrorException, WxPayException;
AllOrderVo getWxPayInfo(Long orderId) ; AllOrderVo getWxPayInfo(Long orderId) ;

6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/WxMpConsumer.java

@ -41,6 +41,7 @@ public class WxMpConsumer {
@Autowired @Autowired
private WxMpService wxMpService; private WxMpService wxMpService;
@RabbitListener(queues = "wxMp.queue") @RabbitListener(queues = "wxMp.queue")
public void handleReceipt(String json) { public void handleReceipt(String json) {
try { try {
@ -50,7 +51,8 @@ public class WxMpConsumer {
wrapper.eq("user_name", sysBusinessViewVo.getMobile()); wrapper.eq("user_name", sysBusinessViewVo.getMobile());
wrapper.last("limit 1"); wrapper.last("limit 1");
SysUserVo sysUserVo = sysUserMapper.selectVoOne(wrapper); SysUserVo sysUserVo = sysUserMapper.selectVoOne(wrapper);
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(sysUserVo.getUserId(), "wechat_mini_program"); List<SysSocialVo> wechatMiniProgram = sysSocialService.queryListByUserIdAndSource(sysUserVo.getUserId(), "wechat_mini_program");
for (SysSocialVo sysSocialVo : wechatMiniProgram) {
String unionId = sysSocialVo.getUnionId(); String unionId = sysSocialVo.getUnionId();
WeixinMpUserVo weixinMpUserVo = weixinMpUserService.queryByUnionId(unionId); WeixinMpUserVo weixinMpUserVo = weixinMpUserService.queryByUnionId(unionId);
ProductOrderVo productOrderVo = productOrderService.queryById(Long.parseLong(queue.getParam())); ProductOrderVo productOrderVo = productOrderService.queryById(Long.parseLong(queue.getParam()));
@ -60,7 +62,6 @@ public class WxMpConsumer {
WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram(); WxMpTemplateMessage.MiniProgram miniProgram = new WxMpTemplateMessage.MiniProgram();
miniProgram.setAppid(weixinMsgTemplateVo.getMiniprogram()); miniProgram.setAppid(weixinMsgTemplateVo.getMiniprogram());
miniProgram.setPagePath(String.format(weixinMsgTemplateVo.getPage(), productOrderVo.getId())); miniProgram.setPagePath(String.format(weixinMsgTemplateVo.getPage(), productOrderVo.getId()));
//miniProgram.setUsePath(true);
WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage(); WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();
wxMpTemplateMessage.setTemplateId(weixinMsgTemplateVo.getTemplateId()); wxMpTemplateMessage.setTemplateId(weixinMsgTemplateVo.getTemplateId());
wxMpTemplateMessage.setToUser(weixinMpUserVo.getOpenId()); wxMpTemplateMessage.setToUser(weixinMpUserVo.getOpenId());
@ -82,6 +83,7 @@ public class WxMpConsumer {
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage); wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
} }
} }
}
}catch (Exception e) { }catch (Exception e) {
log.error("e:", e); log.error("e:", e);
} }

12
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/api/ProductOrderExpressApi.java

@ -10,6 +10,8 @@ import cn.hutool.core.util.DesensitizedUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.kuaidi100.sdk.api.*; import com.kuaidi100.sdk.api.*;
import com.kuaidi100.sdk.contant.ApiInfoConstant; import com.kuaidi100.sdk.contant.ApiInfoConstant;
@ -122,10 +124,10 @@ public class ProductOrderExpressApi {
*/ */
public void xcxSend(ProductOrderVo productOrderVo, ProductOrderExpressBo bo) throws WxErrorException { public void xcxSend(ProductOrderVo productOrderVo, ProductOrderExpressBo bo) throws WxErrorException, WxPayException {
AllOrderVo allOrderVo = allOrderService.queryByProductOrderIdAndPayStatusAndOrderType(productOrderVo.getId(), "1", "01"); AllOrderVo allOrderVo = allOrderService.queryByProductOrderIdAndPayStatusAndOrderType(productOrderVo.getId(), "1", "01");
Long userId = allOrderVo.getUserId(); Long userId = allOrderVo.getUserId();
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(userId, "wechat_mini_program"); WxPayOrderQueryResult wxPayOrderQueryResult = productOrderService.wxQueryOrder(allOrderVo.getChannelOrder());
SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17"); SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17");
WxMaService wxMaService = new WxMaServiceImpl(); WxMaService wxMaService = new WxMaServiceImpl();
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl(); WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
@ -133,7 +135,7 @@ public class ProductOrderExpressApi {
wxMaDefaultConfig.setAppid(sysClientVo.getClientKey()); wxMaDefaultConfig.setAppid(sysClientVo.getClientKey());
wxMaService.setWxMaConfig(wxMaDefaultConfig); wxMaService.setWxMaConfig(wxMaDefaultConfig);
WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo(); WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo();
wxMaShopOrderInfo.setOpenid(sysSocialVo.getOpenId()); wxMaShopOrderInfo.setOpenid(wxPayOrderQueryResult.getOpenid());
WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest(); WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest();
OrderKeyBean orderKey = new OrderKeyBean(); OrderKeyBean orderKey = new OrderKeyBean();
orderKey.setOrderNumberType(1); orderKey.setOrderNumberType(1);
@ -142,7 +144,7 @@ public class ProductOrderExpressApi {
wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey); wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey);
wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'")); wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'"));
PayerBean payer = new PayerBean(); PayerBean payer = new PayerBean();
payer.setOpenid(sysSocialVo.getOpenId()); payer.setOpenid(wxPayOrderQueryResult.getOpenid());
wxMaOrderShippingInfoUploadRequest.setPayer(payer); wxMaOrderShippingInfoUploadRequest.setPayer(payer);
ArrayList<ShippingListBean> shippingList = new ArrayList<>(); ArrayList<ShippingListBean> shippingList = new ArrayList<>();
List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList(); List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList();
@ -187,7 +189,7 @@ public class ProductOrderExpressApi {
}else{ }else{
try { try {
xcxSend(productOrderVo, bo); xcxSend(productOrderVo, bo);
} catch (WxErrorException e) { } catch (Exception e) {
log.error("错误:", e); log.error("错误:", e);
} }
pollByBo(bo, productOrderVo); pollByBo(bo, productOrderVo);

3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/calculate/impl/DeliveryOrderCalculateService.java

@ -60,6 +60,8 @@ public class DeliveryOrderCalculateService implements OrderCalculateService {
private AppProductAttrValueMapper appProductAttrValueMapper; private AppProductAttrValueMapper appProductAttrValueMapper;
@Override @Override
public void calculateService(ProductOrderVo productOrderVo, List<UserCartVo> userCartVos, SysBusinessVo sysBusinessVo) { public void calculateService(ProductOrderVo productOrderVo, List<UserCartVo> userCartVos, SysBusinessVo sysBusinessVo) {
@ -132,6 +134,7 @@ public class DeliveryOrderCalculateService implements OrderCalculateService {
productOrderPriceVo.setDeliveryPrice(fee); productOrderPriceVo.setDeliveryPrice(fee);
log.info("配送费:{}", fee); log.info("配送费:{}", fee);
orderPriceCalculatorServiceList.forEach(service->service.calculateDiscount(productOrderVo)); orderPriceCalculatorServiceList.forEach(service->service.calculateDiscount(productOrderVo));
orderPriceCalculatorServiceList.forEach(service->service.calculateTotalAmount(productOrderVo)); orderPriceCalculatorServiceList.forEach(service->service.calculateTotalAmount(productOrderVo));
//配送费 //配送费

2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/BusinessDistrictServiceImpl.java

@ -74,7 +74,7 @@ public class BusinessDistrictServiceImpl implements IBusinessDistrictService {
private QueryWrapper<BusinessDistrict> buildQueryWrapper(BusinessDistrictBo bo) { private QueryWrapper<BusinessDistrict> buildQueryWrapper(BusinessDistrictBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
QueryWrapper<BusinessDistrict> lqw = Wrappers.query(); QueryWrapper<BusinessDistrict> lqw = Wrappers.query();
lqw.eq(StringUtils.isNotBlank(bo.getArea()), "area", bo.getArea()); lqw.like(StringUtils.isNotBlank(bo.getArea()), "area", bo.getArea());
lqw.like(StringUtils.isNotBlank(bo.getName()), "name", bo.getName()); lqw.like(StringUtils.isNotBlank(bo.getName()), "name", bo.getName());
lqw.eq(bo.getSort() != null, "sort", bo.getSort()); lqw.eq(bo.getSort() != null, "sort", bo.getSort());
lqw.eq("del_flag", "0"); lqw.eq("del_flag", "0");

22
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/OrderServiceImpl.java

@ -8,6 +8,8 @@ import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.DesensitizedUtil;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
@ -189,7 +191,6 @@ public class OrderServiceImpl implements OrderService {
public void xcxSendNianfeiChannelOrder(String orderNo, String outTradeNo, String openId, String itemDesc){ public void xcxSendNianfeiChannelOrder(String orderNo, String outTradeNo, String openId, String itemDesc){
try { try {
AllOrderVo allOrderVo = allOrderService.queryByChannelOrder(orderNo);
SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17"); SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17");
WxMaService wxMaService = new WxMaServiceImpl(); WxMaService wxMaService = new WxMaServiceImpl();
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl(); WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
@ -266,11 +267,10 @@ public class OrderServiceImpl implements OrderService {
} }
@Override @Override
public void xcxSend(Long orderId) throws WxErrorException { public void xcxSend(Long orderId) throws WxErrorException, WxPayException {
ProductOrderVo productOrderVo = productOrderService.queryById(orderId); ProductOrderVo productOrderVo = productOrderService.queryById(orderId);
AllOrderVo allOrderVo = allOrderService.queryByProductOrderIdAndPayStatusAndOrderType(orderId, "1", "01"); AllOrderVo allOrderVo = allOrderService.queryByProductOrderIdAndPayStatusAndOrderType(orderId, "1", "01");
Long userId = allOrderVo.getUserId(); WxPayOrderQueryResult wxPayOrderQueryResult = productOrderService.wxQueryOrder(allOrderVo.getChannelOrder());
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(userId, "wechat_mini_program");
SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17"); SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17");
WxMaService wxMaService = new WxMaServiceImpl(); WxMaService wxMaService = new WxMaServiceImpl();
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl(); WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
@ -278,7 +278,7 @@ public class OrderServiceImpl implements OrderService {
wxMaDefaultConfig.setAppid(sysClientVo.getClientKey()); wxMaDefaultConfig.setAppid(sysClientVo.getClientKey());
wxMaService.setWxMaConfig(wxMaDefaultConfig); wxMaService.setWxMaConfig(wxMaDefaultConfig);
WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo(); WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo();
wxMaShopOrderInfo.setOpenid(sysSocialVo.getOpenId()); wxMaShopOrderInfo.setOpenid(wxPayOrderQueryResult.getOpenid());
WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest(); WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest();
OrderKeyBean orderKey = new OrderKeyBean(); OrderKeyBean orderKey = new OrderKeyBean();
orderKey.setOrderNumberType(1); orderKey.setOrderNumberType(1);
@ -287,7 +287,7 @@ public class OrderServiceImpl implements OrderService {
wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey); wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey);
wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'")); wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'"));
PayerBean payer = new PayerBean(); PayerBean payer = new PayerBean();
payer.setOpenid(sysSocialVo.getOpenId()); payer.setOpenid(wxPayOrderQueryResult.getOpenid());
wxMaOrderShippingInfoUploadRequest.setPayer(payer); wxMaOrderShippingInfoUploadRequest.setPayer(payer);
ArrayList<ShippingListBean> shippingList = new ArrayList<>(); ArrayList<ShippingListBean> shippingList = new ArrayList<>();
List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList(); List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList();
@ -313,12 +313,12 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public void xcxSendChannelOrder(String orderNo) throws WxErrorException { public void xcxSendChannelOrder(String orderNo) throws WxErrorException, WxPayException {
AllOrderVo allOrderVo = allOrderService.queryByChannelOrder(orderNo); AllOrderVo allOrderVo = allOrderService.queryByChannelOrder(orderNo);
ProductOrderVo productOrderVo = productOrderService.queryById(allOrderVo.getOrderId()); ProductOrderVo productOrderVo = productOrderService.queryById(allOrderVo.getOrderId());
WxPayOrderQueryResult wxPayOrderQueryResult = productOrderService.wxQueryOrder(orderNo);
String openid = wxPayOrderQueryResult.getOpenid();
if (productOrderVo != null) { if (productOrderVo != null) {
Long userId = allOrderVo.getUserId();
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(userId, "wechat_mini_program");
SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17"); SysClientVo sysClientVo = sysClientService.queryByClientId("632c661437d8e1da0c06bdddbaf6ed17");
WxMaService wxMaService = new WxMaServiceImpl(); WxMaService wxMaService = new WxMaServiceImpl();
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl(); WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
@ -326,7 +326,7 @@ public class OrderServiceImpl implements OrderService {
wxMaDefaultConfig.setAppid(sysClientVo.getClientKey()); wxMaDefaultConfig.setAppid(sysClientVo.getClientKey());
wxMaService.setWxMaConfig(wxMaDefaultConfig); wxMaService.setWxMaConfig(wxMaDefaultConfig);
WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo(); WxMaShopOrderInfo wxMaShopOrderInfo = new WxMaShopOrderInfo();
wxMaShopOrderInfo.setOpenid(sysSocialVo.getOpenId()); wxMaShopOrderInfo.setOpenid(openid);
WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest(); WxMaOrderShippingInfoUploadRequest wxMaOrderShippingInfoUploadRequest = new WxMaOrderShippingInfoUploadRequest();
OrderKeyBean orderKey = new OrderKeyBean(); OrderKeyBean orderKey = new OrderKeyBean();
orderKey.setOrderNumberType(1); orderKey.setOrderNumberType(1);
@ -335,7 +335,7 @@ public class OrderServiceImpl implements OrderService {
wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey); wxMaOrderShippingInfoUploadRequest.setOrderKey(orderKey);
wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'")); wxMaOrderShippingInfoUploadRequest.setUploadTime(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss.SSS'+08:00'"));
PayerBean payer = new PayerBean(); PayerBean payer = new PayerBean();
payer.setOpenid(sysSocialVo.getOpenId()); payer.setOpenid(openid);
wxMaOrderShippingInfoUploadRequest.setPayer(payer); wxMaOrderShippingInfoUploadRequest.setPayer(payer);
ArrayList<ShippingListBean> shippingList = new ArrayList<>(); ArrayList<ShippingListBean> shippingList = new ArrayList<>();
List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList(); List<ProductOrderItemsVo> itemsList = productOrderVo.getItemsList();

19
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ProductOrderServiceImpl.java

@ -411,6 +411,9 @@ public class ProductOrderServiceImpl implements IProductOrderService {
orderCalculateService.calculateService(productOrderVo, userCartVos, sysBusinessVo); orderCalculateService.calculateService(productOrderVo, userCartVos, sysBusinessVo);
productOrderVo.getProductOrderPriceVo().setCurrentPrice(productOrderVo.getProductOrderPriceVo().getPayPrice()); productOrderVo.getProductOrderPriceVo().setCurrentPrice(productOrderVo.getProductOrderPriceVo().getPayPrice());
ProductOrderPriceVo productOrderPriceVo = productOrderVo.getProductOrderPriceVo(); ProductOrderPriceVo productOrderPriceVo = productOrderVo.getProductOrderPriceVo();
if(productOrderPriceVo.getPayPrice().compareTo(BigDecimal.ZERO) == 0){ if(productOrderPriceVo.getPayPrice().compareTo(BigDecimal.ZERO) == 0){
//支付成功 //支付成功
productOrderVo.setStatus("1"); productOrderVo.setStatus("1");
@ -423,6 +426,17 @@ public class ProductOrderServiceImpl implements IProductOrderService {
throw new ServiceException("付款金额不能为负数"); throw new ServiceException("付款金额不能为负数");
} }
log.info("价格:{}", productOrderVo.getProductOrderPriceVo()); log.info("价格:{}", productOrderVo.getProductOrderPriceVo());
Long businessCouponId = productOrderVo.getBusinessCouponId();
Long systemCouponId = productOrderVo.getSystemCouponId();
if(businessCouponId != null && systemCouponId != null){
BusinessCouponVo businessCouponVo = businessCouponService.queryById(businessCouponId);
PromotionCouponVo promotionCouponVo = promotionCouponService.queryById(systemCouponId);
if(businessCouponVo != null && promotionCouponVo != null){
if (businessCouponVo.getProductScopeType() == 5L && promotionCouponVo.getProductScopeType() == 4L) {
throw new ServiceException("新人优惠券不能共同使用", 200);
}
}
}
return productOrderVo; return productOrderVo;
} }
@ -532,8 +546,7 @@ public class ProductOrderServiceImpl implements IProductOrderService {
request.setBody("购买商品"); request.setBody("购买商品");
request.setOutTradeNo(orderBo.getOrderNo()); request.setOutTradeNo(orderBo.getOrderNo());
request.setTimeExpire(DateUtil.format(orderBo.getPayTime(), "yyyy-MM-dd HH:mm:ss")); request.setTimeExpire(DateUtil.format(orderBo.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(userId, "wechat_mini_program"); request.setOpenid(bo.getOpenId());
request.setOpenid(sysSocialVo.getOpenId());
request.setSpbillCreateIp(ServletUtils.getClientIP()); request.setSpbillCreateIp(ServletUtils.getClientIP());
request.setTradeType(WxPayConstants.TradeType.JSAPI); request.setTradeType(WxPayConstants.TradeType.JSAPI);
payWxCreateOrder(bo, orderBo, request); payWxCreateOrder(bo, orderBo, request);
@ -802,7 +815,7 @@ public class ProductOrderServiceImpl implements IProductOrderService {
Date jdkDate = DateUtil.offsetDay(new Date(), -1).toJdkDate(); Date jdkDate = DateUtil.offsetDay(new Date(), -1).toJdkDate();
QueryWrapper<ProductOrderPrice> queryWrapper = new QueryWrapper<>(); QueryWrapper<ProductOrderPrice> queryWrapper = new QueryWrapper<>();
queryWrapper.select(" sum(pay_price ) as pay_price"); queryWrapper.select(" sum(pay_price ) as pay_price");
queryWrapper.apply(" order_id in ( select po.id from product_order po where po.status in ('1', '2', '4', '5', '6', 7) and cast(po.create_time as date) = cast({0} as date) and po.del_flag = '0')", jdkDate); queryWrapper.apply(" order_id in ( select po.id from product_order po where po.status in ('1', '2', '4', '5', '6') and cast(po.create_time as date) = cast({0} as date) and po.del_flag = '0')", jdkDate);
ProductOrderPrice productOrder = productOrderPriceMapper.selectOne(queryWrapper); ProductOrderPrice productOrder = productOrderPriceMapper.selectOne(queryWrapper);
return productOrder == null ? BigDecimal.ZERO : productOrder.getPayPrice(); return productOrder == null ? BigDecimal.ZERO : productOrder.getPayPrice();
} }

9
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SignerOrderServiceImpl.java

@ -149,7 +149,7 @@ public class SignerOrderServiceImpl implements ISignerOrderService {
@Override @Override
@Transactional @Transactional
public AllOrderBo wxPay(SysBusinessVo sysBusinessVo) { public AllOrderBo wxPay(SysBusinessVo sysBusinessVo, String openid) {
SysContractVo sysContractVo = sysContractService.queryByService(); SysContractVo sysContractVo = sysContractService.queryByService();
if (sysContractVo == null) { if (sysContractVo == null) {
throw new ServiceException("改功能被关闭了, 请联系管理员"); throw new ServiceException("改功能被关闭了, 请联系管理员");
@ -158,7 +158,7 @@ public class SignerOrderServiceImpl implements ISignerOrderService {
signerOrderBo.setContractId(sysContractVo.getId()); signerOrderBo.setContractId(sysContractVo.getId());
signerOrderBo.setBusinessId(sysBusinessVo.getId()); signerOrderBo.setBusinessId(sysBusinessVo.getId());
saveByBo(signerOrderBo); saveByBo(signerOrderBo);
return payJsapiOrderVo(signerOrderBo, sysBusinessVo.getUserId()); return payJsapiOrderVo(signerOrderBo, sysBusinessVo.getUserId(), openid);
} }
@Override @Override
@ -196,7 +196,7 @@ public class SignerOrderServiceImpl implements ISignerOrderService {
} }
public AllOrderBo payJsapiOrderVo(SignerOrderBo bo, Long userId){ public AllOrderBo payJsapiOrderVo(SignerOrderBo bo, Long userId, String openid){
{ {
//SignerOrderVo vo = queryById(bo.getId()); //SignerOrderVo vo = queryById(bo.getId());
AllOrderBo orderBo = new AllOrderBo(); AllOrderBo orderBo = new AllOrderBo();
@ -216,8 +216,7 @@ public class SignerOrderServiceImpl implements ISignerOrderService {
request.setOutTradeNo(orderBo.getOrderNo()); request.setOutTradeNo(orderBo.getOrderNo());
request.setNotifyUrl(wxPayConfiguration.getContractNotifyUrl()); request.setNotifyUrl(wxPayConfiguration.getContractNotifyUrl());
request.setTimeExpire(DateUtil.format(orderBo.getPayTime(), "yyyy-MM-dd HH:mm:ss")); request.setTimeExpire(DateUtil.format(orderBo.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(userId, "wechat_mini_program"); request.setOpenid(openid);
request.setOpenid(sysSocialVo.getOpenId());
request.setSpbillCreateIp(ServletUtils.getClientIP()); request.setSpbillCreateIp(ServletUtils.getClientIP());
request.setTradeType(WxPayConstants.TradeType.JSAPI); request.setTradeType(WxPayConstants.TradeType.JSAPI);
payWxCreateOrder(orderBo, request); payWxCreateOrder(orderBo, request);

1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRegionServiceImpl.java

@ -76,6 +76,7 @@ public class SysRegionServiceImpl implements ISysRegionService {
lqw.eq(StringUtils.isNotBlank(bo.getAdCode()), SysRegion::getAdCode, bo.getAdCode()); lqw.eq(StringUtils.isNotBlank(bo.getAdCode()), SysRegion::getAdCode, bo.getAdCode());
lqw.like(StringUtils.isNotBlank(bo.getName()), SysRegion::getName, bo.getName()); lqw.like(StringUtils.isNotBlank(bo.getName()), SysRegion::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getLevel()), SysRegion::getLevel, bo.getLevel()); lqw.eq(StringUtils.isNotBlank(bo.getLevel()), SysRegion::getLevel, bo.getLevel());
lqw.orderByAsc(SysRegion::getSort);
return lqw; return lqw;
} }

23
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java

@ -2,8 +2,8 @@ package org.dromara.system.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.domain.SysSocial; import org.dromara.system.domain.SysSocial;
@ -46,6 +46,7 @@ public class SysSocialServiceImpl implements ISysSocialService {
public List<SysSocialVo> queryList(SysSocialBo bo) { public List<SysSocialVo> queryList(SysSocialBo bo) {
LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>() LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>()
.eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId()) .eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId())
.eq(ObjectUtil.isNotNull(bo.getStatus()), SysSocial::getStatus, bo.getStatus())
.eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId()) .eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId())
.eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource()); .eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource());
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
@ -90,6 +91,11 @@ public class SysSocialServiceImpl implements ISysSocialService {
*/ */
private void validEntityBeforeSave(SysSocial entity) { private void validEntityBeforeSave(SysSocial entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
LambdaUpdateWrapper<SysSocial> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(SysSocial::getStatus, 1L);
updateWrapper.eq(SysSocial::getUserId, entity.getUserId());
updateWrapper.eq(SysSocial::getSource, entity.getScope());
baseMapper.update(updateWrapper);
} }
@ -124,10 +130,20 @@ public class SysSocialServiceImpl implements ISysSocialService {
public SysSocialVo selectByUserIdAndSource(Long userId, String source) { public SysSocialVo selectByUserIdAndSource(Long userId, String source) {
LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>() LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>()
.eq(SysSocial::getUserId, userId) .eq(SysSocial::getUserId, userId)
.eq(SysSocial::getSource, source); .eq(SysSocial::getSource, source)
.eq(SysSocial::getStatus, 0L);
return baseMapper.selectVoOne(lqw); return baseMapper.selectVoOne(lqw);
} }
@Override
public List<SysSocialVo> queryListByUserIdAndSource(Long userId, String source) {
LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>()
.eq(SysSocial::getUserId, userId)
.eq(SysSocial::getSource, source)
.eq(SysSocial::getStatus, 0L);
return baseMapper.selectVoList(lqw);
}
/** /**
* 根据authId获取userId用加个胡 * 根据authId获取userId用加个胡
* *
@ -137,7 +153,8 @@ public class SysSocialServiceImpl implements ISysSocialService {
@Override @Override
public SysUserVo queryByAuthId(String authId) { public SysUserVo queryByAuthId(String authId) {
LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>() LambdaQueryWrapper<SysSocial> lqw = new LambdaQueryWrapper<SysSocial>()
.eq(SysSocial::getAuthId, authId); .eq(SysSocial::getAuthId, authId)
.eq(SysSocial::getStatus, 0L);
SysSocialVo sysSocialVo = baseMapper.selectVoOne(lqw); SysSocialVo sysSocialVo = baseMapper.selectVoOne(lqw);
if(sysSocialVo == null){ if(sysSocialVo == null){
return null; return null;

9
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@ -594,6 +594,15 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return baseMapper.selectCount(queryWrapper); return baseMapper.selectCount(queryWrapper);
} }
@Override
@Transactional
public void changeUserType(SysUserBo user) {
UpdateWrapper<SysUser> uw = new UpdateWrapper<>();
uw.set("user_type", user.getUserType());
uw.eq("user_id", user.getUserId());
baseMapper.selectCount(uw);
}
/** /**
* 通过用户ID查询用户账户 * 通过用户ID查询用户账户
* *

6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysWithdrawalServiceImpl.java

@ -280,12 +280,6 @@ public class SysWithdrawalServiceImpl implements ISysWithdrawalService {
}else{ }else{
SysBusinessViewVo sysBusinessViewVo = sysBusinessMapper.queryViewById(bo.getBusinessId()); SysBusinessViewVo sysBusinessViewVo = sysBusinessMapper.queryViewById(bo.getBusinessId());
bo.setAccount(sysBusinessViewVo.getLeader()); bo.setAccount(sysBusinessViewVo.getLeader());
SysBusinessVo sysBusinessVo = sysBusinessService.queryById(bo.getBusinessId());
SysSocialVo sysSocialVo = sysSocialService.selectByUserIdAndSource(sysBusinessVo.getUserId(), "wechat_mini_program");
if (sysSocialVo == null) {
throw new ServiceException("微信信息不存在");
}
bo.setOpenId(sysSocialVo.getOpenId());
bo.setBankNo(""); bo.setBankNo("");
bo.setBankName(""); bo.setBankName("");
} }

4
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ProductOrderMapper.xml

@ -285,6 +285,7 @@
<result column="service_price" property="servicePrice"></result> <result column="service_price" property="servicePrice"></result>
<result column="express_price" property="expressPrice"></result> <result column="express_price" property="expressPrice"></result>
<result column="settlement_current_price" property="settlementCurrentPrice"></result> <result column="settlement_current_price" property="settlementCurrentPrice"></result>
<result column="total_num" property="totalNum"></result>
</resultMap> </resultMap>
<select id="querySysPageStatistics" resultMap="ProductOrderPriceVoResult" <select id="querySysPageStatistics" resultMap="ProductOrderPriceVoResult"
parameterType="org.dromara.system.domain.bo.ProductOrderBo"> parameterType="org.dromara.system.domain.bo.ProductOrderBo">
@ -295,7 +296,8 @@
sum(pop.delivery_price ) as delivery_price, sum(pop.delivery_price ) as delivery_price,
sum(pop.service_price ) as service_price, sum(pop.service_price ) as service_price,
sum(pop.express_price ) as express_price, sum(pop.express_price ) as express_price,
sum(pop.settlement_current_price ) as settlement_current_price sum(pop.settlement_current_price ) as settlement_current_price,
sum(po.num) as total_num
from product_order po inner join product_order_price pop on pop.order_id = po.id from product_order po inner join product_order_price pop on pop.order_id = po.id
left join sys_business sb on po.business_id = sb.id left join sys_business sb on po.business_id = sb.id
where po.del_flag = 0 where po.del_flag = 0

2
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ProductOrderPriceMapper.xml

@ -16,7 +16,7 @@
<if test="businessId != null"> <if test="businessId != null">
and business_id = #{businessId} and business_id = #{businessId}
</if> </if>
and status in ('1', '2', '4', '5') and status in ('1', '2', '4', '5', '9')
<if test="createTime != null and dateFormat != '' "> <if test="createTime != null and dateFormat != '' ">
and date_format(create_time, #{dateFormat}) = date_format(#{createTime}, #{dateFormat}) and date_format(create_time, #{dateFormat}) = date_format(#{createTime}, #{dateFormat})
</if> </if>

Loading…
Cancel
Save