预约订单完善;活动增加封面

This commit is contained in:
cjw 2024-08-23 10:20:12 +08:00
parent f19ace48f2
commit 044b24d0ca
12 changed files with 129 additions and 51 deletions

View File

@ -68,11 +68,15 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
baseEntity.setUpdateTime(current); baseEntity.setUpdateTime(current);
// 获取当前登录用户的ID并填充更新人信息 // 获取当前登录用户的ID并填充更新人信息
Long userId = LoginHelper.getUserId(); if (ObjectUtil.isNull(baseEntity.getUpdateBy())) {
if (ObjectUtil.isNotNull(userId)) { LoginUser loginUser = getLoginUser();
if (ObjectUtil.isNotNull(loginUser)) {
Long userId = loginUser.getUserId();
//更新人
baseEntity.setUpdateBy(userId); baseEntity.setUpdateBy(userId);
} }
} }
}
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED); throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
} }

View File

@ -1,26 +1,27 @@
package org.dromara.scale.controller; 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 cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotEmpty;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import jakarta.validation.constraints.NotNull;
import org.dromara.common.log.annotation.Log; import lombok.RequiredArgsConstructor;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.scale.domain.vo.ActivityVo; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.scale.domain.bo.ActivityBo; import org.dromara.common.log.annotation.Log;
import org.dromara.scale.service.IActivityService; 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.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") @SaCheckPermission("scale:activity:query")
@GetMapping("/{id}") @GetMapping("/{id}")
public R<ActivityVo> getInfo(@NotNull(message = "主键不能为空") public R<ActivityVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
@PathVariable Long id) {
return R.ok(activityService.queryById(id)); return R.ok(activityService.queryById(id));
} }
@ -98,8 +98,7 @@ public class ActivityController extends BaseController {
@SaCheckPermission("scale:activity:remove") @SaCheckPermission("scale:activity:remove")
@Log(title = "活动", businessType = BusinessType.DELETE) @Log(title = "活动", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
@PathVariable Long[] ids) {
return toAjax(activityService.deleteWithValidByIds(List.of(ids), true)); return toAjax(activityService.deleteWithValidByIds(List.of(ids), true));
} }
} }

View File

@ -1,10 +1,12 @@
package org.dromara.scale.controller.wx; 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.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.WxPayService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.scale.service.IReservationOrderService;
import org.dromara.scale.service.ISysScaleOrderService; import org.dromara.scale.service.ISysScaleOrderService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* @version V1.0.0 * @version V1.0.0
* @date 2024/7/29 14:08 * @date 2024/7/29 14:08
*/ */
@SaIgnore
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@ -27,19 +30,23 @@ public class WxPayController {
private final WxPayService payService; private final WxPayService payService;
private final ISysScaleOrderService sysScaleOrderService; private final ISysScaleOrderService scaleOrderService;
private final IReservationOrderService reservationOrderService;
@PostMapping("/notify/order/scale") @PostMapping("/notify/order/scale")
public String parseScaleNotifyResult(@RequestBody String xmlData) throws WxPayException { public String parseScaleNotifyResult(@RequestBody String xmlData) throws WxPayException {
final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData); final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData);
// TODO 根据自己业务场景需要构造返回对象 String outTradeNo = notifyResult.getOutTradeNo();
scaleOrderService.processOrder(outTradeNo);
return WxPayNotifyResponse.success("成功"); return WxPayNotifyResponse.success("成功");
} }
@PostMapping("/notify/order/reservation") @PostMapping("/notify/order/reservation")
public String parseReservationNotifyResult(@RequestBody String xmlData) throws WxPayException { public String parseReservationNotifyResult(@RequestBody String xmlData) throws WxPayException {
final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData); final WxPayOrderNotifyResult notifyResult = this.payService.parseOrderNotifyResult(xmlData);
// TODO 根据自己业务场景需要构造返回对象 String outTradeNo = notifyResult.getOutTradeNo();
reservationOrderService.processOrder(outTradeNo);
return WxPayNotifyResponse.success("成功"); return WxPayNotifyResponse.success("成功");
} }
} }

View File

@ -1,13 +1,13 @@
package org.dromara.scale.domain; package org.dromara.scale.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date; import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial; import java.io.Serial;
import java.util.Date;
/** /**
* 活动对象 m_activity * 活动对象 m_activity
@ -39,6 +39,8 @@ public class Activity extends BaseEntity {
*/ */
private String activityDetails; private String activityDetails;
private Long cover;
/** /**
* 浏览量 * 浏览量
*/ */

View File

@ -1,15 +1,16 @@
package org.dromara.scale.domain.bo; 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 io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; 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 java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/** /**
* 活动业务对象 m_activity * 活动业务对象 m_activity
@ -40,6 +41,8 @@ public class ActivityBo extends BaseEntity {
@NotBlank(message = "活动详情不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "活动详情不能为空", groups = { AddGroup.class, EditGroup.class })
private String activityDetails; private String activityDetails;
private Long cover;
/** /**
* 浏览量 * 浏览量
*/ */

View File

@ -1,14 +1,13 @@
package org.dromara.scale.domain.vo; 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.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; 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.AutoMapper;
import io.github.linpeilie.annotations.AutoMapping;
import lombok.Data; 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.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -48,6 +47,11 @@ public class ActivityVo implements Serializable {
@ExcelProperty(value = "活动详情") @ExcelProperty(value = "活动详情")
private String activityDetails; private String activityDetails;
private Long cover;
@Translation(type = TransConstant.OSS_ID_TO_URL)
@AutoMapping(target = "cover")
private Long coverUrl;
/** /**
* 浏览量 * 浏览量
*/ */

View File

@ -48,4 +48,6 @@ public interface IReservationOrderService {
*/ */
<T> T insertByBo(ReservationOrderBo bo) throws Exception; <T> T insertByBo(ReservationOrderBo bo) throws Exception;
Boolean processOrder(String orderId);
} }

View File

@ -49,5 +49,8 @@ public interface ISysScaleOrderService {
<T> T insertByBo(SysScaleOrderBo bo) throws Exception; <T> T insertByBo(SysScaleOrderBo bo) throws Exception;
Boolean processOrder(String orderId);
} }

View File

@ -2,6 +2,8 @@ package org.dromara.scale.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -48,8 +50,12 @@ public class MyServiceImpl implements IMyService {
@Override @Override
public TableDataInfo<SysEvaluationRecordVo> queryEvaluationRecordPageList(PageQuery pageQuery) { public TableDataInfo<SysEvaluationRecordVo> queryEvaluationRecordPageList(PageQuery pageQuery) {
//todo Long userId = LoginHelper.getUserId();
return null; LambdaQueryWrapper<SysEvaluationRecord> lqw = Wrappers.lambdaQuery();
lqw.eq(SysEvaluationRecord::getUserId, userId);
lqw.orderByDesc(SysEvaluationRecord::getCreateTime);
Page<SysEvaluationRecordVo> result = evaluationRecordMapper.selectRecordVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
} }
@Override @Override

View File

@ -114,7 +114,7 @@ public class ReservationOrderServiceImpl implements IReservationOrderService {
bo.setId(add.getId()); bo.setId(add.getId());
} }
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
orderRequest.setBody("墨者科技-量表支付"); orderRequest.setBody("墨者科技-预约支付");
orderRequest.setOutTradeNo(add.getId().toString()); orderRequest.setOutTradeNo(add.getId().toString());
int totalFee = price.multiply(new BigDecimal(100)).intValue(); int totalFee = price.multiply(new BigDecimal(100)).intValue();
orderRequest.setTotalFee(totalFee); orderRequest.setTotalFee(totalFee);
@ -123,8 +123,6 @@ public class ReservationOrderServiceImpl implements IReservationOrderService {
return payService.createOrder(orderRequest); return payService.createOrder(orderRequest);
} }
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
@ -132,5 +130,24 @@ public class ReservationOrderServiceImpl implements IReservationOrderService {
//TODO 做一些数据校验,如唯一约束 //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;
}
} }

View File

@ -101,9 +101,11 @@ public class ReservationServiceImpl implements IReservationService {
@Override @Override
public Boolean insertIntervene(SysInterveneRecordBo bo) { public Boolean insertIntervene(SysInterveneRecordBo bo) {
//todo 订单状态校验
ReservationOrder orderUpdate = new ReservationOrder(); ReservationOrder orderUpdate = new ReservationOrder();
orderUpdate.setDiagnose(bo.getDiagnose()); orderUpdate.setDiagnose(bo.getDiagnose());
orderUpdate.setAnnex(bo.getDiagnoseAnnex()); orderUpdate.setAnnex(bo.getDiagnoseAnnex());
orderUpdate.setOrderStatus(2);
orderUpdate.setId(bo.getBatchNo()); orderUpdate.setId(bo.getBatchNo());
boolean orderFlag = reservationOrderMapper.updateById(orderUpdate) > 0; boolean orderFlag = reservationOrderMapper.updateById(orderUpdate) > 0;
ReservationTime timeUpdate = new ReservationTime(); ReservationTime timeUpdate = new ReservationTime();

View File

@ -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.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.scale.constant.StatusEnum; import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysEvaluationRecord;
import org.dromara.scale.domain.SysScale; import org.dromara.scale.domain.SysScale;
import org.dromara.scale.domain.SysScaleOrder; import org.dromara.scale.domain.SysScaleOrder;
import org.dromara.scale.domain.bo.SysScaleOrderBo; import org.dromara.scale.domain.bo.SysScaleOrderBo;
import org.dromara.scale.domain.vo.SysScaleOrderVo; import org.dromara.scale.domain.vo.SysScaleOrderVo;
import org.dromara.scale.mapper.SysEvaluationRecordMapper;
import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.mapper.SysScaleMapper;
import org.dromara.scale.mapper.SysScaleOrderMapper; import org.dromara.scale.mapper.SysScaleOrderMapper;
import org.dromara.scale.service.ISysScaleOrderService; import org.dromara.scale.service.ISysScaleOrderService;
@ -39,6 +41,9 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService {
private final SysScaleMapper sysScaleMapper; private final SysScaleMapper sysScaleMapper;
private final SysEvaluationRecordMapper recordMapper;
/** /**
* 查询量表订单 * 查询量表订单
* *
@ -109,7 +114,7 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService {
bo.setId(add.getId()); bo.setId(add.getId());
} }
WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
orderRequest.setBody("墨者科技-预约支付"); orderRequest.setBody("墨者科技-量表支付");
orderRequest.setOutTradeNo(add.getId().toString()); orderRequest.setOutTradeNo(add.getId().toString());
int totalFee = price.multiply(new BigDecimal(100)).intValue(); int totalFee = price.multiply(new BigDecimal(100)).intValue();
orderRequest.setTotalFee(totalFee); orderRequest.setTotalFee(totalFee);
@ -126,4 +131,28 @@ public class SysScaleOrderServiceImpl implements ISysScaleOrderService {
//TODO 做一些数据校验,如唯一约束 //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;
}
} }