From 6f6d1c3a7b2006704fb3c30f3184bb9e8888aa27 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 13 May 2024 17:51:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E8=B4=AD=E5=8D=B7=E5=8D=B7=E7=A0=81?= =?UTF-8?q?=E8=A1=A8=20=E5=8E=9F=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20=E5=BA=97=E9=93=BA=E8=90=A5=E4=B8=9A?= =?UTF-8?q?=E6=97=B6=E9=97=B4=20=E5=9B=A2=E8=B4=AD=E5=8D=B7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=20=E5=9B=A2=E8=B4=AD=E5=8D=B7=E5=8D=B7=E7=A0=81?= =?UTF-8?q?=E8=A1=A8=20=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86=20=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E7=AE=A1=E7=90=86=20=E9=80=9A=E7=94=A8=E9=97=A8?= =?UTF-8?q?=E5=BA=97=20=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=20=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/auth/LoginFilter.java | 21 +- .../controller/CommonController.java | 44 +- .../controller/GroupOrderInfoController.java | 44 +- .../controller/HomeDistrictController.java | 14 +- .../controller/LocationController.java | 37 -- .../controller/LoginContoller.java | 4 +- .../controller/NotifyController.java | 16 + .../controller/PayController.java | 47 +- .../controller/ProductController.java | 16 + .../dao/SysDictDetailMapper.java | 21 - .../cashierservice/dao/SysDictMapper.java | 15 +- .../dao/TbGroupOrderCouponMapper.java | 72 +++ .../dao/TbGroupOrderInfoMapper.java | 10 +- .../cashierservice/dao/TbOrderInfoMapper.java | 3 +- .../dao/TbPlatformDictMapper.java | 2 +- .../dao/TbProductGroupMapper.java | 1 + .../cashierservice/dao/TbProductMapper.java | 7 + .../cashierservice/dao/TbShopInfoMapper.java | 5 +- .../cashierservice/dao/TbShopTableMapper.java | 2 + .../system/cashierservice/entity/SysDict.java | 15 +- .../entity/TbGroupOrderCoupon.java | 101 ++++ .../entity/TbGroupOrderInfo.java | 49 +- .../cashierservice/entity/TbPlatformDict.java | 9 + .../cashierservice/entity/TbShopInfo.java | 2 + .../entity/dto/BasePageDto.java | 3 + .../cashierservice/entity/dto/ComShopDto.java | 15 + .../entity/dto/CreateGroupOrderDto.java | 18 + .../entity/dto/HomeBaseDto.java | 6 +- .../cashierservice/entity/dto/HomeDto.java | 10 +- .../entity/dto/ReturnGroupOrderDto.java | 29 ++ .../UserPassVo.java => dto/UserPassDto.java} | 4 +- .../cashierservice/entity/vo/CommonVo.java | 3 +- .../entity/vo/GroupOrderDetailsVo.java | 52 +- .../entity/vo/GroupOrderListVo.java | 4 - .../entity/vo/HomeDistrictVo.java | 4 + .../cashierservice/entity/vo/HomeUpVO.java | 7 +- .../entity/vo/OrderConfirmVo.java | 2 + .../entity/vo/ProductInfoVo.java | 10 +- .../cashierservice/entity/vo/ProductVo.java | 1 + .../entity/vo/ShopGroupInfoVo.java | 3 + .../cashierservice/entity/vo/SubShopVo.java | 6 + .../cashierservice/model/ReturnOrderReq.java | 17 + .../service/GroupOrderCouponService.java | 48 ++ .../service/GroupOrderInfoService.java | 120 +++-- .../service/HomeDistrictService.java | 79 +-- .../service/HomePageService.java | 25 +- .../cashierservice/service/OrderService.java | 27 +- .../cashierservice/service/PayService.java | 472 +++++++++++++----- .../service/ProductService.java | 119 +++-- .../cashierservice/util/BigDecimalUtils.java | 20 + .../system/cashierservice/util/DateUtils.java | 10 + .../cashierservice/util/LocationUtils.java | 35 +- src/main/resources/application-dev.yml | 1 + src/main/resources/application-dev2.yml | 1 + src/main/resources/application-hph.yml | 1 + src/main/resources/application-prod.yml | 1 + src/main/resources/application-prod2.yml | 1 + src/main/resources/application-test.yml | 1 + .../resources/mapper/SysDictDetailMapper.xml | 24 - src/main/resources/mapper/SysDictMapper.xml | 157 ++---- .../mapper/TbGroupOrderCouponMapper.xml | 127 +++++ .../mapper/TbGroupOrderInfoMapper.xml | 65 +-- .../resources/mapper/TbOrderInfoMapper.xml | 1 - .../resources/mapper/TbPlatformDictMapper.xml | 27 +- .../resources/mapper/TbProductGroupMapper.xml | 12 + src/main/resources/mapper/TbProductMapper.xml | 45 +- .../resources/mapper/TbProductSkuMapper.xml | 4 +- .../resources/mapper/TbShopInfoMapper.xml | 16 +- .../resources/mapper/TbShopTableMapper.xml | 9 + 69 files changed, 1533 insertions(+), 666 deletions(-) delete mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java delete mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictDetailMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderCouponMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ComShopDto.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreateGroupOrderDto.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnGroupOrderDto.java rename src/main/java/com/chaozhanggui/system/cashierservice/entity/{vo/UserPassVo.java => dto/UserPassDto.java} (66%) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/model/ReturnOrderReq.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderCouponService.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/util/BigDecimalUtils.java delete mode 100644 src/main/resources/mapper/SysDictDetailMapper.xml create mode 100644 src/main/resources/mapper/TbGroupOrderCouponMapper.xml diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java index e1436e5..d8d882e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java @@ -41,9 +41,14 @@ public class LoginFilter implements Filter { // "cashierService/location/**",//高德 获取行政区域 // "cashierService/home/homePageUp",//首页上半 // "cashierService/home",//首页 -// "cashierService/distirict/subShopList",//首页 -// "cashierService/product/productInfo",//商品详情 -// "cashierService/login/**"//登录部分接口不校验 +// +// "cashierService/distirict/**",//首页其它接口 +// "cashierService/login/**",//登录部分接口不校验 +// "cashierService/notify/**",//登录部分接口不校验 +// "cashierService/product/queryShopIdByTableCode", +// "cashierService/product/queryProduct", +// "cashierService/product/productInfo", +// "notify/**"//登录部分接口不校验 ); @Autowired @@ -74,11 +79,11 @@ public class LoginFilter implements Filter { //environment 环境标识 wx app 后续environment不可为空 String environment = request.getHeader("environment"); - //token校验目前只对app生效 - if (StringUtils.isBlank(environment) || !environment.equals("app")) { - chain.doFilter(req, resp); - return; - } +// //token校验目前只对app生效 +// if (StringUtils.isBlank(environment) || !environment.equals("app")) { +// chain.doFilter(req, resp); +// return; +// } // 判断用户TOKEN是否存在 String token = request.getHeader("token"); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/CommonController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/CommonController.java index 397833c..036b95d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/CommonController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/CommonController.java @@ -5,19 +5,28 @@ import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; +import com.chaozhanggui.system.cashierservice.util.LocationUtils; import com.chaozhanggui.system.cashierservice.util.RedisUtils; import com.chaozhanggui.system.cashierservice.util.StringUtil; import com.chaozhanggui.system.cashierservice.util.ValidateCodeUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.gson.*; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.io.IOException; +import java.math.BigDecimal; import java.util.List; import java.util.concurrent.TimeUnit; /** * 通用接口 + * * @author lyf */ @RestController @@ -37,6 +46,7 @@ public class CommonController { /** * 发送短信验证码 + * * @param phone * @return */ @@ -49,8 +59,8 @@ public class CommonController { validateCodeUtil.requestValidateCodeAli(phone, random); //存入缓存 try { - redisUtils.set(phone,random,ONE_MINUTE,TimeUnit.SECONDS); - }catch (Exception e){ + redisUtils.set(phone, random, ONE_MINUTE, TimeUnit.SECONDS); + } catch (Exception e) { throw new MsgException("验证码发送失败"); } return Result.success(CodeEnum.SUCCESS); @@ -62,6 +72,32 @@ public class CommonController { @GetMapping("/tbPlatformDict") public Result getPlatformDict(@RequestParam String type, @RequestHeader String environment) { List carouselList = platformDictMapper.queryAllByType(type, environment); - return Result.success(CodeEnum.SUCCESS,carouselList); + return Result.success(CodeEnum.SUCCESS, carouselList); } -} + + /** + * 行政区域查询 + * + * @param keywords citycode市、adcode区 + * @return + */ + @GetMapping("location/district") + public Result createOrder(String keywords) throws JsonProcessingException { + String district = LocationUtils.district(keywords); + ObjectMapper mapper = new ObjectMapper(); + // 将 JSON 字符串解析为 JsonNode 对象 + JsonNode jsonNode = mapper.readTree(district); + JsonNode districts = jsonNode.get("districts"); + + + return Result.success(CodeEnum.SUCCESS, districts); + } + + @GetMapping("location/getGPSByIp") + public Result getGPSByIp(String ip) throws JsonProcessingException { + String gpsInfo = LocationUtils.getGPSByIp(ip); + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(gpsInfo); + return Result.success(CodeEnum.SUCCESS, jsonNode); + } +} \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/GroupOrderInfoController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/GroupOrderInfoController.java index 080c705..e70e5f5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/GroupOrderInfoController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/GroupOrderInfoController.java @@ -1,8 +1,12 @@ package com.chaozhanggui.system.cashierservice.controller; import com.chaozhanggui.system.cashierservice.entity.TbGroupOrderInfo; +import com.chaozhanggui.system.cashierservice.entity.dto.CreateGroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.dto.GroupOrderDto; +import com.chaozhanggui.system.cashierservice.entity.dto.OrderDto; +import com.chaozhanggui.system.cashierservice.service.GroupOrderCouponService; import com.chaozhanggui.system.cashierservice.service.GroupOrderInfoService; +import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.TokenUtil; import org.springframework.web.bind.annotation.*; @@ -22,6 +26,9 @@ public class GroupOrderInfoController { @Resource private GroupOrderInfoService tbGroupOrderInfoService; + @Resource + private GroupOrderCouponService orderCouponService; + /** * 分页查询 * @@ -30,14 +37,35 @@ public class GroupOrderInfoController { */ @RequestMapping("list") public Result queryByPage(@RequestHeader String token, GroupOrderDto param) { -// public Result queryByPage(GroupOrderDto param) { -// param.setUserId("21"); - String userId = TokenUtil.parseParamFromToken(token).getString("userId"); param.setUserId(userId); return tbGroupOrderInfoService.queryByPage(param); } + /** + * 通过id查询卷码 + */ + @RequestMapping("getCoupon") + public Result queryCouponById(Integer id) { + return Result.success(CodeEnum.SUCCESS,orderCouponService.queryByOrderId(id)); + } + + /** + * 团购卷 下单 + * @param token + * @param param + * @return + */ + @PostMapping("/creatGroupOrder") + public Result createOrder(@RequestHeader String token,@RequestBody CreateGroupOrderDto param){ + String userId = TokenUtil.parseParamFromToken(token).getString("userId"); + String phone = TokenUtil.parseParamFromToken(token).getString("phone"); + param.setUserId(Integer.valueOf(userId)); + param.setPhone(phone); + return tbGroupOrderInfoService.insert(param); + } + + /** * 通过主键查询单条数据 * @@ -49,16 +77,6 @@ public class GroupOrderInfoController { return tbGroupOrderInfoService.queryById(id,lng,lat); } - /** - * 新增数据 - * - * @param tbGroupOrderInfo 实体 - * @return 新增结果 - */ - @RequestMapping("add") - public Result add(TbGroupOrderInfo tbGroupOrderInfo) { - return tbGroupOrderInfoService.insert(tbGroupOrderInfo); - } /** * 编辑数据 diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/HomeDistrictController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/HomeDistrictController.java index f3af6e6..dab3128 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/HomeDistrictController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/HomeDistrictController.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.controller; +import com.chaozhanggui.system.cashierservice.entity.dto.ComShopDto; import com.chaozhanggui.system.cashierservice.entity.dto.HomeBaseDto; import com.chaozhanggui.system.cashierservice.entity.dto.HomeDto; import com.chaozhanggui.system.cashierservice.service.HomeDistrictService; @@ -22,6 +23,9 @@ public class HomeDistrictController { @Resource private HomeDistrictService districtService; + /** + * 顶部图/菜单 + */ @RequestMapping("/topCommon") public Result topCommon(HomeDto param,@RequestHeader("environment") String environment){ return districtService.topCommon(param,environment); @@ -44,7 +48,15 @@ public class HomeDistrictController { * 咖啡饮品 */ @RequestMapping("/productCate") - public Result productCate(HomeDto param) throws ExecutionException, InterruptedException { + public Result productCate(HomeDto param){ return districtService.proList(param); } + + /** + * 通用门店 + */ + @RequestMapping("/comShopList") + public Result comShopList(ComShopDto param){ + return districtService.queryComShopList(param); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java deleted file mode 100644 index 0f4be0a..0000000 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.chaozhanggui.system.cashierservice.controller; - -import com.chaozhanggui.system.cashierservice.sign.CodeEnum; -import com.chaozhanggui.system.cashierservice.sign.Result; -import com.chaozhanggui.system.cashierservice.util.LocationUtils; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; - -@CrossOrigin(origins = "*") -@RestController -@Slf4j -@RequestMapping("/location") -public class LocationController { - - - /** - * 行政区域查询 - * - * @param keywords citycode市、adcode区 - * @return - */ - @GetMapping("/district") - public Result createOrder(String keywords) throws JsonProcessingException { - String district = LocationUtils.district(keywords); - ObjectMapper mapper = new ObjectMapper(); - // 将 JSON 字符串解析为 JsonNode 对象 - JsonNode jsonNode = mapper.readTree(district); - JsonNode districts = jsonNode.get("districts"); - - - return Result.success(CodeEnum.SUCCESS, districts); - } -} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java index 7bfaa77..d3606b5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java @@ -9,7 +9,7 @@ import com.chaozhanggui.system.cashierservice.entity.TbMerchantAccount; import com.chaozhanggui.system.cashierservice.entity.TbUserInfo; import com.chaozhanggui.system.cashierservice.entity.dto.AuthUserDto; import com.chaozhanggui.system.cashierservice.entity.dto.OnlineUserDto; -import com.chaozhanggui.system.cashierservice.entity.vo.UserPassVo; +import com.chaozhanggui.system.cashierservice.entity.dto.UserPassDto; import com.chaozhanggui.system.cashierservice.redis.RedisCst; import com.chaozhanggui.system.cashierservice.redis.RedisUtil; import com.chaozhanggui.system.cashierservice.service.LoginService; @@ -252,7 +252,7 @@ public class LoginContoller { } @PostMapping(value = "/upPass") - public Result upPass(@RequestHeader String token,@RequestBody UserPassVo passVo){ + public Result upPass(@RequestHeader String token,@RequestBody UserPassDto passVo){ String userId = TokenUtil.parseParamFromToken(token).getString("userId"); String newPass = MD5Utils.MD5Encode(passVo.getNewPass(), "utf-8"); if (ObjectUtil.isNull(passVo.getCode())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/NotifyController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/NotifyController.java index 01ba8dc..a6f3a98 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/NotifyController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/NotifyController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.Map; +import java.util.Random; @CrossOrigin(origins = "*") @RestController @@ -61,6 +62,21 @@ public class NotifyController { return null; } + @RequestMapping("notifyCallBackGroup") + public String notifyCallBackGroup(HttpServletRequest request){ + Map map= getParameterMap(request); + log.info("团购卷回调返回信息:{}",JSONUtil.toJsonStr(map)); + if(ObjectUtil.isNotEmpty(map)&&map.containsKey("code")&&"200".equals(map.get("code")+"")){ + JSONObject object=JSONUtil.parseObj(map.get("data")); + if(ObjectUtil.isNotEmpty(object)&&object.containsKey("status")&&"1".equals(object.getStr("status"))){ + String orderNo=object.getStr("orderNumber"); + return payService.callBackGroupPay(orderNo); + } + } + + return null; + } + private Map getParameterMap(HttpServletRequest request) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java index 6d20ad5..6305092 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -1,16 +1,20 @@ package com.chaozhanggui.system.cashierservice.controller; import cn.hutool.core.util.ObjectUtil; +import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; import com.chaozhanggui.system.cashierservice.service.PayService; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.IpUtil; +import com.chaozhanggui.system.cashierservice.util.TokenUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; +import java.util.List; import java.util.Map; @CrossOrigin(origins = "*") @@ -26,25 +30,36 @@ public class PayController { /** * 支付 + * * @param request - * @param openId + * payType wechatPay:微信支付;aliPay:支付宝支付; * @param map * @return */ @RequestMapping("orderPay") - public Result pay(HttpServletRequest request, @RequestHeader("openId") String openId, @RequestBody Map map) { - if(ObjectUtil.isEmpty(map)||map.size()<=0||!map.containsKey("orderId")||ObjectUtil.isEmpty(map.get("orderId"))){ + public Result pay(HttpServletRequest request, @RequestHeader String token, @RequestBody Map map) { + if (ObjectUtil.isEmpty(map) || map.size() <= 0 || !map.containsKey("orderId") || ObjectUtil.isEmpty(map.get("orderId"))) { return Result.fail("订单号不允许为空"); } - + String orderId = map.get("orderId").toString(); + String userId = TokenUtil.parseParamFromToken(token).getString("userId"); try { - return payService.payOrder(openId,map.get("orderId").toString(), IpUtil.getIpAddr(request)); + if(orderId.startsWith("GP")){ + return payService.groupOrderPay(orderId, map.get("payType"), userId, IpUtil.getIpAddr(request)); + }else { + return payService.payOrder(userId, orderId, map.get("payType"), IpUtil.getIpAddr(request)); + } } catch (Exception e) { e.printStackTrace(); } return Result.fail("支付失败"); } + @RequestMapping("returnGpOrder") + public Result returnOrder(@RequestBody ReturnGroupOrderDto param){ + return payService.returnOrder(param); + } + // // public Result memberAccountPay(@RequestHeader("openId") String openId, @@ -59,12 +74,13 @@ public class PayController { /** * 修改订单状态 + * * @param map * @return */ @RequestMapping("modfiyOrderInfo") - public Result modfiyOrderInfo( @RequestBody Map map){ - if(ObjectUtil.isEmpty(map)||map.size()<=0||!map.containsKey("orderId")||ObjectUtil.isEmpty(map.get("orderId"))){ + public Result modfiyOrderInfo(@RequestBody Map map) { + if (ObjectUtil.isEmpty(map) || map.size() <= 0 || !map.containsKey("orderId") || ObjectUtil.isEmpty(map.get("orderId"))) { return Result.fail("订单号不允许为空"); } @@ -79,23 +95,18 @@ public class PayController { /** * 充值 + * * @param request * @param openId * @param map * @return */ @RequestMapping("memeberIn") - public Result memeberIn(HttpServletRequest request,@RequestHeader("openId") String openId,@RequestHeader("id") String id, - @RequestBody Map map - ){ - return payService.memberIn(openId,id,map.get("amount").toString(),map.get("shopId").toString(),IpUtil.getIpAddr(request)); + public Result memeberIn(HttpServletRequest request, @RequestHeader("openId") String openId, @RequestHeader("id") String id, + @RequestBody Map map + ) { + return payService.memberIn(openId, id, map.get("amount").toString(), map.get("shopId").toString(), IpUtil.getIpAddr(request)); } - - - - - - } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/ProductController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/ProductController.java index d6391a9..c241d63 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/ProductController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/ProductController.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.chaozhanggui.system.cashierservice.service.ProductService; import com.chaozhanggui.system.cashierservice.sign.Result; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -20,6 +21,21 @@ public class ProductController { @Autowired private ProductService productService; + /** + * 通过桌码获取shopId + * @param code + * @return shopid + */ + @RequestMapping("queryShopIdByTableCode") + public Result queryShopIdByTableCode(@RequestParam("code") String code) { + return productService.queryShopIdByTableCode(code); + } + + /** + * 通过code和分组Id + * @param map + * @return + */ @RequestMapping("queryProduct") public Result queryProduct(@RequestBody Map map) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictDetailMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictDetailMapper.java deleted file mode 100644 index 54a9b6e..0000000 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictDetailMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.chaozhanggui.system.cashierservice.dao; - -import com.chaozhanggui.system.cashierservice.entity.SysDict; -import com.chaozhanggui.system.cashierservice.entity.SysDictDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -@Mapper -public interface SysDictDetailMapper { - - List selectHot(); - - List selectByType(@Param("type") String type); - - List selectByDictId(@Param("dictId") Long dictId); - -} \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictMapper.java index 7204534..6d239cb 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/SysDictMapper.java @@ -1,17 +1,14 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.SysDict; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface SysDictMapper { - int deleteByPrimaryKey(Long dictId); + List selectHot(); - int insert(SysDict record); + List selectByType(@Param("type") String type); - int insertSelective(SysDict record); - - SysDict selectByPrimaryKey(Long dictId); - - int updateByPrimaryKeySelective(SysDict record); - - int updateByPrimaryKey(SysDict record); + List selectByDictId(@Param("dictId") Long dictId); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderCouponMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderCouponMapper.java new file mode 100644 index 0000000..ce5ca77 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderCouponMapper.java @@ -0,0 +1,72 @@ +package com.chaozhanggui.system.cashierservice.dao; + +import com.chaozhanggui.system.cashierservice.entity.TbGroupOrderCoupon; +import org.apache.ibatis.annotations.Param; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +/** + * 团购卷 卷码表(TbGroupOrderCoupon)表数据库访问层 + * + * @author ww + * @since 2024-05-06 14:39:59 + */ +public interface TbGroupOrderCouponMapper { + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + TbGroupOrderCoupon queryById(Integer id); + + List queryByOrderId(Integer orderId); + + List queryNoRefundByOrderId(Integer orderId); + + /** + * 查询数据 + * + * @param tbGroupOrderCoupon 查询条件 + * @param pageable 分页对象 + * @return 对象列表 + */ + List queryAll(TbGroupOrderCoupon tbGroupOrderCoupon, @Param("pageable") Pageable pageable); + + + /** + * 新增数据 + * + * @param tbGroupOrderCoupon 实例对象 + * @return 影响行数 + */ + int insert(TbGroupOrderCoupon tbGroupOrderCoupon); + + /** + * 批量新增数据(MyBatis原生foreach方法) + * + * @param entities List 实例对象列表 + * @return 影响行数 + */ + int insertBatch(@Param("entities") List entities); + + /** + * 修改数据 + * + * @param tbGroupOrderCoupon 实例对象 + * @return 影响行数 + */ + int update(TbGroupOrderCoupon tbGroupOrderCoupon); + + /** + * 通过主键删除数据 + * + * @param id 主键 + * @return 影响行数 + */ + int deleteById(Integer id); + +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderInfoMapper.java index 0e88a22..0342b96 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbGroupOrderInfoMapper.java @@ -3,6 +3,7 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbGroupOrderInfo; import com.chaozhanggui.system.cashierservice.entity.dto.GroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.vo.GroupOrderListVo; +import com.github.pagehelper.Page; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -23,6 +24,8 @@ public interface TbGroupOrderInfoMapper { */ TbGroupOrderInfo queryById(Integer id); + TbGroupOrderInfo selectByPayOrderNo(@Param("payOrderNO")String payOrderNO); + /** * 查询数据 * @@ -56,13 +59,6 @@ public interface TbGroupOrderInfoMapper { */ int update(TbGroupOrderInfo tbGroupOrderInfo); - /** - * 通过主键删除数据 - * - * @param id 主键 - * @return 影响行数 - */ - int deleteById(Integer id); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java index bf851e8..3419c7c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbOrderInfoMapper.java @@ -29,8 +29,7 @@ public interface TbOrderInfoMapper { List selectAllByStatus(String status); TbOrderInfo selectByPayOrderNo(String payOrderNo); - List selectByUserId(@Param("userId")Integer userId, @Param("page")Integer page, - @Param("size")Integer size, @Param("status") String status); + List selectByUserId(@Param("userId")Integer userId, @Param("status") String status); List selectByTradeDay(@Param("day") String day,@Param("minPrice") BigDecimal minPrice,@Param("maxPrice") BigDecimal maxPrice); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbPlatformDictMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbPlatformDictMapper.java index eaaae04..e85bc7b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbPlatformDictMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbPlatformDictMapper.java @@ -3,7 +3,6 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict; import org.apache.ibatis.annotations.Param; -import org.springframework.data.domain.Pageable; import java.util.List; /** @@ -25,6 +24,7 @@ public interface TbPlatformDictMapper { List queryByIdList(@Param("idList")List idList); List queryAllByType(@Param("type") String type,@Param("environment") String environment); + List queryGroupByValue(@Param("value")String value,@Param("environment") String environment); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductGroupMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductGroupMapper.java index e5274ee..13d89fd 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductGroupMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductGroupMapper.java @@ -27,5 +27,6 @@ public interface TbProductGroupMapper { List selectByIdAndShopId(@Param("code") String code); List selectByQrcode(@Param("qrCode") String qrCode,@Param("groupId") Integer groupId); + List selectByShopId(@Param("shopId") String shopId,@Param("groupId") Integer groupId); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java index 0c8e360..46dfb73 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java @@ -27,4 +27,11 @@ public interface TbProductMapper { @Param("rightTopLng") Double rightTopLng, @Param("rightTopLat") Double rightTopLat, @Param("leftBottomLng") Double leftBottomLng, @Param("leftBottomLat") Double leftBottomLat, @Param("cities") String cities, @Param("orderBy") String orderBy, @Param("lng") String lng, @Param("lat") String lat); + + List selHotGroups(@Param("type") String type, + @Param("startTime") String startTime, @Param("endTime") String endTime, + @Param("cities") String cities, @Param("orderBy") String orderBy, @Param("lng") String lng, @Param("lat") String lat); + + + void upGroupRealSalesNumber(@Param("id") String id,@Param("number") Integer number); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopInfoMapper.java index eb117e4..ad6904e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopInfoMapper.java @@ -21,10 +21,13 @@ public interface TbShopInfoMapper { List selShopInfoByGps(@Param("rightTopLng") Double rightTopLng, @Param("rightTopLat") Double rightTopLat, @Param("leftBottomLng") Double leftBottomLng, @Param("leftBottomLat") Double leftBottomLat, - @Param("cities") String cities, @Param("lng") String lng, @Param("lat") String lat); + @Param("cities") String cities, @Param("lng") String lng, @Param("lat") String lat, + @Param("shopName")String shopName); TbShopInfo selectByPrimaryKey(Integer id); + Integer selNumByChain(@Param("chainName") String chainName); + List selectByIds(@Param("list") List ids); int updateByPrimaryKeySelective(TbShopInfo record); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopTableMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopTableMapper.java index 1cf5017..be304c5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopTableMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopTableMapper.java @@ -22,6 +22,8 @@ public interface TbShopTableMapper { TbShopTable selectQRcode(String code); + String queryShopIdByTableCode(String code); + int updateByPrimaryKeySelective(TbShopTable record); int updateByPrimaryKey(TbShopTable record); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/SysDict.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/SysDict.java index 4ef8a18..a4498b9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/SysDict.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/SysDict.java @@ -3,17 +3,28 @@ package com.chaozhanggui.system.cashierservice.entity; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Data public class SysDict implements Serializable { + private Long dictId; private String dictName; private String name; - private String description; + /** + * 是否有子类0否1是 + */ + private Integer isChild; - private Integer isChild; + /** + * 值 + */ + private String value; + + private List detail=new ArrayList<>(); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java new file mode 100644 index 0000000..dde37a8 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderCoupon.java @@ -0,0 +1,101 @@ +package com.chaozhanggui.system.cashierservice.entity; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 团购卷 卷码表(TbGroupOrderCoupon)实体类 + * + * @author ww + * @since 2024-05-06 14:39:59 + */ +public class TbGroupOrderCoupon implements Serializable { + private static final long serialVersionUID = -35424376349743542L; + + private Integer id; + /** + * 团购订单id + */ + private Integer orderId; + /** + * 团购卷码 + */ + private String couponNo; + /** + * 是否已退款 + * 0:否 + * 1:是 + */ + private Integer isRefund; + /** + * 退款金额 + */ + private BigDecimal refundAmount; + /** + * 退款原因 + */ + private String refundReason; + /** + * 退款说明 + */ + private String refundDesc; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getOrderId() { + return orderId; + } + + public void setOrderId(Integer orderId) { + this.orderId = orderId; + } + + public String getCouponNo() { + return couponNo; + } + + public void setCouponNo(String couponNo) { + this.couponNo = couponNo; + } + + public Integer getIsRefund() { + return isRefund; + } + + public void setIsRefund(Integer isRefund) { + this.isRefund = isRefund; + } + + public BigDecimal getRefundAmount() { + return refundAmount; + } + + public void setRefundAmount(BigDecimal refundAmount) { + this.refundAmount = refundAmount; + } + + public String getRefundReason() { + return refundReason; + } + + public void setRefundReason(String refundReason) { + this.refundReason = refundReason; + } + + public String getRefundDesc() { + return refundDesc; + } + + public void setRefundDesc(String refundDesc) { + this.refundDesc = refundDesc; + } + +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderInfo.java index 33f7e2d..7ed0ada 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbGroupOrderInfo.java @@ -2,17 +2,13 @@ package com.chaozhanggui.system.cashierservice.entity; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; import java.io.Serializable; -/** - * 团购卷订单 - * - * @author ww - * @since 2024-04-27 16:15:09 - */ + @Data public class TbGroupOrderInfo implements Serializable { - private static final long serialVersionUID = -27465362251022601L; + private static final long serialVersionUID = -11810357048433715L; /** * id */ @@ -21,6 +17,7 @@ public class TbGroupOrderInfo implements Serializable { * 订单编号 */ private String orderNo; + private Integer merchantId; /** * 商户Id */ @@ -33,48 +30,51 @@ public class TbGroupOrderInfo implements Serializable { * 商品id */ private Integer proId; - /** - * 商品名称 - */ - private String proName; /** * 商品图 */ private String proImg; /** - * 团购卷编号 + * 商品名称 */ - private String couponNo; - /** - * 团购卷图片 - */ - private String couponUrl; + private String proName; /** * 团购卷到期日期 */ private Date expDate; /** - * 支付方式 + * 订单类型 预留字段 */ private String orderType; + /** + * 支付方式 wechatPay微信支付,aliPay支付宝支付 + */ + private String payType; /** * 订单金额 */ - private Double orderAmount; + private BigDecimal orderAmount; /** * 优惠金额 */ - private Double saveAmount; + private BigDecimal saveAmount; /** * 实付金额 */ - private Double payAmount; + private BigDecimal payAmount; + /** + * 退单金额 + */ + private BigDecimal refundAmount; /** * 数量 */ private Integer number; + + private Integer refundNumber; /** * 订单状态 + * 状态: unpaid-待付款;unused-待使用;closed-已完成;refunding-退款中;refund-已退款;cancelled-已取消; */ private String status; /** @@ -90,13 +90,17 @@ public class TbGroupOrderInfo implements Serializable { */ private Date payTime; /** - * 是否支持退款 0:不支持 + * 是否支持退款 0:不支持 1:支持 */ private Integer refundAble; /** * 创建时间 */ private Date createTime; + /** + * 卷码核销员 + */ + private String verifier; /** * 更新时间 */ @@ -114,5 +118,6 @@ public class TbGroupOrderInfo implements Serializable { */ private Integer source; + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPlatformDict.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPlatformDict.java index 9dbb00a..7c45819 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPlatformDict.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbPlatformDict.java @@ -20,6 +20,7 @@ public class TbPlatformDict implements Serializable { * 描述 同类型下 name唯一 */ private String name; + private String value; private String fontColor; private String backColor; /** @@ -102,6 +103,14 @@ public class TbPlatformDict implements Serializable { this.name = name; } + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + public String getType() { return type; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopInfo.java index 5c5f0ea..acd1778 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopInfo.java @@ -62,6 +62,8 @@ public class TbShopInfo implements Serializable { private String industryName; + private String businessStartDay; + private String businessEndDay; private String businessTime; private String postTime; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/BasePageDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/BasePageDto.java index a03fb0a..c36c432 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/BasePageDto.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/BasePageDto.java @@ -2,6 +2,9 @@ package com.chaozhanggui.system.cashierservice.entity.dto; import lombok.Data; +/** + * 分页数据 + */ @Data public class BasePageDto { private Integer page = 1; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ComShopDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ComShopDto.java new file mode 100644 index 0000000..332cb8d --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ComShopDto.java @@ -0,0 +1,15 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + + +/** + * 通用门店查询类 + */ +@Data +public class ComShopDto extends HomeBaseDto{ + /** + * 连锁店名 + */ + private String shopName; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreateGroupOrderDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreateGroupOrderDto.java new file mode 100644 index 0000000..58429d5 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreateGroupOrderDto.java @@ -0,0 +1,18 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CreateGroupOrderDto { + private Integer proId; + private Integer shopId; + private Integer num; + private Integer userId; + private String phone; + private BigDecimal orderAmount; + private BigDecimal payAmount; + private String remark; + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeBaseDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeBaseDto.java index 952aeaf..cca7cbf 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeBaseDto.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeBaseDto.java @@ -2,11 +2,12 @@ package com.chaozhanggui.system.cashierservice.entity.dto; import lombok.Data; + + /** * 查询通用核心类 * 经纬度 * 城市信息 - * 分页数据 */ @Data public class HomeBaseDto extends BasePageDto{ @@ -23,8 +24,7 @@ public class HomeBaseDto extends BasePageDto{ */ private String address; - private double distanceInKm = 10; + private String distanceInKm; - //是否分页 1分页 private Integer isPage = 1; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeDto.java index 27fe03f..db2a1cf 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeDto.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/HomeDto.java @@ -15,9 +15,17 @@ public class HomeDto extends HomeBaseDto { /** * 0.今日上新 * 1.离我最近 - * 2.销量优先/热榜推荐 + * 2.销量优先 * 3.价格优先 + * 4.热榜推荐 + * 5.精选推荐 */ private Integer orderBy = 0; + /** + * 0:今天 + * 1:两小时内 + */ + private Integer dateType = 1; + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnGroupOrderDto.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnGroupOrderDto.java new file mode 100644 index 0000000..403c22b --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnGroupOrderDto.java @@ -0,0 +1,29 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReturnGroupOrderDto { + /** + * 退单数 + */ + private Integer num; + /** + * 团购订单id + */ + private Integer orderId; + /** + * 退款金额 + */ + private BigDecimal refundAmount; + /** + * 退款原因 + */ + private String refundReason; + /** + * 退款说明 + */ + private String refundDesc; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/UserPassVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UserPassDto.java similarity index 66% rename from src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/UserPassVo.java rename to src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UserPassDto.java index cecd7c0..5a19a64 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/UserPassVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UserPassDto.java @@ -1,4 +1,4 @@ -package com.chaozhanggui.system.cashierservice.entity.vo; +package com.chaozhanggui.system.cashierservice.entity.dto; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data; * 修改密码的 Vo 类 */ @Data -public class UserPassVo { +public class UserPassDto { private String phone; private String code; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CommonVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CommonVo.java index 3a79f4e..ee243de 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CommonVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CommonVo.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.entity.vo; +import com.chaozhanggui.system.cashierservice.entity.SysDict; import lombok.Data; import java.util.List; @@ -20,5 +21,5 @@ public class CommonVo { /** * 菜单列表 不一定有 */ - private List menu; + private List menu; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderDetailsVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderDetailsVo.java index d601164..55ca22b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderDetailsVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderDetailsVo.java @@ -1,12 +1,19 @@ package com.chaozhanggui.system.cashierservice.entity.vo; +import com.chaozhanggui.system.cashierservice.entity.TbGroupOrderCoupon; import com.chaozhanggui.system.cashierservice.entity.TbPurchaseNotice; import lombok.Data; +import java.math.BigDecimal; import java.util.List; @Data public class GroupOrderDetailsVo { + private Integer id; + /** + * 商品id + */ + private Integer proId; /** * 商品名称 */ @@ -19,7 +26,7 @@ public class GroupOrderDetailsVo { * 可用时间说明 * 周一至周日 */ - private String avaTime; + private String avaTime=""; /** * 商品描述 * 随时退·过期自动退·到店 @@ -28,7 +35,7 @@ public class GroupOrderDetailsVo { /** * 订单金额 */ - private Double orderAmount; + private BigDecimal orderAmount; /** * number 张可用 | 2024-04-11 23:59:59 到期 */ @@ -41,14 +48,9 @@ public class GroupOrderDetailsVo { * 是否支持退款 */ private Integer refundAble; - /** - * 卷码 - */ - private List couponNo; - /** - * 卷码图 - */ - private List couponUrl; + + List coupons; + /** * 商家名称 */ @@ -72,7 +74,7 @@ public class GroupOrderDetailsVo { /** * 购买须知 */ - private TbPurchaseNotice notice; + private TbPurchaseNotice notice=new TbPurchaseNotice(); /** * 订单编号 */ @@ -92,30 +94,6 @@ public class GroupOrderDetailsVo { /** * 实付金额 */ - private Double payAmount; - - public void setStatus(String status) { - switch (status) { - case "unpaid": - this.status = "待付款"; - break; - case "unused": - this.status = "待使用"; - break; - case "closed": - this.status = "已完成"; - break; - case "refunding": - this.status = "退款中"; - break; - case "refund": - this.status = "已退款"; - break; - case "cancelled": - this.status = "已取消"; - break; - default: - this.status = status; - } - } + private BigDecimal payAmount; + private BigDecimal saveAmount; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderListVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderListVo.java index f9689df..2e43e79 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderListVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/GroupOrderListVo.java @@ -20,10 +20,6 @@ public class GroupOrderListVo { * 商品图 */ private String proImg; - /** - * 团购卷图片 - */ - private String couponUrl; /** * 订单金额 */ diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeDistrictVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeDistrictVo.java index 7acaead..4f8e8b5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeDistrictVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeDistrictVo.java @@ -17,6 +17,8 @@ public class HomeDistrictVo{ * 描述 同类型下 name唯一 */ private String name; + + private String value; /** * 字体颜色 */ @@ -29,5 +31,7 @@ public class HomeDistrictVo{ * 绝对跳转地址 */ private String absUrl; + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeUpVO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeUpVO.java index 02728f4..6984234 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeUpVO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/HomeUpVO.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.entity.vo; +import com.chaozhanggui.system.cashierservice.entity.SysDict; import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict; import java.util.List; @@ -20,7 +21,7 @@ public class HomeUpVO { /** * 条件查询 */ - List menu; + List menu; /** * 今日上新 */ @@ -74,11 +75,11 @@ public class HomeUpVO { this.district = district; } - public List getMenu() { + public List getMenu() { return menu; } - public void setMenu(List menu) { + public void setMenu(List menu) { this.menu = menu; } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/OrderConfirmVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/OrderConfirmVo.java index 9b7780f..a518199 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/OrderConfirmVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/OrderConfirmVo.java @@ -5,6 +5,8 @@ import java.math.BigDecimal; @Data public class OrderConfirmVo { + private String proId; + private String shopId; /** * 商品图片 */ diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductInfoVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductInfoVo.java index 42a1902..97b5e97 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductInfoVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductInfoVo.java @@ -50,6 +50,14 @@ public class ProductInfoVo { * 店铺名称 */ private String shopName; + /** + * 多少家店可用 + */ + private Integer shopNum; + /** + * 连锁店扩展店名 + */ + private String chainName; /** * 联系方式 */ @@ -75,5 +83,5 @@ public class ProductInfoVo { /** * 购买须知/价格说明 */ - private TbPurchaseNotice purchaseNotice; + private TbPurchaseNotice purchaseNotice=new TbPurchaseNotice(); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductVo.java index c4040bd..ce1bbb8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductVo.java @@ -22,6 +22,7 @@ public class ProductVo { @Data @JsonIgnoreProperties(ignoreUnknown = true) public static class Food { + private Integer id; private String name; // 商品名称 private BigDecimal lowPrice; // 售价 private String unitName; // 单位 diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ShopGroupInfoVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ShopGroupInfoVo.java index 9b2078a..aa13629 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ShopGroupInfoVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ShopGroupInfoVo.java @@ -28,4 +28,7 @@ public class ShopGroupInfoVo { //销量 private Integer number; + private String address; + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/SubShopVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/SubShopVo.java index 545e15f..8f33275 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/SubShopVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/SubShopVo.java @@ -20,6 +20,12 @@ public class SubShopVo{ * 手机号 */ private String phone; + /** + * 营业时间 + */ + private String businessStartDay; + private String businessEndDay; + private String businessTime; /** * Logo图 */ diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/model/ReturnOrderReq.java b/src/main/java/com/chaozhanggui/system/cashierservice/model/ReturnOrderReq.java new file mode 100644 index 0000000..e9cbc1b --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/model/ReturnOrderReq.java @@ -0,0 +1,17 @@ +package com.chaozhanggui.system.cashierservice.model; + +import lombok.Data; + +@Data +public class ReturnOrderReq extends BaseRequest { + + private String orderNumber; + + private String amount; + + private String mercRefundNo; + + private String refundReason; + + private String payPassword; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderCouponService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderCouponService.java new file mode 100644 index 0000000..5bc0db8 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderCouponService.java @@ -0,0 +1,48 @@ +package com.chaozhanggui.system.cashierservice.service; + +import com.chaozhanggui.system.cashierservice.entity.TbGroupOrderCoupon; +import com.chaozhanggui.system.cashierservice.dao.TbGroupOrderCouponMapper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 团购卷 卷码表(TbGroupOrderCoupon)表服务实现类 + * + * @author ww + * @since 2024-05-06 14:39:59 + */ +@Service +public class GroupOrderCouponService { + @Resource + private TbGroupOrderCouponMapper tbGroupOrderCouponMapper; + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + public TbGroupOrderCoupon queryById(Integer id) { + return this.tbGroupOrderCouponMapper.queryById(id); + } + + public List queryByOrderId(Integer orderId) { + return tbGroupOrderCouponMapper.queryByOrderId(orderId); + } + + public List queryNoRefundByOrderId(Integer orderId) { + return tbGroupOrderCouponMapper.queryNoRefundByOrderId(orderId); + } + + public TbGroupOrderCoupon insert(TbGroupOrderCoupon tbGroupOrderCoupon) { + this.tbGroupOrderCouponMapper.insert(tbGroupOrderCoupon); + return tbGroupOrderCoupon; + } + + public TbGroupOrderCoupon update(TbGroupOrderCoupon tbGroupOrderCoupon) { + this.tbGroupOrderCouponMapper.update(tbGroupOrderCoupon); + return this.queryById(tbGroupOrderCoupon.getId()); + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderInfoService.java index 82c79bd..03362d9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/GroupOrderInfoService.java @@ -1,19 +1,19 @@ package com.chaozhanggui.system.cashierservice.service; -import com.chaozhanggui.system.cashierservice.dao.TbProductMapper; -import com.chaozhanggui.system.cashierservice.dao.TbPurchaseNoticeMapper; -import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; +import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; -import com.chaozhanggui.system.cashierservice.dao.TbGroupOrderInfoMapper; +import com.chaozhanggui.system.cashierservice.entity.dto.CreateGroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.dto.GroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.vo.GroupOrderDetailsVo; import com.chaozhanggui.system.cashierservice.entity.vo.GroupOrderListVo; import com.chaozhanggui.system.cashierservice.entity.vo.ProductVo; +import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.DateUtils; import com.chaozhanggui.system.cashierservice.util.JSONUtil; import com.chaozhanggui.system.cashierservice.util.LocationUtils; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -22,18 +22,23 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.Random; @Service @Slf4j -public class GroupOrderInfoService{ +public class GroupOrderInfoService { @Autowired private TbShopInfoMapper shopInfoMapper; @Autowired private TbProductMapper tbProductMapper; @Resource private TbGroupOrderInfoMapper tbGroupOrderInfoMapper; + @Autowired + private GroupOrderCouponService groupOrderCouponService; + @Autowired + private TbMerchantAccountMapper merchantAccountMapper; @Resource private TbPurchaseNoticeMapper noticeMapper; @@ -43,23 +48,33 @@ public class GroupOrderInfoService{ * @param id 主键 * @return 实例对象 */ - - public Result queryById(Integer id,String lng,String lat) { + + public Result queryById(Integer id, String lng, String lat) { TbGroupOrderInfo groupOrder = tbGroupOrderInfoMapper.queryById(id); - GroupOrderDetailsVo result=new GroupOrderDetailsVo(); + GroupOrderDetailsVo result = new GroupOrderDetailsVo(); + result.setId(id); + result.setProId(groupOrder.getProId()); result.setProName(groupOrder.getProName()); result.setProImg(groupOrder.getProImg()); TbPurchaseNotice tbPurchaseNotice = noticeMapper.queryByCouponId(groupOrder.getProId()); - result.setAvaTime(tbPurchaseNotice.getAvailableTime()+" | 到店吃"); -// result.setProDetail(); + if(tbPurchaseNotice!=null){ + result.setAvaTime(tbPurchaseNotice.getAvailableTime()+" | 到店吃"); + result.setNotice(tbPurchaseNotice); + } +// result.setProDetail(); //随时退·过期自动退·到店 result.setOrderAmount(groupOrder.getOrderAmount()); - result.setExpDate(groupOrder.getNumber()+"张可用 | "+ DateUtils.getTimeM(groupOrder.getExpDate())); + if(!groupOrder.getStatus().equals("unpaid")){ + if(!groupOrder.getStatus().equals("closed")){ + result.setExpDate(groupOrder.getNumber()- + groupOrder.getRefundNumber() + "张可用 | " + + DateUtils.getTimeM( + groupOrder.getExpDate())+" 到期"); + } + } result.setRefundAble(groupOrder.getRefundAble()); - List coupons = Arrays.asList(groupOrder.getCouponNo().split(",")); - List couponUrls = Arrays.asList(groupOrder.getCouponUrl().split(",")); - result.setCouponNo(coupons); - result.setCouponUrl(couponUrls); + List tbGroupOrderCoupons = groupOrderCouponService.queryByOrderId(id); + result.setCoupons(tbGroupOrderCoupons); TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(groupOrder.getShopId()); result.setShopName(shopInfo.getShopName()); @@ -73,67 +88,90 @@ public class GroupOrderInfoService{ TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(groupOrder.getProId()); result.setTagVos(JSONUtil.parseListTNewList(product.getGroupSnap(), ProductVo.class)); - result.setNotice(tbPurchaseNotice); result.setOrderNo(groupOrder.getOrderNo()); result.setPhone(groupOrder.getPhone()); - result.setPayTime(DateUtils.getTime(groupOrder.getPayTime())); + if (groupOrder.getPayTime() != null) { + result.setPayTime(DateUtils.getTime(groupOrder.getPayTime())); + } result.setNumber(groupOrder.getNumber()); result.setPayAmount(groupOrder.getPayAmount()); - return Result.success(CodeEnum.SUCCESS,result); + result.setSaveAmount(groupOrder.getSaveAmount()); + result.setStatus(groupOrder.getStatus()); + return Result.success(CodeEnum.SUCCESS, result); } /** * 分页查询 + * * @return 查询结果 */ public Result queryByPage(GroupOrderDto param) { PageHelper.startPage(param.getPage(), param.getSize()); - List tbGroupOrderInfos = tbGroupOrderInfoMapper.queryAll(param); - return Result.success(CodeEnum.SUCCESS,new PageInfo(tbGroupOrderInfos)); + return new Result(CodeEnum.SUCCESS,new PageInfo<>(tbGroupOrderInfoMapper.queryAll(param))); } /** * 新增数据 * - * @param tbGroupOrderInfo 实例对象 * @return 实例对象 */ - - public Result insert(TbGroupOrderInfo tbGroupOrderInfo) { + public Result insert(CreateGroupOrderDto param) { + TbMerchantAccount tbMerchantAccount = merchantAccountMapper.selectByShopId(param.getShopId().toString()); + if (tbMerchantAccount == null) { + throw new MsgException("生成订单错误"); + } + + TbGroupOrderInfo tbGroupOrderInfo = new TbGroupOrderInfo(); + tbGroupOrderInfo.setOrderNo(generateOrderNumber()); + tbGroupOrderInfo.setMerchantId(tbMerchantAccount.getId()); + tbGroupOrderInfo.setShopId(param.getShopId()); + tbGroupOrderInfo.setProId(param.getProId()); + tbGroupOrderInfo.setUserId(param.getUserId()); + tbGroupOrderInfo.setPhone(param.getPhone()); + TbProduct tbProduct = tbProductMapper.selectById(param.getProId()); + tbGroupOrderInfo.setProImg(tbProduct.getCoverImg()); + tbGroupOrderInfo.setProName(tbProduct.getName()); + tbGroupOrderInfo.setNumber(param.getNum()); + tbGroupOrderInfo.setRefundNumber(0); + tbGroupOrderInfo.setOrderAmount(param.getOrderAmount()); + tbGroupOrderInfo.setRefundAmount(BigDecimal.ZERO); + tbGroupOrderInfo.setSaveAmount(param.getOrderAmount().subtract(param.getPayAmount())); + tbGroupOrderInfo.setPayAmount(param.getPayAmount()); + tbGroupOrderInfo.setStatus("unpaid"); + tbGroupOrderInfo.setRemark(param.getRemark()); + tbGroupOrderInfo.setCreateTime(new Date()); + tbGroupOrderInfo.setTradeDay(new Date()); + tbGroupOrderInfo.setRefundAble(1); int insert = tbGroupOrderInfoMapper.insert(tbGroupOrderInfo); - if(insert>0){ - return new Result(CodeEnum.SUCCESS); - }else { + if (insert > 0) { + return new Result(CodeEnum.SUCCESS,tbGroupOrderInfo); + } else { return new Result(CodeEnum.FAIL); } } + public String generateOrderNumber() { + String date = DateUtils.getSdfTimes(); + Random random = new Random(); + int randomNum = random.nextInt(900) + 100; + return "GP" + date + randomNum; + } + /** * 修改数据 * * @param tbGroupOrderInfo 实例对象 * @return 实例对象 */ - + public Result update(TbGroupOrderInfo tbGroupOrderInfo) { int update = tbGroupOrderInfoMapper.update(tbGroupOrderInfo); - if(update>0){ + if (update > 0) { return new Result(CodeEnum.SUCCESS); - }else { + } else { return new Result(CodeEnum.FAIL); } } - - /** - * 通过主键删除数据 - * - * @param id 主键 - * @return 是否成功 - */ - - public boolean deleteById(Integer id) { - return this.tbGroupOrderInfoMapper.deleteById(id) > 0; - } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/HomeDistrictService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/HomeDistrictService.java index 2fc49d9..3f2afd7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/HomeDistrictService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/HomeDistrictService.java @@ -1,12 +1,13 @@ package com.chaozhanggui.system.cashierservice.service; -import com.chaozhanggui.system.cashierservice.dao.SysDictDetailMapper; +import com.chaozhanggui.system.cashierservice.dao.SysDictMapper; import com.chaozhanggui.system.cashierservice.dao.TbCouponCategoryMapper; import com.chaozhanggui.system.cashierservice.dao.TbPlatformDictMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; import com.chaozhanggui.system.cashierservice.entity.SysDict; import com.chaozhanggui.system.cashierservice.entity.TbCouponCategory; import com.chaozhanggui.system.cashierservice.entity.TbPlatformDict; +import com.chaozhanggui.system.cashierservice.entity.dto.ComShopDto; import com.chaozhanggui.system.cashierservice.entity.dto.HomeBaseDto; import com.chaozhanggui.system.cashierservice.entity.dto.HomeDto; import com.chaozhanggui.system.cashierservice.entity.vo.*; @@ -26,7 +27,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.ExecutionException; @Service @Slf4j @@ -41,7 +41,8 @@ public class HomeDistrictService { @Resource private TbCouponCategoryMapper couponCategoryMapper; @Resource - private SysDictDetailMapper sysDictDetailMapper; +// private SysDictDetailMapper sysDictDetailMapper; + private SysDictMapper sysDictMapper; public Result topCommon(HomeDto param, String environment){ CommonVo result = new CommonVo(); @@ -55,22 +56,17 @@ public class HomeDistrictService { }else {//商品分类页 TbCouponCategory tbCouponCategory = couponCategoryMapper.queryById(Integer.valueOf(param.getType())); result.setTitle(tbCouponCategory.getName()); - List carouselList = platformDictMapper.queryAllByType(param.getType(), environment); + List carouselList = platformDictMapper.queryGroupByValue(param.getType(), environment); if (!CollectionUtils.isEmpty(carouselList)) { result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class)); } - List sysDicts = sysDictDetailMapper.selectByType(null); - List dicDetailVO = new ArrayList<>(); - for (SysDict sysDictsList : sysDicts) { - DicDetailVO dicDetailVOList = new DicDetailVO(); - dicDetailVOList.setDictName(sysDictsList.getDictName()); - dicDetailVOList.setName(sysDictsList.getName()); - dicDetailVOList.setDescription(sysDictsList.getDescription()); - dicDetailVOList.setDetail(sysDictDetailMapper.selectByDictId(sysDictsList.getDictId())); - dicDetailVOList.setIsChild((sysDictsList.getIsChild() == null || sysDictsList.getIsChild() == 0) ? false : true); - dicDetailVO.add(dicDetailVOList); + List sysDicts = sysDictMapper.selectByType(null); + for (SysDict sysDict : sysDicts) { + if (sysDict.getIsChild()==1) { + sysDict.setDetail(sysDictMapper.selectByDictId(sysDict.getDictId())); + } } - result.setMenu(dicDetailVO); + result.setMenu(sysDicts); } } else { if (param.getOrderBy() != null) { @@ -80,23 +76,19 @@ public class HomeDistrictService { result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class)); } result.setTitle("今日上新"); - } else if (param.getOrderBy() == 2) { + } else if (param.getOrderBy() == 4) { List carouselList = platformDictMapper.queryAllByType("hotCoupon", environment); if (!CollectionUtils.isEmpty(carouselList)) { result.setCarousel(JSONUtil.parseListTNewList(carouselList, HomeCarouselVo.class)); } result.setTitle("热榜推荐"); - List sysDicts = sysDictDetailMapper.selectHot(); - List dicDetailVO = new ArrayList<>(); - for (SysDict sysDictsList : sysDicts) { - DicDetailVO dicDetailVOList = new DicDetailVO(); - dicDetailVOList.setDictName(sysDictsList.getDictName()); - dicDetailVOList.setName(sysDictsList.getName()); - dicDetailVOList.setDescription(sysDictsList.getDescription()); - dicDetailVOList.setIsChild((sysDictsList.getIsChild() == null || sysDictsList.getIsChild() == 0) ? false : true); - dicDetailVO.add(dicDetailVOList); + List sysDicts = sysDictMapper.selectHot(); + for (SysDict sysDict : sysDicts) { + if (sysDict.getIsChild()==1) { + sysDict.setDetail(sysDictMapper.selectByDictId(sysDict.getDictId())); + } } - result.setMenu(dicDetailVO); + result.setMenu(sysDicts); } } } @@ -114,7 +106,7 @@ public class HomeDistrictService { topAndBottomMap.get("rightTopPoint")[0],//34.39724773780949 topAndBottomMap.get("leftBottomPoint")[1], topAndBottomMap.get("leftBottomPoint")[0], - param.getAddress(), param.getLng(), param.getLat());//西安市 + param.getAddress(), param.getLng(), param.getLat(),null);//西安市 for (SubShopVo subShopVo : subShopVos) {//距离计算 if (StringUtils.isNotBlank(subShopVo.getLat()) && StringUtils.isNotBlank(subShopVo.getLng())) { BigDecimal distance = LocationUtils.getDistanceFrom2LngLat( @@ -123,17 +115,38 @@ public class HomeDistrictService { subShopVo.setDistances(distance.toString()); } } - PageInfo pageInfo = new PageInfo(); - pageInfo.setList(subShopVos); - return Result.success(CodeEnum.SUCCESS, pageInfo); + return Result.success(CodeEnum.SUCCESS, new PageInfo(subShopVos)); + + } + + public Result queryComShopList(ComShopDto param) { + Map topAndBottomMap = LocationUtils.returnLLSquarePoint( + Double.parseDouble(param.getLng()), + Double.parseDouble(param.getLat()), + param.getDistanceInKm()); + List subShopVos = shopInfoMapper.selShopInfoByGps( + topAndBottomMap.get("rightTopPoint")[1],//109.06198684730003 + topAndBottomMap.get("rightTopPoint")[0],//34.39724773780949 + topAndBottomMap.get("leftBottomPoint")[1], + topAndBottomMap.get("leftBottomPoint")[0], + param.getAddress(), param.getLng(), param.getLat(),param.getShopName());//西安市 + for (SubShopVo subShopVo : subShopVos) {//距离计算 + subShopVo.setBusinessTime(subShopVo.getBusinessStartDay()+"至"+subShopVo.getBusinessEndDay()+" "+subShopVo.getBusinessTime()); + if (StringUtils.isNotBlank(subShopVo.getLat()) && StringUtils.isNotBlank(subShopVo.getLng())) { + BigDecimal distance = LocationUtils.getDistanceFrom2LngLat( + Double.parseDouble(param.getLng()), Double.parseDouble(param.getLat()), + Double.parseDouble(subShopVo.getLng()), Double.parseDouble(subShopVo.getLat())); + subShopVo.setDistances(distance.toString()); + } + } + return Result.success(CodeEnum.SUCCESS, subShopVos); } /** * 通用商品页 */ - public Result proList(HomeDto param) throws ExecutionException, InterruptedException { - PageInfo products = productService.products(param); - return Result.success(CodeEnum.SUCCESS, products); + public Result proList(HomeDto param) { + return Result.success(CodeEnum.SUCCESS, productService.products(param)); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/HomePageService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/HomePageService.java index 07aeefb..846cd42 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/HomePageService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/HomePageService.java @@ -1,6 +1,6 @@ package com.chaozhanggui.system.cashierservice.service; -import com.chaozhanggui.system.cashierservice.dao.SysDictDetailMapper; +import com.chaozhanggui.system.cashierservice.dao.SysDictMapper; import com.chaozhanggui.system.cashierservice.dao.TbPlatformDictMapper; import com.chaozhanggui.system.cashierservice.dao.TbProductSkuMapper; import com.chaozhanggui.system.cashierservice.entity.Enum.LogoEnum; @@ -11,6 +11,7 @@ import com.chaozhanggui.system.cashierservice.entity.vo.*; import com.chaozhanggui.system.cashierservice.redis.RedisUtil; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; +import com.chaozhanggui.system.cashierservice.util.BigDecimalUtils; import com.chaozhanggui.system.cashierservice.util.JSONUtil; import com.chaozhanggui.system.cashierservice.util.RandomUtil; import com.chaozhanggui.system.cashierservice.util.StringUtil; @@ -37,7 +38,7 @@ public class HomePageService { @Resource private TbPlatformDictMapper platformDictMapper; @Resource - private SysDictDetailMapper sysDictDetailMapper; + private SysDictMapper sysDictMapper; @Resource private ProductService productService; @Autowired @@ -53,18 +54,13 @@ public class HomePageService { homeUpVO.setDistrict(JSONUtil.parseListTNewList(districtList, HomeDistrictVo.class)); //菜单 - List sysDicts = sysDictDetailMapper.selectByType("home"); - List dicDetailVO = new ArrayList<>(); - for (SysDict sysDictsList : sysDicts) { - DicDetailVO dicDetailVOList = new DicDetailVO(); - dicDetailVOList.setDictName(sysDictsList.getDictName()); - dicDetailVOList.setName(sysDictsList.getName()); - dicDetailVOList.setDescription(sysDictsList.getDescription()); - dicDetailVOList.setDetail(sysDictDetailMapper.selectByDictId(sysDictsList.getDictId())); - dicDetailVOList.setIsChild((sysDictsList.getIsChild() == null || sysDictsList.getIsChild() == 0) ? false : true); - dicDetailVO.add(dicDetailVOList); + List sysDicts = sysDictMapper.selectByType("home"); + for (SysDict sysDict : sysDicts) { + if (sysDict.getIsChild()==1) { + sysDict.setDetail(sysDictMapper.selectByDictId(sysDict.getDictId())); + } } - homeUpVO.setMenu(dicDetailVO); + homeUpVO.setMenu(sysDicts); /** * 销量榜 */ @@ -72,8 +68,7 @@ public class HomePageService { for (HomeVO o : homeVOs) { BigDecimal originPrice = o.getOriginPrice(); if (originPrice.compareTo(BigDecimal.ZERO) != 0) { - BigDecimal multiply = o.getSalePrice().divide(o.getOriginPrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN); - o.setDiscount(multiply); + o.setDiscount(BigDecimalUtils.getDiscount(o.getOriginPrice(),o.getSalePrice())); } else { o.setDiscount(null); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 5e687bf..63cbc81 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -1,12 +1,9 @@ package com.chaozhanggui.system.cashierservice.service; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; -import com.chaozhanggui.system.cashierservice.entity.vo.CashierCarVo; import com.chaozhanggui.system.cashierservice.entity.vo.OrderVo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; @@ -14,25 +11,19 @@ import com.chaozhanggui.system.cashierservice.redis.RedisCst; import com.chaozhanggui.system.cashierservice.redis.RedisUtil; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; -import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer; import com.chaozhanggui.system.cashierservice.util.DateUtils; import com.chaozhanggui.system.cashierservice.util.N; import com.chaozhanggui.system.cashierservice.util.RedisUtils; -import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.awt.print.Pageable; import java.io.IOException; import java.math.BigDecimal; import java.text.ParseException; -import java.time.Instant; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @@ -209,18 +200,12 @@ public class OrderService { public Result orderList(Integer userId, Integer page, Integer size, String status) { - TbUserInfo tbUserInfo = userInfoMapper.selectByPrimaryKey(userId); - if (tbUserInfo == null) { - return Result.fail("生成订单失败"); - } - //获取页码号 - int beginNo; - if (page <= 0) { - beginNo = 0; - } else { - beginNo = (page - 1) * size; - } - List tbOrderInfos = orderInfoMapper.selectByUserId(userId, beginNo, size, status); +// TbUserInfo tbUserInfo = userInfoMapper.selectByPrimaryKey(userId); +// if (tbUserInfo == null) { +// return Result.fail("获取订单失败"); +// } + PageHelper.startPage(page, size); + List tbOrderInfos = orderInfoMapper.selectByUserId(userId, status); for (TbOrderInfo orderInfo : tbOrderInfos) { List list = tbOrderDetailMapper.selectAllByOrderId(orderInfo.getId()); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 8810012..6e503b7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1,11 +1,15 @@ package com.chaozhanggui.system.cashierservice.service; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; +import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; +import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.model.PayReq; +import com.chaozhanggui.system.cashierservice.model.ReturnOrderReq; import com.chaozhanggui.system.cashierservice.model.TradeQueryReq; import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.redis.RedisCst; @@ -28,16 +32,14 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; +import java.time.LocalDateTime; +import java.util.*; @Service @Slf4j public class PayService { - @Autowired TbOrderInfoMapper tbOrderInfoMapper; @@ -53,7 +55,11 @@ public class PayService { @Autowired TbOrderDetailMapper tbOrderDetailMapper; + @Autowired + private TbMerchantAccountMapper merchantAccountMapper; + @Autowired + private GroupOrderCouponService groupOrderCouponService; @Autowired @@ -66,12 +72,13 @@ public class PayService { @Value("${ysk.callBackurl}") private String callBackurl; + @Value("${ysk.callBackGroupurl}") + private String callBackGroupurl; + @Value("${ysk.callBackIn}") private String callBackIn; - - @Autowired private TbCashierCartMapper tbCashierCartMapper; @@ -94,37 +101,47 @@ public class PayService { @Autowired TbShopUserFlowMapper tbShopUserFlowMapper; - + @Resource + private TbGroupOrderInfoMapper tbGroupOrderInfoMapper; + @Autowired + private TbProductMapper tbProductMapper; + @Resource + private GroupOrderCouponService orderCouponService; @Transactional(rollbackFor = Exception.class) - public Result payOrder(String openId,String orderId,String ip) throws Exception { - TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); + public Result payOrder(String openId, String orderId,String payType, String ip) throws Exception { + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); - if(!"unpaid".equals(orderInfo.getStatus())&&!"paying".equals(orderInfo.getStatus())){ + if (!"unpaid".equals(orderInfo.getStatus()) && !"paying".equals(orderInfo.getStatus())) { return Result.fail("订单状态异常,不允许支付"); } - if(ObjectUtil.isNull(orderInfo.getMerchantId())||ObjectUtil.isEmpty(orderInfo.getMerchantId())){ + if (ObjectUtil.isNull(orderInfo.getMerchantId()) || ObjectUtil.isEmpty(orderInfo.getMerchantId())) { return Result.fail("没有对应的商户"); } - TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); - if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){ + if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { return Result.fail("支付通道不存在"); } - TbOrderPayment payment=tbOrderPaymentMapper.selectByOrderId(orderId); - if(ObjectUtil.isEmpty(payment)||payment==null){ - payment=new TbOrderPayment(); + TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderId); + if (ObjectUtil.isEmpty(payment) || payment == null) { + payment = new TbOrderPayment(); payment.setPayTypeId("ysk"); payment.setAmount(orderInfo.getOrderAmount()); payment.setPaidAmount(orderInfo.getPayAmount()); payment.setHasRefundAmount(BigDecimal.ZERO); - payment.setPayName("微信支付"); - payment.setPayType("wechatPay"); + if (payType.equals("wechatPay")) { + payment.setPayName("微信支付"); + payment.setPayType("wechatPay"); + } else if (payType.equals("aliPay")) { + payment.setPayName("支付宝支付"); + payment.setPayType("aliPay"); + } payment.setReceived(payment.getAmount()); payment.setChangeFee(BigDecimal.ZERO); payment.setMemberId(orderInfo.getMemberId()); @@ -132,32 +149,41 @@ public class PayService { payment.setOrderId(orderInfo.getId().toString()); payment.setCreatedAt(System.currentTimeMillis()); tbOrderPaymentMapper.insert(payment); - }else { + } else { + if (payType.equals("wechatPay")) { + payment.setPayName("微信支付"); + payment.setPayType("wechatPay"); + } else if (payType.equals("aliPay")) { + payment.setPayName("支付宝支付"); + payment.setPayType("aliPay"); + } payment.setUpdatedAt(System.currentTimeMillis()); tbOrderPaymentMapper.updateByPrimaryKey(payment); } - PayReq req=new PayReq(); - + PayReq req = new PayReq(); req.setAppId(thirdApply.getAppId()); req.setTimestamp(System.currentTimeMillis()); req.setIp(ip); req.setMercOrderNo(orderInfo.getOrderNo()); req.setNotifyUrl(callBackurl); - req.setPayAmt(payment.getAmount().setScale(2,BigDecimal.ROUND_DOWN).toPlainString()); - req.setPayType("03"); - req.setPayWay("WXZF"); + req.setPayAmt(payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + if (payType.equals("wechatPay")) { + req.setPayType("03"); + req.setPayWay("WXZF");//WXZF ZFBZF UNIONPAY + } else if (payType.equals("aliPay")) { + req.setPayWay("ZFBZF"); + } req.setSubject("扫码点餐"); req.setUserId(openId); + Map map = BeanUtil.transBeanMap(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - Map map= BeanUtil.transBeanMap(req); - req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true)); - - ResponseEntity response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class); - if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){ - JSONObject object=JSONObject.parseObject(response.getBody()); - if(object.get("code").equals("0")){ + ResponseEntity response = restTemplate.postForEntity(url.concat("trans/pay"), req, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { payment.setTradeNumber(object.getJSONObject("data").get("orderNumber").toString()); payment.setUpdatedAt(System.currentTimeMillis()); tbOrderPaymentMapper.updateByPrimaryKeySelective(payment); @@ -166,7 +192,7 @@ public class PayService { tbOrderInfoMapper.updateByPrimaryKey(orderInfo); - String key= RedisCst.TABLE_CART.concat(orderInfo.getTableId()).concat("-").concat(orderInfo.getShopId()); + String key = RedisCst.TABLE_CART.concat(orderInfo.getTableId()).concat("-").concat(orderInfo.getShopId()); //清除缓存购物车数据 redisUtil.deleteByKey(key); JSONObject jsonObject1 = new JSONObject(); @@ -175,10 +201,10 @@ public class PayService { jsonObject1.put("type", ""); jsonObject1.put("data", new JSONArray()); jsonObject1.put("amount", 0); - AppWebSocketServer.AppSendInfo(jsonObject1,key, false); - tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final"); - return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data")); - }else { + AppWebSocketServer.AppSendInfo(jsonObject1, key, false); + tbCashierCartMapper.updateStatusByOrderId(orderId.toString(), "final"); + return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data")); + } else { return Result.fail(object.getString("msg")); } } @@ -186,11 +212,159 @@ public class PayService { return Result.fail("失败"); } + @Transactional(rollbackFor = Exception.class) + public Result groupOrderPay(String orderId, String payType, String userId, String ip) { + TbGroupOrderInfo orderInfo = tbGroupOrderInfoMapper.queryById(Integer.valueOf(orderId)); + if (!"unpaid".equals(orderInfo.getStatus()) && !"paying".equals(orderInfo.getStatus())) { + return Result.fail("订单状态异常,不允许支付"); + } + + TbMerchantAccount tbMerchantAccount = merchantAccountMapper.selectByShopId(orderInfo.getShopId().toString()); + if (tbMerchantAccount == null) { + throw new MsgException("生成订单错误"); + } + + if (ObjectUtil.isNull(tbMerchantAccount.getMerchantId()) || ObjectUtil.isEmpty(tbMerchantAccount.getMerchantId())) { + return Result.fail("没有对应的商户"); + } + + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(tbMerchantAccount.getMerchantId())); + + if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { + return Result.fail("支付通道不存在"); + } + + TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderId); + if (ObjectUtil.isEmpty(payment) || payment == null) { + payment = new TbOrderPayment(); + payment.setPayTypeId("ysk"); + payment.setAmount(orderInfo.getOrderAmount()); + payment.setPaidAmount(orderInfo.getPayAmount()); + payment.setHasRefundAmount(BigDecimal.ZERO); + if (payType.equals("wechatPay")) { + payment.setPayName("微信支付"); + payment.setPayType("wechatPay"); + } else if (payType.equals("aliPay")) { + payment.setPayName("支付宝支付"); + payment.setPayType("aliPay"); + } + payment.setReceived(payment.getAmount()); + payment.setChangeFee(BigDecimal.ZERO); +// payment.setMemberId(orderInfo.getMemberId());//会员Id + payment.setShopId(orderInfo.getShopId().toString()); + payment.setOrderId(orderInfo.getId().toString()); + payment.setCreatedAt(System.currentTimeMillis()); + tbOrderPaymentMapper.insert(payment); + } else { + if (payType.equals("wechatPay")) { + payment.setPayName("微信支付"); + payment.setPayType("wechatPay"); + } else if (payType.equals("aliPay")) { + payment.setPayName("支付宝支付"); + payment.setPayType("aliPay"); + } + payment.setUpdatedAt(System.currentTimeMillis()); + tbOrderPaymentMapper.updateByPrimaryKey(payment); + } + + PayReq req = new PayReq(); + + req.setAppId(thirdApply.getAppId()); + req.setTimestamp(System.currentTimeMillis()); + req.setIp(ip); + req.setMercOrderNo(orderInfo.getOrderNo()); + req.setNotifyUrl(callBackGroupurl); + req.setPayAmt(payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + if (payType.equals("wechatPay")) { + req.setPayType("03"); + req.setPayWay("WXZF");//WXZF ZFBZF UNIONPAY + } else if (payType.equals("aliPay")) { + req.setPayWay("ZFBZF"); + } + req.setSubject("零点八零:团购卷"); + req.setUserId(userId); + + + Map map = BeanUtil.transBeanMap(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + + ResponseEntity response = restTemplate.postForEntity(url.concat("trans/pay"), req, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { + payment.setTradeNumber(object.getJSONObject("data").get("orderNumber").toString()); + payment.setUpdatedAt(System.currentTimeMillis()); + tbOrderPaymentMapper.updateByPrimaryKeySelective(payment); + orderInfo.setPayType(payType); + orderInfo.setStatus("paying"); + orderInfo.setPayOrderNo(payment.getTradeNumber()); + tbGroupOrderInfoMapper.update(orderInfo); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("status", "success"); + jsonObject1.put("msg", "成功"); + jsonObject1.put("type", ""); + jsonObject1.put("data", new JSONArray()); + jsonObject1.put("amount", 0); + tbProductMapper.upGroupRealSalesNumber(orderInfo.getProId().toString(), orderInfo.getNumber()); + return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data")); + } else { + return Result.fail(object.getString("msg")); + } + } + + return Result.fail("失败"); + } @Transactional(rollbackFor = Exception.class) - public Result accountPay(String orderId, String userId, String shopId,String pwd) { - if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(userId)||ObjectUtil.isEmpty(shopId)||ObjectUtil.isEmpty(pwd)) { + public Result returnOrder(ReturnGroupOrderDto param) { + TbGroupOrderInfo groupOrderInfo = tbGroupOrderInfoMapper.queryById(param.getOrderId()); + List tbGroupOrderCoupons = orderCouponService.queryNoRefundByOrderId(param.getOrderId()); + if (param.getNum() > tbGroupOrderCoupons.size()) { + return Result.fail("可退数量不足"); + } + for (int i = 0; i < param.getNum(); i++) { + TbGroupOrderCoupon coupon = tbGroupOrderCoupons.get(i); + coupon.setIsRefund(1); + coupon.setRefundAmount(param.getRefundAmount()); + coupon.setRefundDesc(param.getRefundDesc()); + coupon.setRefundReason(param.getRefundReason()); + orderCouponService.update(coupon); + } + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId()); + MsgException.checkNull(thirdApply, "支付参数配置错误"); + ReturnOrderReq req = new ReturnOrderReq(); + req.setAppId(thirdApply.getAppId()); + req.setTimestamp(System.currentTimeMillis()); + req.setOrderNumber(groupOrderInfo.getPayOrderNo()); + req.setAmount(param.getRefundAmount().toString()); + req.setMercRefundNo(groupOrderInfo.getOrderNo()); + req.setRefundReason("团购卷:退货"); + req.setPayPassword(thirdApply.getPayPassword()); + Map map = BeanUtil.transBean2Map(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + log.info("groupOrderReturn req:{}", JSONUtil.toJsonStr(req)); + ResponseEntity response = restTemplate.postForEntity(url.concat("merchantOrder/returnOrder"), req, String.class); + log.info("groupOrderReturn:{}", response.getBody()); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (!object.get("code").equals("0")) { + MsgException.check(true, "退款渠道调用失败"); + } + } + groupOrderInfo.setRefundNumber(groupOrderInfo.getRefundNumber() + param.getNum()); + groupOrderInfo.setRefundAmount(groupOrderInfo.getRefundAmount().add(param.getRefundAmount())); + if (groupOrderInfo.getNumber() == groupOrderInfo.getRefundNumber()) { + groupOrderInfo.setRefundAble(0); + groupOrderInfo.setStatus("refund"); + } + tbGroupOrderInfoMapper.update(groupOrderInfo); + return Result.success(CodeEnum.SUCCESS); + } + + @Transactional(rollbackFor = Exception.class) + public Result accountPay(String orderId, String userId, String shopId, String pwd) { + if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(userId) || ObjectUtil.isEmpty(shopId) || ObjectUtil.isEmpty(pwd)) { return Result.fail("参数错误"); } @@ -210,18 +384,18 @@ public class PayService { return Result.fail("当前店铺未开通储值卡支付"); } - TbShopUser user = tbShopUserMapper.selectByUserIdAndShopId(userId,shopId); + TbShopUser user = tbShopUserMapper.selectByUserIdAndShopId(userId, shopId); if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) { return Result.fail("此用户非会员用户"); } - if("1".equals(user.getIsPwd())){ + if ("1".equals(user.getIsPwd())) { return Result.fail("会员支付密码为初始化密码"); } - if(!MD5Util.encrypt(pwd).equals(user.getPwd())){ + if (!MD5Util.encrypt(pwd).equals(user.getPwd())) { return Result.fail("会员支付密码错误"); } @@ -254,12 +428,12 @@ public class PayService { tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - int cartCount= tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final"); + int cartCount = tbCashierCartMapper.updateStatusByOrderId(orderId.toString(), "final"); - log.info("更新购物车:{}",cartCount); + log.info("更新购物车:{}", cartCount); //更新子单状态 - tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed"); + tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed"); //修改主单状态 orderInfo.setStatus("closed"); @@ -269,10 +443,10 @@ public class PayService { tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - JSONObject jsonObject=new JSONObject(); - jsonObject.put("token",0); - jsonObject.put("type","wxcreate"); - jsonObject.put("orderId",orderInfo.getId().toString()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", 0); + jsonObject.put("type", "wxcreate"); + jsonObject.put("orderId", orderInfo.getId().toString()); producer.putOrderCollect(jsonObject.toJSONString()); @@ -284,48 +458,48 @@ public class PayService { @Transactional(rollbackFor = Exception.class) public Result modifyOrderStatus(Integer orderId) throws IOException { - TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); - if(ObjectUtil.isEmpty(orderInfo)){ + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); + if (ObjectUtil.isEmpty(orderInfo)) { return Result.fail("订单信息不存在"); } - if("paying".equals(orderInfo.getStatus())){ - TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(orderInfo.getId().toString()); - if(ObjectUtil.isNotEmpty(payment)&&ObjectUtil.isNotEmpty(payment.getTradeNumber())){ + if ("paying".equals(orderInfo.getStatus())) { + TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderInfo.getId().toString()); + if (ObjectUtil.isNotEmpty(payment) && ObjectUtil.isNotEmpty(payment.getTradeNumber())) { - TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); - if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){ + if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { return Result.fail("支付通道不存在"); } - TradeQueryReq req=new TradeQueryReq(); + TradeQueryReq req = new TradeQueryReq(); req.setAppId(thirdApply.getAppId()); req.setTimestamp(System.currentTimeMillis()); req.setOrderNumber(payment.getTradeNumber()); - Map map= BeanUtil.transBeanMap(req); + Map map = BeanUtil.transBeanMap(req); - req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true)); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - ResponseEntity response= restTemplate.postForEntity(url.concat("merchantOrder/tradeQuery"),req,String.class); - if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){ - JSONObject object=JSONObject.parseObject(response.getBody()); + ResponseEntity response = restTemplate.postForEntity(url.concat("merchantOrder/tradeQuery"), req, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); - if(object.get("code").equals("0")){ - JSONObject data=object.getJSONObject("data"); - String status=data.getString("status"); - String cartStatus=""; - switch (status){ + if (object.get("code").equals("0")) { + JSONObject data = object.getJSONObject("data"); + String status = data.getString("status"); + String cartStatus = ""; + switch (status) { case "0": //交易失败 break; case "1": //交易成功 //修改数据库中购物车数据 - int cartCount= tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final"); + int cartCount = tbCashierCartMapper.updateStatusByOrderId(orderId.toString(), "final"); - log.info("更新购物车:{}",cartCount); + log.info("更新购物车:{}", cartCount); //更新子单状态 - tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed"); + tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed"); //修改主单状态 orderInfo.setStatus("closed"); @@ -335,76 +509,72 @@ public class PayService { tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - JSONObject jsonObject=new JSONObject(); - jsonObject.put("token",0); - jsonObject.put("type","wxcreate"); - jsonObject.put("orderId",orderInfo.getId().toString()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", 0); + jsonObject.put("type", "wxcreate"); + jsonObject.put("orderId", orderInfo.getId().toString()); producer.putOrderCollect(jsonObject.toJSONString()); - log.info("发送打印数据"); producer.printMechine(orderInfo.getId() + ""); log.info("发送赠送购物券"); JSONObject coupons = new JSONObject(); - coupons.put("type","buy"); - coupons.put("orderId",orderId); + coupons.put("type", "buy"); + coupons.put("orderId", orderId); producer.printCoupons(coupons.toJSONString()); - return Result.success(CodeEnum.SUCCESS,orderId); + return Result.success(CodeEnum.SUCCESS, orderId); case "2": //退款成功 - cartStatus="refund"; + cartStatus = "refund"; orderInfo.setStatus("refund"); break; case "3": //退款失败 break; case "4": //退款中 - cartStatus="refunding"; + cartStatus = "refunding"; orderInfo.setStatus("refunding"); break; } - tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),cartStatus); + tbCashierCartMapper.updateStatusByOrderId(orderId.toString(), cartStatus); orderInfo.setUpdatedAt(System.currentTimeMillis()); tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); } } } } - return Result.success(CodeEnum.SUCCESS,orderId); + return Result.success(CodeEnum.SUCCESS, orderId); } - - @Transactional(rollbackFor = Exception.class) - public Result memberIn(String openId,String userId,String amount,String shopId,String ip){ - if(ObjectUtil.isEmpty(openId)||ObjectUtil.isEmpty(userId)){ + public Result memberIn(String openId, String userId, String amount, String shopId, String ip) { + if (ObjectUtil.isEmpty(openId) || ObjectUtil.isEmpty(userId)) { return Result.fail("用户信息允许为空"); } - TbShopUser tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userId,shopId); - if(ObjectUtil.isEmpty(tbShopUser)){ + TbShopUser tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(userId, shopId); + if (ObjectUtil.isEmpty(tbShopUser)) { return Result.fail("对应的用户信息不存在"); } - TbShopInfo shopInfo= tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); - if(ObjectUtil.isEmpty(shopInfo)){ + TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); + if (ObjectUtil.isEmpty(shopInfo)) { return Result.fail("对应的店铺信息不存在"); } - - TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(shopInfo.getMerchantId())); - if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){ + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(shopInfo.getMerchantId())); + if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { return Result.fail("支付通道不存在"); } - BigDecimal payAmount= new BigDecimal(amount).setScale(2,BigDecimal.ROUND_DOWN); + BigDecimal payAmount = new BigDecimal(amount).setScale(2, BigDecimal.ROUND_DOWN); - TbMemberIn memberIn=new TbMemberIn(); + TbMemberIn memberIn = new TbMemberIn(); memberIn.setAmount(payAmount); memberIn.setUserId(Integer.valueOf(tbShopUser.getUserId())); memberIn.setCode(tbShopUser.getDynamicCode()); @@ -415,8 +585,7 @@ public class PayService { tbMemberInMapper.insert(memberIn); - - PayReq req=new PayReq(); + PayReq req = new PayReq(); req.setAppId(thirdApply.getAppId()); req.setTimestamp(System.currentTimeMillis()); @@ -430,26 +599,49 @@ public class PayService { req.setUserId(openId); - Map map= BeanUtil.transBeanMap(req); - req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true)); + Map map = BeanUtil.transBeanMap(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - ResponseEntity response= restTemplate.postForEntity(url.concat("trans/pay"),req,String.class); - if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){ - JSONObject object=JSONObject.parseObject(response.getBody()); - if(object.get("code").equals("0")){ + ResponseEntity response = restTemplate.postForEntity(url.concat("trans/pay"), req, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { memberIn.setOrderNo(object.getJSONObject("data").get("orderNumber").toString()); memberIn.setUpdateTime(new Date()); tbMemberInMapper.updateByPrimaryKeySelective(memberIn); - return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data")); - }else { + return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data")); + } else { return Result.fail(object.getString("msg")); } } return Result.fail("失败"); } + @Transactional(rollbackFor = Exception.class) + public String callBackGroupPay(String payOrderNO) { + TbGroupOrderInfo orderInfo = tbGroupOrderInfoMapper.selectByPayOrderNo(payOrderNO); + if (ObjectUtil.isEmpty(orderInfo)) { + return "订单信息不存在"; + } + if ("paying".equals(orderInfo.getStatus())) { + for (int i = 0; i < orderInfo.getNumber(); i++) { + TbGroupOrderCoupon groupOrderCoupon = new TbGroupOrderCoupon(); + groupOrderCoupon.setOrderId(orderInfo.getId()); + groupOrderCoupon.setCouponNo(genCouponNumber()); + groupOrderCoupon.setIsRefund(0); + groupOrderCouponService.insert(groupOrderCoupon); + } + orderInfo.setExpDate(getNextMonDate()); + //修改主单状态 + orderInfo.setStatus("unused"); + orderInfo.setPayAmount(orderInfo.getOrderAmount()); + tbGroupOrderInfoMapper.update(orderInfo); + return "SUCCESS"; + } + return null; + } @Transactional(rollbackFor = Exception.class) public String callBackPay(String payOrderNO) { @@ -474,10 +666,10 @@ public class PayService { tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - JSONObject jsonObject=new JSONObject(); - jsonObject.put("token",0); - jsonObject.put("type","wxcreate"); - jsonObject.put("orderId",orderInfo.getId().toString()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", 0); + jsonObject.put("type", "wxcreate"); + jsonObject.put("orderId", orderInfo.getId().toString()); producer.putOrderCollect(jsonObject.toJSONString()); @@ -492,10 +684,10 @@ public class PayService { @Transactional(rollbackFor = Exception.class) - public String minsuccess(String payOrderNO,String tradeNo){ + public String minsuccess(String payOrderNO, String tradeNo) { - TbMemberIn memberIn= tbMemberInMapper.selectByOrderNo(payOrderNO); - if(ObjectUtil.isEmpty(memberIn)){ + TbMemberIn memberIn = tbMemberInMapper.selectByOrderNo(payOrderNO); + if (ObjectUtil.isEmpty(memberIn)) { return "充值记录不存在"; } @@ -504,8 +696,8 @@ public class PayService { memberIn.setUpdateTime(new Date()); tbMemberInMapper.updateByPrimaryKeySelective(memberIn); - TbShopUser tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(memberIn.getUserId().toString(),memberIn.getShopId().toString()); - if(ObjectUtil.isEmpty(tbShopUser)){ + TbShopUser tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(memberIn.getUserId().toString(), memberIn.getShopId().toString()); + if (ObjectUtil.isEmpty(tbShopUser)) { return "用户信息不存在"; } @@ -515,7 +707,7 @@ public class PayService { tbShopUser.setUpdatedAt(System.currentTimeMillis()); tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser); - TbShopUserFlow flow=new TbShopUserFlow(); + TbShopUserFlow flow = new TbShopUserFlow(); flow.setShopUserId(Integer.valueOf(tbShopUser.getId())); flow.setBizCode("scanMemberIn"); flow.setBizName("会员扫码充值"); @@ -531,20 +723,48 @@ public class PayService { // // } + /** + * 生成长度为12的随机串 + * + * @return + */ + public static String genCouponNumber() { + Random random = new Random(); + long min = 10000000000L; + long max = 19999999999L; + // 生成介于min和max之间的随机整数 + long randomNumber = min + ((long) (random.nextDouble() * (max - min))); + // 将随机整数转换为字符串,并在前面补0,直到长度为12位 + return String.format("%012d", randomNumber); + } - public static void main(String[] args){ + /** + * 获取一个月后的时间 + * + * @return + */ + public Date getNextMonDate() { + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + // 计算一个月后的日期和时间 + LocalDateTime nextMonthDateTime = currentDateTime.plusMonths(1); + return java.sql.Timestamp.valueOf(nextMonthDateTime); + } - RestTemplate restTemplate1= new RestTemplate(); - JSONObject param=new JSONObject(); - String priv="MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIqNqTqhN8zE7eFZnwKcyBTENce2wdAtl/gaDHNuNVgg33dS27Jx0fKl9QSHXyzyxbAdG8F94niYbRBstrMymFRjuO72jH+rIH62Ym1k7l8JSLVK2dKHXt8lHDaQGUP10q0EEocnDQ9cL93oBNG1ttsV6vOAu1TPvRK9TGihRAe1AgMBAAECgYBmI8KCl0DkcrSOsRvYuC2DqZWf8el1B3eFjeZp3e/zVOCIPYv6Q5ArWg6DVSxjnWEA0KSagqvGjU+xkQMqnXzPcPMhsIS+1wyR/pP+pwiatO2ioHaQpEqHg9eXhxrgA477/xuKVw9zl5GNqaIgd++2NDXnqLh0Y6OR73f0OB5eDQJBAPihEm+UWLOam/Q/k2+k4Lm2dvxJTBur1fslBiJpgMhgcz/PlwRwpL7aPD0AuPv0NqLouuoTiKpq9icnUv12tgsCQQCOqTANw0IErCHUNdinjXewmG3ui1j9XgM41rSn5ZeTrPL4GhZc2zbS/pZT4PBKUL6NLGkfPHmw4rOmNL/Xc5E/AkBqAwQBX5eSvVHSC2mqKPtJNGv3lqlFAzfyJg8/jQzEY5vAkZsq4Xzdg+A7gptdkvvY6rMIK9wSDhl3CGVyfbORAkA1N+g1OiHmnFACWhP4bU25EyPvWQxZeDi7e1zpRTzGWj5JT3IIMb7B9zcdE0yQbI6pG2gbvvOmiOt7lTH7raEBAkBas2gugvR3f0aGqQcqMpyM627pyRppQ2h58/7KBylP3oR2BReqMUcXeiJ8TuBXzbRXpeVQ0DWOva5CWZJmBMdz"; + public static void main(String[] args) { - PayReq req=new PayReq(); + RestTemplate restTemplate1 = new RestTemplate(); + JSONObject param = new JSONObject(); + + String priv = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIqNqTqhN8zE7eFZnwKcyBTENce2wdAtl/gaDHNuNVgg33dS27Jx0fKl9QSHXyzyxbAdG8F94niYbRBstrMymFRjuO72jH+rIH62Ym1k7l8JSLVK2dKHXt8lHDaQGUP10q0EEocnDQ9cL93oBNG1ttsV6vOAu1TPvRK9TGihRAe1AgMBAAECgYBmI8KCl0DkcrSOsRvYuC2DqZWf8el1B3eFjeZp3e/zVOCIPYv6Q5ArWg6DVSxjnWEA0KSagqvGjU+xkQMqnXzPcPMhsIS+1wyR/pP+pwiatO2ioHaQpEqHg9eXhxrgA477/xuKVw9zl5GNqaIgd++2NDXnqLh0Y6OR73f0OB5eDQJBAPihEm+UWLOam/Q/k2+k4Lm2dvxJTBur1fslBiJpgMhgcz/PlwRwpL7aPD0AuPv0NqLouuoTiKpq9icnUv12tgsCQQCOqTANw0IErCHUNdinjXewmG3ui1j9XgM41rSn5ZeTrPL4GhZc2zbS/pZT4PBKUL6NLGkfPHmw4rOmNL/Xc5E/AkBqAwQBX5eSvVHSC2mqKPtJNGv3lqlFAzfyJg8/jQzEY5vAkZsq4Xzdg+A7gptdkvvY6rMIK9wSDhl3CGVyfbORAkA1N+g1OiHmnFACWhP4bU25EyPvWQxZeDi7e1zpRTzGWj5JT3IIMb7B9zcdE0yQbI6pG2gbvvOmiOt7lTH7raEBAkBas2gugvR3f0aGqQcqMpyM627pyRppQ2h58/7KBylP3oR2BReqMUcXeiJ8TuBXzbRXpeVQ0DWOva5CWZJmBMdz"; + + PayReq req = new PayReq(); req.setAppId("M8002023120892f1e4"); req.setTimestamp(System.currentTimeMillis()); req.setIp("127.0.0.1"); - req.setMercOrderNo(System.currentTimeMillis()+""); + req.setMercOrderNo(System.currentTimeMillis() + ""); req.setNotifyUrl("https"); req.setPayAmt("0.01"); req.setPayType("03"); @@ -552,13 +772,12 @@ public class PayService { req.setSubject("ddd"); req.setUserId("or1l864NBOoJZhC5x_yeziZ26j6c"); - Map map= BeanUtil.transBeanMap(req); + Map map = BeanUtil.transBeanMap(req); - req.setSign(MD5Util.encrypt(map,priv,true)); + req.setSign(MD5Util.encrypt(map, priv, true)); - ResponseEntity response= restTemplate1.postForEntity("https://gatewaytestapi.sxczgkj.cn/gate-service/trans/pay",req,String.class); - + ResponseEntity response = restTemplate1.postForEntity("https://gatewaytestapi.sxczgkj.cn/gate-service/trans/pay", req, String.class); // TradeQueryReq req=new TradeQueryReq(); @@ -572,11 +791,8 @@ public class PayService { // ResponseEntity response= restTemplate1.postForEntity("https://gateway.api.sxczgkj.cn/gate-service/merchantOrder/tradeQuery",req,String.class); // // - System.out.println(">>>>>>>>>>>>>>>"+response.getBody()); + System.out.println(">>>>>>>>>>>>>>>" + response.getBody()); } - - - } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index 8f7136e..74eb42c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -10,16 +10,14 @@ import com.chaozhanggui.system.cashierservice.entity.vo.*; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer; -import com.chaozhanggui.system.cashierservice.util.DateUtils; -import com.chaozhanggui.system.cashierservice.util.JSONUtil; -import com.chaozhanggui.system.cashierservice.util.LocationUtils; -import com.chaozhanggui.system.cashierservice.util.Threads; +import com.chaozhanggui.system.cashierservice.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -64,6 +62,13 @@ public class ProductService { @Autowired TbProductSkuMapper tbProductSkuMapper; + public Result queryShopIdByTableCode(String code) { + String shopId = tbShopTableMapper.queryShopIdByTableCode(code); + if (StringUtils.isBlank(shopId)) { + return Result.fail("台桌信息不存在"); + } + return Result.success(CodeEnum.SUCCESS, shopId); + } public Result queryProduct(String code, String productGroupId) { @@ -142,17 +147,40 @@ public class ProductService { * 销量榜 * 咖啡饮品 */ - public PageInfo products(HomeDto homeDto) throws ExecutionException, InterruptedException { + public PageInfo products(HomeDto homeDto) { + if (homeDto.getOrderBy() == 5) { + homeDto.setPage(1); + homeDto.setSize(4); + } PageHelper.startPage(homeDto.getPage(), homeDto.getSize()); //经纬度(附近一km) Map topAndBottomMap = LocationUtils.returnLLSquarePoint( Double.parseDouble(homeDto.getLng()), Double.parseDouble(homeDto.getLat()), homeDto.getDistanceInKm()); - - List shopGroupInfoVos = tbProductMapper.selGroups( - homeDto.getType(), - topAndBottomMap.get("rightTopPoint")[1], topAndBottomMap.get("rightTopPoint")[0], - topAndBottomMap.get("leftBottomPoint")[1], topAndBottomMap.get("leftBottomPoint")[0], - homeDto.getAddress(), homeDto.getOrderBy().toString(), homeDto.getLng(), homeDto.getLat()); + Long stTime = null; + Long enTime = null; + List shopGroupInfoVos = new ArrayList<>(); + if (homeDto.getOrderBy() == 4) { + if (homeDto.getDateType() == 0) { + stTime = DateUtils.getDayStartLong(); + enTime = DateUtils.getDayEndLong(); + } else if (homeDto.getDateType() == 1) { + enTime = System.currentTimeMillis(); + stTime = enTime - 3600000L * 2; + } + shopGroupInfoVos = tbProductMapper.selHotGroups( + homeDto.getType(), + DateUtils.getStrTime(new Date(stTime)), DateUtils.getStrTime(new Date(enTime)), + homeDto.getAddress(), homeDto.getOrderBy().toString(), homeDto.getLng(), homeDto.getLat()); + } else { + shopGroupInfoVos = tbProductMapper.selGroups( + homeDto.getType(), + topAndBottomMap.get("rightTopPoint")[1], topAndBottomMap.get("rightTopPoint")[0], + topAndBottomMap.get("leftBottomPoint")[1], topAndBottomMap.get("leftBottomPoint")[0], + homeDto.getAddress(), homeDto.getOrderBy().toString(), homeDto.getLng(), homeDto.getLat()); + } + if (CollectionUtils.isEmpty(shopGroupInfoVos)) { + return new PageInfo(); + } List productIds = shopGroupInfoVos.stream().map(ShopGroupInfoVo::getProId).collect(Collectors.toList()); List stringList = productIds.stream() .map(Object::toString) // 将 Integer 对象映射为 String 对象 @@ -196,7 +224,7 @@ public class ProductService { homeVO.setDiscount(BigDecimal.ZERO); } else { homeVO.setOriginPrice(tbProductSku.getOriginPrice()); - homeVO.setDiscount(tbProductSku.getOriginPrice().divide(tbProductSku.getSalePrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN)); + homeVO.setDiscount(BigDecimalUtils.getDiscount(tbProductSku.getOriginPrice(), tbProductSku.getSalePrice())); } //销量 homeVO.setRealSalesNumber(new BigDecimal(o.getNumber())); @@ -225,15 +253,13 @@ public class ProductService { * @throws Exception */ public Result productInfo(Integer productId, String lat, String lng, String environment) throws Exception { - CompletableFuture product = CompletableFuture.supplyAsync(() -> - tbProductMapper.selectById(productId)); + CompletableFuture product = CompletableFuture.supplyAsync(() -> + tbProductMapper.selectByPrimaryKey(productId)); CompletableFuture> productSku = CompletableFuture.supplyAsync(() -> tbProductSkuMapper.selectSku(productId.toString())); - CompletableFuture> dictPro = CompletableFuture.supplyAsync(() -> - tagProductDeptsMapper.queryTagByProductId(productId.toString())); - Threads.call(product, productSku, dictPro); + Threads.call(product, productSku); - TbProduct tbProduct = product.get(); + TbProductWithBLOBs tbProduct = product.get(); TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getShopId())); TbPurchaseNotice tbPurchaseNotice = purchaseNoticeMapper.queryByCouponId(tbProduct.getId()); @@ -254,7 +280,7 @@ public class ProductService { productInfo.setDiscount(BigDecimal.ZERO); } else { productInfo.setOriginPrice(tbProductSku.getSalePrice()); - productInfo.setDiscount(tbProductSku.getOriginPrice().divide(tbProductSku.getSalePrice(), 2, RoundingMode.DOWN).multiply(BigDecimal.TEN)); + productInfo.setDiscount(BigDecimalUtils.getDiscount(tbProductSku.getOriginPrice(), tbProductSku.getSalePrice())); } //现价 productInfo.setSalePrice(new BigDecimal(tbProductSku.getSalePrice().toString())); @@ -264,34 +290,33 @@ public class ProductService { //名称 productInfo.setProductName(tbProduct.getName()); //店铺 - productInfo.setShopName(tbShopInfo.getShopName() + (StringUtils.isNotBlank(tbShopInfo.getChainName()) ? "(" + tbShopInfo.getChainName() + ")" : "")); + productInfo.setShopName(tbShopInfo.getShopName()); + if (StringUtils.isNotBlank(tbShopInfo.getChainName())) { + productInfo.setChainName(tbShopInfo.getChainName()); + Integer i = tbShopInfoMapper.selNumByChain(tbShopInfo.getChainName()); + productInfo.setShopNum(i); + } productInfo.setPhone(tbShopInfo.getPhone()); - productInfo.setBusinessTime(tbShopInfo.getBusinessTime()); + productInfo.setBusinessTime(tbShopInfo.getBusinessStartDay() + "至" + tbShopInfo.getBusinessEndDay() + " " + tbShopInfo.getBusinessTime()); BigDecimal distance = LocationUtils.getDistanceFrom2LngLat( Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(tbShopInfo.getLng()), Double.parseDouble(tbShopInfo.getLat())); productInfo.setDistances(distance.toString());//距离 productInfo.setAddress(tbShopInfo.getAddress()); - //商品 暂时只做单商品 - ProductVo productVo = new ProductVo(); - TbShopUnit tbShopUnit = unitMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getUnitId())); - TbShopCategory tbShopCategory = categoryMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getCategoryId())); - productVo.setTitle(tbShopCategory.getName()); - productVo.setNumber(1); - ProductVo.Food food = new ProductVo.Food(); - food.setName(tbProduct.getName()); - food.setUnitName(tbShopUnit.getName()); - food.setLowPrice(tbProduct.getLowPrice()); - - for (TagProductVO tagProductVO : dictPro.get()) { - food.getProTag().add(tagProductVO); + List productVos = JSONUtil.parseListTNewList(tbProduct.getGroupSnap(), ProductVo.class); + for (ProductVo productVo : productVos) { + for (ProductVo.Food good : productVo.getGoods()) { + List dictPro = tagProductDeptsMapper.queryTagByProductId(good.getId().toString()); + good.setProTag(dictPro); + } } - productVo.getGoods().add(food); - productInfo.getProductList().add(productVo); - productInfo.setPurchaseNotice(tbPurchaseNotice); + + productInfo.setProductList(productVos); + List tbPlatformDicts = platformDictMapper.queryAllByType("prodetail", environment); if (tbPurchaseNotice != null) { + productInfo.setPurchaseNotice(tbPurchaseNotice); if (tbPurchaseNotice.getBookingType().startsWith("无需预约")) { List book = platformDictMapper.queryAllByType("prodetail-book", environment); tbPlatformDicts.addAll(book); @@ -311,15 +336,19 @@ public class ProductService { tbProductSkuMapper.selectSku(productId.toString())); CompletableFuture notice = CompletableFuture.supplyAsync(() -> purchaseNoticeMapper.queryByCouponId(productId)); - Threads.call(product, productSku,notice); + Threads.call(product, productSku, notice); TbProduct tbProduct = product.get(); - OrderConfirmVo confirmVo=new OrderConfirmVo(); + OrderConfirmVo confirmVo = new OrderConfirmVo(); + confirmVo.setProId(tbProduct.getId().toString()); + confirmVo.setShopId(tbProduct.getShopId()); confirmVo.setProImg(tbProduct.getCoverImg()); confirmVo.setProName(tbProduct.getName()); TbPurchaseNotice tbPurchaseNotice = notice.get(); - confirmVo.setAvaTime(tbPurchaseNotice.getAvailableTime()); + if (tbPurchaseNotice != null) { + confirmVo.setAvaTime(tbPurchaseNotice.getAvailableTime()); + } //价格组装 for (TbProductSku tbProductSku : productSku.get()) { @@ -329,13 +358,15 @@ public class ProductService { confirmVo.setSave(tbProductSku.getSalePrice()); } else { confirmVo.setOriginPrice(tbProductSku.getOriginPrice()); - confirmVo.setSave(tbProductSku.getSalePrice()); + confirmVo.setSave(tbProductSku.getOriginPrice().subtract(tbProductSku.getSalePrice())); } //现价=售价 - confirmVo.setSalePrice(tbProductSku.getSalePrice().subtract(tbProductSku.getOriginPrice())); + confirmVo.setSalePrice(tbProductSku.getSalePrice()); + } + List tbPlatformDicts = platformDictMapper.queryAllByType("order_confirm_no_counpon", environment); + if (!CollectionUtils.isEmpty(tbPlatformDicts)) { + confirmVo.setCouponDetail(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class).get(0)); } - List tbPlatformDicts = platformDictMapper.queryAllByType("order_confirm_no_counpon",environment); - confirmVo.setCouponDetail(JSONUtil.parseListTNewList(tbPlatformDicts, TagVo.class).get(0)); return Result.success(CodeEnum.SUCCESS, confirmVo); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/BigDecimalUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/BigDecimalUtils.java new file mode 100644 index 0000000..2a92831 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/BigDecimalUtils.java @@ -0,0 +1,20 @@ +package com.chaozhanggui.system.cashierservice.util; + +import java.math.BigDecimal; + +public class BigDecimalUtils { + + /** + * 折扣计算 + * @param orPrice 原价 + * @param saPrice 现价 + * @return + */ + public static BigDecimal getDiscount(BigDecimal orPrice,BigDecimal saPrice){ + BigDecimal discountRate = saPrice.divide(orPrice, 2, BigDecimal.ROUND_HALF_UP); + // 将折扣率转换为百分比形式 + BigDecimal discountPercentage = discountRate.multiply(BigDecimal.TEN); + return discountPercentage; + } + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java index 0980fc6..c8d783f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java @@ -269,6 +269,16 @@ public class DateUtils { cal.set(Calendar.MILLISECOND, 999); return cal.getTime(); } + + public static Long getDayStartLong() { + // 获取今天的日期和时间(00:00:00) + LocalDateTime todayStart = LocalDateTime.now().toLocalDate().atStartOfDay(); + // 转换为UTC时间戳(毫秒) + long timestampInMillis = todayStart.toInstant(ZoneOffset.UTC).toEpochMilli(); + + return timestampInMillis; + } + public static Long getDayEndLong() { // 获取今天的日期和时间(00:00:00) LocalDateTime todayStart = LocalDateTime.now().toLocalDate().atStartOfDay(); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java index d3c0ffa..dca81d6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java @@ -1,5 +1,7 @@ package com.chaozhanggui.system.cashierservice.util; +import org.apache.commons.lang3.StringUtils; + import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashMap; @@ -9,7 +11,27 @@ import static java.lang.Math.*; import static java.lang.Math.sin; public class LocationUtils { + /** + * 通过Ip获取定位信息 + * @param ip + * @return + */ + public static String getGPSByIp(String ip) { + Map param = new HashMap<>(); + //超掌柜生活-用户端 + param.put("key", "7a7f2e4790ea222660a027352ee3af39"); + if(StringUtils.isNotBlank(ip)){ + param.put("ip", ip); + } + String s = HttpClientUtil.doGet("https://restapi.amap.com/v3/ip", param); + return s; + } + /** + * 行政区域查询 + * @param keywords + * @return + */ public static String district(String keywords) { Map param = new HashMap<>(); //超掌柜生活-用户端 @@ -57,20 +79,23 @@ public class LocationUtils { * 右上顶点 double[] leftTopPoints = stringMap.get("rightTopPoint"); * 左下点 double[] leftBottomPoints = stringMap.get("leftBottomPoint"); */ - public static Map returnLLSquarePoint(double longitude, double latitude, double distanceInKm) { + public static Map returnLLSquarePoint(double longitude, double latitude, String distanceInKm) { + BigDecimal distanceKm = new BigDecimal(10); + if (StringUtils.isNotBlank(distanceInKm)) { + distanceKm = new BigDecimal(distanceInKm); + } Map squareMap = new HashMap<>(); BigDecimal bdlongitude = new BigDecimal(longitude); // 地球平均半径,单位:千米 BigDecimal earthRadius = new BigDecimal("6378.137"); // 将距离转换为弧度 - - BigDecimal radialDistance = BigDecimal.valueOf(distanceInKm).divide(earthRadius, 10, RoundingMode.HALF_UP); + BigDecimal radialDistance = distanceKm.divide(earthRadius, 10, RoundingMode.HALF_UP); // 计算纬度上变化对应的角度 BigDecimal dLatitude = BigDecimal.valueOf(Math.toDegrees(2 * Math.asin(Math.sin(radialDistance.divide(BigDecimal.valueOf(2)).doubleValue()) / Math.cos(Math.toRadians(latitude))))); // 计算经度上变化对应的角度,这里需要考虑纬度对距离的影响 // 使用Haversine公式来估算在给定纬度上,距离对应的经度变化 BigDecimal estimatedLongitudeDistance = getDistanceFrom2LngLat(latitude, longitude, latitude, bdlongitude.add(BigDecimal.valueOf(0.01)).doubleValue()); // 假设0.01度经度变化对应的距离 - BigDecimal dLongitude = BigDecimal.valueOf(distanceInKm).divide(estimatedLongitudeDistance, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.0192736")); // 根据比例计算经度变化 + BigDecimal dLongitude = distanceKm.divide(estimatedLongitudeDistance, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.0192736")); // 根据比例计算经度变化 // 正方形四个顶点的坐标 double[] rightTopPoint = {BigDecimal.valueOf(latitude).add(dLatitude.divide(BigDecimal.valueOf(2))).doubleValue(), BigDecimal.valueOf(longitude).add(dLongitude.divide(BigDecimal.valueOf(2))).doubleValue()}; double[] leftBottomPoint = {BigDecimal.valueOf(latitude).subtract(dLatitude.divide(BigDecimal.valueOf(2))).doubleValue(), BigDecimal.valueOf(longitude).subtract(dLongitude.divide(BigDecimal.valueOf(2))).doubleValue()}; @@ -93,7 +118,7 @@ public class LocationUtils { } //1KM public static void main(String[] args) { - Map stringMap = returnLLSquarePoint(108.975418, 34.280890, 5); + Map stringMap = returnLLSquarePoint(108.975418, 34.280890, "5"); double[] leftTopPoints = stringMap.get("rightTopPoint"); double[] leftBottomPoints = stringMap.get("leftBottomPoint"); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f5b99f0..f05640a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -55,6 +55,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBack + callBackGroupurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBackGroup callBackIn: https://p40312246f.goho.co/cashierService/notify/memberInCallBack default: 18710449883 server: diff --git a/src/main/resources/application-dev2.yml b/src/main/resources/application-dev2.yml index 022ca33..32b0c0f 100644 --- a/src/main/resources/application-dev2.yml +++ b/src/main/resources/application-dev2.yml @@ -52,6 +52,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBack + callBackGroupurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBackGroup callBackIn: https://p40312246f.goho.co/cashierService/notify/memberInCallBack default: 18710449883 server: diff --git a/src/main/resources/application-hph.yml b/src/main/resources/application-hph.yml index 6861969..b90ae93 100644 --- a/src/main/resources/application-hph.yml +++ b/src/main/resources/application-hph.yml @@ -52,6 +52,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBack + callBackGroupurl: https://p40312246f.goho.co/cashierService/notify/notifyCallBackGroup callBackIn: https://p40312246f.goho.co/cashierService/notify/memberInCallBack default: 18710449883 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 767ea64..f6eccf5 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -54,6 +54,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://cashier.sxczgkj.cn/cashierService/notify/notifyCallBack + callBackGroupurl: https://cashier.sxczgkj.cn/cashierService/notify/notifyCallBackGroup callBackIn: https://cashier.sxczgkj.cn/cashierService/notify/memberInCallBack default: 19191703856 prod: prod1 diff --git a/src/main/resources/application-prod2.yml b/src/main/resources/application-prod2.yml index 22f552f..27b9d53 100644 --- a/src/main/resources/application-prod2.yml +++ b/src/main/resources/application-prod2.yml @@ -54,6 +54,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://cashier.sxczgkj.cn/cashierService/notify/notifyCallBack + callBackGroupurl: https://cashier.sxczgkj.cn/cashierService/notify/notifyCallBackGroup callBackIn: https://cashier.sxczgkj.cn/cashierService/notify/memberInCallBack default: 19191703856 prod: prod2 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 7704195..568a2b7 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -52,6 +52,7 @@ mybatis: ysk: url: https://gatewaytestapi.sxczgkj.cn/gate-service/ callBackurl: https://cashierapplet.sxczgkj.cn/cashierService/notify/notifyCallBack + callBackGroupurl: https://cashierapplet.sxczgkj.cn/cashierService/notify/notifyCallBackGroup callBackIn: https://cashierapplet.sxczgkj.cn/cashierService/notify/memberInCallBack default: 18710449883 diff --git a/src/main/resources/mapper/SysDictDetailMapper.xml b/src/main/resources/mapper/SysDictDetailMapper.xml deleted file mode 100644 index 501bf87..0000000 --- a/src/main/resources/mapper/SysDictDetailMapper.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/mapper/SysDictMapper.xml b/src/main/resources/mapper/SysDictMapper.xml index f1d271e..a83fcee 100644 --- a/src/main/resources/mapper/SysDictMapper.xml +++ b/src/main/resources/mapper/SysDictMapper.xml @@ -1,117 +1,48 @@ - - - - - - - - - - - dict_id, name, description, create_by, update_by, create_time, update_time - - - - delete from sys_dict - where dict_id = #{dictId,jdbcType=BIGINT} - - - insert into sys_dict (dict_id, name, description, - create_by, update_by, create_time, - update_time) - values (#{dictId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, - #{createBy,jdbcType=VARCHAR}, #{updateBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, - #{updateTime,jdbcType=TIMESTAMP}) - - - insert into sys_dict - - - dict_id, - - - name, - - - description, - - - create_by, - - - update_by, - - - create_time, - - - update_time, - - - - - #{dictId,jdbcType=BIGINT}, - - - #{name,jdbcType=VARCHAR}, - - - #{description,jdbcType=VARCHAR}, - - - #{createBy,jdbcType=VARCHAR}, - - - #{updateBy,jdbcType=VARCHAR}, - - - #{createTime,jdbcType=TIMESTAMP}, - - - #{updateTime,jdbcType=TIMESTAMP}, - - - - - update sys_dict - - - name = #{name,jdbcType=VARCHAR}, - - - description = #{description,jdbcType=VARCHAR}, - - - create_by = #{createBy,jdbcType=VARCHAR}, - - - update_by = #{updateBy,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=TIMESTAMP}, - - - update_time = #{updateTime,jdbcType=TIMESTAMP}, - - - where dict_id = #{dictId,jdbcType=BIGINT} - - - update sys_dict - set name = #{name,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - create_by = #{createBy,jdbcType=VARCHAR}, - update_by = #{updateBy,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP} - where dict_id = #{dictId,jdbcType=BIGINT} - + + + + + + + + + dict_id + , dict_name , name, value, is_child + + + dict_id + , dict_name , name, value + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/TbGroupOrderCouponMapper.xml b/src/main/resources/mapper/TbGroupOrderCouponMapper.xml new file mode 100644 index 0000000..cd8a5c6 --- /dev/null +++ b/src/main/resources/mapper/TbGroupOrderCouponMapper.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + id + , order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc + + + + + + + + + + + + + + + + insert into tb_group_order_coupon(order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc) + values (#{orderId}, #{couponNo}, #{isRefund}, #{refundAmount}, #{refundReason}, #{refundDesc}) + + + + insert into tb_group_order_coupon(order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc) + values + + (#{entity.orderId}, #{entity.couponNo}, #{entity.isRefund}, #{entity.refundAmount}, #{entity.refundReason}, + #{entity.refundDesc}) + + + + + + update tb_group_order_coupon + + + order_id = #{orderId}, + + + coupon_no = #{couponNo}, + + + is_refund = #{isRefund}, + + + refund_amount = #{refundAmount}, + + + refund_reason = #{refundReason}, + + + refund_desc = #{refundDesc}, + + + where id = #{id} + + + + + delete + from tb_group_order_coupon + where id = #{id} + + + + diff --git a/src/main/resources/mapper/TbGroupOrderInfoMapper.xml b/src/main/resources/mapper/TbGroupOrderInfoMapper.xml index cb4c794..3574fe0 100644 --- a/src/main/resources/mapper/TbGroupOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbGroupOrderInfoMapper.xml @@ -5,18 +5,20 @@ + - - - + + + + @@ -24,18 +26,20 @@ + + id - , order_no, shop_id, user_id, pro_id, pro_name,pro_img, coupon_no, coupon_url, exp_date, order_type, order_amount, save_amount, pay_amount, number, status, remark, phone, pay_time, refund_able, create_time, update_time, pay_order_no, trade_day, source + , order_no, merchant_id, shop_id, user_id, pro_id, pro_img, pro_name, exp_date, order_type, pay_type, order_amount, save_amount, pay_amount, refund_amount, refund_number, number, status, remark, phone, pay_time, refund_able, create_time, verifier, update_time, pay_order_no, trade_day, source id - , order_no, pro_name,pro_img,coupon_url,order_amount, pay_amount, number, status + , order_no, pro_name,pro_img,order_amount, pay_amount, number, status + + - - insert into tb_group_order_info(order_no, shop_id, user_id, pro_id, pro_name, pro_img, coupon_no, coupon_url, - exp_date, order_type, order_amount, save_amount, pay_amount, number, status, + insert into tb_group_order_info(order_no, merchant_id, shop_id, user_id, pro_id, pro_name, pro_img, + exp_date, order_type, pay_type, order_amount, save_amount, pay_amount, number, + refund_number, status, remark, phone, pay_time, refund_able, create_time, update_time, pay_order_no, trade_day, source) - values (#{orderNo}, #{shopId}, #{userId}, #{proId}, #{proName}, #{proImg}, #{couponNo}, #{couponUrl}, - #{expDate}, #{orderType}, #{orderAmount}, #{saveAmount}, #{payAmount}, #{number}, #{status}, #{remark}, + values (#{orderNo}, #{merchantId}, #{shopId}, #{userId}, #{proId}, #{proName}, #{proImg}, + #{expDate}, #{orderType}, #{payType}, #{orderAmount}, #{saveAmount}, #{payAmount}, #{number}, + #{refundNumber}, #{status}, #{remark}, #{phone}, #{payTime}, #{refundAble}, #{createTime}, #{updateTime}, #{payOrderNo}, #{tradeDay}, #{source}) - insert into tb_group_order_info(order_no, shop_id, user_id, pro_id, pro_name, pro_img, coupon_no, coupon_url, - exp_date, order_type, order_amount, save_amount, pay_amount, number, status, remark, phone, pay_time, + insert into tb_group_order_info(order_no,merchant_id, shop_id, user_id, pro_id, pro_name, pro_img, + exp_date, order_type, pay_type, order_amount, save_amount, pay_amount, number, status, remark, phone, pay_time, refund_able, create_time, update_time, pay_order_no, trade_day, source) values - (#{entity.orderNo}, #{entity.shopId}, #{entity.userId}, #{entity.proId}, #{entity.proName},#{entity.proImg} - #{entity.couponNo}, #{entity.couponUrl}, #{entity.expDate}, #{entity.orderType}, - #{entity.orderAmount}, #{entity.saveAmount}, #{entity.payAmount}, #{entity.number}, #{entity.status}, + (#{entity.orderNo},#{entity.merchantId} #{entity.shopId}, #{entity.userId}, #{entity.proId}, + #{entity.proName},#{entity.proImg}, + #{entity.expDate}, #{entity.orderType}, + #{entity.payType}, #{entity.orderAmount}, #{entity.saveAmount}, #{entity.payAmount}, #{entity.number}, + #{entity.status}, #{entity.remark}, #{entity.phone}, #{entity.payTime}, #{entity.refundAble}, #{entity.createTime}, #{entity.updateTime}, #{entity.payOrderNo}, #{entity.tradeDay}, #{entity.source}) @@ -100,6 +115,9 @@ order_no = #{orderNo}, + + merchant_id = #{merchantId}, + shop_id = #{shopId}, @@ -115,18 +133,15 @@ pro_img = #{proImg}, - - coupon_no = #{couponNo}, - - - coupon_url = #{couponUrl}, - exp_date = #{expDate}, order_type = #{orderType}, + + pay_type = #{payType}, + order_amount = #{orderAmount}, @@ -172,13 +187,5 @@ where id = #{id} - - - - delete - from tb_group_order_info - where id = #{id} - - diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index a3f9a9c..ea03dba 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -551,7 +551,6 @@ order by a.id desc - Limit #{page}, #{size} select - id, name, type,font_color,back_color, cover_img, share_img, video, video_cover_img, jump_type, abs_url, created_at, updated_at, is_show_cash, is_show_mall, is_show_app, sort + id, name,value, type,font_color,back_color, cover_img, share_img, video, video_cover_img, jump_type, abs_url, created_at, updated_at, is_show_cash, is_show_mall, is_show_app, sort from tb_platform_dict where id = #{id} @@ -33,17 +34,18 @@ + + diff --git a/src/main/resources/mapper/TbProductGroupMapper.xml b/src/main/resources/mapper/TbProductGroupMapper.xml index bc1758d..a9bb7b2 100644 --- a/src/main/resources/mapper/TbProductGroupMapper.xml +++ b/src/main/resources/mapper/TbProductGroupMapper.xml @@ -222,4 +222,16 @@ order by g.sort asc + + \ No newline at end of file diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index d405e1d..428ef66 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -74,7 +74,7 @@ id, category_id, spec_id, source_path, brand_id, merchant_id, shop_id, name, short_title, - type, pack_fee, low_price, low_member_price, unit_id, unit_snap, cover_img, share_img, + type, pack_fee, low_price, low_member_price, unit_id, unit_snap, cover_img, share_img, images, video_cover_img, sort, limit_number, product_score, status, fail_msg, is_recommend, is_hot, is_new, is_on_sale, is_show, type_enum, is_distribute, is_del, is_stock, is_pause_sale, is_free_freight, freight_id, strategy_type, strategy_id, is_vip, is_delete, @@ -882,6 +882,11 @@ spec_table_headers = #{specTableHeaders,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} + + update tb_product + set real_sales_number = real_sales_number + #{number,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} + + + \ No newline at end of file diff --git a/src/main/resources/mapper/TbProductSkuMapper.xml b/src/main/resources/mapper/TbProductSkuMapper.xml index 2d03903..67d4e15 100644 --- a/src/main/resources/mapper/TbProductSkuMapper.xml +++ b/src/main/resources/mapper/TbProductSkuMapper.xml @@ -396,7 +396,7 @@ pro.cover_img AS image, sku.origin_price AS originPrice, sku.sale_price AS salePrice, - MAX( sku.real_sales_number ) AS realSalesNumber + pro.real_sales_number AS realSalesNumber FROM tb_product pro LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id @@ -415,7 +415,7 @@ pro.cover_img AS image, sku.origin_price AS originPrice, sku.sale_price AS salePrice, - MAX( sku.real_sales_number ) AS realSalesNumber + pro.real_sales_number AS realSalesNumber FROM tb_product pro LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id diff --git a/src/main/resources/mapper/TbShopInfoMapper.xml b/src/main/resources/mapper/TbShopInfoMapper.xml index 41185f0..9ed5468 100644 --- a/src/main/resources/mapper/TbShopInfoMapper.xml +++ b/src/main/resources/mapper/TbShopInfoMapper.xml @@ -29,6 +29,8 @@ + + @@ -56,7 +58,7 @@ , account, shop_code, sub_title, merchant_id, shop_name, chain_name, back_img, front_img, contact_name, phone, logo, is_deposit, is_supply, cover_img, share_img, detail, lat, lng, mch_id, register_type, is_wx_ma_independent, address, city, type, - industry, industry_name, business_time, post_time, post_amount_line, on_sale, settle_type, + industry, industry_name, business_start_day,business_end_day,business_time, post_time, post_amount_line, on_sale, settle_type, settle_time, enter_at, expire_at, status, average, order_wait_pay_minute, support_device_number, distribute_level, created_at, updated_at, proxy_id, shop_qrcode, tag,is_open_yhq @@ -72,6 +74,13 @@ where id = #{id,jdbcType=INTEGER} + + diff --git a/src/main/resources/mapper/TbShopTableMapper.xml b/src/main/resources/mapper/TbShopTableMapper.xml index c7b6d68..cb4308d 100644 --- a/src/main/resources/mapper/TbShopTableMapper.xml +++ b/src/main/resources/mapper/TbShopTableMapper.xml @@ -35,6 +35,15 @@ from tb_shop_table where qrcode = #{qrcode} + + +