From 0bb25793375ed6bf9253ac07b8ef3aff4750346a Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Fri, 22 Mar 2024 14:26:14 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=9B=BE=E4=B9=A6=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E4=BF=AE=E6=94=B9-=E5=8A=A0=E5=88=A4=E6=96=AD=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookLabelAndMarketController.java | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java index a42dfd7a..097292cb 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java @@ -86,14 +86,30 @@ public class BookLabelAndMarketController { @RequestMapping(path = "/saveOrUpdateLabel") public R saveOrUpdateLabel(@RequestBody ShopProductBookLabel label) { - labelService.saveOrUpdate(label); - return R.ok().put("result",label); + if (label.getIsLast()==1){ + labelService.saveOrUpdate(label); + return R.ok().put("result",label); + }else { + return R.error("父标签非最后一集"); + } } @RequestMapping(path = "/delLabel") public R delLabel(String id) { - labelService.removeById(id); - return R.ok(); + ShopProductBookLabel label = labelService.getById(id); + if (label.getIsLast()==1){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(ShopProductToBookLabel::getBookLabelId,id); + List tolables = toLabelService.list(wrapper); + if (tolables.size()>0){ + return R.error("请先移除商品"); + }else { + labelService.removeById(id); + return R.ok(); + } + }else { + return R.error("请先删除子集,设置成最后一集"); + } } @RequestMapping(path = "/getMarketById") @@ -103,14 +119,30 @@ public class BookLabelAndMarketController { @RequestMapping(path = "/saveOrUpdateMarket") public R saveOrUpdateMarket(@RequestBody ShopProductBookMarket market) { - marketService.saveOrUpdate(market); - return R.ok().put("result",market); + if (market.getIsLast()==1){ + marketService.saveOrUpdate(market); + return R.ok().put("result",market); + }else { + return R.error("父标签非最后一集"); + } } @RequestMapping(path = "/delMarket") public R delMarket(String id) { - marketService.removeById(id); - return R.ok(); + ShopProductBookMarket market = marketService.getById(id); + if (market.getIsLast()==1){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(ShopProductToBookMarket::getBookMarketId,id); + List tomarkets = toMarketService.list(wrapper); + if (tomarkets.size()>0){ + return R.error("请先移除商品"); + }else { + marketService.removeById(id); + return R.ok(); + } + }else { + return R.error("请先删除子集,设置成最后一集"); + } } @@ -220,4 +252,8 @@ public class BookLabelAndMarketController { + + + + } From 80a13f95ceda52cf18e5ded6403b2a1cc2173e5a Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Fri, 22 Mar 2024 16:55:08 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=9B=BE=E4=B9=A6=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookLabelAndMarketController.java | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java index 097292cb..fff979de 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java @@ -1,6 +1,7 @@ package com.peanut.modules.book.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.R; @@ -145,7 +146,27 @@ public class BookLabelAndMarketController { } } - + /** + * 获取未关联商品列表 + */ + @RequestMapping("/getNotToLabelList") + public R getNotToLabelList(@RequestBody Map params){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + if (!"".equals(params.get("goodsType").toString())){ + wrapper.eq(ShopProduct::getGoodsType,params.get("goodsType").toString()); + } + if (!"".equals(params.get("bookLabelId").toString())){ + String sql = "select product_id from shop_product_to_book_label where del_flag = 0 and book_label_id = "+params.get("bookLabelId"); + wrapper.notInSql(ShopProduct::getProductId,sql); + } + if (!"".equals(params.get("bookMarketId").toString())){ + String sql = "select product_id from shop_product_to_book_market where del_flag = 0 and book_market_id = "+params.get("bookLabelId"); + wrapper.notInSql(ShopProduct::getProductId,sql); + } + Page page = productService.page(new Page<>( + Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())),wrapper); + return R.ok().put("result", page); + } /** * 获取书标签列表 @@ -158,6 +179,9 @@ public class BookLabelAndMarketController { if (params.containsKey("productName")&&!"".equals(params.get("productName").toString())){ wrapper.like(ShopProduct::getProductName,params.get("productName").toString()); } + if (params.containsKey("goodsType")&&!"".equals(params.get("goodsType").toString())){ + wrapper.eq(ShopProduct::getGoodsType,params.get("goodsType").toString()); + } if (params.containsKey("productId")&&!"".equals(params.get("productId").toString())){ wrapper.eq(ShopProductToBookLabel::getProductId,params.get("productId").toString()); } @@ -188,6 +212,9 @@ public class BookLabelAndMarketController { if (params.containsKey("productName")&&!"".equals(params.get("productName").toString())){ wrapper.like(ShopProduct::getProductName,params.get("productName").toString()); } + if (params.containsKey("goodsType")&&!"".equals(params.get("goodsType").toString())){ + wrapper.eq(ShopProduct::getGoodsType,params.get("goodsType").toString()); + } if (params.containsKey("productId")&&!"".equals(params.get("productId").toString())){ wrapper.eq(ShopProductToBookMarket::getProductId,params.get("productId").toString()); } @@ -245,7 +272,31 @@ public class BookLabelAndMarketController { return R.ok(); } + @RequestMapping(path = "/delToLable") + public R delToLable(String lableIds) { + if (!StringUtils.isEmpty(lableIds)) { + String[] ids = lableIds.split(","); + if (ids.length>0) { + for (String id : ids) { + toLabelService.removeById(id); + } + } + } + return R.ok(); + } + @RequestMapping(path = "/delToMarket") + public R delToMarket(String marketds) { + if (!StringUtils.isEmpty(marketds)) { + String[] ids = marketds.split(","); + if (ids.length>0) { + for (String id : ids) { + toMarketService.removeById(id); + } + } + } + return R.ok(); + } From ed1a95aac01bf66aa47aeafd5073c5a0250e08cd Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 25 Mar 2024 10:54:35 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0common=E4=B8=8B=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=B3=A8=E5=86=8C=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookLabelAndMarketController.java | 8 +- .../common/controller/UserController.java | 277 ++++++++++++++++++ .../modules/common/service/MyUserService.java | 10 + .../service/impl/MyUserServiceImpl.java | 62 ++++ 4 files changed, 353 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/peanut/modules/common/service/MyUserService.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/MyUserServiceImpl.java diff --git a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java index fff979de..7ee604b8 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java @@ -152,15 +152,15 @@ public class BookLabelAndMarketController { @RequestMapping("/getNotToLabelList") public R getNotToLabelList(@RequestBody Map params){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); - if (!"".equals(params.get("goodsType").toString())){ + if (params.containsKey("goodsType")&&!"".equals(params.get("goodsType").toString())){ wrapper.eq(ShopProduct::getGoodsType,params.get("goodsType").toString()); } - if (!"".equals(params.get("bookLabelId").toString())){ + if (params.containsKey("bookLabelId")&&!"".equals(params.get("bookLabelId").toString())){ String sql = "select product_id from shop_product_to_book_label where del_flag = 0 and book_label_id = "+params.get("bookLabelId"); wrapper.notInSql(ShopProduct::getProductId,sql); } - if (!"".equals(params.get("bookMarketId").toString())){ - String sql = "select product_id from shop_product_to_book_market where del_flag = 0 and book_market_id = "+params.get("bookLabelId"); + if (params.containsKey("bookMarketId")&&!"".equals(params.get("bookMarketId").toString())){ + String sql = "select product_id from shop_product_to_book_market where del_flag = 0 and book_market_id = "+params.get("bookMarketId"); wrapper.notInSql(ShopProduct::getProductId,sql); } Page page = productService.page(new Page<>( diff --git a/src/main/java/com/peanut/modules/common/controller/UserController.java b/src/main/java/com/peanut/modules/common/controller/UserController.java index da9c5a41..40c3a780 100644 --- a/src/main/java/com/peanut/modules/common/controller/UserController.java +++ b/src/main/java/com/peanut/modules/common/controller/UserController.java @@ -1,14 +1,291 @@ package com.peanut.modules.common.controller; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.druid.util.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.peanut.common.utils.MD5Utils; +import com.peanut.common.utils.MailUtil; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.MyUserEntity; +import com.peanut.modules.common.service.MyUserService; +import com.peanut.modules.sys.service.SysUserTokenService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; @Slf4j @RestController @RequestMapping("common/user") public class UserController { + @Autowired + private MyUserService userService; + @Autowired + private StringRedisTemplate redisTemplate; + @Autowired + private SysUserTokenService sysUserTokenService; + + /** + * 常规注册 发短信验证码 + */ + @RequestMapping("/sms/sendcode") + public R registerSms(@RequestParam("phone") String phone, @RequestParam(required = false) String areaCode) throws Exception { + int areacode=0; + if(areaCode==null||areaCode.equals("")){ + areacode=0; + }else{ + areacode = Integer.valueOf(areaCode); + } + //验证一分钟内是否已经发过 + String redisCode = redisTemplate.opsForValue().get("RegistCode" + phone); + if (!StringUtils.isEmpty(redisCode)) { + long l = Long.parseLong(redisCode.split("_")[1]); + if (System.currentTimeMillis() - l < 60000) { + //60s 内不能再发 + return R.error(500,"短信验证码频率过高,请稍后再试!"); + } + } + //生成随机五位数 + Random random = new Random(); + String i = random.nextInt(99999) + ""; + StringBuffer sb = new StringBuffer(); + for (int j = 0; j < 5 - i.length(); j++) { + sb.append("0"); + } + i = sb.toString() + i; + String code = i + "_"+System.currentTimeMillis(); + //redis 缓存验证码 + redisTemplate.opsForValue().set("RegistCode"+phone,code,5, TimeUnit.MINUTES); + //发送 + userService.sendCodeForRegister(phone,code,areacode); + return R.ok(); + } + + /** + * 常规注册 发送邮箱验证码 + */ + @RequestMapping("/getMailCaptcha") + public R getMailCaptcha(String email) throws Exception { + //验证一分钟内是否已经发过 + String redisCode = redisTemplate.opsForValue().get("RegistCode" + email); + if (!StringUtils.isEmpty(redisCode)) { + long l = Long.parseLong(redisCode.split("_")[1]); + if (System.currentTimeMillis() - l < 60000) { + //60s 内不能再发 + return R.error(500,"验证码频率过高,请稍后再试!"); + } + } + //生成随机五位数 + Random random = new Random(); + String code = random.nextInt(99999) + ""; + String timeCode = code + "_"+System.currentTimeMillis(); + //redis 缓存验证码 + redisTemplate.opsForValue().set("RegistCode"+email,timeCode,5, TimeUnit.MINUTES); + //发送 + return MailUtil.sendMail("疯子读书邮箱验证码",code,email); + } + + /** + * 绑定用户电话号 + * @return + */ + @RequestMapping("/updateUserTel") + public R updateUserTel(@RequestBody Map map){ + String phone = map.get("phone").toString(); + String code = map.get("code").toString(); + Integer id = Integer.valueOf(map.get("id").toString()); + //查询是否存在当前手机号 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(MyUserEntity::getTel,phone); + MyUserEntity userEntity = userService.getOne(wrapper); + if (userEntity == null) { + String redisCode = redisTemplate.opsForValue().get("RegistCode"+phone); + if(StringUtils.isEmpty(redisCode)){ + return R.error("验证码已过期,请重试"); + } + String lcode = redisCode.split("_")[0]; + if (!lcode.equals(code)) { + return R.error("短信验证码不符!"); + } + MyUserEntity userInfo = userService.getById(id); + userInfo.setTel(phone); + userService.updateById(userInfo); + return R.ok(); + }else { + return R.error("手机号已被绑定!"); + } + } + + /** + * 绑定用户邮件 + * @return + */ + @RequestMapping("/updateUserEmail") + public R updateUserEmail(@RequestBody Map map){ + String email = map.get("email").toString(); + String code = map.get("code").toString(); + Integer id = Integer.valueOf(map.get("id").toString()); + //查询是否存在当前邮箱 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(MyUserEntity::getEmail,email); + MyUserEntity userEntity = userService.getOne(wrapper); + if (userEntity == null) { + String redisCode = redisTemplate.opsForValue().get("RegistCode"+email); + if(StringUtils.isEmpty(redisCode)){ + return R.error("验证码已过期,请重试"); + } + String lcode = redisCode.split("_")[0]; + if (!lcode.equals(code)) { + return R.error("验证码不符!"); + } + MyUserEntity userInfo = userService.getById(id); + userInfo.setEmail(email); + userService.updateById(userInfo); + return R.ok(); + }else { + return R.error("邮箱已被绑定!"); + } + } + + /** + * 手机号验证码密码注册 + */ + @RequestMapping("/register") + public R register(@RequestParam("tel") String tel, + @RequestParam("code") String code, + @RequestParam("password") String password){ + String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel); + if (StringUtils.isEmpty(redisCode)){ + return R.error(500,"短信验证码已过期,请重试"); + } + String lcode = redisCode.split("_")[0]; + if (!lcode.equals(code)) { + return R.error(500,"短信验证码不符!"); + } + MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper().eq("tel", tel)); + if(!ObjectUtil.isEmpty(user)){ + return R.error(500,"该手机号已经注册!"); + } + String saltMD5 = MD5Utils.getSaltMD5(password); + MyUserEntity myUserEntity = new MyUserEntity(); + myUserEntity.setTel(tel); + myUserEntity.setPassword(saltMD5); + userService.save(myUserEntity); + R r = sysUserTokenService.createToken(myUserEntity.getId()); + return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); + } + + /** + * 手机号验证码注册或登录 + */ + @RequestMapping("/registerOrLogin") + public R register(String tel, String code) { + String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel); + System.out.println(redisCode); + if (StringUtils.isEmpty(redisCode)){ + return R.error(500,"验证码已过期,请重试"); + } + String lcode = redisCode.split("_")[0]; + if (!lcode.equals(code)) { + return R.error(500,"验证码不符!"); + } + //查询是否存在当前用户 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + if (tel.contains("@")){ + wrapper.eq(MyUserEntity::getEmail,tel); + }else { + wrapper.eq(MyUserEntity::getTel,tel); + } + MyUserEntity userEntity = userService.getOne(wrapper); + if (userEntity == null) { + // 用户不存在则创建用户 注册成功 + MyUserEntity myUserEntity = new MyUserEntity(); + if (tel.contains("@")){ + myUserEntity.setEmail(tel); + }else { + myUserEntity.setTel(tel); + } + userService.save(myUserEntity); + R r = sysUserTokenService.createToken(myUserEntity.getId()); + return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); + }else { + R r = sysUserTokenService.createToken(userEntity.getId()); + return R.ok("登录成功!").put("userInfo",userEntity).put("token",r); + } + } + + /** + * 账号密码登录 + */ + @RequestMapping("/login") + public R login(@RequestParam("phone") String phone, + @RequestParam("password") String password) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + if (phone.contains("@")) { + wrapper.eq(MyUserEntity::getEmail,phone); + }else { + wrapper.eq(MyUserEntity::getTel,phone); + } + //防止多账号报错 + MyUserEntity userEntity = userService.getOne(wrapper); + if (userEntity == null) { + return R.error(500,"用户不存在!"); + }else { + if (userEntity.getPassword() == null|| userEntity.getPassword().equals("")) { + return R.error(500,"当前未设置密码,请使用验证码登录!"); + }else { + if (MD5Utils.getSaltverifyMD5(password,userEntity.getPassword())){ + R r = sysUserTokenService.createToken(userEntity.getId()); + return R.ok("登陆成功!").put("userInfo",userEntity).put("token",r); + }else { + return R.error(500,"密码不正确,请重试!"); + } + } + } + } + + /** + * 设置密码 + */ + @RequestMapping("/setPassword") + public R setPassword(@RequestParam("phone") String phone, + @RequestParam("password") String password, + @RequestParam("code") String code) { + String redisCode = redisTemplate.opsForValue().get("RegistCode" + phone); + System.out.println(redisCode); + if (StringUtils.isEmpty(redisCode)){ + return R.error(500,"验证码已过期,请重试"); + } + String lcode = redisCode.split("_")[0]; + if (!lcode.equals(code)) { + return R.error(500,"验证码不符!"); + } + //查询是否存在当前用户 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (phone.contains("@")){ + wrapper.eq(MyUserEntity::getEmail, phone); + }else { + wrapper.eq(MyUserEntity::getTel, phone); + } + MyUserEntity userEntity = userService.getOne(wrapper); + if (userEntity == null) { + return R.error(500,"当前用户不存在!"); + } + String saltMD5 = MD5Utils.getSaltMD5(password); + userEntity.setPassword(saltMD5); + userService.updateById(userEntity); + return R.ok("成功"); + } + + diff --git a/src/main/java/com/peanut/modules/common/service/MyUserService.java b/src/main/java/com/peanut/modules/common/service/MyUserService.java new file mode 100644 index 00000000..3bdf05fc --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/MyUserService.java @@ -0,0 +1,10 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.MyUserEntity; + +public interface MyUserService extends IService { + + void sendCodeForRegister(String phone, String code,Integer areaCode) throws Exception; + +} diff --git a/src/main/java/com/peanut/modules/common/service/impl/MyUserServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/MyUserServiceImpl.java new file mode 100644 index 00000000..0cbb41cf --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/MyUserServiceImpl.java @@ -0,0 +1,62 @@ +package com.peanut.modules.common.service.impl; + +import com.aliyun.dysmsapi20170525.models.SendSmsRequest; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody; +import com.aliyun.tea.TeaException; +import com.aliyun.teautil.Common; +import com.aliyun.teautil.models.RuntimeOptions; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.app.config.SMSConfig; +import com.peanut.modules.app.config.Sample; +import com.peanut.modules.common.dao.MyUserDao; +import com.peanut.modules.common.entity.MyUserEntity; +import com.peanut.modules.common.service.MyUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service("myUserService") +public class MyUserServiceImpl extends ServiceImpl implements MyUserService { + + @Autowired + private SMSConfig smsConfig; + + @Override + public void sendCodeForRegister(String phone, String code, Integer areaCode) throws Exception { + String scode = code.split("_")[0]; + sendCode(phone,scode,areaCode); + } + + private void sendCode(String phone, String code, Integer areaCode) throws Exception { + com.aliyun.dysmsapi20170525.Client client = Sample.createClient(smsConfig.getAccessKeyId(),smsConfig.getAccessKeySecret()); + String tem; + if(areaCode!=null&&areaCode>0&&areaCode!=86){ + tem = smsConfig.getSTemplateCode(); + phone = areaCode+phone; + }else{ + tem = smsConfig.getTemplateCode(); + } + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setSignName(smsConfig.getSingName()) + .setTemplateCode(tem) + .setPhoneNumbers(phone) + .setTemplateParam("{\"code\":\""+ code +"\"}"); + RuntimeOptions runtime = new RuntimeOptions(); + try { + // 复制代码运行请自行打印 API 的返回值 + SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime); + SendSmsResponseBody body = sendSmsResponse.getBody(); + System.out.println(body.getMessage()); + } catch (TeaException error) { + // 如有需要,请打印 error + Common.assertAsString(error.message); + } catch (Exception _error) { + TeaException error = new TeaException(_error.getMessage(), _error); + // 如有需要,请打印 error + com.aliyun.teautil.Common.assertAsString(error.message); + } + } + +} From 92a582bee021f84efab0791e3793aa36120e3cc7 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 25 Mar 2024 11:27:37 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookLabelAndMarketController.java | 8 +-- .../common/controller/UserController.java | 66 ++++++++++--------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java index 7ee604b8..36e8efc4 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java @@ -236,9 +236,6 @@ public class BookLabelAndMarketController { @RequestMapping(path = "/saveToLabel") public R saveToLabel(@RequestBody Map params) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ShopProductToBookLabel::getBookLabelId,params.get("bookLabelId").toString()); - toLabelService.remove(wrapper); if (!StringUtils.isEmpty(params.get("productId").toString())){ String[] ids = params.get("productId").toString().split(","); if (ids.length > 0) { @@ -255,15 +252,12 @@ public class BookLabelAndMarketController { @RequestMapping(path = "/saveToMarket") public R saveToMarket(@RequestBody Map params) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ShopProductToBookMarket::getBookMarketId,params.get("bookMarketId").toString()); - toMarketService.remove(wrapper); if (!StringUtils.isEmpty(params.get("productId").toString())){ String[] ids = params.get("productId").toString().split(","); if (ids.length > 0) { for (String id : ids) { ShopProductToBookMarket toMarket = new ShopProductToBookMarket(); - toMarket.setBookMarketId(Integer.parseInt(params.get("bookLabelId").toString())); + toMarket.setBookMarketId(Integer.parseInt(params.get("bookMarketId").toString())); toMarket.setProductId(Integer.parseInt(id)); toMarketService.save(toMarket); } diff --git a/src/main/java/com/peanut/modules/common/controller/UserController.java b/src/main/java/com/peanut/modules/common/controller/UserController.java index 40c3a780..2cb7ef48 100644 --- a/src/main/java/com/peanut/modules/common/controller/UserController.java +++ b/src/main/java/com/peanut/modules/common/controller/UserController.java @@ -73,7 +73,7 @@ public class UserController { * 常规注册 发送邮箱验证码 */ @RequestMapping("/getMailCaptcha") - public R getMailCaptcha(String email) throws Exception { + public R getMailCaptcha(String email){ //验证一分钟内是否已经发过 String redisCode = redisTemplate.opsForValue().get("RegistCode" + email); if (!StringUtils.isEmpty(redisCode)) { @@ -94,7 +94,7 @@ public class UserController { } /** - * 绑定用户电话号 + * 绑定电话号 * @return */ @RequestMapping("/updateUserTel") @@ -125,7 +125,7 @@ public class UserController { } /** - * 绑定用户邮件 + * 绑定邮箱 * @return */ @RequestMapping("/updateUserEmail") @@ -156,35 +156,7 @@ public class UserController { } /** - * 手机号验证码密码注册 - */ - @RequestMapping("/register") - public R register(@RequestParam("tel") String tel, - @RequestParam("code") String code, - @RequestParam("password") String password){ - String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel); - if (StringUtils.isEmpty(redisCode)){ - return R.error(500,"短信验证码已过期,请重试"); - } - String lcode = redisCode.split("_")[0]; - if (!lcode.equals(code)) { - return R.error(500,"短信验证码不符!"); - } - MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper().eq("tel", tel)); - if(!ObjectUtil.isEmpty(user)){ - return R.error(500,"该手机号已经注册!"); - } - String saltMD5 = MD5Utils.getSaltMD5(password); - MyUserEntity myUserEntity = new MyUserEntity(); - myUserEntity.setTel(tel); - myUserEntity.setPassword(saltMD5); - userService.save(myUserEntity); - R r = sysUserTokenService.createToken(myUserEntity.getId()); - return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); - } - - /** - * 手机号验证码注册或登录 + * 验证码注册或登录 */ @RequestMapping("/registerOrLogin") public R register(String tel, String code) { @@ -285,6 +257,36 @@ public class UserController { return R.ok("成功"); } + /** + * 手机号验证码密码注册 -未在apipost + */ +// @RequestMapping("/register") +// public R register(@RequestParam("tel") String tel, +// @RequestParam("code") String code, +// @RequestParam("password") String password){ +// String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel); +// if (StringUtils.isEmpty(redisCode)){ +// return R.error(500,"短信验证码已过期,请重试"); +// } +// String lcode = redisCode.split("_")[0]; +// if (!lcode.equals(code)) { +// return R.error(500,"短信验证码不符!"); +// } +// MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper().eq("tel", tel)); +// if(!ObjectUtil.isEmpty(user)){ +// return R.error(500,"该手机号已经注册!"); +// } +// String saltMD5 = MD5Utils.getSaltMD5(password); +// MyUserEntity myUserEntity = new MyUserEntity(); +// myUserEntity.setTel(tel); +// myUserEntity.setPassword(saltMD5); +// userService.save(myUserEntity); +// R r = sysUserTokenService.createToken(myUserEntity.getId()); +// return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r); +// } + + + From 21a8309563eca7e87de4475b06ec5fec9fd1810f Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 25 Mar 2024 17:46:34 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=96=B0=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BookLabelAndMarketController.java | 29 ++--- .../common/controller/BaseAreaController.java | 84 ++++++++++++++ .../common/controller/ProvinceController.java | 82 ++++++++++++++ .../controller/UserAddressController.java | 106 ++++++++++++++++++ .../common/controller/UserController.java | 7 +- .../common/service/BaseAreaService.java | 12 ++ .../modules/common/service/CityService.java | 12 ++ .../modules/common/service/CountyService.java | 13 +++ .../common/service/ProvinceService.java | 16 +++ .../common/service/UserAddressService.java | 17 +++ .../service/impl/BaseAreaServiceImpl.java | 24 ++++ .../common/service/impl/CityServiceImpl.java | 29 +++++ .../service/impl/CountyServiceImpl.java | 28 +++++ .../service/impl/ProvinceServiceImpl.java | 59 ++++++++++ .../service/impl/UserAddressServiceImpl.java | 72 ++++++++++++ .../modules/common/vo/UserAddressVo.java | 49 ++++++++ .../controller/BuyConfigController.java | 82 ++++++++++++++ .../controller/PayPaymentOrderController.java | 70 ++++++++++++ .../controller/ShopProductController.java | 3 + .../master/service/BuyConfigService.java | 14 +++ .../service/PayPaymentOrderService.java | 12 ++ .../service/impl/BuyConfigServiceImpl.java | 29 +++++ .../impl/PayPaymentOrderServiceImpl.java | 31 +++++ 23 files changed, 858 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/peanut/modules/common/controller/BaseAreaController.java create mode 100644 src/main/java/com/peanut/modules/common/controller/ProvinceController.java create mode 100644 src/main/java/com/peanut/modules/common/controller/UserAddressController.java create mode 100644 src/main/java/com/peanut/modules/common/service/BaseAreaService.java create mode 100644 src/main/java/com/peanut/modules/common/service/CityService.java create mode 100644 src/main/java/com/peanut/modules/common/service/CountyService.java create mode 100644 src/main/java/com/peanut/modules/common/service/ProvinceService.java create mode 100644 src/main/java/com/peanut/modules/common/service/UserAddressService.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/BaseAreaServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/CityServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/CountyServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/ProvinceServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/UserAddressServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/vo/UserAddressVo.java create mode 100644 src/main/java/com/peanut/modules/master/controller/BuyConfigController.java create mode 100644 src/main/java/com/peanut/modules/master/controller/PayPaymentOrderController.java create mode 100644 src/main/java/com/peanut/modules/master/service/BuyConfigService.java create mode 100644 src/main/java/com/peanut/modules/master/service/PayPaymentOrderService.java create mode 100644 src/main/java/com/peanut/modules/master/service/impl/BuyConfigServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/master/service/impl/PayPaymentOrderServiceImpl.java diff --git a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java index 36e8efc4..638a392d 100644 --- a/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java +++ b/src/main/java/com/peanut/modules/book/controller/BookLabelAndMarketController.java @@ -1,7 +1,6 @@ package com.peanut.modules.book.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.R; @@ -267,28 +266,20 @@ public class BookLabelAndMarketController { } @RequestMapping(path = "/delToLable") - public R delToLable(String lableIds) { - if (!StringUtils.isEmpty(lableIds)) { - String[] ids = lableIds.split(","); - if (ids.length>0) { - for (String id : ids) { - toLabelService.removeById(id); - } - } - } + public R delToLable(String lableId,String productId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(ShopProductToBookLabel::getBookLabelId,lableId); + wrapper.eq(ShopProductToBookLabel::getProductId,productId); + toLabelService.remove(wrapper); return R.ok(); } @RequestMapping(path = "/delToMarket") - public R delToMarket(String marketds) { - if (!StringUtils.isEmpty(marketds)) { - String[] ids = marketds.split(","); - if (ids.length>0) { - for (String id : ids) { - toMarketService.removeById(id); - } - } - } + public R delToMarket(String marketId,String productId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(ShopProductToBookMarket::getBookMarketId,marketId); + wrapper.eq(ShopProductToBookMarket::getProductId,productId); + toMarketService.remove(wrapper); return R.ok(); } diff --git a/src/main/java/com/peanut/modules/common/controller/BaseAreaController.java b/src/main/java/com/peanut/modules/common/controller/BaseAreaController.java new file mode 100644 index 00000000..9f2716f1 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/controller/BaseAreaController.java @@ -0,0 +1,84 @@ +package com.peanut.modules.common.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.BaseAreaEntity; +import com.peanut.modules.common.service.BaseAreaService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.Map; + +/** + * 国家区域管理 + */ +@Slf4j +@RestController("commonBaseArea") +@RequestMapping("common/baseArea") +public class BaseAreaController { + + @Autowired + private BaseAreaService baseAreaService; + + /** + * 添加区域 + * @param baseArea + * @return + */ + @RequestMapping("/addBaseArea") + public R addBaseArea(@RequestBody BaseAreaEntity baseArea){ + baseAreaService.save(baseArea); + return R.ok(); + } + + /** + * 删除区域 + * @param map + * @return + */ + @RequestMapping("/delBaseArea") + public R delBaseArea(@RequestBody Map map){ + Integer areaId = Integer.valueOf(map.get("areaId").toString()); + baseAreaService.removeById(areaId); + return R.ok(); + } + + /** + * 编辑区域信息 + * @param baseArea + * @return + */ + @RequestMapping("/editBaseArea") + public R editBaseArea(@RequestBody BaseAreaEntity baseArea){ + baseAreaService.updateById(baseArea); + return R.ok(); + } + + /** + * 获取区域列表 + * @param map + * @return + */ + @RequestMapping("/getBaseAreas") + public R getBaseAreas(@RequestBody Map map){ + Integer limit = Integer.valueOf(map.get("limit").toString()); + Integer page = Integer.valueOf(map.get("page").toString()); + + Page baseAreas = baseAreaService.getBaseAreas(limit, page); + return R.ok().put("page",baseAreas); + } + + /** + * 获取全部国家领域 + * @return + */ + @RequestMapping("/getAllBaseArea") + public R getAllBaseArea(){ + List list = baseAreaService.list(); + return R.ok().put("baseAreas",list); + } + +} diff --git a/src/main/java/com/peanut/modules/common/controller/ProvinceController.java b/src/main/java/com/peanut/modules/common/controller/ProvinceController.java new file mode 100644 index 00000000..2725530f --- /dev/null +++ b/src/main/java/com/peanut/modules/common/controller/ProvinceController.java @@ -0,0 +1,82 @@ +package com.peanut.modules.common.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.City; +import com.peanut.modules.common.entity.County; +import com.peanut.modules.common.entity.Province; +import com.peanut.modules.common.service.CityService; +import com.peanut.modules.common.service.CountyService; +import com.peanut.modules.common.service.ProvinceService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 省市区管理 + */ +@Slf4j +@RestController("commonProvince") +@RequestMapping("common/province") +public class ProvinceController { + + @Autowired + private ProvinceService provinceService; + @Autowired + private CityService cityService; + @Autowired + private CountyService countyService; + @Autowired + private StringRedisTemplate redisTemplate; + + //获取地址 + @RequestMapping("/getProvince") + public R getProvince() { + //优化查询速度 目录放入redis中 + String s = redisTemplate.opsForValue().get("Province"); + List> listData = new ArrayList<>(); + if (StringUtils.isNotBlank(s)) { + List redisData = JSONArray.parseArray(s); + for (Object object : redisData) { + Map ret = (Map) object;//取出list里面的值转为map + listData.add(ret); + } + return R.ok().put("provinceEntity", listData); + } + List provinceList = provinceService.getCity(); + redisTemplate.opsForValue().set("Province", JSON.toJSONString(provinceList)); + return R.ok().put("provinceEntity", provinceList); + } + + //获取省列表 + @RequestMapping("/getProvinceList") + public R getProvinceList() { + List provinceList = provinceService.getBaseMapper().selectList(new QueryWrapper()); + return R.ok().put("provinceList", provinceList); + } + + //获取市列表 + @RequestMapping("/getCityList") + public R getCityList(@RequestParam("provId") Integer provId) { + List prov = cityService.getBaseMapper().selectList(new QueryWrapper() + .eq("prov_id", provId)); + return R.ok().put("prov", prov); + } + + //获取区列表 + @RequestMapping("/getCountyList") + public R getCountyList(@RequestParam("cityId") Integer cityId) { + List countyList = countyService.getBaseMapper().selectList(new QueryWrapper().eq("city_id", cityId)); + return R.ok().put("countyList", countyList); + } + +} diff --git a/src/main/java/com/peanut/modules/common/controller/UserAddressController.java b/src/main/java/com/peanut/modules/common/controller/UserAddressController.java new file mode 100644 index 00000000..93bc976e --- /dev/null +++ b/src/main/java/com/peanut/modules/common/controller/UserAddressController.java @@ -0,0 +1,106 @@ +package com.peanut.modules.common.controller; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.UserAddress; +import com.peanut.modules.common.service.UserAddressService; +import com.peanut.modules.common.vo.UserAddressVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + +/** + * 收货地址管理 + */ +@Slf4j +@RestController("commonUserAddress") +@RequestMapping("common/userAddress") +public class UserAddressController { + + @Autowired + private UserAddressService userAddressService; + + /** + * 获取地址信息 + */ + @RequestMapping("/info/{addressId}") + public R info(@PathVariable("addressId") Integer addressId) { + UserAddress userAddress = userAddressService.getById(addressId); + UserAddressVo vo = new UserAddressVo(); + BeanUtil.copyProperties(userAddress, vo); + vo = userAddressService.getAddressName(vo, userAddress.getRegionCode()); + return R.ok().put("result", vo); + } + + /** + * 保存 + */ + @RequestMapping("/save") + public R save(@RequestBody UserAddress userAddress) { + // 判断是否已经有默认的地址了 + if ((userAddressService.getUserDefaultAddressCount(userAddress.getUserId()) >= 1) && userAddress.getIsDefault() == 1) { + return R.error("已经存在默认地址"); + } + if(userAddress.getRegionCode()==null||userAddress.getRegionCode().equals("")){ + return R.error("地址异常添加失败!"); + } + String str = userAddress.getConsigneeName()+userAddress.getConsigneePhone()+userAddress.getDetailAddress(); + if(str.contains("+")||str.contains("&")){ + return R.error("信息中不能含有“+”、“&”符号!"); + } + userAddressService.save(userAddress); + return R.ok(); + } + + @RequestMapping("/update") + public R update(@RequestBody UserAddress userAddress) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + wrapper.eq(UserAddress::getId,userAddress.getId()); + wrapper.eq(UserAddress::getIsDefault,1); + UserAddress ua = userAddressService.getOne(wrapper); + if (ua == null){ + if ((userAddressService.getUserDefaultAddressCount(userAddress.getUserId()) >= 1) && userAddress.getIsDefault() == 1) { + return R.error("已经存在默认地址"); + } + } + String str = userAddress.getConsigneeName()+userAddress.getConsigneePhone()+userAddress.getDetailAddress(); + if(str.contains("+")||str.contains("&")){ + return R.error("信息中不能含有“+”、“&”符号!"); + } + userAddressService.updateById(userAddress); + return R.ok(); + } + + /** + * 删除用户地址 + */ + @RequestMapping(value = "/delete", method = RequestMethod.GET) + public R delete(@RequestParam("id") Integer id) { + userAddressService.removeById(id); + return R.ok(); + } + + /** + * 获取用户收货地址列表 + */ + @RequestMapping("/getUserAddress") + public R getUserAddress(@RequestParam("userId") Integer userId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id", userId); + queryWrapper.orderByDesc("is_default"); + List userAddressList = userAddressService.list(queryWrapper); + List result = new ArrayList<>(); + for (UserAddress userAddress : userAddressList) { + UserAddressVo vo = new UserAddressVo(); + BeanUtil.copyProperties(userAddress, vo); + vo = userAddressService.getAddressName(vo, userAddress.getRegionCode()); + result.add(vo); + } + return R.ok().put("list", result); + } + +} diff --git a/src/main/java/com/peanut/modules/common/controller/UserController.java b/src/main/java/com/peanut/modules/common/controller/UserController.java index 2cb7ef48..255153c3 100644 --- a/src/main/java/com/peanut/modules/common/controller/UserController.java +++ b/src/main/java/com/peanut/modules/common/controller/UserController.java @@ -1,9 +1,7 @@ package com.peanut.modules.common.controller; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.druid.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.peanut.common.utils.MD5Utils; import com.peanut.common.utils.MailUtil; import com.peanut.common.utils.R; @@ -21,8 +19,11 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.TimeUnit; +/** + * 用户登陆注册验证码 + */ @Slf4j -@RestController +@RestController("commonUser") @RequestMapping("common/user") public class UserController { diff --git a/src/main/java/com/peanut/modules/common/service/BaseAreaService.java b/src/main/java/com/peanut/modules/common/service/BaseAreaService.java new file mode 100644 index 00000000..0278ea56 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/BaseAreaService.java @@ -0,0 +1,12 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.BaseAreaEntity; + +public interface BaseAreaService extends IService { + + Page getBaseAreas(Integer limit, Integer page); + +} + diff --git a/src/main/java/com/peanut/modules/common/service/CityService.java b/src/main/java/com/peanut/modules/common/service/CityService.java new file mode 100644 index 00000000..66e04644 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/CityService.java @@ -0,0 +1,12 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.City; +import java.util.Map; + +public interface CityService extends IService { + + PageUtils queryPage(Map params); + +} diff --git a/src/main/java/com/peanut/modules/common/service/CountyService.java b/src/main/java/com/peanut/modules/common/service/CountyService.java new file mode 100644 index 00000000..29d021bd --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/CountyService.java @@ -0,0 +1,13 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.County; + +import java.util.Map; + +public interface CountyService extends IService { + + PageUtils queryPage(Map params); +} + diff --git a/src/main/java/com/peanut/modules/common/service/ProvinceService.java b/src/main/java/com/peanut/modules/common/service/ProvinceService.java new file mode 100644 index 00000000..09c33845 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/ProvinceService.java @@ -0,0 +1,16 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.Province; +import java.util.List; +import java.util.Map; + +public interface ProvinceService extends IService { + + PageUtils queryPage(Map params); + + List getCity(); + +} + diff --git a/src/main/java/com/peanut/modules/common/service/UserAddressService.java b/src/main/java/com/peanut/modules/common/service/UserAddressService.java new file mode 100644 index 00000000..a5a52c23 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/UserAddressService.java @@ -0,0 +1,17 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.UserAddress; +import com.peanut.modules.common.vo.UserAddressVo; +import java.util.Map; + +public interface UserAddressService extends IService { + + PageUtils queryPage(Map params); + + UserAddressVo getAddressName(UserAddressVo vo, String regionCode); + + int getUserDefaultAddressCount(Integer userId); + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/BaseAreaServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/BaseAreaServiceImpl.java new file mode 100644 index 00000000..3058f6cd --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/BaseAreaServiceImpl.java @@ -0,0 +1,24 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.common.dao.BaseAreaDao; +import com.peanut.modules.common.entity.BaseAreaEntity; +import com.peanut.modules.common.service.BaseAreaService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service("commonBaseAreaService") +public class BaseAreaServiceImpl extends ServiceImpl implements BaseAreaService { + + @Override + public Page getBaseAreas(Integer limit, Integer page) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BaseAreaEntity::getDelFlag,0); + Page baseAreaEntityPage = getBaseMapper().selectPage(new Page(page, limit), wrapper); + return baseAreaEntityPage; + } + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/CityServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/CityServiceImpl.java new file mode 100644 index 00000000..d7aa5ef3 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/CityServiceImpl.java @@ -0,0 +1,29 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.CityDao; +import com.peanut.modules.common.entity.City; +import com.peanut.modules.common.service.CityService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Slf4j +@Service("commonCityService") +public class CityServiceImpl extends ServiceImpl implements CityService { + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper() + ); + return new PageUtils(page); + } + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/CountyServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/CountyServiceImpl.java new file mode 100644 index 00000000..ae7baaa8 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/CountyServiceImpl.java @@ -0,0 +1,28 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.CountyDao; +import com.peanut.modules.common.entity.County; +import com.peanut.modules.common.service.CountyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import java.util.Map; + +@Slf4j +@Service("commonCountyService") +public class CountyServiceImpl extends ServiceImpl implements CountyService { + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper() + ); + return new PageUtils(page); + } + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/ProvinceServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ProvinceServiceImpl.java new file mode 100644 index 00000000..23d46453 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/ProvinceServiceImpl.java @@ -0,0 +1,59 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.ProvinceDao; +import com.peanut.modules.common.entity.City; +import com.peanut.modules.common.entity.County; +import com.peanut.modules.common.entity.Province; +import com.peanut.modules.common.service.CityService; +import com.peanut.modules.common.service.CountyService; +import com.peanut.modules.common.service.ProvinceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Slf4j +@Service("commonProvinceService") +public class ProvinceServiceImpl extends ServiceImpl implements ProvinceService { + + @Autowired + private CityService cityService; + @Autowired + private CountyService countyService; + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper() + ); + + return new PageUtils(page); + } + + @Override + public List getCity() { + List provinceList = this.baseMapper.selectList(new QueryWrapper()); + for (Province province:provinceList){ + List prov = cityService.getBaseMapper().selectList(new QueryWrapper() + .eq("prov_id", province.getProvId())); + if (prov.size() > 0) { + for (City city : prov) { + List countyList = countyService.getBaseMapper().selectList(new QueryWrapper().eq("city_id", city.getCityId())); + if (countyList != null) { + city.setCountyList(countyList); + } + } + province.setCityList(prov); + } + } + return provinceList; + } +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/UserAddressServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/UserAddressServiceImpl.java new file mode 100644 index 00000000..07f3ba8a --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/UserAddressServiceImpl.java @@ -0,0 +1,72 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.UserAddressDao; +import com.peanut.modules.common.entity.City; +import com.peanut.modules.common.entity.County; +import com.peanut.modules.common.entity.Province; +import com.peanut.modules.common.entity.UserAddress; +import com.peanut.modules.common.service.CityService; +import com.peanut.modules.common.service.CountyService; +import com.peanut.modules.common.service.ProvinceService; +import com.peanut.modules.common.service.UserAddressService; +import com.peanut.modules.common.vo.UserAddressVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Slf4j +@Service("commonUserAddressService") +public class UserAddressServiceImpl extends ServiceImpl implements UserAddressService { + @Autowired + private CountyService countyService; + + @Autowired + private CityService cityService; + + @Autowired + private ProvinceService provinceService; + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper<>() + ); + return new PageUtils(page); + } + + @Override + public UserAddressVo getAddressName(UserAddressVo vo, String regionCode) { + QueryWrapper countyQueryWrapper = new QueryWrapper<>(); + countyQueryWrapper.eq("region_code", regionCode); + County county = countyService.getOne(countyQueryWrapper); + if(county==null){ + return null; + } + vo.setCounty(county.getCountyName()); + LambdaQueryWrapper cityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + cityLambdaQueryWrapper.eq(City::getCityId,county.getCityId()); + City city = cityService.getOne(cityLambdaQueryWrapper); + vo.setCity(city.getCityName()); + LambdaQueryWrapper provinceLambdaQueryWrapper = new LambdaQueryWrapper<>(); + provinceLambdaQueryWrapper.eq(Province::getProvId,city.getProvId()); + Province province = provinceService.getOne(provinceLambdaQueryWrapper); + vo.setProvince((province.getProvName())); + return vo; + } + + public int getUserDefaultAddressCount(Integer userId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id", userId); + queryWrapper.eq("is_default", 1); + return this.count(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/vo/UserAddressVo.java b/src/main/java/com/peanut/modules/common/vo/UserAddressVo.java new file mode 100644 index 00000000..fdf35dcb --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/UserAddressVo.java @@ -0,0 +1,49 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +@Data +public class UserAddressVo { + + /** + * id + */ + private int id; + /** + * 会员 ID + */ + private Integer userId; + /** + * 收货人 + */ + private String consigneeName; + /** + * 收货人手机号码 + */ + private String consigneePhone; + /** + * 区域代码 + */ + private String regionCode; + /** + * 详细地址 + */ + private String detailAddress; + /** + * 默认 + */ + private Integer isDefault; + /** + * 省 + */ + private String province; + /** + * 城市 + */ + private String city; + /** + * 县 + */ + private String county; + +} diff --git a/src/main/java/com/peanut/modules/master/controller/BuyConfigController.java b/src/main/java/com/peanut/modules/master/controller/BuyConfigController.java new file mode 100644 index 00000000..b2ab906e --- /dev/null +++ b/src/main/java/com/peanut/modules/master/controller/BuyConfigController.java @@ -0,0 +1,82 @@ +package com.peanut.modules.master.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.BookBuyConfigEntity; +import com.peanut.modules.master.service.BuyConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 充值价格表单管理 + */ +@Slf4j +@RestController("masterBookBuyConfig") +@RequestMapping("master/bookBuyConfig") +public class BuyConfigController { + + @Autowired + private BuyConfigService buyConfigService; + + /** + * 列表 + */ + @RequestMapping("/list") + public R list(@RequestParam Map params){ + PageUtils page = buyConfigService.queryPage(params); + return R.ok().put("page", page); + } + + /** + * 信息 + */ + @RequestMapping("/info/{priceTypeId}") + public R info(@PathVariable("priceTypeId") Integer priceTypeId){ + BookBuyConfigEntity bookBuyConfig = buyConfigService.getById(priceTypeId); + return R.ok().put("bookBuyConfig", bookBuyConfig); + } + + /** + * 保存 + */ + @RequestMapping("/save") + public R save(@RequestBody BookBuyConfigEntity bookBuyConfig){ + buyConfigService.save(bookBuyConfig); + return R.ok(); + } + + /** + * 修改 + */ + @RequestMapping("/update") + public R update(@RequestBody BookBuyConfigEntity bookBuyConfig){ + buyConfigService.updateById(bookBuyConfig); + return R.ok(); + } + + /** + * 删除 + */ + @RequestMapping("/delete") + public R delete(@RequestBody Integer[] priceTypeIds){ + buyConfigService.removeByIds(Arrays.asList(priceTypeIds)); + return R.ok(); + } + + /** + * 获取VIP 金额 或者充值类型 + */ + @RequestMapping("/getVipOrPoint") + public R getVipOrPoint(@RequestParam("type") String type,@RequestParam("qudao") String qudao){ + List bookBuyConfigEntities = buyConfigService.getBaseMapper().selectList(new QueryWrapper().eq("type",type).eq("qudao",qudao)); + return R.ok().put("list",bookBuyConfigEntities); + } + + + +} diff --git a/src/main/java/com/peanut/modules/master/controller/PayPaymentOrderController.java b/src/main/java/com/peanut/modules/master/controller/PayPaymentOrderController.java new file mode 100644 index 00000000..92878193 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/controller/PayPaymentOrderController.java @@ -0,0 +1,70 @@ +package com.peanut.modules.master.controller; + +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.PayPaymentOrderEntity; +import com.peanut.modules.master.service.PayPaymentOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.Arrays; +import java.util.Map; + +/** + * 充值订单表 + */ +@Slf4j +@RestController("masterPayPaymentOrder") +@RequestMapping("master/payPaymentOrder") +public class PayPaymentOrderController { + + @Autowired + private PayPaymentOrderService payPaymentOrderService; + + /** + * 列表 + */ + @RequestMapping("/list") + public R list(@RequestParam Map params){ + PageUtils page = payPaymentOrderService.queryPage(params); + return R.ok().put("page", page); + } + + + /** + * 信息 + */ + @RequestMapping("/info/{id}") + public R info(@PathVariable("id") Long id){ + PayPaymentOrderEntity payPaymentOrder = payPaymentOrderService.getById(id); + return R.ok().put("payPaymentOrder", payPaymentOrder); + } + + /** + * 保存 + */ + @RequestMapping("/save") + public R save(@RequestBody PayPaymentOrderEntity payPaymentOrder){ + payPaymentOrderService.save(payPaymentOrder); + return R.ok(); + } + + /** + * 修改 + */ + @RequestMapping("/update") + public R update(@RequestBody PayPaymentOrderEntity payPaymentOrder){ + payPaymentOrderService.updateById(payPaymentOrder); + return R.ok(); + } + + /** + * 删除 + */ + @RequestMapping("/delete") + public R delete(@RequestBody Long[] ids){ + payPaymentOrderService.removeByIds(Arrays.asList(ids)); + return R.ok(); + } + +} diff --git a/src/main/java/com/peanut/modules/master/controller/ShopProductController.java b/src/main/java/com/peanut/modules/master/controller/ShopProductController.java index cc911b99..2d20dd6c 100644 --- a/src/main/java/com/peanut/modules/master/controller/ShopProductController.java +++ b/src/main/java/com/peanut/modules/master/controller/ShopProductController.java @@ -13,6 +13,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Map; +/** + * 商品 + */ @Slf4j @RestController("masterShopProduct") @RequestMapping("master/shopProduct") diff --git a/src/main/java/com/peanut/modules/master/service/BuyConfigService.java b/src/main/java/com/peanut/modules/master/service/BuyConfigService.java new file mode 100644 index 00000000..2294a9c4 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/service/BuyConfigService.java @@ -0,0 +1,14 @@ +package com.peanut.modules.master.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.BookBuyConfigEntity; + +import java.util.Map; + +public interface BuyConfigService extends IService { + + PageUtils queryPage(Map params); + +} + diff --git a/src/main/java/com/peanut/modules/master/service/PayPaymentOrderService.java b/src/main/java/com/peanut/modules/master/service/PayPaymentOrderService.java new file mode 100644 index 00000000..68861630 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/service/PayPaymentOrderService.java @@ -0,0 +1,12 @@ +package com.peanut.modules.master.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.PageUtils; +import com.peanut.modules.common.entity.PayPaymentOrderEntity; +import java.util.Map; + +public interface PayPaymentOrderService extends IService { + + PageUtils queryPage(Map params); + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/master/service/impl/BuyConfigServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/BuyConfigServiceImpl.java new file mode 100644 index 00000000..02d36094 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/service/impl/BuyConfigServiceImpl.java @@ -0,0 +1,29 @@ +package com.peanut.modules.master.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.BookBuyConfigDao; +import com.peanut.modules.common.entity.BookBuyConfigEntity; +import com.peanut.modules.master.service.BuyConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Slf4j +@Service("buyConfigService") +public class BuyConfigServiceImpl extends ServiceImpl implements BuyConfigService { + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper() + ); + return new PageUtils(page); + } + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/master/service/impl/PayPaymentOrderServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/PayPaymentOrderServiceImpl.java new file mode 100644 index 00000000..ecb73a73 --- /dev/null +++ b/src/main/java/com/peanut/modules/master/service/impl/PayPaymentOrderServiceImpl.java @@ -0,0 +1,31 @@ +package com.peanut.modules.master.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.ExcludeEmptyQueryWrapper; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.Query; +import com.peanut.modules.common.dao.PayPaymentOrderDao; +import com.peanut.modules.common.entity.PayPaymentOrderEntity; +import com.peanut.modules.master.service.PayPaymentOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Slf4j +@Service("masterPayPaymentOrderService") +public class PayPaymentOrderServiceImpl extends ServiceImpl implements PayPaymentOrderService { + + @Override + public PageUtils queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new ExcludeEmptyQueryWrapper() + .eq("tel",params.get("key")) + .or().like("user_name",params.get("key")).orderByDesc("create_time") + ); + return new PageUtils(page); + } + +} \ No newline at end of file From 1cfa376ade7b0a59db1513a689c9879cc92aaa6e Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 26 Mar 2024 11:25:00 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=A8=A1=E5=9D=97-?= =?UTF-8?q?=E5=BF=AB=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/ExpressController.java | 121 +++++++++++++++ .../modules/common/dao/ExpressCompanyDao.java | 3 +- .../common/service/ExpressCompanyService.java | 12 ++ .../common/service/ExpressOrderService.java | 15 ++ .../impl/ExpressCompanyServiceImpl.java | 25 +++ .../service/impl/ExpressOrderServiceImpl.java | 145 ++++++++++++++++++ .../modules/common/to/ExpressPrintDto.java | 27 ++++ .../peanut/modules/common/vo/DutiableVo.java | 14 ++ .../common/vo/ExpressCompanyCommonVo.java | 18 +++ .../modules/common/vo/ExpressCompanyVo.java | 18 +++ .../common/vo/ExpressOrderRequestVo.java | 102 ++++++++++++ .../common/vo/ExpressOrderResponseVo.java | 34 ++++ .../common/vo/ExpressQueryRequestVo.java | 22 +++ .../common/vo/ExpressResponseOrderVo.java | 70 +++++++++ .../modules/common/vo/ExpressUserInfoVo.java | 38 +++++ .../modules/common/vo/PrintTemplateVo.java | 26 ++++ .../mapper/book/ExpressCompanyDao.xml | 4 + 17 files changed, 693 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/peanut/modules/common/controller/ExpressController.java create mode 100644 src/main/java/com/peanut/modules/common/service/ExpressCompanyService.java create mode 100644 src/main/java/com/peanut/modules/common/service/ExpressOrderService.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/ExpressCompanyServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/service/impl/ExpressOrderServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/common/to/ExpressPrintDto.java create mode 100644 src/main/java/com/peanut/modules/common/vo/DutiableVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressCompanyCommonVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressCompanyVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressOrderRequestVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressOrderResponseVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressQueryRequestVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressResponseOrderVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/ExpressUserInfoVo.java create mode 100644 src/main/java/com/peanut/modules/common/vo/PrintTemplateVo.java diff --git a/src/main/java/com/peanut/modules/common/controller/ExpressController.java b/src/main/java/com/peanut/modules/common/controller/ExpressController.java new file mode 100644 index 00000000..4190852c --- /dev/null +++ b/src/main/java/com/peanut/modules/common/controller/ExpressController.java @@ -0,0 +1,121 @@ +package com.peanut.modules.common.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.peanut.common.utils.HttpsUtil; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.ExpressCompany; +import com.peanut.modules.common.entity.ExpressOrder; +import com.peanut.modules.common.service.ExpressCompanyService; +import com.peanut.modules.common.service.ExpressOrderService; +import com.peanut.modules.common.to.ExpressPrintDto; +import com.peanut.modules.common.vo.ExpressCompanyCommonVo; +import com.peanut.modules.common.vo.PrintTemplateVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 快递 + */ +@Slf4j +@RestController("commonExpress") +@RequestMapping("common/express") +public class ExpressController { + + @Autowired + private ExpressCompanyService expressCompanyService; + @Autowired + private ExpressOrderService expressOrderService; + + + /** + * 获取快递公司列表 + * + * @return R + */ + @RequestMapping(path = "/getExpressCompanyList", method = RequestMethod.GET) + public R getExpressCompanyList() { + List expressCompanyList = expressCompanyService.getExpressCompanyList(); + return R.ok().put("result",expressCompanyList); + } + + /** + * 获取面单列表 + * @param expressPrintDto + * @return + */ + @RequestMapping("/getExpressPrints") + public R getExpressPrints(@RequestBody ExpressPrintDto expressPrintDto) throws IOException { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(expressPrintDto.getExpressOrderSn()),ExpressOrder::getExpressOrderSn,expressPrintDto.getExpressOrderSn()); + if(expressPrintDto.getDate()!=null&&expressPrintDto.getDate()!=""){ + String startDate = expressPrintDto.getDate()+" 00:00:00"; + String endDate = expressPrintDto.getDate()+" 23:59:59"; + wrapper.between(ExpressOrder::getCreateTime,startDate,endDate); + } + wrapper.eq(expressPrintDto.getType()!=0,ExpressOrder::getTemplatePrinted,expressPrintDto.getType()==1?1:0); + wrapper.orderByDesc(ExpressOrder::getCreateTime); + Page expressOrderPage = expressOrderService.getBaseMapper().selectPage(new Page<>(expressPrintDto.getPage(), expressPrintDto.getLimit()), wrapper); + for (ExpressOrder e :expressOrderPage.getRecords()){ + if(e.getPrintTemplate()!=null){ + String c_string = HttpsUtil.getHttps(e.getPrintTemplate()); + e.setPrintString(c_string); + } + } + return R.ok().put("page",expressOrderPage); + } + + /** + * 获取快递面单列表(废弃) + * + * @return R + */ + @RequestMapping(path = "/getPrintTemplateList", method = RequestMethod.GET) + public R getPrintTemplate(@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, + @RequestParam(value = "currentPage", defaultValue = "1") Integer currentPage) { + Page expressOrderPage = new Page<>(currentPage, pageSize); + QueryWrapper expressOrderQueryWrapper = new QueryWrapper<>(); + + int totalDataSize = expressOrderService.count(expressOrderQueryWrapper); + int totalPage = totalDataSize / pageSize + 1; + Page page = expressOrderService.page(expressOrderPage, expressOrderQueryWrapper); + List expressOrderList = page.getRecords(); + List data = new ArrayList<>(); + for (ExpressOrder expressOrder : expressOrderList) { + PrintTemplateVo vo = new PrintTemplateVo(); + QueryWrapper expressCompanyQueryWrapper = new QueryWrapper<>(); + expressCompanyQueryWrapper.eq("code", expressOrder.getExpressCompanyCode()); + ExpressCompany expressCompany = expressCompanyService.getOne(expressCompanyQueryWrapper); + vo.setExpressCompanyCode(expressCompany.getName()); + vo.setPrintTemplate(expressOrder.getPrintTemplate()); + vo.setExpressOrderSn(expressOrder.getExpressOrderSn()); + vo.setTemplatedPrinted(vo.getTemplatedPrinted()); + data.add(vo); + } + Map result = new HashMap<>(); + result.put("data", data); + result.put("currentPage", currentPage); + result.put("pageSize", pageSize); + result.put("totalDataSize", totalDataSize); + result.put("totalPage", totalPage); + return R.ok().put("result", result); + } + + @RequestMapping(value = "/printTemplate", method = RequestMethod.POST) + public R printTemplate(@RequestBody List expressOrderIdList) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("template_printed", 1); + updateWrapper.in("id", expressOrderIdList); + expressOrderService.update(updateWrapper); + return R.ok(); + } +} diff --git a/src/main/java/com/peanut/modules/common/dao/ExpressCompanyDao.java b/src/main/java/com/peanut/modules/common/dao/ExpressCompanyDao.java index ce032400..4206f5d3 100644 --- a/src/main/java/com/peanut/modules/common/dao/ExpressCompanyDao.java +++ b/src/main/java/com/peanut/modules/common/dao/ExpressCompanyDao.java @@ -3,8 +3,8 @@ package com.peanut.modules.common.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.peanut.modules.common.entity.ExpressCompany; import com.peanut.modules.book.vo.ExpressCompanyVo; +import com.peanut.modules.common.vo.ExpressCompanyCommonVo; import org.apache.ibatis.annotations.Mapper; - import java.util.List; /** @@ -15,4 +15,5 @@ import java.util.List; @Mapper public interface ExpressCompanyDao extends BaseMapper { List getExpressCompanyList(); + List getExpressComList(); } diff --git a/src/main/java/com/peanut/modules/common/service/ExpressCompanyService.java b/src/main/java/com/peanut/modules/common/service/ExpressCompanyService.java new file mode 100644 index 00000000..32a6ef7e --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/ExpressCompanyService.java @@ -0,0 +1,12 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.ExpressCompany; +import com.peanut.modules.common.vo.ExpressCompanyCommonVo; +import java.util.List; + +public interface ExpressCompanyService extends IService { + //获取快递公司列表 + List getExpressCompanyList(); + +} diff --git a/src/main/java/com/peanut/modules/common/service/ExpressOrderService.java b/src/main/java/com/peanut/modules/common/service/ExpressOrderService.java new file mode 100644 index 00000000..dc90a94e --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/ExpressOrderService.java @@ -0,0 +1,15 @@ +package com.peanut.modules.common.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.ExpressOrder; +import com.peanut.modules.common.entity.ExpressQueryResponse; +import com.peanut.modules.common.vo.ExpressOrderResponseVo; + +public interface ExpressOrderService extends IService { + /** + * 下单生成面单 + */ + ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder); + + ExpressQueryResponse queryExpressOrder(String ShipperCode, String LogisticCode, String customerName); +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/service/impl/ExpressCompanyServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ExpressCompanyServiceImpl.java new file mode 100644 index 00000000..1d9c8cad --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/ExpressCompanyServiceImpl.java @@ -0,0 +1,25 @@ +package com.peanut.modules.common.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.common.dao.ExpressCompanyDao; +import com.peanut.modules.common.entity.ExpressCompany; +import com.peanut.modules.common.service.ExpressCompanyService; +import com.peanut.modules.common.vo.ExpressCompanyCommonVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.List; + +@Slf4j +@Service("commonExpressCompanyService") +public class ExpressCompanyServiceImpl extends ServiceImpl implements ExpressCompanyService { + + @Autowired + private ExpressCompanyDao expressCompanyDao; + + @Override + public List getExpressCompanyList() { + return expressCompanyDao.getExpressComList(); + } + +} diff --git a/src/main/java/com/peanut/modules/common/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ExpressOrderServiceImpl.java new file mode 100644 index 00000000..352ea2ed --- /dev/null +++ b/src/main/java/com/peanut/modules/common/service/impl/ExpressOrderServiceImpl.java @@ -0,0 +1,145 @@ +package com.peanut.modules.common.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.HttpClientUtils; +import com.peanut.common.utils.KdUtils; +import com.peanut.config.Constants; +import com.peanut.modules.common.dao.ExpressOrderDao; +import com.peanut.modules.common.entity.ExpressCommodity; +import com.peanut.modules.common.entity.ExpressOrder; +import com.peanut.modules.common.entity.ExpressQueryResponse; +import com.peanut.modules.common.service.ExpressOrderService; +import com.peanut.modules.common.vo.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service("commonExpressOrderService") +public class ExpressOrderServiceImpl extends ServiceImpl implements ExpressOrderService { + + @Value("${express.sender.senderName}") + private String senderName; + @Value("${express.sender.mobile}") + private String senderMobile; + @Value("${express.sender.provinceName}") + private String senderProvinceName; + @Value("${express.sender.cityName}") + private String senderCityName; + @Value("${express.sender.expAreaName}") + private String senderExpAreaName; + @Value("${express.sender.address}") + private String senderAddress; + + + @Override + public ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder) { + ExpressOrderRequestVo orderRequestVo = new ExpressOrderRequestVo(); + // 订单号 + orderRequestVo.setOrderCode(expressOrder.getOrderSn()); + orderRequestVo.setIsReturnPrintTemplate(1); + orderRequestVo.setShipperCode(expressOrder.getExpressCompanyCode()); + orderRequestVo.setPayType(3); + if (expressOrder.getExpressCompanyCode().equals(Constants.EXPRESS_COMPANY_CODE_SF)) { + orderRequestVo.setMonthCode(Constants.EXPRESS_SF_MONTH_CODE); + //如果是顺丰港澳台,参数多两个必填CurrencyCode、Dutiable.DeclaredValue + if ("台湾省".equals(expressOrder.getProvince())|| + "香港特别行政区".equals(expressOrder.getProvince())|| + "澳门特别行政区".equals(expressOrder.getProvince())){ + orderRequestVo.setCurrencyCode("CNY"); + BigDecimal declaredValue = new BigDecimal(0); + if (expressOrder.getCommodity().size()>0){ + for (ExpressCommodity commodity : expressOrder.getCommodity()) { + BigDecimal quantity = BigDecimal.valueOf(commodity.getGoodsquantity()); + BigDecimal price = BigDecimal.valueOf(commodity.getGoodsPrice()); + BigDecimal total = quantity.multiply(price); + declaredValue = declaredValue.add(total); + } + } + DutiableVo dutiable = new DutiableVo(); + dutiable.setDeclaredValue(declaredValue.setScale(3)); + orderRequestVo.setDutiable(dutiable); + } + } + if (expressOrder.getExpressCompanyCode().equals(Constants.EXPRESS_COMPANY_CODE_YD)) { + orderRequestVo.setCustomerName(Constants.EXPRESS_YD_CUSTOMER_NAME); + orderRequestVo.setCustomerPwd(Constants.EXPRESS_YD_CUSTOMER_PWD); + } + orderRequestVo.setExpType(231);//1特快2标快 + orderRequestVo.setCost(expressOrder.getExpressFee().doubleValue()); + // 发货人 + ExpressUserInfoVo sender = new ExpressUserInfoVo(); + sender.setName(senderName); + sender.setMobile(senderMobile); + sender.setProvinceName(senderProvinceName); + sender.setCityName(senderCityName); + sender.setExpAreaName(senderExpAreaName); + sender.setAddress(senderAddress); + // 收货人 + ExpressUserInfoVo receiver = new ExpressUserInfoVo(); + receiver.setName(expressOrder.getConsigneeName()); + receiver.setMobile(expressOrder.getConsigneeMobile()); + receiver.setProvinceName(expressOrder.getProvince()); + receiver.setCityName(expressOrder.getCity()); + receiver.setExpAreaName(expressOrder.getCounty()); + receiver.setAddress(expressOrder.getAddress()); + orderRequestVo.setSender(sender); + orderRequestVo.setReceiver(receiver); + orderRequestVo.setCommodity(expressOrder.getCommodity()); + orderRequestVo.setWeight(expressOrder.getTotalWeight().doubleValue()); + orderRequestVo.setRemark(expressOrder.getRemark()); + orderRequestVo.setTemplateSize("150"); + String requestData = JSONObject.toJSONString(orderRequestVo); + //如果是顺丰港澳台,参数多两个必填CurrencyCode、Dutiable.DeclaredValue,需要大写 + String requestDataUpperCase = requestData; + if (requestData.contains("currencyCode")){ + requestDataUpperCase = requestData.replace("currencyCode","CurrencyCode") + .replace("dutiable","Dutiable") + .replace("declaredValue","DeclaredValue"); + } + + Map params = new HashMap<>(); + params.put("RequestData", requestDataUpperCase); + params.put("EBusinessID", Constants.EXPRESS_BUSINESS_ID); + params.put("RequestType", Constants.EXPRESS_REQUEST_TYPE_PLACE_ORDER); + try { + String dataSign = KdUtils.encrypt(requestDataUpperCase, Constants.EXPRESS_API_KEY, "UTF-8"); + params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8")); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + } + params.put("DataType", "2"); + + String response = HttpClientUtils.kdSendPost(Constants.EXPRESS_PLACE_ORDER_URL, params); + return JSONObject.parseObject(response, ExpressOrderResponseVo.class); + } + + @Override + public ExpressQueryResponse queryExpressOrder(String shipperCode, String logisticCode, String customerName) { + ExpressQueryRequestVo requestVo = new ExpressQueryRequestVo(); + requestVo.setLogisticCode(logisticCode); + requestVo.setCustomerName(customerName); + requestVo.setShipperCode(shipperCode); + String requestData = JSONObject.toJSONString(requestVo); + Map params = new HashMap<>(); + params.put("RequestData", requestData); + params.put("EBusinessID", Constants.EXPRESS_BUSINESS_ID); + params.put("RequestType", Constants.EXPRESS_REQUEST_TYPE_QUERY); + try { + String dataSign = KdUtils.encrypt(requestData, Constants.EXPRESS_API_KEY, "UTF-8"); + params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8")); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + } + params.put("DateType", "2"); + String response = HttpClientUtils.kdSendPost(Constants.EXPRESS_QUERY_URL, params); + return JSONObject.parseObject(response, ExpressQueryResponse.class); + } +} diff --git a/src/main/java/com/peanut/modules/common/to/ExpressPrintDto.java b/src/main/java/com/peanut/modules/common/to/ExpressPrintDto.java new file mode 100644 index 00000000..79a43895 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/to/ExpressPrintDto.java @@ -0,0 +1,27 @@ +package com.peanut.modules.common.to; + +import lombok.Data; + +@Data +public class ExpressPrintDto { + + /** + * 时间2023-10-10 + */ + private String date; + + /** + * 快递订单号 + */ + private String expressOrderSn; + + /** + * 类型,0不限1已打印2未打印 + */ + private Integer type; + + private Integer limit; + + private Integer page; +} + diff --git a/src/main/java/com/peanut/modules/common/vo/DutiableVo.java b/src/main/java/com/peanut/modules/common/vo/DutiableVo.java new file mode 100644 index 00000000..b63580dd --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/DutiableVo.java @@ -0,0 +1,14 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 申报价值 + */ +@Data +public class DutiableVo { + + private BigDecimal DeclaredValue; + +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressCompanyCommonVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressCompanyCommonVo.java new file mode 100644 index 00000000..61dac5e7 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressCompanyCommonVo.java @@ -0,0 +1,18 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递公司 Vo + */ +@Data +public class ExpressCompanyCommonVo { + /** + * 快递公司名称 + */ + private String expressName; + /** + * 快递公司编码 + */ + private String expressCode; +} diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressCompanyVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressCompanyVo.java new file mode 100644 index 00000000..27b84401 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressCompanyVo.java @@ -0,0 +1,18 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递公司 Vo + */ +@Data +public class ExpressCompanyVo { + /** + * 快递公司名称 + */ + private String expressName; + /** + * 快递公司编码 + */ + private String expressCode; +} \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressOrderRequestVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressOrderRequestVo.java new file mode 100644 index 00000000..1aab9738 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressOrderRequestVo.java @@ -0,0 +1,102 @@ +package com.peanut.modules.common.vo; + + +import com.peanut.modules.common.entity.ExpressCommodity; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 快递请求 Value Object + */ +@Data +public class ExpressOrderRequestVo { + /** + * 订单号 + */ + private String OrderCode; + /** + * 快递公司编码 + */ + private String ShipperCode; + /** + * 支付类型 1 - 现付 2 - 到付 3 - 月结 4 - 第三方付 + */ + private int payType; + /** + * 快递公司业务类型 + */ + private int ExpType; + /** + * 月付款账号 + */ + private String MonthCode; + /** + * 快递运费 + */ + private Double Cost; + /** + * 其他费用 + */ + private Double OtherCost; + /** + * 发货人 + */ + private ExpressUserInfoVo Sender; + /** + * 收货人 + */ + private ExpressUserInfoVo Receiver; + /** + * 货物信息 + */ + private List Commodity; + /** + * 重量 + */ + private Double Weight; + /** + * 包裹数量 + */ + private Integer Quantity; + /** + * 包裹体积 + */ + private Double Volume; + /** + * 备注 + */ + private String Remark; + /** + * 是否返回电子面单模板 + */ + private Integer IsReturnPrintTemplate; + /** + * 快递客户号 + */ + private String CustomerName; + /** + * 快递客户密码 + */ + private String CustomerPwd; + + /** + * 面单规格 + */ + private String TemplateSize; + + /** + * 货物单价的币种:港澳台必填 + * CNY: 人民币 + * HKD: 港币 + * NTD: 新台币 + * MOP: 澳门元 + */ + private String CurrencyCode; + + /** + * 申报价值 + */ + private DutiableVo Dutiable; +} + diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressOrderResponseVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressOrderResponseVo.java new file mode 100644 index 00000000..59951cad --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressOrderResponseVo.java @@ -0,0 +1,34 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递下单响应 Value Object + */ +@Data +public class ExpressOrderResponseVo { + /** + * 用户ID + */ + private String EBusinessID; + /** + * 返回模板 + */ + private String PrintTemplate; + /** + * 是否成功 + */ + private boolean Success; + /** + * 结果响应编码 + */ + private String ResultCode; + /** + * 原因 + */ + private String Reason; + /** + * 订单 + */ + private ExpressResponseOrderVo Order; +} diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressQueryRequestVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressQueryRequestVo.java new file mode 100644 index 00000000..40c45f60 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressQueryRequestVo.java @@ -0,0 +1,22 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递查询请求 Value Object + */ +@Data +public class ExpressQueryRequestVo { + /** + * 快递编码 + */ + private String ShipperCode; + /** + * 快递单号 + */ + private String LogisticCode; + /** + * 手机尾号 + */ + private String CustomerName; +} diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressResponseOrderVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressResponseOrderVo.java new file mode 100644 index 00000000..7f47f596 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressResponseOrderVo.java @@ -0,0 +1,70 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递查询相应 Order Value Object + */ +@Data +public class ExpressResponseOrderVo { + /** + * 快递单号 + */ + private String LogisticCode; + /** + * 订单号 + */ + private String OrderCode; + /** + * 快递公司代码 + */ + private String ShipperCode; + /** + * 大头笔(官网文档) + */ + private String MarkDestination; + /** + * 签回单单号 + */ + private String SignWaybillCode; + /** + * 始发地区域编码 + */ + private String OriginCode; + /** + * 事发地名称 + */ + private String OriginName; + /** + * 目的地区域编码 + */ + private String DestinatioCode; + /** + * 目的地名称 + */ + private String DestinatioName; + /** + * 分拣编码 + */ + private String SortingCode; + /** + * 邮包编码 + */ + private String PackageCode; + /** + * 集包地 + */ + private String PackageName; + /** + * 目的地分拨 + */ + private String DestinationAllocationCentre; + /** + * 配送产品类型 + */ + private String TransType; + /** + * 运输方式 + */ + private String TransportType; +} diff --git a/src/main/java/com/peanut/modules/common/vo/ExpressUserInfoVo.java b/src/main/java/com/peanut/modules/common/vo/ExpressUserInfoVo.java new file mode 100644 index 00000000..44ebfb30 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/ExpressUserInfoVo.java @@ -0,0 +1,38 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 快递收/发件人 Value Object + */ +@Data +public class ExpressUserInfoVo { + /** + * 公司 + */ + private String Company; + /** + * 姓名 + */ + private String Name; + /** + * 电话 + */ + private String Mobile; + /** + * 省份 + */ + private String ProvinceName; + /** + * 城市 + */ + private String cityName; + /** + * 区 + */ + private String ExpAreaName; + /** + * 详细地址 + */ + private String Address; +} diff --git a/src/main/java/com/peanut/modules/common/vo/PrintTemplateVo.java b/src/main/java/com/peanut/modules/common/vo/PrintTemplateVo.java new file mode 100644 index 00000000..1d85a926 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/vo/PrintTemplateVo.java @@ -0,0 +1,26 @@ +package com.peanut.modules.common.vo; + +import lombok.Data; + +/** + * @Description: 面单响应 value object + */ +@Data +public class PrintTemplateVo { + /** + * 快递单号 + */ + private String expressOrderSn; + /** + * 面单 + */ + private String printTemplate; + /** + * 快递公司代码 + */ + private String expressCompanyCode; + /** + * 是否打印过 + */ + private int templatedPrinted; +} diff --git a/src/main/resources/mapper/book/ExpressCompanyDao.xml b/src/main/resources/mapper/book/ExpressCompanyDao.xml index 1d659b9b..af7f564e 100644 --- a/src/main/resources/mapper/book/ExpressCompanyDao.xml +++ b/src/main/resources/mapper/book/ExpressCompanyDao.xml @@ -6,4 +6,8 @@ select name as expressName, code as expressCode from express_company + \ No newline at end of file