Merge branch 'sit-Carl' into sit-jiamin-v2

This commit is contained in:
952108534@qq.com 2022-01-25 15:07:21 +08:00
commit 924738c8b6
21 changed files with 238 additions and 99 deletions

View File

@ -91,7 +91,6 @@ export const monitorOrderNotify = (OrderNumber) => {
* 删除购物车
*/
export const deleteCart = ( productCode) => {
debugger;
var data = {
productCode
}

View File

@ -328,7 +328,7 @@ picture {
height: auto;
position: fixed;
right: 0;
top: 40%;
top: 56vh;
background: #FFFFFF;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.16);
border-radius: .25rem;

View File

@ -341,6 +341,7 @@ border-radius: 100px;
font-size: 18px;
color: #333333;
font-weight: bold;
margin-top:1rem;
}
.ts-scrollable{
margin-top: 1rem;

View File

@ -34,7 +34,7 @@
</i>
<span>
{{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}}
{{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }}
</span>
</div>
<strong>{{ item.couponName }}</strong>

View File

@ -426,7 +426,7 @@ ul li ol li em strong i {
display: flex;
justify-content: flex-end;
flex-direction: column;
align-items: self-end;
align-items: flex-end;
text-align: right;
i {
font-style: normal;
@ -440,7 +440,7 @@ ul li ol li em strong i {
color: #e1001a;
font-size: 26px;
display:inline-block;
width:5rem;
min-width:6rem;
}
.discountInfo {

View File

@ -52,7 +52,7 @@
<div class="rc-userbottom">
<p>{{ item.productPrice }}</p>
<p>X{{ item.buyCount }}</p>
<p class="price">{{ item.productPrice }}</p>
<p class="price">{{ item.productPrice * item.buyCount }}</p>
</div>
</div>
</div>
@ -93,7 +93,7 @@
<em>{{ discountAmount }}</em>
</div>
<i>合计金额:</i>
<em>{{ discountedSumPrice }}</em>
<em>{{ finalAmount }}</em>
</div>
<div style="font-weight: bold">
<span @click="preJiesuan()">提交订单</span>
@ -167,7 +167,7 @@
</i>
<span>
{{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}}
{{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }}
</span>
</div>
<strong>{{ item.couponName }}</strong>
@ -251,7 +251,9 @@ export default {
promotion: "¥167.00",
payment: "¥0.00 ",
},
discountAmount:0
discountAmount:0,
finalAmount:0,
discountedProductCode:undefined,
};
},
computed: {
@ -261,12 +263,46 @@ export default {
}, 0);
},
//
},
methods: {
...mapMutations(["checkIsLogin"]),
discountedSumPrice() {
let total = 0;
if(this.curCoupon.couponId) {
//Coupon Calculation
let couponUsed=false;
for(let itemInCart of this.goldmedal) {
if(this.curCoupon.productCodes)
this.finalAmount = this.qualifiedProductDiscount();
else
this.finalAmount = this.wholeOrderDiscount();
this.finalAmount = parseFloat(this.finalAmount).toFixed(2);
this.discountAmount = parseFloat(this.discountAmount).toFixed(2);
},
wholeOrderDiscount(){
this.discountedItemIndex = 0;
let checkResult = true;
if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) {
checkResult = false;
}
if(this.curCoupon.couponAmount && this.curCoupon.couponAmount > this.sumPrice) {
checkResult = false;
}
if(checkResult) {
if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) {
this.discountAmount = this.curCoupon.couponAmount;
return this.sumPrice - this.curCoupon.couponAmount;
} else if(this.curCoupon.discount && this.curCoupon.discount>0) {
this.discountAmount = this.sumPrice*this.curCoupon.discount;
return this.sumPrice * (1-this.curCoupon.discount);
}
} else {
return this.sumPrice;
}
},
qualifiedProductDiscount(){
this.discountedItemIndex = 0;
let total = 0;
let couponUsed = false;
let tmpShoppingCartList = this.arrSort(this.goldmedal);
for(let itemInCart of tmpShoppingCartList) {
if((!this.curCoupon.productCodes || this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) && !couponUsed) {
if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) {
//Check minQuantity
@ -280,18 +316,21 @@ export default {
case 1: //Amount deduct
total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount);
this.discountAmount = this.curCoupon.couponAmount;
this.discountedProductCode = itemInCart.productCode;
couponUsed=true;
break;
case 2: //Amount deduct with minPrice restriction
case 6:
total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount;
this.discountAmount = this.curCoupon.couponAmount;
this.discountedProductCode = itemInCart.productCode;
couponUsed=true;
break;
case 3: //Limited product % discount
case 4: //% discount
total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount;
this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount);
this.discountedProductCode = itemInCart.productCode;
couponUsed=true;
break;
default:
@ -304,22 +343,21 @@ export default {
total += itemInCart.productPrice * itemInCart.buyCount;
}
}
} else {
//Normal Calculation
total=this.goldmedal.reduce((pre, cur) => {
return pre + cur.buyCount * cur.productPrice;
}, 0);
}
if(this.discountAmount)
this.discountAmount = this.discountAmount.toFixed(2);
if(!total)
total=0;
total = total.toFixed(2);
return total;
},
arrSort(arr) {
let userarr=[]
let a=[];
for(let i in arr){
arr[i].total=arr[i].productPrice*arr[i].buyCount;
if(arr[i].total){
userarr.push(arr[i]);
}
}
return userarr.sort((n1,n2)=>{
return n2.total-n1.total;
});
},
methods: {
...mapMutations(["checkIsLogin"]),
async getAddressList() {
let memberId = JSON.parse(localStorage.getItem("userInfo")).data.id;
let { data } = await memberAddress("getAll", { memberId: memberId });
@ -351,9 +389,11 @@ export default {
let valDateFromTime=0;
let valDateToTime=0;
let dateChecked=true;
if (data) {
this.drawlist=[];
for(let itemInCart of this.goldmedal) {
let tmpIndex=0;
for(let myCoupon of data.data) {
valDateFromTime=0;
valDateToTime=0;
@ -370,9 +410,18 @@ export default {
if(valDateToTime && curTime > valDateToTime) {
dateChecked=false;
}
if(dateChecked && myCoupon.status == 0 && (myCoupon.productCodes.indexOf(itemInCart.productCode)>-1 || !myCoupon.productCodes)) {
if(myCoupon.minQuantity && myCoupon.minQuantity>itemInCart.buyCount) {
dateChecked=false;
}
if(myCoupon.minPrice && myCoupon.minPrice>this.sumPrice) {
dateChecked=false;
}
if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (!myCoupon.productCodes || myCoupon.productCodes.indexOf(itemInCart.productCode)>-1)) {
data.data.splice(tmpIndex,1);
_self.drawlist.push(myCoupon);
}
tmpIndex++;
}
}
}
@ -380,6 +429,7 @@ export default {
pickCoupon(item){
this.curCoupon = item;
this.dialogInfo1 = false;
this.discountedSumPrice();
},
editAddress(item) {
this.dialogAddTitle = "修改收货地址";
@ -459,6 +509,7 @@ export default {
return;
}
let postData = [];
let tmpCounter=0;
this.goldmedal.forEach((item) => {
let basePoint = (item.basePoint?item.basePoint:0);
let oneProduct = {
@ -483,7 +534,7 @@ export default {
addressDetailInfo: orderAddress[0].detailAddress,
},
};
if(this.curCoupon.couponId) {
if(this.curCoupon.couponId && item.productCode == this.discountedProductCode) {
oneProduct.couponId = this.curCoupon.couponId;
oneProduct.couponTypeId = this.curCoupon.couponTypeId;
oneProduct.couponName = this.curCoupon.couponName;
@ -491,6 +542,7 @@ export default {
oneProduct.couponAmount = (this.curCoupon.couponAmount?this.curCoupon.couponAmount:this.curCoupon.discount);
}
postData.push(oneProduct);
tmpCounter++;
});
// let postData = [
// {
@ -570,6 +622,7 @@ export default {
this.goldmedal = JSON.parse(this.$route.query.list);
this.getAddressList();
this.checkIsLogin();
this.finalAmount = this.sumPrice;
// this.addressstype = this.$route.query.stype;
// this.orderNumber = this.$route.query.orderNumber;
// this.canceldanhao(this.orderNumber);

View File

@ -64,7 +64,9 @@
<p>您的商品我们正在抓紧打包请耐心等候</p>
<div class="line_dashed"></div>
<div class="userer">
<div class="qrcode"><vue-qr :text="qrtext" :size="260"></vue-qr></div>
<div class="qrcode">
<img src="/images/qrcode-aichong.jpg">
</div>
<p>微信扫一扫识别二维码</p>
<p class="tips">加入社群0元试用商品随单发放</p>
</div>
@ -94,7 +96,7 @@ export default {
activeIndex: 0,
paymentTimer:undefined,
isSucess: false,
dialogSuccess: false,
dialogSuccess: true,
paytype: "微信",
userpaystype: [
{

View File

@ -4,7 +4,7 @@
<Myheader></Myheader>
<div class="rc-top"></div>
<tabs :crumbs="crumbs"></tabs>
<div class="online" id="fixed-catbar-seperator rc-margin--none"></div>
<div class="online rc-margin--none" id="fixed-catbar-seperator"></div>
<div class="rc-top"></div>
<div
class="
@ -187,7 +187,7 @@
<li>
<span
><i class="ts-row-title">商品编号</i
><i>{{ curItem.brandCode }}</i></span
><i>{{ curItem.productCode }}</i></span
>
</li>
</ul>
@ -224,7 +224,7 @@
</i>
<span>
{{item.couponTypeId=='4'?parseInt(((item.discount)*10))+'折':item.couponAmount}}
{{ item.couponAmount?item.couponAmount:(parseInt((item.discount)*10)+'折') }}
</span>
</div>
<strong>{{ item.couponName }}</strong>
@ -551,13 +551,13 @@ export default {
if(valDateToTime && curTime > valDateToTime) {
dateChecked=false;
}
if(dateChecked) {
if(dateChecked && item.activityId!=10) {
if(!item.productCodes) {
menualist.push(item);
} else {
item.productCodes = item.productCodes.split(",");
item.productCodes.forEach((element) => {
if (element == this.curItem.productCode && item.activityId !== 10) {
if (element == this.curItem.productCode) {
menualist.push(item);
}
});
@ -593,6 +593,8 @@ export default {
// let userid=JSON.parse(location.getItem('userInfo'));
// let mobile=JSON.parse(location.getItem('userInfo'));
// console.log(userid,mobile);
let basePoint = item.basePoint;
basePoint = basePoint?basePoint:0;
let data = await postCourseId(
item.productCode,
this.sales_num,
@ -603,7 +605,7 @@ export default {
item.ecPrice,
item.specifications,
item.leftAllotment,
item.basePoint
basePoint
);
if (data) {
this.productlist = data;
@ -655,7 +657,7 @@ export default {
this.dialogInfo2 = true;
return;
} else {
this.userdraw(this.usermessage.data.mobile);
//this.userdraw(this.usermessage.data.mobile);
this.alldrawlist(this.usermessage.data.id);
this.dialogInfo1 = true;
}

View File

@ -110,7 +110,7 @@
</div>
<div class="rc-column">
<div class="rc-click" @click="selectproduce(item)">
<span>{{ item.categoryName }}</span>
<span>{{ item.name }}</span>
<i>{{ item.ecPrice?("¥"+item.ecPrice):'' }}</i>
</div>
<strong

View File

@ -44,6 +44,7 @@ public class ResponseDTO<T> {
this.success = responseCodeConst.isSuccess();
}
private ResponseDTO(ResponseCodeConst responseCodeConst) {
this.code = responseCodeConst.getCode();
this.msg = responseCodeConst.getMsg();
@ -64,6 +65,8 @@ public class ResponseDTO<T> {
return new ResponseDTO(ResponseCodeConst.SUCCESS, data, msg);
}
public static <T> ResponseDTO<T> succData(T data) {
return new ResponseDTO(ResponseCodeConst.SUCCESS, data);
}

View File

@ -12,6 +12,8 @@ import net.lab1024.smartadmin.constant.SwaggerTagConst;
import net.lab1024.smartadmin.module.system.alipay.AliPayService;
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
import net.lab1024.smartadmin.module.system.royalcanin.CouponService;
import net.lab1024.smartadmin.module.system.royalcanin.coupon.CouponGetAllEntity;
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderAddress;
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity;
@ -51,10 +53,13 @@ public class OrderController {
@Autowired
private CartService cartService;
@Autowired
private CouponService couponService;
@ApiOperation(value = "微信支付订单", notes = "生成订单")
@PostMapping("royalcanin/generateOrderWX")
public ResponseDTO<String> generateOrderWX(@RequestBody List<OrdersEntity> ordersEntityList) throws Exception {
public ResponseDTO<Map<String, String>> generateOrderWX(@RequestBody List<OrdersEntity> ordersEntityList) throws Exception {
StringBuffer productId = new StringBuffer();
StringBuffer productName = new StringBuffer();
String memberId = "";
@ -76,10 +81,18 @@ public class OrderController {
orderDatilListEntity.setEcPrice(ordersEntitys.getPayAmount());
orderDatilListJson.add(orderDatilListEntity);
if(ordersEntitys.getCouponCode() != "" && ordersEntitys.getCouponCode() != null) {
ordersEntity.setCouponAmount(ordersEntitys.getCouponAmount());
ordersEntity.setCouponCode(ordersEntitys.getCouponCode());
ordersEntity.setCouponName(ordersEntitys.getCouponName());
ordersEntity.setCouponId(ordersEntitys.getCouponId());
CouponGetAllEntity couponGetAllEntity = new CouponGetAllEntity ();
couponGetAllEntity.setMemberId(ordersEntitys.getMemberId());
couponGetAllEntity.setCouponCode(ordersEntitys.getCouponCode());
String couponInfo = couponService.couponGetAll(couponGetAllEntity);
JSONObject jsonObject = JSONObject.parseObject(couponInfo);
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
JSONObject jsonObjectData = (JSONObject)jsonArray.get(0);
ordersEntity.setCouponAmount(jsonObjectData.getString("couponAmount") == null ?jsonObjectData.getString("discount"):jsonObjectData.getString("couponAmount"));
ordersEntity.setCouponCode(jsonObjectData.getString("couponCode"));
ordersEntity.setCouponName(jsonObjectData.getString("couponName"));
ordersEntity.setCouponId(jsonObjectData.getString("couponId"));
total_fee = total_fee + orderService.couponTotal(ordersEntitys.getCouponTypeId(),Double.parseDouble(ordersEntitys.getCouponAmount()),Double.parseDouble(ordersEntitys.getPayAmount()),ordersEntitys.getBuyCount());
}else{
total_fee = total_fee + Double.parseDouble(ordersEntitys.getPayAmount()) * ordersEntitys.getBuyCount() ;
@ -112,7 +125,10 @@ public class OrderController {
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
return ResponseDTO.succData(ordersEntity.getOrderNo(),wxpayService.generateQRCode(wxPayEntity));
Map<String, String> returnMap = new HashMap<>();
returnMap.put("orderNumber",ordersEntity.getOrderNo());
returnMap.put("orderAmount",ordersEntity.getOrderAmount());
return ResponseDTO.succData(returnMap,wxpayService.generateQRCode(wxPayEntity));
}
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL);
}
@ -171,7 +187,6 @@ public class OrderController {
ordersEntity.setBuyCount(buyCount);
ordersEntity.setOrderNo(GenerateSequenceUtil.generateSequenceNo());
ordersEntity.setOrderStatus("0");
if(orderService.generateOrder(ordersEntity,orderDatilListJson) == 1){
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
wxPayEntity.setTotal_fee(StringUtil.toString(total_fee));
@ -252,7 +267,7 @@ public class OrderController {
AliPayEntity aliPayEntity = new AliPayEntity();
ordersEntity.setPayType("2");
ordersEntity.setOrderStatus("0");
if (orderService.updateOrder(ordersEntity) == 1) {
if (orderService.updateOrder(ordersEntity.getOrderNo()) == 1) {
aliPayEntity.setProduct_code(ordersEntity.getProductCode());
aliPayEntity.setTotal_amount(ordersEntity.getOrderAmount());
aliPayEntity.setOut_trade_no(ordersEntity.getOrderNo());

View File

@ -22,4 +22,6 @@ public interface OrdersDao extends BaseMapper<OrderEntity> {
Integer cancelOrder(String out_trade_no);
int updateByOrderNumber (@Param("orderNumber")String orderNumber);
}

View File

@ -41,6 +41,6 @@ public class OrdersEntity {
private OrderAddress orderAddress;
private Double basePoint;
private Double basePoint = 0.0;
}

View File

@ -281,7 +281,7 @@ public class OrderService {
}
public int updateOrder(OrderEntity orderEntity){
return ordersDao.updateById(orderEntity);
public int updateOrder(String orderNumber){
return ordersDao.updateByOrderNumber(orderNumber);
}
}

View File

@ -11,8 +11,8 @@ import java.io.*;
@Component
public class MyConfig implements WXPayConfig {
// private String path ="C:/Users/Administrator/IdeaProjects/smart-admin/smart-admin-service/smart-admin-api/src/main/resources/wxpay/";
private String path ="/home/royalcanin-dev/cert/";
// private String path ="C:/Users/Administrator/IdeaProjects/smart-admin/smart-admin-service/smart-admin-api/src/main/resources/wxpay/pro/";
private String path ="/home/royalcanin-dev/cert/pro/";
// public String notify_url = "http://47.96.75.242:10086/smart-admin-api/royalcanin/updateOrderWX";
@ -34,18 +34,22 @@ public class MyConfig implements WXPayConfig {
certStream.close();
}
public String getAppID() {
return "wx3c51c14272f63a64";
return "wxa9a0ae603bbe6ceb";
}
//wxa9a0ae603bbe6ceb
//wx3c51c14272f63a64
// public String getMchID() {
// return "16717629989";
// }
public String getMchID() {
return "1315161001";
return "1523977801";
}
// 16717629989
//1315161001
public String getKey() {
return "b69497999e8fd1f8f1f0a9591b24eb72";
return "indexphpcorecertapicert201903200";
}
//indexphpcorecertapicert201903200
//b69497999e8fd1f8f1f0a9591b24eb72
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);

View File

@ -1,6 +1,7 @@
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;

View File

@ -15,7 +15,7 @@ public class SmartJWTUtil {
/**
* 过期时间一天
*/
private static final int EXPIRE_SECONDS = 1 * 24 * 3600;
private static final int EXPIRE_SECONDS = 365 * 24 * 3600;
/**
* jwt加密字段
*/
@ -78,7 +78,7 @@ public class SmartJWTUtil {
}
public static void main(String[] args) {
String token = SmartJWTUtil.generateToken("884127");
String token = SmartJWTUtil.generateToken("884159");
System.out.println(token);
System.out.println(SmartJWTUtil.decodeToken(token));
}

View File

@ -22,4 +22,10 @@
</update>
<update id="updateByOrderNumber" >
update t_good_orders
set pay_type ='2'
where order_no = #{orderNumber}
</update>
</mapper>

View File

@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID6TCCAtGgAwIBAgIUMO4qJG/XR9oQeHQphVQ7usz5/0YwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjIwMTI0MDgxMTA3WhcNMjcwMTIzMDgxMTA3WjB7MRMwEQYDVQQDDAox
NTIzOTc3ODAxMRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM
HuS4iua1t+aHi+avheWVhui0uOaciemZkOWFrOWPuDELMAkGA1UEBgwCQ04xETAP
BgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
yRnwfm/9lHyq16cAJjx8/7x9WQF+/mKry6MvJIquaXUXBQKDO3d4deBLq8By7dXD
xi7S7bPFeUkjXhgxs/WD15xyzNZj4qpKmXuEaFi0g1VLNUs3RmlWaR9OX0On+G2X
vj4Zw1bi7sbefA1UrgNB7CH6nAaIVVWDdggxnUeX18F1y7BUBjPBh64Trbi0n011
U/m738gyH37tfcSZCMM7aBO4/8BqRmRmNr58Owci8ee7G2yybGbRyVpT/3Y7cWLt
k4pyOavIjpmaIo/CPbwMC5hOR4fxwyZUaTpyZh7foQFytz05UHvxp35hKZLnxI2d
U+0wtymYYxTFGe6BngVHVwIDAQABo4GBMH8wCQYDVR0TBAIwADALBgNVHQ8EBAMC
BPAwZQYDVR0fBF4wXDBaoFigVoZUaHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1
YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMw
MUMzRThFQkQyMA0GCSqGSIb3DQEBCwUAA4IBAQCOhr56rhhVqckEiN63f1JHD+SG
4DRLCkcJ5oon2EvKOxCKFW9sqcggjtoF3R5ZQe8TwpGl/Pp7t0tbcpor9Gpr3V75
fkkCsvotCaB3Hbpw/VzXP96848cQ8B/QtU+7oLCkCnakXeorgf/cLN/IlZ8ZAb5B
R7ZEf8qthobPqAygrk1ZLmRNKzEMD+kWaFvffkYGeGP1chZPqevb4sS0BlckBaP/
xeeU7R9Y5p5FANzIDCmHoFxqsrGLnF7Dh+bQSPSnG/rZjXnCYJFG6Jp/VvXP6enh
5fpVimiUe/62aP6XkKLSm1sX9b86GuTaAl58n78oocNa/XBcKNJNa/3A37bW
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDJGfB+b/2UfKrX
pwAmPHz/vH1ZAX7+YqvLoy8kiq5pdRcFAoM7d3h14EurwHLt1cPGLtLts8V5SSNe
GDGz9YPXnHLM1mPiqkqZe4RoWLSDVUs1SzdGaVZpH05fQ6f4bZe+PhnDVuLuxt58
DVSuA0HsIfqcBohVVYN2CDGdR5fXwXXLsFQGM8GHrhOtuLSfTXVT+bvfyDIffu19
xJkIwztoE7j/wGpGZGY2vnw7ByLx57sbbLJsZtHJWlP/djtxYu2TinI5q8iOmZoi
j8I9vAwLmE5Hh/HDJlRpOnJmHt+hAXK3PTlQe/GnfmEpkufEjZ1T7TC3KZhjFMUZ
7oGeBUdXAgMBAAECggEBAKmjzA+cgRjlIWjRY3rdw8QnSMXwUSReL/WULoxwwDgN
oeGEARgE7ATjtHGp4klm7cMcdKo33/k0DTWuyx63mQQk4WKR56ipZkyauVMcoQm4
xbyrOnGXImGDGyWZePRD3qGI2UrC3KP39m5HAIvaC54Z+8HqcM8rV74Vo2S9pAVH
mhdH9VC5tnp2cBnOh8UyhIYmqAj/SXSk5Becq2IoYG8r5vojvohtxL/w5hbEfBnz
VhjZo82t0hhFGHfFJHw/3D2JjGdYI8QTxTZ78pMb0uK5XsJtxdQFKf5jS4XopJ5k
2h/YtAHxFv6K1cqyAaS3ZoyYGTOWy+eQrycGm62nNqECgYEA6UMsK8t/eS4NE1rK
capEufddSDzUr2C34ZLxZgXXOpLEdbvvADlCVqqT0/N682xxeM0iK+HVHRpmbzE9
v0MKPeMuRJ14aoiQEdGhDwEWgkyZr3GGdkgsIxO3/x9TNBK4F9pxZPFLSvkNDscO
75A2CBtB18gm6yAHkr+UQRlpXpsCgYEA3LQ4Tfme2xD6sa0WE+SFGk4hW/wfMawi
C1v5xJEjmI2ucKw3i19fKT+3a1LHY47ytjNS0hRQUoEYO0iEe1wO9t1TExmreLar
mUW4jcnoLEUBBYHfu6vTbyoRePUXhtk9jb2cFEMpDXI3qNwGN+2LTRz3Q1G8T+D9
kdHHGLF+h/UCgYB1GH5dAcvdBiwUMjh8NNBJVo7iS38tBu1n9H7wCzCPO8wZmh0R
TK0rmneZJ5nqBt8zmC52PujfsjgHy31GvR2wEZJRaYdgW2uPNl+Wi6JECLYBp4ir
afGWLjjofk4jTt5RQxw3YxW77igK6gxqYEdvbFdyPgyjbbG/jiKbR2lozwKBgQCU
PwXW8oYO1e/eqsm6oPP7AGIN/GMjpWDUynoR2//R99ElY7iHiI9OELtufpLpv9ou
InlOHVD6qjYRlBtRFTwD/BRSLxrroZ/P+3IE44ttOQh/n4Yd9EO4VsSXv+GGtaNP
8v3E6nvHyWGzrd8LcCbyrDM2Z8+axCDu8r7OSmMYhQKBgQDa3hTeI/sV72kH+8vz
GaTbQBtuxI34sKOxdsp7vR2IfTJjOPhTHgxCnISUaHFvgnYpmNgSZbLBMasIWouz
9NbU+lEwGBXKcNbCKQaWut7z3CArsV5j/9kKQrBwXWVsFNgKYwO0Md7aEKtcruLN
WjetT3R9CLwHFB2H+K3Mi0+5JA==
-----END PRIVATE KEY-----