退款修改完成,增加机构必填项,修改小程序电池保护

This commit is contained in:
yuyang 2022-01-11 16:40:12 +08:00
parent 67decfe01c
commit 6352c0186a
37 changed files with 576 additions and 188 deletions

View File

@ -27,9 +27,9 @@ public interface UserTypeService {
/**
* 根据用户类型用户id充值记录增加流水
* @param money 充值金额
* @param userId 充值用户
* 根据用户类型用户id充值退款记录增加流水
* @param money 充值退款金额
* @param userId 充值退款用户
* @param userType 用户类型
* @param tenantId 租户id
* @param type 充值渠道1微信 2支付宝 3平台)

View File

@ -72,5 +72,13 @@ public class UserTypeUtil {
*/
public static final Integer RECHARGE_STATUS_TWO = 2;
/**
* 退款订单审核-
*/
public static final Integer REFUND_APPLICATION_ZERO = 0;
/**
* 退款订单审核-
*/
public static final Integer REFUND_APPLICATION_ONE = 1;
}

View File

@ -54,12 +54,12 @@ public interface XhpcChargeOrderMapper {
/**
* 判断用户是否在充电中
*/
String countXhpcRealTimeOrder(@Param("userId")Long userId);
String countXhpcRealTimeOrder(@Param("userId")Long userId,@Param("source")Integer source,@Param("tenantId")String tenantId);
/**
* 判断用户是否有异常订单未处理
*/
int countXhpcChargeOrder(@Param("userId")Long userId);
int countXhpcChargeOrder(@Param("userId")Long userId,@Param("source")Integer source,@Param("tenantId")String tenantId);
/**
* 获取终端信息

View File

@ -124,7 +124,7 @@ public class XhpcChargeOrderServiceImpl implements IXhpcChargeOrderService {
return AjaxResult.error(1100, "金额小于5元,不能充电,请充值后再进行充电");
}
//充电用户是否存在异常的订单
int j = xhpcChargeOrderMapper.countXhpcChargeOrder(userId);
int j = xhpcChargeOrderMapper.countXhpcChargeOrder(userId,userType,tenantId);
if (j > 0) {
return AjaxResult.error(1103, "你有异常订单未解决,请拨打客服电话进行解决");
}
@ -133,7 +133,7 @@ public class XhpcChargeOrderServiceImpl implements IXhpcChargeOrderService {
return AjaxResult.error(1101, "你有申请退款订单在审核中,需要充电请取消申请退款");
}
//充电用户是否在充电中
String i = xhpcChargeOrderMapper.countXhpcRealTimeOrder(userId);
String i = xhpcChargeOrderMapper.countXhpcRealTimeOrder(userId,userType,tenantId);
if (!"".equals(i) && i!=null) {
return AjaxResult.error(1102, "车辆正在充电,请查询车辆充电信息");
}
@ -246,8 +246,9 @@ public class XhpcChargeOrderServiceImpl implements IXhpcChargeOrderService {
xhpcChargeOrder.setTerminalId(xhpcTerminal.getTerminalId());
xhpcChargeOrder.setGunId(xhpcTerminal.getSerialNumber());
xhpcChargeOrder.setSerialNumber(orderNo);
xhpcChargeOrder.setSource(0);
xhpcChargeOrder.setSource(userType);
xhpcChargeOrder.setStatus(-1);
xhpcChargeOrder.setTenantId(tenantId);
if (xhpcChargingPileById != null && xhpcChargingPileById.get("power") != null) {
xhpcChargeOrder.setPower(xhpcChargingPileById.get("power").toString());
}

View File

@ -23,6 +23,3 @@ spring:
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
com.xhpc.order.mapper: debug

View File

@ -128,11 +128,31 @@
update xhpc_app_user set balance=#{balance} where app_user_id=#{userId}
</update>
<select id="countXhpcRealTimeOrder" resultType="String">
select charge_order_id as chargeOrderId from xhpc_charge_order where user_id =#{userId} and status=0 and del_flag =0 and source =0 limit 1
select
charge_order_id as chargeOrderId
from xhpc_charge_order
where
user_id =#{userId} and status=0 and del_flag =0 and source =0
<if test="source !=null and source !=''">
and source=#{source}
</if>
<if test="tenantId !=null and tenantId !=''">
and tenant_id=#{tenantId}
</if>
limit 1
</select>
<select id="countXhpcChargeOrder" resultType="int">
select count(charge_order_id) from xhpc_charge_order where user_id =#{userId} and status =2 and source =0 and del_flag =0
select count(charge_order_id)
from xhpc_charge_order
where user_id =#{userId}
and status =2 and source =0 and del_flag =0
<if test="source !=null and source !=''">
and source=#{source}
</if>
<if test="tenantId !=null and tenantId !=''">
and tenant_id=#{tenantId}
</if>
</select>
<select id="getXhpcTerminalSerialNumber" resultMap="BaseResultMap">
@ -204,7 +224,10 @@
power,
</if>
<if test="null != createTime ">
create_time
create_time,
</if>
<if test="null != tenantId and tenantId !=''">
tenant_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -269,7 +292,10 @@
#{power},
</if>
<if test="null != createTime ">
#{createTime}
#{createTime},
</if>
<if test="null != tenantId and tenantId !=''">
#{tenantId},
</if>
</trim>
</insert>

View File

@ -685,9 +685,9 @@
union
select xau.app_user_id as user_id from xhpc_app_user as xau inner join(select user_id from xhpc_history_order where source=0) us2 on us2.user_id = xau.app_user_id where xau.phone like concat('%', #{phone}, '%')
union
select xcp.community_personnel_id as user_id from xhpc_community_personnel as xcp inner join(select user_id from xhpc_history_order where source=2) us3.user_id = xcp.community_personnel_id where xcp.account like concat('%', #{phone}, '%')
select xcp.community_personnel_id as user_id from xhpc_community_personnel as xcp inner join(select user_id from xhpc_history_order where source=2)us3 on us3.user_id = xcp.community_personnel_id where xcp.account like concat('%', #{phone}, '%')
union
select xcup.customers_personnel_id as user_id from xhpc_customers_personnel as xcup inner join(select user_id from xhpc_history_order where source=3) us4.user_id = xcup.customers_personnel_id where xcup.account like concat('%', #{phone}, '%')
select xcup.customers_personnel_id as user_id from xhpc_customers_personnel as xcup inner join(select user_id from xhpc_history_order where source=3)us3 on us4.user_id = xcup.customers_personnel_id where xcup.account like concat('%', #{phone}, '%')
) ut on ut.app_user_id = ho.user_id
</if>
where ho.status =0 and ho.del_flag=0

View File

@ -93,7 +93,9 @@ public class AlipayPaymentController {
Long userid = loginUser.getUserid();
Integer userType = loginUser.getUserType();
String tenantId = loginUser.getTenantId();
if(UserTypeUtil.CUSTOMERS_TYPE.equals(userType)){
return AjaxResult.error(HttpStatus.ERROR_STATUS, "大客户不支持充值");
}
Map<String, Object> refundOrder = iXhpcRefundOrderService.getNotRefundOrder(userid,userType,tenantId);
if (StringUtils.isNotNull(refundOrder)) {
return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "用户存正在退款");

View File

@ -103,6 +103,11 @@ public class WxPaymentController {
Long userid = loginUser.getUserid();
Integer userType = loginUser.getUserType();
String tenantId = loginUser.getTenantId();
if(UserTypeUtil.CUSTOMERS_TYPE.equals(userType)){
return AjaxResult.error(HttpStatus.ERROR_STATUS, "大客户不支持充值");
}
Map<String, Object> refundOrder = iXhpcRefundOrderService.getNotRefundOrder(userid,userType,tenantId);
if (StringUtils.isNotNull(refundOrder)) {
return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "用户存正在退款");

View File

@ -83,8 +83,8 @@ public class XhpcRechargeOrderController extends BaseController {
*/
@GetMapping("/sumMoney")
@ApiOperation(value = "充值统计订单")
public AjaxResult sumMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type) {
return AjaxResult.success(iXhpcRechargeOrderService.sumMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type));
public AjaxResult sumMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer source,Integer userId) {
return AjaxResult.success(iXhpcRechargeOrderService.sumMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type,source,userId));
}
/**

View File

@ -8,8 +8,10 @@ import com.alipay.api.domain.Participant;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.xhpc.common.api.SmsService;
import com.xhpc.common.api.UserTypeService;
import com.xhpc.common.core.constant.HttpStatus;
import com.xhpc.common.core.constant.StatusConstants;
import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.utils.DateUtils;
import com.xhpc.common.core.utils.StringUtils;
import com.xhpc.common.core.utils.WXPayUtil;
@ -17,10 +19,13 @@ import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.common.security.service.TokenService;
import com.xhpc.common.util.UserTypeUtil;
import com.xhpc.payment.domain.XhpcAppUser;
import com.xhpc.payment.domain.XhpcRefundAudit;
import com.xhpc.common.domain.XhpcRefundOrder;
import com.xhpc.payment.domain.XhpcSettingConfig;
import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper;
import com.xhpc.payment.service.IXhpcCommonPayment;
import com.xhpc.payment.service.IXhpcRefundAuditService;
import com.xhpc.payment.service.IXhpcRefundOrderService;
import com.xhpc.payment.service.impl.XhpcUserAccountStatementServiceImpl;
@ -82,6 +87,10 @@ public class XhpcRefundAuditController extends BaseController {
private SmsService smsService;
@Autowired
private TokenService tokenService;
@Autowired
private IXhpcCommonPayment xhpcCommonPayment;
@Autowired
private UserTypeService userTypeService;
private static final Logger logger = LoggerFactory.getLogger(XhpcRefundAuditController.class);
/**
@ -120,14 +129,26 @@ public class XhpcRefundAuditController extends BaseController {
return ajaxResult;
}
String userId = StringUtils.valueOf(map.get("userId"));
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
xhpcAppUser.setIsRefundApplication(0);
int refundApplication = xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
if (refundApplication == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
int source = Integer.parseInt(map.get("source").toString());
if(UserTypeUtil.USER_TYPE.equals(source)){
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
xhpcAppUser.setIsRefundApplication(0);
int refundApplication = xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
if (refundApplication == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), null, 0);
if (i == 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}else{
AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不能退款");
}
if (StatusConstants.REFUND_ORDER_STATUS_SUCCESS == xhpcRefundAudit.getStatus()) {
String type = StringUtils.valueOf(map.get("type"));
if (StatusConstants.OPERATION_WX_TYPE.equals(type)) {
@ -144,14 +165,14 @@ public class XhpcRefundAuditController extends BaseController {
refundOrder.setRemark("退款订单状态不对");
String amount = "-" + StringUtils.valueOf(map.get("amount"));
int source = Integer.parseInt(map.get("source").toString());
String phone="";
if(source==0){
if(UserTypeUtil.USER_TYPE.equals(source)){
phone=map.get("phone").toString();
}else{
phone=map.get("communityPhone").toString();
}
updateXhpcRefundOrder(refundOrder,amount,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amount,userId,phone,2,source,map.get("tenantId").toString());
return AjaxResult.success();
}
@ -188,10 +209,16 @@ public class XhpcRefundAuditController extends BaseController {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
xhpcAppUser.setIsRefundApplication(0);
xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
if(UserTypeUtil.USER_TYPE.equals(userType)){
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
xhpcAppUser.setIsRefundApplication(0);
xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(userType)){
iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), null,0);
}else{
return AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不知申请退款");
}
return AjaxResult.success();
}
@ -216,6 +243,7 @@ public class XhpcRefundAuditController extends BaseController {
XhpcRefundOrder refundOrder=new XhpcRefundOrder();
Long refundOrderId = xhpcRefundAudit.getRefundOrderId();
refundOrder.setRefundOrderId(refundOrderId);
Map<String, Object> xhpcRefundOrder = iXhpcRefundOrderService.info(xhpcRefundAudit.getRefundOrderId());
if (StringUtils.isNull(xhpcRefundOrder)) {
return AjaxResult.error(HttpStatus.DATA_ERROR, "订单不存在");
@ -230,18 +258,27 @@ public class XhpcRefundAuditController extends BaseController {
String userId = StringUtils.valueOf(xhpcRefundOrder.get("userId"));
Double amount = Double.parseDouble(StringUtils.valueOf(xhpcRefundOrder.get("amount")));
String amountRefundOrder = "-" + amount.toString();
String tenantId = StringUtils.valueOf(xhpcRefundOrder.get("tenantId"));
XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_WX_TYPE, refundOrder.getTenantId());
if(xhpcSettingConfig ==null){
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
String examineStatus = StringUtils.valueOf(xhpcRefundOrder.get("examineStatus"));
if (!"1".equals(examineStatus)) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
String status = StringUtils.valueOf(xhpcRefundOrder.get("status"));
if (!"0".equals(status)) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
@ -250,7 +287,7 @@ public class XhpcRefundAuditController extends BaseController {
//证书的地址
//String certPath = ConfigListener.getConf().get("certPath");
//System.out.println("certPath:"+certPath);
httpClient = initCert();
httpClient = initCert(xhpcSettingConfig);
} catch (Exception e) {
e.printStackTrace();
@ -264,29 +301,48 @@ public class XhpcRefundAuditController extends BaseController {
if (refund_fee <= 0) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单金额出错");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单金额出错");
}
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
String balance = StringUtils.valueOf(appUserInfo.get("balance"));
if (StringUtils.isNull(appUserInfo)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
if(UserTypeUtil.USER_TYPE.equals(source)){
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
String balance = StringUtils.valueOf(appUserInfo.get("balance"));
if (StringUtils.isNull(appUserInfo)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
Map<String, Object> communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(Long.parseLong(userId), tenantId);
if (StringUtils.isNull(communityPersonnel)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
String balance = StringUtils.valueOf(communityPersonnel.get("balance"));
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
}else{
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
String result = "";
HttpPost httpPost = new HttpPost(environment.getProperty("WXTRANSFERS"));
StringEntity postEntity = new StringEntity(creatXMLParam(orderOutNumber, refund_fee.toString(), "退款申请", openId), "UTF-8");
HttpPost httpPost = new HttpPost(xhpcSettingConfig.getWxTransfersUrl());
StringEntity postEntity = new StringEntity(creatXMLParam(orderOutNumber, refund_fee.toString(), "退款申请", openId,xhpcSettingConfig), "UTF-8");
httpPost.addHeader("Content-Type", "text/xml");
httpPost.setEntity(postEntity);
try {
@ -305,7 +361,7 @@ public class XhpcRefundAuditController extends BaseController {
} finally {
httpPost.abort();
}
return parseXml(result, xhpcRefundAudit.getRefundOrderId(), BigDecimal.valueOf(amount), userId,phone);
return parseXml(result, xhpcRefundAudit.getRefundOrderId(), BigDecimal.valueOf(amount), userId,phone,source,tenantId);
}
@ -315,13 +371,13 @@ public class XhpcRefundAuditController extends BaseController {
* @param
* @throws Exception
*/
private CloseableHttpClient initCert() throws Exception {
String path = "apiclient_cert.p12";
private CloseableHttpClient initCert(XhpcSettingConfig xhpcSettingConfig) throws Exception {
//String path = "apiclient_cert.p12";
//File file = new File(this.getClass().getResource("/").getPath() + path);
//线上地址
File file = new File("/www/wwwroot/scxhua.cn/xhpc-payment/" + path);
File file = new File(xhpcSettingConfig.getWxApiclientCertPem());
// 证书密码默认为商户ID
String key = environment.getProperty("MCHID");
String key = xhpcSettingConfig.getWxMchId();
// 指定读取证书格式为PKCS12
KeyStore keyStore = KeyStore.getInstance("PKCS12");
// 读取本机存放的PKCS12证书文件
@ -348,7 +404,7 @@ public class XhpcRefundAuditController extends BaseController {
* @param refund_desc 退款原因
* @return
*/
private String creatXMLParam(String partner_trade_no, String amount, String refund_desc, String openid) {
private String creatXMLParam(String partner_trade_no, String amount, String refund_desc, String openid,XhpcSettingConfig xhpcSettingConfig) {
String param = "";
//随机字符串
String nonceStr = WXPayUtil.generateNonceStr();
@ -358,9 +414,9 @@ public class XhpcRefundAuditController extends BaseController {
param += "&check_name=" + "NO_CHECK";
//退款原因
param += "&desc=" + refund_desc;
param += "&mch_appid=" + environment.getProperty("APPID");
param += "&mch_appid=" + xhpcSettingConfig.getWxAppId();
//商户id
param += "&mchid=" + environment.getProperty("MCHID");
param += "&mchid=" + xhpcSettingConfig.getWxMchId();
//随机字符串
param += "&nonce_str=" + nonceStr;
//用户openid
@ -368,7 +424,7 @@ public class XhpcRefundAuditController extends BaseController {
//商户退款单号 一个订单唯一
param += "&partner_trade_no=" + partner_trade_no;
//生成签名 添加key值
String stringSignTemp = param + "&key=" + environment.getProperty("KEY");
String stringSignTemp = param + "&key=" + xhpcSettingConfig.getWxMchKey();
//签名 不参与签名 默认MD5算法
String sign = StringUtils.md5(stringSignTemp);
if(sign.length()!=32){
@ -378,8 +434,8 @@ public class XhpcRefundAuditController extends BaseController {
" <amount>" + amount + "</amount>\n" +
" <check_name>" + "NO_CHECK" + "</check_name>\n" +
" <desc>" + refund_desc + "</desc>\n" +
" <mch_appid>" + environment.getProperty("APPID") + "</mch_appid>\n" +
" <mchid>" + environment.getProperty("MCHID") + "</mchid>\n" +
" <mch_appid>" + xhpcSettingConfig.getWxAppId() + "</mch_appid>\n" +
" <mchid>" + xhpcSettingConfig.getWxMchId() + "</mchid>\n" +
" <nonce_str>" + nonceStr + "</nonce_str>\n" +
" <openid>" + openid + "</openid>\n" +
" <partner_trade_no>" + partner_trade_no + "</partner_trade_no>\n" +
@ -396,7 +452,7 @@ public class XhpcRefundAuditController extends BaseController {
* @param result 请求后的结果
* @return
*/
private AjaxResult parseXml(String result, Long id, BigDecimal amount, String userId,String phone) {
private AjaxResult parseXml(String result, Long id, BigDecimal amount, String userId,String phone,Integer source,String tenantId) {
XhpcRefundOrder refundOrder=new XhpcRefundOrder();
refundOrder.setRefundOrderId(id);
String amountRefundOrder = "-" + amount.toString();
@ -406,18 +462,13 @@ public class XhpcRefundAuditController extends BaseController {
if ("FAIL".equals(result_code)) {
refundOrder.setStatus(2);
refundOrder.setRemark(map.get("err_code_des").toString());
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
logger.info("++++++++++++审核失败原因++++++++++++++++"+map.get("err_code_des").toString()+"错误代码:"+map.get("err_code").toString());
return AjaxResult.error(map.get("err_code_des"));
} else {
//退款成功修改订单
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
if (StringUtils.isNotNull(appUserInfo)) {
refundOrder.setStatus(1);
refundOrder.setRemark("微信退款成功");
refundOrder.setPaymentNo(map.get("payment_no").toString());
refundOrder.setPaymentTime(map.get("payment_time").toString());
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,1);
if(UserTypeUtil.USER_TYPE.equals(source)){
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
String balance = StringUtils.valueOf(appUserInfo.get("balance"));
//减少用户余额
XhpcAppUser xhpcAppUser = new XhpcAppUser();
@ -425,7 +476,18 @@ public class XhpcRefundAuditController extends BaseController {
BigDecimal surplus =new BigDecimal(balance).subtract(amount);
xhpcAppUser.setBalance(surplus);
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
Map<String, Object> communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(Long.parseLong(userId), tenantId);
BigDecimal surplus =new BigDecimal(communityPersonnel.get("balance").toString()).subtract(amount);
int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), surplus,null);
}
refundOrder.setStatus(1);
refundOrder.setRemark("微信退款成功");
refundOrder.setPaymentNo(map.get("payment_no").toString());
refundOrder.setPaymentTime(map.get("payment_time").toString());
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,1,source,tenantId);
return AjaxResult.success("退款成功");
}
} catch (Exception e) {
@ -435,7 +497,7 @@ public class XhpcRefundAuditController extends BaseController {
}
refundOrder.setStatus(2);
refundOrder.setRemark("审核异常");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error();
}
@ -465,17 +527,25 @@ public class XhpcRefundAuditController extends BaseController {
String money = StringUtils.valueOf(xhpcRefundOrder.get("amount"));
String amountRefundOrder = "-" + money;
String examineStatus = StringUtils.valueOf(xhpcRefundOrder.get("examineStatus"));
String tenantId = StringUtils.valueOf(xhpcRefundOrder.get("tenantId"));
XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_ALI_PAY_TYPE, refundOrder.getTenantId());
if(xhpcSettingConfig ==null){
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
if (!"1".equals(examineStatus)) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
String status = StringUtils.valueOf(xhpcRefundOrder.get("status"));
if (!"0".equals(status)) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单状态不能退款");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单状态不能退款");
}
String orderOutNumber = StringUtils.valueOf(xhpcRefundOrder.get("refundOrderNumber"));
@ -488,42 +558,60 @@ public class XhpcRefundAuditController extends BaseController {
if (refund_fee <= 0) {
refundOrder.setStatus(2);
refundOrder.setRemark("订单金额出错");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "订单金额出错");
}
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
String balance = StringUtils.valueOf(appUserInfo.get("balance"));
if (StringUtils.isNull(appUserInfo)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
if(UserTypeUtil.USER_TYPE.equals(source)){
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
String balance = StringUtils.valueOf(appUserInfo.get("balance"));
if (StringUtils.isNull(appUserInfo)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){
Map<String, Object> communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(Long.parseLong(userId), tenantId);
if (StringUtils.isNull(communityPersonnel)) {
refundOrder.setStatus(2);
refundOrder.setRemark("用户不存在");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
String balance = StringUtils.valueOf(communityPersonnel.get("balance"));
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
}else{
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
}
BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount));
if (surplus.compareTo(BigDecimal.ZERO) == -1) {
refundOrder.setStatus(2);
refundOrder.setRemark("余额不足");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足");
}
try {
String orderNumber = "alipay" + DateUtils.timePath();
/** 初始化 **/
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
/** 支付宝网关 **/
certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
certAlipayRequest.setServerUrl(xhpcSettingConfig.getZhbServerUrl());
/** 应用id如何获取请参考https://opensupport.alipay.com/support/helpcenter/190/201602493024 **/
certAlipayRequest.setAppId(environment.getProperty("ALIPAYAPPID"));
certAlipayRequest.setAppId(xhpcSettingConfig.getZfbAppId());
/** 应用私钥, 如何获取请参考https://opensupport.alipay.com/support/helpcenter/207/201602471154?ant_source=antsupport **/
certAlipayRequest.setPrivateKey(environment.getProperty("ALIPAYPRIVATEKEY"));
certAlipayRequest.setPrivateKey(xhpcSettingConfig.getZfbPrivateKey());
/** 应用公钥证书路径,下载后保存位置的绝对路径 **/
certAlipayRequest.setCertPath(environment.getProperty("CERTPATH"));
certAlipayRequest.setCertPath(xhpcSettingConfig.getZfbCallbackUrl());
/** 支付宝公钥证书路径,下载后保存位置的绝对路径 **/
certAlipayRequest.setAlipayPublicCertPath(environment.getProperty("PUBLICCERTPATH"));
certAlipayRequest.setAlipayPublicCertPath(xhpcSettingConfig.getZfbAlipayCertPublicKeyRsa());
/** 支付宝根证书路径,下载后保存位置的绝对路径 **/
certAlipayRequest.setRootCertPath(environment.getProperty("ROOTCRETPATH"));
certAlipayRequest.setRootCertPath(xhpcSettingConfig.getZfbAlipayRootCert());
/** 设置签名类型 **/
certAlipayRequest.setSignType("RSA2");
/** 设置请求格式固定值json **/
@ -558,25 +646,30 @@ public class XhpcRefundAuditController extends BaseController {
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
/** 获取接口调用结果如果调用失败可根据返回错误信息到该文档寻找排查方案https://opensupport.alipay.com/support/helpcenter/107 **/
if (response.isSuccess()) {
Map<String, Object> appUserInfo1 = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
//退款成功修改订单
if (StringUtils.isNotNull(appUserInfo1)) {
if(UserTypeUtil.USER_TYPE.equals(source)){
Map<String, Object> appUserInfo1 = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
if (StringUtils.isNotNull(appUserInfo1)) {
String balance1 = StringUtils.valueOf(appUserInfo1.get("balance"));
//减少用户余额
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
BigDecimal surplus1 =new BigDecimal(balance1).subtract(BigDecimal.valueOf(amount));
xhpcAppUser.setBalance(surplus1);
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
}
}else{
Map<String, Object> communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(Long.parseLong(userId), tenantId);
BigDecimal surplus1 =new BigDecimal(communityPersonnel.get("balance").toString()).subtract(BigDecimal.valueOf(amount));
int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), surplus1,null);
}
refundOrder.setStatus(1);
refundOrder.setRemark("支付宝退款成功");
refundOrder.setOrderId(response.getOrderId());
refundOrder.setPayFundOrderId(response.getPayFundOrderId());
refundOrder.setTransPayTime(response.getTransDate());
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,1);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,1,source,tenantId);
String balance1 = StringUtils.valueOf(appUserInfo1.get("balance"));
//减少用户余额
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(userId));
BigDecimal surplus1 =new BigDecimal(balance1).subtract(BigDecimal.valueOf(amount));
xhpcAppUser.setBalance(surplus1);
xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser);
}
return AjaxResult.success("退款成功");
} else {
System.out.println("调用失败");
@ -588,7 +681,7 @@ public class XhpcRefundAuditController extends BaseController {
}
refundOrder.setStatus(2);
refundOrder.setRemark("调用失败");
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2);
updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId);
return AjaxResult.error("退款失败");
}
@ -605,13 +698,12 @@ public class XhpcRefundAuditController extends BaseController {
* @param phone
* @param type 1成功 2失败
*/
public void updateXhpcRefundOrder(XhpcRefundOrder refundOrder,String amount,String userId,String phone,Integer type){
public void updateXhpcRefundOrder(XhpcRefundOrder refundOrder,String amount,String userId,String phone,Integer type,Integer source,String tenantId){
iXhpcRefundOrderService.update(refundOrder);
if(type ==1){
xhpcUserAccountStatementService.add(refundOrder.getRefundOrderId(), amount, userId, StatusConstants.FLOWING_WATER_REFUND);
xhpcUserAccountStatementService.add(refundOrder.getRefundOrderId(), amount, userId, StatusConstants.FLOWING_WATER_REFUND,source,tenantId);
}else{
xhpcUserAccountStatementService.add(refundOrder.getRefundOrderId(), amount, userId, StatusConstants.FLOWING_WATER_REFUND_ERROE);
xhpcUserAccountStatementService.add(refundOrder.getRefundOrderId(), amount, userId, StatusConstants.FLOWING_WATER_REFUND_ERROE,source,tenantId);
try{
//发送短信
HashMap<String, String> paramMap = new HashMap<>();

View File

@ -1,5 +1,6 @@
package com.xhpc.payment.controller;
import com.xhpc.common.api.UserTypeService;
import com.xhpc.common.core.constant.HttpStatus;
import com.xhpc.common.core.constant.StatusConstants;
import com.xhpc.common.core.utils.StringUtils;
@ -7,6 +8,8 @@ import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.common.security.service.TokenService;
import com.xhpc.common.util.UserTypeUtil;
import com.xhpc.payment.service.IXhpcCommonPayment;
import com.xhpc.payment.service.IXhpcRefundOrderService;
import com.xhpc.system.api.model.LoginUser;
import io.swagger.annotations.Api;
@ -30,6 +33,10 @@ public class XhpcRefundOrderController extends BaseController {
private IXhpcRefundOrderService iXhpcRefundOrderService;
@Autowired
private TokenService tokenService;
@Autowired
private IXhpcCommonPayment xhpcCommonPayment;
@Autowired
private UserTypeService userTypeService;
/**
* 申请退款
*
@ -37,7 +44,14 @@ public class XhpcRefundOrderController extends BaseController {
*/
@PostMapping("/checkOut")
@ApiOperation(value = "申请退款")
public AjaxResult enterpriseCheckOut(@RequestBody Map<String, Object> map) {
public AjaxResult enterpriseCheckOut(HttpServletRequest request,@RequestBody Map<String, Object> map) {
LoginUser loginUser = tokenService.getLoginUser(request);
Long userid = loginUser.getUserid();
Integer userType = loginUser.getUserType();
String tenantId = loginUser.getTenantId();
if(UserTypeUtil.CUSTOMERS_TYPE.equals(userType)){
return AjaxResult.error(HttpStatus.ERROR_STATUS, "大客户不支持退款");
}
String amount = StringUtils.valueOf(map.get("amount"));
if (StringUtils.isEmpty(amount)) {
return AjaxResult.error(HttpStatus.NOT_NULL, "退款金额不能为空");
@ -60,22 +74,20 @@ public class XhpcRefundOrderController extends BaseController {
if (StringUtils.isEmpty(type)) {
return AjaxResult.error(HttpStatus.NOT_NULL, "退款渠道不能为空");
}
//是否有实时数据
int i =iXhpcRefundOrderService.countXhpcRealTimeOrder(Long.valueOf(userId));
int i =iXhpcRefundOrderService.countXhpcRealTimeOrder(userid,userType,tenantId);
if (i > 0) {
return AjaxResult.error(1103, "车辆正在充电,不能退款");
}
// 是否有异常订单
int j =iXhpcRefundOrderService.countXhpcChargeOrder(Long.valueOf(userId));
int j =iXhpcRefundOrderService.countXhpcChargeOrder(userid,userType,tenantId);
if (j > 0) {
return AjaxResult.error(1103, "你有异常订单未解决,请拨打客服电话进行解决");
}
//生成退款订单
String orderOutNumber = StringUtils.numFormat(Long.parseLong(userId), Integer.parseInt(type), StatusConstants.FLOWING_WATER_REFUND_TYPE);
String orderOutNumber = StringUtils.numFormat(userid, Integer.parseInt(type), StatusConstants.FLOWING_WATER_REFUND_TYPE);
String remark = StringUtils.valueOf(map.get("remark"));
return iXhpcRefundOrderService.addRefundOrder(userId, BigDecimal.valueOf(Double.parseDouble(amount)), type, orderOutNumber, openid, remark);
return iXhpcRefundOrderService.addRefundOrder(""+userid, BigDecimal.valueOf(Double.parseDouble(amount)), type, orderOutNumber, openid, remark,userType,tenantId);
}
/**

View File

@ -45,7 +45,7 @@ public class XhpcSettingConfig extends BaseEntity {
*/
private String wxTransfersUrl;
/**
* 微信证书
* 微信证书(apiclient_cert.p12)
*/
private String wxApiclientCertPem;
/**

View File

@ -59,7 +59,7 @@ public interface XhpcRechargeOrderMapper {
* @param createTimeEnd
* @return
*/
public String sumMoney(@Param("phone")String phone,@Param("rechargeOrderNumber") String rechargeOrderNumber,@Param("status") String status,@Param("createTimeStart") String createTimeStart,@Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type);
public String sumMoney(@Param("phone")String phone,@Param("rechargeOrderNumber") String rechargeOrderNumber,@Param("status") String status,@Param("createTimeStart") String createTimeStart,@Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type,@Param("source")Integer source,@Param("userId")Integer userId);
/**

View File

@ -3,6 +3,7 @@ package com.xhpc.payment.mapper;
import com.xhpc.payment.domain.XhpcRefundAudit;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -28,4 +29,10 @@ public interface XhpcRefundAuditMapper {
* @return
*/
public List<Map<String, Object>> list(@Param("refundOrderId") Long refundOrderId);
//社区人员退款或修改 是否有退款订单审核
int updateCommunityPersonnelMoney(@Param("communityPersonnelId")Long communityPersonnelId,@Param("surplusMoney") BigDecimal surplusMoney,@Param("isRefundApplication") Integer isRefundApplication);
//查询社区人员信息
Map<String, Object> getCommunityPersonnelById(@Param("userId")Long userId,@Param("tenantId")String tenantId);
}

View File

@ -86,7 +86,7 @@ public interface XhpcRefundOrderMapper {
* @param userId 用户id
* @return 结果
*/
public List<Map<String, Object>> getNotChargeOrder(@Param("userId") Long userId);
public List<Map<String, Object>> getNotChargeOrder(@Param("userId") Long userId,@Param("userType") Integer userType,@Param("tenantId") String tenantId);
/**
* 通过用户id查询未完成退款订单
@ -100,16 +100,26 @@ public interface XhpcRefundOrderMapper {
/**
* 判断用户是否在充电中
*/
int countXhpcRealTimeOrder(@Param("userId")Long userId);
int countXhpcRealTimeOrder(@Param("userId")Long userId,@Param("source")Integer source,@Param("tenantId")String tenantId);
/**
* 判断用户是否有异常订单未处理
*/
int countXhpcChargeOrder(@Param("userId")Long userId);
int countXhpcChargeOrder(@Param("userId")Long userId,@Param("source")Integer source,@Param("tenantId")String tenantId);
/**
* 定时任务每1小时扫描一次退款订单金额小于100自动审核通过
*/
public List<Long> moneyPage();
/**
* 社区人员是否有退款订单审核0无 1有
* @param userId
* @param isRefundApplication
* @return
*/
int updateRefundApplication(@Param("userId")Long userId,@Param("isRefundApplication")Integer isRefundApplication);
}

View File

@ -66,7 +66,7 @@ public interface IXhpcRechargeOrderService {
* @param createTimeEnd
* @return
*/
public String sumMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type);
public String sumMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer source,Integer userId);
/**
* 新增 充值订单

View File

@ -3,6 +3,7 @@ package com.xhpc.payment.service;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.payment.domain.XhpcRefundAudit;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -28,4 +29,9 @@ public interface IXhpcRefundAuditService {
*/
public List<Map<String, Object>> list(Long refundOrderId);
//社区人员退款
int updateCommunityPersonnelMoney(Long communityPersonnelId, BigDecimal surplusMoney,Integer isRefundApplication);
//查询社区人员信息
Map<String, Object> getCommunityPersonnelById(Long userId,String tenantId);
}

View File

@ -79,7 +79,7 @@ public interface IXhpcRefundOrderService {
* @param remark 备注
* @return
*/
public AjaxResult addRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber, String openid, String remark);
public AjaxResult addRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber, String openid, String remark,Integer userType,String tenantId);
/**
* 通过用户id查询未完成退款订单
@ -98,16 +98,15 @@ public interface IXhpcRefundOrderService {
public int updateStatus(XhpcRefundOrder xhpcRefundOrder);
//是否有正在充电的订单
/**
* 判断用户是否在充电中
*/
int countXhpcRealTimeOrder(Long userId);
int countXhpcRealTimeOrder(Long userId,Integer source,String tenantId);
//是否有异常订单
/**
* 判断用户是否有异常订单未处理
*/
int countXhpcChargeOrder(Long userId);
int countXhpcChargeOrder(Long userId,Integer source,String tenantId);
/**
* 定时任务每5分钟扫描一次退款订单金额小于100自动审核通过

View File

@ -115,9 +115,9 @@ public class XhpcRechargeOrderServiceImpl implements IXhpcRechargeOrderService {
@Override
public String sumMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd, Integer type) {
public String sumMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd, Integer type,Integer source,Integer userId) {
return xhpcRechargeOrderMapper.sumMoney(phone, rechargeOrderNumber, status, createTimeStart, createTimeEnd, type);
return xhpcRechargeOrderMapper.sumMoney(phone, rechargeOrderNumber, status, createTimeStart, createTimeEnd, type,source,userId);
}
/**

View File

@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -65,4 +66,14 @@ public class XhpcRefundAuditServiceImpl implements IXhpcRefundAuditService {
public List<Map<String, Object>> list(Long refundOrderId) {
return xhpcRefundAuditMapper.list(refundOrderId);
}
@Override
public int updateCommunityPersonnelMoney(Long communityPersonnelId, BigDecimal surplusMoney,Integer isRefundApplication) {
return xhpcRefundAuditMapper.updateCommunityPersonnelMoney(communityPersonnelId, surplusMoney,isRefundApplication);
}
@Override
public Map<String, Object> getCommunityPersonnelById(Long userId, String tenantId) {
return xhpcRefundAuditMapper.getCommunityPersonnelById(userId, tenantId);
}
}

View File

@ -3,10 +3,13 @@ package com.xhpc.payment.service.impl;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.xhpc.common.api.UserTypeService;
import com.xhpc.common.core.constant.HttpStatus;
import com.xhpc.common.core.constant.StatusConstants;
import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.utils.StringUtils;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.util.UserTypeUtil;
import com.xhpc.payment.domain.XhpcAppUser;
import com.xhpc.common.domain.XhpcRefundOrder;
import com.xhpc.payment.mapper.XhpcRefundOrderMapper;
@ -36,6 +39,8 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService {
@Autowired
private XhpcUserAccountStatementMapper xhpcUserAccountStatementMapper;
@Autowired
private UserTypeService userTypeService;
/**
* 更新 退款订单
@ -131,12 +136,26 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService {
*/
@Override
@Transactional
public AjaxResult addRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber, String openid, String remark) {
List<Map<String, Object>> list = xhpcRefundOrderMapper.getNotChargeOrder(Long.parseLong(appUserId));
public AjaxResult addRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber, String openid, String remark,Integer userType,String tenantId) {
long userId = Long.parseLong(appUserId);
List<Map<String, Object>> list = xhpcRefundOrderMapper.getNotChargeOrder(userId,userType,tenantId);
if (null != list && list.size() > 0) {
return AjaxResult.error(HttpStatus.ERROR_STATUS, "还有未完成的订单");
}
R user = userTypeService.getUser(null,userId , userType, null, tenantId);
if(user !=null && user.getData() !=null){
if(!UserTypeUtil.USER_TYPE.equals(userType) && !UserTypeUtil.COMMUNIT_TYPE.equals(userType)){
return AjaxResult.error(HttpStatus.ERROR_STATUS, "退款失败请重新申请");
}else if(UserTypeUtil.USER_TYPE.equals(userType)){
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(appUserId));
xhpcAppUser.setIsRefundApplication(UserTypeUtil.REFUND_APPLICATION_ONE);
xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
}else{
xhpcRefundOrderMapper.updateRefundApplication(userId,UserTypeUtil.REFUND_APPLICATION_ONE);
}
}
Map<String, Object> objectMap = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(appUserId));
if (StringUtils.isNull(objectMap)) {
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在");
@ -146,21 +165,19 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService {
return AjaxResult.error(HttpStatus.DATA_ERROR, "用户已存在退款订单");
}
XhpcRefundOrder xhpcRefundOrder = new XhpcRefundOrder();
xhpcRefundOrder.setUserId(Long.parseLong(appUserId));
xhpcRefundOrder.setUserId(userId);
xhpcRefundOrder.setAmount(amount);
xhpcRefundOrder.setRefundOrderNumber(refundOrderNumber);
xhpcRefundOrder.setType(Integer.parseInt(type));
xhpcRefundOrder.setRemark(remark);
xhpcRefundOrder.setSource(userType);
if (StatusConstants.OPERATION_WX_TYPE.equals(type)) {
xhpcRefundOrder.setOpenId(openid);
} else {
xhpcRefundOrder.setAlipayId(openid);
}
xhpcRefundOrderMapper.insert(xhpcRefundOrder);
XhpcAppUser xhpcAppUser = new XhpcAppUser();
xhpcAppUser.setAppUserId(Long.parseLong(appUserId));
xhpcAppUser.setIsRefundApplication(1);
xhpcUserAccountStatementMapper.updateAppUserRefundApplication(xhpcAppUser);
return AjaxResult.success();
}
@ -187,13 +204,13 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService {
}
@Override
public int countXhpcRealTimeOrder(Long userId) {
return xhpcRefundOrderMapper.countXhpcRealTimeOrder(userId);
public int countXhpcRealTimeOrder(Long userId,Integer source,String tenantId) {
return xhpcRefundOrderMapper.countXhpcRealTimeOrder(userId,source,tenantId);
}
@Override
public int countXhpcChargeOrder(Long userId) {
return xhpcRefundOrderMapper.countXhpcChargeOrder(userId);
public int countXhpcChargeOrder(Long userId,Integer source,String tenantId) {
return xhpcRefundOrderMapper.countXhpcChargeOrder(userId,source,tenantId);
}
@Override

View File

@ -79,7 +79,7 @@ public class XhpcUserAccountStatementServiceImpl implements IXhpcUserAccountStat
* @param userId 用户id
* @param type 操作类型1充值 2退款 3充电
*/
public void add(Long id, String amount, String userId, Integer type) {
public void add(Long id, String amount, String userId, Integer type,Integer source,String tenantId) {
XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement();
xhpcUserAccountStatement.setAmount(BigDecimal.valueOf(Double.valueOf(amount)));
if (StatusConstants.FLOWING_WATER_RECHARGE == type) {
@ -91,6 +91,8 @@ public class XhpcUserAccountStatementServiceImpl implements IXhpcUserAccountStat
}
xhpcUserAccountStatement.setUserId(Long.parseLong(userId));
xhpcUserAccountStatement.setType(type);
xhpcUserAccountStatement.setSource(source);
xhpcUserAccountStatement.setTenantId(tenantId);
Map<String, Object> appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId));
if (StringUtils.isNotNull(appUserInfo)) {
String balance = StringUtils.valueOf(appUserInfo.get("balance"));

View File

@ -201,7 +201,7 @@
AND xro.type = #{type}
</if>
<if test="userId != null">
and xro.userId=#{userId}
and xro.user_id=#{userId}
</if>
ORDER BY xro.create_time DESC
</select>
@ -230,6 +230,12 @@
<if test="type != null and type != ''">
AND xro.type = #{type}
</if>
<if test="source != null">
AND xro.source = #{source}
</if>
<if test="userId != null">
and xro.user_id=#{userId}
</if>
ORDER BY xro.create_time DESC
</select>

View File

@ -90,4 +90,38 @@
ORDER BY xra.create_time DESC
</select>
<update id="updateCommunityPersonnelMoney">
UPDATE xhpc_community_personnel
<set>
<if test="null != surplusMoney">surplus_money = #{surplusMoney},</if>
<if test="null != isRefundApplication">is_refund_application = #{isRefundApplication},</if>
</set>
WHERE community_personnel_id = #{communityPersonnelId}
</update>
<select id="getCommunityPersonnelById" resultType="map">
select
community_personnel_id as appUserId,
account as account,
phone as phone,
is_refund_application as isRefundApplication,
is_refund as isRefund,
soc as soc,
surplus_money as balance,
avatar as avatar,
status,
weixin_open_id as weixinlogin,
alipay_open_id as alipayLogin,
weixin_login as weixinOpenId,
alipay_login as alipayLogin,
tenant_id tenantId,
del_flag delFlag,
concat(2) as userType,
concat("ST") as userTypeName,
create_time as createTime
from xhpc_community_personnel
where community_personnel_id=#{userId} and tenant_id=#{tenantId}
</select>
</mapper>

View File

@ -171,7 +171,7 @@
</update>
<select id="info" parameterType="java.lang.Long" resultType="java.util.Map">
select xro.refund_order_id refundOrderId ,xro.refund_order_number refundOrderNumber,
select xro.refund_order_id refundOrderId ,xro.refund_order_number refundOrderNumber,xro.tenant_id tenantId,
xro.alipay_id alipayId ,xro.open_id openId,xro.user_id userId,xro.amount,xro.source source,cop.phone communityPhone,
xro.type,xro.examine_status examineStatus,xro.`status`,xro.source source,xro.create_time createTime,xau.phone,
sdd.dict_label statusName,sdds.dict_label examineStatusName
@ -275,6 +275,12 @@
<if test="userId != null and userId != ''">
and xco.user_id = #{userId}
</if>
<if test="tenantId !=null and tenantId !=''">
and xco.tenant_id = #{tenantId}
</if>
<if test="source !=null">
and xco.source = #{source}
</if>
ORDER BY xco.create_time DESC
</select>
@ -302,11 +308,31 @@
<select id="countXhpcRealTimeOrder" resultType="int">
select count(charge_order_id) from xhpc_charge_order where user_id =#{userId} and status=0 and del_flag =0 limit 1
select
count(charge_order_id)
from xhpc_charge_order
where user_id =#{userId}
and status=0 and del_flag =0
<if test="tenantId !=null and tenantId !=''">
and tenant_id=#{tenantId}
</if>
<if test="source !=null">
and source=#{source}
</if>
limit 1
</select>
<select id="countXhpcChargeOrder" resultType="int">
select count(charge_order_id) from xhpc_charge_order where user_id =#{userId} and status =2 and del_flag =0
select
count(charge_order_id)
from xhpc_charge_order
where user_id =#{userId} and status =2 and del_flag =0
<if test="tenantId !=null and tenantId !=''">
and tenant_id=#{tenantId}
</if>
<if test="source !=null">
and source=#{source}
</if>
</select>
<select id="moneyPage" resultType="long">
@ -314,4 +340,8 @@
from xhpc_refund_order xro
where xro.del_flag = 0 and xro.examine_status=0 and xro.status=0 and amount&lt;=100
</select>
<update id="updateRefundApplication">
UPDATE xhpc_community_personnel set is_refund_application=#{isRefundApplication} where community_personnel_id=#{userId}
</update>
</mapper>

View File

@ -69,7 +69,10 @@
remark,
</if>
<if test="null != source">
source
source,
</if>
<if test="null != tenantId and tenantId !=''">
tenant_id
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -116,7 +119,10 @@
#{remark},
</if>
<if test="null != source">
#{source}
#{source},
</if>
<if test="null != tenantId and tenantId !=''">
#{tenantId},
</if>
</trim>
</insert>

View File

@ -286,8 +286,8 @@ public class XhpcAppUserController extends BaseController {
*/
@ApiOperation("注销账号")
@PostMapping("/logout")
public R<?> logout(String phone, String code) {
return iXhpcAppUserUserService.logout(phone, code);
public R<?> logout(HttpServletRequest request,String phone, String code) {
return iXhpcAppUserUserService.logout(request,phone, code);
}
@ -315,7 +315,6 @@ public class XhpcAppUserController extends BaseController {
@PostMapping("/batteryProtect")
public R<?> batteryProtect(HttpServletRequest request,@RequestBody Map<String, Object> map) {
if(map !=null){
Integer soc = Integer.parseInt(map.get("soc").toString());
Integer socProtect = Integer.parseInt(map.get("socProtect").toString());
Integer userType = Integer.parseInt(map.get("userType").toString());

View File

@ -3,6 +3,7 @@ package com.xhpc.user.mapper;
import com.xhpc.user.domain.XhpcAppUser;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -81,7 +82,7 @@ public interface XhpcAppUserMapper {
/**
* 记录登录用户的最后一次数据
*/
int addUserLoginTime(@Param("appUserId")Long appUserId, @Param("account")String account, @Param("userType")Integer userType, @Param("openId")String openId,@Param("type")Integer type,@Param("status")Integer status,@Param("tenantId")String tenantId);
int addUserLoginTime(@Param("appUserId")Long appUserId, @Param("account")String account, @Param("userType")Integer userType, @Param("openId")String openId, @Param("type")Integer type, @Param("status")Integer status, @Param("tenantId")String tenantId, @Param("createTime") Date createTime);
/**
* 修改社区用户信息

View File

@ -97,7 +97,7 @@ public interface IXhpcAppUserUserService {
* @param code
* @return
*/
public R<?> logout(String phone, String code);
public R<?> logout(HttpServletRequest request,String phone, String code);
/**
* 设置小程序用户自动退款功能

View File

@ -162,7 +162,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
}
}
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(info.getAppUserId(),info.getPhone(),UserTypeUtil.USER_TYPE,openid,Integer.valueOf(type),null,tenantId);
xhpcAppUserMapper.addUserLoginTime(info.getAppUserId(),info.getPhone(),UserTypeUtil.USER_TYPE,openid,Integer.valueOf(type),null,tenantId,new Date());
return R.fail(HttpStatus.ALREADY_EXISTING, "账号已存在");
}
XhpcAppUser xhpcAppUser = new XhpcAppUser();
@ -259,7 +259,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
}
}
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(appUserId,username,userInfo.getUserType(),openid,Integer.valueOf(type),null,tenantId);
xhpcAppUserMapper.addUserLoginTime(appUserId,username,userInfo.getUserType(),openid,Integer.valueOf(type),null,tenantId,new Date());
redisService.deleteObject("pvToken:" + username);
// 获取登录token
@ -323,7 +323,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
redisService.deleteObject("pvToken:" + user.getPhone());
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(user.getAppUserId(),username,userInfo.getUserType(),openid,Integer.valueOf(type),UserConstants.LOGIN,tenantId);
xhpcAppUserMapper.addUserLoginTime(user.getAppUserId(),username,userInfo.getUserType(),openid,Integer.valueOf(type),UserConstants.LOGIN,tenantId,new Date());
// 获取登录token
return R.ok(tokenService.createToken(userInfo));
}
@ -356,7 +356,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
}
xhpcAppUserMapper.update(appUser);
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(appUser.getAppUserId(),username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId);
xhpcAppUserMapper.addUserLoginTime(appUser.getAppUserId(),username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId,new Date());
}
}else if(UserTypeUtil.COMMUNIT_TYPE.equals(userType)){
if (StatusConstants.OPERATION_WX_TYPE.equals(type)) {
@ -365,7 +365,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
xhpcAppUserMapper.updateCommunityPersonnel(userid,null,null,null,UserConstants.NO_LOGIN);
}
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(userid,username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId);
xhpcAppUserMapper.addUserLoginTime(userid,username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId,new Date());
}else if(UserTypeUtil.CUSTOMERS_TYPE.equals(userType)){
if (StatusConstants.OPERATION_WX_TYPE.equals(type)) {
xhpcAppUserMapper.updateCustomersPersonnel(userid,null,null,UserConstants.NO_LOGIN,null);
@ -373,7 +373,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
xhpcAppUserMapper.updateCustomersPersonnel(userid,null,null,null,UserConstants.NO_LOGIN);
}
//添加最后一次登录数据
xhpcAppUserMapper.addUserLoginTime(userid,username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId);
xhpcAppUserMapper.addUserLoginTime(userid,username,userType,openId,Integer.valueOf(type),UserConstants.NO_LOGIN,tenantId,new Date());
}
}
// 删除用户缓存记录
@ -440,10 +440,8 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
map.put("servicePhone",servicePhone);
map.put("activity",1);
map.put("activitySize",1);
map.put("activityImg","https://www.scxhua.cn/static/img/logo1.8460b7f4.png");
map.put("socSize",98);
map.put("socUser",80);
map.put("socProtect",1);
map.put("activityImg","https://xhpc-bucket1.oss-cn-hangzhou.aliyuncs.com/bunengshanchu/1.png");
map.put("socSize",redisService.getCacheObject("global:SOC"));
return AjaxResult.success(map);
}else{
@ -460,7 +458,8 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
*/
@Override
@Transactional
public R<?> logout(String phone, String code) {
public R<?> logout(HttpServletRequest request,String phone, String code) {
if (StringUtils.isEmpty(code)) {
return R.fail(HttpStatus.NOT_NULL, "验证码不能为空");
}
@ -471,11 +470,19 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
if (!code.equalsIgnoreCase(captcha)) {
return R.fail(HttpStatus.ERROR_STATUS, "验证码错误");
}
XhpcAppUser xhpcAppUser = xhpcAppUserMapper.getAppUserByPhone(phone);
if (StringUtils.isNull(xhpcAppUser)) {
return R.fail(HttpStatus.ERROR_STATUS, "用户不存在");
LoginUser loginUser = tokenService.getLoginUser(request);
Long userid = loginUser.getUserid();
Integer userType = loginUser.getUserType();
String tenantId = loginUser.getTenantId();
if(UserTypeUtil.USER_TYPE.equals(userType)){
XhpcAppUser xhpcAppUser = xhpcAppUserMapper.getAppUserByPhone(phone);
if (StringUtils.isNull(xhpcAppUser)) {
return R.fail(HttpStatus.ERROR_STATUS, "用户不存在");
}
xhpcAppUserMapper.deleteById(xhpcAppUser.getAppUserId());
}else{
return R.fail(HttpStatus.ERROR_STATUS, "用户不能注销");
}
xhpcAppUserMapper.deleteById(xhpcAppUser.getAppUserId());
redisService.deleteObject("pvToken:" + phone);
return R.ok();
}
@ -507,11 +514,8 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
@Override
public R<?> batteryProtect(HttpServletRequest request, Integer soc,Integer socProtect,Integer userType) {
LoginUser loginUser = logUserUtils.getLogUser(request);
Object version = redisService.getCacheObject("global:version");
Object servicePhone = redisService.getCacheObject("global:phone");
//根据不同的用户类型查询不同的信息
Long userid = loginUser.getUserid();
R user = userTypeService.getUser(null, loginUser.getUserid(), loginUser.getUserType(), null,loginUser.getTenantId());
if(user !=null && user.getData() !=null){
Map<String, Object> map = (Map<String, Object>)user.getData();
@ -525,7 +529,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
}else if(UserTypeUtil.CUSTOMERS_TYPE.equals(userType)){
xhpcAppUserMapper.updateCustomersSocProtect(userid,socProtect,soc);
}
return R.fail(HttpStatus.ERROR_STATUS, "设置失败");
return R.fail(HttpStatus.SUCCESS, "设置成功");
}
return R.fail(HttpStatus.ERROR_STATUS, "设置失败");
}

View File

@ -48,6 +48,10 @@ public class XhpcCommunityServiceImpl implements IXhpcCommunityService {
@Override
public AjaxResult addCommunity(XhpcCommunity xhpcCommunity) {
boolean judge = judgeXhpcCommunity(xhpcCommunity);
if(!judge){
return AjaxResult.error("参数必填");
}
//名称重复不能入库
Map<String, Object> communityById = xhpcCommunityMapper.getCommunityById(null, xhpcCommunity.getName(), null);
if(communityById !=null){
@ -84,6 +88,11 @@ public class XhpcCommunityServiceImpl implements IXhpcCommunityService {
@Override
public AjaxResult updateCommunity(XhpcCommunity xhpcCommunity) {
boolean judge = judgeXhpcCommunity(xhpcCommunity);
if(!judge){
return AjaxResult.error("参数必填");
}
//名称重复不能入库
Map<String, Object> communityById = xhpcCommunityMapper.getCommunityById(xhpcCommunity.getCommunityId(), xhpcCommunity.getName(), 2);
if(communityById !=null){
@ -118,6 +127,10 @@ public class XhpcCommunityServiceImpl implements IXhpcCommunityService {
@Override
@Transactional
public AjaxResult addCommunityPersonnel(XhpcCommunityPersonnel xhpcCommunityPersonnel) {
boolean judge = judgeXhpcCommunityPersonnel(xhpcCommunityPersonnel);
if(!judge){
return AjaxResult.error("参数必填");
}
String phone = xhpcCommunityPersonnel.getPhone();
String account = xhpcCommunityPersonnel.getAccount();
Map<String, Object> communityPersonnelById = xhpcCommunityMapper.getCommunityPersonnelById(null, phone, account, 3);
@ -149,6 +162,10 @@ public class XhpcCommunityServiceImpl implements IXhpcCommunityService {
@Override
public AjaxResult updateCommunityPersonnel(XhpcCommunityPersonnel xhpcCommunityPersonnel) {
boolean judge = judgeXhpcCommunityPersonnel(xhpcCommunityPersonnel);
if(!judge){
return AjaxResult.error("参数必填");
}
Long communityPersonnelId = xhpcCommunityPersonnel.getCommunityPersonnelId();
String phone = xhpcCommunityPersonnel.getPhone();
String account = xhpcCommunityPersonnel.getAccount();
@ -217,4 +234,38 @@ public class XhpcCommunityServiceImpl implements IXhpcCommunityService {
}
return AjaxResult.error("充值金额必需大于0");
}
public boolean judgeXhpcCommunity(XhpcCommunity xhpcCommunity){
if(xhpcCommunity.getName()==null || "".equals(xhpcCommunity.getName())){
return false;
}
if(xhpcCommunity.getContactName()==null || "".equals(xhpcCommunity.getContactName())){
return false;
}
if(xhpcCommunity.getContactPhone()==null || "".equals(xhpcCommunity.getContactPhone())){
return false;
}
if(xhpcCommunity.getAddress()==null || "".equals(xhpcCommunity.getAddress())){
return false;
}
return true;
}
public boolean judgeXhpcCommunityPersonnel(XhpcCommunityPersonnel xhpcCommunityPersonnel){
if(xhpcCommunityPersonnel.getName()==null || "".equals(xhpcCommunityPersonnel.getName())){
return false;
}
if(xhpcCommunityPersonnel.getAccount()==null || "".equals(xhpcCommunityPersonnel.getAccount()) || !"ST".equals(xhpcCommunityPersonnel.getAccount().substring(0,2))){
return false;
}
if(xhpcCommunityPersonnel.getPhone()==null || "".equals(xhpcCommunityPersonnel.getPhone()) || xhpcCommunityPersonnel.getPhone().length()!=11){
return false;
}
return true;
}
}

View File

@ -5,6 +5,7 @@ import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.security.service.TokenService;
import com.xhpc.common.util.UserTypeUtil;
import com.xhpc.system.api.model.LoginUser;
import com.xhpc.user.domain.XhpcCommunity;
import com.xhpc.user.domain.XhpcCustomers;
import com.xhpc.user.domain.XhpcCustomersPersonnel;
import com.xhpc.user.mapper.XhpcCustomersMapper;
@ -53,7 +54,10 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
@Override
public AjaxResult addCustomers(HttpServletRequest request, XhpcCustomers xhpcCustomers) {
boolean b = judgeXhpcCustomers(xhpcCustomers);
if(b){
return AjaxResult.error("参数比传");
}
//名称重复不能入库
Map<String, Object> communityById = xhpcCustomersMapper.getCustomersById(null, xhpcCustomers.getName(), null);
if(communityById !=null){
@ -109,6 +113,10 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
@Override
public AjaxResult updateCustomers(XhpcCustomers xhpcCustomers) {
boolean b = judgeXhpcCustomers(xhpcCustomers);
if(b){
return AjaxResult.error("参数比传");
}
//名称重复不能入库
Map<String, Object> customersById = xhpcCustomersMapper.getCustomersById(xhpcCustomers.getCustomersId(), xhpcCustomers.getName(), 2);
if(customersById !=null){
@ -135,6 +143,10 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
@Override
public AjaxResult addCustomersPersonnel(XhpcCustomersPersonnel xhpcCustomersPersonnel) {
boolean b = judgeXhpcCustomersPersonnel(xhpcCustomersPersonnel);
if(b){
return AjaxResult.error("参数比传");
}
String phone = xhpcCustomersPersonnel.getPhone();
String account = xhpcCustomersPersonnel.getAccount();
Map<String, Object> communityPersonnelById = xhpcCustomersMapper.getCustomersPersonnelById(null, phone, account, 3);
@ -147,9 +159,11 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
}
}
BigDecimal rechargeMoney = xhpcCustomersPersonnel.getRechargeMoney();
if(new BigDecimal(0).compareTo(rechargeMoney)==-1){
//增加社区用户的剩余金额
xhpcCustomersPersonnel.setSurplusMoney(rechargeMoney);
if(rechargeMoney !=null){
if(new BigDecimal(0).compareTo(rechargeMoney)==-1){
//增加社区用户的剩余金额
xhpcCustomersPersonnel.setSurplusMoney(rechargeMoney);
}
}
xhpcCustomersMapper.addCustomersPersonnel(xhpcCustomersPersonnel);
//增加一条充值记录
@ -166,6 +180,10 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
@Override
public AjaxResult updateCustomersPersonnel(XhpcCustomersPersonnel xhpcCustomersPersonnel) {
boolean b = judgeXhpcCustomersPersonnel(xhpcCustomersPersonnel);
if(b){
return AjaxResult.error("参数比传");
}
Long customersPersonnelId = xhpcCustomersPersonnel.getCustomersPersonnelId();
String phone = xhpcCustomersPersonnel.getPhone();
String account = xhpcCustomersPersonnel.getAccount();
@ -231,4 +249,36 @@ public class XhpcCustomersServiceImpl implements IXhpcCustomersService {
public void updateCustomersPersonnelStatus(XhpcCustomersPersonnel xhpcCustomersPersonnel) {
xhpcCustomersMapper.updateCustomersPersonnelStatus(xhpcCustomersPersonnel.getCustomersPersonnelId(),xhpcCustomersPersonnel.getStatus());
}
public boolean judgeXhpcCustomers(XhpcCustomers xhpcCustomers){
if(xhpcCustomers.getName()==null || "".equals(xhpcCustomers.getName())){
return false;
}
if(xhpcCustomers.getContactName()==null || "".equals(xhpcCustomers.getContactName())){
return false;
}
if(xhpcCustomers.getContactPhone()==null || "".equals(xhpcCustomers.getContactPhone())){
return false;
}
if(xhpcCustomers.getAddress()==null || "".equals(xhpcCustomers.getAddress())){
return false;
}
return true;
}
public boolean judgeXhpcCustomersPersonnel(XhpcCustomersPersonnel xhpcCustomersPersonnel){
if(xhpcCustomersPersonnel.getName()==null || "".equals(xhpcCustomersPersonnel.getName())){
return false;
}
if(xhpcCustomersPersonnel.getAccount()==null || "".equals(xhpcCustomersPersonnel.getAccount()) || "BE".equals(xhpcCustomersPersonnel.getAccount().substring(0,2))){
return false;
}
if(xhpcCustomersPersonnel.getPhone()==null || "".equals(xhpcCustomersPersonnel.getPhone()) || xhpcCustomersPersonnel.getPhone().length() !=11){
return false;
}
return true;
}
}

View File

@ -296,5 +296,5 @@
#{source},
</if>
</trim>
= </insert>
</insert>
</mapper>

View File

@ -277,7 +277,10 @@
status,
</if>
<if test="tenantId !=null and tenantId !=''">
tenant_id
tenant_id,
</if>
<if test="createTime !=null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -302,6 +305,9 @@
<if test="tenantId !=null and tenantId !=''">
#{tenantId},
</if>
<if test="createTime !=null">
#{createTime},
</if>
</trim>
</insert>
@ -338,6 +344,7 @@
<if test="tenantId !=null and tenantId !=''">
and tenant_id=#{tenantId}
</if>
order by create_time desc
limit 1
</select>
</mapper>

View File

@ -12,7 +12,7 @@
phone as phone,
is_refund_application as isRefundApplication,
is_refund as isRefund,
soc as soc,
soc as socUser,
balance as balance,
avatar as avatar,
status,
@ -24,6 +24,7 @@
concat(0) as userType,
concat("C") as userTypeName,
tenant_id tenantId,
soc_protect socProtect,
create_time as createTime
from xhpc_app_user
where del_flag=0
@ -45,7 +46,7 @@
phone as phone,
is_refund_application as isRefundApplication,
is_refund as isRefund,
soc as soc,
soc as socUser,
surplus_money as balance,
avatar as avatar,
status,
@ -56,6 +57,7 @@
tenant_id tenantId,
del_flag delFlag,
concat(2) as userType,
soc_protect socProtect,
concat("ST") as userTypeName,
<if test="serialNumber !=null and serialNumber !=''">
(select count(charging_station_id) from xhpc_mechanism where community_id=mechanism_id and source=0 and charging_station_id in (select charging_station_id from xhpc_terminal where 1=1 and del_flag=0 and serial_number=#{serialNumber})) as number,
@ -81,7 +83,7 @@
phone as phone,
is_refund_application as isRefundApplication,
is_refund as isRefund,
soc as soc,
soc as socUser,
surplus_money as balance,
avatar as avatar,
status,
@ -92,6 +94,7 @@
del_flag delFlag,
tenant_id tenantId,
concat(3) as userType,
soc_protect socProtect,
concat("BE") as userTypeName,
<if test="serialNumber !=null and serialNumber !=''">
(select count(charging_station_id) from xhpc_mechanism where customers_id=mechanism_id and source=1 and charging_station_id in (select charging_station_id from xhpc_terminal where 1=1 and del_flag=0 and serial_number=#{serialNumber})) as number,

View File

@ -379,6 +379,7 @@
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="isRefundApplication != null">is_refund_application = #{isRefundApplication},</if>
</trim>
where community_personnel_id=#{communityPersonnelId}
</update>
@ -390,4 +391,5 @@
<update id="updateCommunityPersonnelStatus">
update xhpc_community_personnel set status=#{status} where community_personnel_id=#{communityPersonnelId}
</update>
</mapper>