From 4489b69c7904fdfb4d46e110e178a969bfd82985 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 14 Jul 2023 15:31:29 +0800 Subject: [PATCH] 服务号初始化 --- src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java | 2 src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java | 2 src/main/resources/templates/index.html | 2 src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java | 2 src/main/java/cc/mrbird/febs/pay/controller/AutoReplyController.java | 73 +++++++++ src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java | 187 +++++++++++++++++++++++ src/main/resources/templates/error/404.html | 2 src/main/resources/templates/error/403.html | 2 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html | 5 src/main/resources/application-dev.yml | 37 ++-- src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html | 39 ++-- src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1 src/main/java/cc/mrbird/febs/common/utils/CheckoutUtil.java | 85 ++++++++++ src/main/resources/application.yml | 2 src/main/resources/templates/error/500.html | 2 src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java | 2 src/main/resources/templates/febs/views/layout.html | 2 src/main/resources/templates/febs/views/login.html | 4 18 files changed, 401 insertions(+), 50 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java index f640c22..c0cd7dc 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java @@ -31,5 +31,6 @@ registration.excludePathPatterns("/api/leader/noLoginLeaderTitle"); registration.excludePathPatterns("/api/xcxPay/wxpayCallback"); registration.excludePathPatterns("/api/xcxPay/rechargeCallBack"); + registration.excludePathPatterns("/api/wechat/reply/event"); } } diff --git a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java index 6393808..250e42b 100644 --- a/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java +++ b/src/main/java/cc/mrbird/febs/common/properties/XcxProperties.java @@ -14,6 +14,8 @@ private String xcxAppid; private String xcxSecret; + //微信 + private String wechatToken; private String wecharPaynotifyUrl; diff --git a/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java index d899a86..c08850b 100644 --- a/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java +++ b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java @@ -63,7 +63,7 @@ log.info("/ /` / / \\ | |\\/| | |_) | | | |_ | | | |_ "); log.info("\\_\\_, \\_\\_/ |_| | |_| |_|__ |_|__ |_| |_|__ "); log.info(" "); - log.info("钱阿姨 权限系统启动完毕,地址:{}", url); + log.info("药王谷铺子 权限系统启动完毕,地址:{}", url); boolean auto = febsProperties.isAutoOpenBrowser(); if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) { diff --git a/src/main/java/cc/mrbird/febs/common/utils/CheckoutUtil.java b/src/main/java/cc/mrbird/febs/common/utils/CheckoutUtil.java new file mode 100644 index 0000000..79d7497 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/CheckoutUtil.java @@ -0,0 +1,85 @@ +package cc.mrbird.febs.common.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class CheckoutUtil { + // 与接口配置信息中的Token要一致 + private static String token = "ywgpzfwh"; + + /** + * 验证签名 + * + * @param signature + * @param timestamp + * @param nonce + * @return + */ + public static boolean checkSignature(String signature, String timestamp, String nonce) { + String[] arr = new String[] { token, timestamp, nonce }; + // 将token、timestamp、nonce三个参数进行字典序排序 + // Arrays.sort(arr); + sort(arr); + StringBuilder content = new StringBuilder(); + for (int i = 0; i < arr.length; i++) { + content.append(arr[i]); + } + MessageDigest md = null; + String tmpStr = null; + + + try { + md = MessageDigest.getInstance("SHA-1"); + // 将三个参数字符串拼接成一个字符串进行sha1加密 + byte[] digest = md.digest(content.toString().getBytes()); + tmpStr = byteToStr(digest); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + content = null; + // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 + return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; + } + + + /** + * 将字节数组转换为十六进制字符串 + * + * @param byteArray + * @return + */ + private static String byteToStr(byte[] byteArray) { + String strDigest = ""; + for (int i = 0; i < byteArray.length; i++) { + strDigest += byteToHexStr(byteArray[i]); + } + return strDigest; + } + + + /** + * 将字节转换为十六进制字符串 + * + * @param mByte + * @return + */ + private static String byteToHexStr(byte mByte) { + char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + char[] tempArr = new char[2]; + tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; + tempArr[1] = Digit[mByte & 0X0F]; + String s = new String(tempArr); + return s; + } + public static void sort(String a[]) { + for (int i = 0; i < a.length - 1; i++) { + for (int j = i + 1; j < a.length; j++) { + if (a[j].compareTo(a[i]) < 0) { + String temp = a[i]; + a[i] = a[j]; + a[j] = temp; + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java index c453da9..4ca77a4 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java @@ -70,7 +70,7 @@ private Integer isSku; /** - * 是否普通商品 1-普通商品 2-套餐 + * 是否普通商品 1-普通商品 2-积分商品 3-双卷商品 */ private Integer isNormal; diff --git a/src/main/java/cc/mrbird/febs/pay/controller/AutoReplyController.java b/src/main/java/cc/mrbird/febs/pay/controller/AutoReplyController.java new file mode 100644 index 0000000..8168d71 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/controller/AutoReplyController.java @@ -0,0 +1,73 @@ +package cc.mrbird.febs.pay.controller; + +import cc.mrbird.febs.common.properties.XcxProperties; +import cc.mrbird.febs.common.utils.SpringContextHolder; +import cc.mrbird.febs.pay.util.WechatEventUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +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.IOException; +import java.io.PrintWriter; + +/** + * 微信事件通知 - 控制层 + */ +@Slf4j +@RestController +@RequestMapping(value = "/api/wechat/reply") +public class AutoReplyController { + + + private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); +// @Value("${wechat.appId}") +// private String wechatAppId; +// +// @Value("${wechat.appSecret}") +// private String wechatAppSecret; +// +// // 这个Token就是微信后台 服务器配置 中的Token +// @Value("${wechat.token}") +// private String wechatToken; + + /** + * 服务器校验 + * @param req 请求 + * @return 校验结果 + */ + @GetMapping("/event") + public String verification(HttpServletRequest req) { + return WechatEventUtil.verification(req, xcxProperties.getWechatToken()); + } + + /** + * 消息事件 + * @param req 请求 + * @return 结果 + */ + @PostMapping("/event") + public void messageEvent(HttpServletRequest req, HttpServletResponse resp) throws IOException { + req.setCharacterEncoding("UTF-8"); + resp.setCharacterEncoding("UTF-8"); + String message = "success"; + PrintWriter out = resp.getWriter(); + try { + String messageEvent = WechatEventUtil.messageEvent(req); + if(messageEvent != null) { + message = messageEvent; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + log.info("消息事件:"+message); + out.write(message); + if (out != null) { + out.close(); + } + } + } +} diff --git a/src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java b/src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java index 4c940c8..be0a26a 100644 --- a/src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java +++ b/src/main/java/cc/mrbird/febs/pay/util/WechatConfigure.java @@ -6,7 +6,7 @@ public static final String SEND_INFO_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; - public static final String WX_ACCESS_TOKEN_REDIS_KEY = "access_token"; + public static final String WX_ACCESS_TOKEN_REDIS_KEY = "ywgpz_access_token"; public static final String BAIDU_ACCESS_TOKEN_REDIS_KEY = "bd_access_token"; public static final String UNIFIEDORDER = "https://api.mch.weixin.qq.com/pay/unifiedorder"; diff --git a/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java new file mode 100644 index 0000000..4600070 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java @@ -0,0 +1,187 @@ +package cc.mrbird.febs.pay.util; + +import org.dom4j.io.SAXReader; + +import javax.servlet.http.HttpServletRequest; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.util.HashMap; +import org.dom4j.Document; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.InputStream; +import java.util.*; + +/** + * <pre> + * 微信消息工具类:事件通知、自动回复、 + * </pre> + * + * @author shenshao + */ +public class WechatEventUtil { + + private static Logger log = LoggerFactory.getLogger(WechatEventUtil.class); + + /** + * 公众号《事件通知》服务器校验 + * + * @param req 请求 + * @return 校验结果 + */ + public static String verification(HttpServletRequest req, String wechatToken) { + // 接收微信服务器发送请求时传递过来的参数 + String signature = req.getParameter("signature"); + String timestamp = req.getParameter("timestamp"); + String nonce = req.getParameter("nonce"); + + // 将token、timestamp、nonce三个参数进行字典序排序,并拼接为一个字符串 + String sortStr = sort(wechatToken, timestamp, nonce); + + // 字符串进行shal加密 + String mySignature = shal(sortStr); + // 校验微信服务器传递过来的签名 和 加密后的字符串是否一致, 若一致则签名通过 + if (!"".equals(signature) && !"".equals(mySignature) && signature.equals(mySignature)) { + log.info("-----签名校验通过-----"); + return req.getParameter("echostr"); + } else { + log.error("-----校验签名失败-----"); + return ""; + } + } + + /** + * 消息事件监控:关注、取消关注等事件 + * @param req + * @return + */ + public static String messageEvent(HttpServletRequest req) { + String result = null; + Map<String, String> map = xmlToMap(req); + String fromUserName = map.get("FromUserName"); + String toUserName = map.get("ToUserName"); + String msgType = map.get("MsgType"); + String content = map.get("Content"); + String eventType = map.get("Event"); + log.info("事件处理:event:{}、msgType:{}、toUserName:{}、fromUserName:{}", eventType, msgType, toUserName, fromUserName); + if ("event".equals(msgType)) { + if ("subscribe".equals(eventType)) { + result = imgTextMsg(toUserName, fromUserName, "新用户注册", "仅限上海地区手机号用户", "图片地址", "点击后跳转的路径"); + log.info("新增关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName); + } else if ("unsubscribe".equals(eventType)) { + log.info("取消关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName); + } + } + return result; + } + + /** + * 组装图文消息(懒得封装对象转XML方法,直接字符串拼装,大伙勿喷) + * @param toUserName 开发者微信号 + * @param fromUserName 接收人openId + * @param title 图文消息上的备注 + * @param description 图文消息上的备注 + * @param picUrl 图文消息上的图片 + * @param url 点击图文消息跳转的路径 + * @return + */ + public static String imgTextMsg(String toUserName, String fromUserName, String title, String description, String picUrl, String url){ + return "<xml>" + + "<ToUserName><![CDATA["+fromUserName+"]]></ToUserName>" + + "<FromUserName><![CDATA["+toUserName+"]]></FromUserName>" + + "<CreateTime>"+new Date().getTime()+"</CreateTime>" + + "<MsgType><![CDATA[news]]></MsgType>" + + "<ArticleCount>1</ArticleCount>" + + "<Articles>" + + "<item>" + + "<Title><![CDATA["+title+"]]></Title>" + + "<Description><![CDATA["+description+"]]></Description>" + + "<PicUrl><![CDATA["+picUrl+"]]></PicUrl>" + + "<Url><![CDATA["+url+"]]></Url>" + + "</item>" + + "</Articles>" + + "</xml>"; + } + + /** + * 解析微信发来的请求(XML) + * + * @param request 请求 + * @return map + * @throws Exception 异常 + */ + public static Map<String, String> xmlToMap(HttpServletRequest request) { + // 将解析结果存储在HashMap中 + Map<String, String> map = new HashMap<>(16); + // 从request中取得输入流 + try (InputStream inputStream = request.getInputStream()) { + System.out.println("获取输入流"); + // 读取输入流 + SAXReader reader = new SAXReader(); + Document document = reader.read(inputStream); + // 得到xml根元素 + Element root = document.getRootElement(); + // 得到根元素的所有子节点 + List<Element> elementList = root.elements(); + + // 遍历所有子节点 + for (Element e : elementList) { + System.out.println(e.getName() + " | " + e.getText()); + map.put(e.getName(), e.getText()); + } + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + /** + * 参数排序 + * + * @param token 服务器配置,自定义的Token + * @param timestamp timestamp + * @param nonce nonce + * @return 排序后拼接字符串 + */ + public static String sort(String token, String timestamp, String nonce) { + String[] strArray = {token, timestamp, nonce}; + Arrays.sort(strArray); + StringBuilder sb = new StringBuilder(); + for (String str : strArray) { + sb.append(str); + } + return sb.toString(); + } + + /** + * 字符串进行shal加密 + * + * @param str 字符串 + * @return 密文 + */ + public static String shal(String str) { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-1"); + digest.update(str.getBytes()); + byte messageDigest[] = digest.digest(); + + StringBuilder hexString = new StringBuilder(); + // 字节数组转换为 十六进制 数 + for (int i = 0; i < messageDigest.length; i++) { + String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); + if (shaHex.length() < 2) { + hexString.append(0); + } + hexString.append(shaHex); + } + return hexString.toString(); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return ""; + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 3f5844d..fe2a524 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -15,14 +15,14 @@ datasource: # 数据源-1,名称为 base base: -# username: ct_test -# password: 123456 -# driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://120.27.238.55:3306/db_pingtuan?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 - username: db_mall_qianayi - password: db_mall_qianayi123!@#123 + username: ct_test + password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://121.37.162.173:3306/db_mall_qianayi?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + url: jdbc:mysql://120.27.238.55:3406/db_yaowanggu?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 +# username: db_mall_qianayi +# password: db_mall_qianayi123!@#123 +# driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://121.37.162.173:3306/db_mall_qianayi?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 # username: db_mall # password: mall!@#123 # driver-class-name: com.mysql.cj.jdbc.Driver @@ -30,13 +30,13 @@ redis: # Redis数据库索引(默认为 0) - database: 8 + database: 11 # Redis服务器地址 - host: 121.37.162.173 + host: 120.27.238.55 # Redis服务器连接端口 - port: 6379 + port: 6479 # Redis 密码 - password: d32ncxe@i3#!dV + password: d3y6dsdl;f.327 lettuce: pool: # 连接池中的最小空闲连接 @@ -50,10 +50,10 @@ # 连接超时时间(毫秒) timeout: 5000 rabbitmq: - host: 121.37.162.173 + host: 120.27.238.55 port: 5672 - username: hibit - password: hibit123 + username: ct_rabbit + password: 123456 publisher-confirm-type: correlated pay: @@ -69,16 +69,17 @@ xcx: wechar_login_url: https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code - xcx_appid: wxfb1acf504eb9d058 - xcx_secret: 7ee226a964b1be7cfb96f5e0dc739c44 + xcx_appid: wx052716b1a388b13c + xcx_secret: e7cf355e7234f035d8fea6a3a19513b9 debug: false - wecharPaynotifyUrl: http://qianayi.csxuncong.com/api/xcxPay/wxpayCallback - wecharRechargePaynotifyUrl: http://qianayi.csxuncong.com/api/xcxPay/rechargeCallBack + wecharPaynotifyUrl: http://ywgpz.csxuncong.com/api/xcxPay/wxpayCallback + wecharRechargePaynotifyUrl: http://ywgpz.csxuncong.com/api/xcxPay/rechargeCallBack certLocalPath: /home/qianayiCert/apiclient_cert.p12 wecharpayMchid: 1638095860 wecharpaySecret: QIANAYIZONGZI1234567899876543212 gaodeKey: 95ede7157929f5f6b6c758971be924b1 serviceName: yiyuanshucai + wechatToken:ywgpzfwh system: job: true \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ebfeb13..dc3ee1d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8085 + port: 8184 tomcat: uri-encoding: utf-8 diff --git a/src/main/resources/templates/error/403.html b/src/main/resources/templates/error/403.html index 0972b5d..7b8f56f 100644 --- a/src/main/resources/templates/error/403.html +++ b/src/main/resources/templates/error/403.html @@ -2,7 +2,7 @@ <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> - <title>钱阿姨 权限系统</title> + <title>药王谷铺子 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> diff --git a/src/main/resources/templates/error/404.html b/src/main/resources/templates/error/404.html index 16775c7..4b76d51 100644 --- a/src/main/resources/templates/error/404.html +++ b/src/main/resources/templates/error/404.html @@ -2,7 +2,7 @@ <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> - <title>钱阿姨 权限系统</title> + <title>药王谷铺子 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> diff --git a/src/main/resources/templates/error/500.html b/src/main/resources/templates/error/500.html index 4222f6e..1fc13e6 100644 --- a/src/main/resources/templates/error/500.html +++ b/src/main/resources/templates/error/500.html @@ -2,7 +2,7 @@ <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> - <title>钱阿姨 权限系统</title> + <title>药王谷铺子 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> diff --git a/src/main/resources/templates/febs/views/layout.html b/src/main/resources/templates/febs/views/layout.html index fb91414..ea2e4b0 100644 --- a/src/main/resources/templates/febs/views/layout.html +++ b/src/main/resources/templates/febs/views/layout.html @@ -64,7 +64,7 @@ <div class="layui-side-scroll"> <div class="layui-logo" style="cursor: pointer"> <img data-th-src="@{febs/images/logo.png}"> - <span>钱阿姨 权限系统</span> + <span>药王谷铺子 权限系统</span> </div> <script type="text/html" diff --git a/src/main/resources/templates/febs/views/login.html b/src/main/resources/templates/febs/views/login.html index d4cd2a8..e13444b 100644 --- a/src/main/resources/templates/febs/views/login.html +++ b/src/main/resources/templates/febs/views/login.html @@ -2,7 +2,7 @@ <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> - <title>钱阿姨 权限系统</title> + <title>药王谷铺子 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> @@ -19,7 +19,7 @@ <div class="layui-container"> <div class="layui-row"> <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4 febs-tc"> - <div class="layui-logo"><span><b>钱阿姨</b> 权限系统</span></div> + <div class="layui-logo"><span><b>药王谷铺子</b> 权限系统</span></div> </div> <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4" id="login-div"> <div class="layui-form" lay-filter="login-form"> diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html index 03f8cb1..f45bd02 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html @@ -97,8 +97,9 @@ <label class="layui-form-label febs-form-item-require">商品类型</label> <div class="layui-input-block"> <select name="isNormal" class="goods-type" lay-filter="goods-type-select"> - <option value="1">普通商品区</option> -<!-- <option value="2">套餐区</option>--> + <option value="1">普通商品</option> + <option value="2">积分商品</option> + <option value="2">双卷商品</option> </select> </div> </div> diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html index e0ef5d6..4fac478 100644 --- a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html +++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html @@ -106,30 +106,31 @@ <div class="layui-input-block"> <select name="isNormal" class="goods-type" lay-filter="goods-type-select"> - <option value="1">普通商品区</option> -<!-- <option value="2">套餐区</option>--> + <option value="1">普通商品</option> + <option value="2">积分商品</option> + <option value="2">双卷商品</option> </select> </div> </div> - <div class="layui-form-item febs-hide tc-set"> - <label class="layui-form-label">静态倍数</label> - <div class="layui-input-block"> - <input type="text" name="staticMulti" placeholder="请输入静态倍数" - autoComplete="off" class="layui-input"> - <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分 - </div> - </div> - </div> +<!-- <div class="layui-form-item febs-hide tc-set">--> +<!-- <label class="layui-form-label">静态倍数</label>--> +<!-- <div class="layui-input-block">--> +<!-- <input type="text" name="staticMulti" placeholder="请输入静态倍数"--> +<!-- autoComplete="off" class="layui-input">--> +<!-- <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分--> +<!-- </div>--> +<!-- </div>--> +<!-- </div>--> - <div class="layui-form-item febs-hide tc-set"> - <label class="layui-form-label">静态占比(%)</label> - <div class="layui-input-block"> - <input type="text" name="staticProp" placeholder="请输入静态占比" - autoComplete="off" class="layui-input"> - <div class="layui-form-mid layui-word-aux">所有套餐静态占比相加应等于100%</div> - </div> - </div> +<!-- <div class="layui-form-item febs-hide tc-set">--> +<!-- <label class="layui-form-label">静态占比(%)</label>--> +<!-- <div class="layui-input-block">--> +<!-- <input type="text" name="staticProp" placeholder="请输入静态占比"--> +<!-- autoComplete="off" class="layui-input">--> +<!-- <div class="layui-form-mid layui-word-aux">所有套餐静态占比相加应等于100%</div>--> +<!-- </div>--> +<!-- </div>--> </div> <div class="layui-tab-item"> diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 3870aaf..f3a6873 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -3,7 +3,7 @@ xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <head> <meta charset="utf-8"> - <title>钱阿姨 权限系统</title> + <title>药王谷铺子 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> -- Gitblit v1.9.1