From 75ec8fc9e5cf86989a36cc861e1f5fa8e3f0975c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E9=B9=8F=E8=BE=89?= <18322780655@163.com> Date: Fri, 28 Jun 2024 09:39:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=80=97=E6=9D=90=E5=BA=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/Shell.java | 2 + .../controller/QrCodeController.java | 125 ++++++++++ .../cashierservice/dao/TbConsInfoMapper.java | 5 + .../cashierservice/dao/TbProductMapper.java | 4 + .../cashierservice/dao/TbProskuConMapper.java | 8 + .../cashierservice/entity/TbConsInfo.java | 20 +- .../cashierservice/entity/TbProskuCon.java | 11 + .../entity/po/ProConsSkuInfo.java | 35 +++ .../interceptor/WebAppConfigurer.java | 1 + .../cashierservice/rabbit/ConsConsumer.java | 16 -- .../rabbit/ConsMsgConsumer.java | 236 ++++++++++++++++++ .../cashierservice/rabbit/RabbitConfig.java | 16 ++ .../rabbit/RabbitConstants.java | 14 ++ .../cashierservice/rabbit/RabbitProducer.java | 10 + .../cashierservice/service/ConsService.java | 14 +- .../cashierservice/service/MemberService.java | 4 +- .../cashierservice/service/OrderService.java | 22 +- .../cashierservice/service/PayService.java | 2 +- .../service/ProductService.java | 9 +- .../service/ShopInfoService.java | 7 +- .../service/TbGroupOrderInfoService.java | 4 +- .../service/TbPrintPCMachineService.java | 4 +- .../system/cashierservice/sign/CodeEnum.java | 3 + .../cashierservice/task/ConsInfoTask.java | 127 ++++++++++ .../cashierservice/util/PageHelperUtil.java | 13 + .../system/cashierservice/util/RedisCst.java | 2 + src/main/resources/application-dev.yml | 10 +- src/main/resources/application-hph.yml | 6 + src/main/resources/application-prod.yml | 9 + src/main/resources/application-prod2.yml | 6 + src/main/resources/application-test.yml | 6 + src/main/resources/application.yml | 10 +- .../generator-mapper/generatorConfig.xml | 7 + .../resources/mapper/TbConsInfoMapper.xml | 40 +-- src/main/resources/mapper/TbProductMapper.xml | 25 ++ .../resources/mapper/TbProskuConMapper.xml | 38 ++- 36 files changed, 788 insertions(+), 83 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/controller/QrCodeController.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/po/ProConsSkuInfo.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/task/ConsInfoTask.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/util/PageHelperUtil.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/Shell.java b/src/main/java/com/chaozhanggui/system/cashierservice/Shell.java index bb1fc4f..4c1d29a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/Shell.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/Shell.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice; +import com.chaozhanggui.system.cashierservice.task.ConsInfoTask; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +45,7 @@ public class Shell { @Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return (args) -> { +// ctx.getBean(ConsInfoTask.class).init(); logger.info("=========================启动完成=========================="); }; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/QrCodeController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/QrCodeController.java new file mode 100644 index 0000000..7994adb --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/QrCodeController.java @@ -0,0 +1,125 @@ +package com.chaozhanggui.system.cashierservice.controller; + +import com.chaozhanggui.system.cashierservice.dao.TbUserShopMsgMapper; +import com.chaozhanggui.system.cashierservice.sign.Result; +import com.chaozhanggui.system.cashierservice.util.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpConfigStorage; +import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; +import me.chanjar.weixin.mp.api.WxMpQrcodeService; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.util.*; + +@CrossOrigin(origins = "*") +@RestController +@Slf4j +@RequestMapping("qrcode") +public class QrCodeController { + + @Autowired + TbUserShopMsgMapper tbUserShopMsgMapper; + + +// public Result scanCode(){ +// +// } + + + + + @RequestMapping("/getscanCode") + public void getscanCode(HttpServletRequest request, HttpServletResponse response) throws Exception { + + log.info("****************来自微信服务器的请求:{}", request.getMethod().toUpperCase()); + //微信服务器POST请求时,用的是UTF-8编码,在接收时也要用同样的编码,否则中文乱码 + request.setCharacterEncoding("UTF-8"); + //响应消息时,也要设置同样的编码 + response.setCharacterEncoding("UTF-8"); + //判断请求方式是否是post + boolean isPost = Objects.equals("POST", request.getMethod().toUpperCase()); + if(isPost){ + + Map map= request.getParameterMap(); + + log.info("map:{}",JSONUtil.toJSONString(map)); + + }else { + String signature=request.getParameter("signature"); + String timestamp=request.getParameter("timestamp"); + String nonce=request.getParameter("nonce"); + String echostr=request.getParameter("echostr"); + + if (StringUtils.isEmpty(signature) || StringUtils.isEmpty(timestamp) || StringUtils.isEmpty(nonce) || StringUtils.isEmpty(echostr)) { + return ; + } + + String token="chaozhanggui123"; + + List list= Arrays.asList(token,timestamp,nonce); + Collections.sort(list); + StringBuffer sb=new StringBuffer(); + for(String s: list){ + sb.append(s); + } + + + try { + MessageDigest instance = MessageDigest.getInstance("sha1"); + //使用sha1进行加密,获得byte数组 + byte[] digest = instance.digest(sb.toString().getBytes()); + StringBuilder sum = new StringBuilder(); + for (byte b : digest) { + sum.append(Integer.toHexString((b >> 4) & 15)); + sum.append(Integer.toHexString(b & 15)); + } + // 3)开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信 + if (!StringUtils.isEmpty(signature) && signature.equals(sum.toString())) { + response.getWriter().write(echostr); + return; + } + response.getWriter().write(""); + return; + + }catch (Exception e){ + e.printStackTrace(); + } + response.getWriter().write(""); + return; + } + } + public static void main(String[] args){ + WxMpInMemoryConfigStorage configStorage=new WxMpInMemoryConfigStorage(); + + configStorage.setAppId("wxdd2b72cc2c40c979"); + configStorage.setSecret("4d909d8dbe3e6e7ac31055fa03dcee4b"); +// configStorage.setAccessToken(""); +// configStorage.setAesKey(""); + + + + WxMpService wxMpService=new WxMpServiceImpl(); + + wxMpService.setWxMpConfigStorage(configStorage); + + + try { + WxMpQrCodeTicket ticket= wxMpService.getQrcodeService().qrCodeCreateLastTicket("哈哈哈哈哈哈哈哈哈哈哈哈"); + System.out.println(JSONUtil.toJSONString(ticket)); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbConsInfoMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbConsInfoMapper.java index 2ff807e..ee4e0b4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbConsInfoMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbConsInfoMapper.java @@ -2,12 +2,14 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbConsInfo; import com.chaozhanggui.system.cashierservice.entity.po.ConsInfoPO; +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 TbConsInfoMapper { int deleteByPrimaryKey(Integer id); @@ -22,4 +24,7 @@ public interface TbConsInfoMapper { int updateByPrimaryKey(TbConsInfo record); void batchStock(@Param("list")List list); + int countAll(); + + List selectAllInfo(); } \ 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 095fbcf..5151f2d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java @@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbProduct; import com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs; +import com.chaozhanggui.system.cashierservice.entity.po.ProConsSkuInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -37,4 +38,7 @@ public interface TbProductMapper { Integer countOrderByshopIdAndProductId(@Param("shopId") String shopId, @Param("productId") String productId, @Param("masterId") String masterId,@Param("day") String day); void updateStockById(@Param("productId")Integer productId, @Param("num")Integer num); + + + List selectBySkuId(Integer skuId); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProskuConMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProskuConMapper.java index 5e0ed70..357af13 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProskuConMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProskuConMapper.java @@ -22,5 +22,13 @@ public interface TbProskuConMapper { int updateByPrimaryKey(TbProskuCon record); + List selectBySkuIdAndShopId(@Param("skuId") Integer skuId, @Param("shopId") Integer shopId); + + + List selectIdBySkuIdAndShopId(@Param("skuId") Integer skuId, @Param("shopId") Integer shopId); + + + + } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfo.java index 4b866f7..895ff83 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbConsInfo.java @@ -21,10 +21,10 @@ public class TbConsInfo implements Serializable { private String conUnit; - private BigDecimal surplusStock; - private BigDecimal lasterInStock; + private BigDecimal conWarning; + private Date createTime; private Date updateTime; @@ -95,14 +95,6 @@ public class TbConsInfo implements Serializable { this.conUnit = conUnit == null ? null : conUnit.trim(); } - public BigDecimal getSurplusStock() { - return surplusStock; - } - - public void setSurplusStock(BigDecimal surplusStock) { - this.surplusStock = surplusStock; - } - public BigDecimal getLasterInStock() { return lasterInStock; } @@ -111,6 +103,14 @@ public class TbConsInfo implements Serializable { this.lasterInStock = lasterInStock; } + public BigDecimal getConWarning() { + return conWarning; + } + + public void setConWarning(BigDecimal conWarning) { + this.conWarning = conWarning; + } + public Date getCreateTime() { return createTime; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProskuCon.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProskuCon.java index 0c861d3..d760555 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProskuCon.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProskuCon.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.entity; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; public class TbProskuCon implements Serializable { @@ -12,6 +13,8 @@ public class TbProskuCon implements Serializable { private Integer conInfoId; + private BigDecimal surplusStock; + private String status; private Date createTime; @@ -50,6 +53,14 @@ public class TbProskuCon implements Serializable { this.conInfoId = conInfoId; } + public BigDecimal getSurplusStock() { + return surplusStock; + } + + public void setSurplusStock(BigDecimal surplusStock) { + this.surplusStock = surplusStock; + } + public String getStatus() { return status; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/ProConsSkuInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/ProConsSkuInfo.java new file mode 100644 index 0000000..2cc5636 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/ProConsSkuInfo.java @@ -0,0 +1,35 @@ +package com.chaozhanggui.system.cashierservice.entity.po; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class ProConsSkuInfo implements Serializable { + + + private String shopId; + + private String productSkuId; + + private String status; + + private String conId; + + private String conCode; + + private String conName; + + private BigDecimal surplusStock; + + private BigDecimal stockNumber; + + private BigDecimal conWarning; + + private String productId; + + private String productName; + + private String specSnap; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java b/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java index 4e3e221..b1406c0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/interceptor/WebAppConfigurer.java @@ -23,6 +23,7 @@ public class WebAppConfigurer implements WebMvcConfigurer { .excludePathPatterns("/data/handoverData") .excludePathPatterns("/order/scanSendMessage") .excludePathPatterns("/order/getsendMessage") + .excludePathPatterns("/qrcode/getscanCode") .excludePathPatterns("/order/sendMessage"); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsConsumer.java index 83e4649..217c276 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsConsumer.java @@ -1,15 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.chaozhanggui.system.cashierservice.dao.TbCashierCartMapper; -import com.chaozhanggui.system.cashierservice.dao.TbConsInfoMapper; -import com.chaozhanggui.system.cashierservice.dao.TbProskuConMapper; -import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; -import com.chaozhanggui.system.cashierservice.entity.TbConsInfo; -import com.chaozhanggui.system.cashierservice.entity.TbProskuCon; -import com.chaozhanggui.system.cashierservice.entity.po.ConsInfoPO; import com.chaozhanggui.system.cashierservice.service.ConsService; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitHandler; @@ -18,13 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; -import java.sql.Time; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; - @Slf4j @Component @RabbitListener(queues = {RabbitConstants.CONS_COLLECT_QUEUE_PUT}) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java new file mode 100644 index 0000000..e142c1d --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java @@ -0,0 +1,236 @@ +package com.chaozhanggui.system.cashierservice.rabbit; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.chaozhanggui.system.cashierservice.dao.*; +import com.chaozhanggui.system.cashierservice.entity.*; +import com.chaozhanggui.system.cashierservice.util.HttpClientUtil; +import com.chaozhanggui.system.cashierservice.util.N; +import com.chaozhanggui.system.cashierservice.util.RedisCst; +import com.chaozhanggui.system.cashierservice.util.RedisUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@Slf4j +@Component +@RabbitListener(queues = {RabbitConstants.CONS_MSG_COLLECT_QUEUE_PUT}) +@Service +public class ConsMsgConsumer { + + + @Autowired + TbConsInfoMapper tbConsInfoMapper; + + @Autowired + TbUserShopMsgMapper tbUserShopMsgMapper; + + + @Autowired + TbShopInfoMapper tbShopInfoMapper; + + @Autowired + TbProductSkuMapper tbProductSkuMapper; + + + @Autowired + TbProskuConMapper tbProskuConMapper; + + @Autowired + TbProductMapper tbProductMapper; + + + @Autowired + RedisUtil redisUtil; + + + @Value("${wx.msg.appId}") + private String appId; + + + @Value("${wx.msg.secrete}") + private String secrete; + + @Value("${subscribe.message.miniprogramState}") + private String miniprogramState; + + + @RabbitHandler + public void listener(String message) { + + JSONObject object = JSONObject.parseObject(message); + if (Objects.isNull(object) || !object.containsKey("skuId") || !object.containsKey("shopId") || Objects.isNull(object.getInteger("skuId")) || Objects.isNull(object.getInteger("shopId"))) { + log.info("接收的信息为空"); + return; + } + + Integer skuId = object.getInteger("skuId"); + Integer shopId = object.getInteger("shopId"); + + TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(shopId); + if (Objects.isNull(shopInfo)) { + log.info("店铺信息不存在"); + return; + } + + + List tbProskuCons = tbProskuConMapper.selectBySkuIdAndShopId(skuId, shopId); + if (Objects.isNull(tbProskuCons) || tbProskuCons.size() <= 0) { + log.info("耗材信息未配置"); + return; + } + + + TbProductSkuWithBLOBs skuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(skuId); + if (Objects.isNull(skuWithBLOBs)) { + log.info("规格信息不存在"); + return; + } + + TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(skuWithBLOBs.getProductId())); + if (Objects.isNull(product)) { + log.info("商品信息不存在"); + return; + } + + tbProskuCons.parallelStream().forEach(it -> { + TbConsInfo tbConsInfo = tbConsInfoMapper.selectByPrimaryKey(it.getConInfoId()); + if (Objects.isNull(tbConsInfo)) { + return; + } + + if (Objects.nonNull(tbConsInfo)) { + + if (N.gt(tbConsInfo.getConWarning(), tbConsInfo.getStockNumber())) { + String key = redisUtil.getMessage(RedisCst.ORDER_MESSAGE.concat(tbConsInfo.getShopId().toString()).concat("#").concat(tbConsInfo.getId().toString())); + + if (Objects.isNull(key)) { + TbUserShopMsg tbUserShopMsg = tbUserShopMsgMapper.selectByPrimaryKey(tbConsInfo.getShopId()); + if (Objects.nonNull(tbUserShopMsg) && Objects.nonNull(tbUserShopMsg.getOpenId())) { + JSONObject access_token = getAccessToken(); + String accessToken = String.valueOf(access_token.get("access_token")); + + JSONObject object1 = new JSONObject(); + + object1.put("template_id", "IZ-l9p9yBgcvhRR0uN6cBQPkWJ5i05zyWMkfeCPaAmY"); + object1.put("touser", tbUserShopMsg.getOpenId()); + + + JSONObject data = new JSONObject(); + + JSONObject thing1 = new JSONObject(); + thing1.put("value", shopInfo.getShopName()); + + JSONObject thing5 = new JSONObject(); + thing5.put("value", "耗材库存不足,请及时补充。"); + + JSONObject thing6 = new JSONObject(); + thing6.put("value", product.getName()); + + + JSONObject thing7 = new JSONObject(); + thing7.put("value", tbConsInfo.getStockNumber().toPlainString()); + + data.put("thing1", thing1); + data.put("thing6", thing6); + data.put("number7", thing7); + data.put("thing5", thing5); + + object1.put("data", data); + + object1.put("miniprogram_state", miniprogramState); + object1.put("lang", "zh_CN"); + + String response = HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); + log.info("返回结果:{}", response); + JSONObject resObj = JSONObject.parseObject(response); + if (ObjectUtil.isNotEmpty(resObj) && ObjectUtil.isNotNull(resObj) && "0".equals(String.valueOf(resObj.get("errcode")))) { + redisUtil.saveMessage(key, object1.toString(),10*60*1000); + } + } + } + + + } + } + + + }); + + } + + + JSONObject getAccessToken() { + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token"; + Map requestUrlParam = new HashMap<>(); + //小程序appId + requestUrlParam.put("appid", appId); + //小程序secret + requestUrlParam.put("secret", secrete); + + +// requestUrlParam.put("appid", "wxcf0fe8cdba153fd6"); +// //小程序secret +// requestUrlParam.put("secret", "c33e06467c6879a62af633d50ed6b720"); + //默认参数 + requestUrlParam.put("grant_type", "client_credential"); + JSONObject jsonObject = JSON.parseObject(HttpClientUtil.doGet(requestUrl, requestUrlParam)); + return jsonObject; + } + + + + public static void main(String[] args){ + JSONObject access_token = new ConsMsgConsumer().getAccessToken(); + String accessToken = String.valueOf(access_token.get("access_token")); + + JSONObject object1 = new JSONObject(); + + object1.put("template_id", "IZ-l9p9yBgcvhRR0uN6cBQPkWJ5i05zyWMkfeCPaAmY"); + object1.put("touser", "oeQYq5CAuSpdeX9uZz52DJiSUO9M"); + + + JSONObject data = new JSONObject(); + + JSONObject thing1 = new JSONObject(); + thing1.put("value", "水"); + + JSONObject thing5 = new JSONObject(); + thing5.put("value", "耗材库存不足,请及时补充。"); + + JSONObject thing6 = new JSONObject(); + thing6.put("value", "咖啡"); + + + JSONObject thing7 = new JSONObject(); + thing7.put("value", "3.2"); + + data.put("thing1", thing1); + data.put("thing6", thing6); + data.put("number7", thing7); + data.put("thing5", thing5); + + object1.put("data", data); + + object1.put("miniprogram_state", "trial"); + object1.put("lang", "zh_CN"); + + String response = HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); + log.info("返回结果:{}", response); + JSONObject resObj = JSONObject.parseObject(response); + } + + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java index 8bce4c1..8199561 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConfig.java @@ -108,6 +108,22 @@ public class RabbitConfig { + @Bean + public DirectExchange cons_msg_Exchange_Register() { + return new DirectExchange(RabbitConstants.CONS_MSG_COLLECT_PUT); + } + + @Bean + public Queue queuecons_msg_Register() { + return new Queue(RabbitConstants.CONS_MSG_COLLECT_QUEUE_PUT, true); //队列持久 + } + + @Bean + public Binding bindingcons_msg_Register() { + return BindingBuilder.bind(queuePrint_Register()).to(printExchange_Register()).with(RabbitConstants.CONS_MSG_COLLECT_ROUTINGKEY_PUT); + } + + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java index 6bfaf65..b64fe73 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java @@ -31,4 +31,18 @@ public interface RabbitConstants { public static final String CONS_COLLECT_ROUTINGKEY_PUT = "cons_collect_routingkey_put"; + + + + + + + public static final String CONS_MSG_COLLECT_PUT="cons_msg_collect_put"; + + public static final String CONS_MSG_COLLECT_QUEUE_PUT = "cons_msg_collect_queue_put"; + + + public static final String CONS_MSG_COLLECT_ROUTINGKEY_PUT = "cons_msg_collect_routingkey_put"; + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java index 213aace..4d89e44 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitProducer.java @@ -44,6 +44,16 @@ public class RabbitProducer implements RabbitTemplate.ConfirmCallback { } + + + + + public void con_msg(String content){ + CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString()); + rabbitTemplate.convertAndSend(RabbitConstants.CONS_MSG_COLLECT_PUT, RabbitConstants.CONS_MSG_COLLECT_ROUTINGKEY_PUT, content, correlationId); + } + + @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { logger.info(" 回调id:" + correlationData); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java index c17a28b..bbc4e0d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java @@ -1,7 +1,6 @@ package com.chaozhanggui.system.cashierservice.service; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.TbCashierCartMapper; import com.chaozhanggui.system.cashierservice.dao.TbConsInfoFlowMapper; @@ -17,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.util.*; @Slf4j @@ -70,15 +68,15 @@ public class ConsService { for (TbProskuCon tbProskuCon : tbProskuCons) { TbConsInfo tbConsInfo= tbConsInfoMapper.selectByPrimaryKey(tbProskuCon.getConInfoId()); if(Objects.nonNull(tbConsInfo)){ - ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbConsInfo.getSurplusStock()); + ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbProskuCon.getSurplusStock()); consInfoPOS.add(consInfoPO); TbConsInfoFlow flow=new TbConsInfoFlow(); flow.setConsId(tbConsInfo.getId()); flow.setShopId(tbConsInfo.getShopId()); flow.setConName(tbConsInfo.getConName()); - flow.setAmount(tbConsInfo.getSurplusStock()); - flow.setBalance(tbConsInfo.getStockNumber().subtract(tbConsInfo.getSurplusStock())); + flow.setAmount(tbProskuCon.getSurplusStock()); + flow.setBalance(tbConsInfo.getStockNumber().subtract(tbProskuCon.getSurplusStock())); flow.setBizCode("createCart"); flow.setBizName("加入购物陈消耗"); flow.setBizType("-"); @@ -121,15 +119,15 @@ public class ConsService { for (TbProskuCon tbProskuCon : tbProskuCons) { TbConsInfo tbConsInfo= tbConsInfoMapper.selectByPrimaryKey(tbProskuCon.getConInfoId()); if(Objects.nonNull(tbConsInfo)){ - ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbConsInfo.getSurplusStock().negate()); + ConsInfoPO consInfoPO=new ConsInfoPO(tbConsInfo.getId(),tbProskuCon.getSurplusStock().negate()); consInfoPOS.add(consInfoPO); TbConsInfoFlow flow=new TbConsInfoFlow(); flow.setConsId(tbConsInfo.getId()); flow.setShopId(tbConsInfo.getShopId()); flow.setConName(tbConsInfo.getConName()); - flow.setAmount(tbConsInfo.getSurplusStock()); - flow.setBalance(tbConsInfo.getStockNumber().add(tbConsInfo.getSurplusStock())); + flow.setAmount(tbProskuCon.getSurplusStock()); + flow.setBalance(tbConsInfo.getStockNumber().add(tbProskuCon.getSurplusStock())); flow.setBizCode("cancelCart"); flow.setBizName("取消购物车返回"); flow.setBizType("+"); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java index 365ae21..6ce9851 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java @@ -75,7 +75,7 @@ public class MemberService { public Result queryMember(String shopId, String phone, int page, int pageSize) { - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List tbShopUsers = tbShopUserMapper.selectByShopId(shopId, phone); PageInfo pageInfo = new PageInfo(tbShopUsers); return Result.success(CodeEnum.SUCCESS, pageInfo); @@ -619,7 +619,7 @@ public class MemberService { if (ObjectUtil.isEmpty(memberId)) { return Result.fail(CodeEnum.PARAM); } - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List> list = tbShopUserFlowMapper.selectByMemberAccountFlow(memberId); PageInfo pageInfo = new PageInfo(list); return Result.success(CodeEnum.SUCCESS, pageInfo); 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 a33a386..15a4d7e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -12,7 +12,6 @@ import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; 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; @@ -25,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicBoolean; import static com.chaozhanggui.system.cashierservice.sign.CodeEnum.CARTEXIST; @@ -63,6 +63,8 @@ public class OrderService { @Autowired RabbitProducer producer; + + private static ConcurrentHashMap> codeMap = new ConcurrentHashMap<>(); private static ConcurrentHashMap> userMap = new ConcurrentHashMap<>(); @@ -106,6 +108,13 @@ public class OrderService { } } + JSONObject objectMsg=new JSONObject(); + objectMsg.put("skuId",skuWithBLOBs.getId()); + objectMsg.put("shopId",shopInfo.getId()); + + + producer.con_msg(objectMsg.toString()); + if (StringUtils.isEmpty(masterId)) { boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId); if (flag) { @@ -755,7 +764,7 @@ public class OrderService { public Result findOrder(Integer shopId, String status, Integer page, Integer size, String orderNo) { String day = DateUtils.getDay(); - PageHelper.startPage(page, size); + PageHelperUtil.startPage(page, size); String orderType = ""; if (StringUtils.isNotEmpty(status)) { if (status.equals("refund")) { @@ -949,6 +958,9 @@ public class OrderService { private String secrete; + @Value("${subscribe.message.miniprogramState}") + private String miniprogramState; + public Result sendMassage(String orderId){ if(ObjectUtil.isEmpty(orderId)){ return Result.fail(CodeEnum.ERRMASTER); @@ -1009,7 +1021,7 @@ public class OrderService { object1.put("data",data); - object1.put("miniprogram_state","trial"); + object1.put("miniprogram_state",miniprogramState); object1.put("lang","zh_CN"); String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); @@ -1097,7 +1109,7 @@ public class OrderService { object1.put("data",data); - object1.put("miniprogram_state","trial"); + object1.put("miniprogram_state",miniprogramState); object1.put("lang","zh_CN"); String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); @@ -1130,7 +1142,7 @@ public class OrderService { public Result getOutNumber(String shopId,Integer page,Integer pageSize){ - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List list= tbOrderOutNumberMapper.selectAll(shopId); PageInfo pageInfo=new PageInfo(list); return Result.success(CodeEnum.SUCCESS,pageInfo); 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 3bc718a..b76e233 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1099,7 +1099,7 @@ public class PayService { String shopId = info.getString("shopId"); String staffId = info.getString("staffId"); - PageHelper.startPage(pageNo, pageSize); + PageHelperUtil.startPage(pageNo, pageSize); List list = tbQuickPayMapper.selectByShopIdAndStaffId(Integer.valueOf(shopId), Integer.valueOf(staffId)); 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 5a84e74..722bf57 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -7,7 +7,7 @@ import com.chaozhanggui.system.cashierservice.entity.vo.ShopCategoryVo; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.DateUtils; -import com.github.pagehelper.PageHelper; +import com.chaozhanggui.system.cashierservice.util.PageHelperUtil; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -38,14 +38,14 @@ public class ProductService { public Result queryCategory(String shopId,Integer page,Integer pageSize){ - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List list=tbShopCategoryMapper.selectByAll(shopId); PageInfo pageInfo=new PageInfo(list); return Result.success(CodeEnum.SUCCESS,pageInfo); } public Result queryAllCategory(String shopId,Integer page,Integer pageSize){ - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List list=tbShopCategoryMapper.queryAllCategory(shopId); PageInfo pageInfo=new PageInfo(list); return Result.success(CodeEnum.SUCCESS,pageInfo); @@ -94,8 +94,7 @@ public class ProductService { public Result queryNewCommodityInfo(String shopId, String categoryId, String commdityName, int page, int pageSize, String masterId) { List tbProductWithBLOBs=null; - PageHelper.startPage(page,pageSize); - PageHelper.startPage(page,pageSize); + PageHelperUtil.startPage(page,pageSize); if(ObjectUtil.isEmpty(categoryId)){ tbProductWithBLOBs=tbProductMapper.selectByShopId(shopId,commdityName); }else { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java index 0fb1fce..9dab6c6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ShopInfoService.java @@ -7,6 +7,7 @@ import com.chaozhanggui.system.cashierservice.entity.*; 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.PageHelperUtil; import com.chaozhanggui.system.cashierservice.util.TokenUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -44,7 +45,7 @@ public class ShopInfoService { return Result.fail(CodeEnum.PARAM); } - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); List shopTables=tbShopTableMapper.selectByShopIdAndStatus(shopId,areaId,status); PageInfo pageInfo=new PageInfo(shopTables); return Result.success(CodeEnum.SUCCESS,pageInfo); @@ -64,7 +65,7 @@ public class ShopInfoService { // ShopUserDuty shopUserDuty = shopUserDutyMapper.selectByShopIdAndTrade(shopId,day); // List list = shopUserDutyMapper.selectByShopIdAndTradeAll(shopId,day,tbToken.getId()); if (Objects.nonNull(shopUserDuty)){ -// PageHelper.startPage(page, pageSize); +// PageHelperUtil.startPage(page, pageSize); List shopTables=shopUserDutyDetailMapper.selectAllByDuctId(shopUserDuty.getId()); // PageInfo pageInfo=new PageInfo(shopTables); shopUserDuty.setDetailList(shopTables); @@ -82,7 +83,7 @@ public class ShopInfoService { public Result queryDutyFlow(String token, String shopId, int page, int pageSize) { // JSONObject jsonObject = TokenUtil.parseParamFromToken(token); // String userId = jsonObject.getString("accountId"); - PageHelper.startPage(page, pageSize); + PageHelperUtil.startPage(page, pageSize); PageHelper.orderBy("login_out_time desc"); List list = shopUserDutyMapper.selectByShopId(shopId); PageInfo pageInfo=new PageInfo(list); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java index 2c06098..742a52a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java @@ -13,7 +13,7 @@ import com.chaozhanggui.system.cashierservice.entity.vo.ProductVo; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.JSONUtil; -import com.github.pagehelper.PageHelper; +import com.chaozhanggui.system.cashierservice.util.PageHelperUtil; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -109,7 +109,7 @@ public class TbGroupOrderInfoService { } public Result queryByPage(GroupOrderDto param) { - PageHelper.startPage(param.getPage(), param.getSize()); + PageHelperUtil.startPage(param.getPage(), param.getSize()); return Result.success(CodeEnum.SUCCESS, new PageInfo(tbGroupOrderInfoMapper.queryList(param))); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbPrintPCMachineService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbPrintPCMachineService.java index ae1c771..4858de9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbPrintPCMachineService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbPrintPCMachineService.java @@ -8,7 +8,7 @@ import com.chaozhanggui.system.cashierservice.entity.dto.PrintMachineDto; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.JSONUtil; -import com.github.pagehelper.PageHelper; +import com.chaozhanggui.system.cashierservice.util.PageHelperUtil; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -60,7 +60,7 @@ public class TbPrintPCMachineService { * @return 查询结果 */ public Result queryByPage(TbPrintPCMachine tbPrintMachine) { - PageHelper.startPage(tbPrintMachine.getPage(), tbPrintMachine.getPageSize()); + PageHelperUtil.startPage(tbPrintMachine.getPage(), tbPrintMachine.getPageSize()); tbPrintMachine.setContentType("local"); List tbPrintMachines = this.tbPrintMachineMapper.queryAll(tbPrintMachine); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java b/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java index 0ccfc1d..6f5757d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java @@ -96,6 +96,9 @@ public enum CodeEnum { ISNOTAPPORDER("100035",false,"不是小程序订单","fail"), + CONSERROR("100036",false,"商品已售罄","fail"), + + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/task/ConsInfoTask.java b/src/main/java/com/chaozhanggui/system/cashierservice/task/ConsInfoTask.java new file mode 100644 index 0000000..9976b39 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/task/ConsInfoTask.java @@ -0,0 +1,127 @@ +package com.chaozhanggui.system.cashierservice.task; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.chaozhanggui.system.cashierservice.dao.TbConsInfoMapper; +import com.chaozhanggui.system.cashierservice.dao.TbUserShopMsgMapper; +import com.chaozhanggui.system.cashierservice.entity.TbConsInfo; +import com.chaozhanggui.system.cashierservice.entity.TbUserShopMsg; +import com.chaozhanggui.system.cashierservice.util.HttpClientUtil; +import com.chaozhanggui.system.cashierservice.util.N; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Component +@Slf4j +public class ConsInfoTask { + + private ScheduledExecutorService executorService=Executors.newScheduledThreadPool(100); + + + @Value("${wx.appId}") + private String appId; + + + @Value("${wx.secrete}") + private String secrete; + + + @Autowired + TbConsInfoMapper tbConsInfoMapper; + + @Autowired + TbUserShopMsgMapper tbUserShopMsgMapper; + + + + public void init(){ + executorService.scheduleWithFixedDelay(timerTask(),0,10,TimeUnit.MINUTES); + } + + + public TimerTask timerTask () { + return new TimerTask() { + @Override + public void run() { + try { + List tbShopInfos= tbConsInfoMapper.selectAllInfo(); + if(Objects.nonNull(tbShopInfos)&&tbShopInfos.size()>0){ + tbShopInfos.parallelStream().forEach(it->{ + + if(N.gt(it.getConWarning(),it.getStockNumber())){ + TbUserShopMsg tbUserShopMsg=tbUserShopMsgMapper.selectByPrimaryKey(it.getShopId()); + if(Objects.nonNull(tbUserShopMsg)&&Objects.nonNull(tbUserShopMsg.getOpenId())){ + JSONObject object= getAccessToken(); + String accessToken=object.get("access_token")+""; + + JSONObject object1=new JSONObject(); + + object1.put("template_id","BKTcsYHW1xnUaE-CFmF7pOglJH0aLEyW9e4r5nWKUIU"); + object1.put("touser",tbUserShopMsg.getOpenId()); + + + JSONObject data=new JSONObject(); + + JSONObject tabname=new JSONObject(); + tabname.put("value",it.getConName()); + + + JSONObject thing21=new JSONObject(); + thing21.put("value",it.getStockNumber().toPlainString()); + + JSONObject thing8=new JSONObject(); + thing8.put("value","耗材库存不足,请及时补充。"); + + data.put("thing1.",tabname); + data.put("thing2",thing21); + data.put("thing3",thing8); + + object1.put("data",data); + + object1.put("miniprogram_state","trial"); + object1.put("lang","zh_CN"); + + String response= HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=".concat(accessToken)).body(object1.toString()).execute().body(); + log.info("返回结果:{}",response); + JSONObject resObj=JSONObject.parseObject(response); + if(ObjectUtil.isNotEmpty(resObj)&&ObjectUtil.isNotNull(resObj)&&"0".equals(resObj.get("errcode")+"")){ + + } + } + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + } + + + + JSONObject getAccessToken(){ + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token"; + Map requestUrlParam = new HashMap<>(); + //小程序appId + requestUrlParam.put("appid", appId); + //小程序secret + requestUrlParam.put("secret", secrete); + //默认参数 + requestUrlParam.put("grant_type", "client_credential"); + JSONObject jsonObject = JSON.parseObject(HttpClientUtil.doGet(requestUrl,requestUrlParam)); + return jsonObject; + } + + + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PageHelperUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PageHelperUtil.java new file mode 100644 index 0000000..93fa390 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PageHelperUtil.java @@ -0,0 +1,13 @@ +package com.chaozhanggui.system.cashierservice.util; + +import com.github.pagehelper.PageHelper; + +public class PageHelperUtil { + + /** + * 解决页数超限 仍返回数据问题 + */ + public static void startPage(int page, int pageSize) { + PageHelper.startPage(page, pageSize, true, false, false); + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java index 36c2984..06be21a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java @@ -16,4 +16,6 @@ public class RedisCst { public static final Object PRODUCT = "PRODUCT:"; public static final String OUT_NUMBER="ORDER:NUMBER:"; + + public static final String ORDER_MESSAGE="ORDER:MESSAGE:"; } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 2e8438f..b49645c 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -41,12 +41,20 @@ spring: port: 5672 username: admin password: Czg666888 - +#分页配置 +pagehelper: + supportMethodsArguments: true + reasonable: true + helperDialect: mysql + params: count=countSql mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/*.xml +subscribe: + message: + miniprogramState: trial diff --git a/src/main/resources/application-hph.yml b/src/main/resources/application-hph.yml index f5b6136..05a59d3 100644 --- a/src/main/resources/application-hph.yml +++ b/src/main/resources/application-hph.yml @@ -39,6 +39,12 @@ spring: port: 5672 username: admin password: Czg666888 +#分页配置 +pagehelper: + supportMethodsArguments: true + reasonable: true + helperDialect: mysql + params: count=countSql mybatis: configuration: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 76c1bcf..e466807 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -42,12 +42,21 @@ spring: port: 5672 username: admin password: Czg666888 +#分页配置 +pagehelper: + supportMethodsArguments: true + reasonable: true + helperDialect: mysql + params: count=countSql mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/*.xml +subscribe: + message: + miniprogramState: formal diff --git a/src/main/resources/application-prod2.yml b/src/main/resources/application-prod2.yml index dd7381c..f8c3f18 100644 --- a/src/main/resources/application-prod2.yml +++ b/src/main/resources/application-prod2.yml @@ -42,6 +42,12 @@ spring: port: 5672 username: admin password: Czg666888 +#分页配置 +pagehelper: + supportMethodsArguments: true + reasonable: true + helperDialect: mysql + params: count=countSql mybatis: configuration: diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 007c5e7..d05012b 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -39,6 +39,12 @@ spring: port: 5672 username: admin password: Czg666888 +#分页配置 +pagehelper: + supportMethodsArguments: true + reasonable: true + helperDialect: mysql + params: count=countSql mybatis: configuration: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 67a0661..d1dc4d3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,12 +4,6 @@ spring: server: servlet: context-path: /cashier-client/ -#分页配置 -pagehelper: - supportMethodsArguments: true - reasonable: false - helperDialect: mysql - params: count=countSql # 日志配置 logging: level: @@ -51,6 +45,10 @@ thirdPay: wx: appId: wxd88fffa983758a30 secrete: a34a61adc0602118b49400baa8812454 + msg: + appId: wxcf0fe8cdba153fd6 + secrete: c33e06467c6879a62af633d50ed6b720 + diff --git a/src/main/resources/generator-mapper/generatorConfig.xml b/src/main/resources/generator-mapper/generatorConfig.xml index b3483b2..b024f20 100644 --- a/src/main/resources/generator-mapper/generatorConfig.xml +++ b/src/main/resources/generator-mapper/generatorConfig.xml @@ -52,6 +52,13 @@ + +
+ + + diff --git a/src/main/resources/mapper/TbConsInfoMapper.xml b/src/main/resources/mapper/TbConsInfoMapper.xml index 75d9ac2..c618078 100644 --- a/src/main/resources/mapper/TbConsInfoMapper.xml +++ b/src/main/resources/mapper/TbConsInfoMapper.xml @@ -10,14 +10,14 @@ - + id, shop_id, con_type_id, con_type_name, con_code, con_name, stock_number, con_unit, - surplus_stock, laster_in_stock, create_time, update_time + laster_in_stock, con_warning, create_time, update_time + select count(id) from tb_cons_info + + + + diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 1f7b6ab..c4ed33d 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -935,4 +935,29 @@ set stock_number = stock_number - #{number,jdbcType=INTEGER} where id = #{productId} + + diff --git a/src/main/resources/mapper/TbProskuConMapper.xml b/src/main/resources/mapper/TbProskuConMapper.xml index 2599801..19ba0fe 100644 --- a/src/main/resources/mapper/TbProskuConMapper.xml +++ b/src/main/resources/mapper/TbProskuConMapper.xml @@ -6,11 +6,12 @@ + - id, shop_id, product_sku_id, con_info_id, status, create_time + id, shop_id, product_sku_id, con_info_id, surplus_stock, status, create_time select * from tb_prosku_con where product_sku_id=#{shopId} and shop_id=#{shopId} and status=1 - + + + \ No newline at end of file