Merge pull request '完成部分接口开发' (#52) from Brunch_LPQ into main
commit
820ec95a25
@ -0,0 +1,29 @@
|
||||
package com.itmk.utils;
|
||||
|
||||
public class BusinessException extends RuntimeException {
|
||||
private Integer code;
|
||||
|
||||
private String message;
|
||||
|
||||
public BusinessException(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(Integer code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.itmk.utils;
|
||||
|
||||
public enum BusinessExceptionEnum {
|
||||
SERVER_ERROR(500, "服务器异常!"),
|
||||
;
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
BusinessExceptionEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.itmk.web.address.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("user_address")
|
||||
public class UserAddress {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long addressId;
|
||||
private String openid;
|
||||
private String userName;
|
||||
private String phone;
|
||||
private String area;
|
||||
private String address;
|
||||
private String status;
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.itmk.web.address.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.itmk.web.address.entity.UserAddress;
|
||||
|
||||
public interface UserAddressMapper extends BaseMapper<UserAddress> {
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.itmk.web.address.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.itmk.web.address.entity.UserAddress;
|
||||
|
||||
public interface UserAddressService extends IService<UserAddress> {
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.itmk.web.address.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.itmk.web.address.entity.UserAddress;
|
||||
import com.itmk.web.address.mapper.UserAddressMapper;
|
||||
import com.itmk.web.address.service.UserAddressService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserAddressServiceImpl extends ServiceImpl<UserAddressMapper, UserAddress> implements UserAddressService {
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.itmk.web.order.controller;
|
||||
|
||||
import com.itmk.utils.ResultUtils;
|
||||
import com.itmk.utils.ResultVo;
|
||||
import com.itmk.web.order.entity.OrderParm;
|
||||
import com.itmk.web.order.service.UserOrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/wxapi/order")
|
||||
public class UserOrderController {
|
||||
@Autowired
|
||||
private UserOrderService userOrderService;
|
||||
|
||||
//下单
|
||||
@PostMapping("/splaceOrder")
|
||||
public ResultVo splaceOrder(@RequestBody OrderParm parm){
|
||||
userOrderService.splaceOrder(parm);
|
||||
return ResultUtils.success("提交成功!");
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.itmk.web.order.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class OrderParm {
|
||||
private String openid;
|
||||
private String userName;
|
||||
private String phone;
|
||||
private String address;
|
||||
private BigDecimal price;
|
||||
private List<com.itmk.web.order.entity.ParmDetail> details = new ArrayList<>();
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.itmk.web.order.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ParmDetail {
|
||||
private Long goodsId;
|
||||
private String goodsImage;
|
||||
private String goodsName;
|
||||
private String goodsUnit;
|
||||
private String specsName;
|
||||
private BigDecimal price;
|
||||
private Integer num;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.itmk.web.order.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("user_order")
|
||||
public class UserOrder {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long orderId;
|
||||
private String openid;
|
||||
private String userName;
|
||||
private String phone;
|
||||
private String address;
|
||||
private BigDecimal price;
|
||||
private Date createTime;
|
||||
private String status;
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.itmk.web.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.itmk.web.order.entity.UserOrder;
|
||||
|
||||
public interface UserOrderMapper extends BaseMapper<UserOrder> {
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.itmk.web.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.itmk.web.order.entity.OrderParm;
|
||||
import com.itmk.web.order.entity.UserOrder;
|
||||
|
||||
public interface UserOrderService extends IService<UserOrder> {
|
||||
void splaceOrder(OrderParm parm);
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.itmk.web.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.itmk.web.order.entity.OrderParm;
|
||||
import com.itmk.web.order.entity.ParmDetail;
|
||||
import com.itmk.web.order.entity.UserOrder;
|
||||
import com.itmk.web.order.mapper.UserOrderMapper;
|
||||
import com.itmk.web.order.service.UserOrderService;
|
||||
import com.itmk.web.order_detail.entity.UserOrderDetail;
|
||||
import com.itmk.web.order_detail.service.UserOrderDetailService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.Date;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserOrderServiceImpl extends ServiceImpl<UserOrderMapper, UserOrder> implements UserOrderService {
|
||||
@Autowired
|
||||
private UserOrderDetailService userOrderDetailService;
|
||||
|
||||
@Override
|
||||
public void splaceOrder(OrderParm parm) {
|
||||
//操作订单主表
|
||||
UserOrder order = new UserOrder();
|
||||
BeanUtils.copyProperties(parm, order);
|
||||
order.setCreateTime(new Date());
|
||||
order.setStatus("0");
|
||||
int ls = this.baseMapper.insert(order);
|
||||
//操作子表:订单对应的商品
|
||||
if (ls > 0) {
|
||||
List<ParmDetail> details = parm.getDetails();
|
||||
List<UserOrderDetail> list = new ArrayList<>();
|
||||
if (details.size() > 0) {
|
||||
for (int i = 0; i < details.size(); i++) {
|
||||
UserOrderDetail detail = new UserOrderDetail();
|
||||
BeanUtils.copyProperties(details.get(i), detail);
|
||||
//设置关联的主表
|
||||
detail.setOrderId(order.getOrderId());
|
||||
list.add(detail);
|
||||
}
|
||||
}
|
||||
//批量插入
|
||||
userOrderDetailService.saveBatch(list);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.itmk.web.order_detail.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@TableName("user_order_detail")
|
||||
public class UserOrderDetail {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long detailId;
|
||||
private Long orderId;
|
||||
private Long goodsId;
|
||||
private String goodsImage;
|
||||
private String goodsName;
|
||||
private String goodsUnit;
|
||||
private String specsName;
|
||||
private BigDecimal price;
|
||||
private Integer num;
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.itmk.web.order_detail.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.itmk.web.order_detail.entity.UserOrderDetail;
|
||||
|
||||
public interface UserOrderDetailMapper extends BaseMapper<UserOrderDetail> {
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.itmk.web.order_detail.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.itmk.web.order_detail.entity.UserOrderDetail;
|
||||
|
||||
public interface UserOrderDetailService extends IService<UserOrderDetail> {
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.itmk.web.order_detail.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.itmk.web.order_detail.entity.UserOrderDetail;
|
||||
import com.itmk.web.order_detail.mapper.UserOrderDetailMapper;
|
||||
import com.itmk.web.order_detail.service.UserOrderDetailService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserOrderDetailServiceImpl extends ServiceImpl<UserOrderDetailMapper, UserOrderDetail> implements UserOrderDetailService {
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.itmk.web.wxapi.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.itmk.utils.ResultUtils;
|
||||
import com.itmk.utils.ResultVo;
|
||||
import com.itmk.web.category.entity.SysCategory;
|
||||
import com.itmk.web.category.service.SysCategoryService;
|
||||
import com.itmk.web.goods.entity.SysGoods;
|
||||
import com.itmk.web.goods.service.SysGoodsService;
|
||||
import com.itmk.web.goods_specs.entity.SysGoodsSpecs;
|
||||
import com.itmk.web.goods_specs.service.SysGoodsSpecsService;
|
||||
import com.itmk.web.banner.entity.SysBanner;
|
||||
import com.itmk.web.banner.service.SysBannerService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/wxapi/category")
|
||||
public class WxCategoryController {
|
||||
@Autowired
|
||||
private SysGoodsService sysGoodsService;
|
||||
@Autowired
|
||||
private SysCategoryService sysCategoryService;
|
||||
@Autowired
|
||||
private SysGoodsSpecsService sysGoodsSpecsService;
|
||||
|
||||
//分类数据
|
||||
@GetMapping("/getCategoryList")
|
||||
public ResultVo getCategoryList(){
|
||||
QueryWrapper<SysCategory> query = new QueryWrapper<>();
|
||||
query.lambda().orderByAsc(SysCategory::getOrderNum);
|
||||
List<SysCategory> list = sysCategoryService.list(query);
|
||||
if(list.size() > 0){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
//查询分类下面的菜品
|
||||
QueryWrapper<SysGoods> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(SysGoods::getCategoryId,list.get(i).getCategoryId())
|
||||
.orderByAsc(SysGoods::getOrderNum);
|
||||
List<SysGoods> goods = sysGoodsService.list(queryWrapper);
|
||||
list.get(i).setGoods(goods);
|
||||
if(goods.size() > 0){
|
||||
for (int j = 0; j < goods.size(); j++) {
|
||||
//查询价格
|
||||
QueryWrapper<SysGoodsSpecs> queryWrapperPrice = new QueryWrapper<>();
|
||||
queryWrapperPrice.lambda().eq(SysGoodsSpecs::getGoodsId,goods.get(j).getGoodsId())
|
||||
.orderByAsc(SysGoodsSpecs::getOrderNum);
|
||||
List<SysGoodsSpecs> specs = sysGoodsSpecsService.list(queryWrapperPrice);
|
||||
goods.get(j).setSpecs(specs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ResultUtils.success("查询成功",list);
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.itmk.web.wxapi.controller;
|
||||
|
||||
import com.itmk.utils.*;
|
||||
import com.itmk.web.wxapi.entity.Code2Session;
|
||||
import com.itmk.web.wxapi.entity.LoginParm;
|
||||
import com.itmk.web.wxapi.entity.LoginVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/wxapi/user")
|
||||
public class WxLoginController {
|
||||
@Value("${Wechat.Applets.appId}")
|
||||
private String appId;
|
||||
@Value("${Wechat.Applets.appSecret}")
|
||||
private String appSecret;
|
||||
//小程序登录
|
||||
@PostMapping("/wxLogin")
|
||||
public ResultVo wxLogin(@RequestBody LoginParm parm){
|
||||
String code = parm.getCode();
|
||||
log.info("wxlogin - code: " + code);
|
||||
String url = "https://api.weixin.qq.com/sns/jscode2session";
|
||||
Map<String, String> param = new HashMap<>();
|
||||
param.put("appid", appId);
|
||||
param.put("secret", appSecret);
|
||||
param.put("js_code", code);
|
||||
param.put("grant_type", "authorization_code");
|
||||
log.info("param: " + param);
|
||||
try {
|
||||
//发送请求
|
||||
String wxResult = HttpClientUtil.doGet(url, param);
|
||||
//转换参数
|
||||
Code2Session userJson = FastJsonTools.getJson(wxResult, Code2Session.class);
|
||||
log.info("userJson: " + userJson);
|
||||
if(userJson == null) throw new BusinessException(500,"小程序获取open失败");
|
||||
String openid = userJson.getOpenid();
|
||||
String sessionKey = userJson.getSession_key();
|
||||
log.info("openid: " + openid);
|
||||
log.info("sessionKey: " + sessionKey);
|
||||
LoginVo vo = new LoginVo();
|
||||
vo.setOpenid(openid);
|
||||
vo.setSessionKey(sessionKey);
|
||||
return ResultUtils.success("获取成功",vo);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error(String.format("WxLoginController.wxLogin Error", e));
|
||||
}
|
||||
return ResultUtils.error("小程序获取open失败");
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.itmk.web.wxapi.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Code2Session {
|
||||
|
||||
private String openid; //用户唯一标识
|
||||
|
||||
private String session_key; //会话密钥
|
||||
|
||||
private String unionid; //用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。
|
||||
|
||||
private Integer errcode; //错误码
|
||||
|
||||
private String errmsg; //错误信息
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.itmk.web.wxapi.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LoginParm {
|
||||
private String code;
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.itmk.web.wxapi.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LoginVo {
|
||||
private String openid;
|
||||
private String sessionKey;
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.itmk.web.address.mapper.UserAddressMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.itmk.web.user_order_detail.mapper.UserOrderDetailMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.itmk.web.user_order.mapper.UserOrderMapper">
|
||||
|
||||
</mapper>
|
Loading…
Reference in new issue