Commit 1a06bd22 by sdif

用户端代码提交

parent ab48f67c
......@@ -3,6 +3,7 @@ package com.pz.web.controller.system;
import java.util.List;
import java.util.Arrays;
import com.pz.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
......
......@@ -304,3 +304,8 @@ file:
#注意:响应路径必须加上file后缀
response-path: https://www.pz.com/file
--- #快宝设置 https://open.kuaidihelp.com
kb:
appId: 113444
appKey: d70e699e554e3193284f1cf97a1184454870c6b5
......@@ -10,6 +10,7 @@ import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.validate.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.helper.LoginHelper;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.StoreApplyBo;
import com.pz.system.domain.vo.StoreApplyVo;
......@@ -43,7 +44,9 @@ public class AppletStoreApplyController extends BaseController {
*/
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody StoreApplyBo bo) {
public R<Void> add(@Validated(AddGroup.class) @RequestBody StoreApplyBo bo)
{
bo.setUid(LoginHelper.getLoginUser().getUserId().intValue());
return toAjax(iStoreApplyService.insertByBo(bo));
}
......
......@@ -77,6 +77,16 @@ public class AppletTotalOrderController extends BaseController {
return R.ok(iTotalOrderService.queryByAppId(id));
}
/**
* 查询物流信息
*
*/
@GetMapping("/selectLogisticsStatus")
public R<Object> selectLogisticsStatus(TotalOrderBo totalOrderBo) {
return R.ok(iTotalOrderService.selectLogisticsStatus(totalOrderBo));
}
/**
* 新增总订单
*/
......
......@@ -47,4 +47,5 @@ public class AppletZqghOrderController extends BaseController {
return R.ok(iZqghOrderService.queryAppList(bo));
}
}
package com.pz.common.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* 快宝物流参数
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "kb")
public class KbProperties {
/**
* 快宝appid
*/
private String appId;
/**
* 快宝appKey
*/
private String appKey;
}
package com.pz.common.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class HttpUtils {
/**
* get
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doGet(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpGet request = new HttpGet(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
/**
* post form
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param bodys
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
Map<String, String> bodys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (bodys != null) {
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
for (String key : bodys.keySet()) {
nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
request.setEntity(formEntity);
}
return httpClient.execute(request);
}
/**
* Post String
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Post stream
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Put String
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Put stream
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Delete
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doDelete(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
StringBuilder sbUrl = new StringBuilder();
sbUrl.append(host);
if (!StringUtils.isBlank(path)) {
sbUrl.append(path);
}
if (null != querys) {
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet()) {
if (0 < sbQuery.length()) {
sbQuery.append("&");
}
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
sbQuery.append(query.getValue());
}
if (!StringUtils.isBlank(query.getKey())) {
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue())) {
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
}
}
}
if (0 < sbQuery.length()) {
sbUrl.append("?").append(sbQuery);
}
}
return sbUrl.toString();
}
private static HttpClient wrapClient(String host) {
HttpClient httpClient = new DefaultHttpClient();
if (host.startsWith("https://")) {
sslClient(httpClient);
}
return httpClient;
}
private static void sslClient(HttpClient httpClient) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] xcs, String str) {
}
public void checkServerTrusted(X509Certificate[] xcs, String str) {
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry registry = ccm.getSchemeRegistry();
registry.register(new Scheme("https", 443, ssf));
} catch (KeyManagementException ex) {
throw new RuntimeException(ex);
} catch (NoSuchAlgorithmException ex) {
throw new RuntimeException(ex);
}
}
}
......@@ -4,6 +4,7 @@ import com.pz.system.domain.TotalOrder;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.mapper.TotalOrderMapper;
import com.pz.system.service.ITotalOrderService;
import com.pz.system.service.IZqghOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
......@@ -14,8 +15,8 @@ import java.util.concurrent.DelayQueue;
public class OrderDelayQueue {
private DelayQueue<TotalOrder> delayQueue = new DelayQueue<>();
/*@Autowired
private TotalOrderMapper iTotalOrderService;*/
@Autowired
private IZqghOrderService iZqghOrderService;
// 添加订单到延时队列
public void addOrder(TotalOrder order) {
......@@ -44,6 +45,6 @@ public class OrderDelayQueue {
totalOrderBo.setId(order.getId());
// 执行取消订单的相关操作
//iTotalOrderService.cancelOrder(totalOrderBo);
iZqghOrderService.cancelOrder(totalOrderBo);
}
}
......@@ -90,4 +90,11 @@ public class TotalOrderBo extends BaseEntity {
private String orderTitle;
private String openid;
/**
* 流水单号
*/
private String logisticsCode;
private String phone;
}
......@@ -119,6 +119,7 @@ public class StoreApplyVo extends BaseEntity {
@ExcelProperty(value = "")
private Integer status;
private String remark;
/**
* 商品
*/
......
......@@ -108,6 +108,10 @@ public class StoreGoodsVo extends BaseEntity {
@ExcelProperty(value = "")
private Integer saleNum;
private Integer num;
private Integer addressId;
private List<Carousel> carousel;
private List<Integer> ids;
......@@ -115,4 +119,9 @@ public class StoreGoodsVo extends BaseEntity {
private List<StoreGoodsTagVo> list;
private String typeName;
/**
* 流水单号
*/
private String logisticsCode;
}
......@@ -170,7 +170,7 @@ public class TotalOrderVo {
/**
* 就诊时间
*/
private String visitTime;
private Date visitTime;
/**
* 手机号
......@@ -261,7 +261,7 @@ public class TotalOrderVo {
/**
* 取药方式:0-邮寄到家,1-送货上门
*/
private String way;
private Integer way;
/**
* 收件人
......@@ -271,7 +271,7 @@ public class TotalOrderVo {
/**
* 收货地址
*/
private String adress;
private String address;
/**
* 详细地址
......@@ -287,4 +287,24 @@ public class TotalOrderVo {
* 预约时间
*/
private String timeOfAppointment;
/**
* 上次就医情况
*/
private String lastMedicalTreatmentSituation;
/**
* 商品实体
*/
private StoreGoodsVo storeGoodsVo;
/**
* 发货实体
*/
private UserAddressVo userAddressVo;
/**
* 发货状态
*/
private Object object;
}
......@@ -139,4 +139,11 @@ public interface ITotalOrderService {
*/
AccompanyDemandVo queryTotalOrderById(Long id);
/**
* 查询物流状态
* @return
*/
Object selectLogisticsStatus(TotalOrderBo totalOrderBo);
}
package com.pz.system.service;
import com.pz.common.enums.TotalOrderStatus;
import com.pz.common.exception.ServiceException;
import com.pz.system.domain.TotalOrder;
import com.pz.system.domain.ZqghOrder;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.ZqghOrderVo;
import com.pz.system.domain.bo.ZqghOrderBo;
import com.pz.common.core.page.TableDataInfo;
......@@ -51,6 +55,13 @@ public interface IZqghOrderService {
Boolean updateByBo(ZqghOrderBo bo);
/**
* 取消订单
* @param bo
* @return
*/
Boolean cancelOrder(TotalOrderBo bo);
/**
* 校验并批量删除诊前挂号订单信息
*/
Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid);
......
......@@ -5,9 +5,12 @@ 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.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.pz.common.config.KbProperties;
import com.pz.common.core.domain.model.LoginUser;
import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.domain.PageQuery;
......@@ -18,6 +21,7 @@ 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.common.utils.HttpUtils;
import com.pz.merchant.domain.vo.SonOrderVo;
import com.pz.merchant.mapper.EmployeesMapper;
import com.pz.merchant.service.ISonOrderService;
......@@ -27,15 +31,24 @@ import com.pz.system.datastructure.OrderDelayQueue;
import com.pz.system.domain.*;
import com.pz.system.domain.bo.CreateOrderBo;
import com.pz.system.domain.vo.AccompanyDemandVo;
import com.pz.system.domain.vo.StoreGoodsVo;
import com.pz.system.domain.vo.UserAddressVo;
import com.pz.system.mapper.*;
import com.pz.system.service.IPayService;
import lombok.RequiredArgsConstructor;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.domain.vo.TotalOrderVo;
import com.pz.system.service.ITotalOrderService;
import org.springframework.transaction.annotation.Transactional;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.HashMap;
import java.util.Date;
import java.math.BigDecimal;
import java.util.*;
......@@ -94,6 +107,10 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
private final OrderDelayQueue delayQueue;
private final KbProperties kbProperties;
private final UserAddressMapper userAddressMapper;
@Override
public TotalOrderVo queryById(Long id) {
return baseMapper.selectVoById(id);
......@@ -112,11 +129,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setServiceStatus(
yypzOrder.getStatus()
);
//totalOrderVo = BeanUtil.toBean(yypzOrder, TotalOrderVo.class);
totalOrderVo.setHospital(hospitalMapper.selectById(yypzOrder.getHid()).getName());
totalOrderVo.setVisitor(userVsitorMapper.selectById(yypzOrder.getVisitor()).getName());
totalOrderVo.setDepartment(departmentMapper.selectById(yypzOrder.getDid()).getTitle());
totalOrderVo.setPhone(yypzOrder.getPhone());
totalOrderVo = BeanUtil.toBean(yypzOrder, TotalOrderVo.class);
totalOrderVo.setVisitTime(yypzOrder.getVisitTime());
totalOrderVo.setOverTime(yypzOrder.getOverTime());
totalOrderVo.setVoucher(yypzOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 2) {// 代办挂号
......@@ -125,9 +145,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setServiceStatus(
dbghOrder.getStatus()
);
//totalOrderVo = BeanUtil.toBean(dbghOrder, TotalOrderVo.class);
totalOrderVo.setHospital(hospitalMapper.selectById(dbghOrder.getHid()).getName());
totalOrderVo.setDepartment(departmentMapper.selectById(dbghOrder.getDid()).getTitle());
totalOrderVo = BeanUtil.toBean(dbghOrder, TotalOrderVo.class);
totalOrderVo.setVisitor(userVsitorMapper.selectById(dbghOrder.getVisitor()).getName());
totalOrderVo.setVisitTime(dbghOrder.getVisitTime());
totalOrderVo.setOverTime(dbghOrder.getOverTime());
totalOrderVo.setVoucher(dbghOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 3) {// 代办问诊
......@@ -136,9 +161,20 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setServiceStatus(
dbwzOrder.getStatus()
);
//totalOrderVo = BeanUtil.toBean(dbwzOrder, TotalOrderVo.class);
totalOrderVo.setDepartment(departmentMapper.selectById(dbwzOrder.getDid()).getTitle());
totalOrderVo.setVisitor(userVsitorMapper.selectById(dbwzOrder.getVisitor()).getName());
totalOrderVo = BeanUtil.toBean(dbwzOrder, TotalOrderVo.class);
totalOrderVo.setVisitTime(dbwzOrder.getVisitTime());
totalOrderVo.setChiefComplaint(dbwzOrder.getChiefComplaint());
totalOrderVo.setHistoryOfPresentIllness(dbwzOrder.getHistoryOfPresentIllness());
totalOrderVo.setPastHistory(dbwzOrder.getPastHistory());
totalOrderVo.setLastMedicalTreatmentSituation(dbwzOrder.getLastMedicalTreatmentSituation());
totalOrderVo.setPostTreatmentCondition(dbwzOrder.getPostTreatmentCondition());
totalOrderVo.setRelatedReports(dbwzOrder.getRelatedReports());
totalOrderVo.setServiceRequirements(dbwzOrder.getServiceRequirements());
totalOrderVo.setOverTime(dbwzOrder.getOverTime());
totalOrderVo.setVoucher(dbwzOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 4) {// 住院陪护
......@@ -146,12 +182,14 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setServiceStatus(
zyphOrder.getStatus()
);
//totalOrderVo = BeanUtil.toBean(zyphOrder, TotalOrderVo.class);
totalOrderVo.setHospital(hospitalMapper.selectById(zyphOrder.getHid()).getName());
totalOrderVo.setVisitor(userVsitorMapper.selectById(zyphOrder.getVisitor()).getName());
totalOrderVo.setDepartment(departmentMapper.selectById(zyphOrder.getDid()).getTitle());
totalOrderVo.setPhrq(zyphOrder.getStartDay()+"-"+zyphOrder.getEndDay());
totalOrderVo.setPhsj(zyphOrder.getStartTime()+"-"+zyphOrder.getEndTime());
totalOrderVo = BeanUtil.toBean(zyphOrder, TotalOrderVo.class);
totalOrderVo.setOverTime(zyphOrder.getOverTime());
totalOrderVo.setVoucher(zyphOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 5) {// 代办买药
......@@ -159,6 +197,18 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setServiceStatus(
dbmyOrder.getStatus()
);
totalOrderVo.setYpName(dbmyOrder.getYpName());
totalOrderVo.setYdAddress(dbmyOrder.getYdAddress());
totalOrderVo.setIsCf(dbmyOrder.getIsCf());
totalOrderVo.setPrescriptionAttachment(dbmyOrder.getPrescriptionAttachment());
totalOrderVo.setWay(dbmyOrder.getWay());
totalOrderVo.setRecipient(dbmyOrder.getRecipient());
totalOrderVo.setAddress(dbmyOrder.getAddress());
totalOrderVo.setAddressInfo(dbmyOrder.getAddressInfo());
totalOrderVo.setPhone(dbmyOrder.getPhone());
totalOrderVo.setIsRefrigerate(dbmyOrder.getIsRefrigerate());
totalOrderVo.setOverTime(dbmyOrder.getOverTime());
totalOrderVo.setVoucher(dbmyOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 6) {// 诊前挂号
......@@ -171,6 +221,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setDepartment(departmentMapper.selectById(zqghOrder.getDid()).getTitle());
totalOrderVo.setHospital(hospitalMapper.selectById(zqghOrder.getHid()).getName());
totalOrderVo.setTimeOfAppointment(zqghOrder.getTimeOfAppointment());
totalOrderVo.setOverTime(zqghOrder.getOverTime());
totalOrderVo.setVoucher(zqghOrder.getVoucher());
} else if (totalOrderVo.getBusinessId() == 0) {// 商城订单
......@@ -179,10 +231,16 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
storeOrder.getStatus()
);
StoreGoods storeGoods = storeGoodsMapper.selectById(storeOrder.getOrderId());
StoreGoodsVo storeGoods = storeGoodsMapper.selectVoById(storeOrder.getOrderId());
List<StoreGoodsTag> storeGoodsTags = storeGoodsTagMapper.selectList(new LambdaQueryWrapper<StoreGoodsTag>().in(StoreGoodsTag::getId, getTages(storeGoods.getTags())).select(StoreGoodsTag::getTitle));
totalOrderVo.setTags(storeGoodsTags);
totalOrderVo.setStoreGoodsVo(storeGoods);
UserAddressVo userAddressVo = userAddressMapper.selectVoById(storeGoods.getAddressId());
totalOrderVo.setUserAddressVo(userAddressVo);
TotalOrderBo totalOrderBo = new TotalOrderBo();
totalOrderBo.setId(totalOrderVo.getId());
totalOrderBo.setPhone(userAddressVo.getPhone());
totalOrderVo.setObject(selectLogisticsStatus(totalOrderBo));
}
return totalOrderVo;
}
......@@ -263,6 +321,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
List<StoreGoodsTag> storeGoodsTags = storeGoodsTagMapper.selectList(new LambdaQueryWrapper<StoreGoodsTag>().in(StoreGoodsTag::getId, getTages(storeGoods.getTags())).select(StoreGoodsTag::getTitle));
totalOrderVo.setTags(storeGoodsTags);
totalOrderVo.setName(storeGoods.getTitle());
}
});
......@@ -330,8 +389,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVo.setOrderSn(totalOrder.getId() + "");
totalOrderVo.setPayMoney(bo.getPayMoney());
// 计算订单过期时间(当前时间加上24小时
long expirationTime = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(24);
// 计算订单过期时间(当前时间加上30分钟
long expirationTime = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(24);
totalOrder.setExpirationTime(expirationTime);
// 未付款的订单延迟24小时自动取消
delayQueue.addOrder(totalOrder);
......@@ -343,6 +402,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
YypzOrder yypzOrder = BeanUtil.toBean(bo, YypzOrder.class);
yypzOrder.setHid(bo.getHospitalId());
yypzOrder.setDid(bo.getDepartmentId());
yypzOrder.setVisitor(bo.getVisitorId());
yypzOrderMapper.insert(yypzOrder);
} else if (bo.getBusinessId() == 2) {// 代办挂号
......@@ -406,8 +466,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
@Override
public Boolean cancelOrder(TotalOrderBo bo) {
TotalOrder totalOrder = baseMapper.selectById(bo.getId());
if (null != totalOrder.getEmId() && totalOrder.getEmId() != 0) {// 预约陪诊
// yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
if(totalOrder.getEmId() == 0){//预约陪诊
//yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
totalOrder.setStatus(TotalOrderStatus.CANCEL.getCode());
return baseMapper.updateById(totalOrder) > 0;
} else {
......@@ -732,6 +792,69 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
return order;
}
@Override
public Object selectLogisticsStatus(TotalOrderBo totalOrderBo) {
String host = "http://kop.kuaidihelp.com";
String path = "/api";
String requestMethod = "POST";
Map<String, String> headers = new HashMap<String, String>();
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
Map<String, String> bodys = new HashMap<String, String>();
String appId = kbProperties.getAppId();
String method = "express.info.get";
// 当前时间戳
String ts = new Date().getTime() + "";
String appKey = kbProperties.getAppKey();
// 计算签名
String signStr = appId + method + ts + appKey;
String sign = getMD5(signStr, 32);
bodys.put("app_id", appId);
bodys.put("method", method);
bodys.put("ts", ts);
bodys.put("sign", sign);
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> data = new HashMap<String, String>();
data.put("waybill_codes",totalOrderBo.getLogisticsCode());
data.put("result_sort","0");
if(null != totalOrderBo.getPhone() && !totalOrderBo.getPhone().equals("")){
data.put("phone","1");
}
String jsonStr = null;
try {
jsonStr = objectMapper.writeValueAsString(data);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
// data参数是个json格式的字符串 建议使用函数或方法去生成
bodys.put("data", jsonStr);
try {
/**
* 重要提示如下:
* HttpUtils请从
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
* 下载
*
* 相应的依赖请参照
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, requestMethod, headers, querys, bodys);
System.out.println(response.toString());
return EntityUtils.toString(response.getEntity());
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException();
}
}
public String getOrderSn() {
long timestamp = System.currentTimeMillis();
String timestampStr = Long.toString(timestamp);
......@@ -756,4 +879,34 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
}
return numberList;
}
// 计算md5
public static String getMD5(String plainText, int length) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例
md.update(plainText.getBytes());//此处传入要加密的byte类型值
byte[] digest = md.digest();//此处得到的是md5加密后的byte类型值
/*
下边的运算就是自己添加的一些二次小加密,记住这个千万不能弄错乱,
否则在解密的时候,你会发现值不对的(举例:在注册的时候加密方式是一种,
在我们登录的时候是不是还需要加密它的密码然后和数据库的进行比对,但是
最后我们发现,明明密码对啊,就是打不到预期效果,这时候你就要想一下,你是否
有改动前后的加密方式)
*/
int i;
StringBuilder sb = new StringBuilder();
for (int offset = 0; offset < digest.length; offset++) {
i = digest[offset];
if (i < 0)
i += 256;
if (i < 16)
sb.append(0);
sb.append(Integer.toHexString(i));//通过Integer.toHexString方法把值变为16进制
}
return sb.toString().substring(0, length);//从下标0开始,length目的是截取多少长度的值
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
......@@ -7,9 +7,14 @@ 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.TotalOrderStatus;
import com.pz.common.exception.ServiceException;
import com.pz.merchant.domain.vo.SonOrderVo;
import com.pz.merchant.service.ISonOrderService;
import com.pz.system.domain.DbwzOrder;
import com.pz.system.domain.TotalOrder;
import com.pz.system.domain.bo.TotalOrderBo;
import com.pz.system.mapper.TotalOrderMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.pz.system.domain.bo.ZqghOrderBo;
......@@ -33,6 +38,8 @@ public class ZqghOrderServiceImpl implements IZqghOrderService, ISonOrderService
private final ZqghOrderMapper baseMapper;
private final TotalOrderMapper totalOrderMapper;
/**
* 查询诊前挂号订单
*/
......@@ -132,6 +139,18 @@ public class ZqghOrderServiceImpl implements IZqghOrderService, ISonOrderService
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean cancelOrder(TotalOrderBo bo) {
TotalOrder totalOrder = totalOrderMapper.selectById(bo.getId());
if(totalOrder.getEmId() == 0){//预约陪诊
//yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
totalOrder.setStatus(TotalOrderStatus.CANCEL.getCode());
return totalOrderMapper.updateById(totalOrder) > 0;
}else {
throw new ServiceException("该订单已分配给陪诊员,不允许取消订单!");
}
}
/**
* 保存前的数据校验
*/
......
......@@ -64,7 +64,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectEmployees" resultType="com.pz.merchant.domain.vo.EmployeesVo">
SELECT e.id, s.avatar as avatar,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
SELECT e.id,
s.avatar as avatar,
e.name,
e.start_year,
e.working_hours,
(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
FROM employees e
left join total_order o on o.em_id = e.id
left join company c on c.id = e.company_id
......
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