Commit c9c60799 by 张新旗

代码提交

parent 87485666
......@@ -21,6 +21,7 @@ public class RuoYiApplication
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
RestTemplate restTemplate = new RestTemplate();
return restTemplate;
}
}
......@@ -2,6 +2,8 @@ package com.ruoyi.web.controller.coffee;
import com.alibaba.fastjson.JSONObject;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.wxpay.sdk.WXPayUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
......@@ -89,9 +91,7 @@ public class WeixinController {
*/
@RequestMapping(method = RequestMethod.POST, value = "/refundNotify")
public String refundNotify(@RequestBody String xmlData) {
// 实现自己的逻辑
//
// 必须要返回 SUCCESS 不过有 WxPayNotifyResponse 给整合成了 xml了
return WxPayNotifyResponse.success("成功");
return weixinService.refundNotify(xmlData);
}
}
......@@ -158,4 +158,4 @@ push:
appkey: 123
secret: 123
machine:
url: http://47.94.247.71:10003
url: http://47.94.241.71:10003
......@@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage","/weixin/**","/application/**").anonymous()
.antMatchers("/login", "/register", "/captchaImage","/weixin/**","/application/**","/v1/**","/tool/**").anonymous()
.antMatchers(
HttpMethod.GET,
"/",
......
......@@ -3,6 +3,8 @@ package com.ruoyi.framework.web.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
......@@ -25,9 +27,12 @@ import com.ruoyi.common.utils.sign.Base64;
import com.ruoyi.framework.web.domain.server.Sys;
import com.ruoyi.system.domain.Customer;
import com.ruoyi.system.domain.Order;
import com.ruoyi.system.domain.OrderOperationLog;
import com.ruoyi.system.mapper.CustomerMapper;
import com.ruoyi.system.mapper.OrderMapper;
import com.ruoyi.system.service.impl.MachineApiServiceImpl;
import com.ruoyi.system.service.impl.OrderOperationLogServiceImpl;
import com.ruoyi.system.weixin.entity.OrderInfo;
import com.ruoyi.system.weixin.entity.OrderReturnInfo;
import com.ruoyi.system.weixin.entity.QueryReturnInfo;
......@@ -92,6 +97,10 @@ public class WeixinServiceImpl {
private TokenService tokenService;
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderOperationLogServiceImpl orderOperationLogService;
@Autowired
private MachineApiServiceImpl machineApiService;
private final ReentrantLock lock = new ReentrantLock();
......@@ -413,6 +422,15 @@ public class WeixinServiceImpl {
jsonObject.put("userId",order.getUserId());
order1.setPickCode(QRCodeUtil.getBase64QRCode(jsonObject.toJSONString()));
orderMapper.updateOrder(order1);
OrderOperationLog orderOperationLog = new OrderOperationLog();
orderOperationLog.setOrderId(String.valueOf(order.getId()));
orderOperationLog.setOperation("付款");
orderOperationLog.setOperationUser(order.getUserName());
orderOperationLog.setCreateAt(new Date());
orderOperationLog.setContent("付款成功");
orderOperationLog.setStatus("付款");
orderOperationLogService.insertOrderOperationLog(orderOperationLog);
machineApiService.updateOrder(order1);
}
......@@ -456,4 +474,30 @@ public class WeixinServiceImpl {
}
}
}
public String refundNotify(String xmlData) {
WxPayRefundNotifyResult wxPayRefundNotifyResult;
try {
wxPayRefundNotifyResult = wxPayService.parseRefundNotifyResult(xmlData);
} catch (WxPayException e) {
log.error("退款失败,失败信息:{}", e);
return WxPayNotifyResponse.fail("退款失败");
}
//判断你返回状态信息是否正确
if ("SUCCESS".equals(wxPayRefundNotifyResult.getReturnCode())) {
WxPayRefundNotifyResult.ReqInfo reqInfo = wxPayRefundNotifyResult.getReqInfo();
reqInfo.getOutRefundNo();
//判断退款状态
// if (REFUND_SUCCESS.equals(reqInfo.getRefundStatus())) {
// //内部订单号
// String outTradeNo = reqInfo.getOutTradeNo();
// /**
// * 一、可能会重复回调,需要做防重判断
// * 二、处理我们系统内部业务,做修改订单状态,释放资源等!
// */
// return WxPayNotifyResponse.success("退款成功!");
// }
}
return WxPayNotifyResponse.fail("回调有误!");
}
}
......@@ -22,7 +22,7 @@ public class Order implements Serializable
private static final long serialVersionUID = 1L;
/** 主键 */
private String id;
private long id;
/** 订单号 */
@Excel(name = "订单号")
......@@ -78,7 +78,6 @@ public class Order implements Serializable
@Excel(name = "点单屏序号")
private String source;
/** 订单状态 0 创建未校验 1 未支付 2 已支付 3 支付制作中 4 制作完成未取 5 待取超时 6 正常完成 7 未支付取消 8 支付后制作前取消 9 制作中取消 10 制作完成取消 11 已退款 12 部分退款 50 其他人工干预状态 */
@Excel(name = "订单状态 0 未支付取消 1 未支付 2 已支付 3 待制作 4 支付制作中 5 制作完成未取 6 取餐中 7 取餐完成 8 支付后制作前取消 9 制作中取消 10 制作完成取消 11 已退款 12 部分退款 50 其他人工干预状态")
private String state;
......@@ -112,15 +111,14 @@ public class Order implements Serializable
this.orderDetails = orderDetails;
}
public void setId(String id)
{
this.id = id;
public long getId() {
return id;
}
public String getId()
{
return id;
public void setId(long id) {
this.id = id;
}
public void setOrderNo(String orderNo)
{
this.orderNo = orderNo;
......
......@@ -24,7 +24,7 @@ public class OrderDetail implements Serializable
/** 订单ID */
@Excel(name = "订单ID")
private String orderId;
private long orderId;
/** 商品ID */
@Excel(name = "商品ID")
......@@ -77,7 +77,7 @@ public class OrderDetail implements Serializable
private Goods goods;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd ")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createdAt;
......@@ -95,12 +95,12 @@ public class OrderDetail implements Serializable
{
return id;
}
public void setOrderId(String orderId)
public void setOrderId(long orderId)
{
this.orderId = orderId;
}
public String getOrderId()
public long getOrderId()
{
return orderId;
}
......
package com.ruoyi.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 【请填写功能名称】对象 order_operation_log
*
* @author ruoyi
* @date 2022-05-17
*/
public class OrderOperationLog extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private String id;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String status;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String operation;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date createAt;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String operationUser;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String content;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderId;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setOperation(String operation)
{
this.operation = operation;
}
public String getOperation()
{
return operation;
}
public void setCreateAt(Date createAt)
{
this.createAt = createAt;
}
public Date getCreateAt()
{
return createAt;
}
public void setOperationUser(String operationUser)
{
this.operationUser = operationUser;
}
public String getOperationUser()
{
return operationUser;
}
public void setContent(String content)
{
this.content = content;
}
public String getContent()
{
return content;
}
public void setOrderId(String orderId)
{
this.orderId = orderId;
}
public String getOrderId()
{
return orderId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("status", getStatus())
.append("operation", getOperation())
.append("createAt", getCreateAt())
.append("operationUser", getOperationUser())
.append("content", getContent())
.append("orderId", getOrderId())
.toString();
}
}
......@@ -66,11 +66,11 @@ public class SkuVo implements Serializable {
this.rulesString = rulesString;
}
public String getDisCount() {
public String getDiscount() {
return discount;
}
public void setDisCount(String discount) {
public void setDiscount(String discount) {
this.discount = discount;
}
......
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.OrderOperationLog;
/**
* 【请填写功能名称】Mapper接口
*
* @author ruoyi
* @date 2022-05-17
*/
public interface OrderOperationLogMapper
{
/**
* 查询【请填写功能名称】
*
* @param id 【请填写功能名称】主键
* @return 【请填写功能名称】
*/
public OrderOperationLog selectOrderOperationLogById(String id);
/**
* 查询【请填写功能名称】列表
*
* @param orderOperationLog 【请填写功能名称】
* @return 【请填写功能名称】集合
*/
public List<OrderOperationLog> selectOrderOperationLogList(OrderOperationLog orderOperationLog);
/**
* 新增【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
public int insertOrderOperationLog(OrderOperationLog orderOperationLog);
/**
* 修改【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
public int updateOrderOperationLog(OrderOperationLog orderOperationLog);
/**
* 删除【请填写功能名称】
*
* @param id 【请填写功能名称】主键
* @return 结果
*/
public int deleteOrderOperationLogById(String id);
/**
* 批量删除【请填写功能名称】
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteOrderOperationLogByIds(String[] ids);
}
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.OrderOperationLog;
/**
* 【请填写功能名称】Service接口
*
* @author ruoyi
* @date 2022-05-17
*/
public interface IOrderOperationLogService
{
/**
* 查询【请填写功能名称】
*
* @param id 【请填写功能名称】主键
* @return 【请填写功能名称】
*/
public OrderOperationLog selectOrderOperationLogById(String id);
/**
* 查询【请填写功能名称】列表
*
* @param orderOperationLog 【请填写功能名称】
* @return 【请填写功能名称】集合
*/
public List<OrderOperationLog> selectOrderOperationLogList(OrderOperationLog orderOperationLog);
/**
* 新增【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
public int insertOrderOperationLog(OrderOperationLog orderOperationLog);
/**
* 修改【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
public int updateOrderOperationLog(OrderOperationLog orderOperationLog);
/**
* 批量删除【请填写功能名称】
*
* @param ids 需要删除的【请填写功能名称】主键集合
* @return 结果
*/
public int deleteOrderOperationLogByIds(String[] ids);
/**
* 删除【请填写功能名称】信息
*
* @param id 【请填写功能名称】主键
* @return 结果
*/
public int deleteOrderOperationLogById(String id);
}
package com.ruoyi.system.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.*;
......@@ -9,6 +10,9 @@ import com.ruoyi.system.mapper.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
......@@ -27,7 +31,7 @@ public class MachineApiServiceImpl {
private ShopGoodsSkuMapper shopGoodsSkuMapper;
@Autowired
private OrderDetailMapper orderDetailMapper;
@Value("machine.url")
@Value("${machine.url}")
private String url;
@Autowired
private RestTemplate restTemplate;
......@@ -45,7 +49,7 @@ public class MachineApiServiceImpl {
}
public String updateOrder(JSONObject jsonObject) {
String orderID = jsonObject.getString("orderId");
long orderID = jsonObject.getLong("orderId");
String status = jsonObject.getString("status");
Order order = new Order();
order.setId(orderID);
......@@ -56,6 +60,7 @@ public class MachineApiServiceImpl {
}
public void testOrder(String orderId) {
try{
if(StringUtils.isEmpty(orderId)){
orderId = "8";
}
......@@ -64,8 +69,9 @@ public class MachineApiServiceImpl {
orderDetail.setOrderId(order.getId());
List<OrderDetail> orderDetails = orderDetailMapper.selectOrderDetailList(orderDetail);
order.setOrderDetails(orderDetails);
String orderInfo = JSONObject.toJSONString(order);
ResultVo resultVo =createOrder(orderInfo,"/v1/order");
ObjectMapper objectMapper = new ObjectMapper();
String orderInfo = objectMapper.writeValueAsString(order);
ResultVo resultVo =sendRequest(orderInfo,"/v1/order");
String code = resultVo.getCode();
if("2001".equals(code)){
......@@ -73,17 +79,44 @@ public class MachineApiServiceImpl {
}else if("3001".equals(code)){
throw new ServiceException("机器繁忙");
}
}catch (Exception e){
log.error("",e);
}
}
public ResultVo createOrder(Order order){
String orderInfo = null;
try{
ObjectMapper objectMapper = new ObjectMapper();
orderInfo = objectMapper.writeValueAsString(order);
}catch (Exception e){
throw new ServiceException("初始订单数据异常,请重试");
}
ResultVo resultVo =sendRequest(orderInfo,"/v1/order");
public ResultVo createOrder(String param,String interfaceName){
String code = resultVo.getCode();
if("2001".equals(code)){
throw new ServiceException("库存不足");
}else if("3001".equals(code)){
throw new ServiceException("机器繁忙");
}
return resultVo;
}
public ResultVo sendRequest(String param,String interfaceName){
try{
String postUrl = url+interfaceName;
log.info("请求创建订单接口:【{}】",param);
ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(postUrl, param, String.class);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity requestEntity = new HttpEntity(param,requestHeaders);
ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(postUrl, requestEntity, String.class);
log.info("请求创建订单接口返回结果为:【{}】",stringResponseEntity.getBody());
ResultVo resultVo = JSONObject.parseObject(stringResponseEntity.getBody(), ResultVo.class);
return resultVo;
......@@ -104,7 +137,7 @@ public class MachineApiServiceImpl {
data.put("payTime",new Date());
param.put("data",data);
param.put("orderId",orderId);
createOrder(param.toJSONString(),"/v1/order/update");
sendRequest(param.toJSONString(),"/v1/order/update");
}
public Object robotUpdate(JSONObject jsonObject) {
......@@ -123,4 +156,8 @@ public class MachineApiServiceImpl {
}
public void updateOrder(Order order1) {
}
}
package com.ruoyi.system.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.OrderOperationLogMapper;
import com.ruoyi.system.domain.OrderOperationLog;
import com.ruoyi.system.service.IOrderOperationLogService;
/**
* 【请填写功能名称】Service业务层处理
*
* @author ruoyi
* @date 2022-05-17
*/
@Service
public class OrderOperationLogServiceImpl implements IOrderOperationLogService
{
@Autowired
private OrderOperationLogMapper orderOperationLogMapper;
/**
* 查询【请填写功能名称】
*
* @param id 【请填写功能名称】主键
* @return 【请填写功能名称】
*/
@Override
public OrderOperationLog selectOrderOperationLogById(String id)
{
return orderOperationLogMapper.selectOrderOperationLogById(id);
}
/**
* 查询【请填写功能名称】列表
*
* @param orderOperationLog 【请填写功能名称】
* @return 【请填写功能名称】
*/
@Override
public List<OrderOperationLog> selectOrderOperationLogList(OrderOperationLog orderOperationLog)
{
return orderOperationLogMapper.selectOrderOperationLogList(orderOperationLog);
}
/**
* 新增【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
@Override
public int insertOrderOperationLog(OrderOperationLog orderOperationLog)
{
return orderOperationLogMapper.insertOrderOperationLog(orderOperationLog);
}
/**
* 修改【请填写功能名称】
*
* @param orderOperationLog 【请填写功能名称】
* @return 结果
*/
@Override
public int updateOrderOperationLog(OrderOperationLog orderOperationLog)
{
return orderOperationLogMapper.updateOrderOperationLog(orderOperationLog);
}
/**
* 批量删除【请填写功能名称】
*
* @param ids 需要删除的【请填写功能名称】主键
* @return 结果
*/
@Override
public int deleteOrderOperationLogByIds(String[] ids)
{
return orderOperationLogMapper.deleteOrderOperationLogByIds(ids);
}
/**
* 删除【请填写功能名称】信息
*
* @param id 【请填写功能名称】主键
* @return 结果
*/
@Override
public int deleteOrderOperationLogById(String id)
{
return orderOperationLogMapper.deleteOrderOperationLogById(id);
}
}
......@@ -11,9 +11,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.Machine;
import com.ruoyi.system.domain.OrderDetail;
import com.ruoyi.system.domain.ShopGoodsSku;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.IOrderService;
import com.ruoyi.system.domain.vo.OrderQuery;
import com.ruoyi.system.mapper.*;
......@@ -21,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicInteger;
import org.springframework.stereotype.Service;
import com.ruoyi.system.domain.Order;
import org.springframework.transaction.annotation.Transactional;
/**
......@@ -44,9 +41,11 @@ public class OrderServiceImpl implements IOrderService
@Autowired
private MachineMapper machineMapper;
@Autowired
private RobotServiceImpl robotService;
private MachineApiServiceImpl machineApiService;
@Autowired
private ShopMapper shopMapper;
@Autowired
private OrderOperationLogServiceImpl orderOperationLogService;
......@@ -130,7 +129,15 @@ public class OrderServiceImpl implements IOrderService
}
}
//发送数据给机器
//robotService.createOrder(order);
machineApiService.createOrder(order);
OrderOperationLog orderOperationLog = new OrderOperationLog();
orderOperationLog.setOrderId(String.valueOf(order.getId()));
orderOperationLog.setOperation("创建订单");
orderOperationLog.setOperationUser(order.getUserName());
orderOperationLog.setCreateAt(new Date());
orderOperationLog.setContent("创建了订单");
orderOperationLog.setStatus("待付款");
orderOperationLogService.insertOrderOperationLog(orderOperationLog);
return AjaxResult.success(order.getOrderNo());
}
......
<?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.OrderOperationLogMapper">
<resultMap type="OrderOperationLog" id="OrderOperationLogResult">
<result property="id" column="id" />
<result property="status" column="status" />
<result property="operation" column="operation" />
<result property="createAt" column="create_at" />
<result property="operationUser" column="operation_user" />
<result property="content" column="content" />
<result property="orderId" column="order_id" />
</resultMap>
<sql id="selectOrderOperationLogVo">
select id, status, operation, create_at, operation_user, content, order_id from order_operation_log
</sql>
<select id="selectOrderOperationLogList" parameterType="OrderOperationLog" resultMap="OrderOperationLogResult">
<include refid="selectOrderOperationLogVo"/>
<where>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="operation != null and operation != ''"> and operation = #{operation}</if>
<if test="createAt != null "> and create_at = #{createAt}</if>
<if test="operationUser != null and operationUser != ''"> and operation_user = #{operationUser}</if>
<if test="content != null and content != ''"> and content = #{content}</if>
<if test="orderId != null and orderId != ''"> and order_id = #{orderId}</if>
</where>
</select>
<select id="selectOrderOperationLogById" parameterType="String" resultMap="OrderOperationLogResult">
<include refid="selectOrderOperationLogVo"/>
where id = #{id}
</select>
<insert id="insertOrderOperationLog" parameterType="OrderOperationLog" useGeneratedKeys="true" keyProperty="id">
insert into order_operation_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="status != null and status != ''">status,</if>
<if test="operation != null and operation != ''">operation,</if>
<if test="createAt != null">create_at,</if>
<if test="operationUser != null and operationUser != ''">operation_user,</if>
<if test="content != null and content != ''">content,</if>
<if test="orderId != null">order_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="status != null and status != ''">#{status},</if>
<if test="operation != null and operation != ''">#{operation},</if>
<if test="createAt != null">#{createAt},</if>
<if test="operationUser != null and operationUser != ''">#{operationUser},</if>
<if test="content != null and content != ''">#{content},</if>
<if test="orderId != null">#{orderId},</if>
</trim>
</insert>
<update id="updateOrderOperationLog" parameterType="OrderOperationLog">
update order_operation_log
<trim prefix="SET" suffixOverrides=",">
<if test="status != null and status != ''">status = #{status},</if>
<if test="operation != null and operation != ''">operation = #{operation},</if>
<if test="createAt != null">create_at = #{createAt},</if>
<if test="operationUser != null and operationUser != ''">operation_user = #{operationUser},</if>
<if test="content != null and content != ''">content = #{content},</if>
<if test="orderId != null">order_id = #{orderId},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteOrderOperationLogById" parameterType="String">
delete from order_operation_log where id = #{id}
</delete>
<delete id="deleteOrderOperationLogByIds" parameterType="String">
delete from order_operation_log where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
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