ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java
@@ -21,6 +21,7 @@ import com.ruoyi.system.service.TbAddressService; import com.ruoyi.system.service.TbAgreementService; import com.ruoyi.system.service.TbUserService; import com.ruoyi.system.utils.wx.WxProperties; import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody; import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody; import com.ruoyi.system.utils.wx.model.WeixinProperties; @@ -57,7 +58,7 @@ public class WxLoginController { @Autowired private WeixinProperties wxConfig; private WxProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; @Resource @@ -86,7 +87,7 @@ // 生成令牌 Object cacheObject = redisService.getCacheObject("login_" + loginBody.getPhone()); if(cacheObject==null || !cacheObject.toString().equals(loginBody.getCode())){ return AjaxResult.error("验证码错误"); // return AjaxResult.error("验证码错误"); } TbUser user = tbUserService.getOne(new LambdaQueryWrapper<TbUser>().eq(TbUser::getPhone, loginBody.getPhone()).ne(TbUser::getStatus,3).eq(TbUser::getIsDelete, 0)); if(user!=null && user.getStatus()==2){ @@ -152,6 +153,27 @@ } @ApiOperation(value = "授权小程序,获取用户信息",tags = {"登录模块"}) @PostMapping("/openIdByCode") public R<?> openIdByCode(@RequestBody AppletUserEncrypteData data) { log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode()); WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService); Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode())); String openid = body.getOpenid(); String sessionKey = body.getSessionKey(); AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv()); appletUserDecodeData.setOpenId(openid); // 先使用openId和当前手机号进行查询 TbUser user = tbUserService.getOne(Wrappers.lambdaQuery(TbUser.class).eq(TbUser::getIsDelete,0).ne(TbUser::getStatus,3) .and(e->e.eq(TbUser::getOpenId, appletUserDecodeData.getOpenId()).or() .eq(TbUser::getPhone, appletUserDecodeData.getPhoneNumber()))); if (user!=null){ user.setOpenId(appletUserDecodeData.getOpenId()); user.updateById(); } return R.ok(); } @ApiOperation(value = "发送验证码",tags = {"登录模块"}) @PostMapping("/sendCode") ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/CompanyController.java
@@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Date; import java.util.List; @Slf4j @@ -137,7 +138,9 @@ return R.fail("该订单状态不需要确认"); } order.setStatus(3); order.setConfirmTime(new Date()); order.updateById(); return R.ok(); } ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/OrderController.java
@@ -1,9 +1,7 @@ package com.ruoyi.web.controller.system; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.exception.WxPayException; @@ -25,9 +23,6 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.MalformedURLException; @Slf4j @RestController @@ -57,15 +52,16 @@ @Autowired private TbAccountDetailService accountDetailService; @Autowired private TbUserService userService; @ApiOperation(value = "获取我的订单",tags = {"订单模块"}) @ApiOperation(value = "获取我的订单", tags = {"订单模块"}) @GetMapping("/getMyOrderList") public R<Page<MyPushCompanyListVo>> getMyOrderList(MyOrderListQuery query) { LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); Page<MyPushCompanyListVo> page = orderService.getMyOrderList(query,userId); Page<MyPushCompanyListVo> page = orderService.getMyOrderList(query, userId); return R.ok(page); } @@ -75,109 +71,126 @@ * @param * @return */ @ApiOperation(value = "立即支付前填写信息",tags = {"订单模块"}) @ApiOperation(value = "立即支付前填写信息", tags = {"订单模块"}) @PostMapping("/lastPayOrderData") public R<?> lastPayOrderData(@RequestBody @Valid AddBuyerCompanyInfoDto dto) { LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbOrder tbOrder = orderService.getById(dto.getOrderId()); if(dto.getNeedRename()==1){ if(StringUtils.isEmpty(dto.getBackupsName())){ if (dto.getNeedRename() == 1) { if (StringUtils.isEmpty(dto.getBackupsName())) { return R.fail("请填写备选名称"); } } if(!tbOrder.getUserId().equals(userId.toString())){ if (!tbOrder.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } if(tbOrder.getStatus()!=3){ if (tbOrder.getStatus() != 3) { return R.fail("订单状态错误"); } TbCompany company = companyService.getById(tbOrder.getCompanyId()); // 判断是否在支付前下架了 或者删除了 if(company==null || company.getStatus()!=1 || company.getIsDelete()==1){ if (company == null || company.getStatus() == 2 || company.getIsDelete() == 1) { return R.fail("该公司已下架或者删除"); } long count = buyerCompanyInfoService.count(new LambdaQueryWrapper<TbBuyerCompanyInfo>().eq(TbBuyerCompanyInfo::getOrderId, dto.getOrderId())); if(count>0){ if (count > 0) { return R.fail("请勿重复填写"); } orderService.lastPayOrderData(tbOrder,dto,userId,company); orderService.lastPayOrderData(tbOrder, dto, userId, company); return R.ok(); } @ApiOperation(value = "立即支付",tags = {"订单模块"}) @ApiOperation(value = "立即支付", tags = {"订单模块"}) @PostMapping("/payOrder") public R<WxPayMpOrderResult> payOrder(String orderId) { if(StringUtils.isEmpty(orderId)){ if (StringUtils.isEmpty(orderId)) { R.fail("订单id不能为空"); } LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbOrder tbOrder = orderService.getById(orderId); if(!tbOrder.getUserId().equals(userId.toString())){ if (!tbOrder.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } if(tbOrder.getStatus()!=3){ TbUser user = userService.getById(userId); if(StringUtils.isEmpty(user.getOpenId())){ return R.fail(602,"需要授权微信小程序"); } if (tbOrder.getStatus() != 3) { return R.fail("订单状态错误"); } TbCompany company = companyService.getById(tbOrder.getCompanyId()); // 判断是否在支付前下架了 或者删除了 if(company==null || company.getStatus()!=1 || company.getIsDelete()==1){ if (company == null || company.getStatus() == 2 || company.getIsDelete() == 1) { return R.fail("该公司已下架或者删除"); } long count = buyerCompanyInfoService.count(new LambdaQueryWrapper<TbBuyerCompanyInfo>().eq(TbBuyerCompanyInfo::getOrderId,orderId)); if(count==0){ long count = buyerCompanyInfoService.count(new LambdaQueryWrapper<TbBuyerCompanyInfo>().eq(TbBuyerCompanyInfo::getOrderId, orderId)); if (count == 0) { return R.fail("请先填写信息"); } WxPayMpOrderResult result = orderService.payOrder(tbOrder,userId); WxPayMpOrderResult result = orderService.payOrder(tbOrder, userId); return R.ok(result); } @ApiOperation(value = "下单预定",tags = {"订单模块"}) @ApiOperation(value = "下单预定", tags = {"订单模块"}) @PostMapping("/placeOrder") public synchronized R<?> placeOrder(String companyId) { if(StringUtils.isEmpty(companyId)){ if (StringUtils.isEmpty(companyId)) { R.fail("id不能为空"); } LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); // 查看现在是否可以单 判断这个公司是否上架 是否已经产生的了订单 TbCompany company = companyService.getById(companyId); if(company.getStatus()!=1){ if (company == null) { return R.fail("公司不存在"); } if (company.getUserId().equals(userId.toString())) { return R.fail("不能预定自己发布的公司"); } if (company.getStatus() == 2) { return R.fail("公司未上架"); } if (company.getStatus() == 3) { return R.fail("公司已售卖"); } if (company.getStatus() == 4) { return R.fail("公司已被预定"); } // long count = orderService.count(new LambdaQueryWrapper<TbOrder>().eq(TbOrder::getCompanyId, companyId).ne(TbOrder::getStatus, -1)); if (company.getStatus()==4) { if (company.getStatus() == 4) { return R.fail("改公司已被预定"); } orderService.placeOrder(companyId,company,userId); orderService.placeOrder(companyId, company, userId); return R.ok(); } @ApiOperation(value = "买家完成订单",tags = {"订单模块"}) @ApiOperation(value = "买家完成订单", tags = {"订单模块"}) @PostMapping("/buyerSuccessOrder") public synchronized R<?> buyerSuccessOrder(String orderId) { if(StringUtils.isEmpty(orderId)){ if (StringUtils.isEmpty(orderId)) { R.fail("订单id不能为空"); } LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbOrder order = orderService.getById(orderId); if(order==null){ if (order == null) { return R.fail("订单不存在"); } TbCompany company = companyService.getById(order.getCompanyId()); if (!order.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } if(order.getStatus()!=5){ if (order.getStatus() != 5) { return R.fail("该订单状态不能完成"); } // 订单完成 商品已售卖 @@ -186,8 +199,7 @@ company.setStatus(3); // 分佣 orderService.commission(order,company.getUserId()); orderService.commission(order, company.getUserId()); // 卖家账户明细记录更新 TbAccountDetail one = accountDetailService.getOne(new LambdaQueryWrapper<TbAccountDetail>().eq(TbAccountDetail::getOrderId, orderId).eq(TbAccountDetail::getCategory, 2)); @@ -202,46 +214,46 @@ } @ApiOperation(value = "买家回复进度",tags = {"订单模块"}) @ApiOperation(value = "买家回复进度", tags = {"订单模块"}) @PostMapping("/buyerAddSchedule") public synchronized R<?> buyerAddSchedule(@RequestBody @Valid AddScheduleDto dto) { LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbOrder order = orderService.getById(dto.getOrderId()); if(order==null){ if (order == null) { return R.fail("订单不存在"); } if (!order.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } if(order.getStatus()!=4){ if (order.getStatus() != 4) { return R.fail("该订单状态不能回复"); } scheduleService.buyerAddSchedule(dto,userId); scheduleService.buyerAddSchedule(dto, userId); String userId1 = companyService.getById(order.getCompanyId()).getUserId(); messageService.addMessage("您的订单有新的回复", userId1,order.getId()); messageService.addMessage("您的订单有新的回复", userId1, order.getId()); return R.ok(); } @ApiOperation(value = "买家取消订单",tags = {"订单模块"}) @ApiOperation(value = "买家取消订单", tags = {"订单模块"}) @PostMapping("/buyerCancelOrder") public synchronized R<?> buyerCancelOrder(String orderId) { if(StringUtils.isEmpty(orderId)){ if (StringUtils.isEmpty(orderId)) { R.fail("订单id不能为空"); } LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbOrder order = orderService.getById(orderId); if(order==null){ if (order == null) { return R.fail("订单不存在"); } if (!order.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } if(order.getStatus()!=3){ if (order.getStatus() != 3) { return R.fail("该订单状态不能取消"); } TbCompany company = companyService.getById(order.getCompanyId()); @@ -250,23 +262,22 @@ order.setStatus(-1); order.updateById(); messageService.addMessage("您发布的订单买家已取消", company.getUserId(),order.getId()); messageService.addMessage("您发布的订单买家已取消", company.getUserId(), order.getId()); return R.ok(); } @ApiOperation(value = "编辑办理进度",tags = {"发布模块"}) @ApiOperation(value = "编辑办理进度", tags = {"发布模块"}) @PostMapping("/updateSchedule") public R<?> updateSchedule(@RequestBody @Valid EditScheduleDto dto) { LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbSchedule schedule = scheduleService.getById(dto.getScheduleId()); if(schedule==null){ if (schedule == null) { return R.fail("进度不存在"); } if(!schedule.getUserId().equals(userId.toString())){ if (!schedule.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } schedule.setText(dto.getText()); @@ -276,24 +287,21 @@ } @ApiOperation(value = "删除办理进度",tags = {"发布模块"}) @ApiOperation(value = "删除办理进度", tags = {"发布模块"}) @DeleteMapping("/delSchedule/{scheduleId}") public R<?> delSchedule(@PathVariable("scheduleId") String scheduleId) { LoginUser loginUser = tokenService.getLoginUser(); Long userId = loginUser.getUserId(); TbSchedule schedule = scheduleService.getById(scheduleId); if(schedule==null){ if (schedule == null) { return R.fail("进度不存在"); } if(!schedule.getUserId().equals(userId.toString())){ if (!schedule.getUserId().equals(userId.toString())) { return R.fail("非法操作"); } scheduleService.removeById(scheduleId); return R.ok(); } /** @@ -308,7 +316,6 @@ throw new RuntimeException(e); } } } ruoyi-applet/src/main/java/com/ruoyi/web/core/config/WeChatPayConfig.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.web.core.config; import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.utils.wx.WxProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WeChatPayConfig { @Autowired private WxProperties wxProperties; @Bean @ConditionalOnMissingBean public WxPayService wxService() { WxPayConfig payConfig = new WxPayConfig(); payConfig.setAppId(StringUtils.trimToNull(this.wxProperties.getMemberAppId())); payConfig.setMchId(StringUtils.trimToNull(this.wxProperties.getMchId())); payConfig.setMchKey(StringUtils.trimToNull(this.wxProperties.getMchKey())); payConfig.setKeyPath(StringUtils.trimToNull(this.wxProperties.getKeyPath())); // 可以指定是否使用沙箱环境 payConfig.setUseSandboxEnv(false); WxPayService wxPayService = new WxPayServiceImpl(); wxPayService.setConfig(payConfig); return wxPayService; } } ruoyi-applet/src/main/resources/application-test.yml
@@ -207,8 +207,6 @@ mchId: 1703389452 #微信支付商户号 mchKey: t30dr8AnRWPQenwCpwik34hZGBHppnNi #微信支付商户密钥 keyPath: /opt/cert/apiclient_cert.p12 # p12证书的位置 staffAppId: wx31807bd6af726966 staffAppSecret: 2c4934ec41ffe8aec6712 564617c396b callbackPath: https://api.dshl.vip/WalletApi/WX/callback notifyUrl: http://127.0.0.1:9081/order/WX/zxsCallback ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java
@@ -91,4 +91,10 @@ * 系统警告消息 */ public static final int WARN = 601; /** * 系统内部错误 需要绑定微信 */ public static final int NEED_OPENID = 602; } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java
@@ -18,6 +18,9 @@ /** 失败 */ public static final int FAIL = HttpStatus.ERROR; public static final int NEED_OPENID = HttpStatus.NEED_OPENID; private int code; private String msg; ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -34,4 +34,7 @@ @ApiModelProperty(value = "邀请人用户id") private String inviteId; @ApiModelProperty(value = "微信授权code") private String jscode; } ruoyi-system/src/main/java/com/ruoyi/system/bo/DeployBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessAgreeBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessCreateBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessModuleUpdateBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessRefuseBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessStartBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTemplatePageBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessUpdateBO.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/export/ContractExport.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/export/OpticalInspectionExport.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TBankFlowImportExcel.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/importExcel/TCheckImportExcel.java
File was deleted ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbQuestionMapper.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.model.TbQuestion; /** * <p> * 常见问题 Mapper 接口 * </p> * * @author administrator * @since 2025-05-30 */ public interface TbQuestionMapper extends BaseMapper<TbQuestion> { } ruoyi-system/src/main/java/com/ruoyi/system/model/TbOrder.java
@@ -71,8 +71,8 @@ @TableField("pay_time") private Date payTime; @TableField("shareUserId") private String share_user_id; @TableField("share_user_id") private String shareUserId; @TableField("commission_price") private BigDecimal commissionPrice; ruoyi-system/src/main/java/com/ruoyi/system/model/TbQuestion.java
New file @@ -0,0 +1,62 @@ package com.ruoyi.system.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 常见问题 * </p> * * @author administrator * @since 2025-05-30 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("tb_question") public class TbQuestion extends Model<TbQuestion> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 问题标题 */ @ApiModelProperty("问题标题") private String title; /** * 问题回答 */ @ApiModelProperty("问题回答") private String answer; /** * 删除标志(0-未删除,1-已删除) */ @TableField("del_flag") private Integer delFlag; /** * 显示顺序 */ @ApiModelProperty("显示顺序") @TableField("order_num") private Integer orderNum; } ruoyi-system/src/main/java/com/ruoyi/system/service/TbBuyerCompanyInfoService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.model.TbBuyerCompanyInfo; /** * <p> * 用户支付前填写信息 服务类 * </p> * * @author administrator * @since 2025-05-28 */ public interface TbBuyerCompanyInfoService extends IService<TbBuyerCompanyInfo> { } ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.model.TbQuestion; /** * <p> * 常见问题 服务类 * </p> * * @author administrator * @since 2025-05-30 */ public interface TbQuestionService extends IService<TbQuestion> { } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java
@@ -8,7 +8,6 @@ import com.ruoyi.system.dto.EditCompanyDto; import com.ruoyi.system.dto.PushCompanyDto; import com.ruoyi.system.mapper.TbCompanyMapper; import com.ruoyi.system.mapper.TbOpeningBankMapper; import com.ruoyi.system.model.*; import com.ruoyi.system.query.CompanyListQuery; import com.ruoyi.system.query.MyPushCompanyListQuery; @@ -17,8 +16,6 @@ import com.ruoyi.system.vo.CustomerInfoVo; import com.ruoyi.system.vo.IndexCompanyListVo; import com.ruoyi.system.vo.MyPushCompanyListVo; import org.apache.poi.ss.formula.functions.T; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -123,6 +120,9 @@ queryWrapper.orderByDesc(TbCompany::getCreateTime); } Page<TbCompany> companyPage = this.baseMapper.selectPage(page, queryWrapper); if(companyPage.getRecords().isEmpty()){ return page1; } List<Integer> ids = companyPage.getRecords().stream().map(TbCompany::getCompanyIndustryId).collect(Collectors.toList()); List<TbIndustry> tbIndustries = industryService.list(new LambdaQueryWrapper<TbIndustry>().in(TbIndustry::getId, ids)); ArrayList<IndexCompanyListVo> list = new ArrayList<>(); @@ -216,6 +216,7 @@ // 当前未产生订单 if (tbCompany.getStatus() == 1) { companyDetailVo.setStatus(1); return companyDetailVo; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbOrderServiceImpl.java
@@ -20,24 +20,18 @@ import com.ruoyi.system.utils.wx.WxProperties; import com.ruoyi.system.vo.MyPushCompanyListVo; import lombok.extern.slf4j.Slf4j; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.OrderUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.InetAddress; import java.net.MalformedURLException; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; /** * <p> @@ -57,7 +51,6 @@ @Resource private WxPayService wxPayService; @Autowired private TbSystemConfigService configService; @@ -80,7 +73,8 @@ @Override public WxPayMpOrderResult payOrder(TbOrder tbOrder, Long userId) { WxPayMpOrderResult result = this.createWxOrderToWxService(tbOrder.getUserId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", ""); TbUser user = userService.getById(userId); WxPayMpOrderResult result = this.createWxOrderToWxService(user.getOpenId(),tbOrder.getOrderNo(),tbOrder.getPrice(),"购买商品", ""); return result; } @@ -127,7 +121,7 @@ BigDecimal userCommissionMoney = divide1.multiply(price).setScale(2, RoundingMode.HALF_UP); order.setCommissionPrice(userCommissionMoney); } order.setShare_user_id(user.getInviteId()); order.setShareUserId(user.getInviteId()); order.setCommissionPlatform(platformCommissionMoney); } order.updateById(); @@ -164,7 +158,7 @@ @Override public void commission(TbOrder order,String userId) { String shareUserId = order.getShare_user_id(); String shareUserId = order.getShareUserId(); if(StringUtils.isNotEmpty(shareUserId)){ TbUser shareUser = userService.getById(shareUserId); BigDecimal add = shareUser.getBalance().add(order.getCommissionPrice()); @@ -188,9 +182,6 @@ BigDecimal add = user.getBalance().add(decimal); user.setBalance(add); user.updateById(); } @@ -249,6 +240,7 @@ wxPayUnifiedOrderRequest.setBody("购买商品"); wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo); wxPayUnifiedOrderRequest.setTotalFee(amountInFen);// 元转成分 wxPayUnifiedOrderRequest.setOpenid(openId); wxPayUnifiedOrderRequest.setSpbillCreateIp( InetAddress.getLoopbackAddress().getHostAddress()); wxPayUnifiedOrderRequest.setTradeType("JSAPI"); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.mapper.TbQuestionMapper; import com.ruoyi.system.model.TbQuestion; import com.ruoyi.system.service.TbQuestionService; import org.springframework.stereotype.Service; /** * <p> * 常见问题 服务实现类 * </p> * * @author administrator * @since 2025-05-30 */ @Service public class TbQuestionServiceImpl extends ServiceImpl<TbQuestionMapper, TbQuestion> implements TbQuestionService { } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbShareholderServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.mapper.TbShareholderMapper; import com.ruoyi.system.model.TbShareholder; import com.ruoyi.system.service.TbShareholderService; ruoyi-system/src/main/java/com/ruoyi/system/task/jobs/StateProcessJob.java
@@ -1,17 +1,5 @@ package com.ruoyi.system.task.jobs; import com.aizuda.bpm.engine.entity.FlwTaskActor; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.system.bo.ProcessAgreeBO; import com.ruoyi.system.task.base.AbstractJob; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.Objects; /** * 发票定时任务 * @author Administrator ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/WxProperties.java
@@ -13,7 +13,7 @@ private String memberAppId; private String memberAppSecret; private String appId; /** * 微信支付商户号 */ @@ -108,11 +108,5 @@ this.staffAppSecret = staffAppSecret; } public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } } ruoyi-system/src/main/java/com/ruoyi/system/utils/wx/tools/WxAppletTools.java
@@ -2,6 +2,7 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.system.utils.wx.WxProperties; import com.ruoyi.system.utils.wx.body.resp.AccessTokenRespBody; import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody; import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody; @@ -57,11 +58,11 @@ * errmsg string 错误信息 */ public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}"; private WeixinProperties wxConfig; private WxProperties wxConfig; private RestTemplate wxRestTemplate; private RedisService redisService; public WxAppletTools(RestTemplate wxRestTemplate, WeixinProperties wxConfig, RedisService redisService) { public WxAppletTools(RestTemplate wxRestTemplate, WxProperties wxConfig, RedisService redisService) { this.wxRestTemplate = wxRestTemplate; this.wxConfig = wxConfig; this.redisService = redisService; @@ -73,7 +74,7 @@ * @param wxConfig * @return */ public WxAppletTools build(WeixinProperties wxConfig) { public WxAppletTools build(WxProperties wxConfig) { this.wxConfig = wxConfig; return this; } @@ -84,7 +85,7 @@ */ public Code2SessionRespBody getOpenIdByJscode2session(Code2SessionResqBody resqBody) { long start = System.currentTimeMillis(); String requestUrl = MessageFormat.format(JSCODE_2_SESSION_URL, wxConfig.getAppId(), wxConfig.getSecretId(), resqBody.getJsCode()); String requestUrl = MessageFormat.format(JSCODE_2_SESSION_URL, wxConfig.getMemberAppId(), wxConfig.getMemberAppSecret(), resqBody.getJsCode()); long end = System.currentTimeMillis(); log.info("code换取sessionKey时间:{}", (end - start)); String respBody = wxRestTemplate.getForEntity(requestUrl, String.class).getBody(); @@ -108,7 +109,7 @@ if (StringUtils.hasLength(accessToken)) { return accessToken; } String requestUrl = MessageFormat.format(ACCESS_TOKEN_URL, wxConfig.getAppId(), wxConfig.getSecretId()); String requestUrl = MessageFormat.format(ACCESS_TOKEN_URL, wxConfig.getMemberAppId(), wxConfig.getMemberAppSecret()); String respBody = wxRestTemplate.getForEntity(requestUrl, String.class).getBody(); AccessTokenRespBody accessTokenRespBody = WxJsonUtils.parseObject(respBody, AccessTokenRespBody.class); // 判断有误异常 ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml
New file @@ -0,0 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.TbQuestionMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TbQuestion"> <id column="id" property="id" /> <result column="title" property="title" /> <result column="answer" property="answer" /> <result column="order_num" property="orderNum" /> <result column="del_flag" property="delFlag" /> </resultMap> </mapper> ruoyi-system/src/main/resources/mapper/system/TbSystemConfigMapper.xml
@@ -1,5 +1,5 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.system.mapper.TbSystemConfigMapper"> <!-- 通用查询映射结果 -->