|
@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.xml.crypto.Data;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DateFormat;
|
|
|
import java.text.ParseException;
|
|
@@ -37,11 +38,6 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
@Transactional
|
|
|
public String AddPayOrderInfo(PayOrderRequest payOrderRequest, PayOrder payOrder) {
|
|
|
|
|
|
- //存放查询用户信息
|
|
|
- AppUserInfo appUserInfo = new AppUserInfo();
|
|
|
- //存放客户信息
|
|
|
- CustomerManage customerManage = new CustomerManage();
|
|
|
-
|
|
|
//订单规则 时间+6位随机数
|
|
|
Random random = new Random();
|
|
|
String result="";
|
|
@@ -104,30 +100,6 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
if(receivableAmt != null && oilPrice != null){
|
|
|
payOrder.setOrderLiters(recKonOrderLiters(String.valueOf(receivableAmt), String.valueOf(oilPrice), 2));
|
|
|
}
|
|
|
-
|
|
|
- //根据油品名称和油站id获取当前油品调价信息
|
|
|
-// params.put("oilName", payOrderRequest.getOilName());
|
|
|
-// List<Map> oilPriceAdjustList = payOrderMapper.selectOilPriceAdjust(params);
|
|
|
-// String amt = payOrderRequest.getAmt(); //订单金额
|
|
|
-// if(oilPriceAdjustList != null && oilPriceAdjustList.size() > 0){ //若存在油价价格调整时
|
|
|
-// for (Map m : oilPriceAdjustList){
|
|
|
-// // 如果生效时间小于当前时间则使用生效时间 取离当前时间最近的调整价格(查询结果按生效时间降序排序故只做此判断即可)
|
|
|
-// if(compareEffectTime(m.get("takeEffectDate").toString())){
|
|
|
-// if(m.containsKey("oilAdjustPrice") && m.get("oilAdjustPrice").toString() !=null && !m.get("oilAdjustPrice").toString().equals("")){
|
|
|
-// payOrder.setOrderLiters(recKonOrderLiters(amt, m.get("oilAdjustPrice").toString(), 2)); //计算加油升数且存入
|
|
|
-// payOrder.setOilPirce(m.get("oilAdjustPrice").toString());
|
|
|
-// }
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }else { //若没有油价调整时则使用原始油价计算加油升数
|
|
|
-// if(mapResultList.get(0).containsKey("oilPrice") && mapResultList.get(0).get("oilPrice").toString() !=null && !mapResultList.get(0).get("oilPrice").toString().equals("")){
|
|
|
-// String oilPrice = mapResultList.get(0).get("oilPrice").toString(); //原始价格
|
|
|
-// payOrder.setOilPirce(oilPrice);
|
|
|
-// payOrder.setOrderLiters(recKonOrderLiters(amt, oilPrice, 2)); //计算油价升数存放
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
String oilName = payOrderRequest.getOilName();
|
|
|
payOrder.setOilName(oilName); //油品名称
|
|
|
//根据油品名称存储油品类型 1.柴油 2 汽油
|
|
@@ -161,82 +133,79 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|
|
//返回订单号
|
|
|
ordNo= payOrderList.get(0).getOrderNo();
|
|
|
|
|
|
+ //存放查询用户信息
|
|
|
+ AppUserInfo appUserInfo = new AppUserInfo();
|
|
|
+ //存放客户信息
|
|
|
+ CustomerManage customerManage = new CustomerManage();
|
|
|
//向客户表中插入数据
|
|
|
appUserInfo.setUserType(payOrderRequest.getUserType()); //用户类型
|
|
|
if(payOrderRequest.getUserType().equals("1")){
|
|
|
- //1 是公众号
|
|
|
- appUserInfo.setBlogOpenid(payOrderRequest.getToken());
|
|
|
- customerManage.setBlogOpenid(payOrderRequest.getToken());
|
|
|
- //customerManage
|
|
|
+ appUserInfo.setBlogOpenid(payOrderRequest.getToken()); //1 是公众号
|
|
|
}else if(payOrderRequest.getUserType().equals("2")){
|
|
|
- //2是小程序
|
|
|
- appUserInfo.setMinaOpenid(payOrderRequest.getToken());
|
|
|
- customerManage.setMinaOpenid(payOrderRequest.getToken());
|
|
|
+ appUserInfo.setMinaOpenid(payOrderRequest.getToken()); //2是小程序
|
|
|
}
|
|
|
-
|
|
|
- //判断该用户是否已存在
|
|
|
- customerManage.setStationId(payOrderRequest.getStationId());
|
|
|
+ //从客户信息表查询数据用于插入客户表
|
|
|
+ List<AppUserInfo> appUserInfoList = payOrderMapper.getUserInfoByOpenId(appUserInfo);
|
|
|
+ Date blogRegTime = null; //公众号注册时间
|
|
|
+ Date minaRegTime = null; //小程序注册时间
|
|
|
+ if(appUserInfoList != null && appUserInfoList.size() >0){
|
|
|
+ for(AppUserInfo u : appUserInfoList){
|
|
|
+ switch (u.getUserType()){
|
|
|
+ case "1":
|
|
|
+ customerManage.setBlogOpenid(u.getBlogOpenid());
|
|
|
+ customerManage.setBlogUserId(u.getUserId());
|
|
|
+ customerManage.setPhoneNumber(u.getMobilePhone());
|
|
|
+ blogRegTime =u.getRegisteDate();
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ customerManage.setMinaOpenid(u.getMinaOpenid());
|
|
|
+ customerManage.setMinaUserId(u.getUserId());
|
|
|
+ customerManage.setPhoneNumber(u.getMobilePhone());
|
|
|
+ minaRegTime = u.getRegisteDate();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断公众号和小程序时间取最早的时间
|
|
|
+ if(blogRegTime !=null && minaRegTime != null){
|
|
|
+ if(blogRegTime.compareTo(minaRegTime) >0){
|
|
|
+ customerManage.setRegtime(minaRegTime);
|
|
|
+ }else if(blogRegTime.compareTo(minaRegTime) <0){
|
|
|
+ customerManage.setRegtime(blogRegTime);
|
|
|
+ }else if(blogRegTime.compareTo(minaRegTime) ==0){
|
|
|
+ //相等时随便取一个
|
|
|
+ customerManage.setRegtime(minaRegTime);
|
|
|
+ }
|
|
|
+ }else if(blogRegTime == null){
|
|
|
+ customerManage.setRegtime(minaRegTime);
|
|
|
+ }else if(minaRegTime == null){
|
|
|
+ customerManage.setRegtime(blogRegTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ customerManage.setStationId(payOrderRequest.getStationId()); //油站ID
|
|
|
+ customerManage.setOilName(payOrderRequest.getOilName()); //油品名称
|
|
|
+ customerManage.setStationName(payOrder.getStationName()); //存入油站名称
|
|
|
//已存在用户信息 existCustomer
|
|
|
CustomerManage existCustomer = payOrderMapper.isExistCustomer(customerManage);
|
|
|
+ //判断该用户是否已存在
|
|
|
if(existCustomer != null){ //存在该用户时更新
|
|
|
- //判断是汽油还是柴油 用于存放在柴油 汽油 各升数 总额累积值
|
|
|
- if(payOrder.getOilType().equals("1")){
|
|
|
- //数据库使用decimal 防空处理
|
|
|
- //柴油总金额
|
|
|
- if(existCustomer.getCyAmt() ==null){
|
|
|
- customerManage.setCyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- }else{
|
|
|
- BigDecimal sumCyAmt = existCustomer.getCyAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- customerManage.setCyAmt(sumCyAmt);
|
|
|
- }
|
|
|
- //柴油总升数
|
|
|
- if(existCustomer.getCyLiters() ==null){
|
|
|
- customerManage.setCyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- }else{
|
|
|
- BigDecimal sumCyLiters = existCustomer.getCyLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- customerManage.setCyLiters(sumCyLiters);
|
|
|
- }
|
|
|
+ //此处if放null处理
|
|
|
+ if(existCustomer.getAmt() !=null){
|
|
|
+ //存入金额 累加原来金额
|
|
|
+ customerManage.setAmt(existCustomer.getAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt()))));
|
|
|
+ }else {
|
|
|
+ customerManage.setAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
+ }
|
|
|
|
|
|
- }else if(payOrder.getOilType().equals("2")) {
|
|
|
- //汽油金额
|
|
|
- if(existCustomer.getQyAmt() ==null){
|
|
|
- customerManage.setQyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- }else{
|
|
|
- BigDecimal sumQyAmt = existCustomer.getQyAmt().add(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- customerManage.setQyAmt(sumQyAmt);
|
|
|
- }
|
|
|
- //汽油升数
|
|
|
- if(existCustomer.getQyLiters() == null){
|
|
|
- customerManage.setQyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- }else{
|
|
|
- BigDecimal sumQyLiters = existCustomer.getQyLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- customerManage.setQyLiters(sumQyLiters);
|
|
|
- }
|
|
|
+ if(existCustomer.getLiters() !=null){
|
|
|
+ //存入升数 累加原来升数
|
|
|
+ customerManage.setLiters(existCustomer.getLiters().add(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters()))));
|
|
|
+ }else {
|
|
|
+ customerManage.setLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
}
|
|
|
payOrderMapper.updateCustomer(customerManage);
|
|
|
}else{
|
|
|
- //不存在时从客户信息表查询插入
|
|
|
- List<AppUserInfo> userInfos = appUserInfoService.Authentication(appUserInfo);
|
|
|
- if(userInfos.size() == 1 && userInfos !=null){
|
|
|
- customerManage.setPhoneNumber(userInfos.get(0).getMobilePhone());
|
|
|
- //存入客户表用户表的id
|
|
|
- if(userInfos.get(0).getUserType().equals("1")){
|
|
|
- customerManage.setBlogUserId(userInfos.get(0).getUserId());
|
|
|
- }else if(userInfos.get(0).getUserType().equals("2")){
|
|
|
- customerManage.setMinaUserId(userInfos.get(0).getUserId());
|
|
|
- }
|
|
|
- customerManage.setRegtime(userInfos.get(0).getRegisteDate()); //存入注册时间
|
|
|
- }
|
|
|
- //customerManage.setPhoneNumber(payOrderRequest.getCustomerPhone()); //客户电话
|
|
|
- customerManage.setStationName(payOrder.getStationName()); //存入油站名称
|
|
|
- //存入柴油 汽油 金额 升数
|
|
|
- if(payOrder.getOilType().equals("1")){
|
|
|
- customerManage.setCyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- customerManage.setCyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- }else if(payOrder.getOilType().equals("2")) {
|
|
|
- customerManage.setQyAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt())));
|
|
|
- customerManage.setQyLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters())));
|
|
|
- }
|
|
|
+ customerManage.setAmt(BigDecimal.valueOf(Double.valueOf(payOrderRequest.getAmt()))); //存入金额
|
|
|
+ customerManage.setLiters(BigDecimal.valueOf(Double.valueOf(payOrder.getOrderLiters()))); //存入升数
|
|
|
payOrderMapper.insertCustomer(customerManage);
|
|
|
}
|
|
|
return ordNo;
|