diff --git a/mallinkAdmin/src/main/java/com/iformall/config/MyExecutorConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/MyExecutorConfig.java new file mode 100644 index 000000000..c60425e84 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/config/MyExecutorConfig.java @@ -0,0 +1,26 @@ +package com.iformall.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.AsyncTaskExecutor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ThreadPoolExecutor; + +@Configuration +public class MyExecutorConfig { + /** + * 自定义异步线程池 + * + * @return + */ + @Bean + public AsyncTaskExecutor taskExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setThreadNamePrefix("Anno-Executor"); + executor.setMaxPoolSize(100); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return executor; + } +} + diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java b/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java index d7224312d..063cc2f1f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/UploadController.java @@ -209,17 +209,8 @@ public class UploadController extends BaseController { metadata.setContentType(multiReq.getContentType()); metadata.setContentLength(multiReq.getSize()); - FileOutputStream fos = null; - BufferedInputStream fs = null; - - String fileName = ""; - int dot = multiReq.getOriginalFilename().lastIndexOf('.'); - if (dot >= 0) { - fileName = "cimg/" + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); - } else { - fileName = "cimg/" + UUID.randomUUID().toString(); - } - + String fileName = multiReq.getOriginalFilename(); + fileName = "cimg/" + fileName; ResultData data = awsUpload(multiReq, metadata, fileName); return data; } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index 3a655f131..b3870c09e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -1,6 +1,7 @@ package com.iformall.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; @@ -261,8 +262,9 @@ public class WxCUserBasicInfoController extends BaseController { @GetMapping("/queryTemplateCount") public ResultData queryTemplateCount() { - String userId = getUser().getId().toString(); - Map entries = stringRedisTemplate.opsForHash().entries(userId); + String importKey = "import-" + getUser().getId(); + Map entries = stringRedisTemplate.opsForHash().entries(importKey); + logger.info(JSONArray.toJSONString(entries) + ">>>>>>>>>>>>>>>>>>>>>1"); if (entries.size() < 4) { entries.clear(); return new ResultData(Result.SUCCESS, "ok", entries); @@ -272,21 +274,22 @@ public class WxCUserBasicInfoController extends BaseController { String successCount = entries.get("successCount").toString(); String failCount = entries.get("failCount").toString(); - if (allCount.equals(failCount)) {//stringRedisTemplate.expire(userId,1,TimeUnit.SECONDS); + if (StringUtils.isNotBlank(failCount) && allCount.equals(failCount)) {//stringRedisTemplate.expire(userId,1,TimeUnit.SECONDS); + logger.info(JSONArray.toJSONString(entries) + ">>>>>>>>>>>>>>>>>>>>>2"); //完全失败 - stringRedisTemplate.opsForHash().delete(userId, "allCount"); - stringRedisTemplate.opsForHash().delete(userId, "allSuccessCount"); - stringRedisTemplate.opsForHash().delete(userId, "successCount"); - stringRedisTemplate.opsForHash().delete(userId, "failCount"); + stringRedisTemplate.opsForHash().delete(importKey, "allCount"); + stringRedisTemplate.opsForHash().delete(importKey, "allSuccessCount"); + stringRedisTemplate.opsForHash().delete(importKey, "successCount"); + stringRedisTemplate.opsForHash().delete(importKey, "failCount"); return new ResultData(ErrorCode.MEM_IMPORT_ERR); } //导入完成 - if (allSuccessCount.equals(successCount)) { + if (StringUtils.isNotBlank(allSuccessCount) && allSuccessCount.equals(successCount)) { ResultData ok = new ResultData(Result.SUCCESS, "ok", entries); - stringRedisTemplate.opsForHash().delete(userId, "allCount"); - stringRedisTemplate.opsForHash().delete(userId, "allSuccessCount"); - stringRedisTemplate.opsForHash().delete(userId, "successCount"); - stringRedisTemplate.opsForHash().delete(userId, "failCount"); + stringRedisTemplate.opsForHash().delete(importKey, "allCount"); + stringRedisTemplate.opsForHash().delete(importKey, "allSuccessCount"); + stringRedisTemplate.opsForHash().delete(importKey, "successCount"); + stringRedisTemplate.opsForHash().delete(importKey, "failCount"); return ok; } return new ResultData(Result.SUCCESS, "查询成功", entries); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java index bce24ee6f..ec598a3ba 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarCallBackController.java @@ -228,10 +228,17 @@ public class WxCarCallBackController extends BaseController { logger.info("["+getIpAddr()+"etcpPaidCallback: " + paramMap.toString()); String carNumber = paramMap.get("plateNumber"); - // TODO how to get the parkId + // 根据orderId获取入场信息,确定租户ID + String orderId = paramMap.get("orderId"); + HashMap map = new HashMap(); + map.put("synId", orderId); + String tenant_id = wxCarCmdLogService.getTenantIdBySynId(map); Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + if(StringUtils.isNotBlank(tenant_id)) { + wxCarCmdLog.setTenantId(tenant_id); + } wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PAY_MANUAL.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java index d204ec946..6b043e982 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCardPayController.java @@ -148,8 +148,8 @@ public class WxCardPayController extends BaseController { } MallUserInfo user = getUser(); wxCardSpend.setTenantId(user.getTenantId()); - int num = wxCardSpendService.update(wxCardSpend); - return new ResultData(num); + wxCardSpendService.update(wxCardSpend); + return new ResultData(); } @ApiOperation("卡完结") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java index 2643004e1..4ea2b0852 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -110,7 +110,7 @@ public class WxCouponOrderController extends BaseController { } catch (Exception e) { wxCouponOrder.setEndDate(null); } - + wxCouponOrder.setSortColumns(WxCouponOrder.Field.Id_DESC); wxCouponOrderService.exportData(request, response, wxCouponOrder); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java index 5bd35d38e..6558df02b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantMicroPayController.java @@ -4,22 +4,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxOrderReportDto; import com.iformall.domain.vo.WxMerchantMicroPayVo; -import com.iformall.domain.vo.WxMerchantTradeDailyVo; +import com.iformall.enums.EnumOrderStatus; import com.iformall.enums.EnumOrderType; import com.iformall.service.MarkingDataReportService; -import com.iformall.service.WxMerchantTradeDailyService; -import com.iformall.service.WxOrderService; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; @RestController @RequestMapping("wxMerchantMicroPay") @@ -36,6 +29,7 @@ public class WxMerchantMicroPayController extends BaseController { WxOrderReportDto wxOrderReportDto = new WxOrderReportDto(); wxOrderReportDto.setTenantId(getTenantId()); wxOrderReportDto.setType(EnumOrderType.MICROPAY.getCode()); + wxOrderReportDto.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); return new ResultData(markingDataReportService.listOrderReportByDate(wxOrderReportDto)); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantSubsidyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantSubsidyController.java index a2da9a647..abcccf83f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantSubsidyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantSubsidyController.java @@ -130,6 +130,7 @@ public class WxMerchantSubsidyController extends BaseController { wxMerchantSubsidy.setStatusS(tmpList); } } + wxMerchantSubsidy.setSortColumns(WxMerchantSubsidy.Field.CreateDate_DESC); wxMerchantSubsidyService.exportData(wxMerchantSubsidy, request, response); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java index 7f3d6b815..046ea31d0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java @@ -107,7 +107,7 @@ public class WxMsgController extends BaseController { if (phones.equals("")) {//没有手工输入手机号时解析标签,有,继续流转 phones = parselabel(wxMsg.getTenantId(), wxMsg); if (phones.equals("")) {//解析之后手机号依然不存在时返回 - return new ResultData(ErrorCode.MSG_PHONE_NOT_FOUND); + return new ResultData(ErrorCode.MSG_NO_VALID_PHONE); } } diff --git a/mallinkAdmin/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java b/mallinkAdmin/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java index c0e7a01d6..4df979d09 100644 --- a/mallinkAdmin/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java +++ b/mallinkAdmin/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java @@ -17,7 +17,9 @@ public class HttpServletRequestWrapperFilter implements Filter { ServletRequest requestWrapper = null; if (request instanceof HttpServletRequest) { String url = ((HttpServletRequest) request).getRequestURI(); - if (!url.contains("awsFileUpload") && !url.contains("ueditor/exec") + if (!url.contains("awsFileUpload") + && !url.contains("cimgUpload") + && !url.contains("ueditor/exec") && !url.contains("/wxCUserBasicInfo/importTemplate")) { requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request); } else { diff --git a/mallinkAdmin/src/main/java/com/iformall/interceptor/RequestInterceptor.java b/mallinkAdmin/src/main/java/com/iformall/interceptor/RequestInterceptor.java index bc04dfea6..3adf70465 100644 --- a/mallinkAdmin/src/main/java/com/iformall/interceptor/RequestInterceptor.java +++ b/mallinkAdmin/src/main/java/com/iformall/interceptor/RequestInterceptor.java @@ -45,7 +45,9 @@ public class RequestInterceptor extends HandlerInterceptorAdapter { String url = request.getRequestURL().toString(); if(url.contains("pvlog") || url.contains("awsFileUpload") - || url.contains("ueditor/exec")) { + || url.contains("cimgUpload") + || url.contains("ueditor/exec") + || url.contains("/wxCUserBasicInfo/importTemplate")) { // pvlog不检查幂等 // awsFileUpload不检查幂等 // ueditor 不检查幂等 diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index 7dec8590c..4cc5cedf8 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -10,6 +10,7 @@ import com.iformall.enums.EnumMerchantBUserStatus; import com.iformall.enums.EnumMerchantStatus; import com.iformall.interceptor.AuthorizationInterceptor; import com.iformall.service.*; +import com.iformall.utils.HashUtil; import com.iformall.utils.IPUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -81,6 +82,15 @@ public class WxMerchantBUserController extends BaseController { resultMap.put("service_phone", mall.getServicePhone()); resultMap.put("tenant_id",merchant.getTenantId()); resultMap.put("merchant_id",merchant.getId()); + String mid = null; + try { + mid = String.valueOf(merchant.getId()); + if(mid != null) { + resultMap.put("merchant_id_scan", HashUtil.EncoderByMd5(mid)); + } + }catch (Exception e) { + logger.error(e.getMessage()); + } return new ResultData(resultMap); } @@ -235,7 +245,7 @@ public class WxMerchantBUserController extends BaseController { return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID); } // check password - if (user1.getbUserPwd().equalsIgnoreCase(password)) { + if (user1.getUserPwd().equalsIgnoreCase(password)) { user1.createToken(currentDate); token = user1.getToken(); resultMap.put("token", token); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java index e122846c4..32fffeb88 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -6,6 +6,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxCardSpendVo; +import com.iformall.enums.EnumMerchantStatus; import com.iformall.exception.MallinkException; import com.iformall.service.*; import io.swagger.annotations.Api; @@ -44,22 +45,22 @@ public class WxCardPayController extends BaseController { @Autowired WxCardSpendService wxCardSpendService; - @ApiOperation(value = "C端扫B端储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"merchantCode\":\"String\",\"totalFee\":\"String(元)\"}") + @ApiOperation(value = "C端扫B端储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"merchantId\":\"String\",\"totalFee\":\"String(元)\"}") @PostMapping("order_create") public ResultData saveCardPayOrder(@RequestBody Map paramMap, HttpServletRequest request) { String ipStr = getIpAddr(); logger.info("saveCardPayOrder: " + ipStr + " :" + paramMap.toString()); String cardIdStr = paramMap.get("cardId"); - String merchantCode = paramMap.get("merchantCode"); + String merchantStr = paramMap.get("merchantId"); String totalFeeStr = paramMap.get("totalFee"); if (StringUtils.isBlank(cardIdStr)) { logger.error("cardId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardId不能为空"); } - if (StringUtils.isBlank(merchantCode)) { - logger.error("merchantCode不能为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantCode不能为空"); + if (StringUtils.isBlank(merchantStr)) { + logger.error("merchantId不能为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); } if (StringUtils.isBlank(totalFeeStr)) { logger.error("totalFee不能为空"); @@ -75,10 +76,10 @@ public class WxCardPayController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardIdStr转换失败"); } try { - merchantId = Long.valueOf(merchantCode); + merchantId = Long.valueOf(merchantStr); } catch (Exception e) { - logger.error("merchantCode convert failed:" + merchantCode); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantCode转换失败"); + logger.error("merchantCode convert failed:" + merchantStr); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId转换失败"); } BigDecimal totalFee = new BigDecimal(totalFeeStr); @@ -106,10 +107,14 @@ public class WxCardPayController extends BaseController { WxCUser user = getUser(); WxMerchant merchant = wxMerchantService.getById(merchantId); + if (merchant.getStatus() == EnumMerchantStatus.NOT_VALID.getCode()) { + logger.error("商户已禁用, merchantId: " + merchant.getId()); + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID); + } WxOrder order = null; try { - order = wxOrderService.saveCardPayOrder(merchant, totalFeeStr, payment); + order = wxOrderService.saveCardPayOrder(merchant, user, totalFeeStr, payment); } catch (MallinkException e) { logger.error("saveCardPayOrder 1" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java index d8bf0aad8..92a59b70c 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponChannelController.java @@ -37,7 +37,7 @@ public class WxCouponChannelController extends BaseController { wxCouponChannel.setTenantId(getTenantId()); wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); wxCouponChannel.setSortColumns(WxCouponChannel.Field.CreateDate_DESC); - + wxCouponChannel.setIsCRequest(0);//标记为C端调用 return new ResultData(wxCouponChannelService.listPageCVo(wxCouponChannel, pageNum, pageSize)); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java index 09ac2e7f4..040198b89 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java @@ -5,7 +5,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; -import com.iformall.domain.vo.WxMerchantDiscountVo; +import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.EnumMerchantStatus; import com.iformall.service.*; import io.swagger.annotations.Api; @@ -123,7 +123,7 @@ public class WxMallController extends BaseController { WxMerchant merchantQ = new WxMerchant(); merchantQ.setTenantId(user.getTenantId()); merchantQ.setStatus(EnumMerchantStatus.VALID.getCode()); - List list = wxMerchantService.getDisCountList(merchantQ); + List list = wxMerchantService.getDisCountList(merchantQ); return new ResultData(Result.SUCCESS, "查询成功", list); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java new file mode 100644 index 000000000..8fa77063b --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -0,0 +1,44 @@ +package com.iformall.controller; + +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.vo.WxMerchantVo; +import com.iformall.service.WxMerchantService; +import com.iformall.utils.HashUtil; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; + +/** + * @author Stormeye + */ +@RestController +@RequestMapping("/api/merchant") +public class WxMerchantController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxMerchantService wxMerchantService; + + + @ApiOperation("根据code查询接口") + @GetMapping("/findByCode") + @ApiImplicitParam(name = "merchantCode", value = "merchantCode", dataType = "String", paramType = "query", required = true) + public ResultData findByCode(String merchantCode) { + logger.debug("[" + getIpAddr() + "] WxMerchantController::findByCode"); + if(merchantCode == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + HashMap params = new HashMap(); + params.put("tenantId", getTenantId()); + params.put("merchantCode", HashUtil.DecodeByMD5(merchantCode)); + WxMerchantVo wxMerchant = wxMerchantService.getMerchantInfo(params); + return new ResultData(wxMerchant); + } + +} diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index faa011180..1f54b38f6 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -1,9 +1,14 @@ package com.iformall.schedule; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; import com.iformall.config.PayProperty; import com.iformall.domain.po.*; import com.iformall.enums.EnumAppType; +import com.iformall.enums.EnumCouponOrderStatus; +import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumPayType; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.WxPayOrderService; import com.iformall.service.WxRefundOrderService; @@ -15,6 +20,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; @Component @@ -50,20 +56,41 @@ public class CouponOrderExpiringSchedule { List list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); + list.parallelStream().forEach(co -> { + // 券过期与退款分离 + couponOrderExpire(co); + + if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { + // 非储值卡, 可以退款 + WxAppinfo appinfo = new WxAppinfo(); + appinfo.setTenantId(co.getTenantId()); + appinfo.setType(EnumAppType.B.getCode()); + appinfo = wxAppinfoMapper.findList(appinfo).get(0); + + try { + wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); + } catch (Exception e) { + logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); + } + } - for(WxCouponOrder co:list) { - - WxAppinfo appinfo = new WxAppinfo(); - appinfo.setTenantId(co.getTenantId()); - appinfo.setType(EnumAppType.B.getCode()); - appinfo = wxAppinfoMapper.findList(appinfo).get(0); + }); + } - try { - wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); - } catch (Exception e) { - logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); - continue; - } + private void couponOrderExpire(WxCouponOrder co) { + // 标记 couponOrder过期 + WxCouponOrder wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.setId(co.getId()); + if(co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_OVER_TIME.getCode()); // 卡线下退款 + } else { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()); //券已过期 + } + wxCouponOrder.setUpdateDate(new Date()); + try { + wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + } catch (Exception e) { + logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage()); } } } \ No newline at end of file diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java index b315119fd..0052426ce 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java @@ -37,21 +37,20 @@ public class OrderExpiringSchedule { Map dateMap = new HashMap(); Date curDate = new Date(); + Date expireDate = new Date(curDate.getTime() - TIME_OUT_VALUE ); - // 只检查券相关订单 + // 券相关订单 dateMap.put("type", EnumOrderType.COUPON.getCode()); - dateMap.put("endDate", new Date(curDate.getTime() - TIME_OUT_VALUE )); - List wxOrderList = wxOrderMapper.findListOfUnpaidOrderByDate(dateMap); - - for(WxOrder wxOrder: wxOrderList){ - orderExpired(wxOrder); - } + dateMap.put("endDate", expireDate); + List orderCoupons = wxOrderMapper.findListOfUnpaidOrderByDate(dateMap); + orderCoupons.parallelStream().forEach( o -> { + orderExpired(o); + }); } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public void orderExpired(WxOrder order) { order.setUpdateDate(new Date()); - order.setType(EnumOrderType.COUPON.getCode()); order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); wxOrderMapper.updateByPrimaryKeySelective(order); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index aeca60fa5..802959840 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -253,7 +253,7 @@ public enum ErrorCode{ /** * 会员 */ - MEM_IMPORT_ERR(13000, "模板导入失败"), + MEM_IMPORT_ERR(13000, "模板导入失败,请尝试重新导入"), MEM_SCORE_NOT_ENOUGH(13001, "成长值不够扣减值"), /** diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java index 72384278f..8b98d5f15 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxOrderReportDto.java @@ -1,10 +1,13 @@ package com.iformall.domain.dto; +import lombok.Data; + import java.util.Date; /** * Created by syf on 2018/8/30. */ +@Data public class WxOrderReportDto { private String tenantId; private Long merchantId; @@ -12,52 +15,5 @@ public class WxOrderReportDto { private Date startTime; private Date endTime; private Integer type; - - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - public Long getMerchantId() { - return merchantId; - } - - public void setMerchantId(Long merchantId) { - this.merchantId = merchantId; - } - - public String getMerchantName() { - return merchantName; - } - - public void setMerchantName(String merchantName) { - this.merchantName = merchantName; - } - - public Integer getType() { - return type; - } - - public void setType(Integer type) { - this.type = type; - } - - public Date getStartTime() { - return startTime; - } - - public void setStartTime(Date startTime) { - this.startTime = startTime; - } - - public Date getEndTime() { - return endTime; - } - - public void setEndTime(Date endTime) { - this.endTime = endTime; - } + private Integer orderStatus; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java index 3df6bc13e..18d912c9b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java @@ -77,6 +77,14 @@ public class WxCardSpend implements Serializable { @Transient protected String payStatusStr; + @Transient + @io.swagger.annotations.ApiModelProperty(value="开始时间",name="startdate") + private Date startdate; + + @Transient + @io.swagger.annotations.ApiModelProperty(value="结束时间",name="enddate") + private Date enddate; + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponChannel.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponChannel.java index 8e0d729d7..9c8938a2f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponChannel.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponChannel.java @@ -40,6 +40,15 @@ public class WxCouponChannel implements Serializable { this.ids = ids; } + @Transient + private Integer isCRequest; + + @Transient + private Date startdate; + + @Transient + private Date enddate; + @Transient protected List couponIds; @@ -89,6 +98,13 @@ public class WxCouponChannel implements Serializable { @io.swagger.annotations.ApiModelProperty(value="子频道ID",name="subTargetId") private Long subTargetId; + public Integer getIsCRequest() { + return isCRequest; + } + + public void setIsCRequest(Integer isCRequest) { + this.isCRequest = isCRequest; + } public String getTenantId() { return tenantId; @@ -165,6 +181,22 @@ public class WxCouponChannel implements Serializable { this.subTargetId = subTargetId; } + public Date getStartdate() { + return startdate; + } + + public void setStartdate(Date startdate) { + this.startdate = startdate; + } + + public Date getEnddate() { + return enddate; + } + + public void setEnddate(Date enddate) { + this.enddate = enddate; + } + public static enum Field diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java index 0972707d4..934e0fb1c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantBUser.java @@ -50,8 +50,8 @@ public class WxMerchantBUser implements Serializable { @io.swagger.annotations.ApiModelProperty(value = "B端用户手机号", name = "phone") private String phone; /***/ - @io.swagger.annotations.ApiModelProperty(value = "", name = "bUserPwd") - private String bUserPwd; + @io.swagger.annotations.ApiModelProperty(value = "", name = "userPwd") + private String userPwd; /*商户id**/ @io.swagger.annotations.ApiModelProperty(value = "商户id", name = "merchantId") private Long merchantId; @@ -159,19 +159,19 @@ public class WxMerchantBUser implements Serializable { this.status = status; } - public String getbUserPwd() { - return bUserPwd; + public String getUserPwd() { + return userPwd; } - public void setbUserPwd(String bUserPwd) { - this.bUserPwd = bUserPwd; + public void setUserPwd(String userPwd) { + this.userPwd = userPwd; } public static enum Field { Id_ASC("`id` ASC"), Id_DESC("`id` DESC"), TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC"), Phone_ASC("`phone` ASC"), Phone_DESC("`phone` DESC"), - BUserPwd_ASC("`b_user_pwd` ASC"), BUserPwd_DESC("`b_user_pwd` DESC"), + UserPwd_ASC("`user_pwd` ASC"), UserPwd_DESC("`user_pwd` DESC"), MerchantId_ASC("`merchant_id` ASC"), MerchantId_DESC("`merchant_id` DESC"), CreateDate_ASC("`create_date` ASC"), CreateDate_DESC("`create_date` DESC"), UpdateDate_ASC("`update_date` ASC"), UpdateDate_DESC("`update_date` DESC"), diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxWiWideInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxWiWideInfo.java index b073fa387..771a7999c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxWiWideInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxWiWideInfo.java @@ -59,6 +59,9 @@ public class WxWiWideInfo implements Serializable { @io.swagger.annotations.ApiModelProperty(value="expiredTime",name="expiredTime") private Date expiredTime; + /*卖外迪信息类型列表,1,支持客流 2,支持wifi*/ + @io.swagger.annotations.ApiModelProperty(value="capability",name="capability") + private String capability; public String getTenantId() { return tenantId; @@ -105,6 +108,14 @@ public class WxWiWideInfo implements Serializable { this.expiredTime = expiredTime; } + public String getCapability() { + return capability; + } + + public void setCapability(String capability) { + this.capability = capability; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java b/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java index 9df810a27..f5e4a6afc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import javax.persistence.Transient; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import java.io.Serializable; public class CUserBaseInfoT implements Serializable { @@ -19,6 +20,7 @@ public class CUserBaseInfoT implements Serializable { @Excel(name="手机号",width = 20,orderNum = "3") @io.swagger.annotations.ApiModelProperty(value="微信用户绑定的手机号",name="phone") @NotNull + @Pattern(regexp = "1[0123456789]\\d{9}", message = "手机号不正确") private String phone; /**用户昵称**/ @Excel(name="微信昵称",width = 20,orderNum = "4") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserBasicInfoVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserBasicInfoVo.java new file mode 100644 index 000000000..d4aa75f03 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserBasicInfoVo.java @@ -0,0 +1,18 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.WxCUserBasicInfo; + +public class WxCUserBasicInfoVo extends WxCUserBasicInfo { + + /**用户tags*/ + @io.swagger.annotations.ApiModelProperty(value="用户tags",name="tags") + private String tags; + + public String getTags() { + return tags; + } + + public void setTags(String tags) { + this.tags = tags; + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java index ecdc7681f..d067ad62c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCardSpendVo.java @@ -40,11 +40,4 @@ public class WxCardSpendVo extends WxCardSpend { @io.swagger.annotations.ApiModelProperty(value="持有人绑定的手机号",name="ouPhone") private String ouPhone; - @Transient - @io.swagger.annotations.ApiModelProperty(value="开始时间",name="startdate") - private Date startdate; - - @Transient - @io.swagger.annotations.ApiModelProperty(value="结束时间",name="enddate") - private Date enddate; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantDiscountVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantDiscountVo.java deleted file mode 100644 index 366ebaf95..000000000 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantDiscountVo.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.iformall.domain.vo; - -public class WxMerchantDiscountVo extends WxMerchantVo { - private static final long serialVersionUID = 6687964942922444531L; - - @io.swagger.annotations.ApiModelProperty(value="VIP折扣率1",name="vipDiscountRate1") - private Integer vipDiscountRate1; - - @io.swagger.annotations.ApiModelProperty(value="VIP折扣率2",name="vipDiscountRate2") - private Integer vipDiscountRate2; - - @io.swagger.annotations.ApiModelProperty(value="VIP折扣率3",name="vipDiscountRate3") - private Integer vipDiscountRate3; - - public Integer getVipDiscountRate1() { - return vipDiscountRate1; - } - - public void setVipDiscountRate1(Integer vipDiscountRate1) { - this.vipDiscountRate1 = vipDiscountRate1; - } - - public Integer getVipDiscountRate2() { - return vipDiscountRate2; - } - - public void setVipDiscountRate2(Integer vipDiscountRate2) { - this.vipDiscountRate2 = vipDiscountRate2; - } - - public Integer getVipDiscountRate3() { - return vipDiscountRate3; - } - - public void setVipDiscountRate3(Integer vipDiscountRate3) { - this.vipDiscountRate3 = vipDiscountRate3; - } -} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumRentContractType.java b/mallinkService/src/main/java/com/iformall/enums/EnumRentContractType.java index f83d37d81..096c2198b 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumRentContractType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumRentContractType.java @@ -8,7 +8,8 @@ package com.iformall.enums; public enum EnumRentContractType { RENT_BY_AREA(1, "面积"), - RENT_BY_JOINT(2, "联营扣点") + RENT_BY_JOINT(2, "联营扣点"), + RENT_BY_AREA_AND_JOINT(3, "面积与联营扣点取高") ; public static EnumRentContractType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumWiWideInfoStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumWiWideInfoStatus.java new file mode 100644 index 000000000..c7869d904 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumWiWideInfoStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumWiWideInfoStatus { + + INVALID(0, "未开通"), + VALID(1, "已开通") + ; + + public static EnumWiWideInfoStatus getEnum(Integer code) { + for (EnumWiWideInfoStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumWiWideInfoStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index aa7919bea..c43646aee 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -4,6 +4,7 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.vo.CUserBaseVo; +import com.iformall.domain.vo.WxCUserBasicInfoVo; import java.util.List; @@ -22,4 +23,6 @@ public interface WxCUserBasicInfoMapper extends CommonMapper findVoList(WxCUserBasicInfo wxCUserBasicInfo); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCarCmdLogMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCarCmdLogMapper.java index c9d913946..ce6651f5f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCarCmdLogMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCarCmdLogMapper.java @@ -23,4 +23,6 @@ public interface WxCarCmdLogMapper extends CommonMapper { List> queryPlateNumberList(Map carParams); + String queryTenantIdBySynId(HashMap params); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java index 8d8e92759..6a0bfa2aa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCardSpendMapper.java @@ -9,7 +9,7 @@ public interface WxCardSpendMapper extends CommonMapper { List findList(WxCardSpend wxCardSpend); - int updateByCond(WxCardSpend wxCardSpend); + void updateByCond(WxCardSpend wxCardSpend); List findCardSpendVoList(WxCardSpend wxCardSpend); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java index 62824a57f..1a53acbfa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java @@ -3,13 +3,15 @@ package com.iformall.mapper; import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.vo.WxMerchantDiscountVo; +import com.iformall.domain.vo.WxMerchantVo; public interface WxMerchantMapper extends CommonMapper { List findList(WxMerchant wxMerchant); - List findDiscountList(WxMerchant wxMerchant); + List findDiscountList(WxMerchant wxMerchant); + + WxMerchantVo getMerchantByCode(HashMap params); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCarCmdLogService.java b/mallinkService/src/main/java/com/iformall/service/WxCarCmdLogService.java index 6bf2c506e..7016361a5 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCarCmdLogService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCarCmdLogService.java @@ -3,14 +3,16 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCarCmdLog; +import java.util.HashMap; + public interface WxCarCmdLogService { /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize); @@ -36,12 +38,20 @@ public interface WxCarCmdLogService { * @param id */ void deleteById(Long id); - - - - - - - + + /** + * 根据synId获取tenantId + * @param params + * @return + */ + String getTenantIdBySynId(HashMap params); + + + + + + + + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java index a03e72f35..f568cbcc1 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java @@ -73,7 +73,7 @@ public interface WxCardSpendService { * * @param record */ - int update(WxCardSpend record); + void update(WxCardSpend record); /** * 卡完结 diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 2432514e0..b28564305 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -3,8 +3,9 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.vo.WxMerchantDiscountVo; +import com.iformall.domain.vo.WxMerchantVo; +import java.util.HashMap; import java.util.List; /** @@ -28,7 +29,15 @@ public interface WxMerchantService { * @param record * @return */ - List getDisCountList(WxMerchant record); + List getDisCountList(WxMerchant record); + + /** + * 根据code查询 + * + * @param params + * @return + */ + WxMerchantVo getMerchantInfo(HashMap params); /** * 根据实体查询分页列表 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index dae516d91..afea50e2c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -51,10 +51,12 @@ public interface WxOrderService { /** * 商户码-储值卡支付 * @param merchant + * @param cUser * @param totalFeeStr + * @param payment * @return 订单id */ - WxOrder saveCardPayOrder(WxMerchant merchant, String totalFeeStr, Integer payment); + WxOrder saveCardPayOrder(WxMerchant merchant, WxCUser cUser, String totalFeeStr, Integer payment); /** * 免费券订单接口 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java index 6ffd2aabe..57681d097 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; @@ -494,7 +495,7 @@ public class DataTowerServiceImpl implements DataTowerService { return m.get("carcount"); })); - TreeMap historymap = new TreeMap<>(); + Map historymap = new LinkedHashMap<>(); for (String date : tjTimeList) { Object o = collect.get(date); if (o == null) { @@ -673,6 +674,18 @@ public class DataTowerServiceImpl implements DataTowerService { return new ResultData(ErrorCode.WIWIDE_INFO_NOT_FOUND); } wiWideInfo = list.get(0); + List cap = JSONArray.parseArray(wiWideInfo.getCapability(), Integer.class); + Integer dataType; + try { + dataType = Integer.valueOf(params.get("dataType")); + params.remove("dataType"); + }catch (Exception e){ + return new ResultData(ErrorCode.WIWIDE_INFO_NOT_FOUND); + } + + if (cap == null || !cap.stream().anyMatch(c->c.equals(dataType))) { + return new ResultData(ErrorCode.WIWIDE_INFO_NOT_FOUND); + } String res = WiwideUtil.queryData(wiWideInfo, getWiwideToken(wiWideInfo), params); JSONObject result = JSONObject.parseObject(res); if (result.getInteger("result") == 200){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java index 0bcd95184..49337c987 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -6,10 +6,7 @@ import com.iformall.domain.dto.MarkingCouponDataReportDto; import com.iformall.domain.dto.WxOrderReportDto; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.vo.*; -import com.iformall.enums.EnumCarCmd; -import com.iformall.enums.EnumCouponSendSendType; -import com.iformall.enums.EnumCouponType; -import com.iformall.enums.EnumOrderType; +import com.iformall.enums.*; import com.iformall.mapper.*; import com.iformall.service.MarkingDataReportService; import com.iformall.utils.DateUtils; @@ -428,6 +425,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params.put("endTime", addDay(1)); } params.put("type", wxOrderReportDto.getType()); + params.put("orderStatus", wxOrderReportDto.getOrderStatus()); List list = wxOrderMapper.listOrderReportByDate(params); String startdate = DateUtils.getTimeBefore(30, new Date()); @@ -568,7 +566,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { if (markingCouponDataReportDto.getStartTime() != null) params1.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0)); if (markingCouponDataReportDto.getEndTime() != null) - params1.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1)); + params1.put("endTime", markingCouponDataReportDto.getEndTime()); PageHelper.startPage(pageIndex, pageSize); List wxUserVisitList = wxUserVisitMapper.touchUsersReportList(params1); @@ -582,7 +580,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { if (markingCouponDataReportDto.getStartTime() != null) params2.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0)); if (markingCouponDataReportDto.getEndTime() != null) - params2.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1)); + params2.put("endTime", markingCouponDataReportDto.getEndTime()); List couponDatalist = wxCouponOrderMapper.touchUsersReportList(params2); Map visitMap = couponDatalist.stream().collect(Collectors.toMap(TouchUsersReportVo::getxTime, p -> p)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java index fe457ad52..657c92551 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java @@ -74,7 +74,7 @@ public class WxBrandServiceImpl implements WxBrandService { } try { wxBrand.setUpdatetime(new Date()); - wxBrandMapper.updateByPrimaryKeySelective(wxBrand); + wxBrandMapper.updateByPrimaryKey(wxBrand); return new ResultData(Result.SUCCESS, "操作成功"); } catch (Exception e) { logger.error("更新租赁合同信息失败,e:" + e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index acc98d9d7..ff36a341e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -18,6 +18,7 @@ import com.iformall.domain.po.WxTags; import com.iformall.domain.vo.CUserBaseInfoT; import com.iformall.domain.vo.CUserBaseVo; import com.iformall.domain.vo.CUserTagVo; +import com.iformall.domain.vo.WxCUserBasicInfoVo; import com.iformall.enums.EnumAssignTagsTrigger; import com.iformall.enums.EnumScoreType; import com.iformall.mapper.WxCUserBasicInfoMapper; @@ -155,7 +156,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public void exportData(HttpServletRequest request, HttpServletResponse response, String tenantId) { WxCUserBasicInfo basicInfoQ = new WxCUserBasicInfo(); basicInfoQ.setTenantId(tenantId); - List memberlist = wxCUserBasicInfoMapper.findList(basicInfoQ); + List memberlist = wxCUserBasicInfoMapper.findVoList(basicInfoQ); XSSFWorkbook workbook; String filepath = Constant.fileDirectory; @@ -168,6 +169,9 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + WxTags wxTagsQ = new WxTags(); + List tagList = wxTagsMapper.findList(wxTagsQ); + try { File file = new File(filepath); workbook = new XSSFWorkbook(); @@ -211,7 +215,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { tagCellTwo = rowtwo.createCell(9); scoreCellTwo = rowtwo.createCell(10); - WxCUserBasicInfo entity = memberlist.get(i); + WxCUserBasicInfoVo entity = memberlist.get(i); String sexStr = "保密"; if (entity.getSex() == 1) @@ -229,21 +233,22 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { updateDateCellTwo.setCellValue(sdf.format(entity.getUpdateDate())); createDateCellTwo.setCellValue(sdf.format(entity.getCreateDate())); if (entity != null) { - if (entity.getTagId() != null) { - WxCUserTags uTag = wxCUserTagsMapper.selectByPrimaryKey(entity.getTagId()); - if (uTag != null && StringUtils.isNotBlank(uTag.getTags())) { - List ids = JSONObject.parseArray(uTag.getTags(), Long.class); + if (entity.getTagId() != null && entity.getTags() != null) { + if (StringUtils.isNotBlank(entity.getTags())) { + List ids = JSONObject.parseArray(entity.getTags(), Long.class); if (!ids.isEmpty()) { - WxTags wxTagsQ = new WxTags(); - wxTagsQ.setIds(ids); - List tagList = wxTagsMapper.findList(wxTagsQ); String tagNames = ""; String tagIds = ""; List tagIdList = new ArrayList<>(); - for (WxTags wt : tagList) { - tagNames += wt.getName() + "/"; - tagIds += wt.getId() + ","; - tagIdList.add(wt.getId()); + for(Long id: ids) { + for(WxTags tag: tagList) { + if(id.equals(tag.getId())) { + tagNames += tag.getName() + "/"; + tagIds += tag.getId() + ","; + tagIdList.add(tag.getId()); + break; + } + } } if (StringUtils.isNotBlank(tagNames)) { entity.setTagNames(tagNames.substring(0, tagNames.length() - 1)); @@ -513,26 +518,25 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { final IdWorker idWorker = IdWorker.get(); + String importKey = "import-" + userId; + + //默认添加到redis里 + stringRedisTemplate.opsForHash().put(importKey, "allCount", ""); + stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "failCount", "0"); + ImportParams params = new ImportParams(); - IExcelDataHandler handler = new UserExcelHandler(); - handler.setNeedHandlerFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签", "成长值"});// 注意这里对应的是excel的列名。也就是对象上指定的列名。 - params.setDataHandler(handler); - //params.setVerifyHandler(); // 需要验证 - params.setNeedVerfiy(true); + params.setImportFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签", "成长值"}); + params.setNeedVerify(true); try { - ExcelImportResult datalist = ExcelImportUtil.importExcelMore(file.getInputStream(), CUserBaseInfoT.class, params); List successList = datalist.getList(); List failList = datalist.getFailList(); - logger.info("验证通过的数量:" + successList.size()); - logger.info("验证未通过的数量:" + failList.size()); - //如果不存在就添加 - stringRedisTemplate.opsForHash().put(userId, "allCount", successList.size() + failList.size() + ""); - stringRedisTemplate.opsForHash().put(userId, "allSuccessCount", successList.size() + ""); - stringRedisTemplate.opsForHash().put(userId, "successCount", "0"); - stringRedisTemplate.opsForHash().put(userId, "failCount", failList.size() + ""); + logger.info("验证通过的数量: " + successList.size()); + logger.info("验证未通过的数量: " + failList.size()); successList.parallelStream().forEach(uBase->{ @@ -644,12 +648,12 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { stringRedisTemplate.opsForHash().increment(userId,"successCount",1); }); } catch (Exception e) { + stringRedisTemplate.opsForHash().put(importKey, "allCount", "1"); + stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "failCount", "1"); e.printStackTrace(); logger.error("导入模板失败:"+e.getMessage()); - stringRedisTemplate.opsForHash().put(userId, "allCount", "1"); - stringRedisTemplate.opsForHash().put(userId, "allSuccessCount", "0"); - stringRedisTemplate.opsForHash().put(userId, "successCount", "0"); - stringRedisTemplate.opsForHash().put(userId, "failCount", "1"); } return new ResultData(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index 040b32b30..6e4e73556 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -126,11 +126,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { String str = JSON.toJSONString(tagId); hs.addAll(wxCUserTagsMapper.findByTags(str, tenantId)); } - List userIds = new ArrayList<>(); - userIds.addAll(hs); - WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); - wxCUserBasicInfo.setIds(userIds); - return wxCUserBasicInfoMapper.findList(wxCUserBasicInfo); + if (!hs.isEmpty()) { + List userIds = new ArrayList<>(); + userIds.addAll(hs); + WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + wxCUserBasicInfo.setIds(userIds); + return wxCUserBasicInfoMapper.findList(wxCUserBasicInfo); + } + return new ArrayList<>(); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java index 3e8b35b03..6b36ff66f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java @@ -11,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; +import java.util.HashMap; + @Service public class WxCarCmdLogServiceImpl implements WxCarCmdLogService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -47,7 +49,11 @@ public class WxCarCmdLogServiceImpl implements WxCarCmdLogService { } - + @Override + public String getTenantIdBySynId(HashMap params) { + return wxCarCmdLogMapper.queryTenantIdBySynId(params); + } + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index fd5e8a3d8..b033183ca 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -1,6 +1,5 @@ package com.iformall.service.impl; -import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; @@ -16,7 +15,6 @@ import com.iformall.service.WxCardSpendService; import com.iformall.service.WxProfitSharingOrderService; import com.iformall.utils.Constant; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -32,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -120,7 +119,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { return new ResultData(ErrorCode.DB_FAIL.getCode(), "获取payAccount失败"); } - // 5. 扣减计算 + // 4. 扣减计算 Integer payment = cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Double dChargeFee = Math.ceil(payment * 1.0D * payAccount.getRate() / 10000); Integer real_payment = payment - dChargeFee.intValue(); @@ -133,7 +132,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { remain_real_pament = cardInfo.getRemainingShareFeeAmount() - real_payment; } - // 6 insert card_spend + // 5 insert card_spend record.setId(idWorker.nextId()); record.setPayment(payment); record.setRealPayment(real_payment); @@ -151,6 +150,19 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { return new ResultData(ErrorCode.DB_FAIL.getCode(), "card spend 插入出错!"); } + // 6. update order status + WxOrder orderUpdate = new WxOrder(); + orderUpdate.setId(order.getId()); + orderUpdate.setPaymentTime(curDate); + orderUpdate.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); + orderUpdate.setUpdateDate(curDate); + try { + wxOrderMapper.updateByPrimaryKeySelective(orderUpdate); + } catch (Exception e) { + logger.error("order update error"); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "order update 出错!"); + } + // 7. update card info cardInfo.setRemainingAmount(remaingAmount); cardInfo.setRemainingShareFeeAmount(remain_real_pament); @@ -275,7 +287,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } @Override - public int update(WxCardSpend record) { + public void update(WxCardSpend record) { // 1. 检查符合条件的卡消费记录是否已支付 List cardSpends = wxCardSpendMapper.findList(record); if (cardSpends.stream().anyMatch((cs->(!cs.getPayStatus().equals(EnumCardSpendStatus.NOT_PAY.getCode()))))){ @@ -284,8 +296,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { // 2. 更新支付状态 record.setPayStatus(EnumCardSpendStatus.MANUAL_PAY.getCode()); record.setUpdateDate(new Date()); - int num = wxCardSpendMapper.updateByCond(record); - return num; + wxCardSpendMapper.updateByCond(record); } @Override @@ -369,6 +380,10 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { cardSpend.setCardId(cardId); cardSpend.setOrderId(orderId); cardSpend = wxCardSpendMapper.selectOne(cardSpend); + if (cardSpend != null && cardSpend.getRealPayment() <= 0) { + logger.error("微信分账金额为0, 无法再分"); + return; + } WxCardInfo cardInfo = wxCardInfoMapper.selectByPrimaryKey(cardSpend.getCardId()); WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(orderId); WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(cardSpend.getMerchantId()); @@ -389,6 +404,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { ResultData resultData = profitSharingOrderService.createSharingOrder(shareOrder); if(resultData.code != Result.SUCCESS) { // 分账异常 + logger.error(resultData.message); throw new MallinkException(resultData.code, resultData.message); } @@ -484,7 +500,8 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { String filename = UUID.randomUUID() + ".xlsx"; filepath = filepath + filename; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.00"); try { File file = new File(filepath); @@ -528,16 +545,19 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { WxCardSpendVo entity = cardSpendVoList.get(i); - idCellTwo.setCellValue(entity.getId()); + idCellTwo.setCellValue(String.valueOf(entity.getId())); ownerCellTwo.setCellValue(entity.getOnickName()); phoneCellTwo.setCellValue(entity.getOuPhone()); cardNameCellTwo.setCellValue(entity.getTitle()); merchantNameCellTwo.setCellValue(entity.getMerchantName()); - costCellTwo.setCellValue(entity.getDeductionAmount()); + String dStr = df.format((float)entity.getDeductionAmount()/100); + costCellTwo.setCellValue(dStr); if (entity.getCreateDate() != null) costTimeCellTwo.setCellValue(sdf.format(entity.getCreateDate())); - receivePayCellTwo.setCellValue(entity.getPayment()); - realReceivePayCellTwo.setCellValue(entity.getRealPayment()); + dStr = df.format((float)entity.getPayment()/100); + receivePayCellTwo.setCellValue(dStr); + dStr = df.format((float)entity.getRealPayment()/100); + realReceivePayCellTwo.setCellValue(dStr); String statusStr = "未支付"; if (entity.getPayStatus().equals(EnumCardSpendStatus.NOT_PAY.getCode())) statusStr = "未支付"; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java index b8f7fb319..0d7cfdab3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java @@ -118,7 +118,7 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { List list = wxMerchantBUserMapper.findList(bUser); if (list.size() > 0) { bUser = list.get(0); - bUser.setbUserPwd(pwd); + bUser.setUserPwd(pwd); try { wxMerchantBUserMapper.updateByPrimaryKeySelective(bUser); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 1f7c7ee90..dcafa63c4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -7,7 +7,6 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; -import com.iformall.domain.vo.WxMerchantDiscountVo; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; @@ -102,10 +101,15 @@ public class WxMerchantServiceImpl implements WxMerchantService { } @Override - public List getDisCountList(WxMerchant record) { + public List getDisCountList(WxMerchant record) { return wxMerchantMapper.findDiscountList(record); } + @Override + public WxMerchantVo getMerchantInfo(HashMap params) { + return wxMerchantMapper.getMerchantByCode(params); + } + @Override public List etcpList(WxMerchant record) { record.setCarVendorType(EnumCarVendor.CAR_ETCP.getCode()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java index f271faa04..51aff49b5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java @@ -25,6 +25,7 @@ import com.iformall.common.IdWorker; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.List; import java.util.Map; @@ -94,7 +95,8 @@ public class WxMerchantSubsidyServiceImpl implements WxMerchantSubsidyService { String filename = UUID.randomUUID() + ".xlsx"; filepath = filepath + filename; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.00"); try { File file = new File(filepath); @@ -129,13 +131,16 @@ public class WxMerchantSubsidyServiceImpl implements WxMerchantSubsidyService { WxMerchantSubsidyVo entity = subsidyVoList.get(i); - idCellTwo.setCellValue(entity.getId()); + idCellTwo.setCellValue(String.valueOf(entity.getOrderId())); merchantNameCellTwo.setCellValue(entity.getMerchantName()); if (entity.getCreateDate() != null) createDateCellTwo.setCellValue(sdf.format(entity.getCreateDate())); - orderPaymentCellTwo.setCellValue(entity.getOrderPayment()/ 100); - receiverPaymentCellTwo.setCellValue(entity.getReceiverPayment() / 100); - subsidyCellTwo.setCellValue(entity.getSubsidy() / 100); + String dStr = df.format((float)entity.getOrderPayment()/100); + orderPaymentCellTwo.setCellValue(dStr); + dStr = df.format((float)entity.getReceiverPayment()/100); + receiverPaymentCellTwo.setCellValue(dStr); + dStr = df.format((float)entity.getSubsidy()/100); + subsidyCellTwo.setCellValue(dStr); String statusStr = "未补贴"; if (entity.getStatus().equals(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode())) { statusStr = "未补贴"; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index d658ec1ef..7dd8e58a5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -452,12 +452,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveCardPayOrder(WxMerchant merchant, String totalFeeStr, Integer payment) { - if (merchant.getStatus() == EnumMerchantStatus.NOT_VALID.getCode()) { - logger.error("商户已禁用, merchantId: " + merchant.getId()); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); - } - + public WxOrder saveCardPayOrder(WxMerchant merchant, WxCUser cUser, String totalFeeStr, Integer payment) { Date curr = new Date(); final IdWorker idWorker = IdWorker.get(); @@ -473,6 +468,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setOrderNumber(orderNumber); record.setType(EnumOrderType.PREPAIDCARD.getCode()); record.setProductId(merchant.getId()); + record.setcUserId(cUser.getId()); record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); record.setPayment(payment); record.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); @@ -617,6 +613,9 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_NOT_FREE); } + // 减库存操作 + stockReduce(user, coupon, couponIdStr); + int payment = coupon.getSalePrice(); Date curr = new Date(); @@ -696,6 +695,9 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_NOT_FREE); } + // 减库存操作 + stockReduce(user, coupon, couponIdStr); + int payment = coupon.getSalePrice(); Date curr = new Date(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index f7f205af2..b36725355 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -300,10 +300,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } - if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { - logger.error("已过期: couponOrder-" + couponOrderId); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); - } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) { logger.error("已退款: couponOrder-" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index dee1d6e68..b5600f288 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -165,6 +165,22 @@ public class WxRentContractServiceImpl implements WxRentContractService { return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); } wxRentContractMapper.insertSelective(record); + //建立账单 + if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) + && record.getReceivePeriod() != null && record.getDeposit() > 0 && record.getPrice() > 0) { + WxBillRent wxBillRent = new WxBillRent(); + wxBillRent.setMerchantId(record.getMerchantId()); + List> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); + if (billRentList.size() == 0) { + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setId(record.getMerchantId()); + wxMerchant.setTenantId(record.getTenantId()); + //租金 + buildRent(wxMerchant); + //押金 + buildDeposit(wxMerchant); + } + } } catch (Exception e) { logger.error("保存租赁合同信息失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/utils/HashUtil.java b/mallinkService/src/main/java/com/iformall/utils/HashUtil.java index 62e11d599..4d99d09ed 100644 --- a/mallinkService/src/main/java/com/iformall/utils/HashUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/HashUtil.java @@ -1,6 +1,8 @@ package com.iformall.utils; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; +import java.util.Base64; /** * @author Stormeye @@ -82,4 +84,25 @@ public class HashUtil { } return diff == 0; } + + public static String EncoderByMd5(String str) { + if (str == null) { + return null; + } + try { + String enc = hash("md5", str); + enc = new String(Base64.getUrlEncoder().encode(enc.getBytes("utf-8"))); + return enc; + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public static String DecodeByMD5(String str) { + if (str == null) { + return null; + } + String dec = new String(Base64.getUrlDecoder().decode(str)); + return dec; + } } diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 18f151397..c7288dda2 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -194,4 +194,104 @@ + + + + + + + + + + + + + + + + + + + + + + cu.`id`,cu.`phone`,cu.`birthdate`,cu.`education`,cu.`sex`,cu.`email`,cu.`address`,cu.`poins`,cu.`tag_id`, + cu.`create_date`,cu.`update_date`,cu.`tenant_id`,cu.`name`,cu.`level`,cu.`nick_name`, + cut.`tags` + + + + where 1 = 1 + + + and cu.`id` = #{id} + + + + and cu.`tenant_id` = #{tenantId} + + + + and cu.`phone` like concat('%', #{phone},'%') + + + + and cu.`birthdate` = #{birthdate} + + + + and cu.`education` like concat('%', #{education},'%') + + + + and cu.`sex` = #{sex} + + + + and cu.`email` like concat('%', #{email},'%') + + + + and cu.`address` like concat('%', #{address},'%') + + + + and cu.`poins` = #{poins} + + + + and cu.`tag_id` = #{tagId} + + + + and cu.`create_date` = #{createDate} + + + + and cu.`update_date` = #{updateDate} + + + + and `name` like concat('%', #{name},'%') + + + and cu.`create_date` between #{startTime} and #{endTime} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml index c8218729f..c6a675023 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -103,8 +103,11 @@ and json_unquote(JSON_EXTRACT(cmd_json,'$.plateNumber')) is not null group by plateNumber - - + + diff --git a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml index 2719d95db..ec0d54f8e 100644 --- a/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCardSpendMapper.xml @@ -1,136 +1,151 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`card_id`,`owner_id`,`merchant_id`,`order_id`,`deduction_amount`,`payment`,`real_payment`, `card_remain_amount`,`card_before_amount`,`card_remain_real_amount`,`card_before_real_amount`, `create_date`,`update_date`, `pay_status` - - where 1 = 1 - - and `id` = #{id} - - - and `tenant_id` = #{tenantId} - - - and `card_id` = #{cardId} - - - and `owner_id` = #{ownerId} - - - and `merchant_id` = #{merchantId} - - - and `order_id` = #{orderId} - + + where 1 = 1 + + and `id` = #{id} + + + and `tenant_id` = #{tenantId} + + + and `card_id` = #{cardId} + + + and `owner_id` = #{ownerId} + + + and `merchant_id` = #{merchantId} + + + and `order_id` = #{orderId} + and `deduction_amount` = #{deductionAmount} and `payment` = #{payment} - - and `real_payment` = #{realPayment} - - - and `card_remain_amount` = #{cardRemainAmount} - - - and `card_before_amount` = #{cardBeforeAmount} - + + and `real_payment` = #{realPayment} + + + and `card_remain_amount` = #{cardRemainAmount} + + + and `card_before_amount` = #{cardBeforeAmount} + and `card_remain_real_amount` = #{cardRemainRealAmount} and `card_before_real_amount` = #{cardBeforeRealAmount} - - and `create_date` = #{createDate} - - - and `update_date` = #{updateDate} - - - and `pay_status` = #{payStatus} - - - and `create_date` between #{startdate} and #{enddate} - - - and id in - - #{idItem} - - - order by ${sortColumns} - - - + + and `create_date` = #{createDate} + + + and `update_date` = #{updateDate} + + + and `pay_status` = #{payStatus} + + + and `create_date` between #{startdate} and #{enddate} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - + + + - - - + + + - + cs.`id`,cs.`tenant_id`,cs.`card_id`,cs.`owner_id`,cs.`merchant_id`,cs.`order_id`,cs.`deduction_amount`,cs.`payment`,cs.`real_payment`, cs.`card_remain_amount`,cs.`card_before_amount`,cs.`card_remain_real_amount`,cs.`card_before_real_amount`, cs.`create_date`,cs.`update_date`, cs.`pay_status`, @@ -139,125 +154,125 @@ ou.`nick_name` as onick_name, ou.`phone` as ou_phone - - where 1 = 1 - - and cs.`id` = #{id} - - - and cs.`tenant_id` = #{tenantId} - - - and cs.`card_id` = #{cardId} - - - and cs.`owner_id` = #{ownerId} - - - and cs.`merchant_id` = #{merchantId} - - - and cs.`order_id` = #{orderId} - - - and cs.`deduction_amount` = #{deductionAmount} - - - and cs.`payment` = #{payment} - - - and cs.`real_payment` = #{realPayment} - - - and cs.`card_remain_amount` = #{cardRemainAmount} - - - and cs.`card_before_amount` = #{cardBeforeAmount} - - - and cs.`card_remain_real_amount` = #{cardRemainRealAmount} - - - and cs.`card_before_real_amount` = #{cardBeforeRealAmount} - - - and cs.`create_date` = #{createDate} - - - and cs.`update_date` = #{updateDate} - - - and cs.`pay_status` = #{payStatus} - - - and ms.`status` = #{status} - - - and ou.`phone` = #{ouPhone} - - - and cs.`create_date` between #{startdate} and #{enddate} - - - and cs.`pay_status` in - - #{sItem} - - - - and cs.id in - - #{idItem} - - - + + where 1 = 1 + + and cs.`id` = #{id} + + + and cs.`tenant_id` = #{tenantId} + + + and cs.`card_id` = #{cardId} + + + and cs.`owner_id` = #{ownerId} + + + and cs.`merchant_id` = #{merchantId} + + + and cs.`order_id` = #{orderId} + + + and cs.`deduction_amount` = #{deductionAmount} + + + and cs.`payment` = #{payment} + + + and cs.`real_payment` = #{realPayment} + + + and cs.`card_remain_amount` = #{cardRemainAmount} + + + and cs.`card_before_amount` = #{cardBeforeAmount} + + + and cs.`card_remain_real_amount` = #{cardRemainRealAmount} + + + and cs.`card_before_real_amount` = #{cardBeforeRealAmount} + + + and cs.`create_date` = #{createDate} + + + and cs.`update_date` = #{updateDate} + + + and cs.`pay_status` = #{payStatus} + + + and ms.`status` = #{status} + + + and ou.`phone` = #{ouPhone} + + + and cs.`create_date` between #{startdate} and #{enddate} + + + and cs.`pay_status` in + + #{sItem} + + + + and cs.id in + + #{idItem} + + + - + select + + from wx_card_spend cs left join wx_coupon_order co on co.id = cs.card_id left join wx_coupon c on c.id = co.coupon_id - left join wx_merchant m on m.id = cs.merchant_id + left join wx_merchant m on m.id = cs.merchant_id left join wx_merchant_subsidy ms on ms.order_id = cs.order_id - left join wx_c_user ou on ou.id = co.owner_id - + left join wx_c_user ou on ou.id = co.owner_id + order by cs.create_date DESC - + + + + + - - - - diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index 9c7bd6b09..ed67253d4 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -52,7 +52,11 @@ and cc.`business` = #{business} - + + and cc.`create_date` between #{startdate} and #{enddate} + + + and cc.`begin_time` < now() and cc.`end_time` > now() @@ -68,6 +72,7 @@ and cc.`update_date` = #{updateDate} + and cc.`sub_target_id` = #{subTargetId} @@ -91,11 +96,6 @@ - - update wx_coupon_channel set status=#{status} where tenant_id=#{tenantId} and coupon_id=#{couponId} diff --git a/mallinkService/src/main/resources/mapper/WxCouponInjectMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponInjectMapper.xml index d0a898984..6309176f5 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponInjectMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponInjectMapper.xml @@ -55,9 +55,9 @@ and `coupon_id` = #{couponId} - - - + + + and `coupon_name` like concat('%', #{couponName},'%') diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index c38315b5a..bca5a8da5 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -27,10 +27,14 @@ + + - `id`,`tenant_id`,`type`,`cover_img`,`title`,`sub_title`,`sale_price`,`use_price`,`use_limit_quantity`,`send_type`,`valid_type`,`valid_start_date`,`valid_end_date`,`valid_days`,`detail`,`price`,`unit`,`remain_inventory`,`inventory`,`remark`,`status`,`create_date`,`update_date`,`business`,`support_transfer`,`subsidy_num`,`subsidy_type` + `id`,`tenant_id`,`type`,`cover_img`,`title`,`sub_title`,`sale_price`,`use_price`,`use_limit_quantity`,`send_type`, + `valid_type`,`valid_start_date`,`valid_end_date`,`valid_days`,`detail`,`price`,`unit`,`remain_inventory`,`inventory`, + `remark`,`status`,`create_date`,`update_date`,`business`,`support_transfer`,`subsidy_num`,`subsidy_type` @@ -136,6 +140,14 @@ and `support_transfer` = #{supportTransfer} + + and `subsidy_type` = #{subsidyType} + + + + and `subsidy_num` = #{subsidyNum} + + and id in @@ -255,6 +267,14 @@ and `support_transfer` = #{supportTransfer} + + and `subsidy_type` = #{subsidyType} + + + + and `subsidy_num` = #{subsidyNum} + + and id in @@ -374,6 +394,14 @@ and `support_transfer` = #{supportTransfer} + + and `subsidy_type` = #{subsidyType} + + + + and `subsidy_num` = #{subsidyNum} + + and id in diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 501dee210..5a5e36fa1 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -145,33 +145,38 @@ @@ -373,8 +378,8 @@ and co.coupon_order_status = #{couponOrderStatus} - - + + and (case when com.mc=1 then (select m.name from wx_merchant m, wx_coupon_merchant cm where m.id = cm.merchant_id and cm.product_id=co.coupon_id) else '[多商户通用]' end) @@ -388,9 +393,13 @@ AND co.create_date < #{endDate,jdbcType=TIMESTAMP} - + + + and co.id = #{id} + + order by ${sortColumns} - + diff --git a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml index 181c3da5b..31bd24945 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - `id`,`tenant_id`,`phone`,`b_user_pwd`,`merchant_id`,`create_date`,`update_date`,`app_id`,`token`,`expire_time`,`name`,`status` + `id`,`tenant_id`,`phone`,`user_pwd`,`merchant_id`,`create_date`,`update_date`,`app_id`,`token`,`expire_time`,`name`,`status` @@ -36,10 +36,10 @@ and `phone` = #{phone} - - - - and `b_user_pwd` like concat('%', #{bUserPwd},'%') + + + + and `user_pwd` like concat('%', #{userPwd},'%') diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index 13f16540e..ea13f8152 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -98,7 +98,7 @@ m.vip_discount_rate1, m.vip_discount_rate2, m.vip_discount_rate3 - + @@ -135,5 +135,26 @@ + + diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 4d7990737..2917a3be5 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -323,9 +323,20 @@