From 044b24d0cad9f53fbbfccd089045452de30a155c Mon Sep 17 00:00:00 2001 From: cjw Date: Fri, 23 Aug 2024 10:20:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E8=AE=A2=E5=8D=95=E5=AE=8C?= =?UTF-8?q?=E5=96=84=EF=BC=9B=E6=B4=BB=E5=8A=A8=E5=A2=9E=E5=8A=A0=E5=B0=81?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/InjectionMetaObjectHandler.java | 10 +++-- .../scale/controller/ActivityController.java | 37 +++++++++---------- .../scale/controller/wx/WxPayController.java | 13 +++++-- .../org/dromara/scale/domain/Activity.java | 12 +++--- .../dromara/scale/domain/bo/ActivityBo.java | 17 +++++---- .../dromara/scale/domain/vo/ActivityVo.java | 16 +++++--- .../service/IReservationOrderService.java | 2 + .../scale/service/ISysScaleOrderService.java | 3 ++ .../scale/service/impl/MyServiceImpl.java | 10 ++++- .../impl/ReservationOrderServiceImpl.java | 27 +++++++++++--- .../service/impl/ReservationServiceImpl.java | 2 + .../impl/SysScaleOrderServiceImpl.java | 31 +++++++++++++++- 12 files changed, 129 insertions(+), 51 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java index 99e6b38..574145b 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java @@ -68,9 +68,13 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler { baseEntity.setUpdateTime(current); // 获取当前登录用户的ID,并填充更新人信息 - Long userId = LoginHelper.getUserId(); - if (ObjectUtil.isNotNull(userId)) { - baseEntity.setUpdateBy(userId); + if (ObjectUtil.isNull(baseEntity.getUpdateBy())) { + LoginUser loginUser = getLoginUser(); + if (ObjectUtil.isNotNull(loginUser)) { + Long userId = loginUser.getUserId(); + //更新人 + baseEntity.setUpdateBy(userId); + } } } } catch (Exception e) { diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ActivityController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ActivityController.java index b75fc2c..e95999b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ActivityController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ActivityController.java @@ -1,26 +1,27 @@ package org.dromara.scale.controller; -import java.util.List; - -import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import org.dromara.common.idempotent.annotation.RepeatSubmit; -import org.dromara.common.log.annotation.Log; -import org.dromara.common.web.core.BaseController; -import org.dromara.common.mybatis.core.page.PageQuery; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; -import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.scale.domain.vo.ActivityVo; -import org.dromara.scale.domain.bo.ActivityBo; -import org.dromara.scale.service.IActivityService; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.scale.domain.bo.ActivityBo; +import org.dromara.scale.domain.vo.ActivityVo; +import org.dromara.scale.service.IActivityService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 活动 @@ -63,8 +64,7 @@ public class ActivityController extends BaseController { */ @SaCheckPermission("scale:activity:query") @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { return R.ok(activityService.queryById(id)); } @@ -98,8 +98,7 @@ public class ActivityController extends BaseController { @SaCheckPermission("scale:activity:remove") @Log(title = "活动", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(activityService.deleteWithValidByIds(List.of(ids), true)); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxPayController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxPayController.java index 033b219..5291cc5 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxPayController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/wx/WxPayController.java @@ -1,10 +1,12 @@ package org.dromara.scale.controller.wx; +import cn.dev33.satoken.annotation.SaIgnore; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; import lombok.RequiredArgsConstructor; +import org.dromara.scale.service.IReservationOrderService; import org.dromara.scale.service.ISysScaleOrderService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; * @version V1.0.0 * @date 2024/7/29 14:08 */ +@SaIgnore @Validated @RequiredArgsConstructor @RestController @@ -27,19 +30,23 @@ public class WxPayController { private final WxPayService payService; - private final ISysScaleOrderService sysScaleOrderService; + private final ISysScaleOrderService scaleOrderService; + + private final IReservationOrderService reservationOrderService; @PostMapping("/notify/order/scale") public String parseScaleNotifyResult(@RequestBody String xmlData) throws WxPayException { final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData); - // TODO 根据自己业务场景需要构造返回对象 + String outTradeNo = notifyResult.getOutTradeNo(); + scaleOrderService.processOrder(outTradeNo); return WxPayNotifyResponse.success("成功"); } @PostMapping("/notify/order/reservation") public String parseReservationNotifyResult(@RequestBody String xmlData) throws WxPayException { final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData); - // TODO 根据自己业务场景需要构造返回对象 + String outTradeNo = notifyResult.getOutTradeNo(); + reservationOrderService.processOrder(outTradeNo); return WxPayNotifyResponse.success("成功"); } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/Activity.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/Activity.java index 2536534..6100a97 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/Activity.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/Activity.java @@ -1,13 +1,13 @@ package org.dromara.scale.domain; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; import java.io.Serial; +import java.util.Date; /** * 活动对象 m_activity @@ -24,7 +24,7 @@ public class Activity extends BaseEntity { private static final long serialVersionUID = 1L; /** - * + * */ @TableId(value = "id") private Long id; @@ -39,6 +39,8 @@ public class Activity extends BaseEntity { */ private String activityDetails; + private Long cover; + /** * 浏览量 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ActivityBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ActivityBo.java index cb9ae03..7ea0c21 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ActivityBo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ActivityBo.java @@ -1,15 +1,16 @@ package org.dromara.scale.domain.bo; -import org.dromara.scale.domain.Activity; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.scale.domain.Activity; + import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; /** * 活动业务对象 m_activity @@ -23,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; public class ActivityBo extends BaseEntity { /** - * + * */ @NotNull(message = "不能为空", groups = { EditGroup.class }) private Long id; @@ -40,6 +41,8 @@ public class ActivityBo extends BaseEntity { @NotBlank(message = "活动详情不能为空", groups = { AddGroup.class, EditGroup.class }) private String activityDetails; + private Long cover; + /** * 浏览量 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ActivityVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ActivityVo.java index bf5ed16..d55a3d4 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ActivityVo.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ActivityVo.java @@ -1,14 +1,13 @@ package org.dromara.scale.domain.vo; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.scale.domain.Activity; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.scale.domain.Activity; import java.io.Serial; import java.io.Serializable; @@ -31,7 +30,7 @@ public class ActivityVo implements Serializable { private static final long serialVersionUID = 1L; /** - * + * */ @ExcelProperty(value = "") private Long id; @@ -48,6 +47,11 @@ public class ActivityVo implements Serializable { @ExcelProperty(value = "活动详情") private String activityDetails; + private Long cover; + @Translation(type = TransConstant.OSS_ID_TO_URL) + @AutoMapping(target = "cover") + private Long coverUrl; + /** * 浏览量 */ diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IReservationOrderService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IReservationOrderService.java index 07e6f53..e7ac15b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IReservationOrderService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IReservationOrderService.java @@ -48,4 +48,6 @@ public interface IReservationOrderService { */ T insertByBo(ReservationOrderBo bo) throws Exception; + Boolean processOrder(String orderId); + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleOrderService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleOrderService.java index 4b47fee..9a7623a 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleOrderService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScaleOrderService.java @@ -49,5 +49,8 @@ public interface ISysScaleOrderService { T insertByBo(SysScaleOrderBo bo) throws Exception; + Boolean processOrder(String orderId); + + } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/MyServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/MyServiceImpl.java index ef6bb82..5577dfa 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/MyServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/MyServiceImpl.java @@ -2,6 +2,8 @@ package org.dromara.scale.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.mybatis.core.page.PageQuery; @@ -48,8 +50,12 @@ public class MyServiceImpl implements IMyService { @Override public TableDataInfo queryEvaluationRecordPageList(PageQuery pageQuery) { - //todo - return null; + Long userId = LoginHelper.getUserId(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysEvaluationRecord::getUserId, userId); + lqw.orderByDesc(SysEvaluationRecord::getCreateTime); + Page result = evaluationRecordMapper.selectRecordVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); } @Override diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationOrderServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationOrderServiceImpl.java index 8827a8c..c86d992 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationOrderServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationOrderServiceImpl.java @@ -99,7 +99,7 @@ public class ReservationOrderServiceImpl implements IReservationOrderService { * @return 是否新增成功 */ @Override - public T insertByBo(ReservationOrderBo bo) throws Exception{ + public T insertByBo(ReservationOrderBo bo) throws Exception { ReservationOrder add = MapstructUtils.convert(bo, ReservationOrder.class); ReservationTime reservationTime = timeMapper.selectById(add.getTimeId()); Counselor counselor = counselorMapper.selectById(reservationTime.getCounselorId()); @@ -114,7 +114,7 @@ public class ReservationOrderServiceImpl implements IReservationOrderService { bo.setId(add.getId()); } WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); - orderRequest.setBody("墨者科技-量表支付"); + orderRequest.setBody("墨者科技-预约支付"); orderRequest.setOutTradeNo(add.getId().toString()); int totalFee = price.multiply(new BigDecimal(100)).intValue(); orderRequest.setTotalFee(totalFee); @@ -123,8 +123,6 @@ public class ReservationOrderServiceImpl implements IReservationOrderService { return payService.createOrder(orderRequest); } - - /** * 保存前的数据校验 */ @@ -132,5 +130,24 @@ public class ReservationOrderServiceImpl implements IReservationOrderService { //TODO 做一些数据校验,如唯一约束 } - + @Override + public Boolean processOrder(String orderId) { + long id = Long.parseLong(orderId); + ReservationOrder reservationOrder = baseMapper.selectById(id); + Long timeId = reservationOrder.getTimeId(); + Long userId = reservationOrder.getCreateBy(); + //更新预约表 + ReservationTime time = new ReservationTime(); + time.setId(timeId); + time.setStatus(1); + time.setUpdateBy(userId); + boolean timeFlag = timeMapper.updateById(time) > 0; + //更新订单状态 + ReservationOrder order = new ReservationOrder(); + order.setId(id); + order.setOrderStatus(1); + order.setUpdateBy(userId); + boolean orderFlag = baseMapper.updateById(order) > 0; + return timeFlag && orderFlag; + } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationServiceImpl.java index 7b58638..724f12b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationServiceImpl.java @@ -101,9 +101,11 @@ public class ReservationServiceImpl implements IReservationService { @Override public Boolean insertIntervene(SysInterveneRecordBo bo) { + //todo 订单状态校验 ReservationOrder orderUpdate = new ReservationOrder(); orderUpdate.setDiagnose(bo.getDiagnose()); orderUpdate.setAnnex(bo.getDiagnoseAnnex()); + orderUpdate.setOrderStatus(2); orderUpdate.setId(bo.getBatchNo()); boolean orderFlag = reservationOrderMapper.updateById(orderUpdate) > 0; ReservationTime timeUpdate = new ReservationTime(); diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleOrderServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleOrderServiceImpl.java index cced74f..887798a 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleOrderServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScaleOrderServiceImpl.java @@ -10,10 +10,12 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.constant.StatusEnum; +import org.dromara.scale.domain.SysEvaluationRecord; import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScaleOrder; import org.dromara.scale.domain.bo.SysScaleOrderBo; import org.dromara.scale.domain.vo.SysScaleOrderVo; +import org.dromara.scale.mapper.SysEvaluationRecordMapper; import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleOrderMapper; import org.dromara.scale.service.ISysScaleOrderService; @@ -39,6 +41,9 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService { private final SysScaleMapper sysScaleMapper; + private final SysEvaluationRecordMapper recordMapper; + + /** * 查询量表订单 * @@ -109,7 +114,7 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService { bo.setId(add.getId()); } WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); - orderRequest.setBody("墨者科技-预约支付"); + orderRequest.setBody("墨者科技-量表支付"); orderRequest.setOutTradeNo(add.getId().toString()); int totalFee = price.multiply(new BigDecimal(100)).intValue(); orderRequest.setTotalFee(totalFee); @@ -126,4 +131,28 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService { //TODO 做一些数据校验,如唯一约束 } + @Override + public Boolean processOrder(String orderId) { + long id = Long.parseLong(orderId); + SysScaleOrder scaleOrder = baseMapper.selectById(id); + Long scaleId = scaleOrder.getScaleId(); + Long userId = scaleOrder.getCreateBy(); + //初始量测记录 + SysEvaluationRecord record = new SysEvaluationRecord(); + record.setUserId(userId); + //个人测评订单号就是批次号 + record.setBatchNo(id); + record.setScaleId(scaleId); + record.setStatus(-1); + record.setCreateBy(userId); + record.setUpdateBy(userId); + boolean recordFlag = recordMapper.insert(record) > 0; + //更新订单状态 + SysScaleOrder order = new SysScaleOrder(); + order.setId(id); + order.setOrderStatus(1); + order.setUpdateBy(userId); + boolean orderFlag = baseMapper.updateById(order) > 0; + return recordFlag && orderFlag; + } }