package com.xzx.gc.order.service;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.xzx.gc.common.Result;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.dto.gdmap.FindTraceDto;
|
import com.xzx.gc.common.dto.gdmap.TrackDto;
|
import com.xzx.gc.common.dto.gdmap.UploadTraceLocationDto;
|
import com.xzx.gc.common.utils.gdmap.GdTraceUtil;
|
import com.xzx.gc.entity.CityPartner;
|
import com.xzx.gc.entity.CoreUser;
|
import com.xzx.gc.entity.OrderInfo;
|
import com.xzx.gc.model.admin.*;
|
import com.xzx.gc.order.mapper.*;
|
import com.xzx.gc.util.DoubleUtil;
|
import com.xzx.gc.util.SessionUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@Service
|
@Transactional
|
@Slf4j
|
public class CityPartnerService {
|
|
|
@Autowired
|
private CityPartnerMapper cityPartnerMapper;
|
|
@Autowired
|
private SessionUtil platformService;
|
|
@Autowired
|
private PlatformAccountInfoMapper platformAccountInfoMapper;
|
@Autowired
|
private AccountLogMapper accountLogMapper;
|
@Autowired
|
private OtherUserMapper otherUserMapper;
|
|
@Autowired
|
private PlatformAccountLogMapper platformAccountLogMapper;
|
|
@Autowired
|
private OrderMapper orderMapper;
|
|
@Autowired
|
private AccountMapper accountMapper;
|
|
|
@Autowired
|
private FenceMapper fenceMapper;
|
|
|
@Autowired
|
private PartnerAccountMapper partnerAccountMapper;
|
|
|
public CityPartner findByuserId(String userid,String partnerType){
|
CityPartner cityPartner=new CityPartner();
|
cityPartner.setDelFlag(0);
|
cityPartner.setProhibit(false);
|
cityPartner.setUserId(userid);
|
cityPartner.setPartnerType(partnerType);
|
return cityPartnerMapper.selectOne(cityPartner);
|
}
|
|
public List<CityPartner> findByTypeWithDel(String type){
|
CityPartner cityPartner=new CityPartner();
|
cityPartner.setPartnerType(type);
|
return cityPartnerMapper.select(cityPartner);
|
}
|
|
|
public CityPartner findById(Integer id){
|
return cityPartnerMapper.selectByPrimaryKey(id);
|
}
|
|
/**
|
* 根据类型查找 分合伙人和打包站
|
* @param type
|
* @return
|
*/
|
public List<CityPartner> findByType(String type){
|
CityPartner cityPartner=new CityPartner();
|
cityPartner.setDelFlag(Constants.DEL_NOT_FLAG);
|
cityPartner.setPartnerType(type);
|
return cityPartnerMapper.select(cityPartner);
|
}
|
|
|
|
|
|
|
public AreaModel queryAreaLongiLati(AreaModel model) {
|
return cityPartnerMapper.queryAreaLongiLati(model);
|
}
|
|
|
|
|
|
|
|
public List<String> queryPackageIdList(String partnerId) {
|
return cityPartnerMapper.queryPackageIdList(partnerId);
|
}
|
|
|
|
public void insertPartnerLogByPartner(PartnerAccountModel accountModel, String type, String money, String payOrderId,CityPartner partner,String newMoney) {
|
//写入日志
|
PartnerAccountLogModel partnerLog = new PartnerAccountLogModel();
|
partnerLog.setAccountId(accountModel.getAccount());
|
partnerLog.setType(type);
|
partnerLog.setCreateTime(DateUtil.now());
|
partnerLog.setRoleName("城市合伙人");
|
partnerLog.setUserName(partner.getPartnerName());
|
partnerLog.setUserPhone(partner.getMobilePhone());
|
if(type.equals("13")){
|
BigDecimal subMoney = new BigDecimal(money).multiply(new BigDecimal("-1")) ;
|
partnerLog.setMoney(DoubleUtil.roundTwo(subMoney.toString()));
|
|
}else{
|
partnerLog.setMoney(money);
|
|
}
|
partnerLog.setAccountMoney(accountModel.getHbb());
|
partnerLog.setHbb(newMoney);
|
partnerLog.setFlowNo(payOrderId);
|
partnerLog.setApproverStatus("1");
|
partnerLog.setDelFlag(0);
|
partnerAccountMapper.addPartnerAccountLog(partnerLog);
|
}
|
|
|
|
public List<String> queryPartnerByCurrent() {
|
//查询合伙人列表
|
List<String> partnerIds = new ArrayList<>();
|
CoreUser user = platformService.getCurrentUser();
|
//CoreUser user = cityPartnerMapper.queryCoreUser();
|
if (user.getId() == 1) {
|
//如果是超管 显示全部投诉订单信息
|
partnerIds = null;
|
} else {
|
//如果是运营管理员 显示
|
if (user.getOrgId() == 10) {
|
partnerIds = null;
|
} else {
|
//合伙人显示 该合伙人和名下合伙人的所有订单。
|
CityPartner partner = cityPartnerMapper.selectByPrimaryKey(user.getId());
|
if(null!=partner){
|
partnerIds.add(user.getId() + "");
|
|
}else{
|
partnerIds = null;
|
}
|
//多级合伙人带拓展
|
//List<String> childPartnerIds = xzxOrderComplaintDao.queryChildPids(user.getId()+"");
|
}
|
|
}
|
return partnerIds;
|
}
|
|
|
|
|
|
|
|
public int addPayInfo1(PayInfoModel model) {
|
return cityPartnerMapper.addPayInfo1(model);
|
}
|
|
|
public void updateAccountPartner(UserAccountModel accountModel) {
|
cityPartnerMapper.updateAccountPartner(accountModel);
|
//return null
|
}
|
|
public void updatePartnerAccount(PartnerAccountModel partnerAccountModel) {
|
partnerAccountMapper.updatePartnerAccount(partnerAccountModel);
|
}
|
|
|
public void insertAccountLogByPartner(UserAccountModel accountModel, String type, BigDecimal money, String payOrderId) {
|
//写入日志
|
AccountLogModel log = new AccountLogModel();
|
log.setAccountId(accountModel.getAccountId());
|
log.setChannelType(type);
|
log.setCreateTime(DateUtil.now());
|
log.setCreateUserId(accountModel.getUserId());
|
log.setNewFixedLimit(DoubleUtil.roundTwo("0"));
|
log.setNewLimit(DoubleUtil.roundTwo("0"));
|
log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getMoney()).add(money).toString()));
|
log.setOldFixedLimit(DoubleUtil.roundTwo("0"));
|
log.setOldLimit(DoubleUtil.roundTwo("0"));
|
log.setOldMoney(DoubleUtil.roundTwo(accountModel.getMoney() + ""));
|
log.setOrderId(payOrderId);
|
accountLogMapper.insertAccountLog(log);
|
}
|
|
|
public void insertAccountLogByHsy(UserAccountModel accountModel, String type, BigDecimal money, String payOrderId) {
|
//写入日志
|
AccountLogModel log = new AccountLogModel();
|
log.setAccountId(accountModel.getAccountId());
|
log.setChannelType(type);
|
log.setCreateTime(DateUtil.now());
|
log.setCreateUserId(accountModel.getUserId());
|
log.setNewFixedLimit(DoubleUtil.roundTwo("0"));
|
log.setNewLimit(DoubleUtil.roundTwo("0"));
|
log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getMoney()).subtract(money).toString()));
|
log.setOldFixedLimit(DoubleUtil.roundTwo("0"));
|
log.setOldLimit(DoubleUtil.roundTwo("0"));
|
log.setOldMoney(DoubleUtil.roundTwo(accountModel.getMoney() + ""));
|
log.setOrderId(payOrderId);
|
accountLogMapper.insertAccountLog(log);
|
}
|
public void insertPartnerAccountLog(PartnerAccountModel accountModel, String type, BigDecimal money, String payOrderId, String packageType) {
|
//写入日志
|
AccountLogModel log = new AccountLogModel();
|
boolean flag = true;
|
if(null!=accountModel.getAddType()&&!"".equals(accountModel.getAddType())){
|
log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).add(money).toString()));
|
|
}else{
|
flag = false;
|
log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).subtract(money).toString()));
|
|
}
|
CityPartner partner = cityPartnerMapper.queryEntityByUserIds(accountModel.getUserId());
|
PartnerAccountLogModel partnerLog = new PartnerAccountLogModel();
|
partnerLog.setFlowNo(payOrderId);
|
partnerLog.setCreateTime(DateUtil.now());
|
partnerLog.setApproverStatus("1");
|
if(type.equals("14")){
|
if(!flag){
|
partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString()));
|
|
}else{
|
partnerLog.setMoney(DoubleUtil.roundTwo(money.toString()));
|
|
}
|
|
}else{
|
if(!flag){
|
partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString()));
|
|
}else{
|
partnerLog.setMoney(DoubleUtil.roundTwo(money.toString()));
|
|
}
|
}
|
partnerLog.setHbb(log.getNewMoney());
|
partnerLog.setDelFlag(0);
|
partnerLog.setAccountId(accountModel.getAccount());
|
partnerLog.setAccountMoney(DoubleUtil.roundTwo(accountModel.getHbb() + ""));
|
partnerLog.setUserName(partner.getPartnerName());
|
if (null != packageType) {
|
partnerLog.setType(packageType);
|
|
} else {
|
if(type.equals("9")){
|
partnerLog.setType("12");
|
}else if(type.equals("8")){
|
partnerLog.setType("7");
|
}else{
|
partnerLog.setType("1");
|
}
|
}
|
partnerLog.setUserPhone(partner.getMobilePhone());
|
partnerLog.setRoleName("城市合伙人");
|
partnerAccountMapper.addPartnerAccountLog(partnerLog);
|
|
}
|
|
public String queryAccountByAdminId() {
|
return cityPartnerMapper.queryAccountByAdminId();
|
}
|
|
public int updatePlatformHbb(String hbb) {
|
return platformAccountInfoMapper.updatePlatformHbb(hbb);
|
}
|
public int updatePlatformMoney(String money) {
|
return platformAccountInfoMapper.updatePlatformMoney(money);
|
}
|
public void insertPlatFormLog(PlatformAccountLogModel model) {
|
platformAccountLogMapper.insertPlatFormLog(model);
|
}
|
|
|
|
public List<XzxElectronicFenceModel> queryPartnerFenceList(XzxCityPartnerModel model) {
|
CoreUser user = platformService.getCurrentUser();
|
model.setId(user.getId() + "");
|
List<XzxElectronicFenceModel> list = fenceMapper.queryPartnerFenceList(model);
|
return list;
|
}
|
|
public List<XzxElectronicFenceModel> queryPartnerFenceListByUser(XzxCityPartnerModel model) {
|
CoreUser user = platformService.getCurrentUser();
|
List<String> partnerIds = queryPartnerByCurrent();
|
if (user.getId() == 1) {
|
model.setId(null);
|
} else {
|
model.setId(user.getId() + "");
|
}
|
|
if (null != partnerIds && partnerIds.size() > 0) {
|
model.setPartnerIds(partnerIds.get(0));
|
}
|
List<XzxElectronicFenceModel> list = fenceMapper.queryPartnerFenceListByUser(model);
|
return list;
|
}
|
|
|
public UserAccountModel queryPartnerAccountByUserId(String userId) {
|
return accountMapper.getAccountByUserId(userId);
|
}
|
|
|
public String querySidByPid(String partnerId, String serviceType) {
|
return cityPartnerMapper.querySidByPid(partnerId, serviceType);
|
}
|
|
public List<String> queryTownIdsByPartnerId(String partnerId) {
|
return cityPartnerMapper.queryTownIdsByPartnerId(partnerId);
|
}
|
|
|
public List<Map<String, Object>> queryGaodeByUserId(XzxCityPartnerModel model) {
|
List<Map<String, Object>> list1 = new ArrayList<>();
|
CoreUser user = platformService.getCurrentUser();
|
List<String> partnerIds = queryPartnerByCurrent();
|
CityPartner partner = cityPartnerMapper.queryPartnerById(user.getId());
|
String key = "";
|
if (null != model.getOrderId() && !"".equals(model.getOrderId())) {
|
partner = cityPartnerMapper.queryPartnerKeyByOrder(model.getOrderId());
|
key = partner.getPartnerKey();
|
model.setUserType("2");
|
} else {
|
model.setUserType("6");
|
}
|
if (null != partner) {
|
key = partner.getPartnerKey();
|
} else {
|
UserModel userModel = otherUserMapper.queryUserOtherById(model.getUserId());
|
String partnerId = userModel.getPartnerId();
|
partner = queryById(partnerId);
|
if (null != partner) {
|
key = partner.getPartnerKey();
|
} else {
|
return null;
|
}
|
|
}
|
|
UserModel userModel = cityPartnerMapper.queryUserModelbyPartnerId(partnerIds, model.getUserType(), model.getUserId(), model.getOrderId());
|
if (null != model.getDayTime() && !"".equals(model.getDayTime())) {
|
if (null != model.getDateTime() && !"".equals(model.getDateTime())) {
|
String[] ss = model.getDateTime().split("-");
|
model.setStartTime(model.getDayTime() + " " + ss[0] + ":00");
|
model.setEndTime(model.getDayTime() + " " + ss[1] + ":59");
|
}
|
}
|
Map<String, Object> objMap = new HashMap<>();
|
String terminalId = userModel.getTerminalId();
|
Map map1 = new HashMap();
|
String url = "";
|
String type = null;
|
if (userModel.getUserType().equals("2")) {
|
type = "1";
|
map1.put("tid", terminalId);
|
} else if (userModel.getUserType().equals("6")) {
|
type = "2";
|
}
|
String sid = cityPartnerMapper.querySidByPartnerId(partner.getId() + "", type);
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
map1.put("key", key);
|
map1.put("sid", sid);
|
|
String result1 = "";
|
if (userModel.getUserType().equals("2")) {
|
if (null != model.getOrderId()) {
|
String trid = cityPartnerMapper.queryOrderById(model.getOrderId(), userModel.getUserId(), model.getStartTime(), model.getEndTime());
|
map1.put("trid", trid);
|
FindTraceDto findTraceDto = BeanUtil.mapToBean(map1, FindTraceDto.class, true);
|
Result<List<TrackDto>> trace = GdTraceUtil.findTrace(findTraceDto);
|
if (trace.getCode()==0) {
|
List<TrackDto> dataArr = trace.getData();
|
|
TrackDto mm = dataArr.get(0);
|
objMap.put("distance", mm.getDistance());
|
objMap.put("totalTime", mm.getTime() / (1000 * 60));
|
objMap.put("counts", mm.getCounts());
|
List<UploadTraceLocationDto> pointsList = mm.getPoints();
|
if (null != pointsList && pointsList.size() > 0) {
|
List<Map<String, Object>> propData = new ArrayList<>();
|
String address = "";
|
long t = 0;
|
long tt1 = 0;
|
for (UploadTraceLocationDto pp : pointsList) {
|
Map<String, Object> propMap = new HashMap<>();
|
JSONObject jsonObject = JSONUtil.parseObj(pp.getProps());
|
String addressGD=jsonObject.getStr("address");
|
if (!"".equals(address)) {
|
if (address.equals(addressGD)) {
|
if (tt1 == 0) {
|
tt1 = pp.getLocatetime() - t;
|
} else {
|
tt1 = tt1 + (pp.getLocatetime() - t);
|
}
|
continue;
|
} else {
|
propMap.put("stopTime", tt1 / (1000 * 60));
|
}
|
}
|
|
address = addressGD;
|
propMap.put("address", address);
|
t = pp.getLocatetime();
|
Date date = new Date(t);
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String tt = sdf1.format(date);
|
propMap.put("time", tt);
|
propData.add(propMap);
|
}
|
objMap.put("counts", propData.size());
|
objMap.put("propData", propData);
|
}
|
}
|
} else {
|
|
// List<String> trids = cityPartnerMapper.queryOrderByIds(userModel.getUserId(), model.getStartTime(), model.getEndTime());
|
// for (int i = 0; i < trids.size(); i++) {
|
// map1.put("trid", trids.get(i));
|
// String r1 = HttpClientUtils.doGet(url, map1);
|
// if (i == 0) {
|
// result1 = i + ":" + r1;
|
// } else {
|
// result1 = result1 + " " + i + ":" + r1;
|
// }
|
// }
|
|
}
|
} else if (userModel.getUserType().equals("6")) {
|
try {
|
|
Date date1 = simpleDateFormat.parse(model.getStartTime());
|
Date date2 = simpleDateFormat.parse(model.getEndTime());
|
long ts1 = date1.getTime();
|
long ts2 = date2.getTime();
|
map1.put("starttime", ts1 + "");
|
map1.put("endtime", ts2 + "");
|
map1.put("tid", terminalId);
|
FindTraceDto findTraceDto = BeanUtil.mapToBean(map1, FindTraceDto.class, true);
|
Result<List<TrackDto>> trace = GdTraceUtil.findTrace(findTraceDto);
|
if (trace.getCode()==0) {
|
List<TrackDto> dataArr = trace.getData();
|
TrackDto mm = dataArr.get(0);
|
objMap.put("distance", mm.getDistance());
|
objMap.put("totalTime", mm.getTime() / (1000 * 60));
|
objMap.put("counts", mm.getCounts());
|
List<UploadTraceLocationDto> pointsList = mm.getPoints();
|
if (null != pointsList && pointsList.size() > 0) {
|
List<Map<String, Object>> propData = new ArrayList<>();
|
String address = "";
|
long t = 0;
|
long tt1 = 0;
|
for (UploadTraceLocationDto pp : pointsList) {
|
Map<String, Object> propMap = new HashMap<>();
|
JSONObject jsonObject = JSONUtil.parseObj(pp.getProps());
|
String addressGD=jsonObject.getStr("address");
|
if (!"".equals(address)) {
|
if (address.equals(addressGD)) {
|
if (tt1 == 0) {
|
tt1 = pp.getLocatetime() - t;
|
} else {
|
tt1 = tt1 + (pp.getLocatetime() - t);
|
}
|
continue;
|
} else {
|
propMap.put("stopTime", tt1 / (1000 * 60));
|
}
|
}
|
|
address = addressGD;
|
propMap.put("address", address);
|
t = pp.getLocatetime();
|
Date date = new Date(t);
|
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String tt = sdf1.format(date);
|
propMap.put("time", tt);
|
propData.add(propMap);
|
}
|
objMap.put("counts", propData.size());
|
objMap.put("propData", propData);
|
}
|
|
}
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
}
|
objMap.put("userModel", userModel);
|
list1.add(objMap);
|
|
|
return list1;
|
}
|
|
public CityPartner queryById(String partnerId) {
|
|
return cityPartnerMapper.selectByPrimaryKey(partnerId);
|
}
|
|
|
public List<Map<String, String>> queryOrderByHsy(XzxCityPartnerModel model) {
|
if (null != model.getDayTime() && !"".equals(model.getDayTime())) {
|
if (null != model.getDateTime() && !"".equals(model.getDateTime())) {
|
String[] ss = model.getDateTime().split("-");
|
model.setStartTime(model.getDayTime() + " " + ss[0] + ":00");
|
model.setEndTime(model.getDayTime() + " " + ss[1] + ":59");
|
} else {
|
model.setStartTime(model.getDayTime() + " 00:00:00");
|
model.setEndTime(model.getDayTime() + " 23:59:59");
|
}
|
} else {
|
String t = DateUtil.now();
|
String[] tl = t.split(" ");
|
|
model.setStartTime(tl[0] + " 00:00:00");
|
model.setEndTime(tl[0] + " 23:59:59");
|
}
|
List<Map<String, String>> list = cityPartnerMapper.queryOrderByHsy(model);
|
|
return list;
|
}
|
|
public PartnerAccountModel queryAccountIdByUserId(String userId) {
|
return partnerAccountMapper.queryAccountIdByUserId(userId);
|
}
|
|
|
|
public int deleteUserByPartnerId(String id, String accountId) {
|
cityPartnerMapper.deleteAccount(accountId);
|
return cityPartnerMapper.deleteUserByPartnerId(id);
|
|
}
|
|
public boolean update(CityPartner partner) {
|
return cityPartnerMapper.updateByPrimaryKeySelective(partner)>0?true:false;
|
}
|
|
|
public CityPartner queryById(Long id) {
|
return cityPartnerMapper.selectByPrimaryKey(id);
|
}
|
|
public CityPartner queryPartnerById(long l) {
|
return cityPartnerMapper.queryPartnerById(l);
|
}
|
|
|
public String queryPidByTownId(String orderId) {
|
OrderInfo info = orderMapper.findById(orderId);
|
return cityPartnerMapper.queryPidByTownId(info.getTownId());
|
}
|
|
|
|
|
|
}
|