diff --git a/api-interface/itmk-base-parent/itmk-base-common/pom.xml b/api-interface/itmk-base-parent/itmk-base-common/pom.xml index 32a75eb..24b404f 100644 --- a/api-interface/itmk-base-parent/itmk-base-common/pom.xml +++ b/api-interface/itmk-base-parent/itmk-base-common/pom.xml @@ -48,6 +48,11 @@ commons-io commons-io + + + org.apache.httpcomponents + httpclient + diff --git a/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessException.java b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessException.java new file mode 100644 index 0000000..48f83f2 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessException.java @@ -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; + } +} diff --git a/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessExceptionEnum.java b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessExceptionEnum.java new file mode 100644 index 0000000..355e61c --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/BusinessExceptionEnum.java @@ -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; + } +} diff --git a/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/FastJsonTools.java b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/FastJsonTools.java new file mode 100644 index 0000000..420626c --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/FastJsonTools.java @@ -0,0 +1,150 @@ +package com.itmk.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer; +import com.alibaba.fastjson.serializer.SerializeConfig; +import com.alibaba.fastjson.serializer.SerializerFeature; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class FastJsonTools { + + private static SerializeConfig CONFIG = null; + + static { + CONFIG = new SerializeConfig(); + // 使用和json-lib兼容的日期输出格式 + CONFIG.put(java.util.Date.class, new JSONLibDataFormatSerializer()); + // 使用和json-lib兼容的日期输出格式 + CONFIG.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); + } + + private static final SerializerFeature[] FEATURES = { + // 输出空置字段 + SerializerFeature.WriteMapNullValue, + // list字段如果为null,输出为[],而不是null + SerializerFeature.WriteNullListAsEmpty, + // 数值字段如果为null,输出为0,而不是null + SerializerFeature.WriteNullNumberAsZero, + // Boolean字段如果为null,输出为false,而不是null + SerializerFeature.WriteNullBooleanAsFalse, + // 字符类型字段如果为null,输出为"",而不是null + SerializerFeature.WriteNullStringAsEmpty + }; + + /** + * Object 转换成字符串 + * + * @param object + * @return + */ + public static String toJSONFeaturesString(Object object) { + return JSON.toJSONString(object, CONFIG, FEATURES); + } + + /** + * Object 转换成字符串 + * + * @param object + * @return + */ + public static String toJSONString(Object object) { + return JSON.toJSONString(object, CONFIG); + } + + + /** + * json字符串转化为map + * + * @param s + * @return + */ + public static Map stringToCollect(String s) { + Map m = JSONObject.parseObject(s); + return m; + } + + /** + * 将map转化为string + * + * @param m + * @return + */ + public static String collectToString(Map m) { + String s = JSONObject.toJSONString(m); + return s; + } + + /** + * 用fastjson 将json字符串解析为一个 JavaBean + * + * @param jsonString + * @param cls + * @return + */ + public static T getJson(String jsonString, Class cls) { + T t = null; + try { + t = JSON.parseObject(jsonString, cls); + } catch (Exception e) { + e.printStackTrace(); + } + return t; + } + + /** + * 用fastjson 将json字符串 解析成为一个 List 及 List + * + * @param jsonString + * @param cls + * @return + */ + public static List getArrayJson(String jsonString, Class cls) { + List list = new ArrayList(); + try { + list = JSON.parseArray(jsonString, cls); + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } + + /** + * 用fastjson 将json字符串 解析成为一个 List 及 List + * + * @param jsonString + * @return + */ + @SuppressWarnings("unchecked") + public static List getArrayJson(String jsonString) { + List list = new ArrayList(); + try { + list = (List) JSON.parseArray(jsonString); + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } + + /** + * 用fastjson 将jsonString 解析成 List> + * + * @param jsonString + * @return + */ + public static List> getListMap(String jsonString) { + List> list = new ArrayList>(); + try { + list = JSON.parseObject(jsonString, new TypeReference>>() { + }); + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } + +} diff --git a/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/HttpClientUtil.java b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/HttpClientUtil.java new file mode 100644 index 0000000..19b8d06 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-common/src/main/java/com/itmk/utils/HttpClientUtil.java @@ -0,0 +1,143 @@ +package com.itmk.utils; + + +import org.apache.http.NameValuePair; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 服务端发送Http请求工具封装 + */ +public class HttpClientUtil { + //连接超时时间,默认10秒 + private static final int socketTimeout = 10000; + + //传输超时时间,默认30秒 + private static final int connectTimeout = 30000; + + public static String doGet(String url, Map param) { + + // 创建Httpclient对象 + CloseableHttpClient httpclient = HttpClients.createDefault(); + + String resultString = ""; + CloseableHttpResponse response = null; + try { + // 创建uri + URIBuilder builder = new URIBuilder(url); + if (param != null) { + for (String key : param.keySet()) { + builder.addParameter(key, param.get(key)); + } + } + URI uri = builder.build(); + + // 创建http GET请求 + HttpGet httpGet = new HttpGet(uri); + + // 执行请求 + response = httpclient.execute(httpGet); + // 判断返回状态是否为200 + if (response.getStatusLine().getStatusCode() == 200) { + resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (response != null) { + response.close(); + } + httpclient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return resultString; + } + + public static String doGet(String url) { + return doGet(url, null); + } + + public static String doPost(String url, Map param) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + // 创建参数列表 + if (param != null) { + List paramList = new ArrayList<>(); + for (String key : param.keySet()) { + paramList.add(new BasicNameValuePair(key, param.get(key))); + } + // 模拟表单 + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList); + httpPost.setEntity(entity); + } + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return resultString; + } + + public static String doPost(String url) { + return doPost(url, null); + } + + public static String doPostJson(String url, String json) { + // 创建Httpclient对象 + CloseableHttpClient httpClient = HttpClients.createDefault(); + CloseableHttpResponse response = null; + String resultString = ""; + try { + // 创建Http Post请求 + HttpPost httpPost = new HttpPost(url); + // 创建请求内容 + StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); + httpPost.setEntity(entity); + // 执行http请求 + response = httpClient.execute(httpPost); + resultString = EntityUtils.toString(response.getEntity(), "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return resultString; + } +} + diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/entity/UserAddress.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/entity/UserAddress.java new file mode 100644 index 0000000..0d78bbc --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/entity/UserAddress.java @@ -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; +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/mapper/UserAddressMapper.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/mapper/UserAddressMapper.java new file mode 100644 index 0000000..c2ef45e --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/mapper/UserAddressMapper.java @@ -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 { +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/UserAddressService.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/UserAddressService.java new file mode 100644 index 0000000..adb1604 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/UserAddressService.java @@ -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 { +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/impl/UserAddressServiceImpl.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/impl/UserAddressServiceImpl.java new file mode 100644 index 0000000..9806951 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/address/service/impl/UserAddressServiceImpl.java @@ -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 implements UserAddressService { +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/category/entity/SysCategory.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/category/entity/SysCategory.java index c374022..b6ca1c5 100644 --- a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/category/entity/SysCategory.java +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/category/entity/SysCategory.java @@ -2,10 +2,15 @@ package com.itmk.web.category.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.itmk.web.goods.entity.SysGoods; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + @Data @TableName("sys_category")//表明该类实体类所关联的数据表库 @@ -16,4 +21,7 @@ public class SysCategory { private Long categoryId; private String categoryName; private Integer orderNum; + + @TableField(exist = false) + private List goods = new ArrayList<>(); } diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/controller/UserOrderController.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/controller/UserOrderController.java new file mode 100644 index 0000000..0880f8a --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/controller/UserOrderController.java @@ -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("提交成功!"); + } +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/OrderParm.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/OrderParm.java new file mode 100644 index 0000000..e134eb0 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/OrderParm.java @@ -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 details = new ArrayList<>(); +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/ParmDetail.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/ParmDetail.java new file mode 100644 index 0000000..15b9e4b --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/ParmDetail.java @@ -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; +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/UserOrder.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/UserOrder.java new file mode 100644 index 0000000..f566e51 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/entity/UserOrder.java @@ -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; +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/mapper/UserOrderMapper.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/mapper/UserOrderMapper.java new file mode 100644 index 0000000..984afa4 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/mapper/UserOrderMapper.java @@ -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 { +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/UserOrderService.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/UserOrderService.java new file mode 100644 index 0000000..1e371af --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/UserOrderService.java @@ -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 { + void splaceOrder(OrderParm parm); +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/impl/UserOrderServiceImpl.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/impl/UserOrderServiceImpl.java new file mode 100644 index 0000000..af45c9d --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order/service/impl/UserOrderServiceImpl.java @@ -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 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 details = parm.getDetails(); + List 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); + } + } +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/entity/UserOrderDetail.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/entity/UserOrderDetail.java new file mode 100644 index 0000000..159835c --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/entity/UserOrderDetail.java @@ -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; +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/mapper/UserOrderDetailMapper.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/mapper/UserOrderDetailMapper.java new file mode 100644 index 0000000..f2be354 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/mapper/UserOrderDetailMapper.java @@ -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 { +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/UserOrderDetailService.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/UserOrderDetailService.java new file mode 100644 index 0000000..937dd51 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/UserOrderDetailService.java @@ -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 { +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/impl/UserOrderDetailServiceImpl.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/impl/UserOrderDetailServiceImpl.java new file mode 100644 index 0000000..1fe330c --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/order_detail/service/impl/UserOrderDetailServiceImpl.java @@ -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 implements UserOrderDetailService { +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/UserAddressController.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/UserAddressController.java new file mode 100644 index 0000000..307d724 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/UserAddressController.java @@ -0,0 +1,53 @@ +package com.itmk.web.wxapi.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.itmk.utils.ResultUtils; +import com.itmk.utils.ResultVo; +import com.itmk.web.address.entity.UserAddress; +import com.itmk.web.address.service.UserAddressService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/wxapi/address") +public class UserAddressController { + @Autowired + private UserAddressService userAddressService; + + //新增地址 + @PostMapping + public ResultVo add(@RequestBody UserAddress userAddress){ + if(userAddressService.save(userAddress)){ + return ResultUtils.success("新增地址成功!"); + } + return ResultUtils.error("新增地址失败!"); + } + + //编辑地址 + @PutMapping + public ResultVo edit(@RequestBody UserAddress userAddress){ + //先全部更新为不是默认 + LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); + query.eq(UserAddress::getOpenid,userAddress.getOpenid()).set(UserAddress::getStatus,"0"); + userAddressService.update(query); + //更新当前编辑的这条数据 + if(userAddressService.updateById(userAddress)){ + return ResultUtils.success("编辑地址成功!"); + } + return ResultUtils.error("编辑地址失败!"); + } + + //列表 + @GetMapping("/list") + public ResultVo list(String openid){ + //排序:按status排序,默认的排在第一条 + QueryWrapper query = new QueryWrapper<>(); + query.lambda().eq(UserAddress::getOpenid,openid); + query.lambda().orderByDesc(UserAddress::getStatus); + List list = userAddressService.list(query); + return ResultUtils.success("查询成功",list); + } +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxCategoryController.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxCategoryController.java new file mode 100644 index 0000000..058da1b --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxCategoryController.java @@ -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 query = new QueryWrapper<>(); + query.lambda().orderByAsc(SysCategory::getOrderNum); + List list = sysCategoryService.list(query); + if(list.size() > 0){ + for (int i = 0; i < list.size(); i++) { + //查询分类下面的菜品 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(SysGoods::getCategoryId,list.get(i).getCategoryId()) + .orderByAsc(SysGoods::getOrderNum); + List goods = sysGoodsService.list(queryWrapper); + list.get(i).setGoods(goods); + if(goods.size() > 0){ + for (int j = 0; j < goods.size(); j++) { + //查询价格 + QueryWrapper queryWrapperPrice = new QueryWrapper<>(); + queryWrapperPrice.lambda().eq(SysGoodsSpecs::getGoodsId,goods.get(j).getGoodsId()) + .orderByAsc(SysGoodsSpecs::getOrderNum); + List specs = sysGoodsSpecsService.list(queryWrapperPrice); + goods.get(j).setSpecs(specs); + } + } + } + } + return ResultUtils.success("查询成功",list); + } +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java new file mode 100644 index 0000000..181c278 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java @@ -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 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失败"); + } +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/Code2Session.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/Code2Session.java new file mode 100644 index 0000000..d362af5 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/Code2Session.java @@ -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; //错误信息 + +} diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginParm.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginParm.java new file mode 100644 index 0000000..9e6ace9 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginParm.java @@ -0,0 +1,8 @@ +package com.itmk.web.wxapi.entity; + +import lombok.Data; + +@Data +public class LoginParm { + private String code; +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginVo.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginVo.java new file mode 100644 index 0000000..745b6db --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/entity/LoginVo.java @@ -0,0 +1,9 @@ +package com.itmk.web.wxapi.entity; + +import lombok.Data; + +@Data +public class LoginVo { + private String openid; + private String sessionKey; +} \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/application-test.yml b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/application-test.yml index bac3503..7ee4843 100644 --- a/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/application-test.yml +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/application-test.yml @@ -30,6 +30,14 @@ mybatis-plus: # 配置MyBatis Plus在更新时间更新非空和非NULL的字段 update-strategy: not_empty +# 微信小程序相关 +Wechat: + Applets: + # 小程序appID + appId: wx6a41b250d82adc97 + # 小程序秘钥 + appSecret: 3bd822fb2c28fe7ba492ae7afd1fbd6e + # 日志配置 logging: level: diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserAddressMapper.xml b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserAddressMapper.xml new file mode 100644 index 0000000..b991060 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserAddressMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderDetailMapper.xml b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderDetailMapper.xml new file mode 100644 index 0000000..6389e48 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderDetailMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderMapper.xml b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderMapper.xml new file mode 100644 index 0000000..14723c3 --- /dev/null +++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/resources/mapper/UserOrderMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file