Merge remote-tracking branch 'origin/master'

pull/1/head
sjm 2 years ago
commit d1105017d1

@ -6,6 +6,7 @@ import com.cyl.h5.pojo.response.ValidatePhoneResponse;
import com.cyl.h5.pojo.response.H5LoginResponse;
import com.cyl.h5.service.H5MemberService;
import com.cyl.manager.ums.pojo.vo.MemberVO;
import com.cyl.wechat.WechatAuthService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@ -18,6 +19,7 @@ public class H5MemberController {
@Autowired
private H5MemberService service;
@ApiOperation("会员注册")
@PostMapping("/register")
public ResponseEntity<RegisterResponse> register(@RequestBody RegisterRequest request){

@ -1,13 +1,18 @@
package com.cyl.h5.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.cyl.h5.pojo.dto.OrderCreateDTO;
import com.cyl.h5.pojo.request.CancelOrderRequest;
import com.cyl.h5.pojo.vo.CountOrderVO;
import com.cyl.h5.pojo.vo.H5OrderVO;
import com.cyl.h5.pojo.vo.OrderCalcVO;
import com.cyl.h5.pojo.vo.form.OrderSubmitForm;
import com.cyl.h5.service.H5OrderService;
import com.cyl.manager.oms.domain.Order;
import com.cyl.manager.ums.domain.Member;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisService;
import com.ruoyi.framework.config.LocalDataUtil;
import io.swagger.annotations.ApiOperation;
@ -18,6 +23,8 @@ import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/h5/order")
@Slf4j
@ -103,4 +110,25 @@ public class H5OrderController {
Long memberId = member.getId();
return ResponseEntity.ok(service.orderNumCount(memberId));
}
@ApiOperation("取消订单")
@PostMapping("/orderCancel")
public ResponseEntity<String> orderCancel(@RequestBody CancelOrderRequest request){
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
String redisKey = "h5_oms_order_cancel_"+ request.getIdList().get(0);
String redisValue = request.getIdList().get(0)+"_"+System.currentTimeMillis();
try{
redisService.lock(redisKey,redisValue,60);
return ResponseEntity.ok(service.orderBatchCancel(request, member.getId()));
}catch (Exception e){
log.error("订单取消方法异常",e);
throw new RuntimeException("订单取消失败");
}finally {
try {
redisService.unLock(redisKey,redisValue);
}catch (Exception e){
log.error("",e);
}
}
}
}

@ -0,0 +1,14 @@
package com.cyl.h5.pojo.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("取消订单请求")
public class CancelOrderRequest {
@ApiModelProperty("要取消的订单id集合")
private List<Long> idList;
}

@ -24,4 +24,7 @@ public class RegisterRequest {
@NotBlank
private String code;
@ApiModelProperty("微信授权code")
private String wechatCode;
}

@ -10,8 +10,12 @@ import com.cyl.h5.pojo.response.RegisterResponse;
import com.cyl.h5.pojo.response.ValidatePhoneResponse;
import com.cyl.h5.pojo.response.H5LoginResponse;
import com.cyl.manager.ums.domain.Member;
import com.cyl.manager.ums.domain.MemberWechat;
import com.cyl.manager.ums.mapper.MemberMapper;
import com.cyl.manager.ums.mapper.MemberWechatMapper;
import com.cyl.manager.ums.pojo.vo.MemberVO;
import com.cyl.wechat.WechatAuthService;
import com.cyl.wechat.response.WechatUserAuth;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginMember;
import com.ruoyi.common.core.redis.RedisCache;
@ -26,6 +30,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Base64Utils;
import java.time.LocalDateTime;
@ -47,12 +52,20 @@ public class H5MemberService {
@Value("${aes.key}")
private String aesKey;
@Autowired
private WechatAuthService wechatAuthService;
@Autowired
private MemberWechatMapper memberWechatMapper;
/**
*
* @param request
* @return
*/
@Transactional
public RegisterResponse register(RegisterRequest request){
LocalDateTime optDate = LocalDateTime.now();
RegisterResponse response = new RegisterResponse();
//校验验证码
this.validateVerifyCode(request.getUuid(), request.getMobile(), request.getCode());
@ -64,8 +77,28 @@ public class H5MemberService {
member.setNickname("用户" + request.getMobile().substring(7,11));
member.setStatus(Constants.MEMBER_ACCOUNT_STATUS.NORMAL);
member.setGender(0);
member.setCreateTime(LocalDateTime.now());
memberMapper.insert(member);
member.setCreateTime(optDate);
int rows = memberMapper.insert(member);
if (rows < 1){
throw new RuntimeException("注册失败,请重试");
}
//调用微信授权业务拿到openId等
WechatUserAuth userToken = wechatAuthService.getUserToken(request.getWechatCode());
if (userToken == null){
throw new RuntimeException("授权失败,请重试");
}
MemberWechat memberWechat = new MemberWechat();
memberWechat.setMemberId(member.getId());
memberWechat.setOpenid(userToken.getOpenid());
memberWechat.setAccessToken(userToken.getAccess_token());
memberWechat.setExpiresIn(userToken.getExpires_in());
memberWechat.setRefreshToken(userToken.getRefresh_token());
memberWechat.setCreateTime(optDate);
memberWechat.setCreateBy(member.getId());
rows = memberWechatMapper.insert(memberWechat);
if (rows < 1){
throw new RuntimeException("注册失败,请重试");
}
//注册成功直接返回token了
H5LoginResponse loginResponse = getLoginResponse(member.getId());
response.setToken(loginResponse.getToken());

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cyl.h5.pojo.dto.OrderCreateDTO;
import com.cyl.h5.pojo.dto.OrderProductListDTO;
import com.cyl.h5.pojo.request.CancelOrderRequest;
import com.cyl.h5.pojo.vo.CountOrderVO;
import com.cyl.h5.pojo.vo.H5OrderVO;
import com.cyl.h5.pojo.vo.OrderCalcVO;
@ -19,6 +20,7 @@ import com.cyl.manager.oms.mapper.OrderItemMapper;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper;
import com.cyl.manager.oms.service.OrderItemService;
import com.cyl.manager.oms.service.OrderOperateHistoryService;
import com.cyl.manager.pms.domain.Product;
import com.cyl.manager.pms.domain.Sku;
import com.cyl.manager.pms.mapper.ProductMapper;
@ -72,6 +74,9 @@ public class H5OrderService {
@Autowired
private OrderItemService orderItemService;
@Autowired
private OrderOperateHistoryService orderOperateHistoryService;
@Transactional
public Long submit(OrderSubmitForm form) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
@ -349,4 +354,48 @@ public class H5OrderService {
public CountOrderVO orderNumCount(Long memberId) {
return orderMapper.countByStatusAndMemberId(memberId);
}
@Transactional
public String orderBatchCancel(CancelOrderRequest request, Long userId) {
LocalDateTime optDate = LocalDateTime.now();
if (CollectionUtil.isEmpty(request.getIdList())){
throw new RuntimeException("未指定需要取消的订单号");
}
QueryWrapper<Order> orderQw = new QueryWrapper<>();
orderQw.in("id", request.getIdList());
List<Order> orderList = orderMapper.selectList(orderQw);
if (orderList.size() < request.getIdList().size()){
throw new RuntimeException("未查询到订单信息");
}
long count = orderList.stream().filter(it -> !Constants.H5OrderStatus.UN_PAY.equals(it.getStatus())).count();
if (count > 0){
throw new RuntimeException("订单状态已更新,请刷新页面");
}
List<OrderOperateHistory> addHistoryList = new ArrayList<>();
orderList.forEach(item -> {
item.setStatus(Constants.H5OrderStatus.CLOSED);
item.setUpdateTime(optDate);
item.setUpdateBy(userId);
OrderOperateHistory history = new OrderOperateHistory();
history.setOrderId(item.getId());
history.setOperateMan("用户");
history.setOrderStatus(Constants.H5OrderStatus.CLOSED);
history.setCreateTime(optDate);
history.setCreateBy(userId);
history.setUpdateBy(userId);
history.setUpdateTime(optDate);
addHistoryList.add(history);
});
//取消订单
int rows = orderMapper.cancelBatch(orderList);
if (rows < 1){
throw new RuntimeException("更改订单状态失败");
}
//创建订单操作记录
boolean flag = orderOperateHistoryService.saveBatch(addHistoryList);
if (!flag){
throw new RuntimeException("创建订单操作记录失败");
}
return "取消订单成功";
}
}

@ -30,4 +30,6 @@ public interface OrderMapper extends BaseMapper<Order> {
H5OrderVO selectOrderDetail(Long orderId);
CountOrderVO countByStatusAndMemberId(Long memberId);
Integer cancelBatch(@Param("list") List<Order> orderList);
}

@ -3,6 +3,7 @@ package com.cyl.manager.oms.service;
import java.util.List;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@ -19,7 +20,7 @@ import com.cyl.manager.oms.pojo.query.OrderOperateHistoryQuery;
* @author zcc
*/
@Service
public class OrderOperateHistoryService {
public class OrderOperateHistoryService extends ServiceImpl<OrderOperateHistoryMapper, OrderOperateHistory> {
@Autowired
private OrderOperateHistoryMapper orderOperateHistoryMapper;

@ -47,6 +47,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectOrderVo">
select id, member_id, member_username, total_amount, purchase_price, pay_amount, freight_amount, pay_type, status, aftersale_status, delivery_company, delivery_sn, auto_confirm_day, receiver_name, receiver_phone, receiver_post_code, receiver_province, receiver_city, receiver_district, receiver_province_id, receiver_city_id, receiver_district_id, receiver_detail_address, note, confirm_status, delete_status, payment_time, delivery_time, receive_time, create_by, create_time, update_by, update_time from oms_order
</sql>
<delete id="cancelBatch">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update oms_order
<set>
status=#{item.status},
update_by=#{item.updateBy},
update_time=#{item.updateTime}
</set>
where id=#{item.id}
</foreach>
</delete>
<select id="selectByEntity" parameterType="Order" resultMap="OrderResult">
<include refid="selectOrderVo"/>

Loading…
Cancel
Save