diff --git a/rc-busness/ajax/getData.js b/rc-busness/ajax/getData.js index e5dd9928..f1324f3a 100644 --- a/rc-busness/ajax/getData.js +++ b/rc-busness/ajax/getData.js @@ -154,6 +154,17 @@ export const userLongin = (mobile, pet,address) => { } return fetch('member?type=get', data, 'POST' ) } + /** + * 登录和注册 + */ +export const userregOrLogin = (mobile) => { + var data = { + id:'', + mobile:mobile, + } + return fetch('regOrLogin?phoneNumber='+ mobile , data, 'POST' ) +} + //注册 export const useredit = (mobile, pet,address) => { diff --git a/rc-busness/assets/css/index.less b/rc-busness/assets/css/index.less index c8465ce9..dee49787 100644 --- a/rc-busness/assets/css/index.less +++ b/rc-busness/assets/css/index.less @@ -241,7 +241,7 @@ width:100%; height:100%; background:url("../image/btn-play.png") center center no-repeat; - background-size:90px 90px; + background-size:48px 48px; z-index:2; } } diff --git a/rc-busness/assets/css/product-list.less b/rc-busness/assets/css/product-list.less index 7bcabaeb..5f257f68 100644 --- a/rc-busness/assets/css/product-list.less +++ b/rc-busness/assets/css/product-list.less @@ -5,6 +5,7 @@ ul li ol li em strong i { list-style: none; font-style: normal; } + .rc-main { //rc-main start margin-top:.23rem; diff --git a/rc-busness/assets/css/producted.less b/rc-busness/assets/css/producted.less index 730a0bef..87e388dd 100644 --- a/rc-busness/assets/css/producted.less +++ b/rc-busness/assets/css/producted.less @@ -10,10 +10,12 @@ overflow-y: auto; } } + .ts-tag-list { display: inline-flex; flex-wrap: wrap; justify-content: flex-start; + margin-top: 20px; em { font-style: normal; display: flex; @@ -52,6 +54,13 @@ color: #333333; display:inline-block; } + .ts-record { + font-size: 12px; + margin-left: 16px; + font-style: normal; + color: #333333; + display:inline-block; + } .ts-row-title + i { color: #666666; display:inline-flex; @@ -115,6 +124,14 @@ } // 手机端 @media screen and (max-width:768px) { + .uservideo{ + width: 100%; + height: 100%; + video{ + width: 100%; + height: 100%; + } + } .ts-ecprice{ font-size:.625rem; } @@ -287,12 +304,13 @@ } .productdetails { margin-top: 19px; + } .rc-productdeta { margin-top: 20px; .rc-prodtop { - display: flex; + // display: flex; align-items: flex-start; span { font-size: 14px; @@ -357,11 +375,17 @@ .ts-row-title{ font-size: 16px; width:82px; + } .ts-row-title + i { font-size: 16px; max-width:596px; } + .ts-row-record{ + color: #999; + margin-left: 12px; + font-size: 12px; + } } .rc-button{ width: 100%; @@ -536,7 +560,7 @@ .rc-productdeta { margin-top: 16px; .rc-prodtop { - display: flex; + // display: flex; align-items: flex-start; span { font-size: 18px; diff --git a/rc-busness/components/header.vue b/rc-busness/components/header.vue index f953ad07..574fadb1 100644 --- a/rc-busness/components/header.vue +++ b/rc-busness/components/header.vue @@ -308,7 +308,7 @@
  • 个人中心 - +
  • @@ -353,7 +353,7 @@ export default { data() { return { headerScroll:false, - loginornot:true,//用户是否登录提示点 + loginornot:false,//用户是否登录提示点 usermessage:null,//存储用户信息 }; }, diff --git a/rc-busness/pages/index.vue b/rc-busness/pages/index.vue index 7bab2db7..264b56d6 100644 --- a/rc-busness/pages/index.vue +++ b/rc-busness/pages/index.vue @@ -1,41 +1,58 @@ + //请求犬 + async dogmessage(stype, dataType) { + this.dataLoaded = false; + let data = []; + if (stype == undefined || stype == null) { + data = await biaomessage(1, "", 1, 6); + } else { + data = await biaomessage(this.userserachlist, "", 1, 6); + } + if (data) { + let userlist = []; + //userlist=data.slice(0,6); + if (dataType) { + if (dataType == "Shi") this.dogshi = data; + else if (dataType == "Gan") this.doggan = data; + } else { + this.doglist = data; + //this.doggan=userlist; + //this.dogshi=userlist; + } + this.dataLoaded = true; + } + }, + + selectproduce(item) { + let isRxGoods = false; + let productCode = []; + let mainProductCode = item.productCode; + if (!item.ecPrice && !item.price) { + isRxGoods = 1; + productCode = [item.productCode]; + } else { + for (let i of item.productList) { + productCode.push(i.productCode); + } + } + this.$router.push({ + path: "/productdetails/producted", + query: { + stype: 1, + isRxGoods: isRxGoods, + mainProductCode: mainProductCode, + productCode: productCode.join(","), + }, + }); + }, + + //请求处方量信息数据 + async userchufang(item) { + if (!item) item = this.discounchufang[0].title; + this.dataLoaded = false; + let list = []; + let data = await userque(item, 1, 8); + if (data) { + list = data.slice(0, 8); + this.processinformation = list; + this.chufanlist = data; + this.dataLoaded = true; + } + }, + //点击请求处方量标签信息数据 + async userquery(item) { + this.dataLoaded = false; + let list = []; + let data = await userquery(item); + if (data) { + list = data.slice(0, 8); + this.processinformation = list; + this.dataLoaded = true; + } + }, + //处方用粮筛选 + userclick(item, index) { + this.userchufang(index); + }, + //全价猫干粮筛选 + catclickGan() { + this.userstype = 0; + this.maoganCurIndex = this.maoganCurIndex ? this.maoganCurIndex : 0; + let apiCatAgeType = this.discoun[this.maoshiCurIndex].title; + let petType = { + petType: 0, + tagStatus: 1, //干 + tagUsedAge: apiCatAgeType, + }; + for (let i = 0; i < this.userserachlist.length; i++) { + if (!this.userserachlist.includes(petType)) { + this.userserachlist.push(petType); + } + } + this.catmessage(this.userserachlist, "Gan"); + }, + catclickShi() { + this.userstype = 0; + this.maoshiCurIndex = this.maoshiCurIndex ? this.maoshiCurIndex : 0; + let apiCatAgeType = this.discoun[this.maoshiCurIndex].title; + let petType = { + petType: 0, + tagStatus: 2, //湿 + tagUsedAge: apiCatAgeType, + }; + for (let i = 0; i < this.userserachlist.length; i++) { + if (!this.userserachlist.includes(petType)) { + this.userserachlist.push(petType); + } + } + this.catmessage(this.userserachlist, "Shi"); + }, + userbuy(item) { + let user = localStorage.getItem("userInfo"); + this.courseId(item); + this.$router.push({ + path: "/myorder/userrecord", + }); + }, + + selectGoods(item, index) { + //console.log(item,index); + this.activeIndex = index; + //console.log(item.title); + this.ifadroind(item, index, this.useraindex); + // this.ifAdoid(item,index); + }, + quanshi(item, index) { + this.activeIndex5 = index; + this.userdogShi(); + }, + userdoghot(item, index) { + this.activeIndex6 = index; + this.userdogGan(); + }, + selectGo(item, index) { + this.activeInde2 = index; + }, + selectGoo(item, index) { + this.activeInde3 = index; + }, + }, +}; + \ No newline at end of file diff --git a/rc-busness/pages/productdetails/producted.vue b/rc-busness/pages/productdetails/producted.vue index 8aa6d15c..7680ffb9 100644 --- a/rc-busness/pages/productdetails/producted.vue +++ b/rc-busness/pages/productdetails/producted.vue @@ -15,7 +15,12 @@ rc-border-colour--brand4 " > -
    +
    + +
    +
    -
    +
    立即购买
    @@ -119,6 +124,11 @@ ¥{{ curItem.rsp }} + + 购买该商品你将获得{{curItem.basePoint}}积分 + + +
    @@ -274,7 +284,9 @@ 加入购物车 立即购买
    - +
    + 立即购买 +
    @@ -304,6 +316,7 @@ export default { let newlist = []; let curItem = {}; let chufang = {}; + let videolist=[]; let productAttachmentList = []; let userlistmenu = []; isRxGoods = (isRxGoods == '1'?true:false); @@ -318,7 +331,6 @@ export default { let data = await oncequery(mainProductCode); let outputObj = {}; if (data) { - console.log(data); chufang=data; outputObj = data; outputObj.productName = data.name; @@ -340,6 +352,7 @@ export default { let data = await goodsmessage(singleCode); if (data && data.data.length>0) { newlist.push(data.data[0]); + if(data.data[0].leftAllotment>0 && !stopLeftAllotmentChecking) { activeIndexa = stopIndex; curItem = data.data[0]; @@ -350,6 +363,8 @@ export default { } if(curItem.productAttachmentList != undefined) productAttachmentList = curItem.productAttachmentList; + let list=[]; + if(curItem.productName == undefined) curItem = newlist[0]; userbuy = true; @@ -364,12 +379,14 @@ export default { title: curItem.productName, } ]; + console.log(curItem); return { crumbs, activeIndexa, curItem, newlist, chufang, + videolist, productAttachmentList, userbuy } @@ -380,6 +397,9 @@ export default { userimage: require("../../assets/image/unused.png"), gotop: false, dialogInfo1: false, + videolist:[], + videoimg:'', + videoshow: false, name: [], userlist: [], drawlist: [], //用户可以领取的优惠券 @@ -449,9 +469,23 @@ export default { mounted() { this.checkIsLogin(); + // console.log(this.curItem); if (this.usermessage !== "" || this.usermessage.data !== undefined) { this.usermessage = this.$store.state.userInfo; this.productCode = this.$route.query.productCode; + //video显示 + this.productAttachmentList.map(element=>{ + if(element.attachmentPath.substring(element.attachmentPath.lastIndexOf(".")+1)=='mp4'){ + this.videolist=element.attachmentPath; + } + }) + this.videoimg=this.productAttachmentList[0].attachmentPath; + if(this.videolist.length>0){ + this.videoshow=true + }else{ + this.videoshow=false; + } + /* let stype = this.$route.query.stype; let isRxGoods = this.$route.query.isRxGoods; @@ -508,10 +542,11 @@ export default { async userquery() { let data = await goodsmessage(this.productCode); if (data) { + console.log(data) + debugger this.newlist = data.data; } this.productAttachmentList = this.newlist[0].productAttachmentList; - this.userlistmenu = this.newlist[0].productAttachmentList; let changemess = JSON.stringify(this.userlistmenu); this.changemessage({ data: changemess }); @@ -521,6 +556,8 @@ export default { let data = await oncequery(this.productCode); let outputObj = {}; if (data) { + console.log(data); + debugger outputObj = data; outputObj.productName = data.name; outputObj.picture = 'https://royalcanincn.escase.cn/jc/royalcanin/'+outputObj.picture; diff --git a/rc-busness/pages/userlogin/login.vue b/rc-busness/pages/userlogin/login.vue index 37cdda96..dd302b96 100644 --- a/rc-busness/pages/userlogin/login.vue +++ b/rc-busness/pages/userlogin/login.vue @@ -75,10 +75,10 @@
    @@ -86,18 +86,18 @@
    --> -
    +
    -import { userLongin,sendMsg,vadatnmsg } from "../../ajax/getData"; +import { userLongin,sendMsg,vadatnmsg,userregOrLogin,inserdiscount } from "../../ajax/getData"; import { mapMutations } from "vuex"; import Myheader from "~/components/header.vue"; //引用头部公共组件 export default { @@ -152,6 +152,7 @@ export default { layerMSg: "手机格式不对", tel: "", password: "", + userdata:{}, allcheck:false, activeIndex: 0, tamp:'', @@ -171,9 +172,11 @@ export default { loading: false, usertitle: true, ifpassword: false, + verification:'',//验证码数据 + userislogin:[],//登录成功数据 checked: false, - inRank: false, - inRanka: false, + isRank: false, + isRanka: false, usercheckbox:false, swiperData: [ @@ -221,20 +224,45 @@ export default { // console.log(this.inRank); // }, methods: { + ...mapMutations(["changeClod","checkIsLogin"]), //全选 checkBoxa(e,order){ - let checked=e.target.checked; - console.log(checked) - + let checked=e.target.checked; + console.log(e.target.checked); + // this.isRank=e.target.checked; + // this.isRanka=e.target.checked; + if(order==3){ + this.allcheck=checked; + this.isRank=this.allcheck; + this.isRanka=this.allcheck; + }else if(order==2){ + this.isRank=e.target.checked; + } + else if(order==1){ + this.isRanka=e.target.checked; + } + console.log(this.isRank,this.isRanka); + if(this.isRanka==true && this.isRank==true){ + this.allcheck=true; + }else{ + this.allcheck=false; + } + // console.log(this.isRanka,this.isRank); + this.usercheckbox=this.allcheck; }, - - checkBox(e,order){ - console.log(e.target.checked) - this.usercheckbox=e.target.checked; - this.inRank= this.usercheckbox; - + //获取用户领取的优惠券 + async reglogin() { + let data = await getConfig(memberId, couponId); + let msg = '领取成功'; + if (data) { + if(data.code!='0') + msg = data.msg; + this.$message({ + type: "warning", + message: msg, + }); + } }, - ...mapMutations(["changeClod"]), //获取验证码 async usermsg() { //console.log("-----"); @@ -248,14 +276,35 @@ export default { }, + //添加优惠券 + async serdiscount (mobile,couponId) { + let data = await inserdiscount(mobile,couponId); + if(data){ + console.log(data); + } + //console.log(data); + }, + //发送验证码数据 async vadmsg() { //console.log("-----"); - let data = await vadatnmsg(this.sms,this.hash,this.tamp); + let data = await vadatnmsg(this.sms,this.hash,this.tamp); if(data){ return data; } + }, + //登录成功数据 + async userlogin() { + //console.log("-----"); + let data= await userregOrLogin(this.tel); + if(data){ + this.userislogin=data; + console.log(this.userislogin); + } + }, + + onClickHander(e) { console.log(e); }, @@ -293,11 +342,8 @@ export default { return } else{ - - let time = 60; let timer; - timer = setInterval(() => { time--; if (time === 0) { @@ -327,45 +373,75 @@ export default { }); return } - if(this.usercheckbox==false){ - //console.log('----'); + if(this.usercheckbox==false){ this.$message({ type: 'warning', - message: '请先同意隐私声明和账号使用协议' + message: '请先勾选相关协议' }); + return + } + if(this.usercheckbox==false){ + //console.log('----'); if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(this.tel) || this.tel === "") { this.$message({ type: 'warning', message: '手机号码输入有误' }); + this.$message({ + type: 'warning', + message: '请先同意隐私声明和账号使用协议' + }); return - } } else{ - let data=await this.vadmsg(); + console.log('===') + let data=await this.vadmsg(); if(data.code=="1") { - data = await userLongin(this.tel); - if(data.msg=='SUCCESS'){ - this.$message({ + data = await userregOrLogin(this.tel); + console.log(data); + let token=JSON.stringify(data); + this.changeClod({ cloud: token }); + this.checkIsLogin(); + if(data.type==1){ + if(data.data.memberName===undefined){ + this.$message({ type: 'warning', - message: '登录成功' + message: '欢迎回来' }); + console.log('-----') + } + else{ + this.$message({ + type: 'warning', + message: '欢迎回来'+data.data.memberName + }); + } + }else if(data.type==2){ + this.$message({ + type: 'warning', + message: '恭喜注册成功' + }); + let couponId='0000000123'; + this.serdiscount(this.tel,couponId); + setTimeout(() => { + this.serdiscount(this.tel,"0000000140"); + }, 100); + setTimeout(() => { + this.serdiscount(this.tel,"0000000122"); + }, 500); + } this.$router.push({ path: "/", }); - let token=JSON.stringify(data); - this.changeClod({ cloud: token }); - return; - } - } - this.$message({ + }else{ + this.$message({ type: 'warning', - message: data.msg + message: data.msg, }); - return + } }}, }, }; diff --git a/rc-busness/static/images/banner/pc-weixin.png b/rc-busness/static/images/banner/pc-weixin.png new file mode 100644 index 00000000..ed2d4c10 Binary files /dev/null and b/rc-busness/static/images/banner/pc-weixin.png differ diff --git a/rc-busness/static/images/banner/weixin.png b/rc-busness/static/images/banner/weixin.png new file mode 100644 index 00000000..5340fcf5 Binary files /dev/null and b/rc-busness/static/images/banner/weixin.png differ diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java index e449365b..60772a28 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java @@ -57,7 +57,7 @@ public class MemberService { JSONObject json = JSONObject.parseObject(jsonObjectResult.getString("data")); String id = json.getString("id"); jsonObjectResult.put("xaccessToken", SmartJWTUtil.generateToken(id)); - jsonObject.put("type","2"); + jsonObjectResult.put("type","2"); return jsonObjectResult.toJSONString(); }else { return jsonObjectResult.toJSONString(); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java index 32dba481..b9058627 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/TransitionController.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import net.lab1024.smartadmin.common.anno.OperateLog; -import net.lab1024.smartadmin.common.constant.ResponseCodeConst; import net.lab1024.smartadmin.common.domain.ResponseDTO; import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.constant.SwaggerTagConst; @@ -117,6 +116,8 @@ public class TransitionController { } + + @ApiOperation(value = "会员地址", notes = "查询会员地址,添加会员地址,更新会员地址,删除会员地址") @PostMapping("royalcanin/memberAddress") public String transferMemberAddress(String type ,@RequestBody Object object, HttpServletRequest request) throws Exception { diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java index 04f044c4..22005238 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/OrderController.java @@ -3,6 +3,7 @@ package net.lab1024.smartadmin.module.system.royalcanin.good; import com.alibaba.fastjson.JSONObject; import com.alipay.api.internal.util.AlipaySignature; +import com.beust.jcommander.Parameter; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import net.lab1024.smartadmin.common.anno.OperateLog; @@ -23,17 +24,22 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.service.CartService; import net.lab1024.smartadmin.module.system.royalcanin.good.service.OrderService; import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.OrderDatilListEntity; import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity; +import net.lab1024.smartadmin.module.system.wxpay.MyConfig; import net.lab1024.smartadmin.module.system.wxpay.WxpayService; import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity; import net.lab1024.smartadmin.util.GenerateSequenceUtil; import net.lab1024.smartadmin.util.MapRemoveNullUtil; import net.lab1024.smartadmin.util.SmartHttpUtil; import net.sf.json.JSONArray; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URLEncodedUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.*; @Api(tags = {SwaggerTagConst.Admin.MANAGER_MALL_API}) @@ -128,7 +134,8 @@ public class OrderController { Map returnMap = new HashMap<>(); returnMap.put("orderNumber",ordersEntity.getOrderNo()); returnMap.put("orderAmount",ordersEntity.getOrderAmount()); - return ResponseDTO.succData(returnMap,wxpayService.generateQRCode(wxPayEntity)); +// return ResponseDTO.succData(returnMap,wxpayService.generateQRCode(wxPayEntity)); + return ResponseDTO.succData(returnMap,wxpayService.testGenerateQRCode(wxPayEntity)); } return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL); } @@ -197,7 +204,7 @@ public class OrderController { ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo()); ordersEntity.setOrderStatus("0"); ordersEntity.setBasePoint(basePoint); - + ordersEntity.setPayType("3"); if(orderService.generateOrder(ordersEntity,orderDatilListJson) == 1){ wxPayEntity.setProduct_id(ordersEntity.getProductCode()); @@ -235,6 +242,15 @@ public class OrderController { return ResponseDTO.wrap(OrderResponseCodeConst.WITHOUT_ORDER); } } + @ApiOperation(value = "重定向", notes = "重定向") + @PostMapping("royalcanin/redirectUrlWXH5") + public void redirectUrl(HttpServletRequest request, HttpServletResponse response,@RequestBody String url) throws IOException { + response.addHeader("referer", MyConfig.NOTIFY_URL_H5); + JSONObject jonUrl = JSONObject.parseObject(url); + response.sendRedirect(jonUrl.getString("url")); + + } + @ApiOperation(value = "重新支付(H5)", notes = "重新支付(H5)") @PostMapping("royalcanin/repayOrderWXH5") @@ -269,6 +285,8 @@ public class OrderController { wxpayService.orderCallBack(request,response); } + + @ApiOperation(value = "监听微信回调", notes = "监听微信回调") @PostMapping(value = "royalcanin/monitorOrderNotify") public ResponseDTO monitorOrderNotify(@RequestParam String OrderNumber){ diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java index 2352ff36..7434a4fc 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/OrderService.java @@ -232,6 +232,7 @@ public class OrderService { OrderEntity orderEntity = ordersDao.findByOrderId(queryEntity.getOrderNumber()); //新增支付方式paytype jsonObjectResult.put("paytype",orderEntity.getPayType()); + jsonObjectResult.put("basePoint",orderEntity.getBasePoint()); } //记录服务响应时间 diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/orderMaster/QueryEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/orderMaster/QueryEntity.java index 61bf8212..6dd6779c 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/orderMaster/QueryEntity.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/orderMaster/QueryEntity.java @@ -13,4 +13,8 @@ public class QueryEntity { private String phoneNumber; + private String page; + + private String rows; + } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java index 293e7d92..6af36a4d 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayService.java @@ -1,7 +1,6 @@ package net.lab1024.smartadmin.module.system.wxpay; import com.alibaba.fastjson.JSONObject; -import com.aliyun.oss.internal.SignUtils; import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.module.system.royalcanin.MemberAccountService; import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity; @@ -10,7 +9,6 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.service.OrderService import net.lab1024.smartadmin.module.system.royalcanin.memberAccount.MemberAccountChangeEntity; import net.lab1024.smartadmin.module.system.royalcanin.notify.model.NotifyEntity; import net.lab1024.smartadmin.module.system.royalcanin.notify.service.NotifyService; -import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity; import net.lab1024.smartadmin.module.system.wxpay.sdk.WXPay; import net.lab1024.smartadmin.module.system.wxpay.sdk.WXPayUtil; import net.lab1024.smartadmin.module.system.wxpay.wxPayModel.WxPayEntity; @@ -28,6 +26,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.Inet4Address; import java.net.InetAddress; +import java.net.URLEncoder; import java.util.*; @Service @@ -49,6 +48,27 @@ public class WxpayService { String url = "https://miniapp-test.royalcanin.com.cn/rcmini/h5/"; + private String urlNative = "https://api.mch.weixin.qq.com/v3/pay/transactions/native"; + + public String testGenerateQRCode(WxPayEntity wxPayEntity)throws Exception{ + String Authorization = "WECHATPAY2-SHA256-RSA2048"; + long timestamp = System.currentTimeMillis(); + SortedMap data = new TreeMap<>(); + SortedMap amount = new TreeMap<>(); + amount.put("total",Integer.parseInt(getMoney(wxPayEntity.getTotal_fee()))); + data.put("out_trade_no",wxPayEntity.getOut_trade_no()); + data.put("notify_url",config.notify_url); + data.put("description","皇家宠物食品官方商城"); + data.put("appid",config.getAppID()); + data.put("mchid",config.getMchID()); + net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(data); + jsonObject.put("amount",amount); + SortedMaphearder = new TreeMap<>(); + hearder.put("Accept","application/json"); + hearder.put("Authorization",Authorization +" mchid="+config.getMchID() +",nonce_str=" + WXPayUtil.generateNonceStr() + ",timestamp=" + timestamp + ",signature=" + WXPayUtil.generateSignature(data, config.getKey()) + ",serial_no=" + config.getKey()); + String sb = SmartHttpUtil.httpPostRaw(urlNative,jsonObject.toString(),hearder,"utf-8"); + return sb; + } @@ -176,7 +196,7 @@ public class WxpayService { data.put("fee_type","CNY"); data.put("total_fee",getMoney(wxPayEntity.getTotal_fee())); data.put("spbill_create_ip", SmartIPUtil.getLocalHostIP()); - data.put("trade_type", "MWEB"); // 此处指定为扫码支付 + data.put("trade_type", "MWEB"); // 此处指定为H5支付 data.put("body","皇家宠物食品官方商城"); data.put("nonce_str", WXPayUtil.generateNonceStr()); data.put("product_id",wxPayEntity.getProduct_id()); @@ -190,7 +210,7 @@ public class WxpayService { if (returnCode.equals("SUCCESS")) { returnMap.put("ok", "200"); //拼接返回跳转地址 - String url= config.NOTIFY_URL_H5+"orderNumber="+wxPayEntity.getOut_trade_no() ; + String url= config.NOTIFY_URL_H5+"/myorder/usertion?orderNumber="+wxPayEntity.getOut_trade_no() + "&tradeType=MWEB"; returnMap.put("url", response.get("mweb_url")+"&redirect_url="+url); return response.get("mweb_url") == null ? response.get("err_code_des"):returnMap.get("url"); } else { diff --git a/smart-admin-service/smart-admin-api/src/main/resources/static/44_1.jpg b/smart-admin-service/smart-admin-api/src/main/resources/static/44_1.jpg new file mode 100644 index 00000000..110a32a7 Binary files /dev/null and b/smart-admin-service/smart-admin-api/src/main/resources/static/44_1.jpg differ diff --git a/smart-admin-service/smart-admin-api/src/main/resources/static/44_2.jpg b/smart-admin-service/smart-admin-api/src/main/resources/static/44_2.jpg new file mode 100644 index 00000000..1b1c7590 Binary files /dev/null and b/smart-admin-service/smart-admin-api/src/main/resources/static/44_2.jpg differ diff --git a/smart-admin-service/smart-admin-api/src/main/resources/static/45_1.jpg b/smart-admin-service/smart-admin-api/src/main/resources/static/45_1.jpg new file mode 100644 index 00000000..ae7887e3 Binary files /dev/null and b/smart-admin-service/smart-admin-api/src/main/resources/static/45_1.jpg differ diff --git a/smart-admin-service/smart-admin-api/src/main/resources/static/45_2.jpg b/smart-admin-service/smart-admin-api/src/main/resources/static/45_2.jpg new file mode 100644 index 00000000..710de043 Binary files /dev/null and b/smart-admin-service/smart-admin-api/src/main/resources/static/45_2.jpg differ