|
@@ -7,8 +7,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.miaxis.common.utils.DateUtils;
|
|
|
+import com.miaxis.newgzpt.domain.GzptSchActivation;
|
|
|
+import com.miaxis.newgzpt.domain.GzptSchPayConfig;
|
|
|
+import com.miaxis.newgzpt.domain.GzptSchPayLog;
|
|
|
+import com.miaxis.newgzpt.domain.GzptUserInfo;
|
|
|
+import com.miaxis.newgzpt.service.IGzptSchActivationService;
|
|
|
+import com.miaxis.newgzpt.service.IGzptSchPayConfigService;
|
|
|
+import com.miaxis.newgzpt.service.IGzptSchPayLogService;
|
|
|
+import com.miaxis.newgzpt.service.IGzptUserInfoService;
|
|
|
import com.miaxis.userInfo.domain.UserVip;
|
|
|
import com.miaxis.userInfo.service.IUserVipService;
|
|
|
+import com.miaxis.wx.domain.WxJsOrder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -30,6 +39,15 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
@Autowired
|
|
|
private IUserVipService userVipService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IGzptUserInfoService userInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGzptSchActivationService schActivationService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGzptSchPayLogService schPayLogService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询订单信息列表
|
|
|
*
|
|
@@ -46,22 +64,54 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
return orderInfoMapper.getByOutTradeNo(outTradeNo);
|
|
|
}
|
|
|
|
|
|
- public void writeVipDataToDb1(String goodsName, Long userId, String userName, String outTrandeNo, Integer total, Integer payType) {
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void writeVipDataToDb(WxJsOrder order,int payType) {
|
|
|
long oneYearLong = 1000 * 60 * 60 * 24 * 365l;
|
|
|
Date now = new Date();
|
|
|
|
|
|
+ GzptUserInfo gzptUserInfo = userInfoService.getInfoById(order.getUserId());
|
|
|
OrderInfo orderInfo = new OrderInfo();
|
|
|
- orderInfo.setGoodsName(goodsName);
|
|
|
- orderInfo.setUserId(userId);
|
|
|
- orderInfo.setOutTradeNo(outTrandeNo);
|
|
|
- orderInfo.setTotal(total);
|
|
|
+ orderInfo.setGoodsName(order.getGoodsName());
|
|
|
+ orderInfo.setUserId(order.getUserId());
|
|
|
+ orderInfo.setOutTradeNo(order.getOutTradeNo());
|
|
|
+ orderInfo.setTotal(order.getTotal());
|
|
|
orderInfo.setTradeType(1);
|
|
|
orderInfo.setSuccessTime(now);
|
|
|
orderInfo.setPayType(payType);
|
|
|
+ orderInfo.setDqbh(order.getDqbh());
|
|
|
+ orderInfo.setDqmc(order.getDqmc());
|
|
|
+ orderInfo.setIsShare(order.getIsShare());
|
|
|
+ orderInfo.setSchool(order.getSchool());
|
|
|
+ orderInfo.setSchoolName(order.getSchoolName());
|
|
|
+ orderInfo.setSchoolCommission(order.getSchoolCommission());
|
|
|
+ orderInfo.setPhoneType(order.getPhoneType());
|
|
|
|
|
|
|
|
|
- if ("科一专项VIP".equals(goodsName)) {
|
|
|
- UserVip userVip = userVipService.getUserVipByUserId(userId);
|
|
|
+ if("理论计时".equals(orderInfo.getGoodsName())) {
|
|
|
+ //激活操作
|
|
|
+ GzptSchActivation schActivation = new GzptSchActivation();
|
|
|
+ schActivation.setDqbh(order.getDqbh());
|
|
|
+ schActivation.setDqmc(order.getDqmc());
|
|
|
+ schActivation.setJxbh(order.getSchool());
|
|
|
+ schActivation.setJxmc(order.getSchoolName());
|
|
|
+ schActivation.setUserId(order.getUserId());
|
|
|
+ schActivation.setStuId(gzptUserInfo.getOutId());
|
|
|
+ schActivation.setCrtime(new Date());
|
|
|
+ schActivationService.saveSchActivation(schActivation);
|
|
|
+
|
|
|
+ GzptSchPayLog gzptSchPayLog = new GzptSchPayLog();
|
|
|
+ gzptSchPayLog.setStuId(gzptUserInfo.getOutId());
|
|
|
+ gzptSchPayLog.setDqbh(order.getDqbh());
|
|
|
+ gzptSchPayLog.setPrice(order.getTotal());
|
|
|
+ gzptSchPayLog.setJxbh(order.getSchool());
|
|
|
+ gzptSchPayLog.setCrtime(new Date());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ } else if ("科一专项VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
if (userVip != null) {
|
|
|
//修改会员信息
|
|
|
Date km1Date = userVip.getSubject1();
|
|
@@ -87,8 +137,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
} else {
|
|
|
//新增会员信息
|
|
|
UserVip uv = new UserVip();
|
|
|
- uv.setUserId(userId);
|
|
|
- uv.setUserName(userName);
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
long x = now.getTime() + oneYearLong;
|
|
|
Date km1oneYear = new Date(x);
|
|
|
uv.setSubject1(km1oneYear);
|
|
@@ -96,8 +146,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
this.save(orderInfo);
|
|
|
}
|
|
|
|
|
|
- } else if ("科二专项VIP".equals(goodsName)) {
|
|
|
- UserVip userVip = userVipService.getUserVipByUserId(userId);
|
|
|
+ } else if ("科二专项VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
if (userVip != null) {
|
|
|
//修改会员信息
|
|
|
Date km2Date = userVip.getSubject2();
|
|
@@ -123,16 +173,16 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
} else {
|
|
|
//新增会员信息
|
|
|
UserVip uv = new UserVip();
|
|
|
- uv.setUserId(userId);
|
|
|
- uv.setUserName(userName);
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
long x = now.getTime() + oneYearLong;
|
|
|
Date km2oneYear = new Date(x);
|
|
|
uv.setSubject2(km2oneYear);
|
|
|
userVipService.save(uv);
|
|
|
this.save(orderInfo);
|
|
|
}
|
|
|
- } else if ("科三专项VIP".equals(goodsName)) {
|
|
|
- UserVip userVip = userVipService.getUserVipByUserId(userId);
|
|
|
+ } else if ("科三专项VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
if (userVip != null) {
|
|
|
//修改会员信息
|
|
|
Date km3Date = userVip.getSubject3();
|
|
@@ -158,8 +208,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
} else {
|
|
|
//新增会员信息
|
|
|
UserVip uv = new UserVip();
|
|
|
- uv.setUserId(userId);
|
|
|
- uv.setUserName(userName);
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
long x = now.getTime() + oneYearLong;
|
|
|
Date km3oneYear = new Date(x);
|
|
|
uv.setSubject3(km3oneYear);
|
|
@@ -167,8 +217,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
this.save(orderInfo);
|
|
|
}
|
|
|
|
|
|
- } else if ("科四专项VIP".equals(goodsName)) {
|
|
|
- UserVip userVip = userVipService.getUserVipByUserId(userId);
|
|
|
+ } else if ("科四专项VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
if (userVip != null) {
|
|
|
//修改会员信息
|
|
|
Date km4Date = userVip.getSubject4();
|
|
@@ -194,8 +244,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
} else {
|
|
|
//新增会员信息
|
|
|
UserVip uv = new UserVip();
|
|
|
- uv.setUserId(userId);
|
|
|
- uv.setUserName(userName);
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
long x = now.getTime() + oneYearLong;
|
|
|
Date km4oneYear = new Date(x);
|
|
|
uv.setSubject4(km4oneYear);
|
|
@@ -203,8 +253,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
this.save(orderInfo);
|
|
|
}
|
|
|
|
|
|
- } else if ("科目一二三四所有付费权益".equals(goodsName)) {
|
|
|
- UserVip userVip = userVipService.getUserVipByUserId(userId);
|
|
|
+ } else if ("科目一二三四所有付费权益".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
if (userVip != null) {
|
|
|
//修改会员信息
|
|
|
Date km1Date = userVip.getSubject1();
|
|
@@ -252,8 +302,231 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
} else {
|
|
|
//新增会员信息
|
|
|
UserVip uv = new UserVip();
|
|
|
- uv.setUserId(userId);
|
|
|
- uv.setUserName(userName);
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date oneYear = new Date(x);
|
|
|
+ uv.setSubject1(oneYear);
|
|
|
+ uv.setSubject2(oneYear);
|
|
|
+ uv.setSubject3(oneYear);
|
|
|
+ uv.setSubject4(oneYear);
|
|
|
+ userVipService.save(uv);
|
|
|
+ this.save(orderInfo);
|
|
|
+ }
|
|
|
+ } else if ("科一+科四VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
+ if (userVip != null) {
|
|
|
+ //修改会员信息
|
|
|
+ Date km1Date = userVip.getSubject1();
|
|
|
+ Date km4Date = userVip.getSubject4();
|
|
|
+ if (km1Date != null) { //科目一处理
|
|
|
+ long x = km1Date.getTime() + oneYearLong;
|
|
|
+ Date km1oneYear = new Date(x);
|
|
|
+ userVip.setSubject1(km1oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km1oneYear = new Date(x);
|
|
|
+ userVip.setSubject1(km1oneYear);
|
|
|
+ }
|
|
|
+ if (km4Date != null) { //科目四处理
|
|
|
+ long x = km4Date.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ }
|
|
|
+ userVipService.updateById(userVip);
|
|
|
+ this.save(orderInfo);
|
|
|
+ } else {
|
|
|
+ //新增会员信息
|
|
|
+ UserVip uv = new UserVip();
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date oneYear = new Date(x);
|
|
|
+ uv.setSubject1(oneYear);
|
|
|
+ uv.setSubject4(oneYear);
|
|
|
+ userVipService.save(uv);
|
|
|
+ this.save(orderInfo);
|
|
|
+ }
|
|
|
+ } else if ("科二+科三VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
+ if (userVip != null) {
|
|
|
+ //修改会员信息
|
|
|
+ Date km2Date = userVip.getSubject2();
|
|
|
+ Date km3Date = userVip.getSubject3();
|
|
|
+ if (km2Date != null) { //科目二处理
|
|
|
+ long x = km2Date.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ }
|
|
|
+ if (km3Date != null) { //科目三处理
|
|
|
+ long x = km3Date.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ }
|
|
|
+ userVipService.updateById(userVip);
|
|
|
+ this.save(orderInfo);
|
|
|
+ } else {
|
|
|
+ //新增会员信息
|
|
|
+ UserVip uv = new UserVip();
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date oneYear = new Date(x);
|
|
|
+ uv.setSubject2(oneYear);
|
|
|
+ uv.setSubject3(oneYear);
|
|
|
+ userVipService.save(uv);
|
|
|
+ this.save(orderInfo);
|
|
|
+ }
|
|
|
+ } else if ("科二+科三+科四".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
+ if (userVip != null) {
|
|
|
+ //修改会员信息
|
|
|
+ Date km2Date = userVip.getSubject2();
|
|
|
+ Date km3Date = userVip.getSubject3();
|
|
|
+ Date km4Date = userVip.getSubject4();
|
|
|
+ if (km2Date != null) { //科目二处理
|
|
|
+ long x = km2Date.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ }
|
|
|
+ if (km3Date != null) { //科目三处理
|
|
|
+ long x = km3Date.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ }
|
|
|
+ if (km4Date != null) { //科目四处理
|
|
|
+ long x = km4Date.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ }
|
|
|
+ userVipService.updateById(userVip);
|
|
|
+ this.save(orderInfo);
|
|
|
+ } else {
|
|
|
+ //新增会员信息
|
|
|
+ UserVip uv = new UserVip();
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date oneYear = new Date(x);
|
|
|
+ uv.setSubject2(oneYear);
|
|
|
+ uv.setSubject3(oneYear);
|
|
|
+ uv.setSubject4(oneYear);
|
|
|
+ userVipService.save(uv);
|
|
|
+ this.save(orderInfo);
|
|
|
+ }
|
|
|
+ } else if ("科三+科四VIP".equals(orderInfo.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(orderInfo.getUserId());
|
|
|
+ if (userVip != null) {
|
|
|
+ //修改会员信息
|
|
|
+ Date km3Date = userVip.getSubject3();
|
|
|
+ Date km4Date = userVip.getSubject4();
|
|
|
+ if (km3Date != null) { //科目三处理
|
|
|
+ long x = km3Date.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ }
|
|
|
+ if (km4Date != null) { //科目四处理
|
|
|
+ long x = km4Date.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ }
|
|
|
+ userVipService.updateById(userVip);
|
|
|
+ this.save(orderInfo);
|
|
|
+ } else {
|
|
|
+ //新增会员信息
|
|
|
+ UserVip uv = new UserVip();
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date oneYear = new Date(x);
|
|
|
+ uv.setSubject3(oneYear);
|
|
|
+ uv.setSubject4(oneYear);
|
|
|
+ userVipService.save(uv);
|
|
|
+ this.save(orderInfo);
|
|
|
+ }
|
|
|
+ } else if ("全科目超级VIP".equals(order.getGoodsName())) {
|
|
|
+ UserVip userVip = userVipService.getUserVipByUserId(order.getUserId());
|
|
|
+ if (userVip != null) {
|
|
|
+ //修改会员信息
|
|
|
+ Date km1Date = userVip.getSubject1();
|
|
|
+ Date km2Date = userVip.getSubject2();
|
|
|
+ Date km3Date = userVip.getSubject3();
|
|
|
+ Date km4Date = userVip.getSubject4();
|
|
|
+ if (km1Date != null) { //科目一处理
|
|
|
+ long x = km1Date.getTime() + oneYearLong;
|
|
|
+ Date km1oneYear = new Date(x);
|
|
|
+ userVip.setSubject1(km1oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km1oneYear = new Date(x);
|
|
|
+ userVip.setSubject1(km1oneYear);
|
|
|
+ }
|
|
|
+ if (km2Date != null) { //科目二处理
|
|
|
+ long x = km2Date.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km2oneYear = new Date(x);
|
|
|
+ userVip.setSubject2(km2oneYear);
|
|
|
+ }
|
|
|
+ if (km3Date != null) { //科目三处理
|
|
|
+ long x = km3Date.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km3oneYear = new Date(x);
|
|
|
+ userVip.setSubject3(km3oneYear);
|
|
|
+ }
|
|
|
+ if (km4Date != null) { //科目四处理
|
|
|
+ long x = km4Date.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ } else {
|
|
|
+ long x = now.getTime() + oneYearLong;
|
|
|
+ Date km4oneYear = new Date(x);
|
|
|
+ userVip.setSubject4(km4oneYear);
|
|
|
+ }
|
|
|
+ userVipService.updateById(userVip);
|
|
|
+ this.save(orderInfo);
|
|
|
+ } else {
|
|
|
+ //新增会员信息
|
|
|
+ UserVip uv = new UserVip();
|
|
|
+ uv.setUserId(order.getUserId());
|
|
|
+ uv.setUserName(order.getUserName());
|
|
|
long x = now.getTime() + oneYearLong;
|
|
|
Date oneYear = new Date(x);
|
|
|
uv.setSubject1(oneYear);
|
|
@@ -267,6 +540,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void writeVipDataToDb(String goodsName, Long userId, String userName, String outTrandeNo, Integer total, Integer payType, String dqbh, String dqmc, int isStare, String school, String schoolName, int schoolCommission, int phoneType) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //原来套餐
|
|
|
@Override
|
|
|
public void writeVipDataToDb(String goodsName, Long userId, String userName, String outTrandeNo, Integer total, Integer payType) {
|
|
|
long oneYearLong = 1000 * 60 * 60 * 24 * 365l;
|