Commit 546515ac by sdif

用户端代码提交

parent 0fc0884b
package com.pz.applet;
import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.R;
import com.pz.common.enums.HospitalLevel;
import com.pz.common.enums.HospitalType;
import com.pz.system.domain.bo.CityBo;
import com.pz.system.domain.vo.CityVo;
import com.pz.system.domain.vo.CommonKeyValuesVo;
import com.pz.system.service.ICityService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 公共接口
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/common")
public class AppletCommonController extends BaseController {
private final ICityService iCityService;
/**
* 医院等级列表
*/
@GetMapping("/hospitalLevelList")
public R<List<CommonKeyValuesVo>> hospitalLevelList() {
List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalLevel.values())
.map(e -> {
CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
commonKeyValuesVo.setCode(e.getCode());
commonKeyValuesVo.setName(e.getName());
return commonKeyValuesVo;
})
.collect(Collectors.toList());
return R.ok(enumList);
}
/**
* 医院类别列表
*/
@GetMapping("/hospitalTypeList")
public R<List<CommonKeyValuesVo>> hospitalTypeList() {
List<CommonKeyValuesVo> enumList = Arrays.stream(HospitalType.values())
.map(e -> {
CommonKeyValuesVo commonKeyValuesVo = new CommonKeyValuesVo();
commonKeyValuesVo.setCode(e.getCode());
commonKeyValuesVo.setName(e.getName());
return commonKeyValuesVo;
})
.collect(Collectors.toList());
return R.ok(enumList);
}
/**
* 城市列表
*/
@GetMapping("/cityVoList")
public R<List<CityVo>> cityVoList(CityBo bo) {
return R.ok(iCityService.queryList(bo));
}
}
......@@ -12,8 +12,11 @@ import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.CreateOrderBo;
import com.pz.system.domain.bo.PaymentRecordBo;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.PaymentRecordVo;
import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.system.service.IPaymentRecordService;
import com.pz.system.service.ITotalOrderService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
......@@ -40,6 +43,8 @@ public class AppletTotalOrderController extends BaseController {
private final ITotalOrderService iTotalOrderService;
private final IPaymentRecordService iPaymentRecordService;
/**
* 查询总订单列表
*/
......@@ -55,8 +60,8 @@ public class AppletTotalOrderController extends BaseController {
*/
@GetMapping("/{id}")
public R<TotalOrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(iTotalOrderService.queryById(id));
@PathVariable Integer id) {
return R.ok(iTotalOrderService.queryByAppId(id));
}
/**
......@@ -87,4 +92,31 @@ public class AppletTotalOrderController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(iTotalOrderService.deleteWithValidByIds(Arrays.asList(ids), true));
}
/**
* 用户主动退款
*/
@RepeatSubmit()
@PostMapping("/refundOrder")
public R<Void> refundOrder(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
return toAjax(iTotalOrderService.refundOrder(recordBo));
}
/**
* 用户评价订单
*/
@RepeatSubmit()
@PostMapping("/appraise")
public R<Void> appraise(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
return toAjax(iTotalOrderService.updateByBo(recordBo));
}
/**
* 用户取消订单
*/
@RepeatSubmit()
@PostMapping("/cancelOrder")
public R<Void> cancelOrder(@Validated(AddGroup.class) @RequestBody TotalOrderBo recordBo) {
return toAjax(iTotalOrderService.cancelOrder(recordBo));
}
}
......@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert;
import com.pz.system.domain.StoreGoodsTag;
import lombok.Data;
import java.util.List;
......@@ -67,7 +68,7 @@ public class TotalOrderVo {
* 订单价格
*/
@ExcelProperty(value = "订单价格")
private String payMoney;
private Double payMoney;
/**
* 订单状态
......@@ -133,11 +134,46 @@ public class TotalOrderVo {
/**
* 标签
*/
private String tags;
private List<StoreGoodsTag> tags;
/**
* 陪护时间
*/
private List<String> chaperonageDate;
/**
* 业务名称
*/
private String business;
/**
* 服务名称
*/
private String service;
/**
* 医院名称
*/
private String hospital;
/**
* 就诊人
*/
private String visitor;
/**
* 科室
*/
private String department;
/**
* 就诊时间
*/
private String visitTime;
/**
* 手机号
*/
private String phone;
}
......@@ -7,6 +7,7 @@ import com.pz.merchant.domain.Company;
import com.pz.merchant.domain.vo.FinanceOrderInfoVo;
import com.pz.system.domain.TotalOrder;
import com.pz.system.domain.vo.AccompanyDemandVo;
import com.pz.system.domain.vo.AppOrderVo;
import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
......@@ -40,4 +41,15 @@ public interface TotalOrderMapper extends BaseMapperPlus<TotalOrderMapper, Total
*/
AccompanyDemandVo selectTotalOrderById(Long id);
/**
* 查询用户端订单
*
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 结果
*/
IPage<TotalOrderVo> selectAppOrder(IPage<TotalOrderVo> page, @Param(Constants.WRAPPER) Wrapper<TotalOrder> queryWrapper);
TotalOrderVo selectByOrderId(@Param("id") Integer id);
}
......@@ -26,6 +26,13 @@ public interface ITotalOrderService {
TotalOrderVo queryById(Long id);
/**
* 查询用户订单详情
* @param id
* @return
*/
TotalOrderVo queryByAppId(Integer id);
/**
* 查询总订单列表
*/
TableDataInfo<TotalOrderVo> queryPageList(TotalOrderBo bo, PageQuery pageQuery);
......@@ -54,6 +61,20 @@ public interface ITotalOrderService {
Boolean updateByBo(TotalOrderBo bo);
/**
* 用户取消订单
* @param bo
* @return
*/
Boolean cancelOrder(TotalOrderBo bo);
/**
* 用户主动退款
* @param bo
* @return
*/
Boolean refundOrder(TotalOrderBo bo);
/**
* 校验并批量删除总订单信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
......
......@@ -2,6 +2,7 @@ package com.pz.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.pz.common.core.domain.model.LoginUser;
......@@ -10,6 +11,10 @@ import com.pz.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pz.common.enums.CommonOrderStatus;
import com.pz.common.enums.DBMYOrderStatus;
import com.pz.common.enums.ShopOrderStatus;
import com.pz.common.enums.TotalOrderStatus;
import com.pz.common.exception.ServiceException;
import com.pz.merchant.domain.vo.SonOrderVo;
import com.pz.merchant.service.ISonOrderService;
......@@ -26,11 +31,7 @@ import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.system.service.ITotalOrderService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.Random;
import java.util.*;
/**
* 总订单Service业务层处理
......@@ -60,12 +61,28 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
private final StoreOrderMapper storeOrderMapper;
private final BusinessMapper businessMapper;
private final UserVsitorMapper userVsitorMapper;
private final ServicesMapper servicesMapper;
private final StoreGoodsTagMapper storeGoodsTagMapper;
private final StoreGoodsMapper storeGoodsMapper;
@Override
public TotalOrderVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 查询总订单
*/
@Override
public TotalOrderVo queryById(Long id) {
return baseMapper.selectVoById(id);
public TotalOrderVo queryByAppId(Integer id) {
TotalOrderVo totalOrderVo = baseMapper.selectByOrderId(id);
return totalOrderVo;
}
/**
......@@ -73,8 +90,79 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
*/
@Override
public TableDataInfo<TotalOrderVo> queryPageList(TotalOrderBo bo, PageQuery pageQuery) {
//TODO 待优化
LambdaQueryWrapper<TotalOrder> lqw = buildQueryWrapper(bo);
Page<TotalOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
IPage<TotalOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
Optional.ofNullable(result.getRecords()).ifPresent(totalOrderVos -> {
totalOrderVos.forEach(totalOrderVo -> {
// 陪诊人员
if(totalOrderVo.getEmId() != 0){
Optional.ofNullable(userVsitorMapper.selectVoById(totalOrderVo.getEmId()).getName())
.ifPresent(totalOrderVo::setEmName);
}
// 业务
Business business = businessMapper.selectById(totalOrderVo.getBusinessId());
totalOrderVo.setName(business.getName());
//服务封面
Services services = servicesMapper.selectById(totalOrderVo.getServiceId());
totalOrderVo.setCover(services.getCover());
if(totalOrderVo.getBusinessId() == 1){//预约陪诊
totalOrderVo.setServiceStatus(
yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 2){//代办挂号
totalOrderVo.setServiceStatus(
dbghOrderMapper.selectOne(new LambdaQueryWrapper<DbghOrder>().eq(DbghOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 3){//代办问诊
totalOrderVo.setServiceStatus(
dbwzOrderMapper.selectOne(new LambdaQueryWrapper<DbwzOrder>().eq(DbwzOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 4){//住院陪护
totalOrderVo.setServiceStatus(
zyphOrderMapper.selectOne(new LambdaQueryWrapper<ZyphOrder>().eq(ZyphOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 5){//代办买药
totalOrderVo.setServiceStatus(
dbmyOrderMapper.selectOne(new LambdaQueryWrapper<DbmyOrder>().eq(DbmyOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 6){//诊前挂号
totalOrderVo.setServiceStatus(
zqghOrderMapper.selectOne(new LambdaQueryWrapper<ZqghOrder>().eq(ZqghOrder::getOrderId, totalOrderVo.getId())).getStatus()
);
}else if(totalOrderVo.getBusinessId() == 0){//商城订单
StoreOrder storeOrder = storeOrderMapper.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, totalOrderVo.getId()));
totalOrderVo.setServiceStatus(
storeOrder.getStatus()
);
StoreGoods storeGoods = storeGoodsMapper.selectById(storeOrder.getOrderId());
List<StoreGoodsTag> storeGoodsTags = storeGoodsTagMapper.selectList(new LambdaQueryWrapper<StoreGoodsTag>().in(StoreGoodsTag::getId, getTages(storeGoods.getTags())).select(StoreGoodsTag::getTitle));
totalOrderVo.setTags(storeGoodsTags);
}
});
});
return TableDataInfo.build(result);
}
......@@ -123,15 +211,20 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
@Override
public TotalOrderVo createOrder(CreateOrderBo bo) {
LoginUser loginUser = LoginHelper.getLoginUser();
TotalOrderVo totalOrderVo = new TotalOrderVo();
String orderSn = getOrderSn();
bo.setStatus(0);
//组装总订单数据新增
TotalOrder totalOrder = BeanUtil.toBean(bo, TotalOrder.class);
totalOrder.setOrderSn(getOrderSn());
totalOrder.setOrderSn(orderSn);
totalOrder.setUid(loginUser.getUserId().intValue());
baseMapper.insert(totalOrder);
bo.setOrderId(totalOrder.getId().intValue());
totalOrderVo.setOrderSn(orderSn);
totalOrderVo.setPayMoney(bo.getPayMoney());
if(bo.getBusinessId() == 1){//预约陪诊
YypzOrder yypzOrder = BeanUtil.toBean(bo, YypzOrder.class);
......@@ -168,7 +261,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
storeOrderMapper.insert(storeOrder);
}
return null;
return totalOrderVo;
}
/**
......@@ -181,6 +274,119 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean cancelOrder(TotalOrderBo bo) {
TotalOrder totalOrder = baseMapper.selectById(bo.getId());
if(totalOrder.getBusinessId() == 1){//预约陪诊
yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
throw new ServiceException("该订单已分配给陪诊员,不允许取消订单!");
}
return baseMapper.updateById(totalOrder) > 0;
}
@Override
public Boolean refundOrder(TotalOrderBo bo) {
TotalOrder totalOrder = baseMapper.selectById(bo.getId());
totalOrder.setRefundAmount(totalOrder.getPayMoney());
totalOrder.setRefundReason(bo.getRefundReason());
if(totalOrder.getBusinessId() == 1){//预约陪诊
YypzOrder yypzOrder = yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId, totalOrder.getId()));
if(yypzOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 2){//代办挂号
DbghOrder dbghOrder = dbghOrderMapper.selectOne(new LambdaQueryWrapper<DbghOrder>().eq(DbghOrder::getOrderId, totalOrder.getId()));
if(dbghOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 3){//代办问诊
DbwzOrder dbwzOrder = dbwzOrderMapper.selectOne(new LambdaQueryWrapper<DbwzOrder>().eq(DbwzOrder::getOrderId, totalOrder.getId()));
if(dbwzOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 4){//住院陪护
ZyphOrder zyphOrder = zyphOrderMapper.selectOne(new LambdaQueryWrapper<ZyphOrder>().eq(ZyphOrder::getOrderId, totalOrder.getId()));
if(zyphOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 5){//代办买药
DbmyOrder dbmyOrder = dbmyOrderMapper.selectOne(new LambdaQueryWrapper<DbmyOrder>().eq(DbmyOrder::getOrderId, totalOrder.getId()));
if(dbmyOrder.getStatus().equals(DBMYOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 6){//诊前挂号
ZqghOrder zqghOrder = zqghOrderMapper.selectOne(new LambdaQueryWrapper<ZqghOrder>().eq(ZqghOrder::getOrderId, totalOrder.getId()));
if(zqghOrder.getStatus().equals(CommonOrderStatus.TAKE_ORDER.getCode())){
throw new ServiceException("陪诊员已接单,不允许退款!");
}
}else if(totalOrder.getBusinessId() == 0){//商城订单
StoreOrder storeOrder = storeOrderMapper.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, totalOrder.getId()));
if(storeOrder.getStatus().equals(ShopOrderStatus.DELIVER.getCode())){
throw new ServiceException("商品已发货,不允许退款!");
}
}
//修改主订单退款理由
baseMapper.updateById(totalOrder);
if(totalOrder.getBusinessId() == 1){//预约陪诊
yypzOrderMapper.update(null,new LambdaUpdateWrapper<YypzOrder>()
.eq(YypzOrder::getOrderId,totalOrder.getId())
.set(YypzOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 2){//代办挂号
dbghOrderMapper.update(null,new LambdaUpdateWrapper<DbghOrder>()
.eq(DbghOrder::getOrderId,totalOrder.getId())
.set(DbghOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 3){//代办问诊
dbwzOrderMapper.update(null,new LambdaUpdateWrapper<DbwzOrder>()
.eq(DbwzOrder::getOrderId,totalOrder.getId())
.set(DbwzOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 4){//住院陪护
zyphOrderMapper.update(null,new LambdaUpdateWrapper<ZyphOrder>()
.eq(ZyphOrder::getOrderId,totalOrder.getId())
.set(ZyphOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 5){//代办买药
dbmyOrderMapper.update(null,new LambdaUpdateWrapper<DbmyOrder>()
.eq(DbmyOrder::getOrderId,totalOrder.getId())
.set(DbmyOrder::getStatus,DBMYOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 6){//诊前挂号
zqghOrderMapper.update(null,new LambdaUpdateWrapper<ZqghOrder>()
.eq(ZqghOrder::getOrderId,totalOrder.getId())
.set(ZqghOrder::getStatus,CommonOrderStatus.BEING_REFUND.getCode()));
}else if(totalOrder.getBusinessId() == 0){//商城订单
storeOrderMapper.update(null,new LambdaUpdateWrapper<StoreOrder>()
.eq(StoreOrder::getOrderId,totalOrder.getId())
.set(StoreOrder::getStatus,ShopOrderStatus.BEING_REFUND.getCode()));
}
return true;
}
/**
* 保存前的数据校验
*/
......@@ -287,4 +493,20 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
String randomStr = String.format("%08d", randomNum); // 将随机数转换为指定长度的字符串
return timestampStr + randomStr;
}
public List<Integer> getTages(String tags){
// 去除空格和方括号
String numbersString = tags.replaceAll("[\\[\\] ]", "");
// 分割字符串
String[] numberStrings = numbersString.split(",");
// 转换为整数列表
List<Integer> numberList = new ArrayList<>();
for (String numberString : numberStrings) {
int number = Integer.parseInt(numberString);
numberList.add(number);
}
return numberList;
}
}
......@@ -28,4 +28,41 @@
<include refid="OrderCommon"/>
where total_order.id = #{id}
</select>
<select id="selectAppOrder" resultType="com.pz.system.domain.vo.TotalOrderVo">
</select>
<select id="selectByOrderId" resultType="com.pz.system.domain.vo.TotalOrderVo">
select
t.id,
t.order_sn,
t.uid,
t.em_id,
t.city_id,
t.business_id,
t.service_id,
t.pay_money,
t.status,
t.lng,
t.lat,
t.is_satisfaction,
t.evaluation_content,
t.refund_reason,
t.refund_amount,
t.pay_cs,
t.del_flag,
t.create_by,
t.create_time,
t.update_by,
t.update_time,
t.remark,
b.name as business,
s.name as service
from total_order t
left join business b on b.id = t.business_id
left join services s on s.id = t.service_id
left join employees e on e.id = t.em_id
where t.id = #{id}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment